CN105745630B - 用于在集群宽执行机器中的存储器访问的指令和逻辑 - Google Patents

用于在集群宽执行机器中的存储器访问的指令和逻辑 Download PDF

Info

Publication number
CN105745630B
CN105745630B CN201380081122.1A CN201380081122A CN105745630B CN 105745630 B CN105745630 B CN 105745630B CN 201380081122 A CN201380081122 A CN 201380081122A CN 105745630 B CN105745630 B CN 105745630B
Authority
CN
China
Prior art keywords
dcu
processor
cache
logic
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201380081122.1A
Other languages
English (en)
Other versions
CN105745630A (zh
Inventor
A.W.列钦科
A.埃菲莫夫
S.Y.施什洛夫
J.艾尔
B.A.巴巴彦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN105745630A publication Critical patent/CN105745630A/zh
Application granted granted Critical
Publication of CN105745630B publication Critical patent/CN105745630B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

Abstract

一种处理器包括2级(L2)高速缓存、第一和第二执行单元集群、以及通信地耦合到相应执行单元集群并且耦合到L2高速缓存的第一和第二数据高速缓存单元(DCU)。DCU均包括数据高速缓存以及用于下述的逻辑:从执行单元接收存储器操作、当信息在数据高速缓存中可用时,用来自数据高速缓存的信息对存储器操作进行响应,并且当信息在数据高速缓存中不可用时,从L2高速缓存取回信息。处理器进一步包括用于下述的逻辑:在处理器的操作的所有时钟周期,将第一DCU的数据高速缓存的内容维持为等于第二DCU的数据高速缓存的内容。

Description

用于在集群宽执行机器中的存储器访问的指令和逻辑
技术领域
本公开属于处理逻辑、微处理器和关联指令集架构的领域,当由处理器或其他处理逻辑执行时,其实行逻辑、数学或其他功能操作。
背景技术
多处理器系统正变得越来越普遍。多处理器系统的应用包括划分一直到台式机计算的动态域。为了利用多处理器系统,要执行的线程的代码可以由调度器分离到各种处理实体以供乱序执行。乱序执行可以在使得对这样的指令的输入可用时执行指令。因此,在代码序列中较晚出现的指令可能在代码序列中较早出现的指令之前被执行。
附图说明
通过示例而非限制的方式在附图的各图中图示实施例:
图1A是根据本公开的实施例的用可以包括用于执行指令的执行单元的处理器形成的示例性计算机系统的框图;
图1B图示了根据本公开的实施例的数据处理系统;
图1C图示了用于实行文本串比较操作的数据处理系统的其他实施例;
图2是根据本公开的实施例的用于可以包括用于实行指令的逻辑电路的处理器的微架构的框图;
图3A图示了根据本公开的实施例的多媒体寄存器中的各种封装(packed)数据类型表示;图3B图示了根据本公开的实施例的可能的寄存器中数据存储格式;
图3C图示了根据本公开的实施例的多媒体寄存器中的各种有符号和无符号封装数据类型表示;
图3D图示了操作编码格式的实施例;
图3E图示了根据本公开的实施例的具有40个或更多位的另一可能的操作编码格式;
图3F图示了根据本公开的实施例的又一可能的操作编码格式;
图4A是图示根据本公开的实施例的有序流水线(pipeline)和寄存器重命名级、乱序发出/执行流水线的框图;
图4B是图示根据本公开的实施例的要被包括在处理器中的有序架构核和寄存器重命名逻辑、乱序发出/执行逻辑的框图;
图5A是根据本公开的实施例的处理器的框图;
图5B是根据本公开的实施例的核的示例性实现的框图;
图6是根据本公开的实施例的系统的框图;
图7是根据本公开的实施例的第二系统的框图;
图8是根据本公开的实施例的第三系统的框图;
图9是根据本公开的实施例的片上系统的框图;
图10图示了根据本公开的实施例的包含可以实行至少一个指令的中央处理单元和图形处理单元的处理器;
图11是图示根据本公开的实施例的IP核的开发的框图;
图12图示了根据本公开的实施例的如何可以由不同类型的处理器模拟的第一类型的指令;
图13图示了根据本公开的实施例的对比用于将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图;
图14是根据本公开的实施例的处理器的指令集架构的框图;
图15是根据本公开的实施例的处理器的指令集架构的更详细的框图;
图16是根据本公开的实施例的用于处理器的指令集架构的执行流水线的框图;
图17是根据本公开的实施例的用于利用处理器的电子设备的框图;
图18是用于实现用于具有集群(clustered)执行单元的机器中的存储器访问的指令和逻辑的系统的功能框图;
图19是根据本公开的实施例的数据高速缓存单元的功能框图;以及
图20是根据本公开的实施例的用于集群机器中的存储器访问的方法的图示。
具体实施方式
以下描述对用于在处理器、虚拟处理器、封装、计算机系统或其他处理装置中的存储器访问的指令和处理逻辑进行描述。在一个实施例中,这样的处理装置可以包括在集群机器中的处理装置,其中,执行单元可以被集群在一起。在另一实施例中,这样的处理装置可以包括集群宽执行机器。在下面的描述中,阐述了诸如处理逻辑、处理器类型、微架构条件、事件、使能机制等之类的很多具体细节,以便于提供对本公开的实施例的更全面的理解。然而,本领域技术人员将理解的是,所述实施例可以在没有这样的具体细节的情况下被实践。此外,一些公知的结构、电路等尚未被详细示出,以避免对本公开的实施例的不必要的混淆。
虽然参考处理器来描述以下实施例,但是其他实施例适用于其他类型的集成电路和逻辑设备。本公开的实施例的类似的技术和教导可以应用于其他类型的电路或半导体设备,其可以受益于较高的流水线吞吐量和改善的性能。本公开的实施例的教导适用于实行数据操纵的任何处理器或机器。然而,实施例不限于实行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可以应用于其中可以实行数据的操纵或管理的任何处理器和机器。此外,下面的描述提供了示例,并且附图出于说明的目的示出了各种示例。然而,这些示例不应当在限制性的意义上被解释,因为其仅旨在提供本公开的实施例的示例,而不是提供对本公开的实施例的所有可能实现的穷尽列出。
虽然以下示例在执行单元和逻辑电路的上下文中描述了指令处理和分布,但是本公开的其他实施例可以通过存储在机器可读有形介质上的数据或指令的方式来实现,其在由机器实行时,使得机器实行与本公开的至少一个实施例一致的功能。在一个实施例中,与本公开的实施例相关联的功能以机器可执行指令来实现。指令可以用于使得可以用指令编程的通用或专用处理器来实行本公开的步骤。本公开的实施例可以被提供为计算机程序产品或软件,其可以包括其上存储有指令的机器或计算机可读介质,所述指令可以用于对计算机(或其他电子设备)进行编程以实行根据本公开的实施例的一个或多个操作。此外,本公开的实施例的步骤可能由包含用于实行所述步骤的固定功能逻辑的特定硬件组件或者通过编程的计算机组件和固定功能硬件组件的任何组合来实行。
用于对逻辑进行编程以实行本公开的实施例的指令可以被存储在系统中的存储器内,诸如DRAM、高速缓存、闪速存储器或其他储存器。此外,指令可以经由网络或通过其他计算机可读介质来进行分布。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传送信息的任何机制,但是不限于,在经由电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)通过因特网传输信息中使用的软盘、光盘、压缩盘、只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器、或者有形机器可读储存器。因此,计算机可读介质可以包括适用于以机器(例如,计算机)可读的形式存储或传送电子指令或信息的任何类型的有形机器可读介质中。
设计可能会经历各种阶段,从创建到仿真到制造。表示设计的数据可以以很多方式表示设计。首先,如在仿真中可能有用的,硬件可以使用硬件描述语言或另一功能描述语言来表示。此外,具有逻辑和/或晶体管门的电路级模型可以在设计过程的一些阶段产生。此外,设计在某些阶段可以达到表示硬件模型中的各种设备的物理布置的数据的水平。在其中使用一些半导体制造技术的情况下,表示硬件模型的数据可以是指定用于生产集成电路的掩模的不同掩模层上的各种特征的存在或不存在的数据。在设计的任何表示中,数据可以被存储在任何形式的机器可读介质中。存储器或者诸如盘之类的磁或光储存器可以是用于存储经由调制或以其他方式生成为传送这样的信息的光或电波传送的信息的机器可读介质。当传送指示或承载代码或设计的电载波时,在实行电信号的复制、缓冲或重传的程度上,可以做出新副本。因此,通信提供商或网络提供商可以在有形机器可读介质上至少临时地存储工件,诸如编码到体现本公开的实施例的技术的载波中的信息。
在现代处理器中,可以使用多个不同的执行单元来处理和执行各种代码和指令。一些指令可能会更快完成,而其他可能需要很多时钟周期来完成。指令的吞吐量越快,处理器的整体性能就越好。因此,有利的是尽可能快地执行尽可能多的指令。然而,可能存在具有较大复杂度并且在执行时间和处理器资源方面需要更多的特定指令,诸如浮点指令、加载/存储操作、数据移动,等等。
随着更多计算机系统在互联网、文本和多媒体应用中使用,已经随时间引入附加处理器支持。在一个实施例中,指令集可以与一个或多个计算机架构相关联,包括数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可以由一个或多个微架构来实现,其可以包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的处理器可以共享公共指令集的至少一部分。例如,奔腾4处理器、CoreTM处理器和来自桑尼维尔公司CA的高级微设备的处理器实现几乎相同版本的x86指令集(具有已经添加有较新版本的一些扩展),但是具有不同的内部设计。类似地,由诸如ARM控股有限公司、MIPS之类的其他处理器开发公司或其被许可人或采用者设计的处理器可以共享公共指令集的至少一部分,但是可以包括不同的处理器设计。例如,ISA的相同寄存器架构可以使用新的或公知的技术来在不同的微架构中以不同的方式来实现,包括专用物理寄存器、使用及存储器重命名机制的一个或多个动态分配的物理寄存器(例如,使用寄存器别名表(RAT)、重新排序缓冲器(ROB)和退役寄存器文件。在一个实施例中,寄存器可以包括可能或可能不由软件编程器可寻址的一个或多个寄存器、寄存器架构、寄存器文件或者其他寄存器组。
指令可以包括一个或多个指令格式。在一个实施例中,指令格式可以指示各种字段(位数、位的位置等),以除其它外尤其规定要被实行的操作和将对其实行操作的操作数。在另外的实施例中,一些指令格式可以进一步通过指令模板(或子格式)来定义。例如,给定的指令格式的指令模板可以被定义为具有指令格式的字段的不同子集和/或被定义为具有被不同解释的给定字段。在一个实施例中,指令可以使用指令格式来表达(并且,如果被定义,则以该指令格式的指令模板的给定一个来表达),并且指定或指示操作和操作将在其上操作的操作数。
科学、金融、自动矢量化通用、RMS(识别、挖掘和合成)以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频操纵)可能需要在大量数据项上实行相同操作。在一个实施例中,单指令多数据(SIMD)是指使得处理器在多个数据元素上实行操作的指令的类型。SIMD技术可以在处理器中使用,所述处理器可以在逻辑上将寄存器中的位划分成多个固定大小或可变大小的数据元素,其中的每一个表示单独的值。例如,在一个实施例中,在64位寄存器中的位可以被组织为包含四个单独的16位数据元素的源操作数,其中的每一个表示单独的16位值。该类型的数据可以被称为“封装”数据类型或“矢量”数据类型,并且该数据类型的操作数可以被称为封装数据操作数或矢量操作数。在一个实施例中,封装数据项或矢量可以是存储在单个寄存器内的封装数据元素的序列,并且封装数据操作数或矢量操作数可以是SIMD指令(或“封装数据指令”或“矢量指令”)的源或目的地操作数。在一个实施例中,SIMD指令规定要在两个源矢量操作数上实行的单个矢量操作,以生成相同或不同大小的、具有相同或不同数目的数据元素的并且以相同或不同的数据元素次序的目的地矢量操作数(也被称为结果矢量操作数)。
SIMD技术已经使得能够在应用性能方面的显著改善,SIMD技术诸如由具有包括x86、MMXTM、流送SIMD扩展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令的指令集的CoreTM处理器、诸如具有包括矢量浮点(VFP)和/或NEON指令的指令集的ARM族处理器的ARM处理器、以及诸如由中科院的计算技术研究所(ICT)开发的Loongson族处理器的MIPS处理器采用(CoreTM和MMXTM是加利福尼亚州圣克拉拉的英特尔公司的注册商标或商标)。
在一个实施例中,目的地和源寄存器/数据可以是用于表示对应数据或操作的源和目的地的通用术语。在一些实施例中,其可以通过具有与所描绘的不同的其他名称或功能的寄存器、存储器或其他存储区域来实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其他存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其他存储区域等。在其他实施例中,两个或更多个SRC和DEST存储区域可以对应于相同存储区域内的不同数据存储元件(例如,SIMD寄存器)。在一个实施例中,源寄存器中的一个还可以通过例如将在第一和第二源数据上实行的操作的结果回写(write-back)到用作目的地寄存器的两个源寄存器中的一个来用作目的地寄存器。
图1A是根据本公开的实施例的用可以包括用于执行指令的执行单元的处理器形成的示例性计算机系统的框图。根据本公开,诸如在本文描述的实施例中,系统100可以包括组件,诸如用于采用执行单元的处理器102,所述执行单元包括用于实行用于过程数据的算法的逻辑。系统100可以表示基于从加利福尼亚的圣克拉拉的英特尔公司可得到的III、4、XeonTMXScaleTM和/或StrongARMTM微处理器的处理系统,不过还可以使用其他系统(包括具有其他微处理器、工程工作站、机顶盒等的PC)。在一个实施例中,样本系统100可以执行可从华盛顿的雷蒙德市的微软公司提供的一个版本从华盛顿州雷蒙德市的微软公司可得到的WINDOWSTM操作系统的版本,不过还可以使用其他操作系统(例如,UNIX和Linux)、嵌入式软件和/或图形用户接口。因此,本公开的实施例不限于硬件电路和软件的任何特定组合。
实施例不限于计算机系统。本公开的实施例可以在诸如手持设备和嵌入式应用之类的其他设备中使用。手持设备的一些示例包括蜂窝电话、因特网协议设备、数字相机、个人数字助理(PDA)和手持式PC。嵌入式应用可以包括微控制器、数字信号处理器(DSP)、片上系统、网络计算机(NetPC)、机顶盒、网络中心(hub)、广域网(WAN)交换机或者可以实行根据至少一个实施例的一个或多个指令的任何其他系统。
计算机系统100可以包括处理器102,其可以包括一个或多个执行单元108,以实行用于实行根据本公开的一个实施例的至少一个指令的算法。一个实施例可以在单个处理器台式计算机或服务器系统的上下文中被描述,但是其他实施例可以被包括在多处理器系统中。系统100可以是“中心”系统架构的示例。系统100可以包括用于处理数据信号的处理器102。处理器102可以包括例如复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现指令集的组合的处理器或任何其他处理器设备,诸如数字信号处理器。在一个实施例中,处理器102可以被耦合到处理器总线110,其可以在处理器102和系统100中的其他组件之间传送数据信号。系统100的元件可以实行对本领域普通技术人员公知的传统功能。
在一个实施例中,处理器102可以包括1级(LI)内部高速缓存存储器104。根据架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。在另一实施例中,高速缓存存储器可以驻留在处理器102外部。根据特定实现和需要,其他实施例还可以包括内部和外部高速缓存二者的组合。寄存器文件106可以将不同类型的数据存储在各种寄存器中,包括整数寄存器、浮点寄存器、状态寄存器和指令指示器(pointer)寄存器。
包括用于实行整数和浮点运算的逻辑的执行单元108还驻留在处理器102中。处理器102还可以包括存储用于特定宏指令的微代码的微代码(ucode)ROM。在一个实施例中,执行单元108可以包括用于处理封装指令集109的逻辑。通过将封装指令集109包括在通用处理器102的指令集中,可以使用通用处理器102中的封装数据与用于执行指令的关联电路一起来实行由很多多媒体应用使用的操作。因此,可以通过使用用于在封装数据上实行操作的处理器的数据总线的全宽度来更高效地加速和执行很多多媒体应用。这可以消除通过处理器的数据总线传输较小数据单元以一次一个数据元素地实行一个或多个操作的需要。
还可以在微控制器、嵌入式处理器、图形设备、DSP和其他类型的逻辑电路中使用执行单元108的实施例。系统100可以包括存储器120。存储器120可以被实现为动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备或其他存储器设备。存储器120可以存储可以由处理器102执行的数据信号所表示的指令和/或数据。
系统逻辑芯片116可以耦合到处理器总线110和存储器120。系统逻辑芯片116可以包括存储器控制器中心(MCH)。处理器102可以经由处理器总线110与MCH 116通信。MCH 116通信可以向存储器120提供高带宽存储器路径118,以用于指令和数据存储并且用于存储图形命令、数据和纹理(texture)。MCH 116可以在系统100中的处理器102、存储器120和其他组件之间引导数据信号,并且在处理器总线110、存储器120和系统I/O 122之间桥接数据信号。在一些实施例中,系统逻辑芯片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总线可以包括用于将外设连接到存储器120、芯片组和处理器102的高速I/O总线。示例可以包括音频控制器、固件中心(闪速BIOS)128、无线收发机126、数据储存器124、包含用户输入和键盘接口的传统(legacy)I/O控制器、诸如通用串行总线(USB)之类的串行扩展端口和网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪速存储器设备或其他大容量存储设备。
对于系统的另一实施例,根据一个实施例的指令可以与片上系统一起使用。在片上系统的一个实施例包括处理器和存储器。用于一个这样的系统的存储器可以包括闪速存储器。闪速存储器可以与处理器和其他系统组件位于相同的管芯上。此外,诸如存储器控制器或图形控制器之类的其他逻辑块还可以位于片上系统上。
图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接收的指令解码成控制信号和/或微代码入口点(entry point)。响应于这些控制信号和/或微代码入口点,执行单元142实行适当的操作。在一个实施例中,解码器可以解释该指令的操作码,这将指示应当在指令内所指示的对应数据上实行什么操作。
处理核159可以与总线141耦合以与各种其他系统设备进行通信,所述各种其他系统设备可以包括但不限于,例如,同步动态随机存取存储器(SDRAM)控制146、静态随机存取存储器(SRAM)控制147、突发闪速存储器接口148、个人计算机存储器卡国际协会(PCMCIA)/紧凑型闪存(CF)卡控制149、液晶显示器(LCD)控制150、直接存储器访问(DMA)控制器151以及替代总线主接口152。在一个实施例中,数据处理系统140还可以包括用于经由I/O总线153与各种I/O设备进行通信的I/O桥154。这样的I/O设备可以包括但不限于,例如,通用异步接收机/发射机(UART)155、通用串行总线(USB)156、蓝牙无线UART 157和I/O扩展接口158。
数据处理系统140的一个实施例提供移动、网络和/或无线通信和可以实行包括文本串比较操作的SIMD操作的处理核159。处理核159可以被编程有各种音频、视频、成像和通信算法,包括离散变换,诸如沃尔什-哈达玛变换、快速傅立叶变换(FFT)、离散余弦变换(DCT)及其相应的逆变换;压缩/解压缩技术,诸如颜色空间变换、视频编码运动估计或视频解码运动补偿;以及调制/解调(MODEM)功能,诸如脉冲编码调制(PCM)。
图1C图示了实行SIMD文本串比较操作的数据处理系统的其他实施例。在一个实施例中,数据处理系统160可以包括主处理器166、SIMD协处理器161、高速缓存存储器167和输入/输出系统168。输入/输出系统168可以可选地耦合到无线接口169。SIMD协处理器161可以实行包括根据一个实施例的指令的操作。在一个实施例中,处理核170可以适用于以一个或多个处理技术并且通过足够详细地在机器可读介质上表示的制造,可以适用于促进包括处理核170的数据处理系统160的全部或部分的制造。
在一个实施例中,SIMD协处理器161包括执行单元162和寄存器文件集合164。主处理器165的一个实施例包括解码器165,其用于识别包括根据用于由执行单元162执行的一个实施例的指令的指令集163的指令。在其他实施例中,SIMD协处理器161还包括用于解码指令集163的指令的解码器165的至少一部分。处理器核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内,其包括执行单元162、寄存器文件集合164和解码器165以识别包括根据一个实施例的指令的指令集163的指令。
图2是根据本公开的实施例的可以包括用于实行指令的逻辑电路的处理器200的微架构的框图。在一些实施例中,根据一个实施例的指令可以被实现为在具有字节、字、双字、四字等的大小以及诸如单和双精度整数和浮点数据类型的数据类型的数据元素上进行操作。在一个实施例中,有序前端201可以实现处理器200的一部分,其可以取出要执行的指令并且准备稍后要在处理器流水线中使用的指令。前端201可以包括若干单元。在一个实施例中,指令预取器226从存储器中取出指令,并且将指令馈送到指令解码器228,其进而解码或解释指令。例如,在一个实施例中,解码器将接收到的指令解码成机器可以执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或若干操作。在其他实施例中,解码器将该指令解析成操作码以及可以由微架构使用以实行根据一个实施例的操作的对应数据和控制字段。在一个实施例中,跟踪(trace)高速缓存230可以将所解码的uop汇编成uop序列234中的程序排序的序列或跟踪以供执行。当跟踪高速缓存230遇到复杂指令时,微代码ROM232提供完成操作所需要的uop。
一些指令可以被转换成单个微op,而其他需要若干微op来完成全部操作。在一个实施例中,如果需要多于四个的微op来完成指令,则解码器228可以访问微代码ROM 232以实行指令。在一个实施例中,指令可以被解码成小数目的微op以用于在指令解码器228处处理。在另一实施例中,如果需要多个微op来完成操作,则指令可以被存储在微代码ROM 232内。跟踪高速缓存230指的是入口点可编程逻辑阵列(PLA),其用于确定用于从微代码ROM232读取微代码序列以完成根据一个实施例的一个或多个指令的正确微指令指示器。在微代码ROM 232完成用于指令的排序微op之后,机器的前端201可以从跟踪高速缓存230恢复取出微op。
乱序执行引擎203可以准备指令以供执行。乱序执行逻辑具有多个缓冲器以在指令沿流水线向下进行并且被调度以供执行时平滑并且重新排序指令流以优化性能。分配器逻辑分配每个uop需要的机器缓冲器和资源以便执行。寄存器重命名逻辑将逻辑寄存器重命名到寄存器文件中的条目上。分配器还在指令调度器:存储器调度器、快速调度器202、慢速/通用浮点调度器204和简单浮点调度器206之前分配用于在两个uop队列(一个用于存储器操作并且一个用于非存储器操作)的一个中的每个uop的条目。uop调度器202、204、206基于其相关输入寄存器操作数源的准备状态(readiness)以及uop需要完成其操作的执行资源的可用性来确定uop何时准备好执行。一个实施例的快速调度器202可以在每半个主时钟周期上进行调度,而其他调度器仅可以每主处理器时钟周期调度一次。调度器针对分派端口来进行仲裁以调度uop以供执行。
寄存器文件208、210可以被布置在调度器202、204、206与执行块211中的执行单元212、214、216、218、220、222、224之间。寄存器文件208、210中的每一个分别实行整数和浮点操作。每个寄存器文件208、210可以包括可以将尚未写入寄存器文件的刚刚完成的结果旁通(bypass)或转发到新的相关uop的旁通网络。整数寄存器文件208和浮点寄存器文件210可以与其他传送数据。在一个实施例中,整数寄存器文件208可以被分成两个单独的寄存器文件,一个寄存器文件用于数据的低阶32个位,并且第二寄存器文件用于数据的高阶32个位。浮点寄存器文件210可以包括128位宽条目,因为浮点指令通常具有在宽度上从64到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位乘64位浮点除法器以执行除法、平方根和余数微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在父加载已经完成执行之前分派相关操作。因为uop可以在处理器200中被推测地调度和执行,所以处理器200还可以包括用于处理存储器未命中(miss)的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中可能存在在飞行中(in flight)的相关操作,其给调度器留下临时不正确的数据。回放机制追踪并且重新执行使用不正确的数据的指令。仅相关操作可能需要被回放,并且可以允许独立的操作来完成。处理器的一个实施例的调度器和回放机制还可以被设计为捕获用于文本串比较操作的指令序列。
术语“寄存器”可以指可以用作用于识别操作数的指令的一部分的板上处理器存储位置。换言之,寄存器可以是可以从处理器的外部(从程序员的角度)使用的那些。然而,在一些实施例中,寄存器可能不限于特定类型的电路。而是,寄存器可以存储数据,提供数据,并且实行本文所述的功能。本文描述的寄存器可以通过使用任何数目的不同技术通过处理器内的电路来实现,诸如专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器文件还包含用于封装数据的8个多媒体SIMD寄存器。对于下面的讨论,寄存器可以被理解为设计成保持封装数据的数据寄存器,诸如从加利福尼亚的圣克拉拉的英特尔公司可得到的用MMX技术实现的微处理器中的64位宽MMXTM寄存器(在一些实例中也被称为“mm”寄存器)。以整数和浮点形式二者可用的这些MMX寄存器可以以伴随SIMD和SSE指令的封装数据元素进行操作。类似地,与SSE2、SSE3、SSE4或更高(统称为“SSEx”)技术相关的128位宽XMM寄存器可以保持这样的封装数据操作数。在一个实施例中,在存储封装数据和整数数据中,寄存器不需要在两种数据类型之间进行区分。在一个实施例中,整数和浮点可以被包含在相同寄存器文件或不同的寄存器文件中。此外,在一个实施例中,浮点和整数数据可以被存储在不同的寄存器或相同的寄存器中。
在以下附图的示例中,可以描述多个数据操作数。图3A图示了根据本公开的实施例的多媒体寄存器中的各种封装数据类型表示。图3A图示了用于128位宽操作数的用于封装字节310、封装字320和封装双字(dword)330的数据类型。该示例的封装字节格式310可以是128位长,并且包含16个封装字节数据元素。字节可以被定义为例如8位数据。针对每个字节数据元素的信息可以对于字节0以位7至位0被存储,对于字节1以位15至位8被存储,对于字节2以位23至位16被存储,并且对于字节15最后以位120至位127被存储。因此,所有可用位可以在寄存器中使用。该存储布置提高了处理器的存储效率。同时,在16个数据元素被访问的情况下,一个操作现在可以并行地在16个数据元素上实行。
通常,数据元素可以包括单独的数据片段,其被存储在具有相同长度的其他数据元素的单个寄存器或存储器位置中。在与SSEx技术相关封装数据序列中,存储在XMM寄存器中的数据元素的数目可以是128位除以单独数据元素的位的长度。类似地,在与MMX和SSE技术相关的封装数据序列中,存储在MMX寄存器中的数据元素的数目可以是64位除以单独数据元素的位的长度。虽然在图3A中图示的数据类型可以是128位长,但是本公开的实施例还可以以64位宽或其他大小的操作数来操作。该示例的封装字格式320可以是128位长,并且包含8个封装字数据元素。每个封装字包含16位的信息。图3A的封装双字格式330可以是128位长,并且包含4个封装双字数据元素。每个封装双字数据元素包含32位的信息。封装四字可以是128位长,并且包含两个封装四字数据元素。
图3B图示了根据本公开的实施例的可能的寄存器中数据存储格式。每个封装数据可以包括多于一个的独立数据元素。图示了三个封装数据格式;封装半341、封装单个342以及封装双343。封装半341、分装单个342以及封装双343的一个实施例包含定点数据元素。对于另一实施例,封装半341、分装单个342以及封装双343中的一个或多个可以包含浮点数据元素。封装半341的一个实施例可以是包含8个16位数据元素的128位长。封装单个342的一个实施例可以是128位长,并且包含四个32位数据元素。封装双343的一个实施例可以是128位长,并且包含两个64位数据元素。应当理解,这样的封装数据格式可以被进一步扩展为其他寄存器长度,例如,96位、160位、192位、224位、256位或更多。
图3C图示了根据本公开的实施例的多媒体寄存器中的各种有符号和无符号的封装数据类型表示。无符号封装字节表示344图示了SIMD寄存器中的无符号封装字节的存储。每个字节数据元素的信息可以对于字节0被存储在位7至位0中,对于字节1的位15至位8,对于字节2的位23至位16,并且最后对于字节15的位120至位127。因此,所有可用位可以在寄存器中使用。该存储布置可以提高处理器的存储效率。同样,在16个数据元素被访问的情况下,一个操作现在可以以并行方式在十六个数据元素上实行。有符号封装字节表示345图示了有符号封装字节的存储。注意,每个字节数据元素的第8位可以是符号指示符。无符号封装字表示346图示字7至字0可以如何被存储在SIMD寄存器中。有符号封装字表示347可以类似于无符号封装字寄存器中表示346。注意,每个字数据元素的第16位可以是符号指示符。无符号封装双字表示348示出了双字元素如何被存储。有符号封装双字表示349可以类似于无符号封装双字寄存器中表示348。注意,必要的符号位可以是每个双字数据元素的第三十二位。
图3D图示了操作编码(操作码)的实施例。此外,格式360可以包括对应于在下述中描述的操作码格式的类型的寄存器/存储器操作数寻址模式:“IA-32Intel ArchitectureSoftware Developer’s Manual Volume 2:Instruction Set Reference”,这从加利福尼亚州的圣克拉拉的英特尔公司在万维网(www)上在intel.com/design/litcentr可得到。在一个实施例中,与(and)指令可以由字段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允许由MOD字段363和373并且通过可选的比例索引基础(scale-index-base)和位移字节部分地指定的寄存器到寄存器、存储器到寄存器、寄存器按存储器、寄存器按寄存器、寄存器按立即、寄存器到存储器寻址。
图3F图示了根据本公开的实施例的又一可能的操作编码(操作码)格式。64位单指令多数据(SIMD)算术操作可以通过协处理器数据处理(CDP)指令来实行。操作编码(操作码)格式380描绘了具有CDP操作码字段382和0064389的一个这样的CDP指令。CDP指令的类型对于另一实施例来说,操作可以由字段383、384、387和388中的一个或多个来编码。可以标识每指令多达3个操作数位置,包括多达两个源操作数标识符385和390以及一个目的地操作数标识符386。协处理器的一个实施例可以在八、十六、三十二和64位值上进行操作。在一个实施例中,可以在整数数据元素上实行指令。在一些实施例中,指令可以被有条件地使用条件字段381来执行。对于一些实施例,可以通过字段383来编码源数据大小。在一些实施例中,零(Z)、负(N)、进位(carry)(C)和溢出(V)检测可以在SIMD字段上进行。对于一些指令,饱和(saturation)的类型可以通过字段384来编码。
图4A是图示根据本公开的实施例的有序流水线和寄存器重命名级、乱序发出/执行流水线的框图。图4B是图示根据本公开的实施例的要包括在处理器中的有序架构核和寄存器重命名逻辑、乱序发出/执行逻辑的框图。图4A中的实线框图示了有序流水线,而虚线框图示了寄存器重命名、乱序发出/执行流水线。类似地,在图4B中的实线框图示了有序架构逻辑,而虚线框图示了寄存器重命名逻辑和乱序发出/执行逻辑。
在图4A中,处理器流水线400可以包括取出级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也称为分派或发出)级412、寄存器读取/存储器读取级414、执行级416、回写/存储器写入级418、异常处理级422和提交级424。
在图4B中,箭头表示在两个或更多个单元之间的耦合,并且箭头的方向指示这些单元之间的数据流的方向。图4B示出了包括耦合到执行引擎单元450的前端单元430的处理器核490,并且二者可以耦合到存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。在一个实施例中,核490可以是专用核,诸如,例如,网络或通信核、压缩引擎、图形核等。
前端单元430可以包括耦合到指令高速缓存单元434的分支预测单元432。指令高速缓存单元434可以被耦合到指令翻译后备缓冲器(TLB)436。TLB 436可以耦合到指令取出单元438,其被耦合到解码单元440。解码单元440可以解码指令,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,其可以从原始指令被解码或者以其他方式反映或者可以从原始指令得到。解码器可以使用各种不同的机制来实现。适当的机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,指令高速缓存单元434可以被进一步耦合到存储器单元470中的2级(L2)高速缓存单元476。解码单元440可以被耦合到执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450可以包括耦合到退役单元454和一个或多个调度器单元456的集合的重命名/分配器单元452。调度器单元456表示任何数目的不同调度器,包括保留站、中央指令窗口等。调度器单元456可以被耦合到物理寄存器文件单元458。物理寄存器文件单元458中的每一个表示一个或多个物理寄存器文件,其中的不同的物理寄存器文件存储一个或多个不同的数据类型(诸如标量整数、标量浮点、封装整数、封装浮点、矢量整数、矢量浮点等)、状态(例如,作为要执行的下一指令的地址的指令指示器)等。物理寄存器文件单元458可以被退役单元154重叠,以说明寄存器重命名和乱序执行可以以其被实现的各种方式(例如,使用一个或多个重新排序缓冲器以及一个或多个退役寄存器文件,使用一个或多个未来的文件、一个或多个历史缓冲器、以及一个或多个退役寄存器文件;使用寄存器映射和寄存器池等)。通常,架构寄存器可以是从处理器外或者从程序员的视角可见的。寄存器可能不限于任何已知的特定类型的电路。只要其存储并且提供如本文描述的数据,各种不同类型的寄存器就可以是适当的。适当寄存器的示例包括但可能不限于,专用物理寄存器、使用寄存器重命名的动态分配的物理寄存器、专用和动态分配的物理寄存器的组合等。退役单元454和物理寄存器文件单元458可以被耦合到执行集群460。执行集群460可以包括一个或多个执行单元162的集合以及一个或多个存储器访问单元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指令集(具有已经被添加有新的版本的一些扩展);加利福尼亚州桑尼维尔的MIPS科技的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON)。
应当理解,核可以以各种方式支持多线程(执行操作或线程的两个或更多个并行集合)。多线程支持可以通过例如包括时间分段多线程、同时多线程(其中单个物理核提供用于物理核同时多线程化的线程中的每一个的逻辑核)或其组合来实行。这样的组合可以包括,例如,时间分段取出和解码以及此后的同时多线程,诸如在超线程技术中。
虽然寄存器重命名可以在乱序执行的上下文中进行描述,但是应当理解,寄存器重命名可以在有序架构中使用。尽管所图示的处理器的实施例还可以包括单独的指令和数据高速缓存单元434/474和共享L2高速缓存单元476,但是其他实施例可以具有用于指令和数据二者的单个内部高速缓存,诸如例如1级(L1)内部高速缓存或多级内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和可以在核和/或处理器的外部的外部高速高速缓存的组合。在其他实施例中,所有的高速缓存可以在核和/或处理器外部。
图5A是根据本公开的实施例的处理器500的框图。在一个实施例中,处理器500可以包括多核处理器。处理器500可以包括通信地耦合到一个或多个核502的系统代理510。此外,核502和系统代理510可以通信地耦合到一个或多个高速缓存506。核502、系统代理510和高速缓存506可以经由一个或多个存储器控制单元552被通信地耦合。此外,核502、系统代理510和高速缓存506可以经由存储器控制单元552通信地耦合到图形模块560。
处理器500可以包括用于互连核502、系统代理510和高速缓存506以及图形模块560的任何适当的机制。在一个实施例中,处理器500可以包括用于互连核502、系统代理510和高速缓存506以及图形模块560的基于环的互连单元508。在其他实施例中,处理器500可以包括用于互连这样的单元的任何数目的公知技术。基于环的互连单元508可以利用存储器控制单元552来促进互连。
处理器500可以包括存储器层级,其包括核内的一个或多个级的高速缓存、诸如高速缓存506之类的一个或多个共享高速缓存单元、或耦合到集成存储器控制器单元552的集合的外部存储器(未示出)。高速缓存506可以包括任何适当的高速缓存。在一个实施例中,高速缓存506可以包括一个或多个中间级高速缓存,诸如2级(L2)、3级(L3)、4级(L4)或其他级的高速缓存、最后一级高速缓存(LLC)和/或其组合。
在各种实施例中,一个或多个核502可以执行多线程。系统代理510可以包括用于协调和操作核502的组件。系统代理单元510可以包括例如功率控制单元(PCU)。PCU可以是或包括用于调节核502的功率状态所需要的逻辑和组件。系统代理510可以包括用于驱动一个或多个外部连接的显示器或图形模块560的显示引擎512。系统代理510可以包括用于图形的通信总线的接口1214。在一个实施例中,接口1214可以通过快速PCI(PCIe)来实现。在另外的实施例中,接口1214可以通过快速PCI图形(PEG)来实现。系统代理510可以包括直接媒体接口(DMI)516。DMI 516可以提供在计算机系统的主板或其他部分上的桥之间的链接。系统代理510可以包括用于提供对计算系统的其他元件的PCIe链接的PCIe桥1218。PCIe桥1218可以使用存储器控制器1220和一致性逻辑1222来实现。
核502可以以任何适当的方式来实现。核502可以在架构和/或指令集方面是同构或异构的。在一个实施例中,一些核502可以是有序的,而其他可以是乱序的。在另一实施例中,两个或多个核502可以执行相同的指令集,而其他可以仅执行该指令集的子集或不同的指令集。
处理器500可以包括通用处理器,诸如CoreTMi3、i5、i7双核和四核、XeonTM、ItaniumTM、XScaleTM或StrongARMTM处理器,其可以从加利福尼亚州圣克拉拉的英特尔公司可得到。处理器500可以从另一公司提供,诸如ARM控股有限公司、MIPS等。处理器500可以是专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等。处理器500可以在一个或多个芯片上实现。处理器500可以是使用诸如例如BiCMOS、CMOS或NMOS之类的多个处理技术中的任一个的一个或多个衬底的一部分和/或可以在其上实现。
在一个实施例中,高速缓存506中的给定一个可以由核502中的多个核来共享。在另一实施例中,高速缓存506中的给定一个可以专用于核502中的一个。高速缓存506到核502的指派可以通过高速缓存控制器或其他适当的机制来处理。高速缓存506中的给定一个可以通过实现给定高速缓存506的时间切片来由两个或更多个核502共享。
图形模块560可以实现集成图形处理子系统。在一个实施例中,图形模块560可以包括图形处理器。此外,图形模块560可以包括媒体引擎565。媒体引擎565可以提供媒体编码和视频解码。
图5B是根据本公开的实施例的核502的示例性实现的框图。核502可以包括通信地耦合到乱序引擎580的前端570。核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读取的值可以通过例如高速缓存层级503来与处理器500的其他部分协调。当指令被指派资源时,其可以被置于重新排序缓冲器588中。重新排序缓冲器588可以在指令被执行时跟踪指令,并且可以基于处理器500的任何适当的准则来选择性地对其执行重新排序。在一个实施例中,重新排序缓冲器588可以标识可以被独立执行的指令或一系列指令。这样的指令或一系列指令可以从其他这样的指令并行地执行。核502中的并行执行可以通过任何适当数目的单独的执行块或虚拟处理器来实行。在一个实施例中,共享资源(诸如存储器、寄存器和高速缓存)可以是对给定核502内的多个虚拟处理器可访问的。在其他实施例中,共享资源可以是对处理器500内的多个处理实体可访问的。
高速缓存层级503可以以任何适当的方式来实现。例如,高速缓存层级503可以包括一个或多个较低或中间级高速缓存,诸如高速缓存572、574。在一个实施例中,高速缓存层级503可以包括通信地耦合到高速缓存572、574的LLC 595。在另一实施例中,LLC 595可以在对处理器500的所有处理实体可访问的模块590中被实现。在另外的实施例中,模块590可以以来自英特尔公司的处理器的非核模块实现。模块590可以包括对于核502的执行所必要的处理器500的部分或子系统,但是可能不在核502内实现。除了LLC 595之外,模块590可以包括例如硬件接口、存储器一致性协调器、处理器间互连、指令流水线或存储器控制器。对可用于处理器500的RAM 599的访问可以通过模块590和更具体地LLC 595来进行。此外,核502的其他实例可以类似地访问模块590。核502的实例的协调可以部分地通过模块590来促进。
图6-8可以图示适用于包括处理器500的示例性系统,而图9可以图示可以包括一个或多个核502的示例性片上系统(SoC)。本领域中公知的用于膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络中心、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备和各种其他电子设备的其他系统设计和实现也可以是适当的。通常,包含如本文公开的处理器和/或其他执行逻辑的大量系统或电子设备通常可以是适当的。
图6图示了根据本公开的实施例的系统600的框图。系统600可以包括一个或多个处理器610、615,其可以耦合到图形存储器控制器中心(GMCH)620。附加处理器615的可选性质在图6中用虚线来表示。
每个处理器610、615可以是某个版本的处理器500。然而,应当注意,集成图形逻辑和集成存储器控制单元可能在处理器610、615中不存在。图6图示了GMCH 620可以耦合到存储器640,所述存储器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(诸如平板显示器)。在一个实施例中,GMCH 620可以包括集成图形加速器。GMCH 620可以进一步被耦合到输入/输出(I/O)控制器中心(ICH)650,其可以用于将各种外围设备耦合到系统600。外部图形设备660可以包括作为耦合到ICH 650的分立图形设备连同另一外围设备670。
在其他实施例中,附加或不同的处理器还可以存在于系统600中。例如,附加处理器610、615可以包括可以与处理器610相同的附加处理器、可以与处理器610异构或不对称的附加处理器、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器。在物理资源610、615之间可以存在在指标的一系列度量的方面的各种差异,包括架构、微架构、热、功耗特性等。这些差异可能将其自身有效地表现为在处理器610、615当中的不对称和异构。对于至少一个实施例,各种处理器610、615可以驻留在相同的管芯封装中。
图7图示了根据本公开的实施例的第二系统700的框图。如图7所示,多处理器系统700可以包括点对点互连系统,并且可以包括经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每一个可以是作为处理器610、615中的一个或多个的某个版本的处理器500。
尽管图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总线之类的总线或另一第三代I/O互连总线,不过本发明的范围不限于此。
如图7中所示,各种I/O设备714可以被耦合到第一总线716,连同总线桥718,所述总线桥718将第一总线716耦合到第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以被耦合到第二总线720,包括例如键盘和/或鼠标722、通信设备727和可以包括指令/代码和数据730的存储单元728,诸如盘驱动器或其他大容量存储设备。此外,音频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核”的这样的表示可以被存储在有形的机器可读介质(“带”)上,并且被供应到各种客户或制造设施,以加载到实际上制作逻辑或处理器的制造机器。例如,由ARM控股有限公司开发的CortexTM处理器族以及中科院的计算技术研究所(ICT)开发的loongson IP核之类的IP核可以被许可或者出售到各种客户或被许可人(诸如德州仪器、高通、苹果或三星)并且在由这些客户或被许可人生产的处理器中实现。
图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本地执行的类型的软件。在其他实施例中,模拟逻辑可以是固定功能或可编程硬件和存储在有形机器可读介质上的程序的组合。在一个实施例中,处理器包含模拟逻辑,而在其他实施例中,模拟逻辑存在于处理器外并且可以由第三方来提供。在一个实施例中,处理器可以通过执行包含在处理器中或者与处理器相关联的微代码或固件来加载在包含软件的有形机器可读介质中体现的模拟逻辑。
图13图示了根据本公开的实施例的对比用于将源指令集中的二进制指令转换成目标指令集中的二进制指令的软件指令转换器的使用的框图。在图示的实施例中,指令转换器可以是软件指令转换器,不过指令转换器可以以软件、固件、硬件或其各种组合来实现。图13示出了可以使用x86编译器1304来编译以高级语言1302的程序以生成可以由具有至少一个x86指令集核1316的处理器本地执行的x86二进制代码1306。具有至少一个x86指令集核的处理器表示可以通过兼容地执行或以其他方式处理下述来实行与具有至少一个x86指令集核的英特尔处理器大体上相同的功能的任何处理器:(1)英特尔x86指令集核的指令集的相当大的部分,或(2)目标在于在具有至少一个x86指令集核的英特尔处理器上运行的应用或其他软件的目标代码版本,以便于实现与具有至少一个x86指令集核的英特尔处理器大体上相同的结果。x86编译器1304表示可以操作为生成可以在有或没有附加链接处理的情况下在具有至少一个x86指令集核1316的处理器上执行的x86二进制代码1306(例如,目标代码)。类似地,图13示出了可以使用替代指令集编译器1308来编译以高级语言1302的程序以生成可以由不具有至少一个x86指令集核1316的处理器(例如,具有执行加利福尼亚州桑尼维尔的MIPS科技的MIPS指令集和/或执行加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集的核的处理器)本地执行的替代指令集二进制代码1310。指令转换器1312可以用于将x86二进制代码1306转换成可以由不具有x86指令集核1314的处理器本地执行的代码。该转换的代码可能与替代指令集二进制代码1310不相同;然而,转换的代码将完成一般操作,并且在由来自替代指令集的指令组成。因此,指令转换器1312表示软件、固件、硬件或其组合,其通过模拟、仿真或任何其他过程来允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1306。
图14是根据本公开的实施例的处理器的指令集架构1400的框图。指令集架构1400可以包括任何适当数目或种类的组件。
例如,指令集架构1400可以包括处理实体,诸如一个或多个核1406、1407和图形处理单元1415。核1406、1407可以通过任何适当的机制(诸如通过总线或高速缓存)通信地耦合到指令集架构1400的剩余部分。在一个实施例中,核1406、1407可以通过L2高速缓存控制1408来通信地耦合,所述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。此外,指令架构1500可以包括高速缓存和总线接口单元,诸如通信地耦合到执行实体1565和存储器系统1540的单元1510。在一个实施例中,将指令加载到执行实体1564中可以由一个或多个执行级来实行。这样的级可以包括例如指令预取级1530、双指令解码级1550、寄存器重命名级155、发出级1560和回写级1570。
在一个实施例中,存储器系统1540可以包括执行指令指示器1580。执行指令指示器1580可以存储标识批指令内的最旧的未指派的指令的值。该指令可以在乱序发出级1560中被存储在批指令内。批指令可以在由多个串(strand)表示的线程内。最旧的指令可以对应于最低的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可以被实现为具有任何适当大小的L2统一高速缓存,诸如0、128k、256k、512k、1M或2M字节的存储器。在另一个另外的实施例中,高速缓存1525可以在纠错码存储器中被实现。在另一实施例中,单元1510可以实行与处理器或电子设备的其他部分的总线对接。在这样的实施例中,单元1510因此可以包括用于通过互连、处理器内总线、处理器间总线或其他通信总线、端口或线路进行通信的总线接口单元1520。总线接口单元1520可以提供对接,以便于实行例如存储器和输入/输出地址的生成,以用于在执行实体1565和指令架构1500外部的系统的部分之间的数据的传输。
为了进一步促进其功能,总线接口单元1520可以包括中断控制和分布单元1511,用于生成中断和到处理器或电子设备的其他部分的其他通信。在一个实施例中,总线接口单元1520可以包括处理针对多个处理核的高速缓存访问和一致性的监听(snoop)控制单元1512。在另外的实施例中,为了提供这样的功能,监听控制单元1512可以包括处理在不同的高速缓存之间的信息交换的高速缓存对高速缓存传输单元。在另一个另外的实施例中,监听控制单元1512可以包括一个或多个监听过滤器1514,其监视其他高速缓存(未示出)的一致性,使得诸如单元1510的高速缓存控制器不必直接实行这样的监视。单元1510可以包括用于同步指令架构1500的动作的任何适当数目的计时器1515。单元1510还可以包括AC端口1516。
存储器系统1540可以包括用于存储用于指令架构1500的处理需要的信息的任何适当数目和种类的机制。在一个实施例中,存储器系统1504可以包括用于存储信息的加载存储单元1530,诸如写入存储器或寄存器或者从其读回的缓冲器。在另一实施例中,存储器系统1504可以包括翻译后备缓冲器(TLB)1545,其提供在物理和虚拟地址之间的地址值的查找。在又一实施例中,总线接口单元1520可以包括用于促进对虚拟存储器的访问的存储器管理单元(MMU)1544。在又另一实施例中,存储器系统1504可以包括用于在这样的指令实际需要被执行之前从存储器请求指令以便减少等待时间的预取器1543。
可以通过不同级来实行用于执行指令的指令架构1500的操作。例如,使用单元1510指令预取级1530可以通过预取器1543来访问指令。所取回(retrieve)的指令可以被存储在指令高速缓存1532中。预取级1530可以实现用于快速循环模式的选项1531,其中形成小得足以适合在给定高速缓存内的循环的一系列指令被执行。在一个实施例中,这样的执行可以在不不需要访问来自例如指令高速缓存1532的附加指令的情况下被实行。预取什么指令的确定可以通过例如分支预测单元1535来进行,其可以访问全局历史1536中的执行的指示、目标地址1537的指示或用于确定接下来将执行代码的哪些分支1557的返回栈1538的内容。这样的分支可以可能被预取作为结果。分支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、诸如固态磁盘(SSD)或硬盘驱动器(HDD)之类的驱动器1720、无线局域网(WLAN)单元1750、蓝牙单元1752、无线广域网(WWAN)单元1756、全球定位系统(GPS)、诸如USB 3.0相机之类的相机1754或例如以LPDDR3标准实现的低功率双数据速率(LPDDR)存储器单元1715。这些组件可以均以任何适当的方式来实现。
此外,在各种实施例中,其他组件可以通过上述组件被通信地耦合到处理器1710。例如,加速计1741、环境光传感器(ALS)1742、罗盘1743和陀螺仪1744可以通信地耦合到传感器中心1740。热传感器1739、风扇1737、键盘1746和触摸板1730可以通信地耦合到EC1735。扬声器1763、耳机1764和麦克风1765可以通信地耦合到音频单元1764,其进而可以通信地耦合到DSP 1760。音频单元1764可以包括,例如,音频编解码器和D类放大器。SIM卡1757可以通信地耦合到WWAN单元1756。诸如WLAN单元1750和蓝牙单元1752以及WWAN单元1756之类的组件可以以下一代形状因子(NGFF)来实现。
本公开的实施例涉及用于基于高速缓存的推测矢量化的指令和逻辑。图18是用于在具有集群执行单元的机器中实现用于存储器访问的指令和逻辑的系统1800的功能框图。这样的机器可以包括集群宽执行机器。在一个实施例中,系统1800可以通过利用被同步的多个数据高速缓存单元来提供对其执行单元的存储器访问。在另外的实施例中,这样的同步可以通过同步多个数据高速缓存单元内的数据高速缓存来实行。在另一个另外的实施例中,这样的同步可以通过同步多个数据高速缓存单元内的监听缓冲器来实行。在又一另外的实施例中,这样的同步可以通过同步多个数据高速缓存单元内的回写缓冲器来实行。在又另一另外的实施例中,这样的同步可以通过在多个数据高速缓存单元内的填充缓冲器之间传送填充缓冲器请求来实行。这样的请求可以包括被传送到其他填充缓冲器的由一个这样的填充缓冲器接收的加载操作。
系统1800可以执行诸如指令流1802之类的指令。系统1800可以乱序取出、分派、执行和退役指令。通过实行乱序执行,系统1800可以实行指令级并行性。此外,系统1800可以提供高速缓存,使得给定执行单元可以更快地访问先前已经存储、确定或执行的数据。这样的高速缓存可以通过多级高速缓存来建立。
系统1800可以以任何适当的方式来实现以实行基于高速缓存的推测矢量化。在一个实施例中,系统1800可以包括集群宽执行机器(CWEM)。CWEM可以包括,例如,具有多个执行单元的处理实体。在另外的实施例中,执行单元可以执行单线程代码。为了提供乱序执行,系统1800可以包括用于逻辑和物理资源的映射和重命名的寄存器文件。CWEM的执行单元可以跨处理单元的芯片或物理管芯封装分布。此外,执行单元可以被分组为集群。通过以这样的方式扩展执行单元,可以在减轻由于寄存器文件访问和数据转发而导致的等待时间的同时,改善寄存器文件访问和执行带宽。因此,系统1800可以减少可以是等待数据的由于其他指令的阻塞而导致的存储器访问中的瓶颈以便于以乱序方式执行,并且改善系统1800实行指令集并行的能力。
在一个实施例中,系统1800可以包括用于接收和执行指令流1804的部分的处理器1802。虽然在图18中图示了处理器1802的特定方面,但是处理器1802可以包括任何适当种类或数目的处理器或处理实体的处理或支持其的其他元件。处理器1802可以完全或部分地通过CWEM来实现或者可以包括一个或多个CWEM。
在一个实施例中,处理器1802可以包括核(其可以包括存储器执行单元(MEU)1816)以及非核1820。MEU 1816可以包括用于执行指令的元件。非核1820可以包括用于支持指令的执行的元件。在另一实施例中,处理器1802可以包括以集群1806分组的任何适当数目和种类的执行单元1808。集群1806可以在核MEU 1816或处理器1802的任何其他适当的部分内被实现。在一个实施例中,执行单元108可以包括用于实行系统1800的内容的加载或存储操作的任何适当的硬件结构。这样的操作可以去往或来自例如寄存器或存储器位置。在另一实施例中,集群1806可以通过例如执行集群460来实现。
MEU 1816可以包括任何适当数目和种类的元件。在一个实施例中,MEU 1816可以包括多个数据高速缓存单元(DCU)1804。每个DCU 1804可以通信地耦合到适当数目的集群1806,诸如一个或两个集群1806。此外,每个DCU 1804可以通信地耦合到至少一个其他DCU1804。在另外的实施例中,DCU 1804可以被通信地耦合,以促进如此耦合的DCU 1804的同步。DCU 1804可以包括L1高速缓存。MEU 1816可以包括L2高速缓存1810。虽然图示了单个L2高速缓存1810,但是MEU 1816可以包括任何适当数目或种类的高速缓存。每个DCU 1804可以被通信地耦合到L2高速缓存1810。MEU 1816或其元件可以包括用于在其元件和系统1800的其他元件之间的翻译的接口。例如,接口可以被提供用于在DCU 1804和集群1806之间或者在DCU 1804和L2高速缓存1810之间的通信。
DCU 1804可以包括以任何适当方式实现的L1高速缓存,诸如完全或部分地通过例如L1内部高速缓存存储器104实现的高速缓存。L2高速缓存1810可以完全或部分地通过例如L2高速缓存单元476、高速缓存层级503、高速缓存506、L2高速缓存1410或高速缓存1525来实现。
非核1820可以以任何适当的方式来实现。例如,非核1820可以包括L3高速缓存1812和存储器控制器1814。L2高速缓存1810可以通信地耦合到L3高速缓存1812。L3高速缓存1812可以以任何适当的方式来实现,诸如完全或部分地通过高速缓存506、高速缓存层级503或LLC 595。存储器控制器1814可以以任何适当的方式来实现以控制去往和来自存储器的操作传输,诸如完全或部分地通过MCH 116、存储器控制器单元552、CL 872、CL 882或集成存储器控制器单元914。
DCU 1804的L1高速缓存、L2高速缓存1810和L3高速缓存的布置可以被布置成高速缓存层级。此外,虽然具体描述了L1、L2和L3高速缓存,但是可以使用任何适当数目或种类的高速缓存层级。例如,给定数目的L1高速缓存可以被指派给单独的L2高速缓存,并且另一给定数目的L2高速缓存可以被指派给单独的L3高速缓存。当执行单元1808需要在存储器位置上实行存储或加载时,可以首先对DCU 1804的L1高速缓存进行检查,以查看位置的高速缓存版本是否可用。如果是,则操作可以在本地高速缓存内实行。如果不是,则所尝试的操作可能生成未命中,并且可以从更高级的高速缓存进一步尝试访问。可以重复所尝试的操作,其中,如果值在这样的高速缓存中可用,则可以返回值。否则,可以生成另一未命中。这些步骤可以继续,直至没有高速缓存被确定为包含所讨论的存储器位置为止,其中,可以访问系统1800中的实际存储器位置。
图19是根据本公开的实施例的DCU 1804的功能框图。虽然图示了DCU 1804A和DCU1804B,但是可以在系统1800中使用更类似实现的DCU。在一个实施例中,每个DCU 1804可以通过集群接口1924来通信地耦合到相应的一个或两个集群1806。此外,每个DCU 1804可以通过L2接口1922通信地耦合到L2高速缓存1810。此外,每个DCU 1804可以通过地址总线1940通信地彼此耦合。
DCU 1804可以以任何适当的方式来实现以实行本文描述的功能。DCU 1804可以部分地通过数据高速缓存单元434、474来实现。在一个实施例中,每个DCU 1804可以包括数据高速缓存(DC)1926、一个或多个填充缓冲器(FB)1930、回写缓冲器(WBB)1928和监听缓冲器(SB)1932。此外,每个DCU 1804可以包括复用器1936、1934,以促进DCU 1804内和外的通信。
DC 1926可以以任何适当的方式来实现以实行本文描述的功能。在一个实施例中,DC 1926可以包括L1数据高速缓存结构。DC 1926可以以任何适当的大小来实现。例如,DC1926可以包括32千字节的信息。
WBB 1928可以以任何适当的方式来实现以实行本文描述的功能。在一个实施例中,WBB 1928可以被实现为硬件存储区域。在另一实施例中,WBB 1928可以捕获从例如DC1926逐出(evict)的经修改的高速缓存行。WBB 1928可以保持这样的逐出的经修改的高速缓存行,直至L2高速缓存1810需要它们或者能够接收它们为止。这样的情况可能例如在先前写入DC 1926的数据尚未被传送到高速缓存层级但是现在已经从DC 1926逐出时发生。
FB 1930可以以任何适当的方式被实现以实行本文描述的功能。在一个实施例中,FB 1930可以被实现为硬件缓冲器。FB 1930可以接收并且包括在访问DC 1926的尝试中生成未命中的所有加载和存储请求。FB 1930可以包括发送到L2高速缓存1810和另外的级的高速缓存(诸如L3高速缓存1812)的请求,直至从较高级高速缓存返回的所请求的高速缓存行被填充在DC 1926中为止。
SB 1932可以以任何适当的方式来实现以实行本文描述的功能。在一个实施例中,SB 1928可以被实现为硬件缓冲器。SB 1928可以存储在处于经修改的状态的DC 1926中发现的高速缓存行。这样的发现可以通过例如监听信号1942来进行。监听信号1942可以通过地址总线被递送以用于监听。监听信号1942可以从L2高速缓存1810被传递到DCU 1804中的每一个,以实行DC 1926、WBB 1928和FB 1930中的检查。检查可以用于在其他位置找到所需要的高速缓存行。监听信号1942的原始原因可以包括其他EU 1808中的加载或存储、由于多级高速缓存逐出而导致的向后查询、直接存储器访问操作或者由于通过不可高速缓存的存储器请求的高速缓存命中而导致的自监听。如果在DC 1926中发现通过这样的操作寻找的高速缓存行,则其可以被存储在SB 1928中以用于回写。
给定DCU 1804的每个元件可以通过任何适当的线路或总线被通信地耦合到另一元件。在图19中图示了示例性总线,并且可以图示在DCU 1804的各种元件之间传递的不同种类的数据。此外,总线的类型可以在要在相应元件之间传递的信息上选择。
例如,加载和存储地址可以通过地址总线从EU 1808被传递到DCU 1804中的每一个以用于加载和存储。加载和存储地址可以反映对其实行加载和存储操作的地址。在一个实施例中,相同的地址可以被发送到DCU 1804A、1804B中的每一个。加载和存储地址信息可以被分布到DC 1926、FB 1930和WBB 1928。此外,与存储相关联的数据可以通过数据总线从EU 1808被发送到DCU 1804以用于加载和存储数据。在一个实施例中,相同的数据可以被发送到DCU 1804A、1804B中的每一个。与存储相关联的数据可以被分布到DC 1926和FB 1930。
DC 1926和FB 1930可以响应于EU 1808的加载请求来推送数据。数据可以包括整个高速缓存行。该数据可以通过数据总线被发送以用于高速缓存行传输。DC 1926还是FB1930实际递送数据的选择可以根据元件中的哪一个具有所请求的、必要的或正确的版本的数据来确定。DC 1926或FB 1930的输出选择可以通过复用器1936来进行。
DC 1926可以将要回写到其他高速缓存的高速缓存行数据发送到SB 1932和WBB1928。数据可以通过数据总线来发送以用于高速缓存行传输。另外,FB 1930、SB 1932和WBB1928可以可能将这样的回写数据发送到L2高速缓存1810。这样的数据可以通过数据总线被发送以用于高速缓存行传输。要发送哪些回写数据的选择可以根据哪个元件具有所请求的、必要的或正确的版本的数据来确定。向L2接口1922的回写数据的输出选择可以通过复用器1934来进行。
填充数据消息可以通过L2接口1922从高速缓存层级被发送到DCU 1804中的每一个。在一个实施例中,相同的数据可以被同时发送到DCU 1804中的每一个。在另一实施例中,填充数据消息可以从一个DCU 1804被路由到另一个。等待时间或延迟可能在这样的DCU1804间的路由中发生。填充数据消息可以包括可能最终替代DC 1926中的现有高速缓存行的数据高速缓存行。这样的数据可以通过数据总线被发送以用于高速缓存行传输。填充数据消息可以被发送到FB 1930。进而,FB 1930可以在适当、同步或可能被修改时,通过数据总线将填充数据消息发送到DC 1926以用于高速缓存行传输。
WBB 1928可以通过L2接口1922将回写请求发送到高速缓存层级。回写请求可以在针对DC 1926的请求引起未命中时进行。可以响应于在给定高速缓存中未命中的加载或存储指令来作出后续填充数据消息;为了这样的填充数据消息被完成,在高速缓存中必须存在空闲(free)条目。进行回写请求以产生这样的空闲条目。该数据可以通过地址总线被发送以用于高速缓存未命中处理。
FB 1930可以向DC 1926发送替代请求。这样的请求可以被作出以触发DC 1926来通过回写数据来提供其内容或者逐出数据。数据可以通过地址总线被发送以用于高速缓存未命中处理。此外,FB 1930可以通过L2接口1922来向高速缓存层级发送读取或读取以得到所有权(read-for-ownership)请求。可以响应于读取不可用高速缓存行或者为了尝试写入到高速缓存行来进行请求。在一个实施例中,对所有权的请求可能使其他DCU 1804中的数据高速缓存的实例无效。数据可以通过地址总线被发送以用于高速缓存未命中处理。
DCU 1804的元件可以根据对所有DCU 1804公共的硬件时钟来进行操作。硬件时钟的定时可以被路由到每个DCU 1804。硬件时钟可以用于使每个DCU 1804的操作相对于彼此同步。在一个实施例中,所有DCU 1804的DC 1926的内容在每个时钟周期中可以是相同的。在另一实施例中,所有DCU 1804的WBB 1928的内容在每个时钟周期中可以是相同的。在又一实施例中,所有DCU 1804的SB 1932的内容在每个时钟周期中可以是相同的。在又另一实施例中,各种DCU 1804的FB 1930的内容对于给定时钟周期可以是不同的。这样的差异可能是由于DCU 1804之间的传输的等待时间而导致的。
WBB 1928、DC 1926或SB 1932的内容的同步可以以任何适当的方式实行。在一个实施例中,WBB 1928、DC 1926或SB 1932的内容的同步可以通过相同逻辑的实现来实行以响应于DCU 1804的每个元件中的不同情况。给定条件或输入可以在所有DCU中相同并且同步地被处理。在另外的实施例中,所有DCU 1804中的这样的相同处理可以包括每个相应DC1926中的数据高速缓存行的逐出的同时处理。DCU 1804中的高速缓存行的逐出可以在每个DC 1926充满并且DCU 1804可能需要添加新的高速缓存行时发生。逐出可以为新的更有用的高速缓存行让出空间以供EU 1808访问。在另一个另外的实施例中,每个DCU 1804可以实行相同的逐出算法以确定哪个高速缓存行要被逐出。如果每个DCU 1804先前已经在每个相应DC 1926中维持了相同的内容,则结果在每个DCU 1804中可以是相同的。在又一实施例中,对每个DC 1926的填充数据消息可以在每个DCU 1804中同时地并且以相同的方式被处理。填充数据消息本身可以是相同的。填充数据消息可以通过相应DCU 1804中的类似创建或者通过在每个DCU 1804处从L2接口1922接收相同的填充数据消息而是相同的。
在另一实施例中,WBB 1928、DC 1926或SB 1932的内容的同步可以通过对DCU1804的同时相同的输入来实行。这样的输入可以通过任何适当的源来进行,诸如通过L2接口1922通信地耦合到DCU 1804的高速缓存层级或者通过集群接口1924通信地耦合的EU1808。在另外的实施例中,相同的存储指令可以从相应EU 1808广播到每个DCU 1804。在各种实施例中,存储指令可以是相同的,每个集群1808可以包括EU 1808的相同布置。存储可以包括高级存储,其反映了在指令或资源的退役时的存储操作。此外,在接收到存储指令时,每个DCU 1804可以以相同的方式处理存储指令。在又一实施例中,相同的填充数据消息可以从高速缓存层级被提供到所有的DCU 1804。在相应DCU 1804处接收到的每个这样的填充数据消息可以以相同的方式来被处理。在又另一实施例中,相同的监听信号1942可以通过L2接口1922从高速缓存层级被发送到每个相应的DCU 1804。如上所述,每个监听信号可以被路由到每个相应的WBB 1928、FB 1930和DC 1926。
在又一实施例中,WBB 1928、DC 1926或SB 1932的内容的同步可以通过通信地耦合相应DCU 1804的FB 1930的一个或多个FB同步线1940来执行。FB同步线1940可以通过用于高速缓存未命中处理的地址总线来实现。延迟可以在通过FB同步线1940的消息的传输期间发生。
与退役相关联的存储操作可以被同时广播到每个相应DCU 1804,其中每个存储可以在每个相应DCU 1804中以相同的方式被同时处理。任何适当的机制可以用于实现从每个EU 1808集合或集群1806到相应DCU 1804的同时分派。在一个实施例中,可以使用全局存储分派队列(SDQ)。这样的SDQ可以被通信地耦合到EU 1808或集群1806以接收存储,并且可以通过集群接口1924通信地耦合到每个DCU 1804以分派这样的存储。从SDQ分派的存储可以以相等的等待时间被递送到每个DCU,使得DCU状态被同时更新。SDQ可以在确定了适当数目的存储已经被发出之后进行这样的存储的分派。因此,分派可以包括向DCU 1804发送多个存储。在另一实施例中,可以使用多个单独的SDQ。SDQ可以被维持在例如每个集群处。集群1806中的每一个可以向其他这样的SDQ进行广播。广播可以包括准备用于实行广播的SDQ的存储的数目的标识。多个单独SDQ可以协调并且确定存储的总数目何时适用于分派。在这样的确定时,每个SDQ可以将其存储发送到所有的DCU 1804。
如上所述,在一个实施例中,来自所有EU 1808和集群1806的存储可以被路由到每个DC 1926。对应于DC 1926中的现有值的任何这样的存储可以被写入DC 1926中。在DC1926中未命中的任何这样的存储可以被写入到FB 1930。在另外的实施例中,当所有DC1926的内容被保持相同时,可以在所有DC 1926中执行相同的这样的操作。此外,在DC 1926中未命中的任何存储可以创建要从FB 1930发出到L2高速缓存1810以取回满的高速缓存行的读取以得到所有权请求。取回的结果可以与位于FB 1930中的存储数据合并。在一个实施例中,取回的结果可以被广播到所有FB 1930。此外,在取回时等待的存储数据在所有FB1930中可以是相同的,因为在未命中时相同的存储被写入到所有FB 1930。在高速缓存行已经被取出以及用于未命中的其他存储操作的任何其他取出之后,可以通过将数据写入到所有DCU 1804中的DC 1926来全局地观察存储。在不同DCU 1804当中的每个FB 1930的内容可以是不同的,直至高速缓存行已经被递送到每个DCU 1804为止。所述差异可能是由于在DCU1804之间发送和接收数据中的等待时间而导致的。
FB 1930的同步可以以任何适当的方式被实行。如上所述,高速缓存线可能需要在DC 1926中的未命中时被取出。在一个实施例中,在所有DCU 1804当中,单个DCU 1804可以负责从FB 1930向L2高速缓存1810发出读取或读取以得到所有权请求。可以以任何适当的方式来确定负责的DCU 1804。在另外的实施例中,给定DCU 1804可以基于存储操作的物理地址通过哈希、映射、索引或其他指示来确定。尽管仅单个DCU 1804可能已经发出请求,但是在另一实施例中,所取出的高速缓存行可以被广播到所有FB 1930。在又一实施例中,尽管仅单个DCU 1804可能已经发出请求,但是每个FB 1930可以保持用于这样的请求的条目,以便于通过可以取决于所取出的行的后续加载来准确地检测和追踪命中。
此外,FB 1930的同步可以通过使用地址总线1940来实行,以在DCU 1804之间共享FB内容。每个FB 1930可以包括由集群1806生成的相同的存储。因此,每个FB 1930可以同时写入这样的存储。然而,在一个实施例中,每个FB可能不能同时访问相同的加载操作。这样的情况可能出现,例如,其中SDQ没有存储加载请求,或者其中,相同的加载信息仅仅没有从集群1806广播到所有DCU。在这样的实施例中,FB 1930可以在接收到来自相应集群1806的加载信息时,将加载写入其本身并且通过地址总线1940将加载转发到其他FB 1930。每个FB1930存储来自其自己的集群1806的加载请求,并且追踪在其他FB 1930处接收到的加载请求。各种FB 1930的内容在给定的时钟周期处可能由于用于通过地址总线1940的这样的加载请求的传输等待时间或延迟而是不同的。
WBB 1928的同步可以以任何适当的方式来实行。在一个实施例中,当用填充数据消息向DC 1926写入新的高速缓存行时,可以向所有DC 1926同时写入相同的数据。在另一实施例中,DC 1926的相同的逐出的高速缓存行可以使用填充数据消息被同时写入所有WBB1928。在回写条件下,在又一实施例中,DC 1926的逐出的高速缓存行可以从(如上所确定的)负责的DCU 1804的WBB 1928被写入到L2高速缓存1810。写入可以在后续时钟周期中实行。在又一实施例中,L2高速缓存1810可以向所有WBB 1928发送确认消息。每个相应的WBB1928可以在接收到这样的确认时使其本身内的高速缓存行无效。
来自L2高速缓存1812的监听信号1942的同步可以以任何适当的方式来实行。在各种实施例中,监听信号1942可以被路由到DC 1926、FB 1930和WBB 1928。如果所请求的高速缓存行被发现在DC 1926中处于经修改的状态,则高速缓存行可以被逐出到监听缓冲器1932。在阈值时,将通过如由复用器1934选择的监听缓冲器1932来回写高速缓存行和任何其他收集的信息。(如上所确定的)负责的DCU 1804可以包括回写这样的数据的监听缓冲器1932。此外,在WBB 1928或FB 1930中的命中的情况下,回写将由负责的DCU 1804的这样的元件来实行。另外,不可高速缓存或部分的写入可能使得FB 1930实行从负责的DCU 1804的这样的回写。在任何这样的情况下的负责元件可以通过复用器1934来选择。
WBB 1928可以通过在DCU 1804的回写缓冲器中的相应WBB 1928中分配等同的条目来被进一步同步。在一个实施例中,这样的分配可以在处理器的操作的相同时钟周期中进行。此外,WBB 1928的一个实例可以解分配(deallocation)其自身中的条目,并且WBB1928的另一实例可以在其自身中分配等同的条目。在另一实施例中,这样的分配和解分配可以是同时的。
图20是根据本公开的实施例的用于集群机器中的存储器访问的方法2000的图示。方法2000可以在任何适当的点开始,并且可以以任何适当的次序执行。例如,方法2000的多个元素可以在给定时钟周期处同时发生。方法2000的不同部分可以彼此并行地被实行。此外,方法2000中的分支或决定可以是异步的。方法2000的一些元素可以通过多个实体,诸如通过DCU或其组件来同时实行。DCU可以根据诸如WBB、FB、DC和SB之类的组件来被同步。在给定的时钟周期,相应DCU的每个WBB、DC和SB的内容可以是相同的。任何适当数目的DCU可以以这样的方式被同步。每个DCU可以被通信地耦合到一个或两个集群,所述集群中的每一个可以包括相同数目的EU。
在2003处,监听信号可以从高速缓存层级被发送到所有DCU的组件。这样的组件可以包括所有这样的DCU的DC、FB和WBB。监听信号可以作出关于可能在一个或多个这样的组件中发现的给定高速缓存行的状态的查询。在2005处,作为监听信号的结果,每个DCU可以确定是否发现了任何监听相关条件。如果没有发现监听相关条件,则方法2000可以前进到2010。如果包括在(一个或多个)DC中发现经修改的高速缓存行的监听相关条件,则方法2000可以前进到2007。如果包括在WBB或FB中发现高速缓存行的监听相关条件发生,则方法2000可以前进到2040。在2007处,高速缓存行从DC到相应DCU中的所有SB。方法2000可以前进到2040。在一个实施例中,2003、2005和2007可以与方法2000的其他元素并行重复。
在2010处,在各种EU和集群中的存储器操作可以被监视。监视可以在每集群的基础上被执行。这样的存储器操作可以包括各种形式的存储或加载操作。在一个实施例中,2010和适当的后续元素可以与2003、2005和2007并行地执行。
在2013处,可以确定加载操作还是存储操作已经由给定集群产生。如果已经发现了加载操作,则方法2000可以前进到2045。如果已经发现了存储操作,则在2015处,可以确定是否已经从所有集群接收到了足够数目的存储。在2010中确定的存储操作可以被添加到存储操作的队列。这样的队列可以是例如全局的并且计及来自所有集群的存储,或者是对队列本地的并且与其他这样的队列协调。如果已经达到了由各种EU生成的必要数目的存储,则方法2000可以前进到2017。如果尚未达到必要数目的存储,则方法2000可以前进到2037。
在2017处,所收集的存储操作中的每一个可以被发出到所有DCU。在2020处,每个DCU可以确定给定存储操作的目标是否在DC内。如果存储操作的目标不在DC内,则未命中已经发生。如果未命中已经发生,则方法2020可以前进到2025。如果未命中尚未发生并且存储操作的目标在DC中可用,则方法2020可以前进到2023。2020和后续元素可以针对所发出的每个存储操作重复。
在2023处,存储操作可以被写入到所有DC。方法2000可以前进到2037。
在2025处,可以发起针对存储操作的未命中处理。存储操作可以被写入到所有FB。在2027处,可以在所有FB中创建针对要从诸如L2之类的高速缓存层级的部分取回的存储操作的读取请求。在2030处,单个负责的DCU的FB可以发出高速缓存层级的读取请求。负责的DCU可以以任何适当的方式来确定,诸如基于操作的物理地址的指派。
在2033处,可以从高速缓存层级向所有DCU发送填充数据。可以在相应FB处接收填充数据。在一个实施例中,高速缓存层级可以将填充数据路由到请求DCU,其可以与其他DCU中的每一个共享填充数据。在另一实施例中,高速缓存层级可以将填充数据并行地路由到所有DCU。
在2035处,如果这样的DC不具有用于新的填充数据的足够的空闲空间,则所有DC中的旧的数据可以被逐出。并且,如此逐出的数据可以从DC被写入所有WBB。新的填充数据可以被写入所有DC。
在2037处,可以确定任何回写条件是否已经发生。这样的条件可以包括,例如,对于先前逐出但是尚未与高速缓存层级共享的数据的需要、不可高速缓存的存储器请求、部分写入、直接存储器访问或来自高速缓存层级的向后查询。在各种实施例中,这样的检查可以与在2005处的监听信号处理相关联地实行。如果回写条件已经发生,则方法2000可以前进到2040。如果没有回写条件发生,则方法2000可以前进到2003以重复方法2000的执行。在各种实施例中,可以与方法2000的其他元素并行地实行2037、2040和2043。
在2040处,用于回写条件的负责的DCU的WBB、SB、FB可以实行数据向高速缓存层级的回写。在2043处,可以接收回写的确认。如果必要,则可以使所有WBB失效。方法2000可以前进到2033以响应于回写请求来接收填充数据。
在2045处,可能已经在2013处针对单独的集群确定了加载操作,并且加载可以被发出到关联的单独的DCU。在2047处,可以确定在相应DCU的DC中存在针对加载操作的目标的命中还是未命中。如果存在未命中,则方法2000可以前进到2053。如果不存在未命中,则方法2000可以前进到2050。
在2050处,加载操作可以在DC上实行并且所得到的数据被返回到作出针对加载操作的请求的集群。方法2000可以前进至2037。
在2053处,可以发起针对加载操作的未命中处理。加载操作可以在接收到加载操作的相应单独的DCU的FB中被写入。在2055处,加载操作可以被传送到其他DCU中的所有其他FB。这样的传送可以通过特殊地址线来进行。在这样的传送中可以存在延迟或等待时间。延迟可以使得不同的FB具有不同的内容,直至所有FB已经接收到加载操作为止。在2055处,加载操作可以在其被接收到时被写入到每个相应的FB中,直至所有FB已经写入了加载操作为止。方法2000可以前进到2030。
方法2000可以通过任何适当的准则来发起。此外,虽然方法2000描述了特定元件的操作,方法2000可以通过元件的任何适当的组合或类型来实行。例如,方法2000可以由在图1-21中图示的元件或者可操作为实现方法200的任何其他系统来实现。这样,用于方法200的优选初始化点和包括方法200的元素的次序可以取决于所选择的实现。在一些实施例中,一些元素可以可选地被省略、重组、重复或组合。
本文公开的机制的实施例可以以硬件、软件、固件或这样的实现方法的组合来实现。本公开的实施例可以被实现为在可编程系统上执行的计算机程序或程序代码,所述可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
程序代码可以应用于输入指令以实行本文描述的功能并且生成输出信息。输出信息可以以已知的方式应用于一个或多个输出设备。为了本申请的目的,处理系统可以包括具有处理器的任何系统,诸如,例如;数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以以高级面向过程或面向对象的编程语言来实现以与处理系统进行通信。程序代码还可以以汇编或机器语言来实现,如果期望的话。事实上,本文描述的机制在范围上不限于任何特定编程语言。在任何情况下,语言可以是编译或解释语言。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,其表示处理器内的各种逻辑,当由机器读取时,使得机器制造用于实行本文描述的技术的逻辑。称为“IP核”的这样的表示可以被存储在有形的机器可读介质上并且被供应到各种客户或制造设施,以加载到实际上作出逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于,由机器或设备制造或形成的物品的非瞬时有形布置,包括诸如硬盘、任何其他类型的盘(包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)和磁光盘)的存储介质、半导体设备(诸如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪速存储器、电可擦除可编程只读存储器(EEPROM))、磁卡或光卡或者适用于存储电子指令的任何其他类型的介质。
因此,本公开的实施例还可以包括非瞬时有形机器可读介质,其包含指令或包含设计数据,诸如硬件描述语言(HDL),其定义本文描述的结构、电路、装置、处理器和/或系统特征。这样的实施例还可以被称为程序产品。
在一些情况下,指令转换器可以用于将指令从源指令集转换到目标指令集。例如,指令转换器可以翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、模拟或以其他方式将指令转换为要由核处理的一个或多个其他指令。指令转换器可以以软件、硬件、固件或其组合来实现。指令转换器可能在处理器上、处理器外或部分在处理器上部分在处理器外。
因此,公开了根据至少一个实施例的用于实行一个或多个指令的技术。尽管特定示例性实施例已经被描述并在附图中示出,但是应当理解,这样的实施例仅仅是说明性的而不是对其他实施例限制性的,并且这样的实施例不限于所示出和描述的特定构造和布置,因为各种其他修改可以在研究本公开时被本领域普通技术人员想到。在诸如这一点的技术的领域中,其中增长快速并且另外的进步并不容易预见,所公开的实施例可以在不背离本公开的原理和所附权利要求的范围的情况下在通过实现技术进步而被促进时可在布置和细节方面容易修改。

Claims (27)

1.一种处理器,包括:
L2高速缓存;
第一执行单元集群;
第二执行单元集群;
通信地耦合到第一执行单元集群并且耦合到L2高速缓存的第一数据高速缓存单元DCU;以及
通信地耦合到第二执行单元集群并且耦合到L2高速缓存的第二DCU;
其中:
第一DCU和第二DCU均包括:
数据高速缓存;
第一逻辑,用于从执行单元接收存储器操作;
第二逻辑,用于当信息在数据高速缓存中可用时,用来自数据高速缓存的信息对存储器操作进行响应;以及
第三逻辑,用于当信息在数据高速缓存中不可用时,从L2高速缓存取回信息;并且
所述处理器进一步包括第四逻辑,用于在处理器的操作的所有时钟周期,将第一DCU的数据高速缓存的内容维持为等于第二DCU的数据高速缓存的内容。
2.根据权利要求1所述的处理器,其中:
第一DCU和第二DCU均进一步包括回写缓冲器;并且
所述处理器进一步包括:
第五逻辑,用于在所述处理器的操作的相同时钟周期中执行第一DCU的回写缓冲器中的第一条目的分配和第二DCU的回写缓冲器中的第二条目的分配,第一条目和第二条目彼此相同;以及
第六逻辑,用于在所述处理器的操作的相同时钟周期中执行第一DCU的回写缓冲器中的第三条目的解分配和第二DCU的回写缓冲器中的第四条目的分配,第三条目和第四条目彼此相同。
3.根据权利要求1所述的处理器,其中:
所述处理器进一步包括一个或多个集群接口,所述一个或多个集群接口被通信地耦合在第一DCU和第一执行单元集群之间以及在第二DCU和第二执行单元集群之间;
所述一个或多个集群接口包括:
第五逻辑,用于从第一执行单元集群和第二执行单元集群的组合收集存储操作;以及
第六逻辑,用于向第一DCU和向第二DCU发出存储操作。
4.根据权利要求1所述的处理器,其中,第一DCU和第二DCU均进一步包括:
第五逻辑,用于同步处理从数据高速缓存的逐出;以及
第六逻辑,用于同步处理向数据高速缓存的填充。
5.根据权利要求1所述的处理器,其中:
所述处理器进一步包括集群接口,所述集群接口被通信地耦合在第一DCU和第一执行单元集群之间,所述集群接口包括:
第五逻辑,用于从第一执行单元集群收集加载操作;以及
第六逻辑,用于向第一DCU发出加载操作;并且
第一DCU和第二DCU均进一步包括填充缓存器;
第一DCU和第二DCU与总线通信地耦合;并且
第一DCU进一步包括:
第七逻辑,用于标识数据高速缓存上的加载操作的未命中;
第八逻辑,用于基于所述未命中来将加载操作写入到填充缓冲器;以及
第九逻辑,用于通过总线向第二DCU发出加载操作。
6.根据权利要求1所述的处理器,其中:
第一DCU和第二DCU均进一步包括监听缓冲器;并且
所述处理器进一步包括第五逻辑,用于在所述处理器的操作的所有时钟周期,将第一DCU的监听缓冲器的内容维持为等于第二DCU的监听缓冲器的内容。
7.根据权利要求1所述的处理器,其中:
所述处理器进一步包括一个或多个高速缓存接口,所述一个或多个高速缓存接口通信地耦合在第一DCU和L2高速缓存之间并且在第二DCU和L2高速缓存之间;并且
所述一个或多个高速缓存接口包括第五逻辑,用于从L2高速缓存向第一DCU和向第二DCU同时发出监听请求。
8.一种在处理器内执行的方法,包括:
在第一数据高速缓存单元DCU处从第一执行单元集群接收存储器操作;
在第二DCU处从第二执行单元集群接收存储器操作;
当信息在第一数据高速缓存中可用时,用来自第一DCU中的第一数据高速缓存的信息来对在第一DCU处接收的存储器操作进行响应;
当信息在第二数据高速缓存中可用时,用来自第二DCU中的第二数据高速缓存的信息来对在第二DCU处接收的存储器操作进行响应;
当信息在第一数据高速缓存和第二数据高速缓存中不可用时,从通信地耦合到第一DCU和第二DCU的L2高速缓存取回信息;以及
在处理器的操作的所有时钟周期,将第一DCU的数据高速缓存的内容维持为等于第二DCU的数据高速缓存的内容。
9.根据权利要求8所述的方法,进一步包括:
在所述处理器的操作的相同时钟周期中执行第一DCU的回写缓冲器中的第一条目的分配和第二DCU的回写缓冲器中的第二条目的分配,第一条目和第二条目彼此相同;以及
在所述处理器的操作的相同时钟周期中执行第一DCU的回写缓冲器中的第三条目的解分配和第二DCU的回写缓冲器中的第四条目的分配,第三条目和第四条目彼此相同。
10.根据权利要求8所述的方法,进一步包括:
从第一执行单元集群和第二执行单元集群的组合收集存储操作;以及
向第一DCU并且向第二DCU发出存储操作。
11.根据权利要求8所述的方法,进一步包括:
同步处理从第一数据高速缓存和第二数据高速缓存的相同的逐出;以及
同步处理向第一数据高速缓存和第二数据高速缓存的相同的填充。
12.根据权利要求8所述的方法,进一步包括:
从第一执行单元集群收集加载操作;
向第一DCU发出加载操作;
标识第一数据高速缓存上的加载操作的未命中;
基于所述未命中来将加载操作写入到第一DCU中的第一填充缓冲器;以及
通过总线从第一填充缓冲器向第二DCU的第二填充缓冲器发出加载操作。
13.根据权利要求8所述的方法,进一步包括:在所述处理器的操作的所有时钟周期,将第一DCU的第一监听缓冲器的内容维持为等于第二DCU的第二监听缓冲器的内容。
14.一种计算机系统,包括:
指令流;
处理器,所述处理器通信地耦合到所述指令流,并且包括:
第一逻辑,用于执行所述指令流;
L2高速缓存;
第一执行单元集群;
第二执行单元集群;
通信地耦合到第一执行单元集群并且耦合到L2高速缓存的第一数据高速缓存单元DCU;以及
通信地耦合到第二执行单元集群并且耦合到L2高速缓存的第二DCU;
其中:
第一DCU和第二DCU均包括:
数据高速缓存;
第二逻辑,用于从执行单元接收存储器操作;
第三逻辑,用于当信息在数据高速缓存中可用时,用来自数据高速缓存的信息对存储器操作进行响应;以及
第四逻辑,用于当信息在数据高速缓存中不可用时,从L2高速缓存取回信息;并且
所述处理器进一步包括第五逻辑,用于在所述处理器的操作的所有时钟周期,将第一DCU的数据高速缓存的内容维持为等于第二DCU的数据高速缓存的内容。
15.根据权利要求14所述的计算机系统,其中:
第一DCU和第二DCU均进一步包括回写缓冲器;并且
所述处理器进一步包括:
第六逻辑,用于在所述处理器的操作的相同时钟周期中执行第一DCU的回写缓冲器中的第一条目的分配和第二DCU的回写缓冲器中的第二条目的分配,第一条目和第二条目彼此相同;以及
第七逻辑,用于在所述处理器的操作的相同时钟周期中执行第一DCU的回写缓冲器中的第三条目的解分配和第二DCU的回写缓冲器中的第四条目的分配,第三条目和第四条目彼此相同。
16.根据权利要求14所述的计算机系统,其中:
所述处理器进一步包括一个或多个集群接口,所述一个或多个集群接口被通信地耦合在第一DCU和第一执行单元集群之间以及在第二DCU和第二执行单元集群之间;
所述一个或多个集群接口包括:
第六逻辑,用于从第一执行单元集群和第二执行单元集群的组合收集存储操作;以及
第七逻辑,用于向第一DCU和向第二DCU发出存储操作。
17.根据权利要求14所述的计算机系统,其中,第一DCU和第二DCU均进一步包括:
第六逻辑,用于同步处理从数据高速缓存的逐出;以及
第七逻辑,用于同步处理向数据高速缓存的填充。
18.根据权利要求14所述的计算机系统,其中:
所述处理器进一步包括集群接口,所述集群接口被通信地耦合在第一DCU和第一执行单元集群之间,所述集群接口包括:
第六逻辑,用于从第一执行单元集群收集加载操作;以及
第七逻辑,用于向第一DCU发出加载操作;
第一DCU和第二DCU均进一步包括填充缓存器;
第一DCU和第二DCU与总线通信地耦合;并且
第一DCU进一步包括:
第八逻辑,用于标识数据高速缓存上的加载操作的未命中;
第九逻辑,用于基于所述未命中来将加载操作写入到填充缓冲器;以及
第十逻辑,用于通过总线向第二DCU发出加载操作。
19.根据权利要求14所述的计算机系统,其中:
第一DCU和第二DCU均进一步包括监听缓冲器;并且
所述处理器进一步包括第六逻辑,用于在所述处理器的操作的所有时钟周期,将第一DCU的监听缓冲器的内容维持为等于第二DCU的监听缓冲器的内容。
20.根据权利要求14所述的计算机系统,其中:
所述处理器进一步包括一个或多个高速缓存接口,所述一个或多个高速缓存接口通信地耦合在第一DCU和L2高速缓存之间并且在第二DCU和L2高速缓存之间;并且
所述一个或多个高速缓存接口包括第六逻辑,用于从L2高速缓存向第一DCU和向第二DCU同时发出监听请求。
21.一种要在处理器内使用的装置,包括:
用于在第一数据高速缓存单元DCU处从第一执行单元集群接收存储器操作的部件;
用于在第二DCU处从第二执行单元集群接收存储器操作的部件;
用于当信息在第一数据高速缓存中可用时用来自第一DCU中的第一数据高速缓存的信息来对在第一DCU处接收的存储器操作进行响应的部件;
用于当信息在第二数据高速缓存中可用时用来自第二DCU中的第二数据高速缓存的信息来对在第二DCU处接收的存储器操作进行响应的部件;
用于当信息在第一数据高速缓存和第二数据高速缓存中不可用时从通信地耦合到第一DCU和第二DCU的L2高速缓存取回信息的部件;以及
用于在处理器的操作的所有时钟周期将第一DCU的数据高速缓存的内容维持为等于第二DCU的数据高速缓存的内容的部件。
22.根据权利要求21所述的装置,进一步包括:
用于在所述处理器的操作的相同时钟周期中执行第一DCU的回写缓冲器中的第一条目的分配和第二DCU的回写缓冲器中的第二条目的分配的部件,第一条目和第二条目彼此相同;以及
用于在所述处理器的操作的相同时钟周期中执行第一DCU的回写缓冲器中的第三条目的解分配和第二DCU的回写缓冲器中的第四条目的分配的部件,第三条目和第四条目彼此相同。
23.根据权利要求21所述的装置,进一步包括:
用于从第一执行单元集群和第二执行单元集群的组合收集存储操作的部件;以及
用于向第一DCU并且向第二DCU发出存储操作的部件。
24.根据权利要求21所述的装置,进一步包括:
用于同步处理从第一数据高速缓存和第二数据高速缓存的相同的逐出的部件;以及
用于同步处理向第一数据高速缓存和第二数据高速缓存的相同的填充的部件。
25.根据权利要求21所述的装置,进一步包括:
用于从第一执行单元集群收集加载操作的部件;
用于向第一DCU发出加载操作的部件;
用于标识第一数据高速缓存上的加载操作的未命中的部件;
用于基于所述未命中来将加载操作写入到第一DCU中的第一填充缓冲器的部件;以及
用于通过总线从第一填充缓冲器向第二DCU的第二填充缓冲器发出加载操作的部件。
26.根据权利要求21所述的装置,进一步包括:用于在所述处理器的操作的所有时钟周期将第一DCU的第一监听缓冲器的内容维持为等于第二DCU的第二监听缓冲器的内容的部件。
27.一种计算机可读介质,其上存储有指令,所述指令在执行时使得计算机执行权利要求8-13中的任一项所述的方法。
CN201380081122.1A 2013-12-23 2013-12-23 用于在集群宽执行机器中的存储器访问的指令和逻辑 Expired - Fee Related CN105745630B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IB2013/003071 WO2015097493A1 (en) 2013-12-23 2013-12-23 Instruction and logic for memory access in a clustered wide-execution machine

Publications (2)

Publication Number Publication Date
CN105745630A CN105745630A (zh) 2016-07-06
CN105745630B true CN105745630B (zh) 2019-08-20

Family

ID=50389463

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380081122.1A Expired - Fee Related CN105745630B (zh) 2013-12-23 2013-12-23 用于在集群宽执行机器中的存储器访问的指令和逻辑

Country Status (8)

Country Link
US (1) US20160306742A1 (zh)
EP (1) EP3087490A1 (zh)
JP (1) JP6351722B2 (zh)
KR (1) KR101941874B1 (zh)
CN (1) CN105745630B (zh)
DE (1) DE112013007702T5 (zh)
RU (1) RU2662394C2 (zh)
WO (1) WO2015097493A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9418018B2 (en) * 2013-12-31 2016-08-16 Samsung Electronics Co., Ltd. Efficient fill-buffer data forwarding supporting high frequencies
US20160212198A1 (en) * 2015-01-16 2016-07-21 Netapp, Inc. System of host caches managed in a unified manner
US20170371654A1 (en) * 2016-06-23 2017-12-28 Advanced Micro Devices, Inc. System and method for using virtual vector register files
CN107870871B (zh) * 2016-09-23 2021-08-20 华为技术有限公司 分配缓存的方法和装置
US10162756B2 (en) * 2017-01-18 2018-12-25 Intel Corporation Memory-efficient last level cache architecture
US10552153B2 (en) * 2017-03-31 2020-02-04 Intel Corporation Efficient range-based memory writeback to improve host to device communication for optimal power and performance
DE102017208838A1 (de) * 2017-05-24 2018-11-29 Wago Verwaltungsgesellschaft Mbh Vorladen von Instruktionen
US11210100B2 (en) 2019-01-08 2021-12-28 Apple Inc. Coprocessor operation bundling
US11126537B2 (en) * 2019-05-02 2021-09-21 Microsoft Technology Licensing, Llc Coprocessor-based logging for time travel debugging
CN110232030B (zh) * 2019-06-12 2021-08-10 上海兆芯集成电路有限公司 多芯片系统及缓存处理方法
US20240086327A1 (en) * 2022-09-12 2024-03-14 Google Llc Pseudo Lock-Step Execution Across CPU Cores

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1329302A (zh) * 2000-05-31 2002-01-02 德克萨斯仪器股份有限公司 流水线微处理器的循环高速缓冲存储器及高速缓存控制器
US7406566B2 (en) * 2005-06-03 2008-07-29 Intel Corporation Ring interconnect with multiple coherence networks

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5526510A (en) * 1994-02-28 1996-06-11 Intel Corporation Method and apparatus for implementing a single clock cycle line replacement in a data cache unit
US5860110A (en) * 1995-08-22 1999-01-12 Canon Kabushiki Kaisha Conference maintenance method for cache memories in multi-processor system triggered by a predetermined synchronization point and a predetermined condition
US6571324B1 (en) * 1997-06-26 2003-05-27 Hewlett-Packard Development Company, L.P. Warmswap of failed memory modules and data reconstruction in a mirrored writeback cache system
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US7594080B2 (en) * 2003-09-12 2009-09-22 International Business Machines Corporation Temporary storage of memory line while waiting for cache eviction
JP4803983B2 (ja) * 2004-09-14 2011-10-26 パナソニック株式会社 演算処理装置
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US20100274972A1 (en) * 2008-11-24 2010-10-28 Boris Babayan Systems, methods, and apparatuses for parallel computing
US9639479B2 (en) * 2009-09-23 2017-05-02 Nvidia Corporation Instructions for managing a parallel cache hierarchy
GB2508312B (en) * 2011-09-26 2020-04-22 Intel Corp Instruction and logic to provide vector load-op/store-op with stride functionality
CN104137060B (zh) * 2011-12-30 2018-03-06 英特尔公司 高速缓存协处理单元
US9213641B2 (en) * 2012-06-14 2015-12-15 International Business Machines Corporation Cache line history tracking using an instruction address register file
US9658671B2 (en) 2015-09-28 2017-05-23 Qualcomm Incorporated Power-aware CPU power grid design

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1329302A (zh) * 2000-05-31 2002-01-02 德克萨斯仪器股份有限公司 流水线微处理器的循环高速缓冲存储器及高速缓存控制器
US7406566B2 (en) * 2005-06-03 2008-07-29 Intel Corporation Ring interconnect with multiple coherence networks

Also Published As

Publication number Publication date
KR20160074622A (ko) 2016-06-28
CN105745630A (zh) 2016-07-06
EP3087490A1 (en) 2016-11-02
RU2016119814A (ru) 2017-11-28
KR101941874B1 (ko) 2019-01-25
JP2016541061A (ja) 2016-12-28
JP6351722B2 (ja) 2018-07-04
WO2015097493A1 (en) 2015-07-02
DE112013007702T5 (de) 2016-09-08
US20160306742A1 (en) 2016-10-20
RU2662394C2 (ru) 2018-07-25

Similar Documents

Publication Publication Date Title
CN105745630B (zh) 用于在集群宽执行机器中的存储器访问的指令和逻辑
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
CN104204990B (zh) 在使用共享虚拟存储器的处理器中加速操作的装置和方法
CN108369509B (zh) 用于基于通道的跨步分散操作的指令和逻辑
CN108369516B (zh) 用于加载-索引和预取-分散操作的指令和逻辑
CN108139905A (zh) 用于从持久存储器预取信息的指令和逻辑
CN106030518B (zh) 用于整理和退出存储的处理器、方法、系统和装置
CN108351863A (zh) 用于可编程结构层级结构和高速缓存的指令和逻辑
CN108351779A (zh) 用于安全指令执行流水线的指令和逻辑
CN108369511A (zh) 用于基于通道的跨步存储操作的指令和逻辑
CN107003921A (zh) 具有有限状态机控制的可重配置测试访问端口
CN108351835A (zh) 用于高速缓存控制操作的指令和逻辑
CN109564552A (zh) 增强基于每页当前特权等级的存储器访问许可
CN108369513A (zh) 用于加载-索引-和-收集操作的指令和逻辑
CN108292232A (zh) 用于加载索引和分散操作的指令和逻辑
CN108351784A (zh) 用于在乱序处理器中进行有序处理的指令和逻辑
TW201723817A (zh) 用於取得多重向量元素操作之指令及邏輯
CN108351785A (zh) 用于部分减少操作的指令和逻辑
CN107003839A (zh) 用于移位和乘法器的指令和逻辑
CN108369573A (zh) 用于设置多个向量元素的操作的指令和逻辑
CN108369518A (zh) 用于位字段寻址和插入的指令和逻辑
CN108369571A (zh) 用于偶数和奇数向量get操作的指令和逻辑
CN108431770A (zh) 用于加速集合运算的硬件内容关联数据结构
CN107077421A (zh) 用于页表游走改变位的指令和逻辑
CN106575219A (zh) 针对用于处理运算的向量格式的指令和逻辑技术领域

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190820

Termination date: 20191223

CF01 Termination of patent right due to non-payment of annual fee