当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于多精度算术的SIMD整数乘法累加指令制造技术

技术编号:10564449 阅读:226 留言:0更新日期:2014-10-22 16:27
乘法和累加(MAC)指令允许无符号的整数乘法的高效执行。MAC指令指示第一向量寄存器作为第一操作数、第二向量寄存器作为第二操作数和第三向量寄存器作为目的地。第一向量寄存器存储第一因数,且第二向量寄存器存储部分和。执行MAC指令以将第一因数与隐含的第二因数相乘以生成乘积,并且将部分和与乘积相加以生成结果。第一因数、隐含的第二因数以及部分和具有相同的数据宽度,且乘积具有两倍的数据宽度。将结果的最高有效半部分存储在第三向量寄存器中,且将结果的最低有效半部分存储在第二向量寄存器中。

【技术实现步骤摘要】
【国外来华专利技术】用于多精度算术的SIMD整数乘法累加指令
本专利技术的实施例一般涉及计算机处理器架构,更具体而言,涉及当被执行时导致特定结果的指令。相关技术的描述许多处理器具有单指令多数据(SIMD)架构。该SIMD架构通常有助于显著提高处理速度。在SIMD架构中,与仅在一个数据元素或一对数据元素上操作的标量指令不同,向量指令(也称为打包数据指令或SIMD指令)可在多个数据元素、或多对数据元素上同时和/或并行地操作。处理器可具有并行执行硬件,该并行执行硬件响应于向量指令来同时或并行地执行多个操作。在SIMD架构中,可将多个数据元素打包在一个寄存器或存储器位置内作为打包数据或向量数据。在向量数据中,寄存器或其他存储位置的位可被逻辑地划分成多个固定大小的数据元素的序列。数据元素中的每一个可表示个体数据片,该个体数据片连同通常具有相同大小的其他数据元素一起被存储在寄存器或存储位置中。例如,256位宽寄存器可具有四个64位宽向量元素,八个32位宽向量元素,十六个16位宽向量元素,或三十二个8位宽向量元素。每一个向量元素可表示独立的个体数据片段,可与其它数据片断分开地或独立地在该数据片段上操作。代表性地,向量加法指令可以指定在来自两个源向量操作数的所有相应数据元素对上执行单个向量操作(例如,加法)以生成目的或结果向量。这些源向量操作数是相同大小,可包含相同宽度的数据元素,如此,可各自包含相同数量的数据元素。两个源向量操作数中的相同的位位置中的源数据元素可以表示相应的数据元素对。可以分开地或独立地对这些相应的源数据元素对中的每一个执行向量操作,以便生成匹配数量的结果数据元素,且因而每一对相应的源数据元素可以具有相应的结果数据元素。通常,这样的指令的结果数据元素是以相同的次序,且它们常常具有相同的大小。附图说明在各个附图的图形中,本专利技术的各实施例是作为示例而不是显示说明的,在附图中,类似的参考编号表示类似的元件。应注意,在本公开中对“一”或“一个”实施例的不同引用不一定指相同实施例,且这种引用表示至少一个。此外,当结合一个实施例描述特定特征、结构或特性时,认为在本领域技术人员学识范围内,可以与其他实施例一起实施这样的特征、结构或特性,无论是否对此明确描述。图1是具有含一个或多个乘法和累加(MAC)指令的指令集的处理器的示例实施例的框图。图2示出乘法和累加操作的示例。图3示出由MAC指令和相关联的加法指令所使用的向量寄存器和掩码寄存器的示例实施例。图4A和4B示出MAC指令和相关联的加法指令及其操作的示例实施例。图5示出包括MAC指令和相关联的加法指令的样本代码的示例。图6是具有执行单元的指令处理装置的示例实施例的框图,该执行单元可操作用于执行包含MAC指令和相关联的加法指令的示例实施例的指令。图7A和7B是示出用于处理MAC指令和相关联的加法指令的方法的示例实施例的流程图。图8是根据本专利技术一个实施例的系统的框图。图9是根据本专利技术的实施例的第二系统的框图。图10是根据本专利技术的实施例的第三系统的框图。图11是根据本专利技术的实施例的片上系统(SoC)的框图。图12是根据本专利技术的实施例的单核处理器和多核处理器的框图,具有集成的存储器控制器和图形器件。图13是根据本专利技术的实施例的对比使用软件指令变换器将源指令集中的二进制指令变换成目标指令集中的二进制指令的框图。具体实施方式在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细节来实施本专利技术的实施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模糊对本描述的理解。在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细节来实施本专利技术的实施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模糊对本描述的理解。本专利技术的实施例提供了有效地使长整数相乘的机制。具体地,本专利技术的实施例提供了有效地使大量长整数并行地相乘的机制。公钥密码操作一般带来需要多精度乘法的长整数算术。诸如模取幂之类的这些操作是高度计算密集的。通常,计算机需要在短时间跨度内处理较大数量的长整数乘法和加法。例如,负责设立企业的安全套接字层(SSL)事务的服务器可在短时间跨度内从企业客户机接收大量连接请求。每个事务涉及包括整数乘法和加法的密码操作。本专利技术的实施例允许由多个乘法引起的乘法和加法作为多个独立的问题同时处理。图1是处理器100的示例实施例的框图。该处理器100可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其各种混合、或完全其他类型的处理器中的任何处理器。在一个或多个实施例中,处理器100可以是通用处理器(例如由美国加利福尼亚州圣克拉拉市的英特尔公司制造的类型的通用微处理器),尽管这不是必需的。替换地,指令处理处理装置可以是专用处理器。合适的专用处理器的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器),仅列举数例。处理器100具有指令集架构(ISA)101。指令集体系结果101表示与编程相关的处理器100的架构的一部分指令集架构101通常包括本地指令、架构寄存器、数据类型、寻址模式、存储器架构、中断和异常处理以及处理器100的外部输入和输出(I/O)。指令集架构101与微架构不同,微架构通常表示选择用于实现指令集架构的特定处理器设计技术。带有不同的微架构的处理器可以共享共同的指令集架构。例如,加利福尼亚州圣克拉拉的英特尔公司的某些微处理器和加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(AdvancedMicroDevices,Inc.)的某些微处理器使用本质上不同的内部微架构来实现x86指令集的类似部分。指令集架构101包括架构寄存器(例如,架构寄存器文件)106。在一个实施例中,架构寄存器106包括通用(GP)寄存器116、向量寄存器126、掩码寄存器136、标量浮点寄存器(未示出)以及其他寄存器(未示出)。每个向量寄存器126能够操作以存储向量(或SIMD数据)。在一个实施例中,向量寄存器126包括一组(例如,32个)向量寄存器(例如,zmm0到zmm31)。寄存器zmm0-zmm31中的每一个具有相同宽度;例如,512位或其它宽度。在一个实施例中,掩码寄存器136包括一组(例如,8个)掩码寄存器(k0到k7),每个掩码寄存器为64位宽。还可使用其它数据宽度。以下将参考图3进一步详细描述结合乘法和累加指令及相关联的加法指令使用向量寄存器126和掩码寄存器130。架构寄存器106表示板上处理器存储位置。架构寄存器106此处也可以被简称为寄存器。短语架构寄存器、寄存器组、以及寄存器在本文中用于表示对软件和/或编程器(例如,软件可见的)可见的寄存器和/或由宏指令指定来标识操作数(operand)的寄存器,除非另外予以指定或清楚明显可知。这些寄存器106与给定微架构(例如,临时寄存器、重排序缓冲器、引退(retirement)寄存器等)中的其他非架构寄存器形成对比。所示的指令集架构101还包括由处理器100支持的指令集102。指令集102包括若干不同类型的指令。指令集102的这些指令表示本文档来自技高网...
用于多精度算术的SIMD整数乘法累加指令

【技术保护点】
一种方法,包括:接收用于无符号整数操作的乘法和累加(MAC)指令,所述MAC指令指示第一向量寄存器作为第一操作数、第二向量寄存器作为第二操作数和第三向量寄存器作为目的地,所述第一向量寄存器存储第一因数且所述第二向量寄存器存储所述MAC指令的部分和;执行MAC指令以将第一因数与隐含的第二因数相乘以生成乘积,并且将部分和与乘积相加以生成结果,其中所述第一因数、所述隐含的第二因数以及部分和具有相同的数据宽度,且所述乘积具有两倍的数据宽度;将所述结果的最高有效半部分存储在第三向量寄存器中;以及将结果的最低有效半部分存储在第二向量寄存器中。

【技术特征摘要】
【国外来华专利技术】1.一种用于指令处理的方法,包括:接收用于无符号整数操作的乘法和累加MAC指令,所述乘法和累加MAC指令指示第一向量寄存器作为第一操作数、第二向量寄存器作为第二操作数和第三向量寄存器作为目的地,所述第一向量寄存器存储第一因数且所述第二向量寄存器存储所述乘法和累加MAC指令的部分和;执行乘法和累加MAC指令以将第一因数与隐含的第二因数相乘以生成乘积,并且将部分和与乘积相加以生成结果,其中所述第一因数、所述隐含的第二因数以及部分和具有相同的数据宽度,且所述乘积具有两倍的数据宽度;将所述结果的最高有效半部分存储在第三向量寄存器中;以及将结果的最低有效半部分存储在第二向量寄存器中。2.如权利要求1所述的方法,其特征在于,所述第一向量寄存器存储多个乘法的多个第一因数,所述第二向量寄存器存储多个乘法的多个部分和,且其中执行所述乘法和累加MAC指令还包括:执行所述乘法和累加MAC指令以并行地执行多个乘法。3.如权利要求1所述的方法,其特征在于,所述第一因数、所述隐含的第二因数、所述部分和、所述乘积的最高有效半部分和所述乘积的最低有效半部分中的每一个具有相同的数据宽度dw,且其中所述第一、第二和第三向量寄存器属于一组向量寄存器,所述组中的每个向量寄存器具有向量宽度VW且包括通道数量VW/dw,且每个通道由一个独立的乘法来使用。4.如权利要求1所述的方法,其特征在于,进一步包括:将隐含的第二因数加载到向量寄存器;以及执行乘法和累加MAC指令序列以将隐含的第二因数与第一因数序列相乘。5.如权利要求4所述的方法,其特征在于,所述乘法和累加MAC指令是用于将两个无符号整数相乘的乘法和累加MAC指令序列之一,且其中所述第一因数和隐含的第二因数分别是两个无符号的整数的分数部分,且其中所述乘法和累加MAC指令的输入独立于序列中先前乘法和累加的MAC指令的输出。6.如权利要求1所述的方法,其特征在于,在执行乘法和累加MAC指令之后,所述方法还包括:执行加法指令,以将所述结果的最低有效半部分与先前的乘法和累加MAC指令生成的先前结果的最高有效半部分相加。7.如权利要求6所述的方法,其特征在于,所述加法指令从掩码寄存器接收进位输入并将进位输出存储到掩码寄存器中。8.一种指令处理装置,包括:解码逻辑单元,用于接收和解码用于无符号整数操作的乘法和累加MAC指令,所述乘法和累加MAC指令指示第一向量寄存器作为第一操作数、第二向量寄存器作为第二操作数和第三向量寄存器作为目的地,所述第一向量寄存器存储第一因数且所述第二向量寄存器存储所述乘法和累加MAC指令的部分和;执行逻辑单元,耦合到所述解码逻辑单元,所述执行逻辑单元用于将第一因数与隐含的第二因数相乘以生成乘积,并且将部分和与乘积相加以生成结果,其中所述第一因数、所述隐含的第二因数和部分和具有相同的数据宽度,且所述乘积具有两倍的数据宽度;以及一组向量寄存器,耦合到所述执行逻辑单元,其中所述一组向量寄存器包括用于存储所述结果的最高有效半部分的第三向量寄存器和用于存储所述结果的最低有效半部分的第二向量寄存器。9.如权利要求8所述的装置,其特征在于,所述第一向量寄存器存储多个乘法的多个第一因数,所述第二向量寄存器存储多个乘法的多个部分和,且其中所述执行逻辑单元用于执行所述乘法和累加MAC指令以并行地执行多个乘法。10.如权利要求8所述的装置,其特征在于,所述第一因数、所述隐含的第二因数、所述部分和、所述乘积的最高有效半部分和所述乘积的最低有效半部分中的每一个具有相同的数据宽度dw,且其中所述第一、第二和第三向量寄存器属于一组向量寄存器,且其中所述...

【专利技术属性】
技术研发人员:V·戈帕尔G·M·沃尔里齐E·奥兹图科J·D·吉尔福德K·S·雅普S·M·格尔雷W·K·费格哈利M·G·迪克森
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1