用于加速无线安全算法的装置、方法和系统与流程

文档序号:16890620发布日期:2019-02-15 23:01阅读:225来源:国知局
用于加速无线安全算法的装置、方法和系统与流程
本公开涉及能够进行高效无线安全操作的微处理器以及相关联的指令集体系结构。
背景技术
:在密码学中,流密码是一种对称密钥密码,其中,明文数字与伪随机密码数字流(密钥流)组合。在流密码中,一次一个地利用密钥流的相对应的数字来对每一个明文数字进行加密以生成所述密码文本流的数字。数字通常是一位,并且组合操作可以是异或(xor)。通常,使用数字移位寄存器,由随机种子值连续地生成伪随机密钥流。种子值充当用于对密码文本流进行解密的加密密钥。流密码能够在软件中实现。然而,复杂的流密码能够使用超过一百行的c代码。甚至对于最优化后的汇编代码,可能需要大量的循环来生成用于复杂流密码的密钥流字节。而且,软件实现通常涉及到大量存储器存取。因此,软件实现不能为各种各样的应用提供足够的速度和能量效率。附图描述在附图的图中,通过举例的方式而不是限制的方式来示出实施例:图1a示出了在初始化模式下snow3g操作的图。图1b示出了在密钥流模式下snow3g操作的图。图2a-图2c示出了根据一个实施例的用于实施snow3g操作的三个向量指令。图3是根据一个实施例的示出了响应于第一向量指令而被实施的操作的流程图。图4是根据一个实施例的示出了响应于第二向量指令而被实施的操作的流程图。图5是根据一个实施例的示出了响应于第三向量指令而被实施的操作的流程图。图6是根据一个实施例的示出了使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。图7a是根据一个实施例的有序和乱序流水线的框图。图7b是根据一个实施例的有序和乱序核心的框图。图8a-图8b是根据一个实施例的更具体的示例性有序核心体系结构的框图。图9是根据一个实施例的处理器的框图。图10是根据一个实施例的系统的框图。图11是根据一个实施例的第二系统的框图。图12是根据本发明的实施例的第三系统的框图。图13是根据一个实施例的芯片上系统(soc)的框图。具体实施方式在下面的描述中,阐述了若干具体细节。但是,应当理解的是本发明的实施例可以在不具有这些具体细节的情况来实施。在其他实例中,为避免使对该描述书的理解不清楚,没有具体示出公知的电路、结构和技术。snow3g的特征在于其高度的计算复杂度和长的执行时间。为了实现高速无线通信,译码操作需要具有时间效率。除了时间约束之外,译码操作还需要能效,因为移动设备通常具有有限的电池。snow3g是一种基于线性反馈移位寄存器(lfsr)的、具有608个状态位的算法。608位包括三个32位有限状态机(fsm)状态寄存器以及包含十六个双字(双字)的lfsr(即,在lfsr中有512位)。用于更新状态并且产生输出字的计算包括多代置换盒(s-box)变换和伽罗瓦(galois)域相乘和取幂。snow3g能够通过软件来实现,这涉及到大量的计算和存储器存取。因此,snow3g的软件实现通常缓慢并且耗能多。与现有的软件解决方案相比,本文所描述的实施例提供了新的处理器指令,用于以显著改善的性能实施snow3g无线安全操作。在一个实施例中,新处理器指令包括用于更新有限状态机(fsm)的snow_fsmz指令,以及用于更新线性反馈移位寄存器(lfsr)的snow_lfsrv指令和snow_lfsr1指令。这些指令中的每一指令都利用向量寄存器来实施高效的向量化计算。在描述新指令之前,解释snow3g无线安全算法的基本概念是有帮助的。snow3g算法使用具有十六个32位数据元素的lfsr(其中每个数据元素都是双字(dword)的)以及具有三个32位状态寄存器r1、r2和r3的fsm。启动时,lfsr的十六个双字被装载来自128位密钥和128位初始化变量的位组合。128位密钥包括四个32位字k0、k1、k2和k3。128位初始化变量包括四个32位字iv0、iv1、iv2和iv3。下面,数字1代表全1双字(0xffffffff)。lfsr中的十六个双字如下:在启动时,fsm被初始化为r1=r2=r3=0。接着,fsm和lfsr在初始化模式下运行32次,在所述初始化模式中,fsm的输出用作lfsr更新的输入。在对fsm和lfsr进行了初始的32次更新之后,fsm多更新一次,fsm输出被抛弃。然后在密钥流模式下更新lfsr,之后是fsm的更新,产生32位输出f。fsm输出f与lfsr的双字s0进行异或,以产生32位密钥流输出z,并且在密钥流模式下再次更新lfsr。fsm更新、z输出和lfsr更新在循环中继续多次迭代,直至生成所需的密钥流输出的n个双字。图1a示出了在初始化模式下的lfsr120和fsm100的示例。在初始化模式下,32次lfsr启动更新中的每一次都是通过确定由s11、s2、s0和fms输出f生成的32位双字v来实施的。更新之前的lfsr120的双字s15至s1“向右移位”成为s14至s0,并且用v来更新s15。下面,||用作串联运算符,以及⊕是逐位异或(xor)运算符。此外,s0.0||s0.1||s0.2||s0.3代表s0的四个字节,s0.0是s0的最高有效字节;并且令s11.0||s11.1||s11.2||s11.3代表s11的四个字节,s11.0是s11的最高有效字节。具体而言,在初始化模式下,在v的表达式中,mulα和divα是在snow3g中基于mulx和mulxpow数学函数定义的函数。mulα和divα中的每一个将8位映射成32位。虽然mulα和divα二者均因为mulxpow运算的递归要求而使得利用函数的数学定义实现复杂,但是按32位输出表的256输入项能够用于mulα函数和divα函数中的每一个(即,每个函数为1k字节)。图1b示出了在密钥流模式下lfsr和fsm的示例。在密钥流模式下,利用s11、s2和s0来生成32位双字v。具体而言,v=如上所述,mulα和divα结果能够通过表查找来获得。在初始化模式和密钥流模式二者下,每个fsm更新使用两个32位lfsr双字。双字s15用来产生32位输出字f,并且s5用来更新fsm状态寄存器r1、r2和r3,其中r1、r2和r3中的每一个都是32位双字。在图1a和图1b中,代表整数相加模232。fsm输出f=(s15r1)⊕r2。随后,状态寄存器进行如下更新:首先,中间值r被计算为r=r2(r3⊕s5)。然后,设置r3=s2(r2),r2=s1(r1),并且r1=r。在上面的计算中,s1和s2是32x32位s-box函数。s1是在高级加密标准(aes)密码中使用的rijndaels-boxsr。对于32位输入w=w0||w1||w2||w3,w0是最高有效字节,sr(w)=r0||r1||r2||r3,r0是最高有效字节,r3是最低有效字节。输出中的字节r0、r1、r2和r3定义为:mulx函数被定义为:如果第一操作数(v1)的最左(最高有效)位是1,则mulx(v1,v2)=v1<<81⊕v2;否则,mulx(v1,v2)=v1<<81(其中<<8是左移8位。s2s-box还基于四个8位到8位变换来实施32位到32位映射。用于s2的s-box是在snow3g中定义的sqs-box。类似于s1的定义,对于32位输入w=w0||w1||w2||w3,w0是最高有效字节,sq(w)=r0||r1||r2||r3,r0是最高有效字节,以及r3是最高有效字节。输出中字节r0、r1、r2和r3定义为:上述的描述解释了snow3g无线安全算法的计算。本发明的实施例为指令集体系结构(isa)提供了新指令,以能够实现snow3g算法的高效计算。此处所描述的isa支持单指令、多数据(simd)操作。并不是仅在一个数据元素或一对数据元素上运算的标量指令,simd指令(也称为压缩数据指令或向量指令)可以同时或者并行地在多个数据元素或多对数据元素上进行运算。处理器可以响应于向量指令而具有并行执行硬件,以同时或者并行地实施多个操作。新指令和相对应的数据通路使处理器能够支持256位或512位体系结构向量寄存器,以便以每32位双字3循环的吞吐量来执行snow3g。在下面的描述中,术语ymm是指256位向量寄存器。虽然在下面的描述中使用ymm寄存器,但是应意识到的是在可选的实施例中可以使用其他向量寄存器(例如,512位zmm寄存器)。在一个实施例中,十六个32位数据元素s15至s0的lfsr状态存储在两个向量寄存器(例如,两个ymm寄存器)中。由于fsm使用s15和s5,并且需要s0和f(fsm的32位输出)的xor来产生z(32位密钥流输出),所以lfsr数据元素被组织在两个ymm寄存器内,s15、s5和s0在同一ymm寄存器中。也即,fsm所需的lfsr数据元素被存储在同一向量寄存器中。在一个实施例中,snow3glfsr可以被组织,使得其十六个数据元素存储在两个向量寄存器ymm1和ymm2中,如下:dword01234567ymm1s15s6s5s4s3s2s1s0ymm2s14s13s12s11s10s9s8s7图2a示出了根据一个实施例的指令snow_lfsr1ymm0、ymm1、ymm2。第一源寄存器ymm1具有更新前的双字s15、s6、s5、s4、s3、s2、s1和s0。第二源寄存器ymm2具有更新前的双字s14、s13、s12、s11、s10、s9、s8和s7。目的寄存器ymm0具有更新后的双字s14、s13、s12、s11、s10、s9、s8和s7(更新后的双字在图2a中以下划线示出)。处理器通过如下设定来执行指令:将ymm0双字0设定成更新前的ymm1双字0,以及将ymm0双字1-7设定成更新前的ymm2双字0-6。也即,指令将s15从ymm1移位到ymm0的s14,以及将s14-s8从ymm2移位到ymm0的s13-s7,如图2a所示。图2b示出了根据一个实施例的另一指令snow_lfsrvymm0、ymm1、ymm2。第一源寄存器ymm1具有更新前的双字s15、s6、s5、s4、s3、s2、s1和s0。第二源寄存器ymm2具有更新前的dwrods14、s13、s12、s11、s10、s9、s8和s7。处理器首先通过确定v(lfsr输出)来执行指令。v的数学表达式在上文中参考图1a和图1b进行了描述,并且重复如下。在初始化模式下,在一个实施例中,在snow_lfsrv指令执行之前lfsr输出f与源ymm1的双字5(s2)进行异或以生成v值。在密钥流模式下,在初始化模式和密钥流模式二者下,mulα(s0,0)和divα(s11,3)的结果能够通过并行实施的两个表查找来获得。在一个实施例中,mulα函数和divα函数中的每一个由256输入项表来支持,32位的输出在位于由处理器可存取的指令的执行数据路径中的只读存储器(rom)中。在可选的实施例中,还可以使用其他形式的存储器。在确定v之后,目的寄存器ymm0双字0被设置成v,ymm0双字1被设置成ymm2双字7,以及ymm0双字2-7被设置成ymm1双字1-6。也即,指令将s7从ymm2移位成ymm0的s6,以及将s6-s1从ymm1移位成ymm0的s5-s0,如图2b所示。能够在3循环流水线中执行snow_lfsrv指令。图2c示出了又一指令snow_fsmzymm0、ymm1、ymm2。该指令用来更新fsm状态并且生成下一fsm输出f。第一源寄存器ymm1存储更新前的r1、r2和r3状态,第二源寄存器ymm2存储lfsr双字s15、s6、s5、s4、s3、s2、s1和s0。目的寄存器ymm0被写入更新后的r1、r2、r3和输出f。因此,ymm0在逻辑上被划分成四个32位通道。由于更新后的r1、r2、r3和f是根据更新前的r1、r2和r3计算得出,所以能够并行地计算r1、r2、r3和f更新,并且结果能够存储到四个通道ymm0中。如上文参考图1a和图1b所描述的,通过评估sr和sqs-box函数来计算对r2和r3的更新。对于32位输入w=w0||w1||w2||w3,sr(w)的结果能够通过四个并行表查找(sr(w0)、sr(w1)、sr(w2)、sr(w3))来获得;类似地,sq(w)的结果能够通过四个并行表查找(sq(w0)、sq(w1)、sq(w2)、sq(w3))来获得。在一个实施例中,总共八个表能够存储在只读存储器中以便能够实现八个并行表查找。sr函数和sq函数中的每一个将8位映射成8位;因此,每个函数能够由位于处理器可访问的指令的执行数据路径中的只读存储器(rom)中的具有8位输出的256输入项表支持。在可选的实施例中,还可以使用其他形式的存储器。snow_fsmz指令使处理器能够在simd流水线中执行r1、r2、r3和f的四个并行更新,包括用于sr函数和sq函数的八个并行表查找。在一个实施例中,simd流水线可以是3循环simd流水线。指令从两个向量寄存器中读出并且写入一个向量寄存器中。相比而言,实施相同的fsm更新的软件程序将包括更多的指令并且招致更多的读和写存取。lfsr的数据元素被组织,使得fsm更新所需的一组lfsr双字被装载到一个向量寄存器中(即,snow_fsmz的第二源操作数)。该向量寄存器还能够用作用于lfsr更新的snow_lfsr1和snow_lfsrv的源操作数。snow3g算法的计算被分区以最大化执行效率。使用新指令的snow3g的吞吐量取决于为指令分配的执行端口以及指令延迟。下面是使用三个新指令snow_lfsr1、snow_lfsrv和snow_fsmz来实施snow3g无线安全操作的示例代码段。操作以ymm4中的fsm状态r1、r2和r3、ymm0中的lfsr双字s15和s6-s0、以及ymm1中的lfsr双字s14-s7开始。snow_fsmzymm5,ymm4,ymm0/*第一更新*/snow_lfsrvymm2,ymm0,ymm1snow_lfsr1ymm3,ymm0,ymm1movdymm5,mem/*将32位从ymm寄存器移至输出*/snow_fsmzymm4,ymm5,ymm2/*第二更新*/snow_lfsrvymm0,ymm2,ymm3snow_lfsr1ymm1,ymm2,ymm3movdymm4,mem/*将32位从ymm寄存器移至输出*/在第一更新中,ymm0具有fsm更新所需的lfsr双字。更新后的fsm状态在ymm5中,以及更新后的lfsr状态在ymm2和ymm3中,其中ymm2具有下一fsm更新所需的lfsr双字。在第二更新中,更新后的fsm状态在ymm4中,以及更新后的lfsr状态在ymm0和ymm1中,其中ymm0具有下一fsm更新所需的lfsr双字。因此,snow3g操作能够在第一更新和第二更新交替的循环中被实施。图3是根据一个实施例的用于实施snow3g无线安全操作的方法300的流程图。方法300以处理器(更具体地为,诸如图7b的执行引擎单元750之类的执行电路系统)接收第一指令以实施snow3g无线安全操作(框310)而开始。执行电路系统接收第一指令的第一操作数,其指定存储fsm(例如,图1a和图1b的fsm100)的当前状态的第一向量寄存器(框320)。执行电路系统还接收第一指令的第二操作数,其指定存储更新fsm所需的lfsr(例如,图1a和图1b的lfsr120)的数据元素的第二向量寄存器的(框330)。执行电路系统然后执行第一指令以在目的操作数中产生fsm的更新状态和fsm的输出(框340)。图4是根据一个实施例的用于实施对lfsr的更新的方法400的流程图。方法400以处理器(更具体地为,诸如图7b的执行引擎单元750之类的执行电路系统)接收第二指令以实施对lfsr的更新而开始(框410)。执行电路系统接收第二指令的第一操作数,其指定存储更新fsm所需的lfsr的数据元素的第二向量寄存器(框420)。执行电路系统还接收第二指令的第二操作数,其指定存储lfsr中的数据元素中的没有位于第二向量寄存器中的一半数据元素的第三向量寄存器(框430)。然后,执行电路系统执行第二指令以在目的操作数中产生lfsr的更新后的最左数据元素和lfsr的第一组移位的数据元素(框440)。图5是根据一个实施例的用于实施对lfsr的更新的方法500的流程图。方法500以处理器(更具体地为,诸如图7b的执行引擎单元750之类的执行电路系统)接收第三指令以实施对lfsr的更新而开始(框510)。执行电路系统接收第三指令的第一操作数,其指定存储更新fsm所需的lfsr的数据元素的第二向量寄存器(框520)。执行电路系统还接收第三指令的第二操作数,其指定存储lfsr中的数据元素没有位于第二向量寄存器中的一半数据元素的第三向量寄存器(框530)。然后,执行电路系统执行第三指令以在目的操作数中产生lfsr的第二组移位的数据元素(框540)。在各个实施例中,图3-图5的方法可以通过通用处理器、专用处理器(例如,图形处理器或数字信号处理器)、或者另一类型的数字逻辑器件或指令处理装置来执行。在一些实施例中,图3-图5的方法可以通过处理器、装置或系统来实施,诸如图7a-图7b、图8a-图8b和图9-图13所示的实施例。而且,图7a-图7b、图8a-图8b和图9-图13所示的处理器、装置或系统可以实施与图3-图5的方法的那些相同、相似或不同的操作和方法的实施例。在一些实施例中,图7a-图7b、图8a-图8b和图9-图13的处理器、装置、或系统可以与指令转换器相结合地操作,所述指令转换器将指令从源指令集转换成目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、改变、仿真或以其他方式转换成要由核心处理的一个或多个其他指令。指令转换器可以被实现在软件、硬件、固件或其组合中。指令转换器可以在处理器上、在处理器外、或者部分在处理器以及部分在处理器外。图6是根据本发明实施例的对比软件指令转换器的使用的框图。在示出的实施例中,指令转换器是软件指令转换器,但是可选地指令转换器可以被实现在软件、固件、硬件、或其各种组合中。图6示出了可以使用x86编译器604来编译高级语言602的程序,以生成可以通过具有至少一个x86指令集核心616的处理器天然地执行的x86二进制代码606。具有至少一个x86指令集核心616的处理器代表了能够实施实质上与具有至少一个x86指令集核心的intel处理器相同功能的任何处理器,实施实质上与具有至少一个x86指令集核心的intel处理器相同功能通过兼容地执行或另外处理(1)intelx86指令集核心的指令集的实质部分或者(2)目标为在具有至少一个x86指令集核心的intel处理器上运行的应用或其他软件的对象代码版本,以便实现与具有至少一个x86指令集核心的intel处理器实质上相同的结果。x86编译器604代表了可操作以生成x86二进制代码606(例如,对象代码)的编译器,x86二进制代码606能够在通过或者不通过附加连接处理的情况下在具有至少一个x86指令集核心616的处理器上被执行。类似地,图6示出了可以使用可选的指令集编译器608来编译高级语言602的程序以生成可以通过不具有至少一个x86指令集核心614的处理器(例如,具有执行sunnyvale,ca的mipstechnologies的mips指令集和/或执行sunnyvale,ca的armholdings的arm指令集的核心的处理器)天然地执行的可选的指令集二进制代码610。指令转换器612用来将x86二进制代码606转换成可以通过不具有x86指令集核心614的处理器天然地执行的代码。该转换后的代码不大可能与可选指令集二进制代码610相同,这是因为能够完成该点的指令转换器难以实现;但是,转换后的代码将实现普通操作并且由来自可选指令集的指令构成。因此,指令转换器612代表了软件、固件、硬件或其组合,通过仿真、模拟或任何其他处理,允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码606。示例性核心体系结构有序和乱序核心框图图7a是示出了根据本发明实施例的示例性有序流水线和示例性寄存器重命名、乱序发射/执行流水线二者的框图。图7b是根据本发明的实施例的示出了包括在处理器中的有序体系结构核心的示例性实施例和示例性寄存器重命名、乱序发射/执行体系结构核心二者的框图。图7a和图7b中的实线框示出了有序流水线和有序核心,而虚线框的任选添加示出了寄存器重命名、乱序发射/执行流水线和核心。假设有序方面是乱序方面的子集,将对乱序方面进行描述。在图7a中,处理器流水线700包括取得阶段702、长度解码阶段704、解码阶段706、分配阶段708、重命名阶段710、调度(也称为分派或发射)阶段712、寄存器读/存储器读阶段714、执行阶段716、写回/存储器写阶段718、异常处理阶段722和提交阶段724。图7b示出了包括与执行引擎单元750耦合的前端单元730的处理器核心790,处理器核心790和执行引擎单元750二者均与存储器单元770耦合。核心790可以是精简指令集计算(risc)核心、复杂指令集计算(cisc)核心、极长指令字(vliw)核心、或混合或可选核心类型。作为又一选项,核心790可以是专用核心,诸如例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(gpgpu)核心、图形核心等。前端单元730包括与指令高速缓存单元734耦合的分支预测单元732,指令高速缓存单元734与指令变换后备缓冲器(tlb)736耦合,指令变换后备缓冲器与指令取得单元738耦合,指令取得单元738与解码单元740耦合。解码单元740(或解码器)可以对指令解码,并且生成一个或多个微操作、微码输入点、微指令、其他指令、或其他控制信号作为输出,一个或多个微操作、微码输入点、微指令、其他指令、或其他控制信号从原指令解码、或者反映原指令、或者从原指令得到。解码单元740可以利用各种不同的机制来实现。适合的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(pla)、微码只读存储器(rom)等。在一个实施例中,核心790包括微码rom或存储用于一些宏指令的微码的其他介质(例如,在解码单元740中或者否则在前端单元730内)。解码单元740与执行引擎单元750中的重命名/分配单元752耦合。执行引擎单元750包括重命名/分配单元752,重命名/分配单元752与引退单元754和一个或多个调度单元756的集合耦合。调度单元756代表任意数量的不同调度器,包括预约站、中央指令窗口等。调度单元756与物理寄存器文件单元758耦合。每个物理寄存器文件单元758代表一个或多个物理寄存器文件,其中不同的物理寄存器文件存储一个或多个不同的数据类型,例如,标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点、状态(例如,作为待执行的下一指令的地址的指令指针)等。在一个实施例中,物理寄存器文件单元758包括向量寄存器单元、写掩码寄存器单元、和标量寄存器单元。这些寄存器单元可以提供体系结构向量寄存器、向量掩码寄存器、和通用寄存器。物理寄存器文件单元758由引退单元754重叠以示出可以实现寄存器重命名和乱序执行的各种方式(例如,使用重排序缓冲器和引退寄存器文件;使用未来文件、历史缓冲器和引退寄存器文件;使用寄存器映射和寄存器池;等等)。引退单元754和物理寄存器文件单元758与执行群集760耦合。执行群集760包括一个或多个执行单元762的集合和一个或多个存储器存取单元764的集合。执行单元762可以执行各种操作(例如,移位、相加、相减、相乘)以及针对各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)执行。虽然一些实施例可以包括专用于具体功能或功能集的多个执行单元,但是其他实施例可以仅包括一个执行单元或全部执行所有功能的多个执行单元。调度单元756、物理寄存器文件单元758、和执行群集760被示出为可能是多个,因为一些实施例针对一些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点流水线、和/或每一个都具有其自身的调度单元、物理寄存器文件单元、和/或执行群集的存储器存取流水线,以及在单独的存储器存取流水线的情况下,通过仅在具有存储器存取单元764的该流水线的执行群集中来实现一些实施例)。还应当理解的是,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是乱序发射/执行,并且其余为有序的。存储器存取单元764的集合与存储器单元770耦合,存储器单元770包括数据tlb单元772,数据tlb单元772与数据高速缓存单元774耦合,数据高速缓存单元774与二级(l2)高速缓存单元776耦合。在一个示例性实施例中,存储器存取单元764可以包括装载单元、存储地址单元、和存储数据单元,其中每个都与存储器单元770中的数据tlb单元772耦合。指令高速缓存单元734进一步与存储器单元770中的二级(l2)高速缓存单元776耦合。l2高速缓存单元776与高速缓存的一个或多个其他级耦合,并最终与主存储器耦合。通过举例方式,示例性的寄存器重命名、乱序发射/执行核心体系结构可以实现如下流水线700:1)指令取得738实施取得以及长度解码阶段702和704;2)解码单元740实施解码阶段706;3)重命名/分配单元752实施分配阶段708和重命名阶段710;4)调度单元756实施调度阶段712;5)物理寄存器文件单元758和存储器单元770实施寄存器读/存储器读阶段714;执行群集760实施执行阶段716;6)存储器单元770和物理寄存器文件单元758实施写回/存储器写阶段718;7)各单元可以参与异常处理阶段722;以及8)引退单元754和物理寄存器文件单元758实施提交阶段724。核心790可以支持一个或多个指令集(例如,x86指令集(具有已添加到新版本的一些扩展);sunnyvale,ca的mipstechnologies的mips指令集;sunnyvale,ca的armholdings的arm指令集(具有诸如neon的任选附加扩展)),包括本文所描述的指令。在一个实施例中,核心790包括支持压缩数据指令集扩展(例如,sse、avx1、avx2等)的逻辑,从而允许使用压缩数据来实施的许多多媒体应用使用的操作。应当理解的是,所述核心可以支持多线程(执行操作或线程的两个或更多个并行集),并且通过包括时间片多线程、同时多线程(其中单个物理核心针对物理核心是多线程的每个线程提供逻辑核心)或其组合(例如,例如此后在超线程技术中出现的时间片取得和解码以及同时多线程)的各种方式来完成这些。虽然在乱序执行的上下文中描述了寄存器重命名,但是应当理解的是在有序体系结构中可以使用寄存器重命名。虽然示出的处理器的实施例还包括单独的指令和数据高速缓存单元734/774以及共享l2高速缓存单元776,但是可选的实施例可以具有用于指令和数据二者的单个内部高速缓存,诸如例如,1级(l1)内部高速缓存或多级内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和位于核心和/或处理器外部的外部高速缓存的组合。可替代地,所有的高速缓存都可以位于核心和/或处理器外部。具体的示例性有序核心体系结构图8a-图8b示出了更具体的示例性有序核心体系结构的框图,该核心可以是芯片中多个逻辑块中的一个(包括相同类型和/或不同类型的其他核心)。逻辑块取决于应用,通过具有一些固定功能逻辑、存储器i/o接口、和其他必要的i/o逻辑的高带宽互连网络(例如,环形网络)进行通信。图8a是根据本发明的实施例的单一处理器核心连同其与管芯上互连网络802的连接以及其二级(l2)高速缓存804的本地子集的框图。在一个实施例中,指令解码器800支持具有压缩的数据指令集扩展的x86指令集。l1高速缓存806允许对高速缓存存储器进行低延迟存取到标量单元和向量单元。虽然在一个实施例中(为简化设计),标量单元808和向量单元810使用单独的寄存器集(分别为标量寄存器812和向量寄存器814)并且在它们之间传输的数据被写入存储器,以及然后从1级(l1)高速缓存806读回,但是本发明的可选实施例可以使用不同的方法(例如,使用单一寄存器集或者包括允许在两个寄存器文件之间传输数据而不写以及读回的通信路径)。l2高速缓存804的本地子集是被划分成单独的本地子集的全局l2高速缓存的部分,每个处理器核心各一个本地子集。每个处理器核心具有通往l2高速缓存804的其自身的本地子集的直接访问路径。由处理器核心读取的数据存储在其l2高速缓存子集804中并且能够快速地被存取,这与其他处理器核心存取它们自身的本地l2高速缓存子集并行。通过处理器核心写入的数据存储在其自身的l2高速缓存子集804中并且根据需要从其他子集中刷新。环形网络确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核心、l2高速缓存和其他逻辑块的代理在芯片内彼此通信。图8b是根据本发明的实施例的图8a中的处理器核心的部分的扩展图。图8b包括l1高速缓存804的l1数据高速缓存806a部分,以及关于向量单元810和向量寄存器814的更多细节。具体地,向量单元810是16位宽的向量处理单元(vpu)(参见16位宽alu828),其执行整数、单精度浮点以及双精度浮点指令中的一个或多个。vpu支持通过混合单元820将寄存器输入混合,通过数值转换单元822a-b进行数值转换、以及通过存储器输入上的复制单元824进行复制。写掩码寄存器826允许预测结果向量写。具有集成存储器控制器和图形的处理器图9是根据本发明的实施例的处理器900的框图,处理器900可以具有多于一个的核心,可以具有集成存储器控制器,并且可以具有集成的图形。图9中的实线框示出了具有单个核心902a、系统代理910、一个或多个总线控制器单元916的集合的处理器900,但是虚线框的任选添加示出了具有多个核心902a-n、系统代理单元910中的一个或多个集成存储器控制器单元914的集合和专用逻辑908的可选处理器900。因此,处理器900的不同实现方式可以包括:1)cpu,其具有作为集成图形和/或科学(吞吐)逻辑(其可以包括一个或多个核心)的专用逻辑908,以及作为一个或多个通用核心(例如,通用有序核心、通用乱序核心、两者的组合)的核心902a-n;2)协处理器,其具有作为主要用于图形和/或科学(吞吐)的大量专用核心的核心902a-n;以及3)协处理器,其具有作为大量通用有序核心的核心902a-n。因此,处理器900可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量多集成核心(mic)协处理器(包括30个或更多个核心)、嵌入式处理器等等。所述处理器可在一个或多个芯片上实现。处理器900可以是使用诸如例如bicmos、cmos或nmos的多种处理技术中的任一种的一个或多个衬底的一部分和/或可以在使用诸如例如bicmos、cmos或nmos的多种处理技术中的任一种的一个或多个衬底上被实现。存储器分级包括在核心内的一级或多级高速缓存、一组或一个或多个共享高速缓存单元906、以及与一组集成存储器控制器单元914耦合的外部存储器(未示出)。一组共享高速缓存单元906可以包括一个或多个中级高速缓存,诸如二级(l2)、三级(l3)、四级(l4)、或其他级的高速缓存、最后一级高速缓存(llc)、和/或其组合。虽然在一个实施例中基于环的互连单元912将集成图形逻辑908、一组共享高速缓存单元906、和系统代理单元910/集成存储器控制器单元914互连,但是可替代的实施例可以使用用于将这些单元互连的任意数量的公知技术。在一个实施例中,在一个或多个高速缓存单元906和核心902a-n之间保持一致性。在一些实施例中,核心902a-n中的一个或多个能够是多线程的。系统代理910包括协调和操作核心902a-n的那些部件。系统代理单元910可以包括例如功率控制单元(pcu)和显示单元。pcu可以为或者可以包括调节核心902a-n和集成图形逻辑908的功率状态所需的逻辑和部件。显示单元用于驱动一个或多个在外部连接的显示器。从体系结构指令集方面看,核心902a-n可以是同质的或异质的;也即,核心902a-n中的两个或更多个能够执行相同的指令集,而其他核心能够仅执行该指令集的子集或不同的指令集。示例性的计算机体系结构图10-图13是示例性的计算机体系结构的框图。本领域公知的用于膝上型计算机、台式计算机、手持式pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、行动电话、便携式媒体播放器、手持式设备、以及其他各种电子设备的其它系统设计和构造也是适用的。一般地,能够包含如本文所公开的处理器和/或其他执行逻辑的各式各样的系统或电子设备通常是适用的。现在参考图10,示出了根据本发明的一个实施例的系统1000的框图。系统1000可以包括一个或多个处理器1010、1015,处理器1010、1015与控制器集线器1020耦合。在一个实施例中,控制器集线器1020包括图形存储器控制器集线器(gmch)1090和输入/输出集线器(ioh)1050(其可以在单独的芯片上);gmch1090包括耦合的存储器1040和协处理器1045的存储器和图形控制器;ioh1050将输入/输出(i/o)设备1060与gmch1090耦合。可替代地,存储器和图形控制器中的一个或两者集成在处理器内(如本文所描述的),在具有ioh1050的单个芯片中,存储器1040和协处理器1045直接与处理器1010和控制器集线器1020耦合。在图10中通过折线表示附加的处理器1015的任选本质。每个处理器1010、1015可以包括本文所描述的处理器核心中的一个或多个并且可以是某个版本的处理器900。存储器1040可以是例如动态随机存取存储器(dram)、相变存储器(pcm)、或两者的组合。对于至少一个实施例,控制器集线器1020经由诸如前端总线(fsb)的多点下传总线、诸如快速路径互连(qpi)的点对点接口、或类似的连接1095来与处理器1010、1015通信。在一个实施例中,协处理器1045是专用处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器等。在一个实施例中,控制器集线器1020可以包括集成图形加速器。从包括体系结构、微体系结构、热、功耗特性等利弊的度量范围方面看,在物理资源1010、1015之间可能存在多种差别。在一个实施例中,处理器1010执行控制通用类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1010将这些协处理器指令识别为应当由附接的协处理器1045执行的类型。因此,处理器1010在协处理器总线或其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发射到协处理器1045。协处理器1045接受并执行接收到的协处理器指令。现在参考图11,示出了根据本发明的实施例的第一更具体的示例性系统1100的框图。如图11所示,多处理器系统1100是点对点互连系统,并且包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每一个可以是某个版本的处理器900。在本发明的一个实施例中,处理器1170和1180分别是处理器1010和1015,而协处理器1138是协处理器1045。在另一实施例中,处理器1170和1180分别是处理器1010和协处理器1045。所示出的处理器1170和1180分别包括集成存储器控制器(imc)单元1172和1182。处理器1170还包括作为其总线控制器单元的部分的点对点(p-p)接口1176和1178的部分;类似地,第二处理器1180包括p-p接口1186和1188。处理器1170、1180可以使用p-p接口电路1178、1188经由点对点(p-p)接口1150交换信息。如图11所示,imc1172和1182将处理器与相应的存储器,即存储器1132和存储器1134耦合,相应的存储器可以是本地附接到相应的处理器上的主存储器的部分。处理器1170、1180的每一个可以使用点对点接口电路1176、1194、1186、1198经由各自的p-p接口1152、1154与芯片组1190交换信息。芯片组1190可以任选地经由高性能接口1139与协处理器1138交换信息。在一个实施例中,协处理器1138是专用处理器,诸如例如,高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器等。共享高速缓存(未示出)可以被包括在任一处理器内或者在两个处理器之外,而仍经由p-p互连与处理器连接,使得如果处理器被置于低功率模式下,则任意一个或两个处理器的本地高速缓存信息可以存储在共享高速缓存中。芯片集1190可以经由接口1196与第一总线1116耦合。在一个实施例中,第一总线1116可以是外围组件互连(pci)总线、或诸如快速pci总线或另一第三代i/o互连总线的总线,但是本发明的范围不限于此。如图11所示,各种i/o设备1114可以耦合到第一总线1116,连同将第一总线1116与第二总线1120耦合的总线桥1118。在一个实施例中,诸如协处理器、高吞吐量mic处理器、gpgpu、加速器(诸如例如,图形加速器或数字信号处理器(dsp)单元)、现场可编程门阵列、或任何其他处理器的一个或多个附加处理器1115与第一总线1116耦合。在一个实施例中,第二总线1120可以是低引脚计数(lpc)总线。在一个实施例中,各种设备可以与第二总线1120耦合,所述各种设备包括例如键盘和/或鼠标1122、通信设备1127和存储单元1128,存储单元例如可以包括指令/代码以及数据1130的磁盘驱动器或其他大容量存储设备。此外,音频i/o1124可以与第二总线1120耦合。注意的是,其他体系结构是可能的。例如,除了图11的点对点体系结构之外,系统可以实现多点总线或其他这样的体系结构。现在参考图12,示出了根据本发明的实施例的第二更具体的示例性系统1200的框图。在图11和图12中相似的元件承载相似的附图标记,并且在图12中省略了图11中的一些方面,以免使图12的其他方面不清晰。图12示出了处理器1170、1180分别可以包括集成存储器和i/o控制逻辑(“cl”)1172和1182。因此,cl1172、1182包括集成存储器控制器单元并且包括i/o控制逻辑。图12不仅示出了存储器1132、1134耦合到cl1172、1182,而且i/o设备1214还与控制逻辑1172、1182耦合。遗留i/o设备1215与芯片组1190耦合。现在参考图13,示出了根据本发明的实施例的soc1300的框图。在图9中相似的元件承载相似的附图标记。而且,虚线框是更先进的soc的任选特征。在图13中,互连单元1302与如下耦合:应用处理器1310,其包括一个或多个核心902a-n的集合和共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一个或多个协处理器1320的集合,其可以包括集成图形逻辑、图像处理器、音频处理器、和视频处理器;静态随机存取存储器(sram)单元1330;直接存储器存取(dma)单元1332;以及显示单元1340,其用于与一个或多个外部显示器耦合。在一个实施例中,协处理器1320包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、嵌入式处理器等。本文所公开的机制的实施例可以通过硬件、软件、固件或这样的实现方法的组合来实现。本发明的实施例可以实现为在包括至少一个处理器、存储系统(包括易失性的和非易失性的存储器和/或存储元件)、至少一个输入设备、和至少一个输出设备的可编程系统上执行的计算机程序或程序代码。诸如图11所示的代码1130的程序代码可以应用于输入指令以实施本文所描述的功能并且生成输出信息。输出信息可以以已知的方式应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器的任意系统,处理器诸如例如为数字信号处理器(dsp)、微控制器、专用集成电路(asic)、或微处理器。程序代码可以通过高级程序或面向对象的编程语言来实现以与处理系统通信。根据需要,程序代码还可以通过汇编或机器语言来实现。事实上,本文所描述的机制在范围上不限于任何特定的编程语言。在任意情况下,语言可以是编译或解释语言。至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,这些代表性指令代表了在处理器内的各种逻辑,当通过机器读取时,这些指令使机器制作出实施本文所描述的技术的逻辑。这些表示,称为“ip核心”可以存储在有形的、机器可读介质上,并且被供应给各种客户或制造设施,以装载到实际上制作逻辑或处理器的制作机器中。这样的机器可读存储介质可以包括但不限于通过机器或设备制造或形成的物品的非暂时性的、有形的布置,所述物品包括存储介质,诸如硬盘;任何其他类型的磁盘,包括软盘、光盘、压缩盘只读存储器(cd-rom)、压缩盘可重写(cd-rw)、和磁光盘;半导体器件,诸如只读存储器(rom)、随机存取存储器(ram),其诸如动态随机存取存储器(dram)、静态随机存取存储器(sram)、可擦除可编程只读存储器(eprom)、闪速存储器、电可擦除可编程只读存储器(eeprom)、相变存储器(pcm)、磁卡或光卡、或适合于存储电子指令的任何其他类型的介质。因此,本发明的实施例还包括非暂时性的、有形的机器可读介质,其包含指令或者包含设计数据,诸如硬件描述语言(hdl),其定义了本文所描述的结构、电路、装置、处理器和/或系统特征。这样的实施例还可以被称为程序产品。虽然结合附图描述和示出了一些示例性的实施例,但是应当理解这样的实施例仅是宽范围的示例而不是限制,而且本发明不局限于所示出和描述的具体构造和布置,因为在研究本公开之后其他各种变型对于本领域普通技术人员是显而易见的。在诸如这样的
技术领域
中,发展是快速的并且进一步的进步不易于预见,所以所公开的实施例由于技术进步而利于在布置和细节上轻易地做出改进,而不偏离本公开的主旨或随附权利要求书的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1