用于多精度算术的simd整数乘法累加指令的制作方法

文档序号:6485500阅读:275来源:国知局
用于多精度算术的simd整数乘法累加指令的制作方法
【专利摘要】乘法和累加(MAC)指令允许无符号的整数乘法的高效执行。MAC指令指示第一向量寄存器作为第一操作数、第二向量寄存器作为第二操作数和第三向量寄存器作为目的地。第一向量寄存器存储第一因数,且第二向量寄存器存储部分和。执行MAC指令以将第一因数与隐含的第二因数相乘以生成乘积,并且将部分和与乘积相加以生成结果。第一因数、隐含的第二因数以及部分和具有相同的数据宽度,且乘积具有两倍的数据宽度。将结果的最高有效半部分存储在第三向量寄存器中,且将结果的最低有效半部分存储在第二向量寄存器中。
【专利说明】用于多精度算术的SIMD整数乘法累加指令

【技术领域】
[0001] 本发明的实施例一般涉及计算机处理器架构,更具体而言,涉及当被执行时导致 特定结果的指令。
[0002] 相关技术的描述
[0003] 许多处理器具有单指令多数据(SMD)架构。该SMD架构通常有助于显著提高处 理速度。在SIMD架构中,与仅在一个数据元素或一对数据元素上操作的标量指令不同,向 量指令(也称为打包数据指令或SMD指令)可在多个数据元素、或多对数据元素上同时和 /或并行地操作。处理器可具有并行执行硬件,该并行执行硬件响应于向量指令来同时或并 行地执行多个操作。
[0004] 在SIMD架构中,可将多个数据元素打包在一个寄存器或存储器位置内作为打包 数据或向量数据。在向量数据中,寄存器或其他存储位置的位可被逻辑地划分成多个固定 大小的数据元素的序列。数据元素中的每一个可表示个体数据片,该个体数据片连同通常 具有相同大小的其他数据元素一起被存储在寄存器或存储位置中。例如,256位宽寄存器可 具有四个64位宽向量元素,八个32位宽向量元素,十六个16位宽向量元素,或三十二个8 位宽向量元素。每一个向量元素可表示独立的个体数据片段,可与其它数据片断分开地或 独立地在该数据片段上操作。
[0005] 代表性地,向量加法指令可以指定在来自两个源向量操作数的所有相应数据元素 对上执行单个向量操作(例如,加法)以生成目的或结果向量。这些源向量操作数是相同 大小,可包含相同宽度的数据元素,如此,可各自包含相同数量的数据元素。两个源向量操 作数中的相同的位位置中的源数据元素可以表示相应的数据元素对。可以分开地或独立 地对这些相应的源数据元素对中的每一个执行向量操作,以便生成匹配数量的结果数据元 素,且因而每一对相应的源数据元素可以具有相应的结果数据元素。通常,这样的指令的结 果数据元素是以相同的次序,且它们常常具有相同的大小。

【专利附图】

【附图说明】
[0006] 在各个附图的图形中,本发明的各实施例是作为示例而不是显示说明的,在附图 中,类似的参考编号表示类似的元件。应注意,在本公开中对"一"或"一个"实施例的不同 引用不一定指相同实施例,且这种引用表示至少一个。此外,当结合一个实施例描述特定特 征、结构或特性时,认为在本领域技术人员学识范围内,可以与其他实施例一起实施这样的 特征、结构或特性,无论是否对此明确描述。
[0007] 图1是具有含一个或多个乘法和累加(MAC)指令的指令集的处理器的示例实施例 的框图。
[0008] 图2示出乘法和累加操作的示例。
[0009] 图3示出由MAC指令和相关联的加法指令所使用的向量寄存器和掩码寄存器的示 例实施例。
[0010] 图4A和4B示出MAC指令和相关联的加法指令及其操作的示例实施例。
[0011] 图5示出包括MAC指令和相关联的加法指令的样本代码的示例。
[0012] 图6是具有执行单元的指令处理装置的示例实施例的框图,该执行单元可操作用 于执行包含MAC指令和相关联的加法指令的示例实施例的指令。
[0013] 图7A和7B是示出用于处理MAC指令和相关联的加法指令的方法的示例实施例的 流程图。
[0014] 图8是根据本发明一个实施例的系统的框图。
[0015] 图9是根据本发明的实施例的第二系统的框图。
[0016] 图10是根据本发明的实施例的第三系统的框图。
[0017] 图11是根据本发明的实施例的片上系统(SoC)的框图。
[0018] 图12是根据本发明的实施例的单核处理器和多核处理器的框图,具有集成的存 储器控制器和图形器件。
[0019] 图13是根据本发明的实施例的对比使用软件指令变换器将源指令集中的二进制 指令变换成目标指令集中的二进制指令的框图。

【具体实施方式】
[0020] 在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细 节来实施本发明的实施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模 糊对本描述的理解。
[0021] 在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细 节来实施本发明的实施例。在其它实例中,未详细示出公知的电路、结构以及技术,以免模 糊对本描述的理解。
[0022] 本发明的实施例提供了有效地使长整数相乘的机制。具体地,本发明的实施例提 供了有效地使大量长整数并行地相乘的机制。
[0023] 公钥密码操作一般带来需要多精度乘法的长整数算术。诸如模取幂之类的这些操 作是高度计算密集的。通常,计算机需要在短时间跨度内处理较大数量的长整数乘法和加 法。例如,负责设立企业的安全套接字层(SSL)事务的服务器可在短时间跨度内从企业客 户机接收大量连接请求。每个事务涉及包括整数乘法和加法的密码操作。本发明的实施例 允许由多个乘法引起的乘法和加法作为多个独立的问题同时处理。
[0024] 图1是处理器100的示例实施例的框图。该处理器100可以是各种复杂指令集计 算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器、其 各种混合、或完全其他类型的处理器中的任何处理器。在一个或多个实施例中,处理器100 可以是通用处理器(例如由美国加利福尼亚州圣克拉拉市的英特尔公司制造的类型的通 用微处理器),尽管这不是必需的。替换地,指令处理处理装置可以是专用处理器。合适的 专用处理器的示例包括但不限于,网络处理器、通信处理器、加密处理器、图形处理器、协处 理器、嵌入式处理器、数字信号处理器(DSP)以及控制器(例如,微控制器),仅列举数例。
[0025] 处理器100具有指令集架构(ISA) 101。指令集体系结果101表示与编程相关的 处理器100的架构的一部分指令集架构101通常包括本地指令、架构寄存器、数据类型、寻 址模式、存储器架构、中断和异常处理以及处理器100的外部输入和输出(I/O)。指令集架 构101与微架构不同,微架构通常表示选择用于实现指令集架构的特定处理器设计技术。 带有不同的微架构的处理器可以共享共同的指令集架构。例如,加利福尼亚州圣克拉拉的 英特尔公司的某些微处理器和加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公 司(Advanced Micro Devices, Inc.)的某些微处理器使用本质上不同的内部微架构来实现 x86指令集的类似部分。
[0026] 指令集架构101包括架构寄存器(例如,架构寄存器文件)106。在一个实施例中, 架构寄存器106包括通用(GP)寄存器116、向量寄存器126、掩码寄存器136、标量浮点寄存 器(未不出)以及其他寄存器(未不出)。每个向量寄存器126能够操作以存储向量(或 SMD数据)。在一个实施例中,向量寄存器126包括一组(例如,32个)向量寄存器(例 如,zmmO到zmm31)。寄存器zmm〇-zmm31中的每一个具有相同宽度;例如,512位或其它宽 度。在一个实施例中,掩码寄存器136包括一组(例如,8个)掩码寄存器(k0到k7),每个 掩码寄存器为64位宽。还可使用其它数据宽度。以下将参考图3进一步详细描述结合乘 法和累加指令及相关联的加法指令使用向量寄存器126和掩码寄存器130。
[0027] 架构寄存器106表示板上处理器存储位置。架构寄存器106此处也可以被简称 为寄存器。短语架构寄存器、寄存器组、以及寄存器在本文中用于表示对软件和/或编程 器(例如,软件可见的)可见的寄存器和/或由宏指令指定来标识操作数(operand)的寄 存器,除非另外予以指定或清楚明显可知。这些寄存器106与给定微架构(例如,临时寄存 器、重排序缓冲器、引退(retirement)寄存器等)中的其他非架构寄存器形成对比。
[0028] 所示的指令集架构101还包括由处理器100支持的指令集102。指令集102包括 若干不同类型的指令。指令集102的这些指令表示宏指令(例如,提供给处理器100以供 执行的指令),与微指令或微操作(例如,从处理器1〇〇的解码器129解码宏指令得到的) 不同。
[0029] 指令集102还包括一个或多个向量指令103。向量指令103中的每一个可操作用 于导致或致使处理器100在该指令指示的一个或多个向量操作数的数据元素上执行向量 操作。向量指令103中的每一个还可使用一个或多个掩码以掩码、断言(predicate)或有条 件地控制向量处理。可将掩码存储在写掩码寄存器中(该写掩码寄存器是架构寄存器106 的一部分),且可表示掩码操作数、断言操作数或条件操作控制操作数。
[0030] 掩码可用于按数据元素粒度掩码或有条件地控制向量处理。例如,掩码可用于对 是否将在来自单个源向量操作数的个体数据元素或来自两个源向量操作数的个体相应数 据元素对上执行的向量指令103的向量操作的结果存储在向量结果中进行掩码。向量指令 103可允许与数据元素分开地且独立地断言或有条件控制对每个数据元素或每对相对应数 据元素的向量处理。向量指令103、操作和掩码可提供某些优点,诸如增加的代码密度和/ 或更高的指令吞吐量。
[0031] 在一个实施例中,向量指令103包括一个或多个向量乘法指令,诸如乘法和累加 (MAC)指令104及其相关联的加法指令105。这些指令104和105可操作用于导致或致使 处理器100将两个大整数相乘,或并行地将若干大整数对相乘。
[0032] 处理器100还包括执行逻辑109。执行逻辑109可操作用于执行或处理指令集102 的指令。执行逻辑109可包括执行单元、功能单元、算术逻辑单元、逻辑单元、算术单元等。 处理器100还包括解码器129,用以将宏指令解码成微指令或微操作以供执行逻辑109执 行。
[0033] 为了进一步解释MAC指令104的实施例,考虑将两个因数--一个因数是1个四 字(Qword)而另一个因数是N个Qword-相乘的示例会是有帮助的。每一个Qword有64 位宽。图2是示出执行(1 X N)Qword乘法-累加(S[7:0] = Ai xB[7:0]+S[7:0])基本操 作的示例实施例的图。在图2中,位于顶部的S[7:0](指示为230)是初始部分和,且位于 底部的S[7:0](指示为240)是所得部分和。对于每一个乘法操作210(Ai X Βη,η = 0,1^·· 7),生成(64 χ64) = 128位的乘积。每一个乘积被表示为(Hin:Lon),如图的对角线中的条 目所示,其中Hi n是高阶部分(S卩,最高有效的一半)且L〇n是低阶部分(S卩,最低有效的一 半)。以最少数量的微操作(μ ops)和等待时间,可将这个乘积加到部分和Sn。将乘积与 部分和相加的一种方式采取2个加法操作,且每个加法操作利用一个独立的进位链:
[0034] Sn = Sn+Lon (利用第一进位链)
[0035] Sn = Sn+Hin_i (利用第二进位链)。
[0036] 假设S[7:0]被初始化为全零。在由图2中的垂直虚线所示的示例加法操作220 后,加法操作等效于:S Q = SQ+LoQ,Si = SfLc^+Hi。,S2 = SfLc^+H;^,S3 = S3+Lo3+Hi2,等。
[0037] 本发明的实施例提供能够利用单个进位链将两个长整数相乘的乘法和加法(MAC) 指令。与指定乘法操作为单独指令不同,图1的MAC指令104在本质上是SMD且工作在无 符号的整数操作数上。在图2的示例中,&与B n相乘,η = 0, 1,…7,其中&可以是第一长 整数A的一部分,且每一个Bn可以是第二长整数B的一部分。该乘法使用S n,η = 0, 1,一7 来存储该部分和。在(Ad χ Βη,η = 0, 1,…7)的乘法操作后,计算可移至Ai χ Βη,Α2 χ Βη, 以此类推,直到长整数Α的所有部分都被处理。每一个乘法操作可使用5"来累加部分和。 最后,S n具有最终结果。
[0038] 在一个实施例中,图1的MAC指令104被定义为执行:
[0039] Hin:Sn = Ai X Bn+Sn(等式1),之后是利用(具有进位的加法)单个进位链的加法 指令,为:
[0040] Sn = Sn+Him (等式 2) ·
[0041] MAC指令104生成乘积,该乘积是每个因数%和Bn)的两倍宽。因此,MAC指令 104被定义成将乘积与入一对目的地寄存器(用于乘积的最低有效半部分和乘积的最商有 效半部分)。MAC指令104不需要读取或写入任何进位信息,因为乘积不大于两个目的地寄 存器的宽度。
[0042] 在一些实施例中,存在在指令中可编码不超过三个寄存器的限制。因此,可能需要 指定隐含的寄存器操作数。因为A对于乘法序列(用于乘以Β η,η = 0,1,…7)不改变,所 以使用Α作为隐含的源操作数是方便的。此外,MAC指令104可使用Sn作为源以及乘积的 最低有效半部分的目的地。因此,在一个实施例中,MAC指令104仅需要编码三个明确的操 作数(即,B n、乘积的最低有效半部分和乘积的最高有效半部分)。选择MAC指令内的加法 操作,使得对MAC指令104的输入不取决于先前的MAC指令104的输出。如果由先前的MAC 指令生成MAC指令104的源操作数,则有效计算时间将受到MAC指令104的等待时间限制 且可能不利地影响其性能。
[0043] 可将MAC指令104应用于64位(Qword)、32位(Dword)或其它宽度的操作数。可 基于性能要求和实现成本折衷选择该宽度。在一个实施例中,用于Qword尺寸的操作数的 MAC指令104被命名为vpmac3. q,且可被指定为:
[0044] zmmdst_H, zmmsrcdst = ZMMO x zmmsrcl+zmmsrcdst〇
[0045] vpmac3. q指令是以上描述的等式1的实现。可利用两个或更多个uop实现,其中 第二UOP可用于写回乘积的最高有效半部分,由此提高效率。
[0046] 在上述vpmac3. q指令中,ΖΜΜ0是预先加载有Ai的隐含操作数,zmmsrcl是用于存 储Bn的源操作数,zmmsrcdst是用于存储S n的源(以及目的地)操作数,且zmmdst_H是用 于存储Hin的目的地。对于Qword的乘法,操作数ZMMO、zmmsrcl、zmmsrcdst和zmmdst_H 中的每一个具有64位宽的数据宽度(dw)。在其中处理器具有512位宽向量寄存器(即向 量宽度VW = 512)的实施例中,每个向量寄存器可被分成8 "通道",且每个通道为64位宽 (艮口,VW/dw = 512/64 = 8)。因此,ZMMO、zmmsrcl、zmmsrcdst 和 zmmdst_H 可占据 4 个不 同向量寄存器中的通道。这些向量寄存器中的其它7个通道可用于7个其它MAC操作,其 中的每一个作为独立的乘法问题来执行。
[0047] 图3是示出图1的向量寄存器126的实施例中的通道的框图(例如,zmmO到 zmm31)。向量寄存器126也被称为zmm寄存器126。zmm寄存器126中的每一个是512位 宽。对于Qword操作,每个zmm寄存器126可被分成8个独立通道且用作8个独立的缓冲器。 在以上将N个Qword与1个Qword相乘的示例中,MAC指令的计算可利用zmm寄存器126的 一个通道来存储输入和输出操作数。因此,操作数ZMMO、z_srcl、z_srcdst和z_dst_H 中的每一个可以是一个通道内的zmm寄存器126的一部分。zmm寄存器126的其它通道可 用于相同尺寸的其它独立MAC操作。因此,在多个独立乘法的并行计算中,zmm寄存器126 可被用作多个缓冲器。
[0048] 图4A是实现用于Qword和Dword操作的图1的MAC指令104 (例如,vpmac3)的 伪代码的示例。指令104还可应用于其它数据宽度。伪代码示出MAC指令104所计算的乘 积的最高有效半部分和最低有效半部分被存储在两个不同的向量寄存器中。
[0049] 参考MAC指令104之后的加法操作(在图2的示例中示为垂直虚线),用于Qword 尺寸的操作数的加法指令105的一个实施例被命名为Add_with_mask. q且可被指定为:
[0050] kdst:zmmdst = zmmsrcl+zmmsrc2+ksrc〇
[0051] Add_with_mask. q指令可用于实现上述等式2。可利用向量寄存器(例如,zmm寄 存器中的一些)和附加掩码寄存器有效地执行加法以指示进位信息。在Add_with_maSk.q 指令中,zmmsrc 1可用于存储输入Sn,zmmsrc2可用于存储Hi^,ksrc可用于存储进位输入, zmmdst可用于存储输出S n,且kdst可用于存储进位输出。
[0052] 在一个实施例中,ksrc和kdst中的每一个可以是掩码寄存器(例如,图1和图3 的掩码寄存器136)中的由k0至k8指示的位。每个位可对应于zmm寄存器126的通道。 在其中zmm寄存器是512位宽的实施例中,用于Qword尺寸的操作的掩码需要至少8位宽 (用于8通道)。在其中处理器中的掩码寄存器是64位宽的实施例中,8位掩码可以是掩码 寄存器的一部分(例如,较低阶的8位)。因此,使用这些掩码寄存器来代替用于标量整数 指令的传统算术标志(例如,进位标志)。
[0053] 图3示出八个掩码寄存器136 (k0至k7)的实施例,每个寄存器为64位宽。对于 上述加法操作,k0的1位(或任何其它掩码寄存器136)可用作ksrc (用于进位输入)以 及kdst (用于进位输出)。因此,独立计算的8个通道对应于用于进位信息的k0的8位。
[0054] 图4B是实现用于Qword和Dword的操作数尺寸的Add_with_mask指令的伪代码 (vpadd_With_mask)的示例。该加法指令还可应用于其它数据宽度。伪代码示出由加法指 令计算的结果被存储在两个不同的寄存器中;一个用于存储和(具有与操作数尺寸相同的 数据宽度)且另一个用于存储进位输出(用于比操作数尺寸更宽的结果)。
[0055] 图5是利用MAC指令104和加法指令105计算相同操作数尺寸的8个独立的乘法 问题的样本代码500的示例。在该样本代码500中,每个独立的问题是乘法1 X N Qword。 样本代码使用向量寄存器zmm〇-Zmm25,这些寄存器可以是图3的向量寄存器126。每个独 立的乘法使用向量寄存器zmm〇- Zmm25的一个通道。因数\作为隐含的操作数存储在zmmO 中(即,zmmO存储8个不同的Ap每个独立的乘法一个)。除了 Ai X 1?,用于每个Ai X Bn(n =1,….,7)的MAC指令(vpmac3. q)之后跟随加法指令(vpadd_with_mask)。样本代码示 出在连续的MAC指令之间没有数据依赖性。样本代码还示出仅有单个进位链(例如,掩码 寄存器k0的一位)用于每个通道或每个独立的问题。
[0056] 图6是具有执行单元640的指令处理装置615的示例实施例的框图,该执行单元 640可操作用于执行包含图1的MAC指令104和加法指令105的示例实施例的指令。在一 些实施例中,指令处理装置615可以是处理器,和/或可被包括在处理器(例如,图1的处 理器100或类似装置)中。替换地,指令处理装置615可被包括在不同的处理器或电子系 统中。
[0057] 指令处理装置615接收MAC指令104和加法指令105中的一个或多个。解码器 630,可以是图1的解码器129或一个类似装置,接收高级机器指令或宏指令形式的传入指 令,并且将所述指令解码以生成低级微操作、微代码进入点、微指令或其他低级指令或控制 信号,它们反映了原始的高级指令和/或从原始的高级指令导出。较低级指令或控制信号 可通过较低级(例如,电路级或硬件级)操作来实现较高级指令的操作。解码器630可使 用各种不同的机制来实现。合适机制的示例包括但不限于微代码、随机存取存储器(ROM)、 查找表、硬件实现、可编程逻辑阵列(PLA)、用于实现本领域已知的解码器的其他机制等。
[0058] 执行单元640耦合至解码器630。执行单元640可从解码器630接收一个或多个微 操作、微代码进入点、微指令、其他指令或其他控制信号,它们反映了所接收的MAC指令104 和加法指令105或者是从所接收的MAC指令104和加法指令105导出的。执行单元640包 括用于执行乘法的乘法逻辑641和用于执行加法的加法逻辑642。
[0059] 执行单元640还从向量寄存器670 (例如,图1和图3的向量寄存器126)接收输 入并将输出存储在向量寄存器670中。执行单元640从掩码寄存器680 (例如,图1和图3 的掩码寄存器136)接收进位输入并将进位输出存储在掩码寄存器680中。
[0060] 为了避免混淆描述,已示出和描述了相对简单的指令处理装置615。应当理解,其 他实施例可具有超过一个执行单元。例如,装置可包括多个不同类型的执行单元,诸如例如 算术单元、算术逻辑单元(ALU)、整数单元、浮点单元等。这些单元中的至少一个可响应于 如本文公开的循环对齐指令的实施例。指令处理装置或处理器的再其他实施例可具有多个 核、逻辑处理器或执行引擎。可操作用于执行一个或多个循环对齐指令的执行单元可被包 含在核、逻辑处理器或执行引擎中的至少一个、至少两个、大多数或全部中。
[0061] 指令处理装置615或处理器还可以可任选地包括一个或多个其他已知的组件。例 如,其它实施例可包括指令获取逻辑、调度逻辑、分支预测逻辑、指令和数据缓存、指令和数 据转换后备缓冲器、预取缓冲器、微指令队列、微指令定序器、总线接口单元、第二或更高级 缓存、指令调度逻辑、引退逻辑、寄存器重命名逻辑等中的一个或多个或它们的各种组合。 应意识到实际上在处理器中存在这些组件的多种不同的组合和配置,并且本发明的范围不 限于任意已知的这些组合配置。
[0062] 图7A和7B分别是处理MAC指令(诸如图1的MAC指令104)和加法指令(诸如 图1的加法指令105)的示例实施例的方法700和方法705的示例实施例的流程图。在各 实施例中,方法700和705的方法可由通用处理器、专用处理器(例如,图形处理器或数字 信号处理器)、或另一种类型的数字逻辑设备或指令处理装置执行。在一些实施例中,方法 700和705可由图1的处理器100、图6的指令处理装置615或类似的处理器或指令处理装 置执行。或者,方法700和705可由处理器或指令处理装置的不同实施例执行。此外,图1 的处理器100和图6的指令处理装置615可执行与方法700和705的操作和方法相同、类 似或不同的操作和方法的实施例。
[0063] 在一个实施例中,方法700包括处理器接收MAC指令,该指令指示第一向量寄存 器作为第一操作数,第二向量寄存器作为第二操作数以及第三向量寄存器作为目的地(框 710)。第一向量寄存器存储第一因数,且第二向量寄存器存储MAC指令的部分和。MAC指令 被执行以将第一因数与隐含的第二因数相乘以生成乘积,并且将部分和与乘积相加以生成 结果(框720)。第一因数、隐含的第二因数以及部分和具有相同的数据宽度,且乘积具有两 倍的数据宽度。此外,第一因数、隐含的第二因数以及部分和是无符号的整数。结果的最高 有效半部分被存储在第三向量寄存器中(框730),且结果的最低有效半部分被存储在第二 向量寄存器中(框740)。
[0064] 在一个实施例中,方法705包括处理器接收加法指令,该指令指示第一操作数、第 二操作数和掩码寄存器(框750)。第一操作数存储由当前的MAC指令生成的结果的最低有 效半部分,第二操作数存储由先前的MAC指令生成的先前的结果的最高有效半部分,且掩 码寄存器存储进位输入。执行加法指令以将第一操作数与第二操作数和进位输入相加,以 生成和和进位输出(框760)。和被存储在向量寄存器中(例如,图3中通道内的zmm寄存 器136之一)(框770)。在一个实施例中,用于存储和的向量寄存器可以是由第一操作数指 示的相同寄存器。进位输出被存储在掩码寄存器中(例如,掩码寄存器的位)(框780)。
[0065] 所示的方法包括从处理器或指令处理装置外部可见的操作(例如,从软件观点)。 在其它实施例中,方法可任选地包括一个或多个其它操作(例如,在处理器或指令处理器 装置内部发生的一个或多个操作)。作为示例,在接收到指令之后,可将指令解码、转换、仿 真或以其它方式变换成一个或多个其它指令或控制信号。
[0066] 示例性计算机系统和处理器-图8-12
[0067] 图8-12是示例性计算机系统和处理器。本领域已知的对膝上型设备、台式机、手 持PC、个人数字助理、工程工作站、服务器、网络设备、网络中枢、交换机、嵌入式处理器、数 字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播 放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般来说,能够 含有本文中所公开的处理器和/或其它执行逻辑的大量系统和电子设备一般都是合适的。
[0068] 现在参考图8,所示出的是根据本发明实施例的系统1300的框图。系统1300可包 括耦合至图形存储器控制器中枢(GMCH) 1320的一个或多个处理器1310、1315。附加处理器 1315的可选性质用虚线表示在图8中。
[0069] 每一处理器1310U315可以是处理器1700的某种版本。然而,应该注意,集成图 形逻辑和集成存储器控制单元未必存在于处理器1310、1315中。
[0070] 图8示出GMCH 1320可耦合至存储器1340,该存储器1340可以是例如动态随机存 取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性缓存相关联。
[0071] GMCH 1320可以是芯片组或芯片组的一部分。GMCH 1320可以与(各)处理器 1310、1315进行通信,并控制处理器1310、1315与存储器1340之间的交互。GMCH 1320还可 充当(各)处理器1310U315和系统1300的其它元件之间的加速总线接口。对于至少一 个实施例,GMCH 1320经由诸如前端总线(FSB) 1395之类的多站总线与(各)处理器1310、 1315进行通信。
[0072] 此外,GMCH 1320耦合至显示器1345 (诸如平板显示器)。GMCH 1320可包括集成 图形加速器。GMCH 1320还耦合至输入/输出(I/O)控制器中枢(ICH) 1350,该输入/输出 (I/O)控制器中枢(ICH) 1350可用于将各种外围设备耦合至系统1300。在图8的实施例中 作为示例示出了外部图形设备1360以及另一外围设备1370,该外部图形设备1360可以是 耦合至ICH 1350的分立图形设备。
[0073] 可选地,系统1300中还可存在附加或不同的处理器。例如,附加处理器(多 个)1315可包括与处理器1310相同的附加处理器(多个)、与处理器1310异类或不对称 的附加处理器(多个)、加速器(诸如图形加速器或数字信号处理(DSP)单元)、现场可编 程门阵列或任何其它处理器。按照包括架构、微架构、热、功耗特征等等优点的度量谱,(多 个)物理资源1310U315之间存在各种差别。这些差别会有效显示为处理元件1310U315 之间的不对称性和异类性。对于至少一个实施例,各种处理元件1310、1315可驻留在同一 管芯封装中。
[0074] 现在参照图9,所示出的是根据本发明一实施例的第二系统1400的框图。如图9 所示,多处理器系统1400是点对点互连系统,且包括经由点对点互连1450耦合的第一处理 器1470和第二处理器1480。如图9所示,处理器1470和1480中的每个可以是处理器1700 的某一版本。
[0075] 可选地,处理器1470、1480中的一个或多个可以是除处理器之外的元件,诸如加 速器或现场可编程门阵列。
[0076] 虽然仅以两个处理器1470U480来示出,但应理解本发明的范围不限于此。在其 它实施例中,在给定处理器中可存在一个或多个附加处理元件。
[0077] 处理器1470还可包括集成存储器控制器中枢(MC) 1472和点对点(P-P)接口 1476和1478。类似地,第二处理器1480包括頂C 1482和P-P接口 1486和1488。处理器 1470、1480可以经由使用点对点(PtP)接口电路1478、1488的点对点(PtP)接口 1450来交 换数据。如图9所示,頂C 1472和1482将处理器耦合到相应的存储器,即存储器1442和 存储器1444,这些存储器可以是本地附连到相应处理器的主存储器部分。
[0078] 处理器1470、1480可各自经由使用点对点接口电路1476、1494、1486、1498的各个 P-P接口 1452、1454与芯片组1490交换数据。芯片组1490还可经由高性能图形接口 1439 与高性能图形电路1438交换数据。
[0079] 共享高速缓存(未示出)可以被包括在任一处理器之内或被包括两个处理器外部 但仍经由P-P互连与这些处理器连接,从而如果将某处理器置于低功率模式时,可将任一 处理器或两个处理器的本地高速缓存信息存储在该共享高速缓存中。
[0080] 芯片组1490可经由接口 1496耦合至第一总线1416。在一个实施例中,第一总线 1416可以是外围部件互连(PCI)总线,或诸如PCI Express总线或其它第三代I/O互连总 线之类的总线,但本发明的范围并不受此限制。
[0081] 如图9所示,各种I/O设备1414可连同总线桥1418-起耦合到第一总线1416,总 线桥1418将第一总线1416耦合到第二总线1420。在一个实施例中,第二总线1420可以是 低引脚数(LPC)总线。在一个实施例中,各设备可耦合到第二总线1420,包括例如键盘和/ 或鼠标1422、通信设备1426、以及可包括代码1430的诸如盘驱动器或其它海量存储设备的 数据存储单元1428。进一步地,音频I/O 1424可以耦合到第二总线1420。注意,其它架构 是可能的。例如,代替图9的点对点架构,系统可实现多点总线或者其他此类架构。
[0082] 现在参照图10,所示出的是根据本发明实施例的第三系统1500的框图。图9和 10中的类似元件使用类似附图标记,且在图10中省略了图9的某些方面以避免混淆图10 的其它方面。
[0083] 图10示出处理元件1470、1480可分别包括集成存储器和I/O控制逻辑 ("CL")_1472和1482。对于至少一个实施例,CL 1472U482可包括诸如以上结合图8、9 和14所描述的存储器控制器中枢逻辑(頂〇。此外。CL 1472U482还可包括I/O控制逻 辑。图15示出:不仅存储器1442、1444耦合至CL1472、1482, I/O设备1514也耦合至控制 逻辑1472、1482。传统I/O设备1515被耦合至芯片组1490。
[0084] 现在参考图11,所示为根据本发明的一实施例的SoC 1600的框图。图12中的类 似元件具有相似的附图标记。另外,虚线框是更先进的SoC的可选特征。在图11中,互连 单元1602被耦合至:应用处理器1610,包括一个或多个核1702A-N的集合和共享高速缓存 单元(多个)1706 ;系统代理单元1710 ;总线控制器单元(多个)1716 ;集成存储器控制器 单元(多个)1714 ;-个或多个媒体处理器1620的集合,可包括集成图形逻辑1708、用于 提供静态和/或视频照相机功能的图像处理器1624、用于提供硬件音频加速的音频处理器 1626、以及用于提供视频编码/解码加速的视频处理器1628 ;静态随机存取存储器(SRAM) 单元1630 ;直接存储器存取(DMA)单元1632 ;以及显示单元1640,用于耦合至一个或多个 外部显示器。
[0085] 本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组 合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程 系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至 少一个输入设备以及至少一个输出设备。
[0086] 可将程序代码应用至输入数据以执行本文描述的功能并产生输出信息。输出信息 可以按已知方式被应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸 如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器 的任何系统。
[0087] 程序代码可以用高级过程语言或面向对象的编程语言来实现,以便与处理系统通 信。程序代码也可以在需要的情况下用汇编语言或机器语言来实现。事实上,本文中描述 的机制不限于任何特定编程语言的范围。在任一情形下,语言可以是编译语言或解译语言。 [0088] 至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性指令 来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制作用于执 行本文所述的技术的逻辑。被称为"IP核"的这些表示可以被存储在有形的机器可读介质 上,并被提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
[0089] 此类机器可读存储介质可包括但不限于通过机器或设备制造或形成的非易 失性的粒子有形排列,包括存储介质,诸如:硬盘;包括软盘、光盘、压缩盘只读存储器 (CD-ROM)、可重写压缩盘(CD-RW)以及磁光盘的任何其它类型的盘;诸如只读存储器(ROM) 之类的半导体器件;诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的 随机存取存储器(RAM);可擦除可编程只读存储器(EPROM);闪存;电可擦除可编程只读存 储器(EEPR0M);磁卡或光卡;或适于存储电子指令的任何其它类型的介质。
[0090] 因此,本发明的各实施例还包括非瞬态、有形机器可读介质,该介质包含向量友好 指令格式的指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电 路、装置、处理器和/或系统特性。这些实施例也被称为程序产品。
[0091] 在某些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如, 指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形 (morph)、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换 器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者 部分在处理器上部分在处理器外。
[0092] 图13是根据本发明的各实施例的对照使用软件指令转换器将源指令集中的二进 制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件 指令转换器,但作为替代该指令转换器可以用软件、固件、硬件或其各种组合来实现。图13 示出可以使用x86编译器1804来编译高级语言1802的程序,以便生成可以由具有至少一 个x86指令集核1816的处理器本地执行的x86二进制代码1806(假设指令中的一些是以 向量友好指令格式编译)。具有至少一个x86指令集核1816的处理器表示任何处理器,该 处理器能够通过兼容地执行或以其它方式处理(1)英特尔x86指令集核的指令集的大部分 或(2)旨在具有至少一个x86指令集核的英特尔处理器上运行的应用或其它软件的目标代 码版本来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能,以实现与具 有至少一个x86指令集核的英特尔处理器基本相同的结果。x86编译器1804表示用于生成 x86二进制代码1806(例如,目标代码)的编译器,该二进制代码1816可通过或不通过附加 的链接处理在具有至少一个x86指令集核的处理器1816上执行。类似地,图13示出高级语 言1802的程序可使用替换指令集编译器1808来编译以生成替换指令集二级制代码1810, 替换指令集二级制代码1810可由不具有至少一个x86指令集核的处理器1814 (诸如,具有 执行加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集的处理器和/或执行加利福尼 亚州桑尼威尔的ARM控股公司的ARM指令集的处理器)来本地执行。指令转换器1812被用 来将x86二进制代码1806转换成可以由不具有x86指令集核的处理器1814原生执行的代 码。该转换后的代码不大可能与替代性指令集二进制代码1810相同,因为能够这样做的指 令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。 因此,指令转换器1812表示:通过仿真、模拟或任何其它过程来允许不具有x86指令集处理 器或核的处理器或其它电子设备得以执行x86二进制代码1806的软件、固件、硬件或其组 合。
[0093] 本文公开的向量友好指令格式的指令的某些操作可由硬件组件执行,且可体现在 机器可执行指令中,该指令用于导致或至少致使电路或其它硬件组件以执行该操作的指令 编程。电路可包括通用或专用处理器、或逻辑电路,这里仅给出几个示例。这些操作还可任 选地由硬件和软件的组合执行。执行逻辑和/或处理器可包括响应于从机器指令导出的机 器指令或一个或多个控制信号以存储指令指定的结果操作数的专用或特定电路或其它逻 辑。例如,本文公开的指令的实施例可在图8-12的一个或多个系统中执行,且向量友好指 令格式的指令的实施例可存储在将在系统中执行的程序代码中。另外这些附图的处理元件 可利用本文详细描述的详细描述的流水线和/或架构(例如有序和无序架构)之一。例如, 有序架构的解码单元可解码指令、将经解码的指令传送到向量或标量单元等。
[0094] 上述描述旨在说明本发明的优选实施例。根据上述讨论,还应当显而易见的是,在 发展迅速且进一步的进展难以预见的此【技术领域】中,本领域技术人员可在安排和细节上对 本发明进行修改,而不背离落在所附权利要求及其等价方案的范围内的本发明的原理。例 如,方法的一个或多个操作可组合或进一步分开。
[0095] 替换实施例
[0096] 尽管已经描述了将本地执行向量友好指令格式的实施例,但本发明的可选实施例 可通过运行在执行不同指令集的处理器(例如,执行美国加利福亚州桑尼维尔的MIPS技术 公司的MIPS指令集的处理器、执行加利福亚州桑尼维尔的ARM控股公司的ARM指令集的处 理器)上的仿真层来执行向量友好指令格式。同样,尽管附图中的流程图示出本发明的某 些实施例的特定操作顺序,按应理解该顺序是示例性的(例如,可选实施例可按不同顺序 执行操作、组合某些操作、使某些操作重叠等)。
[0097] 在以上描述中,为解释起见,阐明了众多具体细节以提供对本发明的实施例的透 彻理解。然而,将对本领域技术人员明显的是,没有这些具体细节中的一些也可实践一个或 多个其他实施例。提供所描述的具体实施例不是为了限制本发明而是为了说明本发明的实 施例。本发明的范围不是由所提供的具体示例确定,而是仅由所附权利要求确定。
[〇〇98] 应当理解,以上描述旨在是说明性的而非限制性的。在阅读并理解以上描述之后, 许多其它实施方式对本领域内技术人员而言将是显而易见的。因此,本发明的范围应参考 所附权利要求书以及使这些权利要求享有权利的等效方案的完全范围来确定。
【权利要求】
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),且其中所述第一、第二和第三向量寄存器属于一组向量寄存器,且其中 所述组中的每个向量寄存器具有向量宽度(VW)且包括通道数量(VW/dw),且每个通道由一 个独立的乘法来使用。
11. 如权利要求8所述的装置,其特征在于,所述一组向量寄存器中的一个加载有所述 乘法的隐含的第二因数,且其中所述执行逻辑执行MAC指令序列以将隐含的第二因数与第 一因数序列相乘。
12. 如权利要求11所述的装置,其特征在于,所述MAC指令是用于将两个无符号整数相 乘的MAC指令序列之一,且其中所述第一因数和隐含的第二因数分别是两个无符号的整数 的分数部分,且其中所述MAC指令的输入独立于序列中先前的MAC指令的输出。
13. 如权利要求8所述的装置,其特征在于,在执行MAC指令之后,所述执行逻辑响应于 加法指令,将所述结果的最低有效半部分与先前的MAC指令生成的先前结果的最高有效半 部分相加。
14. 如权利要求13所述的装置,其特征在于,所述加法指令从掩码寄存器接收进位输 入并将进位输出存储到掩码寄存器中。
15. -种系统,包括: 互连; 与所述互连耦合的处理器,所述处理器包括: 解码逻辑,用于接收和解码用于无符号整数操作的乘法和累加(MAC)指令,所述MAC指 令指示第一向量寄存器作为第一操作数、第二向量寄存器作为第二操作数和第三向量寄存 器作为目的地,所述第一向量寄存器存储第一因数且所述第二向量寄存器存储所述MAC指 令的部分和; 耦合到所述解码逻辑的执行逻辑,用于将第一因数与隐含的第二因数相乘以生成乘 积,并且将部分和与乘积相加以生成结果,其中所述第一因数、所述隐含的第二因数和部分 和具有相同的数据宽度,且所述乘积具有两倍的数据宽度;以及 耦合到所述执行逻辑的一组向量寄存器,其中所述一组向量寄存器包括用于存储所述 结果的最高有效半部分的第三向量寄存器和用于存储所述结果的最低有效半部分的第二 向量寄存器;以及 耦合到所述互连的动态随机存取存储器(DRAM)。
16. 如权利要求15所述的系统,其特征在于,所述第一向量寄存器存储多个乘法的多 个第一因数,所述第二向量寄存器存储多个乘法的多个部分和,且其中所述执行逻辑执行 所述MAC指令以并行地执行多个乘法。
17. 如权利要求15所述的系统,其特征在于,所述第一操作数、所述隐含的第二操作 数、所述部分和、所述乘积的最高有效半部分和所述乘积的最低有效半部分中的每一个具 有相同的数据宽度(dw),且其中所述第一、第二和第三向量寄存器属于一组向量寄存器,且 其中所述组中的每个向量寄存器具有向量宽度(VW)且包括通道数量(VW/dw),且每个通道 由一个独立的乘法使用。
18. 如权利要求15所述的系统,其特征在于,所述一组向量寄存器中的一个加载有所 述乘法的隐含的第二因数,且其中所述执行逻辑执行MAC指令序列以将隐含的第二因数与 第一因数的序列相乘。
19. 如权利要求18所述的系统,其特征在于,所述MAC指令是用于将两个无符号整数相 乘的MAC指令序列之一,且其中所述第一因数和隐含的第二因数分别是两个无符号的整数 的分数部分,且其中所述MAC指令的输入独立于序列中先前的MAC指令的输出。
20. 如权利要求15所述的系统,其特征在于,在执行MAC指令之后,所述执行逻辑响应 于加法指令,将所述结果的最低有效半部分与先前的MAC指令生成的先前结果的最高有效 半部分相加。
21. 如权利要求20所述的系统,其特征在于,所述加法指令从掩码寄存器接收进位输 入并将进位输出存储到掩码寄存器中。
【文档编号】G06F13/14GK104115115SQ201180076397
【公开日】2014年10月22日 申请日期:2011年12月19日 优先权日:2011年12月19日
【发明者】V·戈帕尔, G·M·沃尔里齐, E·奥兹图科, J·D·吉尔福德, K·S·雅普, S·M·格尔雷, W·K·费格哈利, M·G·迪克森 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1