用于响应于单个指令来执行循环和异或的系统、装置和方法与流程

文档序号:15492051发布日期:2018-09-21 20:48阅读:154来源:国知局

本发明的领域一般涉及计算机处理器架构,更具体地涉及在执行时导致特定结果的指令。

背景

blake安全散列算法是将成为新的nistsha-3标准的五个算法之一。blake是四个散列函数的家族:blake-224、blake-256、blake-384以及blake-512。blake-256和blake-224是基于32位字的,而blake-512和blake-384是基于64位字的。blake-256是具有32位字、14轮以及256位输出的blake,而blake-512是具有64位字、16轮以及512位输出的blake。

blake的压缩函数是基于32位或64位字的4×4矩阵所表示的状态。blake的轮由如下操作组成:执行状态矩阵的独立的列更新,然后执行状态矩阵的对角元素的独立更新。对于每一次列和对角更新,将两个消息字和两个预定常数输入该状态。

以矩阵形式将16字状态v0到v15表示为:

|v0v1v2v3|

|v4v5v6v7|

|v8v9v10v11|

|v12v13v14v15|

blake的轮是使用如下函数对该v0至v15状态矩阵的变换:

使用g(a,b,c,d),以首先更新状态矩阵的多个列g0(v0,v4,v8,v12)g1(v1,v5,v9,v13)g2(v2,v6,vlo,v14)g3(v3,v7,v11,v15),然后更新状态矩阵的对角线g4(v0,v5,vlo,v15)g5(v1,v6,v11,v12)g6(v2,v7,v8,v13)g7(v3,v4,v9,v14)。这在图1中示出。

g函数由8个相关步骤组成:

a=a+b+(m_r(2i)^c_r(2i+1))

d=(d^a)>>>16

c=c+d

b=(b^c)>>>12

a=a+b+(m_r(2i+1)^c_r(2i))

d=(d^a)>>>8

c=c+d

b=(b^c)>>>7

其中m_r(2i)和m_r(2i+1)是每轮16个消息字输入中的两个消息字输入,而c_r(2i)和c_r(2i+1)是16个常数中的两个常数。

列更新函数g0、g1、g2、g3是独立的,并且能并行地执行。在完成列更新之后,执行对角更新函数g4、g5、g6、g7。g4、g5、g6、g7也是完全独立的,并且能并行地被执行。

g函数需要6次异或(xor)、6次加法以及4次循环(rotate),如图2中所示。因此,由8个g函数组成的轮需要48次异或、48次加法以及32次循环,即每轮共需要128个操作。需要附加的28次异或,以用于初始化和终结。作为示例,blake-512需要16轮以及16*128=2048+28=2076个操作。

skein算法是nistsha3安全散列标准中的五个余下的算法中的另一个算法。skein由3个主函数混合(mix)、置换(permute)以及子密钥加法(sub-keyaddition)构成。混合函数仅对一对64位字使用三个数学操作,即异或(xor)、循环(rotate)和进位-传递加法。在图3中示出了示例性的混合函数。

每个混合函数将两个64位输入相加以产生结果的第一64位,并将该加法结果与第二输入的循环版本进行异或以产生结果的第二64位。混合函数是128位宽,从而对于skein-256而言每轮需要两个混合函数,对于skein-512而言每轮需要四个混合函数,以及对于skein-1024而言每轮需要八个混合函数。

skein算法的轮是256位、512位或1024位上的混合函数,然后是64位字的置换(permute)。在第一轮之前以及在每四轮之后,存在72轮的混合/置换(mix/permute)以及子密钥加法。具有4轮的skein-256的图4是来自skein散列函数族文档。

附图简述

本发明是通过示例说明的,而不仅局限于各个附图的图示,在附图中,类似的参考标号表示类似的元件,其中:

图1示出blake安全散列算法的部分。

图2示出blake安全散列算法的部分。

图3示出skein安全散列算法的部分。

图4示出skein安全散列算法的部分。

图5示出示例性循环(rotate)和异或(xor)指令的操作的示例性示图。

图6示出示例性循环(rotate)和异或(xor)指令的操作的另一示例性示图。

图7(a)-(c)示出处理器中的循环(rotate)和异或(xor)指令的执行的若干不同实施例。

图8(a)-(c)示出用于处理循环(rotate)和异或(xor)指令的方法的实施例。

图9示出用于循环(rotate)和异或(xor)指令的伪代码的实施例。

图10是根据本发明的一个实施例的寄存器架构1000的框图。

图11a是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。

图11b是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。

图12a-b示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其它核)。

图13是根据本发明的各实施例可能具有一个以上核、可能具有集成存储器控制器、以及可能具有集成图形器件的处理器1300的框图。

图14-17是示例性计算机架构的框图。

图18是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。

详细描述

在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细节来实施本发明的实施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模糊对本描述的理解。

说明书中对“一个实施例”、“实施例”、“示例实施例”等等的引用表示所描述的实施例可包括特定特征、结构或特性,但是,每一个实施例可以不一定包括该特定特征、结构,或特性。此外,这些短语不一定表示同一实施例。此外,当结合实施例描述特定的特征、结构或特性时,认为本领域普通技术人员能够知晓结合其它实施例来实现这种特征、结构或特性,无论是否明确描述。

诸如sha1/2之类的现有的密码散列算法也使用循环(rotate)和异或(xor)操作以及blake和skein散列算法,并且将受益于专用的循环和异或指令。将异或和循环操作组合的整数指令会将g函数中的操作数量减少4(从16减少到12),或者说节省25%。考虑在这些类型的散列函数中将操作串行化,则由于异或-循环操作在数据处理的关键路径上,性能增益会更大。利用整数ia指令来处理skein-512的4轮需要16次加法、16次循环、16次异或以及12次子密钥加法(每4轮需要4次加法以得出子密钥以及8次加法以更新状态),共60个指令。将循环和异或操作组合的指令将会将该总数减少至44,或节省36%。

图5示出示例性的循环和异或指令的操作的示例性示图。在该示图中,存在两个8位源寄存器(src1501和src2503)。为了容易理解,将这些寄存器的内容示为src1501中的十六进制值xab和src2503中的xb0。如将在下文中详细讨论,本发明的实施例不限于8位源,并且他们可与任何源尺寸一起使用(包括但不限于8位、16位、32位、64位、128位等等)。

在该示例中,利用异或逻辑505对两个源501、503进行异或(xor)操作。然后通过循环逻辑507将该异或的结果循环一定数量的位置。在所示实施例中,该循环是向左循环一定数量的位位置;然而在其它实施例中,该循环可以是向右循环一定数量的位位置。要循环的位位置的数量由循环和异或指令的立即数中的多个位决定。在本示例中,该立即数的六个最低有效位用于确定要循环的位的数量,并且那些位的值为1。如此,来自异或的x1b值向左循环1位,从而得出新的值x37,该新值被存储在目的地509中。此外,在一些实施例中,循环(rotation)是当异或的位被移出时引入定值的移位(例如,所有0或1被移入)。该指令的执行在blake安全散列算法中尤其有用。

图6示出示例性的循环和异或指令的操作的另一示例性示图。该示例与之前的示例不同,不同之处在于:循环出现在任何异或操作之前。在该示图中,存在两个8位源寄存器(src1601和src2603)。为了容易理解,将这些寄存器的内容示为src1601中的十六进制值xab和src2603中的xb0。如将在下文中详细讨论,本发明的实施例不限于8位源,并且他们可与任何源尺寸一起使用(包括但不限于8位、16位、32位、64位、128位等等)。

在本示例中,通过循环逻辑605将第一源601向左循环一定数量的位位置,该一定数量的位位置是从该指令的立即数中确定的。类似于前一示例,在其它实施例中,该循环可以是向右循环一定数量的位位置。在本示例中,该立即数的六个最低有效位用于确定要循环的位的数量,并且那些位的值为1。如此,来自第一源601的xab值被向左循环1位,从而得出新的值x57。此外,在一些实施例中,循环(rotation)是当异或的位被移出时引入定值的移位(例如,所有0或1被移入)。

然后利用异或逻辑607将循环的结果与来自第二源603的数据进行异或。相应地,将x57与xb0进行异或,从而得出xe7的结果并将其存储在目的地609中。该指令的执行尤其可用作skein散列算法的部分。

示例性格式

该指令的示例性格式是”rotateandxordest,src1,src2,imm",其中操作数dest是目的地寄存器(诸如8位、16位、32位、64位等等寄存器)或存储器位置,src1和src2是源,这些源可以是与目的地相同尺寸的寄存器、存储器位置或二者的组合。imm是该指令的立即数值,而且可以是任何数量的位,然而在一个实施例中,imm是8位值。rotateandxor是该指令的操作码。

示例性的执行方法

图7(a)-(c)示出处理器中的循环和异或(rotateandxor)指令的执行的若干不同实施例。

在图7(a)中,在701获取循环和异或指令,该指令具有两个源操作数(寄存器、存储器位置或二者兼有)、目的地操作数(寄存器或存储器位置)、操作码以及立即数。

在703,通过解码逻辑解码该循环和异或指令。依赖于该指令的格式,可在该阶段解释多种数据,诸如要写入和检索哪些寄存器、要访问什么存储器地址、等等。

在705,检索/读取源操作数的值。例如,读取源寄存器。如果源操作数之一是存储器操作数,则检索与该操作数相关联的数据。

在707,通过诸如一个或多个功能单元之类的执行资源来执行该循环和异或指令(或包括这样的指令的操作,诸如微操作),以执行该循环和异或指令来执行以下两个模式之一:第一模式,将第一和第二源操作数的值进行异或以产生经过异或的值,然后循环经过异或的该值(诸如图5中所示);或第二模式,循环第一源操作数的值,然后将经循环的该值与第二操作数的值进行异或(诸如图6中所示)。如上所述,取决于实现方式,该循环可以是向左或向右。

要循环的位位置的数量由该立即数的一个或多个值确定。在一些实施例中,该立即数的较低六个位被用于作出该确定。在这些实施例中,这些位的十进制值是要循环的位位置的数量。

附加地,要使用哪个模式的决定由该立即数值的一个或多个位来设定。在一些实施例中,将该立即数的最高有效位用于该目的。例如,如果该值为1,则选择第一模式,而如果该值为0,则选择第二模式。当然,可使用相反的约定。

在709,在与目的地操作数相关联的位置中存储(任一模式的)异或和循环的结果。虽然分别示出了707和709,但在一些实施例中,它们作为指令执行的一部分一起执行。

在图7(b)中,在711获取循环和异或指令,该指令具有两个源操作数(寄存器、存储器位置或二者兼有)、目的地操作数(寄存器或存储器位置)、操作码以及立即数。

在713,通过解码逻辑解码该循环和异或指令。取决于该指令的格式,可在该阶段解释多种数据,诸如要写入和检索哪些寄存器、要访问什么存储器地址、等等。

在715,检索/读取源操作数的值。例如,读取源寄存器。如果源操作数之一是存储器操作数,则检索与该操作数相关联的数据。

在717,通过诸如一个或多个功能单元之类的执行资源来执行该循环和异或指令(或包括这样的指令的操作,诸如微操作),以执行该循环和异或指令以对第一和第二源操作数的值进行异或,以生成经异或的值并循环经过异或的该值(诸如图5中所示)。如上所述,取决于实现方式,该循环可以是向左或向右。

要循环的位位置的数量由该立即数的一个或多个值确定。在一些实施例中,该立即数的较低六个位被用于作出该确定。在这些实施例中,这些位的十进制值是要循环的位位置的数量。

在719,在与目的地操作数相关联的位置中存储该异或和循环的结果。虽然分别示出了717和719,但在一些实施例中,它们作为指令执行的一部分一起执行。

在图7(c)中,在721获取循环和异或指令,该指令具有两个源操作数(寄存器、存储器位置或二者兼有)、目的地操作数(寄存器或存储器位置)、操作码以及立即数。

在723,通过解码逻辑解码该循环和异或指令。取决于该指令的格式,可在该阶段解释多种数据,诸如要写入和检索哪些寄存器、要访问什么存储器地址、等等。

在725,检索/读取源操作数的值。例如,读取源寄存器。如果源操作数之一是存储器操作数,则检索与该操作数相关联的数据。

在727,通过诸如一个或多个功能单元之类的执行资源来执行该循环和异或指令(或包括这样的指令的操作,诸如微操作),以执行该循环和异或指令以对第一源操作数的值进行循环,然后将经过循环的该值与第二操作数的值进行异或(诸如图6中所示)。如上所述,取决于实现方式,该循环可以是向左或向右。

要循环的位位置的数量由该立即数的一个或多个值确定。在一些实施例中,该立即数的较低六个位被用于作出该确定。在这些实施例中,这些位的十进制值是要循环的位位置的数量。

在729,在与目的地操作数相关联的位置中存储该异或和循环的结果。虽然分别示出了727和729,但在一些实施例中,它们作为指令执行的一部分一起执行。

图8(a)-(c)示出用于处理循环(rotate)和异或(xor)指令的方法的实施例。在这些实施例中,假定先前已经执行了获取、解码以及检索步骤的操作中的一些(若不是全部),然而未示出那些操作,以免模糊下文呈现的细节。

在图8(a)中,在801,确定该循环和异或指令的立即数指示应当执行异或/循环还是循环/异或操作。在一些实施例中,该立即数的最高有效位用于确定该模式。

如果指示了异或/循环模式,则在803对来自第一和第二源的数据进行异或,以生成中间结果。在805,将该中间结果循环x个位位置。如之前所详述,位位置的数量x由该立即数的一个或多个位确定。例如,六个最低有效位的十进制值可给出数量x。

在811,将异或和循环操作的结果存储在由目的地操作数所指示的目的地位置中。

如果指示了循环/异或模式,则在807将第一源的数据循环x个位位置。如之前所详述,位位置的数量x由该立即数的一个或多个位确定。例如,六个最低有效位的十进制值可给出数量x。

在809,将经循环的该值与第二源的数据进行异或。

在811,将异或和循环操作的结果存储在由目的地操作数所指示的目的地位置中。

在图8(b)中,在813,对来自第一和第二源的数据进行异或,以生成中间结果。在815,将该中间结果存储在x位位置中。如之前所详述,位位置的数量x由该立即数的一个或多个位确定。例如,六个最低有效位的十进制值可给出数量x。

在816,将异或和循环操作的结果存储在由目的地操作数所指示的目的地位置中。

在图8(c)中,在817,将第一源的数据循环x个位位置。如之前所详述,位位置的数量x由该立即数的一个或多个位确定。例如,六个最低有效位的十进制值可给出数量x。

在819,将经循环的该值与第二源的数据进行异或。

在820,将异或和循环操作的结果存储在由目的地操作数所指示的目的地位置中。

图9示出用于循环(rotate)和异或(xor)指令的伪代码的实施例。

示例性寄存器架构

图10是根据本发明的一个实施例的寄存器架构1000的框图。在所示出的实施例中,有32个512位宽的向量寄存器1010;这些寄存器被引用为zmm0到zmm31。较低的16zmm寄存器的较低阶256个位覆盖在寄存器ymm0-16上。较低的16zmm寄存器的较低阶128个位(ymm寄存器的较低阶128个位)覆盖在寄存器xmm0-15上。

通用寄存器1025——在所示出的实施例中,有十六个64位通用寄存器,这些寄存器与现有的x86寻址模式一起使用来寻址存储器操作数。这些寄存器通过名称rax、rbx、rcx、rdx、rbp、rsi、rdi、rsp以及r8到r15来引用。

标量浮点堆栈寄存器组(x87堆栈)1045,在其上面重叠了mmx紧缩整数平坦寄存器组1050——在所示出的实施例中,x87堆栈是用于使用x87指令集扩展来对32/64/80位浮点数据执行标量浮点运算的八元素堆栈;而使用mmx寄存器来对64位紧缩整数数据执行操作,以及为在mmx和xmm寄存器之间执行的一些操作保存操作数。

本发明的替代实施例可以使用较宽的或较窄的寄存器。另外,本发明的替代实施例可以使用更多、更少或不同的寄存器组和寄存器。

示例性核架构、处理器和计算机架构

处理器核可以用出于不同目的的不同方式在不同的处理器中实现。例如,这样的核的实现可以包括:1)旨在用于通用计算的通用有序核;2)预期用于通用计算的高性能通用无序核;3)旨在主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现可包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用无序核的cpu;以及2)包括旨在主要用于图形和/或科学(吞吐量)的一个或多个专用核的协处理器。这样的不同处理器导致不同的计算机系统架构,其可包括:1)在与cpu分开的芯片上的协处理器;2)在与cpu相同的封装中但分开的管芯上的协处理器;3)与cpu在相同管芯上的协处理器(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核);以及4)可以将所描述的cpu(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上的芯片上系统。接着描述示例性核架构,随后描述示例性处理器和计算机架构。

示例性核架构

有序和无序核框图

图11a是示出根据本发明的各实施例的示例性有序流水线和示例性的寄存器重命名的无序发布/执行流水线的框图。图11b是示出根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的无序发布/执行架构核的框图。图11a-b中的实线框示出了有序流水线和有序核,而可选增加的虚线框示出了寄存器重命名的、无序发布/执行流水线和核。给定有序方面是无序方面的子集的情况下,将描述无序方面。

在图11a中,处理器流水线1100包括取出级1102、长度解码级1104、解码级1106、分配级1108、重命名级1110、调度(也称为分派或发布)级1112、寄存器读取/存储器读取级1114、执行级1116、写回/存储器写入级1118、异常处理级1122和提交级1124。

图11b示出了包括耦合到执行引擎单元1150的前端单元1130的处理器核1190,且执行引擎单元和前端单元两者都耦合到存储器单元1170。核1190可以是精简指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vliw)核或混合或替代核类型。作为又一选项,核1190可以是专用核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(gpgpu)核、或图形核等等。

前端单元1130包括耦合到指令高速缓存单元1134的分支预测单元1132,该指令高速缓存单元耦合到指令转换后备缓冲器(tlb)1136,该指令转换后备缓冲器耦合到指令取出单元1138,指令取出单元耦合到解码单元1140。解码单元1140(或解码器)可解码指令,并生成从原始指令解码出的、或以其它方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其它指令、或其它控制信号作为输出。解码单元1140可使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)等。在一个实施例中,核1190包括(例如,在解码单元1140中或否则在前端单元1130内的)用于存储某些宏指令的微代码的微代码rom或其它介质。解码单元1140耦合至执行引擎单元1150中的重命名/分配器单元1152。

执行引擎单元1150包括重命名/分配器单元1152,该重命名/分配器单元耦合至引退单元1154和一个或多个调度器单元1156的集合。调度器单元1156表示任何数目的不同调度器,包括预留站、中央指令窗等。调度器单元1156耦合到物理寄存器组单元1158。每个物理寄存器组单元1158表示一个或多个物理寄存器组,其中不同的物理寄存器组存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器组单元1158包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器组单元1158被引退单元1154所覆盖,以示出可实现寄存器重命名和无序执行的多种方式(诸如,使用重排序缓冲器和引退寄存器组、使用未来文件(futurefile)、历史缓冲器、引退寄存器组、使用寄存器映射和寄存器池等等)。引退单元1154和物理寄存器组单元1158耦合到执行群集1160。执行群集1160包括一个或多个执行单元1162的集合和一个或多个存储器访问单元1164的集合。执行单元1162可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其它实施例可包括全部执行所有功能的仅一个执行单元或多个执行单元。调度器单元1156、物理寄存器组单元1158、执行群集1160被示出为可能是复数个,因为某些实施例为某些数据/操作类型创建了诸个单独流水线(例如,均具有各自调度器单元、物理寄存器组单元和/或执行群集的标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,以及在单独的存储器访问流水线的情况下特定实施例被实现为仅仅该流水线的执行群集具有存储器访问单元1164)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为无序发布/执行,并且其余流水线可以为有序发布/执行。

存储器访问单元1164的集合耦合至存储器单元1170,该存储器单元包括数据tlb单元1172,该数据tlb单元耦合至高速缓存单元1174,该高速缓存单元耦合至第二级(l2)高速缓存单元1176。在一个示例性实施例中,存储器访问单元1164可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元1170中的数据tlb单元1172。指令高速缓存单元1134还耦合到存储器单元1170中的第二级(l2)高速缓存单元1176。l2高速缓存单元1176耦合到一个或多个其它级的高速缓存,并最终耦合到主存储器。

作为示例,示例性寄存器重命名的、无序发布/执行核架构可以如下实现流水线1100:1)指令取出器1138执行取出和长度解码级1102和1104;2)解码单元1140执行解码级1106;3)重命名/分配器单元1152执行分配级1108和重命名级1110;4)调度器单元1156执行调度级1112;5)物理寄存器组单元1158和存储器单元1170执行寄存器读取/存储器读取级1114;执行群集1160实现执行级1116;6)存储器单元1170和物理寄存器组单元1158执行写回/存储器写入级1118;7)多个单元可被牵涉在异常处理级1122中;以及8)引退单元1154和物理寄存器组单元1158执行提交级1124。

核1190可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的mips技术公司的mips指令集;加利福尼州桑尼维尔市的arm控股的arm指令集(具有诸如neon等可选附加扩展)),其中包括本文中描述的各指令。在一个实施例中,核1190包括用于支持紧缩数据指令集扩展(例如,avx1、avx2和/或先前描述的一些形式的一般向量友好指令格式(u=0和/或u=1))的逻辑,从而允许很多多媒体应用使用的操作能够使用紧缩数据来执行。

应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。

尽管在无序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管所示出的处理器的实施例还包括分开的指令和数据高速缓存单元1134/1174以及共享l2高速缓存单元1176,但替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如一级(l1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。

具体的示例性有序核架构

图12a-b示出了更具体的示例性有序核架构的框图,该核将是芯片中的若干逻辑块之一(包括相同类型和/或不同类型的其它核)。根据应用,这些逻辑块通过高带宽的互连网络(例如,环形网络)与一些固定的功能逻辑、存储器i/o接口和其它必要的i/o逻辑通信。

图12a是根据本发明的各实施例的单个处理器核以及它与管芯上互连网络1202的连接及其二级(l2)高速缓存的本地子集1204的框图。在一个实施例中,指令解码器1200支持具有紧缩数据指令集扩展的x86指令集。l1高速缓存1206允许对进入标量和向量单元中的高速缓存存储器的低等待时间访问。尽管在一个实施例中(为了简化设计),标量单元1208和向量单元1210使用分开的寄存器集合(分别为标量寄存器1212和向量寄存器1214),并且在这些寄存器之间转移的数据被写入到存储器并随后从一级(l1)高速缓存1206读回,但是本发明的替代实施例可以使用不同的方法(例如使用单个寄存器集合或包括允许数据在这两个寄存器组之间传输而无需被写入和读回的通信路径)。

l2高速缓存的本地子集1204是全局l2高速缓存的一部分,该全局l2高速缓存被划分成多个分开的本地子集,即每个处理器核一个本地子集。每个处理器核具有到其自己的l2高速缓存1204的本地子集的直接访问路径。被处理器核读出的数据被存储在其l2高速缓存子集1204中,并且可以与其它处理器核访问其自己的本地l2高速缓存子集并行地被快速访问。被处理器核写入的数据被存储在其自己的l2高速缓存子集1204中,并在必要的情况下从其它子集清除。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、l2高速缓存和其它逻辑块之类的代理在芯片内彼此通信。每个环形数据路径为每个方向1012位宽。

图12b是根据本发明的各实施例的图12a中的处理器核的一部分的展开图。图12b包括l1高速缓存1204的l1数据高速缓存1206a部分,以及关于向量单元1210和向量寄存器1214的更多细节。具体地说,向量单元1210是16宽向量处理单元(vpu)(见16宽alu1228),该单元执行整型、单精度浮点以及双精度浮点指令中的一个或多个。该vpu通过混合单元1220支持对寄存器输入的混合、通过数值转换单元1222a-b支持数值转换、并通过复制单元1224支持对存储器输入的复制。

具有集成存储器控制器和图形器件的处理器

图13是根据本发明的各实施例可能具有一个以上核、可能具有集成存储器控制器、以及可能具有集成图形器件的处理器1300的框图。图13中的实线框示出具有单个核1302a、系统代理1310、一个或多个总线控制器单元1316的集合的处理器1300,而虚线框的可选附加示出具有多个核1302a-n、系统代理单元1310中的一个或多个集成存储器控制器单元1314的集合以及专用逻辑1308的替代处理器1300。

因此,处理器1300的不同实现可包括:1)cpu,其中专用逻辑1308是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1302a-n是一个或多个通用核(例如,通用的有序核、通用的无序核、这两者的组合);2)协处理器,其中核1302a-n是旨在主要用于图形和/或科学(吞吐量)的多个专用核;以及3)协处理器,其中核1302a-n是多个通用有序核。因此,处理器1300可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量的集成众核(mic)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1300可以是一个或多个衬底的一部分,和/或可以使用诸如例如bicmos、cmos或nmos等的多个加工技术中的任何一个技术将该处理器实现在一个或多个衬底上。

存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元1306的集合、以及耦合至集成存储器控制器单元1314的集合的外部存储器(未示出)。该共享高速缓存单元1306的集合可以包括一个或多个中间级高速缓存,诸如二级(l2)、三级(l3)、四级(l4)或其它级别的高速缓存、末级高速缓存(llc)、和/或其组合。尽管在一个实施例中,基于环的互连单元1312将集成图形逻辑1308、共享高速缓存单元1306的集合以及系统代理单元1310/集成存储器控制器单元1314互连,但替代实施例可使用任何数量的公知技术来将这些单元互连。在一个实施例中,可以维护一个或多个高速缓存单元1306和核1302-a-n之间的一致性(coherency)。

在一些实施例中,一个或多个核1302a-n能够实现多线程。系统代理1310包括协调和操作核1302a-n的那些组件。系统代理单元1310可包括例如功率控制单元(pcu)和显示单元。pcu可以是或包括用于调整核1302a-n和集成图形逻辑1308的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。

核1302a-n在架构指令集方面可以是同构的或异构的;即,这些核1302a-n中的两个或更多个核可能能够执行相同的指令集,而其它核可能能够执行该指令集的仅仅子集或不同的指令集。

示例性计算机架构

图14-17是示例性计算机架构的框图。本领域已知的对膝上型设备、台式机、手持pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其它电子设备的其它系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑的多个系统和电子设备一般都是合适的。

现在参考图14,所示出的是根据本发明一个实施例的系统1400的框图。系统1400可以包括一个或多个处理器1410、1415,这些处理器耦合到控制器中枢1420。在一个实施例中,控制器中枢1420包括图形存储器控制器中枢(gmch)1490和输入/输出中枢(ioh)1450(其可以在分开的芯片上);gmch1490包括存储器和图形控制器,存储器1440和协处理器1445耦合到该存储器和图形控制器;ioh1450将输入/输出(i/o)设备1460耦合到gmch1490。或者,存储器和图形控制器中的一个或两者可以被集成在处理器内(如本文中所描述的),存储器1440和协处理器1445直接耦合到处理器1410以及控制器中枢1420,该控制器中枢与ioh1450处于单个芯片中。

附加的处理器1415的可选性在图14中通过虚线来表示。每一处理器1410、1415可包括本文中描述的处理核中的一个或多个,并且可以是处理器1300的某一版本。

存储器1440可以是例如动态随机存取存储器(dram)、相变存储器(pcm)或这两者的组合。对于至少一个实施例,控制器中枢1420经由诸如前端总线(fsb)之类的多分支总线、诸如快速通道互连(qpi)之类的点对点接口、或者类似的连接1495与处理器1410、1415进行通信。

在一个实施例中,协处理器1445是专用处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、或嵌入式处理器等等。在一个实施例中,控制器中枢1420可以包括集成图形加速器。

在物理资源1410、1415之间可以存在包括架构、微架构、热、和功耗特征等的一系列品质度量方面的各种差异。

在一个实施例中,处理器1410执行控制一般类型的数据处理操作的指令。协处理器指令可嵌入在这些指令中。处理器1410将这些协处理器指令识别为应当由附连的协处理器1445执行的类型。因此,处理器1410在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1445。协处理器1445接受并执行所接收的协处理器指令。

现在参考图15,所示为根据本发明的一实施例的更具体的第一示例性系统1500的框图。如图15所示,多处理器系统1500是点对点互连系统,且包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。处理器1570和1580中的每一个都可以是处理器1300的某一版本。在本发明的一个实施例中,处理器1570和1580分别是处理器1410和1415,而协处理器1538是协处理器1445。在另一实施例中,处理器1570和1580分别是处理器1410和协处理器1445。

处理器1570和1580被示为分别包括集成存储器控制器(imc)单元1572和1582。处理器1570还包括作为其总线控制器单元的一部分的点对点(p-p)接口1576和1578;类似地,第二处理器1580包括p-p接口1586和1588。处理器1570、1580可以经由使用点对点(p-p)接口电路1578、1588的p-p接口1550来交换信息。如图15所示,imc1572和1582将处理器耦合到相应的存储器,即存储器1532和存储器1534,这些存储器可以是本地附连到相应处理器的主存储器的部分。

处理器1570、1580可各自经由使用点对点接口电路1576、1594、1586、1598的各个p-p接口1552、1554与芯片组1590交换信息。芯片组1590可以可选地经由高性能接口1539与协处理器1538交换信息。在一个实施例中,协处理器1538是专用处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、或嵌入式处理器等等。

共享高速缓存(未示出)可以被包括在任一处理器之内,或被包括在两个处理器外部但仍经由p-p互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。

芯片组1590可以经由接口1596耦合至第一总线1516。在一个实施例中,第一总线1516可以是外围组件互连(pci)总线或诸如pci高速总线或另一第三代i/o互连总线之类的总线,但是本发明的范围不限于此。

如图15所示,各种i/o设备1514可连同总线桥1518一起耦合到第一总线1516,总线桥1518将第一总线1516耦合到第二总线1520。在一个实施例中,诸如协处理器、高吞吐量mic处理器、gpgpu的处理器、加速器(诸如例如图形加速器或数字信号处理器(dsp)单元)、现场可编程门阵列或任何其他处理器的一个或多个附加处理器1515耦合到第一总线1516。在一个实施例中,第二总线1520可以是低引脚计数(lpc)总线。各种设备可以被耦合至第二总线1520,在一个实施例中这些设备包括例如键盘/鼠标1522、通信设备1527以及诸如可包括指令/代码和数据1530的盘驱动器或其它大容量存储设备的存储单元1528。此外,音频i/o1524可以被耦合至第二总线1520。注意,其它架构是可能的。例如,代替图15的点对点架构,系统可以实现多分支总线或其它这类架构。

现在参考图16,所示为根据本发明的实施例的更具体的第二示例性系统1600的框图。图15和图16中的相同部件用相同附图标记表示,并从图16中省去了图15中的某些方面,以避免使图16的其它方面变得模糊。

图12示出处理器1570、1580可分别包括集成存储器和i/o控制逻辑(”cl”)1572和1582。因此,cl1572、1582包括集成存储器控制器单元并包括i/o控制逻辑。图16示出不仅存储器1532、1534耦合至cl1572、1582,i/o设备1614也耦合至控制逻辑1572、1582。传统i/o设备1615耦合至芯片组1590。

现在参照图17,所示出的是根据本发明一个实施例的soc1700的框图。图13中的相似组件具有相同的标号。另外,虚线框是更先进的soc的可选特征。在图17中,互连单元1702被耦合至:应用处理器1710,该应用处理器包括一个或多个核202a-n的集合以及共享高速缓存单元1306;系统代理单元1310;总线控制器单元1316;集成存储器控制器单元1314;一组或一个或多个协处理器1720,其可包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(sram)单元1730;直接存储器存取(dma)单元1732;以及用于耦合至一个或多个外部显示器的显示单元1740。在一个实施例中,协处理器1720包括专用处理器,诸如例如网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、或嵌入式处理器等等。

本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。

可将程序代码(诸如图15中示出的代码1530)应用于输入指令,以执行本文描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器之类的处理器的任何系统。

程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。

至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“ip核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。

这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其它类型的盘,包括软盘、光盘、紧致盘只读存储器(cd-rom)、紧致盘可重写(cd-rw)以及磁光盘;半导体器件,例如只读存储器(rom)、诸如动态随机存取存储器(dram)和静态随机存取存储器(sram)之类的随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、闪存、电可擦除可编程只读存储器(eeprom);相变存储器(pcm);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。

因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(hdl),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。

仿真(包括二进制变换、代码变形等)

在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。

图18是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图18示出可使用x86编译器1804来编译利用高级语言1802的程序,以生成可由具有至少一个x86指令集核的处理器1816原生执行的x86二进制代码1806。具有至少一个x86指令集核的处理器1816表示任何处理器,这些处理器能通过兼容地执行或以其它方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它程序的目标代码版本,以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1804表示用于生成x86二进制代码1806(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1816上执行。类似地,图18示出可以使用替代的指令集编译器1808来编译利用高级语言1802的程序,以生成可以由不具有至少一个x86指令集核的处理器1814(例如具有执行加利福尼亚州桑尼维尔市的mips技术公司的mips指令集、和/或执行加利福尼亚州桑尼维尔市的arm控股公司的arm指令集的核的处理器)原生执行的替代指令集二进制代码1810。指令转换器1812被用来将x86二进制代码1806转换成可以由不具有x86指令集核的处理器1814原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码1810相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器1812通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86二进制代码1806的软件、固件、硬件或其组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1