CN103460178B - 包括掩码上的数学操作的simd整数加法 - Google Patents
包括掩码上的数学操作的simd整数加法 Download PDFInfo
- Publication number
- CN103460178B CN103460178B CN201180069754.7A CN201180069754A CN103460178B CN 103460178 B CN103460178 B CN 103460178B CN 201180069754 A CN201180069754 A CN 201180069754A CN 103460178 B CN103460178 B CN 103460178B
- Authority
- CN
- China
- Prior art keywords
- simd
- mask
- integer
- level
- generate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3828—Multigauge devices, i.e. capable of handling packed numbers without unpacking them
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Image Processing (AREA)
Abstract
公开了与将两个整数SIMD相加相关联的方法、装置和制品。在实施例中,方法可以包括对第一SIMD大小的整数(A)和第二SIMD大小的整数(B)的相对应元素进行元素级SIMD相加以生成SIMD大小的整数结果(R)和进位位。A具有整数大小(SizeA),同时B具有整数大小(SizeB)。响应于SizeA大于SizeB,加法还可以包括鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素更新R和进位位。而且,元素级SIMD相加可以包括在第一一个或多个掩码上执行一个或多个数学操作,其中第一一个或多个掩码被解释为整数,并将一个或多个数学操作的一个或多个整数结果解释为第二一个或多个掩码。
Description
技术领域
本公开的实施例涉及数据处理的领域,特别是与单指令多数据(SIMD)整数加法相关联的方法、装置和制品。
背景
除非另外指明,本节中所描述的材料不是本申请中的权利要求书的现有技术且不因为被包括在本节中而被承认为现有技术。
随着电子、集成电路、计算和网络技术的进步,诸如但不限于多媒体应用或科学计算之类的应用已经变得更加计算密集。SIMD计算通常提供标量计算上的更优执行性能。然而,两个任意长整数的加法的有效进位传送仍是一个挑战。
附图简述
通过附图所示的示例实施例而非限制,呈现了本公开的实施例,附图中相似的标记指示相似的元素,附图中:
图1根据本公开的多个实施例示出了SIMD整数加法的概述;
图2根据本公开的多个实施例更详尽地示出了SIMD整数加法的操作;
图3根据本公开的多个实施例更详尽地示出了图2的元素级(element-wise)SIMD相加操作;
图4根据本公开的多个实施例更详尽地示出了图2的更新操作的一个方面;
图5根据本公开的实施例示出了适合用来实践SIMD整数加法的示例计算机系统;以及
图6根据本公开的实施例示出了具有被配置为使装置实践SIMD整数加法的编程指令的制品。
具体实施方式
公开了用于两个整数的SIMD相加的方法和装置。在多个实施例中,方法可以包括在SIMD计算设备上将第一SIMD大小的整数(A)和第二SIMD大小的整数(B)的相应元素进行元素级SIMD相加以生成SIMD大小的整数结果(R)和进位位。A可以具有整数大小(SizeA),同时B可以具有整数大小(SizeB)。加法还包括,对于SizeA大于SizeB的情况,鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素,更新R和进位位。而且,元素级SIMD相加可以包括在第一一个或多个掩码上执行一个或多个数学操作,其中第一一个或多个掩码被解释为整数,并将一个或多个数学操作的一个或多个整数结果解释为第二一个或多个掩码。
在多个实施例中,该方法还可以包括在第一一个或多个掩码上执行一个或多个数学操作之前,将第一一个或多个掩码从SIMD计算设备的第一一个或多个掩码寄存器分别移到SIMD计算设备的一个或多个通用寄存器;并在一个或多个通用寄存器中的第一一个或多个掩码上执行一个或多个数学操作之后,将第二一个或多个掩码从一个或多个通用寄存器分别移到SIMD计算设备的第二一个或多个掩码寄存器。
在多个实施例中,元素级SIMD相加还可以包括执行R对A的元素级无符号整数小于比较以生成指示在元素级SIMD相加的过程中每个SIMD元素中是否发生了溢出的进位掩码,和/或执行R对全1二进制常数的元素级无符号整数等于比较以生成指示R中的哪个或哪几个元素具有全1位的饱和度掩码。对这些实施例,在第一一个或多个掩码上执行一个或多个数学操作可以包括在进位掩码和饱和度掩码上执行一个或多个数学操作。
在多个实施例中,在进位掩码和饱和度掩码上执行一个或多个数学操作可以包括将进位掩码向左移位1位以生成校正掩码的第一实例、对校正掩码的第一实例与进位输入执行按位布尔或(bitwise Boolean OR)操作以生成校正掩码的第二实例、将饱和度掩码整数相加到校正掩码的第二实例以生成校正掩码的第三实例、和/或对校正掩码的第三实例与饱和度掩码执行按位布尔异或(bitwise Boolean XOR)操作以生成校正掩码的第四实例。
在多个实施例中,第二一个或多个掩码包括校正掩码,且元素级SIMD相加可以包括由校正掩码进行掩码从元素级SIMD相加的初始结果元素级整数减去全1二进制常数以生成R、和/或将校正掩码向右移位有效标记宽度的位数以生成进位位。
在多个实施例中,更新R和进位位可以包括当进位位不等于0且A的至少一个元素未被考虑时鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素更新R和进位位,以及在已确定进位位等于0之后且A的至少一个元素未被考虑时鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素更新R。
在多个实施例中,当进位位不等于0且A的至少一个元素未被考虑时鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素更新R和进位位可以包括,当进位位不等于0时对于不具有相对应的B的元素的A的元素,通过在元素级SIMD相加的当前结果与全1二进制常数之间执行元素级小于比较生成饱和度掩码,将饱和度掩码整数相加到(来自先前迭代的)进位输入以生成校正掩码的第一实例,和/或对校正掩码的第一实例与饱和度掩码执行按位布尔异或操作以生成校正掩码的第二实例。而且,操作可以包括当进位位不等于0时对于不具有相对应的B的元素的A的元素,将校正掩码向右移位有效标记宽度的位数以更新进位位。
在多个实施例中,可以赋予装置硬件和/或软件,该硬件和/或软件被配置为实践本公开的方法的上述实施例的一个或多个方面。在多个实施例中,向具有有形、非瞬态计算机可读存储介质的制品提供被配置为响应于编程指令由装置执行而使装置实践本公开的方法的上述实施例的一个或多个方面的编程指令。
现在将使用由本领域技术人员为将其工作的实质传达给本领域其他技术人员而普遍采用的术语进一步描述说明性实施例的多个方面。然而对于那些本领域技术人员显而易见的是,可以利用所述方面中的一些来实践替代实施例。为了解释的目的,叙述了具体数字、材料和配置以提供对说明性实施例的全面理解。然而对于本领域技术人员显而易见的是,没有这些具体细节也可实践各替代实施例。在其它实例中,省略或简化了公知的特征以便不混淆说明性实施例。
还以最有助于理解说明性实施例的方式将各种操作进而描述为多个离散操作;然而描述的顺序不应被解释为暗示这些操作必然是依赖于顺序的。特别是,这些操作不必以呈现的顺序被执行。以括号的格式描述的特征指示所述特征为可选特征,例如,“应用服务的(分区的)实例”指示所述应用服务可为/可不为“分区的”。
重复使用了短语“在一实施例中”。此短语通常不指同一实施例;但也可以如此。除非上下文另外指明,术语“包含”、“具有”和“包括”是同义的。短语“A/B”意味着“A或B”。短语“A和/或B”意味着“(A)、(B)或(A和B)”。短语“A、B和C中的至少一个”意味着“(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)”。短语“(A)B”意味着“(B)或(AB)”,即A是可选的。
图1根据本公开的多个实施例示出了SIMD整数加法的概述。如所示的,SIMD整数加法器102可以被配置为在具有SIMD单元(未示出)的SIMD计算设备上将整数A112和整数B122SIMD相加以生成结果R132以及某些情况下的进位位134。特别是,SIMD整数加法器102可以被配置具有用于作为SIMD加法的一部分在第一一个或多个掩码上执行一个或多个数学操作(将这些掩码解释为整数)的逻辑104,和用于随后将数学操作的整数结果的一个或多个解释为第二一个或多个掩码的逻辑106,下面将更全面描述。整数A和B可以分别以任意长度的大小SizeA和SizeB,116和126,为SIMD大小。SizeA和SizeB可以以SIMD寄存器单元的数目表示。整数A和B还可以具有相关联的指针PointerA和PointerB,114和124,分别指向整数A和B的起始存储位置,例如SIMD计算设备的系统存储器。SIMD单元也可被称为SIMD寄存器。
现在参考根据本公开的多个实施例更详尽地示出了SIMD整数加法的操作的图2。如所示的,对于多个实施例,SIMD整数加法200的操作可以包括对A112和B122的相对应元素进行元素级SIMD相加,202,以生成R132和如果适用时生成进位位134。在SizeA大于SizeB的情况下,操作200还可以包括鉴于不具有相对应的B122的元素或多个元素的A112的一个或多个元素,更新R132和如果适用时更新进位位134,204。
在多个实施例中,元素级SIMD相加,204,包括较早描述的在第一一个或多个掩码上执行一个或多个数学操作(其中将这些掩码解释为整数)的操作104,和随后将数学操作的整数结果的一个或多个解释为第二一个或多个掩码的操作106。另一方面,更新R和进位位,204,可以包括当进位位不等于0且A的至少一个元素未被考虑时鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素更新R和进位位,212,以及在确定进位位等于0之后且A的至少一个元素未被考虑时鉴于不具有相对应的B元素或多个元素的A的一个或多个元素更新R,214。在第一一个或多个掩码上执行数学操作、将它们解释为整数、和随后将数学操作的整数结果的一个或多个解释为第二一个或多个掩码以及更新R和进位位的这些特征,可以使进位传送的性能得到提升以随着SIMD计算设备的SIMD单元或寄存器的宽度线性地扩展,其中这种性能的线性扩展通常是先前的技术方案达不到的。之所以先前技术方案通常做不到性能的扩展,至少部分地是因为大多数已知的先前技术方案需要单独地处理来自每个SIMD元素的进位。
现在参考图3,其中根据多个实施例更详尽地示出了元素级SIMD相加操作。如所示的,元素级SIMD相加操作300可以包括第一组操作302,操作302包括将整数A和B,112和122加载进存储器(A=SIMD_LOAD(pointerA),B=SIMD_LOAD(pointerB))和对整数A和B,112和122进行元素级SIMD相加以生成结果R(R=SIMD_ADD_INT(A,B))。在多个实施例中,对整数A和B,112和122进行元素级SIMD相加可以利用包装(wrapping)来执行。在多个实施例中,第一组操作302还可以包括用全1二进制常数(all_one=SIMD_LOAD_ALL_ONES())初始化SIMD计算设备的SIMD寄存器。
在多个实施例中,元素级SIMD相加操作300还可以包括第二组操作304,操作304包括生成进位掩码和饱和度掩码。进位掩码可以指示在元素级SIMD相加的过程中每个SIMD元素中是否发生了溢出,而饱和度掩码可以指示R的哪个或哪几个元素有全1位。进位掩码可以通过执行R对A的元素级SIMD无符号整数小于比较而生成(carry_mask=SIMD_CMP_LESS_UINT(R,A)),而饱和度掩码通过R对全1二进制常数的元素级SIMD无符号整数等于比较而生成(saturation_mask=SIMD_CMP_EQ_UINT(R,all_ones))。
继续参考图3,在多个实施例中,元素级SIMD相加操作300还可以包括第三组操作306,操作306在进位掩码和饱和度掩码上执行多个数学操作以生成校正掩码。特别是,操作306可以包括将进位掩码向左移位1位以生成校正掩码的第一实例(correction_mask=SHL(carry_mask,1))、对校正掩码的第一实例与(来自先前迭代的)进位输入执行按位布尔或操作以生成校正掩码的第二实例(correction_mask=BITWISE_OR(correction_mask,carry_in))、将饱和度掩码整数相加到校正掩码的第二实例以生成校正掩码的第三实例(correction_mask=ADD_INT(correction_mask,saturation_mask))和/或对校正掩码的第三实例与饱和度掩码执行按位布尔异或操作以生成校正掩码的第四实例(correction_mask=BITWISE_XOR(correction_mask,saturation_mask))。
在其中SIMD计算设备不包括对允许直接在掩码寄存器中的掩码上执行数学操作的支持的多个实施例中,在进位和饱和度掩码上执行数学操作之前,进位掩码和饱和度掩码可以从掩码寄存器移到相应的通用寄存器中。在执行数学操作之后,数学操作的整数结果可以随后从通用寄存器移回到相同或不同的掩码寄存器中。
仍参考图3,在多个实施例中,元素级SIMD相加操作300还可以包括第四组操作308。操作308可以包括由校正掩码进行掩码从元素级SIMD相加的初始结果中元素级SIMD整数相减去全1二进制常数以生成R132(R=SIMD_SUB_INT(R,all_ones,correction_mask))、存储R(SIMD_STORE(R,pointer))和/或将校正掩码向右移位有效掩码宽度的位数以生成进位位(carry_out=SHR(correction_mask,EFFECTIVE_MASK_WIDTH_IN_BITS))。
应注意,上述在元素级SIMD相加操作300的描述中提到的进位掩码、饱和度掩码、校正掩码和有效掩码宽度在元素级SIMD相加操作300的本地。这些掩码和掩码宽度不同于其它本地掩码和/或后面其它操作的讨论中提到的相同名字的宽度。
参考回图2,对SizeA大于SizeB的情况,SIMD整数加法还可以包括鉴于不具有相对应的B的元素的A的元素更新R132和进位位134,204。而且,在多个实施例中,更新操作204可以包括当进位位134不等于0且A112的至少一个元素待被考虑时更新R132和进位位134,212,以及在进位位134等于0之后且A112的至少一个元素待被考虑时更新R132,214。
在多个实施例中,操作212在逻辑上可以实现如下:
其中i是索引,且pointerR指向结果R的起始存储位置。
下面将参考图4进一步描述函数SIMD_BLOCK_ADD_CARRY。
在多个实施例中,操作214在逻辑上可以实现如下:
While i<sizeA do
tmp=SIMD_LOAD(pointerA+i)
SIMD_STORE(tmp,pointerR+i)
i=i+1
end
其中tmp是临时变量,SIMD_LOAD和SIMD_STORE是SIMD加载和存储指令。
现在参考图4,其中根据本公开的实施例更详尽地示出了函数SIMD_BLOCK_ADD_CARRY的操作。如所示的,SIMD_BLOCK_ADD_CARRY操作400可以包括第一组操作402。操作402可以包括将整数A SIMD加载到存储器(C=SIMD_LOAD(pointerA)),并用全1二进制常数初始化SIMD寄存器(all_ones=SIMD_LOAD_ALL_ONES())。
另外,操作400还可以包括第二单个操作组404以生成饱和度掩码(saturation_mask=SIMD_CMP_EQ_UINT(R,all_ones))。操作400还可以包括第三组操作406以在饱和度掩码上执行多个数学操作。操作406可以包括将饱和度掩码整数相加到(来自先前迭代的)进位输入以生成校正掩码的第一实例(correction_mask=ADD_INT(carry_in,saturation_mask)),和/或对校正掩码的第一实例与饱和度掩码执行按位布尔异或操作以生成校正掩码的第二实例(correction_mask=BITWISE_XOR(correction_mask,saturation_mask))。
仍参考图4,操作400还可以包括第四组操作408以保存更新后的结果R132和如果适用时保存进位位134。操作408可以包括由校正掩码进行掩码从结果R132的当前值中元素级SIMD整数相减去全1二进制常数(R=SIMD_SUB_INT(R,all_ones,correction_mask))、存储R(SIMD_STORE(R,pointerR))和/或将校正掩码向右移位有效标记宽度的位数以生成进位位(carry_out=SHR(correction_mask,EFFECTIVE_MASK_WIDTH_IN_BITS))。
如前所述,上述在函数SIMD_BLOCK_ADD_CARRY的操作400的描述中提到的饱和度掩码、校正掩码、有效掩码宽度在操作400的本地。这些掩码和掩码宽度不同于其它本地掩码和/或在其它操作的其它讨论中提到的相同名字的宽度。
图5根据本公开的多个实施例示出了适合用来实践SIMD整数加法的示例计算机系统。如所示的,计算系统500可以包括多个具有SIMD单元或寄存器的SIMD处理器或处理器核502,和系统存储器504。出于包括权利要求书的本申请的目的,除非上下文清楚地另外要求,术语“处理器”和“处理器核”可以被视为同义词。另外,计算系统500可以包括大容量存储设备506(诸如盘、硬盘驱动器、紧致盘只读存储器(CDROM)等)、输入/输出设备508(诸如显示器、键盘、光标控制等)和通信接口510(诸如网络接口卡、调制解调器等)。这些元素可经由表示一个或多个总线的系统总线512互相耦合。在多个总线的情况下,它们可由一个或多个总线桥(未示出)桥接。
这些元素中的每一个执行其本领域内已知的常规功能。特别是,可采用系统存储器504和大容量存储506来存储实现SIMD整数加法器102和其它相关例程的编程指令的工作副本和永久副本,此处共同表示为522。各种组件可由SIMD处理器502支持的汇编程序指令或能被编译进这样的指令的高级语言(例如C)来实现。
编程指令的永久副本可通过例如诸如紧致盘(CD)的分布介质(未示出)或通过通信接口510(从分布服务器(未示出))在工厂中或现场放入永久存储506中。即,可采用具有代理程序实现的一个或多个分布介质来分布代理并编程各种计算设备。
这些元素502-512的构成是已知的,因此不做进一步描述。
图6根据本公开的实施例示出了具有被配置为使装置实践SIMD整数加法的编程指令的制品。如所示的,制品600可以包括计算机可读非瞬态存储介质602。存储介质602可以包括被配置为实现图1的SIMD整数加法器102的编程指令604。
存储介质602表示各种各样本领域内已知的持久存储介质,包括但不限于闪存、光盘或磁盘。特别是,编程指令604可以响应于SIMD装置对其的执行使SIMD装置执行包括如下的操作:
对第一SIMD大小的整数(A)和第二SIMD大小的整数(B)的相对应的元素进行元素级SIMD相加以生成SIMD大小的整数结果(R)和进位位,其中A具有整数大小(SizeA)且B具有整数大小(SizeB);以及
响应于SizeA大于SizeB,鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素,更新R和进位位;
其中元素级SIMD相加包括在进位掩码和饱和度掩码上执行一个或多个数学操作,包括:
将进位掩码向左移位1位以生成校正掩码的第一实例;
对校正掩码的第一实例与进位输入执行按位布尔或操作以生成校正掩码的第二实例;
将饱和度掩码整数相加到校正掩码的第二实例以生成校正掩码的第三实例;以及
对校正掩码的第三实例与饱和度掩码执行按位布尔异或操作以生成校正掩码的第四实例;以及
其中进位掩码指示在元素级SIMD相加的过程中每个SIMD元素中是否发生了溢出,且其中饱和度掩码指示R的哪个或哪几个元素有全1位。
尽管本文说明并描述了具体实施例,但本领域技术人员可以理解,可用各种替换和/或等价实现来替换所示出并描述的具体实施例而不背离本发明的实施例的范围。本申请旨在覆盖此处讨论的实施例的任何改编或变型。因此,本发明的实施例明白地旨在仅由权利要求书及其等效方案来限制。
Claims (17)
1.一种数据处理方法,包括:
由具有单指令多数据(SIMD)寄存器的SIMD计算设备所操作的SIMD整数加法器对第一SIMD大小的整数A和第二SIMD大小的整数B的相对应元素进行元素级SIMD相加,以生成SIMD大小的整数结果R和进位位,其中A具有整数大小且B具有整数大小;以及
响应于A的整数大小大于B的整数大小,由SIMD整数加法器鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素,更新R和进位位;
其中元素级SIMD相加包括在第一一个或多个掩码上执行一个或多个整数操作,其中第一一个或多个掩码作为一个或多个整数操作的输入,并将一个或多个整数操作的一个或多个整数结果输出为第二一个或多个掩码,
其中在第一一个或多个掩码上执行一个或多个整数操作包括在进位掩码和饱和度掩码上执行一个或多个整数操作,其中进位掩码指示在元素级SIMD相加的过程中每个SIMD元素中是否发生了溢出,且其中饱和度掩码指示R的哪个或哪几个元素有全1位,
其中在进位掩码和饱和度掩码上执行一个或多个整数操作包括:
将进位掩码左移1位以生成校正掩码的第一实例;
对校正掩码的第一实例与进位输入执行按位布尔或操作以生成校正掩码的第二实例;
将饱和度掩码整数相加到校正掩码的第二实例以生成校正掩码的第三实例;以及
对校正掩码的第三实例与饱和度掩码执行按位布尔异或操作以生成校正掩码的第四实例。
2.如权利要求1所述的方法,其中元素级SIMD相加包括利用包装操作对A和B的相对应元素进行元素级SIMD相加以生成结果R。
3.如权利要求1所述的方法,其还包括在第一一个或多个掩码上执行一个或多个整数操作之前,将第一一个或多个掩码从SIMD计算设备的第一一个或多个掩码寄存器分别移到SIMD计算设备的一个或多个通用寄存器;并在一个或多个通用寄存器中的第一一个或多个掩码上执行一个或多个整数操作之后,将第二一个或多个掩码从一个或多个通用寄存器分别移到SIMD计算设备的第二一个或多个掩码寄存器。
4.如权利要求1所述的方法,其中元素级SIMD相加还包括R对A的元素级SIMD无符号整数小于比较,以生成指示在元素级SIMD相加的过程中每个SIMD元素中是否发生了溢出的进位掩码。
5.如权利要求1所述的方法,其中元素级SIMD相加还包括R对全1二进制常数的元素级SIMD无符号整数等于比较,以生成指示R的哪个或哪几个元素有全1位的饱和度掩码的第一实例。
6.如权利要求1所述的方法,其中第二一个或多个掩码包括校正掩码,且元素级SIMD相加包括由校正掩码进行掩码将元素级SIMD相加的初始结果从全1二进制常数中进行元素级SIMD整数相减以生成R。
7.如权利要求1所述的方法,其中第二一个或多个掩码包括校正掩码,且元素级SIMD相加包括将校正掩码向右移位有效标记宽度的位数以生成进位位。
8.如权利要求1所述的方法,其中更新R和进位位包括当进位位不等于0且A的至少一个元素未被考虑时,鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素,更新R和进位位。
9.如权利要求8所述的方法,其中当进位位不等于0且A的至少一个元素未被考虑时鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素更新R和进位位包括:
当进位位不等于0时对不具有相对应的B的元素的A的元素,
通过在元素级SIMD相加的当前结果与全1二进制常数之间执行元素级小于比较,生成饱和度掩码;
将饱和度掩码整数相加到进位位的当前值,以生成校正掩码的第一实例;以及
对校正掩码的第一实例与饱和度掩码执行按位布尔异或操作,以生成校正掩码的第二实例。
10.如权利要求8所述的方法,其中当进位位不等于0且A的至少一个元素未被考虑时鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素更新R和进位位还包括:当进位位不等于0时对不具有相对应的B的元素的A的元素,将校正掩码向右移位有效标记宽度的位数以更新进位位。
11.如权利要求8所述的方法,其中更新R和进位位还包括:在确定进位位等于0之后且A的至少一个元素未被考虑时,鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素,更新R。
12.一种数据处理装置,包括:
具有单指令多数据(SIMD)寄存器、通用寄存器和掩码寄存器的SIMD处理器;以及
被配置为由所述SIMD处理器操作以将两个整数A和B相加的SIMD整数加法器;
其中SIMD整数加法器被配置为:
对第一SIMD大小的整数A和第二SIMD大小的整数B的相对应元素进行元素级SIMD相加,以生成SIMD大小的整数结果R和进位位,且
响应于A的整数大小大于B的整数大小,鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素,更新R和进位位;且
其中SIMD整数加法器还被配置为作为元素级SIMD加法的一部分执行:将第一一个或多个掩码从掩码寄存器的第一一个或多个分别移到通用寄存器的一个或多个,在一个或多个通用寄存器中的第一一个或多个掩码上执行一个或多个整数操作,以及将一个或多个通用寄存器中的一个和多个整数操作的一个或多个整数结果移到第二一个或多个掩码寄存器以作为第二一个或多个掩码存储,
其中SIMD整数加法器还被配置为作为第一一个或多个掩码上的一个或多个整数操作的执行的一部分在进位掩码和饱和度掩码上执行一个或多个整数操作包括:
将进位掩码左移1位以生成校正掩码的第一实例;
对校正掩码的第一实例与进位输入进行按位布尔或以生成校正掩码的第二实例;
将饱和度掩码整数相加到校正掩码的第二实例以生成校正掩码的第三实例;以及
对校正掩码的第三实例与饱和度掩码进行按位布尔异或操作以生成校正掩码的第四实例;
其中进位掩码指示在元素级SIMD相加的过程中每个SIMD元素中是否发生了溢出,且其中饱和度掩码指示R的哪个或哪几个元素有全1位。
13.如权利要求12所述的装置,其中第二一个或多个掩码包括校正掩码;且其中SIMD整数加法器还被配置为:作为元素级SIMD加法的一部分,执行由校正掩码进行掩码将元素级SIMD加法的初始结果从全1二进制常数进行元素级SIMD整数相减以生成R,以及执行将校正掩码向右移位有效标记宽度的位数以生成进位位。
14.如权利要求12所述的装置,其中SIMD整数加法器还被配置为,作为更新R和进位位的一部分,执行
当进位位不等于0且A的至少一个元素未被考虑时鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素,更新R和进位位;以及
在确定进位位等于0之后且A的至少一个元素未被考虑时鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素,更新R。
15.如权利要求14所述的装置,其中SIMD整数加法器还被配置为作为当进位位不等于0且A的至少一个元素未被考虑时鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素更新R和进位位的一部分,执行
当进位位不等于0时对不具有相对应的B的元素的A的元素,
通过在元素级SIMD相加的当前结果与全1二进制常数之间执行元素级小于比较,生成饱和度掩码;
将饱和度掩码整数相加到进位输入,以生成校正掩码的第一实例;以及
对校正掩码的第一实例与饱和度掩码执行按位布尔异或操作,以生成校正掩码的第二实例。
16.如权利要求15所述的装置,其中SIMD整数加法器还被配置为作为当进位位不等于0且A的至少一个元素未被考虑时鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素更新R和进位位的一部分,执行
当进位位不等于0时对不具有相对应的B的元素的A的元素,
将校正掩码向右移位有效标记宽度的位数以更新进位位。
17.一种数据处理设备,包括:
用于对第一SIMD大小的整数A和第二SIMD大小的整数B的相对应元素进行元素级SIMD相加以生成SIMD大小的整数结果R和进位位的装置,其中A具有整数大小且B具有整数大小;以及
用于响应于A的整数大小大于B的整数大小,鉴于不具有相对应的B的元素或多个元素的A的一个或多个元素,更新R和进位位的装置;
其中元素级SIMD相加包括在进位掩码和饱和度掩码上执行一个或多个整数操作,包括:
将进位掩码左移1位,以生成校正掩码的第一实例;
对校正掩码的第一实例与进位输入执行按位布尔或操作,以生成校正掩码的第二实例;
将饱和度整数相加到校正掩码的第二实例,以生成校正掩码的第三实例;以及
对校正掩码的第三实例与饱和度掩码执行按位布尔异或操作,以生成校正掩码的第四实例;以及
其中进位掩码指示在元素级SIMD相加的过程中每个SIMD元素中是否发生了溢出,且其中饱和度掩码指示R的哪个或哪几个元素有全1位。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/RU2011/000203 WO2012134321A1 (en) | 2011-03-30 | 2011-03-30 | Simd integer addition including mathematical operation on masks |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103460178A CN103460178A (zh) | 2013-12-18 |
CN103460178B true CN103460178B (zh) | 2017-05-31 |
Family
ID=44883361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180069754.7A Expired - Fee Related CN103460178B (zh) | 2011-03-30 | 2011-03-30 | 包括掩码上的数学操作的simd整数加法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8706795B2 (zh) |
EP (1) | EP2691849B1 (zh) |
CN (1) | CN103460178B (zh) |
WO (1) | WO2012134321A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9854261B2 (en) | 2015-01-06 | 2017-12-26 | Microsoft Technology Licensing, Llc. | Detecting markers in an encoded video signal |
US10698688B2 (en) | 2015-06-24 | 2020-06-30 | International Business Machines Corporation | Efficient quantization of compare results |
US10620952B2 (en) | 2015-06-24 | 2020-04-14 | International Business Machines Corporation | Conversion of boolean conditions |
US10705841B2 (en) | 2015-06-24 | 2020-07-07 | International Business Machines Corporation | Instruction to perform a logical operation on conditions and to quantize the Boolean result of that operation |
US10191749B2 (en) | 2015-12-24 | 2019-01-29 | Intel Corporation | Scatter reduction instruction |
TWI724066B (zh) * | 2015-12-24 | 2021-04-11 | 美商英特爾股份有限公司 | 分散縮減指令 |
CN107689863A (zh) * | 2017-09-05 | 2018-02-13 | 成都三零嘉微电子有限公司 | 一种算术加法掩码转布尔异或掩码的防护电路 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101978350A (zh) * | 2008-03-28 | 2011-02-16 | 英特尔公司 | 用于实现高效同步和并行归约操作的向量指令 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2367650B (en) * | 2000-10-04 | 2004-10-27 | Advanced Risc Mach Ltd | Single instruction multiple data processing |
US7853634B2 (en) | 2003-12-29 | 2010-12-14 | Xilinx, Inc. | Digital signal processing circuit having a SIMD circuit |
US20080281897A1 (en) * | 2007-05-07 | 2008-11-13 | Messinger Daaven S | Universal execution unit |
WO2013095515A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions |
-
2011
- 2011-03-30 US US13/391,263 patent/US8706795B2/en not_active Expired - Fee Related
- 2011-03-30 WO PCT/RU2011/000203 patent/WO2012134321A1/en active Application Filing
- 2011-03-30 CN CN201180069754.7A patent/CN103460178B/zh not_active Expired - Fee Related
- 2011-03-30 EP EP11776264.1A patent/EP2691849B1/en not_active Not-in-force
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101978350A (zh) * | 2008-03-28 | 2011-02-16 | 英特尔公司 | 用于实现高效同步和并行归约操作的向量指令 |
Non-Patent Citations (1)
Title |
---|
A Proposal for Hardware-Assisted Arithmetic Overflow Detection for Array and Bitfield Operations;Darek Mihocka等;《IEEE 2008 NINTH INTERNATIONAL CONFERENCE ON PARALLEL AND DISRTIBUTED COMPUTING APPLICATION AND TECHNOLOGIS》;20081201;第363-368页 * |
Also Published As
Publication number | Publication date |
---|---|
EP2691849A1 (en) | 2014-02-05 |
CN103460178A (zh) | 2013-12-18 |
US20140025717A1 (en) | 2014-01-23 |
WO2012134321A1 (en) | 2012-10-04 |
US8706795B2 (en) | 2014-04-22 |
EP2691849B1 (en) | 2014-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103460178B (zh) | 包括掩码上的数学操作的simd整数加法 | |
US20180107483A1 (en) | Accessing data in multi-dimensional tensors | |
US9557995B2 (en) | Data processing apparatus and method for performing segmented operations | |
KR100953884B1 (ko) | Raid 장치 및 갈로아체의 곱 연산 처리 방법 | |
US10489153B2 (en) | Stochastic rounding floating-point add instruction using entropy from a register | |
EP3336692B1 (en) | Replicate partition instruction | |
KR20190119075A (ko) | 데이터 처리장치에서의 요소 바이 벡터 연산 | |
US20230254115A1 (en) | Protection of transformations by intermediate randomization in cryptographic operations | |
US10445066B2 (en) | Stochastic rounding floating-point multiply instruction using entropy from a register | |
US8539015B2 (en) | Performing a binary coded decimal (BCD) calculation | |
CN113626759A (zh) | 使用低位宽点积引擎对高位宽数求和 | |
JP7343473B2 (ja) | レジスタベースの複素数処理 | |
US20100115232A1 (en) | Large integer support in vector operations | |
US20090083507A1 (en) | Shift-add mechanism | |
WO2016181978A1 (ja) | 行列作用装置、行列作用方法、およびプログラム | |
US9323524B2 (en) | Shift instruction with per-element shift counts and full-width sources | |
CN109766515A (zh) | 矩阵分解处理装置及方法 | |
US11379557B2 (en) | Device and method for flexibly summing matrix values | |
JP5131379B2 (ja) | Raid装置及びガロア体の積演算処理方法 | |
JP2022131311A (ja) | ベクトル演算装置、ベクトル演算方法及びプログラム | |
JPH0452970B2 (zh) | ||
JPS58155456A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170531 Termination date: 20210330 |