CN102566964A - 矢量浮点变元缩减 - Google Patents
矢量浮点变元缩减 Download PDFInfo
- Publication number
- CN102566964A CN102566964A CN2011102944856A CN201110294485A CN102566964A CN 102566964 A CN102566964 A CN 102566964A CN 2011102944856 A CN2011102944856 A CN 2011102944856A CN 201110294485 A CN201110294485 A CN 201110294485A CN 102566964 A CN102566964 A CN 102566964A
- Authority
- CN
- China
- Prior art keywords
- value
- component
- result
- components
- equipment
- 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.)
- Granted
Links
- 239000013598 vector Substances 0.000 title claims abstract description 96
- 230000009467 reduction Effects 0.000 title claims abstract description 54
- 238000007667 floating Methods 0.000 title claims abstract description 32
- 238000000034 method Methods 0.000 claims description 29
- 238000010606 normalization Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 6
- 230000000295 complement effect Effects 0.000 claims 1
- 230000009471 action Effects 0.000 abstract description 5
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
Images
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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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/544—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 for evaluating functions by calculation
- G06F7/552—Powers or roots, e.g. Pythagorean sums
- G06F7/5525—Roots or inverse roots of single operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/552—Indexing scheme relating to groups G06F7/552 - G06F7/5525
- G06F2207/5521—Inverse root of a number or a function, e.g. the reciprocal of a Pythagorean sum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
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)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Nonlinear Science (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种矢量浮点变元缩减技术。提供了一种处理设备,其具有处理电路(6、8)和译码器电路(10),译码器电路(10)响应于接收的变元缩减指令FREDUCE4、FDOT3R来生成用于控制处理电路(6、8)的控制信号(16)。变元缩减指令的动作是使输入矢量的每个分量经历对输入矢量分量的指数增加或减去指数偏移值C。指数偏移值C被选择以使得该指数偏移值C与输入矢量分量中的任何分量的最大指数值B的和介于第一预定值和第二预定值之间的范围内。执行该变元缩减指令的结果是结果矢量在经历点积运算时将会抵抗浮点下溢或上溢。
Description
技术领域
本发明涉及数据处理系统领域。更具体地,本发明涉及提供矢量浮点算术的数据处理系统的领域。
背景技术
已知对矢量浮点矢量V执行矢量归一化运算来生成归一化矢量,归一化矢量的长度为1并且具有与输入矢量V相同方向的点。此矢量归一化可以执行为如下一系列计算:
1.给定输入矢量V,计算输入矢量V与其自身的点积;
2.计算该点积的平方根倒数;以及
3.将输入矢量V的每个分量乘以该平方根倒数值。
虽然以上这系列数学运算对于理想的数学实数很管用,但是存在这样的问题,浮点数只在有限的范围内并且以有限的精确程度表示数学实数。在上述矢量归一化技术的上下文中的特定问题中,点积可能会上溢或下溢,至少导致最终结果的精确度损失并且有可能导致不能接受的错误。
解决此问题的一种方法可以是:识别输入矢量V中具有最大值的矢量分量,并且随后在将该具有最大值的矢量分量设置成大小为1的同时将其他矢量分量除以该值。此方法的问题在于:其引入了额外的浮点除法,这降低了处理速度并且增大了功率消耗。解决此问题的另一种方法可以是:以比输入矢量V更高的精确程度来执行矢量归一化过程内的中间计算(例如,如果输入矢量V是单精度浮点数,则可以使用双精度浮点数来执行中间计算)。然而,虽然该处理是健壮的,但是其还是导致低速、高功耗,并且前提是能够支持更高精度的浮点算术。
发明内容
从一个方面来看,本发明提供了一种用于处理数据的设备,包括:
处理电路,所述处理电路被配置为对数据值执行处理操作;和
译码器电路,所述译码器电路被耦合至所述处理电路并且被配置为对程序指令进行译码来生成控制信号以用于控制所述处理电路来执行由所述程序指令指定的处理操作;其中
所述译码器电路响应于变元缩减(argument reduction)指令来生成控制信号以控制所述处理电路来对具有多个分量的矢量浮点值执行处理操作,所述多个分量中的每个分量包括整数指数值和尾数值,所述处理操作包括生成多个结果分量,所述多个结果分量与通过以下步骤给出的结果分量相同:
识别所述多个分量中的最高整数指数值B;
选择指数偏移值C以使得(B+C)小于第一预定值Edotmax并且(B+C)大于第二预定值Edotmin,其中所述指数偏移值C是整数值;并且
对于所述多个分量中的每个分量,如果所述指数偏移值C不是零,则将所述指数偏移值C加到所述分量的整数指数值上来生成所述多个结果分量中的一个结果分量。
本发明既认识到了以上问题也解决了以上问题。本发明提供变元缩减指令,这包括缩放(scale)的矢量分量的生成,对于缩放的矢量分量,指数值已经全部被以相同的因子缩放以使得缩放之后的分量值中的最大值介于安全范围之内。此安全范围可以使得最大分量在被自身乘时既不会上溢也不会下溢所使用的浮点表示(并且对于一些更长的矢量,所有这些矢量的标量积将不会该上溢浮点表示)。第一预定值和第二预定值的选择可以被设置来避免这样的上溢或下溢。然而,变元缩减指令可以用来避免其它可能的危险,对于这些可能的危险,不同的限制条件可以被与第一预定值和第二预定值相关联。
在其中-127的偏移被施加于所存储的指数值的有符号的、单精度浮点值的情况中,则第一预定值可以被设置为190并且第二预定值可以被设置为64。
下溢可能发生在变元缩减指令的结果分量内。作为示例,输入矢量可以包含一个大矢量分量和两个小得多的矢量分量。如果该大矢量分量在被乘以自身时被缩小以避免上溢,则该缩放可能将导致更小矢量分量中的下溢。在此情况中,已经经历了下溢的矢量分量可以用零值替换。实际上,与较小矢量中的下溢相关联的精确度损失是可以忽略的,因为输入矢量被大分量如此严重地主导着,特别是在考虑归一化矢量的点积时。
将认识到,存在许多不同方式,其中选择指数偏移值C落在期望范围内。也将明白,对于指数偏移值C不是存在单个可接受值,而是存在将是可接受的值的范围。希望变元缩减指令的实现将促成低水平的电路和功率开销。这样的期望实现的一个示例是:对于输入矢量的每个分量,指数值的高阶部分被提取,随后这些高阶指数部分中的最高指数部分被识别。所识别的高阶部分随后可以被减去一预定值(该预定值比可能最高高阶部分小二分之一)来产生一值,该值随后加到与各个分量的各个高阶部分上。此技术在计算上是简单的并且可以在满足提供介于第一预定值和第二预定值之间的指数偏移值的要求的同时,利用相对很少的电路和功率开销就可实现。
如果当利用此实现时将得出的值与高阶部分中的任何高阶部分相加导致产生的高阶部分中的下溢并且被相加的值是负的,则这可以通过用零值替换结果分量中的对应结果分量来以适当的精确度水平进行处理。
为了提高变元缩减指令的健壮度,希望响应于形成输入浮点矢量的分量中的任何分量而有很好限定的适当行为,输入浮点矢量或者是非数字分量或者为无限值。如果多个分量中的任何分量是浮点非数字,则变元缩减指令生成其中所有的结果分量被设置为浮点非数字这样的结果。如果输入浮点矢量的分量中的任何分量是浮点无限值,则变元缩减指令产生这样的结果,该结果将与无限分量相对应的任何分量设置为大小为1并具有与浮点无限的符号匹配的符号的值,同时不予无限值对应的所有其余结果值被设置为具有大小为0的浮点值。
将明白,与生成被从输入分量适当地缩放的结果分量一样,变元缩减指令还可以产生其它结果值。特定实现可以额外的结果信道,这些额外的结果信道可用于携带除了这些结果分量之外的来自变元缩减指令的额外结果,并且这些额外的结果可以提高总体处理效率,如果它们可以避免执行另一指令的需要的话。这样的情况的一个示例是:当变元缩减指令也生成具有与由这多个结果分量的标量积给出的值相同的值时。
如前所述,变元缩减指令的一个示例使用情况是当生成由多个归一化分量形成的归一化矢量浮点值时。变元缩减指令通过利用变元缩减指令生成其结果分量来辅助此,其中变元缩减指令之后跟随一系列一个或多个进一步的指令,这些指令用来生成与由结果分量的标量积给出的值相同的值;生成所述标量积的平方根倒数;以及对于每个结果分量,通过将结果分量与平方根倒数相乘来生成对应的归一化结果分量。
虽然变元缩减指令可以以任意形式的处理设备例如通用处理器来提供,但是其在常常需要矢量归一化的图形处理单元中特别有用。
从本发明的另一个方面来看,提供一种用于处理数据的设备,包括:
处理装置,所述处理装置用于对数据值执行处理操作;和
译码器装置,所述译码器装置用于对程序指令进行译码来生成控制信号以用于控制所述处理电路来执行由所述程序指令指定的处理操作;其中
所述译码器装置响应于变元缩减指令来生成控制信号以控制所述处理装置来对具有多个分量的矢量浮点值执行处理操作,所述多个分量中的每个分量包括整数指数值和尾数值,所述处理操作包括生成多个结果分量,所述多个结果分量与通过以下步骤给出的结果分量相同:
识别所述多个分量中的最高整数指数值B;
选择指数偏移值C以使得(B+C)小于第一预定值Edotmax并且(B+C)大于第二预定值Edotmin,其中所述指数偏移值C是整数值;并且
对于所述多个分量中的每个分量,如果所述指数偏移值C不是零,则将所述指数偏移值C加到所述分量的整数指数值上来生成所述多个结果分量中的一个结果分量。
从本发明的另一个方面来看,提供一种处理数据的方法,包括以下步骤:
响应于变元缩减指令,对具有多个分量的矢量浮点执行处理操作,所述多个分量中的每个分量包括整数指数值和尾数值,所述处理操作包括生成多个结果分量,所述多个结果分量与通过以下步骤给出的结果分量相同:
识别所述多个分量中的最高整数指数值B;
选择指数偏移值C以使得(B+C)小于第一预定值Edotmax并且(B+C)大于第二预定值Edotmin,其中所述指数偏移值C是整数值;并且
对于所述多个分量中的每个分量,如果所述指数偏移值C不是零,则将所述指数偏移值C与所述分量的整数指数值相加来生成所述多个结果分量中的一个结果分量。
从本发明的另一个方面来看,提供一种一种计算机程序产品,其具有非暂时的形式并且存储计算机程序,所述计算机程序用于控制数据处理设备响应于程序指令而执行数据处理,其中所述计算机程序包括变元缩减指令,所述变元缩减指令用于控制所述数据处理设备来对具有多个分量的矢量浮点值执行处理操作,所述多个分量中的每个分量包括整数指数值和尾数值,所述处理操作包括生成多个结果分量,所述多个结果分量与通过以下步骤给出的结果分量相同:
识别所述多个分量中的最高整数指数值B;
选择指数偏移值C以使得(B+C)小于第一预定值Edotmax并且(B+C)大于第二预定值Edotmin,其中所述指数偏移值C是整数值;并且
对于所述多个分量中的每个分量,如果所述指数偏移值C不是零,则将所述指数偏移值C与所述分量的整数指数值相加来生成所述多个结果分量中的一个结果分量。
将明白,本发明的另一类可能的实现时虚拟机,其中通用计算机被软件控制来提供支持以上讨论的变元缩减指令的执行的虚拟机执行环境。
从可以结合附图阅读的以下说明性实施例的详细描述,本发明的以上和其它目的、特征和优点将变得显而易见。
附图说明
图1示意性地图示出支持变元缩减指令的执行的图形处理单元核心;
图2图示出矢量归一化运算;
图3示意性地图示出单精度浮点数的格式;
图4示意性地图示出第一形式的变元缩减指令的动作;
图5示意地图示出第二形式的变元缩减指令的动作;
图6是示意性地图示出在执行变元缩减指令时选择和应用适当水平的指数缩放的一种方式的流程图;
图7示意性地图示出非数字例外处理;
图8是示意性地图示出无限值例外处理的流程图;
图9是示意性地图示出使用包括变元缩减指令的程序指令序列所执行的矢量归一化的流程图;以及
图10示意性地图示出可以用来提供本技术的虚拟机实现的通用计算机。
具体实施方式
图1示出耦合到存储器4的图形处理单元核心2。图形处理单元核心2包括浮点算术流水线6、浮点寄存器组8和指令译码器10。将明白,图1中的图形处理单元核心2的图示是被简化的并且实际上可以提供许多进一步的处理元件,例如加载存储流水线、纹理化流水线、缓存存储器等等。
存储器4存储图形程序12和图形数据14。在操作中,来自图形程序12的程序指令被图形处理单元核心2抽取并提供给指令译码器10。指令译码器10对这些程序指令进行译码并且生成控制信号16,控制信号16被施加于形式为浮点算术流水线6和浮点寄存器组8的处理电路来配置和控制该处理电路6、8执行有关程序指令所指定的期望处理操作。此处理操作将在来自图形数据14的数据值上执行,这些数据值被加载到浮点寄存器组8或从浮点寄存器组8被存储以用于由浮点算术流水线6操控。
如本技术领域人员将理解的,依赖于接收的程序指令,指令译码器10将生成控制信号16来配置处理电路6、8执行特定期望处理操作。这些处理操作将采取各种形式,诸如乘法、加法、逻辑运算、前述运算和其它运算的矢量变形。根据本技术,指令译码器10响应于从存储器4抽取的作为图形程序12的一部分的变元缩减(argument reduction)指令,来执行以下将描述的处理操作。将明白,执行这些期望处理操作的电路可以具有各种不同形式并且本技术涵盖所有这些不同形式。具体地,参考特定一系列数学运算描述的结果值可以通过产生相同结果值的不同的一组数学运算来生成。这些变形都包括在本技术中。
图2图示出矢量归一化运算。输入矢量18将要经历归一化运算来生成大小为1的归一化矢量20。这可以通过如行22中所述将输入矢量18除以输入矢量的大小来实现。输入矢量的大小进而可以作为输入矢量18的点积的平方根被计算出。这在行24中示出。此方法的问题在于:输入矢量18的点积可能经历浮点下溢或浮点上溢。如果这些中的任一者情况发生,则存在至少最终结果的精确度损失或者从上溢或下溢导致错误的可能性。
本技术利用了这样的实现方式:如果输入矢量被缩放的话,行24中所示的表达式的分子和分母将都按相同的因子缩放。可以施加于输入矢量18的在数学上方便的、低功率的、低开销形式的缩放是与输入矢量18的缩放相对应的指数值变化2的幂。由于此缩放对归一化后的矢量20没有影响,因此所选择的缩放值可以使点积不会上溢或下溢。因此,所利用的指数偏移值C(向所有输入矢量分量的指数值加上或从所有输入矢量分量的指数值减去的数)可以是在一范围内选定的,以便确保从已经经受变元缩减指令的矢量计算出的点积将不会导致对最终的点积结果产生不利影响的上溢或下溢。
图3示意性地图示出单精度浮点数的格式。本技术领域的技术人员将熟悉此格式。具体地,浮点单精度数是32比特数,其包括表示符号的单个比特S、表示指数值的8比特E(经历单精度-127偏移)以及23比特尾数值M(尾数中存在隐式开头1)。以下讨论的示例对单精度浮点数进行运算。然而,本技术不限于这样的单精度浮点数并且可以用于例如双精度浮点数(或其它精度的浮点数),如果希望的话。此外,虽然图3中示出的格式被广泛使用,但是用来表示浮点数的特定格式也可以不同。
图4图示出变元缩减指令FREDUCE4的第一示例。该指令采用4分量输入矢量并且生成带有4个结果分量的输出。结果分量中的每一个都已经经历了C的指数值偏移。这对应于将每个输入分量乘以值2C。
在此变元缩减指令中针对C选定的值可以在允许范围内变化。在此允许范围内的任何值都可以是可接受的。此范围是通过如下方式来限定的:识别出作为输入分量中的最大指数值的值B并且随后将C设置成一整数使得B+C小于190(对应于值Edotmax)并且使得B+C大于64(对应于Edotmin)。此示例中的值190对应于第一预定值并且值64对应于第二预定值。C的值被选定为一整数以使得B+C介于第一预定值和第二预定值之间。这将最大结果分量的大小设置为不会上溢和下溢的范围。在希望使由许多结果分量的积的和组成的点积不会上溢(当矢量长度增大时,该风险增大)的实施例中,可接受范围的端点可以调节。
图5图示出第二示例变元缩减指令FDOT3R。此变元缩减指令采用三分量输入矢量并且生成三个缩放的结果分量以及缩放的结果分量的点积。该缩放是通过利用为确保B+C介于可接受范围内而选定的值C进行前述指数偏移来执行的。在希望将结果分量的标量点积用于随后的计算时(诸如当对三分量输入矢量进行归一化时),也生成分量的标量点积的变元缩减指令FDOT3R的变形是有利的。
图6是示意性地图示出在一个示例实施例中可以如何选择和应用指数偏移值C(指数改变值)的流程图。此示例具有有益地低的电路和功率开销。在步骤26处,检查输入矢量来看是否有任何非数字(not-a-number)分量。如果检测到任何非数字分量,则在步骤28处触发非数字处理并且结束变元缩减指令的执行。如果在步骤26处没有检测到非数字分量,则步骤30工作来检测在输入矢量内是否存在任何无限分量。如果存在任何无限分量,则步骤32工作来触发无限处理完成变元缩减指令的执行。
如果在步骤26和30中检查到输入矢量既没有非数字分量也没有无限分量,则处理继续到步骤34,在步骤34处,输入分量的每一个分量的指数值的最高P个比特被提取来形成值Ehoi。步骤36随后将值B设置为在步骤34处提取的值Ehoi的最大值。步骤38将指数偏移值C设置为2(P-1)-B。在流程图的剩余部分中,此确定/选定的指数偏移(缩放因子)随后被应用于所有输入矢量分量。在步骤40处,索引值i被设置为0。步骤42随后为与i的当前值相对应的矢量分量选择Ehoi值并且将在步骤38得出的C的值加到该值上。步骤44判断Ehoi的更新后的值是否小于0。如果该值小于0,则步骤46将对应的结果矢量分量vi设置为0。如果步骤44处的判定是Ehoi不小于0或在步骤46之后,处理随后进行到步骤48,在步骤48处,判断是否存在需要调节的任何更多输入矢量分量vi。如果还存在这样的分量,则步骤50增大i的值并且处理返回到步骤42。
图7图示出与图6的步骤28相对应的非数字分量例外处理。非数字处理可以通过在步骤52处将所有结果分量设置成非数字值来执行。
图8是示意性地图示出无限制例外处理的流程图。本技术领域的技术人员将知晓,浮点无限值可以是负无限或正无限。图8的整个动作是将与负无限值相对应的分量设置为-1并且将与正无限值相对应的分量设置为+1。既不与正无限值对应也不与负无限值对应的所有其它结果分量被设置为具有0的大小。
步骤54对值i进行初始化。步骤56判断针对当前值i的输入矢量分量是否是正无限。如果步骤56处的判定是该输入矢量分量是正无限,则步骤58将对应的结果矢量分量设置为+1。处理随后进行到步骤60,在步骤60处,如果存在要处理的任何更多输入矢量分量,则步骤62增大i的值并且处理返回到步骤56。如果不存在要处理的更多输入矢量分量,则无限例外处理已经完成。
如果步骤56处的判定是当前输入矢量分量vi不是正无限,则步骤64检查该值是否是负无限。如果该值是负无限,则步骤66将对应的结果分量设置为-1。
如果步骤56和步骤64都没有检查到无限值,则步骤68用来将结果矢量内的任何非无限分量设置为具有0的大小。
图9是示意性地图示出可被执行来执行矢量归一化运算的指令序列的流程图。步骤70生成缩放的矢量分量(结果分量)。这可以通过在4分量输入矢量的情况中执行与第一示例变元缩减指令FREDUCE4相对应的指令来实现。或者,在三分量输入矢量的情况中,步骤70可以实现为第二示例变元缩减指令FDOT3R的执行的一部分。使用第二示例变元缩减指令FDOT3R允许利用单个指令来计算生成缩放分量的标量积(结果分量的点积)的步骤70和步骤72二者。如果四分量矢量正被处理,则可以使用单独的矢量乘法VMUL来计算步骤72的标量积。
步骤74生成该标量积的平方根倒数。步骤76随后将每个缩放的分量(结果分量)乘以在步骤74处生成的平方根倒数。图9的处理与图2中的期望计算的算术图示的比较将示出图9的指令序列的执行对应于图2的最后一行中所图示的值的确定。
图10图示出可以使用的虚拟机实现。虽然前述实施例在用于操作支持有关技术的具体处理硬件的设备和方法方面实现本发明,但是也可以提供对硬件装置的所谓的虚拟机实施方式。这些虚拟机实施方式运行在主处理器530上,主处理器530运行支持虚拟机程序510的主操作系统520。通常,需要大型强大处理器来提供以合理速度执行的虚拟机实现,但是这样的方法在某些情形下可以调整,例如当为了兼容或再利用的原因而运行产自于另一处理器的代码时。虚拟机程序510提供到应用程序500的应用程序接口,其与通过真实硬件(正被虚拟机程序510建模的设备)提供的应用程序接口一样。因此,包括对上述存储器访问的控制的程序指令可以使用虚拟机程序510从应用程序500执行来建模它们与虚拟机硬件的交互。
虽然已经在此参考附图详细描述本发明的说明性实施例,但是应当理解,本发明不限于这些精确的实施例,并且在不偏离由所附权利要求限定的本发明的范围和精神的情况下,可以实行各种更改和修改。
Claims (18)
1.一种用于处理数据的设备,包括:
处理电路,所述处理电路被配置为对数据值执行处理操作;和
译码器电路,所述译码器电路耦合至所述处理电路并且被配置为对程序指令进行译码,来生成控制信号以用于控制所述处理电路来执行由所述程序指令指定的处理操作;其中
所述译码器电路响应于变元缩减指令来生成控制信号以控制所述处理电路来对具有多个分量的矢量浮点值执行处理操作,所述多个分量中的每个分量包括整数指数值和尾数值,所述处理操作包括生成多个结果分量,所述多个结果分量与如下给出的相同:
识别所述多个分量中的最高整数指数值B;
选择指数偏移值C以使得(B+C)小于第一预定值Edotmax并且(B+C)大于第二预定值Edotmin,其中所述指数偏移值C是整数值;并且
对于所述多个分量中的每个分量,如果所述指数偏移值C不是零,则将所述指数偏移值C加到所述分量的整数指数值上来生成所述多个结果分量中的一个结果分量。
2.如权利要求1所述的设备,其中,所述第一预定值Edotmax是最低整数值,在该最低整数值处,具有整数指数值Edotmax和尾数M的浮点值的平方对于M的至少一个值产生浮点上溢。
3.如权利要求2所述的设备,其中,每个分量具有表示浮点数(-1)Sc*2(Ec-127)*(1+Mc/224)的符号值Sc、整数指数值Ec和尾数值Mc,并且Edotmax是190。
4.如权利要求1所述的设备,其中,所述第二预定值Edotmin是最高整数值,在该最高整数值处,具有整数指数值Edotmin和尾数M的浮点值的平方对于M的至少一个值产生浮点下溢。
5.如权利要求4所述的设备,其中,每个分量具有表示浮点数(-1)Sc*2(Ec-127)*(1+Mc/224)的符号值Sc、整数指数值Ec和尾数值Mc,并且Edotmax是64。
6.如权利要求1所述的设备,其中,对于所述多个分量中的任何一个分量,如果当将所述指数偏移值C加到所述分量的整数指数值上来生成所述多个结果分量中的一个结果分量时,所述多个结果分量的所述一个结果分量经历浮点下溢,则用零值替换所述多个结果分量的所述一个结果分量。
7.如权利要求1所述的设备,其中,所述指数偏移值C被选择为具有给出如下相同结果的值:
对于所述多个分量中的每个分量,形成高阶指数部分Eho,所述高阶指数部分Eho是所述整数指数值的最高P比特,其中P小于所述整数指数值内的总比特数;
从所述高阶指数部分Eho选择最高值Ehomax;
对于所述多个分量中的每个分量,将值(2(P-1)-Ehomax)加到所述高阶指数部分Eho上。
8.如权利要求7所述的设备,其中,对于所述多个分量中的任何一个分量,如果当将所述值(2(P-1)-Ehomax)加到所述高阶指数部分Eho上时,所述值(2(P-1)-Ehomax)是负的并且所述相加下溢,则利用零值替换所述多个结果分量中的对应结果分量。
9.如权利要求7所述的设备,其中,所述整数指数值内的总比特数是8并且P=3。
10.如权利要求1所述的设备,其中,如果所述多个分量中的任何分量是浮点非数字,则所述多个结果分量中的所有结果分量被设置为浮点非数字。
11.如权利要求1所述的设备,其中,如果所述多个分量中的任何分量是浮点无限值,则每个与具有浮点无限值的分量相对应的结果分量被设置为具有大小1并且具有与所述分量的所述浮点无限值相匹配的符号的浮点值,并且所有其余结果分量被设置为大小为0的浮点值。
12.如权利要求1所述的设备,其中,所述变元缩减指令还生成结果标量积,所述结果标量积具有与由所述多个结果分量的标量积给出的值相同的值。
13.如权利要求1所述的设备,其中,所述处理电路和所述译码器电路响应于所述变元缩减指令,所述变元缩减指令后跟随了一系列一个或多个进一步的指令,来生成具有多个归一化分量的归一化矢量浮点值,所述多个归一化分量与如下给出的相同:
生成具有与由所述多个结果分量的标量积给出的值相同的值的结果标量积;
生成所述结果标量积的平方根倒数;以及
对于每个结果分量,通过将所述结果分量乘以所述平方根倒数来生成对应的归一化分量。
14.如权利要求1所述的设备,其中,所述处理电路和所述译码器电路是图形处理单元的一部分。
15.一种用于处理数据的设备,包括:
处理装置,用于对数据值执行处理操作;和
译码器装置,用于对程序指令进行译码来生成控制信号以用于控制所述处理电路来执行由所述程序指令指定的处理操作;其中
所述译码器装置响应于变元缩减指令来生成控制信号以控制所述处理装置来对具有多个分量的矢量浮点值执行处理操作,所述多个分量中的每个分量包括整数指数值和尾数值,所述处理操作包括生成多个结果分量,所述多个结果分量与如下给出的相同:
识别所述多个分量中的最高整数指数值B;
选择指数偏移值C以使得(B+C)小于第一预定值Edotmax并且(B+C)大于第二预定值Edotmin,其中所述指数偏移值C是整数值;并且
对于所述多个分量中的每个分量,如果所述指数偏移值C不是零,则将所述指数偏移值C加到所述分量的整数指数值上来生成所述多个结果分量中的一个结果分量。
16.一种处理数据的方法,包括以下步骤:
响应于变元缩减指令,对具有多个分量的矢量浮点值执行处理操作,所述多个分量中的每个分量包括整数指数值和尾数值,所述处理操作包括生成多个结果分量,所述多个结果分量与如下给出的相同:
识别所述多个分量中的最高整数指数值B;
选择指数偏移值C以使得(B+C)小于第一预定值Edotmax并且(B+C)大于第二预定值Edotmin,其中所述指数偏移值C是整数值;并且
对于所述多个分量中的每个分量,如果所述指数偏移值C不是零,则将所述指数偏移值C加到所述分量的整数指数值上来生成所述多个结果分量中的一个结果分量。
17.一种计算机程序产品,其具有非暂时的形式并且存储计算机程序,所述计算机程序用于控制数据处理设备来响应于程序指令而执行数据处理,其中所述计算机程序包括变元缩减指令,所述变元缩减指令用于控制所述数据处理设备来对具有多个分量的矢量浮点值执行处理操作,所述多个分量中的每个分量包括整数指数值和尾数值,所述处理操作包括生成多个结果分量,所述多个结果分量与如下给出的相同:
识别所述多个分量中的最高整数指数值B;
选择指数偏移值C以使得(B+C)小于第一预定值Edotmax并且(B+C)大于第二预定值Edotmin,其中所述指数偏移值C是整数值;并且
对于所述多个分量中的每个分量,如果所述指数偏移值C不是零,则将所述指数偏移值C加到所述分量的整数指数值上来生成所述多个结果分量中的一个结果分量。
18.一种包括计算机的虚拟机,该计算机执行程序来提供如权利要求1所述的用于处理数据的设备。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1016071.1 | 2010-09-24 | ||
GB1016071.1A GB2483902B (en) | 2010-09-24 | 2010-09-24 | Vector floating point argument reduction |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102566964A true CN102566964A (zh) | 2012-07-11 |
CN102566964B CN102566964B (zh) | 2016-04-27 |
Family
ID=43127899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110294485.6A Active CN102566964B (zh) | 2010-09-24 | 2011-09-26 | 矢量浮点变元缩减 |
Country Status (6)
Country | Link |
---|---|
US (2) | US20130246496A1 (zh) |
JP (1) | JP5731937B2 (zh) |
CN (1) | CN102566964B (zh) |
GB (1) | GB2483902B (zh) |
TW (1) | TWI526928B (zh) |
WO (1) | WO2012038708A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104166535A (zh) * | 2013-07-19 | 2014-11-26 | 郑州宇通客车股份有限公司 | 定点处理器及其防溢方法 |
CN104866279A (zh) * | 2014-02-21 | 2015-08-26 | 北京国睿中数科技股份有限公司 | 实现浮点数指数分析替换的装置及方法 |
CN106489131A (zh) * | 2014-07-15 | 2017-03-08 | 高通股份有限公司 | 用在算术逻辑单元中的向量缩放指令 |
CN107533456A (zh) * | 2015-04-14 | 2018-01-02 | 美国亚德诺半导体公司 | 对数和指数指令的扩展使用 |
CN111258537A (zh) * | 2020-01-15 | 2020-06-09 | 中科寒武纪科技股份有限公司 | 一种防止数据溢出的方法、装置和芯片 |
CN112088354A (zh) * | 2018-05-08 | 2020-12-15 | 微软技术许可有限责任公司 | 使用共享指数的块浮点计算 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9104473B2 (en) * | 2012-03-30 | 2015-08-11 | Altera Corporation | Conversion and compression of floating-point and integer data |
WO2017165904A2 (en) * | 2016-03-29 | 2017-10-05 | Ocean Logic Pty Ltd | Method for operating a digital computer to reduce the computational complexity associated with dot products between large vectors |
CN106775587B (zh) * | 2016-11-30 | 2020-04-14 | 上海兆芯集成电路有限公司 | 计算机指令的执行方法以及使用此方法的装置 |
US11636319B2 (en) * | 2018-08-22 | 2023-04-25 | Intel Corporation | Iterative normalization for machine learning applications |
US10853068B2 (en) | 2018-09-28 | 2020-12-01 | Ocean Logic Pty Ltd | Method for operating a digital computer to reduce the computational complexity associated with dot products between large vectors |
US11586883B2 (en) * | 2018-12-14 | 2023-02-21 | Microsoft Technology Licensing, Llc | Residual quantization for neural networks |
US11347511B2 (en) * | 2019-05-20 | 2022-05-31 | Arm Limited | Floating-point scaling operation |
US11188303B2 (en) * | 2019-10-02 | 2021-11-30 | Facebook, Inc. | Floating point multiply hardware using decomposed component numbers |
US11157238B2 (en) * | 2019-11-15 | 2021-10-26 | Intel Corporation | Use of a single instruction set architecture (ISA) instruction for vector normalization |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5463574A (en) * | 1992-11-05 | 1995-10-31 | International Business Machines Corporation | Apparatus for argument reduction in exponential computations of IEEE standard floating-point numbers |
US6247117B1 (en) * | 1999-03-08 | 2001-06-12 | Advanced Micro Devices, Inc. | Apparatus and method for using checking instructions in a floating-point execution unit |
US20040113911A1 (en) * | 2001-01-18 | 2004-06-17 | Collodi David J. | Method and system for improved per-pixel shading in a computer graphics system |
US20060101242A1 (en) * | 2004-11-10 | 2006-05-11 | Nvidia Corporation | Multipurpose multiply-add functional unit |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5563818A (en) * | 1994-12-12 | 1996-10-08 | International Business Machines Corporation | Method and system for performing floating-point division using selected approximation values |
US5619439A (en) * | 1995-07-05 | 1997-04-08 | Sun Microsystems, Inc. | Shared hardware for multiply, divide, and square root exponent calculation |
JP3790307B2 (ja) * | 1996-10-16 | 2006-06-28 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
US5973705A (en) * | 1997-04-24 | 1999-10-26 | International Business Machines Corporation | Geometry pipeline implemented on a SIMD machine |
JPH1124887A (ja) | 1997-07-01 | 1999-01-29 | Sega Enterp Ltd | ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体 |
US6353439B1 (en) * | 1999-12-06 | 2002-03-05 | Nvidia Corporation | System, method and computer program product for a blending operation in a transform module of a computer graphics pipeline |
JP2001175455A (ja) | 1999-12-14 | 2001-06-29 | Sega Corp | ベクトル正規化演算器、ベクトル正規化演算方法及び記録媒体 |
US6996597B2 (en) * | 2001-06-15 | 2006-02-07 | Centillium Communications, Inc. | Increasing precision in multi-stage processing of digital signals |
JP2006065633A (ja) | 2004-08-27 | 2006-03-09 | Sony Computer Entertainment Inc | 演算方法および装置 |
JP2007079696A (ja) * | 2005-09-12 | 2007-03-29 | Hitachi Kokusai Electric Inc | 浮動小数点数のベクトル演算方法 |
CA2624267A1 (en) * | 2005-10-03 | 2007-04-12 | Sunfish Studio, Llc | Representation of modal intervals within a computer |
GB2454201A (en) * | 2007-10-30 | 2009-05-06 | Advanced Risc Mach Ltd | Combined Magnitude Detection and Arithmetic Operation |
US7925866B2 (en) * | 2008-01-23 | 2011-04-12 | Arm Limited | Data processing apparatus and method for handling instructions to be executed by processing circuitry |
GB2458665B (en) * | 2008-03-26 | 2012-03-07 | Advanced Risc Mach Ltd | Polynomial data processing operation |
GB2464292A (en) * | 2008-10-08 | 2010-04-14 | Advanced Risc Mach Ltd | SIMD processor circuit for performing iterative SIMD multiply-accumulate operations |
US20100262722A1 (en) * | 2009-04-10 | 2010-10-14 | Christophe Vauthier | Dynamic Assignment of Graphics Processing Unit to a Virtual Machine |
-
2010
- 2010-09-24 GB GB1016071.1A patent/GB2483902B/en active Active
-
2011
- 2011-03-14 US US13/825,179 patent/US20130246496A1/en not_active Abandoned
- 2011-03-14 WO PCT/GB2011/050497 patent/WO2012038708A1/en active Application Filing
- 2011-08-23 TW TW100130131A patent/TWI526928B/zh active
- 2011-08-26 US US13/137,576 patent/US9146901B2/en active Active
- 2011-09-16 JP JP2011202971A patent/JP5731937B2/ja active Active
- 2011-09-26 CN CN201110294485.6A patent/CN102566964B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5463574A (en) * | 1992-11-05 | 1995-10-31 | International Business Machines Corporation | Apparatus for argument reduction in exponential computations of IEEE standard floating-point numbers |
US6247117B1 (en) * | 1999-03-08 | 2001-06-12 | Advanced Micro Devices, Inc. | Apparatus and method for using checking instructions in a floating-point execution unit |
US20040113911A1 (en) * | 2001-01-18 | 2004-06-17 | Collodi David J. | Method and system for improved per-pixel shading in a computer graphics system |
US20060101242A1 (en) * | 2004-11-10 | 2006-05-11 | Nvidia Corporation | Multipurpose multiply-add functional unit |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104166535A (zh) * | 2013-07-19 | 2014-11-26 | 郑州宇通客车股份有限公司 | 定点处理器及其防溢方法 |
CN104166535B (zh) * | 2013-07-19 | 2017-07-28 | 郑州宇通客车股份有限公司 | 定点处理器及其防溢方法 |
CN104866279A (zh) * | 2014-02-21 | 2015-08-26 | 北京国睿中数科技股份有限公司 | 实现浮点数指数分析替换的装置及方法 |
CN106489131A (zh) * | 2014-07-15 | 2017-03-08 | 高通股份有限公司 | 用在算术逻辑单元中的向量缩放指令 |
CN107533456A (zh) * | 2015-04-14 | 2018-01-02 | 美国亚德诺半导体公司 | 对数和指数指令的扩展使用 |
CN107533456B (zh) * | 2015-04-14 | 2021-01-26 | 美国亚德诺半导体公司 | 对数和指数指令的扩展使用 |
CN112088354A (zh) * | 2018-05-08 | 2020-12-15 | 微软技术许可有限责任公司 | 使用共享指数的块浮点计算 |
CN111258537A (zh) * | 2020-01-15 | 2020-06-09 | 中科寒武纪科技股份有限公司 | 一种防止数据溢出的方法、装置和芯片 |
CN111258537B (zh) * | 2020-01-15 | 2022-08-09 | 中科寒武纪科技股份有限公司 | 一种防止数据溢出的方法、装置和芯片 |
Also Published As
Publication number | Publication date |
---|---|
US9146901B2 (en) | 2015-09-29 |
US20120078987A1 (en) | 2012-03-29 |
US20130246496A1 (en) | 2013-09-19 |
JP5731937B2 (ja) | 2015-06-10 |
TW201216152A (en) | 2012-04-16 |
CN102566964B (zh) | 2016-04-27 |
TWI526928B (zh) | 2016-03-21 |
JP2012069116A (ja) | 2012-04-05 |
GB201016071D0 (en) | 2010-11-10 |
WO2012038708A1 (en) | 2012-03-29 |
GB2483902A (en) | 2012-03-28 |
GB2483902B (en) | 2018-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102566964A (zh) | 矢量浮点变元缩减 | |
KR101735677B1 (ko) | 부동 소수점의 복합 연산장치 및 그 연산방법 | |
CN107077416B (zh) | 用于以选择性舍入模式进行向量处理的装置和方法 | |
US8990282B2 (en) | Apparatus and method for performing fused multiply add floating point operation | |
US8239438B2 (en) | Method and apparatus for implementing a multiple operand vector floating point summation to scalar function | |
JP2012069116A5 (zh) | ||
CN109871235A (zh) | 响应指令执行舍入运算 | |
CN106250098B (zh) | 用于在执行浮点运算时控制舍入的装置及方法 | |
CN115390790A (zh) | 一种具有融合精度转换功能的浮点乘加单元及其应用方法 | |
US10795967B2 (en) | Multiple precision integer multiplier by matrix-matrix multiplications using 16-bit floating point multiplier | |
CN116820393A (zh) | 支持深度学习指令的多精度乘加单元及其应用方法 | |
KR20180027537A (ko) | 와이드 데이터 타입들의 비교 | |
CN107688469A (zh) | 兼顾通用指令和专用指令的可重构计算装置 | |
JP7087918B2 (ja) | 演算処理装置及びその制御方法 | |
CN110199255B (zh) | 组合若干执行单元以计算单一宽标量结果 | |
US20140136582A1 (en) | Method and apparatus for digital automatic gain control | |
US20240211211A1 (en) | Mac apparatus using floating point unit and control method thereof | |
CN201449601U (zh) | 超越函数装置 | |
US11704092B2 (en) | High-precision anchored-implicit processing | |
JP4109181B2 (ja) | 論理回路、および、それを使用した浮動小数点演算回路とマイクロプロセッサ | |
CN116997887A (zh) | 用于矩阵乘法运算的矩阵的近似的数据压缩器 | |
KR20230159489A (ko) | 행렬 곱하기 동작들에 대한 행렬의 근사화 | |
CN103119532B (zh) | 处理器、指令执行方法和计算系统 | |
JP2021111016A (ja) | 演算処理装置、演算処理装置の制御方法及び演算処理プログラム | |
CN116368496A (zh) | 电子设备和电子设备的控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |