具有独立进位链的加法指令的制作方法

文档序号:6485329阅读:127来源:国知局
具有独立进位链的加法指令的制作方法
【专利摘要】提供了彼此之间没有数据依赖性的多个加法指令。第一加法指令将它的进位输出存储在标志寄存器的第一标志内,并且不修改标志寄存器内的第二标志。第二加法指令将它的进位输出存储在标志寄存器的第二标志内,并且不修改标志寄存器内的第一标志。
【专利说明】具有独立进位链的加法指令
【技术领域】
[0001]本发明的实施例一般涉及计算机处理器架构,更具体而言,涉及当被执行时导致特定结果的指令。
[0002]相关技术的描述
[0003]加法指令通常被包括在指令集架构(ISA)内。大量加法指令通常出现在乘法中。例如,公钥加密一般涉及需要多精度乘法的长整数运算。诸如模取幂之类的这些操作是高度计算密集的且涉及大量加法。负责设立企业的安全套接字层(SSL)事务的服务器可在短时间跨度内从企业客户机接收大量连接请求。每一个事务涉及包括大量整数乘法和加法的加密操作。低效的加法操作可减缓整体性能。
【专利附图】

【附图说明】
[0004]在各个附图的图形中,本发明的各实施例是作为示例而不是显示说明的,在附图中,类似的参考编号表示类似的元件。应注意,在本公开中对“一”或“一个”实施例的不同引用不一定指相同实施例,且这种引用表示至少一个。此外,当参考一个实施例描述特定特征、结构或特性时,认为在本领域技术人员学识范围内,可以与其他实施例一起实施这样的特征、结构或特性,不论是否有明确描述。
[0005]图1是具有含一个或多个加法指令的指令集的处理器的示例实施例的框图。
[0006]图2示出包括加法操作的乘法操作的示例。
[0007]图3示出包括加法指令的样本代码的示例。
[0008]图4示出加法指令的并行执行的实施例。
[0009]图5是具有执行单元的指令处理装置的示例实施例的框图,该执行单元可操作用于执行包含加法指令的示例实施例的指令。
[0010]图6示出标志寄存器的实施例。
[0011]图7是示出用于处理加法指令的方法的示例实施例的流程图。
[0012]图8是根据本发明一个实施例的系统的框图。
[0013]图9是根据本发明的实施例的第二系统的框图。
[0014]图10是根据本发明的实施例的第三系统的框图。
[0015]图11是根据本发明的实施例的芯片上系统(SoC)的框图。
[0016]图12是根据本发明的实施例的具有集成的存储器控制器和图形器件的单核处理器和多核处理器的框图。
[0017]图13是根据本发明的实施例的对比使用软件指令变换器将源指令集中的二进制指令变换成目标指令集中的二进制指令的框图。
【具体实施方式】
[0018]在下面的描述中,阐述了很多具体细节。然而,应当理解,本发明的各实施例可以在不具有这些具体细节的情况下得到实施。在其他实例中,公知的电路、结构和技术未被详细示出以免混淆对本描述的理解。
[0019]在下面的描述中,阐述了很多具体细节。然而,应当理解,本发明的各实施例可以在不具有这些具体细节的情况下得到实施。在其他实例中,公知的电路、结构和技术未被详细示出以免混淆对本描述的理解。
[0020]本发明的实施例提供了有效地加长整数的机制。特定地,本发明的实施例提供了与加法操作并行地有效地乘大量长整数的机制。
[0021]图1是处理器100的示例实施例的框图。该处理器100可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合、或完全其他类型的处理器中的任何处理器。在一个或多个实施例中,处理器100可以是通用处理器(例如由美国加利福尼亚州圣克拉拉市的英特尔公司制造的类型的通用微处理器),尽管这不是必需的。替换地,指令处理处理装置可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器),仅列举数例。
[0022]处理器100具有指令集架构(ISA) 101。指令集架构101表示与编程相关的处理器100的架构的一部分指令集架构101通常包括本地指令、架构寄存器、数据类型、寻址模式、存储器架构、中断和异常处理以及处理器100的外部输入和输出(I/O)。指令集架构101与微架构不同,微架构通常表示选择用于实现指令集架构的特定处理器设计技术。带有不同的微架构的处理器可以共享共同的指令集架构。例如,加利福尼亚州圣克拉拉的英特尔公司的某些微处理器和加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices, Inc.)的某些微处理器使用本质上不同的内部微架构来实现x86指令集的类似部分。
[0023]指令集架构101包括架构寄存器(例如,架构寄存器组)106。在一个实施例中,架构寄存器106包括通用(GP)寄存器、标志寄存器、向量寄存器、写掩码寄存器、标量浮点寄存器、以及其他寄存器。架构寄存器106表示板上处理器存储位置。架构寄存器106此处也可以被简称为寄存器。短语架构寄存器、寄存器组、以及寄存器在本文中用于表示对软件和/或编程器(例如,软件可见的)和/或由宏指令指定来标志操作数(operand)的寄存器,除非另外予以指定或清楚明显可知。这些寄存器106与给定微架构(例如,临时寄存器、重排序缓冲器、引退(retirement)寄存器等)中的其他非架构寄存器形成对比。
[0024]所示的指令集架构101还包括由处理器100支持的指令集102。指令集102包括若干不同类型的指令。指令集102的这些指令表示宏指令(例如,提供给处理器100以供执行的指令),与微指令或微操作(例如,从处理器100的解码器129解码宏指令得到的)不同。
[0025]在一个实施例中,指令集102包括一个或多个加法指令103 (如,ADCX指令104和ADOX指令105),这些指令可操作来造成或使得处理器100将两个操作数(如,两个四字(Qwords)、两个双字(Dwords)或具有其他数据宽度的两个操作数)加起来。ADCX104和AD0X105指令使用两个独立的进位链且因此一旦它们各自数据输入可用就可并行地指令。
[0026]处理器100还包括执行逻辑109。执行逻辑109可操作用于执行或处理指令集102的指令。执行逻辑109可包括执行单元、功能单元、算术逻辑单元、逻辑单元、算术单元等。处理器100还包括解码器,用以将宏指令解码成微指令或微操作以供执行逻辑109执行。[0027]为了进一步说明加法指令103的实施例,考虑其中需要加法的示例性场景可能是有帮助的。图2是示出计算表达式(S[7:0] = AixB[7:0]+S[7:0])的示例性场景的图,其中Ai是四字(Qword),且每一AB1^PSn(η = O, I,…7)也是四字。每一个四字有64位宽。在图2中,位于顶部的S[7:0](表示为230)是初始的部分和,且位于底部的S[7:0](表示为240)是作为结果的部分和。对于每一个乘法操作210 (AiXBn, η = O, I,…7),生成(64x64)=128位的乘积。每一个乘积被表示为(Hin=Lon),如图的对角线中的条目所示,其中叫是高阶部分(即,最高有效的一半)且Lon是低阶部分(即,最低有效的一半)。以最少数量的微操作(μ ops)和延时,可将这个乘积加到部分和sn。将这个乘积加到部分和的一个方式花费两个加法操作,每一个加法操作使用一个独立的进位链:
[0028]Sn = Sn+Lon (式 I),
[0029]Sn = Sn+Hin_i (式 2)。
[0030]假设S[7:0] —开始全都为零。在由图2中的垂直虚线所示的示例性加法操作220之后,加法操作等效于:S0 = S0+Lo0, S1 = Si+LOi+Hig, S2 = SjLofHi1, S3 = S3+Lo3+Hi2 等。
[0031]在图2的示例中,Ai与Bn相乘,η = O, I,…7,其中Ai可以是第一长整数A的一部分,且每一个Bn可以是第二长整数B的一部分。该乘法使用Sn,n = O, I, ".7来存储该部分和。在(AtlXBn, η = O, I,…7)的乘法操作后,计算可移至AlXBn,Α2χΒη,以此类推,直到长整数A的所有部分都被处理。每一个乘法操作可使用Sn来累加部分和。最后,S [7:0] 240具有最终结果。
[0032]本发明的实施例提供可高效地执行的加法指令103。特定地,在具有多个算术逻辑单元(ALU)的处理器中,一旦它们各自数据输入(LowHilri)可用,就可并行地由两个不同的ALU来执行(式I)和(式2)中 的加法。在一个实施例中,可由ADCX104/AD0X105指令之一来执行(式I)中的加法,且可由ADCX104/AD0X105指令中的另一个来执行(式2)中的加法。
[0033]在一个实施例中,ADCX104除了 CF (进位标志)外不修改算术标志,且AD0X105除了 OF(溢出标志)外不修改算术标志。即,ADCX104仅读取和写入CF标志而不改变其他标志,且AD0X105仅读取和写入OF标志而不改变其他标志。通过将每一次加法指令限制为仅访问一个标志,可定义并执行两个或更多个这样的加法指令(每个访问不同标志),而不导致任何数据依赖性。这与重写多个或全部算术标志且因此不能各自独立执行的现有加法指令相反。
[0034]在可选实施例中,ADCX104和AD0X105使用它们各自相关联的标志(即,分别是CF和0F)来实现进位输入和进位输出,且没有修改各自的相关联的标志。然而,如,通过将其他算术标志(如,SF, PF, AF, ZF等)设置为零或另一个预定值,ADCX104和AD0X105也可以修改这些算术标志。
[0035]在一个实施例中,将加法指令的实施例定义如下:
[0036]ADCX104:
[0037]CF:regdst = regl+reg2+CF ;且
[0038]AD0X105:
[0039]0F:regdst = regl+reg2+0F。
[0040]尽管在说明书中描述了标志CF和0F,但是应该理解,可对于(式I)和(式2)的加法操作使用处理器的标志寄存器的任何两个不同算术标志。进一步,如上所述,还可使用不同算术标志来类似地定义其他加法指令;如,可将ADAX指令定义为仅读取和写入AF标志而不改变其他标志,可将ADPF指令定义为仅读取和写入PF标志而不改变其他标志,等等。regl、reg2、和regdst的数据宽度是相同的且可以是任何大小。在一些实施例中,目标regdst可以与regl或reg2相同(即,该和可重写源寄存器之一)。
[0041]图3是样本代码300的示例,在两个长的数的乘法Α[0:Ν-1]χΒ[0:Ν-1]中包括ADCX 和 ADOX (图1 的 ADCX104 和 AD0X105)。A 和中 Bn(n = 0,….,N-1)的每一个是四字(但是可使用不同数据宽度)。样本代码300将计算分解为AiXB[0:N-l] (i = O, -.N-1)序列,诸如图2的图中对角线序列。可将该计算分组为MULX、ADCX、和AD0X。在一个实施例中,其中数据宽度是64位,MULX指令定义为执行64位数字与另一个64位数字(存储于RDX寄存器中,作为隐操作数)的无符号乘法,并且不影响任何算术标志。
[0042]MULX: r64a, r64b, r/m64,
[0043]其中r64a表不存储乘法积的最高有效的一半的第一个64位寄存器,r64b表不存储乘法积的最低有效的一半的第二个64位寄存器,且r/m64表示用作乘法的输入的64位寄存器或存储器位置。在样本代码300开始时,假设64位值Ai被分配至RDX寄存器,且执行XOR来清除所有算术标志。在一个实施例中,rax、rbx、和RDX的每一个是64位寄存器,诸如通用目的寄存器。
[0044]使用图2的示例,样本代码300对应于如下运算:
[0045]Hi0: Lo0 = AiXB0
[0046]CF:S0 = S0+Lo0+CF
[0047]OF = S1 = SAHic^OF
[0048]Hi1: Lo1 = AiXB1
[0049]Cf = S1 = SALoACF
[0050]OF = S2 = SdHiJOF
[0051]Hi2: Lo2 = AiXB2
[0052]CFiS2 = S2+Lo2+CF
[0053]OF: S3 = S3+Hi2+0F
[0054]由于ADCX和ADOX使用两个不同标志,只要它们各自数据输入可用,它们可被并行地执行。在具有3个分配端口(即,3ALU)的一些实施例中,假设MULX、ADCX和ADOX在全都具有I的吞吐量的不同的ALU上,单个yopMULX、单个μ op ADCX和单个μ op ADOX可实现每乘法三元组(即,三元组MULT/ADCX/AD0X) —个周期的最大吞吐量。在另一个实施例中,MULX花费2 μ ops且ADCX和ADOX各一个μ op。因此,假设全都在具有吞吐量I的不同ALU上,需要至少4个ALU来实现每个乘法三元组一个周期的最大吞吐量。MULX、ADCXjPADOX可在具有较少A LU的机器上起作用,但是将不能获得最大性能。
[0055]图4是示出乘法三元组的并行处理的实施例的框图。该图示出在每一周期期间,MULT可开始执行。当执行继续时,在每一周期(如,I μ op)中,新的MULT可与一对ADCX和ADOX同时地开始执行(如,在周期3-6的每一个中所示)。特定地,可并行地在同一周期期间,处理ADCX和AD0X。只要在每一周期时存在足够数量的ALU来支持新的MULT的开始,MULT的长度可就花费任何数量的周期(如,一个、两个、或更多个),且不管MULT操作的长度,可实现每个三元组一个周期的吞吐量。
[0056]图4的示例示出在相同周期内并行地执行ADCX和AD0X。然而,只要它们各自数据输入可用,可在不同周期执行这两个指令。由于在这两个指令之间不存在任何数据依赖性(即,进位输入/输出),只要它们相关联的乘法结果的最高有效的一半/最低有效的一半可用,就可执行ADCX/AD0X。例如,如果在第η个周期内生成乘法结果的最低有效一半,且在第η+1个周期内生成乘法结果的最高有效一半,在这些周期后当它们各自的最后源可用时(即,分别在连续周期第(Ν+1)个和第(Ν+2)个周期)可尽早执行使用这些结果的ADCX和AD0X。即,可在没有任何数据依赖性的情况下,并行地或以任何顺序来执行ADCX和AD0X。
[0057]图5是具有执行单元540的指令处理装置515的实施例的框图,该执行单元440可操作用于执行包含图1的加法指令103的示例实施例的指令。在一些实施例中,指令处理装置515可以是处理器,和/或可被包括在处理器(例如,图1的处理器100或类似装置)中。替换地,指令处理装置515可被包括在不同的处理器或电子系统中。
[0058]指令处理装置515接收一个或多个加法指令103 (如,图1的ADCX104和AD0X105)。解码器530可以是图1的解码器129或一个类似装置,该解码器530接收高级机器指令或宏指令形式的指令,并且将所述指令解码以生成低级微操作、微代码进入点、微指令或其他低级指令或控制信号,它们反映了原始的高级指令和/或从原始的高级指令导出。较低级指令或控制信号可通过较低级(例如,电路级或硬件级)操作来实现较高级指令的操作。解码器530可使用各种不同的机制来实现。合适机制的示例包括但不限于微代码、随机存取存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、用于实现本领域已知的解码器的其他机制等。在一些微架构的实施例中,可在不首先由解码器解码的情况下直接执行宏指令。
[0059]执行单元540耦合至解码器530。执行单元540可从解码器530接收一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号,它们反映了所接收的加法指令103或者是从所接收的加法指令103导出的。执行单元540包括加法逻辑542来执行加法。
[0060]执行单元540还从寄存器接收输入,诸如通用(GP)寄存器570。执行单元540从标志寄存器580接收进位输入,且将进位输出存储在标志寄存器580内。在一个实施例中,第一加法指令(如,ADCX104)使用第一标志581进行进位输出和进位输出,且第二加法指令(如,AD0X105)使用第二标志582进行进位输出和进位输出。如上所述,可提供更多加法指令,各自使用不同的标志进行进位输出和进位输出。
[0061]为了避免混淆描述,已示出和描述了相对简单的指令处理装置515。应当理解,其他实施例可具有超过一个执行单元。例如,装置可包括多个不同类型的执行单元,诸如例如算术单元、算术逻辑单元(ALU)、整数单元、浮点单元等。这些单元中的至少一个可响应于如本文公开的循环对齐指令的实施例。指令处理装置或处理器的再其他实施例可具有多个核、逻辑处理器或执行引擎。可操作用于执行一个或多个循环对齐指令的执行单元可被包含在核、逻辑处理器或执行引擎中的至少一个、至少两个、大多数或全部中。
[0062]指令处理装置515或处理器还可以可任选地包括一个或多个其他已知的组件。例如,其它实施例可包括指令取出逻辑、调度逻辑、分支预测逻辑、指令和数据缓存、指令和数据转换后备缓冲器、预取缓冲器、微指令队列、微指令序列发生器、总线接口单元、第二或更高级缓存、指令调度逻辑、引退逻辑、寄存器重命名逻辑等中的一个或多个或它们的各种组合。应意识到实际上在处理器中存在这些组件的多种不同的组合和配置,并且本发明的范围不限于任意已知的这些组合配置。
[0063]图6示出表示具有多个标志的标志寄存器的示例实施例的EFLAGS寄存器600。在一个实施例中,EFLAGS寄存器600是32位寄存器,包括一组状态寄存器(也称为算术标志,诸如COSPAZ标志)、控制标志、和一组系统标志。
[0064]状态标志包括进位标志(CF,位O) 610、奇偶标志(PF,位2)、辅助进位标志(AFji
4)、零标志(ZF,位6)、符号标志(SF,位7)、和溢出标志(0F,位11)620。如上所述,在一个或多个实施例中,进位标志(CF,位O)和溢出标志(0F,位11)可用作与此处公开的加法指令相关联的第一和第二标志581、582。为此理由强调了 CF和0F,但是不要求使用这些特定
O
[0065]系统标志包括陷入标志(TF,位8)、中断启用标志(IF,位9)、1/0特权级(10PL,位12-13)、嵌套任务(NT,位14)、恢复标志(RF,位16)、虚拟-8086模式(VM,位17)、对齐检查(AC,位18)、虚拟中断标志(VIF,位19)、虚拟中断未决标志(VIP,位20)、和ID标志(ID,位21)。控制标志包括方向标志(DF,位10)。保留EFLAGS的位22-31。
[0066]EFLAGS寄存器600是具有合适标志用于实现一个或多个实施例的寄存器的一个特定示例实施例,但是并非特定地要求这个特定寄存器和这些特定标志。
[0067]图7是处理加法指令(诸如图1的加法指令103)的示例实施例的方法700的示例实施例的流程图。在各实施例中,方法700的方法可由通用处理器、专用处理器(例如,图形处理器或数字信号 处理器)、或另一种类型的数字逻辑设备或指令处理装置执行。在一些实施例中,方法700可由图1的处理器100、图5的指令处理装置515或类似的处理器或指令处理装置执行。或者,方法700可由处理器或指令处理装置的不同实施例执行。此外,图1的处理器100和图5的指令处理装置515可执行与方法700的操作和方法相同、类似或不同的操作和方法的实施例。
[0068]在一个实施例中,方法700包括处理器接收第一加法指令(框710)。第一加法指令指示在标志寄存器内的第一标志。然后该处理器接收第二加法指令(框720)。第二加法指令指示在标志寄存器内的第二标志。执行第一加法指令和第二加法指令,在第一加法指令和第二加法指令之间没有数据依赖性(框730)。处理器在第一标志中存储来自第一加法指令的进位输出,并且不修改标志寄存器内的第二标志(框740)。处理器还在第二标志中存储来自第二加法指令的进位输出,并且不修改标志寄存器内的第一标志(框750)。
[0069]所示的方法包括从处理器或指令处理装置外部可见的操作(例如,从软件观点)。在其它实施例中,方法可任选地包括一个或多个其它操作(例如,在处理器或指令处理器装置内部发生的一个或多个操作)。作为示例,在接收到指令之后,可将指令解码、转换、仿真或以其它方式变换成一个或多个其它指令或控制信号。
[0070]示例性计算机系统和处理器-图8-12
[0071]图8-12是示例性计算机系统和处理器。本领域已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般来说,能够纳入本文中所公开的处理器和/或其它执行逻辑的大量系统和电子设备一般都是合适的。
[0072]现在参考图8,所示出的是根据本发明实施例的系统1300的框图。系统1300可包括耦合至图形存储器控制器中枢(GMCH) 1320的一个或多个处理器1310、1315。附加处理器1315的任选性质用虚线表示在图8中。
[0073]每一处理器1310、1315可以是处理器1700的某种版本。然而,应该注意,集成图形逻辑和集成存储器控制单元未必存在于处理器1310、1315中。
[0074]图8示出GMCH1320可耦合至存储器1340,该存储器1340可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性缓存相关联。
[0075]GMCH1320可以是芯片组或芯片组的一部分。GMCH1320可以与处理器1310、1315进行通信,并控制处理器1310、1315与存储器1340之间的交互。GMCHl320还可用作处理器1310、1315和系统1300的其它元件之间的加速总线接口。对于至少一个实施例,GMCH1320经由诸如前端总线(FSB) 1395之类的多分支总线与处理器1310、1315进行通信。
[0076]此外,GMCHl320耦合至显示器1345(诸如平板显示器)。GMCHl320可包括集成图形加速器。GMCH1320还耦合至输入/输出(I/O)控制器中枢(ICH) 1350,该输入/输出(I/O)控制器中枢(ICH) 1350可用于将各种外围设备耦合至系统1300。在图8的实施例中作为示例示出了外部图形设备1360以及另一外围设备1370,该外部图形设备1360可以是耦合至ICH1350的分立图形设备。
[0077]可选地,系统1300中还可存在附加或不同的处理器。例如,附加处理器1315可包括与处理器1310相同的附加处理器、与处理器1310异类或不对称的附加处理器、加速器(诸如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。按照包括架构、微架构、热、功耗特征等等一系列品质度量,物理资源1310、1315之间存在各种差别。这些差别会有效显示为处理元件1310、1315之间的不对称性和异类性。对于至少一个实施例,各种处理元件1310、1315可驻留在同一管芯封装中。
[0078]现在参照图9,所示出的是根据本发明一实施例的第二系统1400的框图。如图9所示,多处理器系统1400是点对点互连系统,并包括经由点对点互连1450耦合的第一处理器1470和第二处理器1480。如图9所示,处理器1470和1480中的每个可以是处理器1700的某一版本。
[0079]可选地,处理器1470、1480中的一个或多个可以是除处理器之外的元件,诸如加速器或现场可编程门阵列。
[0080]虽然仅以两个处理器1470、1480来示出,但应理解本发明的范围不限于此。在其它实施例中,在给定处理器中可存在一个或多个附加处理元件。
[0081]处理器1470还可包括集成存储器控制器中枢(MC) 1472和点对点(P-P)接口1476和1478。类似地,第二处理器1480包括MC1482和P-P接口 1486和1488。处理器1470、1480可以经由使用点对点(PtP)接口电路1478、1488的点对点(PtP)接口 1450来交换数据。如图9所示,IMC1472和1482将处理器耦合到相应的存储器,即存储器1442和存储器1444,这些存储器可以是本地附连到相应处理器的主存储器部分。
[0082]处理器1470、1480可各自经由使用点对点接口电路1476、1494、1486、1498的各个P-P接口 1452、1454与芯片组1490交换数据。芯片组1490还可经由高性能图形接口 1439与高性能图形电路1438交换数据。[0083]共享高速缓存(未示出)可以被包括在任一处理器之内或被包括两个处理器外部但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
[0084]芯片组1490可经由接口 1496耦合至第一总线1416。在一个实施例中,第一总线1416可以是外围部件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总线之类的总线,但本发明的范围并不受此限制。
[0085]如图9所示,各种I/O设备1414可以连同总线桥1418耦合到第一总线1416,总线桥1418将第一总线1416耦合至第二总线1420。在一个实施例中,第二总线1420可以是低引脚数(LPC)总线。在一个实施例中,各设备可耦合到第二总线1420,包括例如键盘和/或鼠标1422、通信设备1426、以及可包括代码1430的诸如盘驱动器或其它大容量存储设备的数据存储单元1428。进一步地,音频1/01424可以耦合到第二总线1420。注意,其它架构是可能的。例如,取代图9的点对点架构,系统可以实现多分支总线或其它这类架构。
[0086]现在参照图10,所示出的是根据本发明实施例的第三系统1500的框图。图9和图10中的相同部件用相同附图标记表示,并从图10中省去了图9中的某些方面,以避免使图10的其它方面变得难以理解。
[0087]图10示出处理元件1470、1480可分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。对于至少一个实施例,CL1472、1482可包括诸如以上结合图8、9和14所描述的存储器控制器中枢逻辑(MC)。此外。CL1472U482还可包括I/O控制逻辑。图15不仅示出耦合至CL1472、1482的存储器1442、1444,而且还示出同样耦合至控制逻辑1472、1482的I/O设备1514。传统I/O设备1515被耦合至芯片组1490。
[0088]现在参考图11,示出了根据本发明的一个实施例的SoC1600的框图。在图12中,相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图11中,互连单元1602被耦合至:应用处理器1610,包括一个或多个核1702A-N的集合和共享高速缓存单元1706 ;系统代理单元1710 ;总线控制器单元1716 ;集成存储器控制器单元1714 ;一个或多个媒体处理器1620的集合,可包括集成图形逻辑1708、用于提供静态和/或视频照相机功能的图像处理器1624、用于提供硬件音频加速的音频处理器1626、以及用于提供视频编码/解码加速的视频处理器1628 ;静态随机存取存储器(SRAM)单元1630 ;直接存储器存取(DMA)单元1632 ;以及显示单元1640,用于耦合至一个或多个外部显示器。
[0089]本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
[0090]可将程序代码应用至输入数据以执行本文描述的功能并产生输出信息。输出信息可以按已知方式被应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
[0091]程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。程序代码也可以在需要的情况下用汇编语言或机器语言来实现。事实上,本文中描述的机制不仅限于任何特定编程语言的范围。在任一情形下,语言可以是编译语言或解释;五古
P口口 O
[0092]至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表征性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。被称为“IP核”的这些表示可以被存储在有形的机器可读介质上,并被提供给多个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
[0093]此类机器可读存储介质可包括但不限于通过机器或设备制造或形成的非易失性的粒子有形排列,包括存储介质,诸如:硬盘;包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘的任何其它类型的盘;诸如只读存储器(ROM)之类的半导体器件;诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机存取存储器(RAM);可擦除可编程只读存储器(EPROM);闪存;电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
[0094]因此,本发明的各实施例还包括非瞬态、有形机器可读介质,该介质包含向量友好指令格式的指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特性。这些实施例也被称为程序产品。
[0095]在某些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上部分在处理器外。
[0096]图13是根据本发明的实施例的对比使用软件指令变换器将源指令集中的二进制指令变换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代该指令转换器可以用软件、固件、硬件或其各种组合来实现。图13示出可以使用x86编译器1802来编译高级语言1804的程序,以便生成可以由具有至少一个x86指令集核的处理器1816原生执行的x86 二进制代码1806 (假设指令中的一些是以向量友好指令格式编译)。具有至少一个x86指令集核的处理器1816表示任何处理器,该处理器能够通过兼容地执行或以其它方式处理(I)英特尔x86指令集核的指令集的大部分或
(2)旨在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的目标代码版本来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能,以实现与具有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1804表示用于生成x86 二进制代码1806 (例如,对象代码)的编译器,该二进制代码1806可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1816上执行。类似地,图13示出用高级语言1802的程序可以使用替代的指令集编译器1808来编译,以生成可以由不具有至少一个x86指令集核的处理器1814(例如具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集,和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代指令集二进制代码1810。指令转换器1812被用来将x86 二进制代码1806转换成可以由不具有x86指令集核的处理器1814原生执行的代码。该转换后的代码不大可能与替换性指令集二进制代码1810相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替换性指令集的指令构成。因此,指令转换器1812通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86 二进制代码1806的软件、固件、硬件或其组合。
[0097]本文公开的向量友好指令格式的指令的某些操作可由硬件组件执行,且可体现在机器可执行指令中,该指令用于导致或至少致使电路或其它硬件组件以执行该操作的指令编程。电路可包括通用或专用处理器、或逻辑电路,这里仅给出几个示例。这些操作还可任选地由硬件和软件的组合执行。执行逻辑和/或处理器可包括响应于从机器指令导出的机器指令或一个或多个控制信号以存储指令指定的结果操作数的专用或特定电路或其它逻辑。例如,本文公开的指令的实施例可在图8-12的一个或多个系统中执行,且向量友好指令格式的指令的实施例可存储在将在系统中执行的程序代码中。另外这些附图的处理元件可利用本文详细描述的详细描述的流水线和/或架构(例如有序和无序架构)之一。例如,有序架构的解码单元可解码指令、将经解码的指令传送到向量或标量单元等。
[0098]上述描述旨在说明本发明的优选实施例。根据上述讨论,还应当显而易见的是,在发展迅速且进一步的进展难以预见的此【技术领域】中,本领域技术人员可在安排和细节上对本发明进行修改,而不背离落在所附权利要求及其等价方案的范围内的本发明的原理。例如,方法的一个或多个操作可组合或进一步分开。
[0099]可选实施例
[0100]尽管已经描述了将本地执行向量友好指令格式的实施例,但本发明的可选实施例可通过运行在执行不同指令集的处理器(例如,执行美国加利福亚州桑尼维尔的MIPS技术公司的MIPS指令集的处理器、执行加利福亚州桑尼维尔的ARM控股公司的ARM指令集的处理器)上的仿真层来执行向量友好指令格式。同样,尽管附图中的流程图示出本发明的某些实施例的特定操作顺序,按应理解该顺序是示例性的(例如,可选实施例可按不同顺序执行操作、组合某些操作、使某些操作重叠等)。
[0101]在以上描述中,为解释起见,阐明了众多具体细节以提供对本发明的实施例的透彻理解。然而,将对本领域技术人员明显的是,没有这些具体细节中的一些也可实践一个或多个其他实施例。提供所描述的具体实施例不是为了限制本发明而是为了说明本发明的实施例。本发明的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。
[0102]应当理解,以上描述旨在是说明性的而非限制性的。在阅读并理解以上描述之后,许多其它实施方式对本领域内技术人员而言将是显而易见的。因此,本发明的范围应参考所附权利要求书以及使这些权利要求享有权利的等效方案的完全范围来确定。
【权利要求】
1.一种方法,包括: 接收第一加法指令; 接收第二加法指令; 执行所述第一加法指令和所述第二加法指令,所述第一加法指令和所述第二加法指令之间没有数据依赖性; 将所述第一加法指令的第一进位输出存储在标志寄存器的第一标志中,并且不修改标志寄存器中的第二标志;以及 将所述第二加法指令的第二进位输出存储在所述标志寄存器的所述第二标志中,并且不修改所述第一标志。
2.如权利要求1所述的方法,其特征在于,还包括: 接收乘法指令来将第一因数和第二因数相乘;且 将所述第一因数和所述第二因数相乘来产生乘积,所述乘积包括最低有效的一半和最高有效的一半,且所述最低有效的一半是所述第一加法指令的源操作数,所述最高有效的一半是所述第二加法指令的源操作数。
3.如权利要求2所述的方法,其特征在于,还包括: 接收所述乘法指令、所述第一加法指令、和所述第二加法指令作为三个连续指令。
4.如权利要求1所述的方法,其特征在于,所述第一加法指令读取所述第一标志以获得进位输入,且所述第二加法指令读取所述第二标志以获得进位输入。
5.如权利要求4所述的方法,其特征在于,所述第一标志是进位标志与溢出标志中的一个,且所述第二标志是所述进位标志与溢出标志中的另一个。
6.如权利要求1所述的方法,其特征在于,还包括: 接收第三加法指令,所述第三加法指令读取所述标志寄存器的第三标志作为进位输入;且 将第三进位输出存储到所述第三标志中,并且不修改所述标志寄存器中的所述第一标志、所述第二标志、和其他标志。
7.如权利要求1所述的方法,其特征在于,还包括: 接收减法指令,所述减法指令读取所述标志寄存器的第三标志作为借位输入;且 将借位输出存储到所述第三标志中,并且不修改所述标志寄存器中的所述第一标志、所述第二标志、和其他标志。
8.一种装置,包括: 包括至少第一标志和第二标志的标志寄存器; 耦合至所述标志寄存器的执行逻辑,用于执行所述第一加法指令和所述第二加法指令、将所述第一加法指令的第一进位输出存储在所述第一标志中并且不修改所述第二标志、以及将所述第二加法指令的第二进位输出存储在所述第二标志中并且不修改所述第一标志,第一加法指令和第二加法指令之间没有数据依赖性。
9.如权利要求8所述的装置,其特征在于,所述执行逻辑将第一因数和第二因数相乘且从而藉此产生乘积,所述乘积包括最低有效的一半和最高有效的一半,且所述最低有效的一半是所述第一加法指令的源操作数,且所述最高有效的一半是所述第二加法指令的源操作数。
10.如权利要求9所述的装置,其特征在于,所述执行逻辑用于接收所述乘法指令、所述第一加法指令、和所述第二加法指令作为三个连续指令。
11.如权利要求8所述的装置,其特征在于,所述第一加法指令读取所述第一标志以获得进位输入,且所述第二加法指令读取所述第二标志以获得进位输入。
12.如权利要求11所述的装置,其特征在于,所述第一标志是进位标志与溢出标志中的一个,且所述第二标志是所述进位标志与溢出标志中的另一个。
13.如权利要求8所述的装置,其特征在于,所述执行逻辑用于接收第三加法指令,所述第三加法指令读取所述标志寄存器的第三标志作为进位输入,且所述执行逻辑用于将第三进位输出存储到所述第三标志中并且不修改所述标志寄存器中的所述第一标志、所述第二标志、和其他标志。
14.如权利要求8所述的装置,其特征在于,所述执行逻辑用于接收减法指令,所述减法指令读取所述标志寄存器的第三标志作为借位输入,且所述执行逻辑用于将借位输出存储到所述第三标志中并且不修改所述标志寄存器中的所述第一标志、所述第二标志和其他
O
15.—种系统,包括: 互连; 与所述互连耦合的 处理器,所述处理器包括: 包括至少第一标志和第二标志的标志寄存器; 耦合至所述标志寄存器的执行逻辑,用于执行所述第一加法指令和所述第二加法指令、将所述第一加法指令的第一进位输出存储在所述第一标志中并且不修改所述第二标志、以及将所述第二加法指令的第二进位输出存储在所述第二标志中并且不修改所述第一标志,第一加法指令和第二加法指令之间没有数据依赖性;以及 耦合到所述互连的动态随机存取存储器(DRAM)。
16.如权利要求15所述的系统,其特征在于,所述执行逻辑用于将第一因数和第二因数相乘且从而藉此产生乘积,所述乘积包括最低有效的一半和最高有效的一半,且所述最低有效的一半是所述第一加法指令的源操作数,且所述最高有效的一半是所述第二加法指令的源操作数。
17.如权利要求16所述的系统,其特征在于,所述执行逻辑用于接收所述乘法指令、所述第一加法指令、和所述第二加法指令作为三个连续指令。
18.如权利要求15所述的系统,其特征在于,所述第一加法指令读取所述第一标志以获得进位输入,且所述第二加法指令读取所述第二标志以获得进位输入。
19.如权利要求18所述的系统,其特征在于,所述第一标志是进位标志与溢出标志中的一个,且所述第二标志是所述进位标志与溢出标志中的另一个。
20.如权利要求15所述的系统,其特征在于,所述执行逻辑用于接收第三加法指令,所述第三加法指令读取所述标志寄存器的第三标志作为进位输入,且所述执行逻辑用于将第三进位输出存储到所述第三标志中并且不修改所述标志寄存器中的所述第一标志、所述第二标志、和其他标志。
21.如权利要求15所述的系统,其特征在于,所述执行逻辑用于接收减法指令,所述减法指令读取所述标志寄存器的第三标志作为借位输入,且所述执行逻辑用于将借位输出存储到所述第三标志中并且不修改所述标志寄存器中的所述第一标志、所述第二标志、和其他标 志。
【文档编号】G06F9/305GK104011666SQ201180075816
【公开日】2014年8月27日 申请日期:2011年12月22日 优先权日:2011年12月22日
【发明者】V·戈帕尔, J·D·吉尔福德, G·M·沃尔里齐, W·K·费格哈利, E·奥兹图科, M·G·迪克森, S·P·米莱克斯, M·C·梅尔腾, 李瞳, B·L·托尔 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1