CN101874237A - 用于执行算术运算的大小检测的设备和方法 - Google Patents
用于执行算术运算的大小检测的设备和方法 Download PDFInfo
- Publication number
- CN101874237A CN101874237A CN200880114818A CN200880114818A CN101874237A CN 101874237 A CN101874237 A CN 101874237A CN 200880114818 A CN200880114818 A CN 200880114818A CN 200880114818 A CN200880114818 A CN 200880114818A CN 101874237 A CN101874237 A CN 101874237A
- Authority
- CN
- China
- Prior art keywords
- equipment
- size
- data
- result
- simd
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000001514 detection method Methods 0.000 title claims description 29
- 239000013598 vector Substances 0.000 claims description 34
- 230000004044 response Effects 0.000 claims description 26
- 230000004087 circulation Effects 0.000 claims description 20
- 241001269238 Data Species 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims 4
- 238000003672 processing method Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 28
- 238000004422 calculation algorithm Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 10
- 238000007792 addition Methods 0.000 description 7
- 239000000654 additive Substances 0.000 description 7
- 230000000996 additive effect Effects 0.000 description 7
- 230000000295 complement effect Effects 0.000 description 7
- 238000006073 displacement reaction Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000005070 sampling Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 244000287680 Garcinia dulcis Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 241000255777 Lepidoptera Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000001915 proofreading effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000001839 systemic circulation Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- 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/02—Comparing digital values
- G06F7/026—Magnitude comparison, i.e. determining the relative order of operands based on their numerical value, e.g. window comparator
-
- 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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49915—Mantissa overflow or underflow in handling floating-point numbers
-
- 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/3001—Arithmetic instructions
-
- 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
- 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
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/453—Help systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Measurement Of Current Or Voltage (AREA)
Abstract
提供一种设备和方法,其包括处理电路,一个或多个寄存器和控制电路。该控制电路配置成以致其响应于组合大小检测算术指令,来控制该处理电路以执行在至少一个数据单元上的算术运算,且进一步执行大小检测运算。该大小检测运算计算大小指示结果,其提供该算术运算的结果的大小的最高有效位的位置的指示,而不论该最高有效位位置是否超过该至少一个数据单元的数据单元宽度。
Description
技术领域
本发明是关于用于执行算术运算的大小检测的设备和方法。
背景技术
在许多数据处理应用中,有执行算术运算和执行算术结果的定标(scaling)的需求。用于执行定标的技术是块浮点技术。在块浮点算术中,数据单元块被指定单一指数而不是各数据单元具有其自己的指数。因此,所述指数是典型地通过具有最大大小的块中的数据单元确定。与标准浮点算术相比,块浮点技术减少维持一系列计算中的精度所需的位的数量。块浮点计算典型地是在软件中执行以及需要在计算的各阶段后的完整数据集的定标,其可能涉及数据值的大小中的改变。维持数据定标以防止溢位而所需的额外指令减弱了关于处理循环和功率消耗两者的处理性能。
因此,需求改进计算的效率,如块浮点计算,其需求数据定标和算术运算二者在数据上执行。
发明内容
根据第一方面,本发明提供一种用于处理数据的设备,所述设备包括:
处理电路,其用于执行数据处理运算;
一个或多个寄存器,其用于存储数据;
控制电路,其用于控制所述处理电路以执行所述这些数据处理运算;
其中所述控制电路配置成以致其响应于组合的大小检测算术指令,以控制所述处理电路来执行在存储于所述一个或多个寄存器中的至少一个数据单元上的且由所述组合的大小检测算术指令指定的算术运算以及执行大小检测运算,其中所述大小检测运算计算大小指示结果,其提供所述算术运算的结果的大小的最高有效位的位置的指示,而不论所述最高有效位位置是否超过所述至少一个数据单元的数据单元宽度。
本发明认识到通过提供单一指令,其既执行在至少一个数据单元上的算术运算又执行大小检测运算以提供该算术运算的最高有效位的位置的指示,而不论该最高有效位位置是否超过该数据单元的数据单元宽度,可减少用于执行算术操控以及数据定标两者的算术的程序代码密度。提供专用指令以既计算算术结果又促进该算术结果的最高有效位的位置的计算,意指与提供分离的大小检测和算术运算的已知系统相比,共同数据操控可更有效率地执行。与先前已知系统比较,经改进的效率对于相同功能获得执行较少指令、更高吞吐量以及减少的功率消耗的结果。
根据本技术的组合大小检测算术指令可在包括仅标量处理电路的数据处理设备中实施。在一个实施例中,处理电路是SIMD处理电路,其设置成针对多个SIMD通道的每个独立地执行算术运算,该组合大小检测算术指令识别包括多个数据单元的至少一个SIMD输入矢量,算术运算在数据单元上独立地执行以产生包括相应多个结果数据单元的SIMD结果矢量。这提供了改进效率,因为其使得对应于SIMD结果矢量的相应多个结果数据单元的多个大小指示结果能实质上同时地计算。
虽然该大小指示结果可指示在SIMD结果矢量内的该多个数据单元的任一者的最高有效位,在一个实施例中,该大小指示结果提供对应于该SIMD结果矢量的相应多个数据单元的多个大小的最大者的最高有效位的指示。
该大小指示结果可依各种不同格式提供,但在一个实施例,该大小指示结果包括SIMD结果矢量,其具有分别对应于该多个SIMD通道的多个大小指示结果值。
响应于组合大小检测算术指令的数据处理设备的一个或多个寄存器可包括单一寄存器组。然而,在一个实施例中,该一个或多个寄存器包括SIMD寄存器组和标量寄存器组。这允许SIMD系统中的指令的有效实施,因为该大小指示结果可存储在标量寄存器中。
在一个实施例中,控制电路控制处理电路以在SIMD寄存器组中存储SIMD算术运算的结果。
应了解,大小指示结果可存储在任何形式的内存(memory)或专用寄存器中。然而,在一个实施例中,控制电路控制处理电路以存储大小指示结果在通用寄存器中。在一个实施例中,通用寄存器是SIMD寄存器且在另一个实施例中该通用寄存器是标量寄存器。在又另一替代实施例中,该大小指示结果存储在专用寄存器中。
算术运算可为算术运算的任何变化但在一个实施例中,算术运算是无符号算术运算且在另一个实施例中,算术运算是带正负号算术运算。
应了解,定标计算可在算术运算正执行时执行。然而,在一个实施例中,控制电路是响应于组合大小检测算术指令以执行定标计算以在执行算术运算前根据由组合大小检测算术指令指定的定标参数定标该至少一个数据单元。这与其中定标运算典型在算术运算已执行后执行的已知浮点算术不同。
应了解,大小指示结果可基于算术运算的未定标结果计算以及然后一些其它方案可用于根据定标将具有的已知效应校正该结果。在一个实施例中,该控制电路响应于组合大小检测算术指令以从定标计算的输出计算大小指示结果。
虽然该组合大小检测算术指令可为任何类型的指令,在一个实施例中,组合大小检测算术指令是块浮点指令。提供组合指令减轻伴随已知块浮点技术的关键性能问题(处理循环以及功率两者),其需要额外指令以维持数据定标。
应了解,算术运算可为一些不同算术运算的任一者,但在某些实施例,算术运算是移动加法、减法、乘法以及乘法-累计运算的至少其中之一。
应了解,该大小指示结果的计算可依一些方法的任一者执行。在一个实施例中,控制电路响应于组合大小检测算术指令以控制处理电路来在SIMD算术运算的结果的多个数据单元的至少两者上执行至少一个逻辑运算以计算该大小指示结果,其中该至少一个逻辑运算是功能上与逻辑OR运算等效。使用功能上与逻辑OR运算等效的至少一个逻辑运算的大小指示结果的计算是实施上直接且价廉的,并且仅涉及ALU的复杂性的小增加以达到改进效率。
虽然该至少一个逻辑运算可在算术结果或结果矢量的完整数据单元上执行,在一个实施例中,控制电路响应于组合大小检测算术指令以控制处理电路来在至少两个数据单元的位的子集上执行至少一个逻辑运算。这使得能通过处理较小容量的数据以更有效率地确定最高有效位位置。在一个这样的实施例中,该位的子集对应于至少两个数据单元的相应者的一个或多个最高有效位。
在一个实施例中,该控制电路响应于组合大小检测算术指令以控制处理电路来检测SIMD算术运算的结果的多个数据单元的一个或多个,其具有负值,以及在执行至少一个逻辑运算前反转该负值。
在另一个实施例中,与反转该负值不同的是,控制电路响应于组合大小检测算术指令以控制处理电路来检测SIMD算术运算的结果的多个数据单元的一个或多个,其具有负值,以及在执行至少一个逻辑运算前求反该负值。这使得确定最高有效位位置的准确结果能用于甚至带正负号值的定标目的。依此方式的数据值的求反与反转直接实施。
在一个实施例中,该控制电路响应于组合大小检测算术指令以控制处理电路来根据通过组合大小检测算术指令指定的操作数计算大小指示结果。在一个这样的实施例中,该至少一个逻辑运算取决于该操作数。这提供执行大小检测运算的额外弹性,因为例如该操作数可在用于该至少一个逻辑运算的一个或多个寄存器中指定共同来源和目的。这还提供通过允许将该问题分成用于结果数据值的相应群组的大小计算的子集以组合用于大循环的最高有效位位置计算的更有效率方式。
应了解,该大小指示结果可依各种不同方式中的任一种来后处理以导出最高有效非零位的位置。然而,在一个实施例中,处理电路计算该大小指示结果以致最高有效非零位通过执行计数前导符号(CountLeading sign)指令和计数前导零(Count Leading Zero)指令之一从该大小指示结果导出。这些预先存在的指令的使用使本技术易于实施。
应了解,该大小指示结果可依各种不同方式中的任一种存储。然而,在一个实施例中,控制电路控制处理电路以在一个或多个寄存器中的大小指示寄存器中存储该大小指示结果。
在一个这样的实施例中,该大小指示寄存器通过组合大小检测算术指令的参数来指定,此便于实施且允许指定适当寄存器的灵活性。
在一个实施例中,该大小指示寄存器是通用寄存器。在一些此类实施例中,通用寄存器是SIMD寄存器和标量寄存器中之一。
虽然该组合大小检测算术指令可包含在其中需要算术结果的大小的指示的程序代码中的任何地方,在一个实施例中,该组合大小检测算术指令在指令的循环内提供,以致大小指示结果针对循环的各迭代计算。提供单一指令以执行算术指令以及额外提供算术结果的最高有效位位置的指示的效率是尤其明显的,其中这样些计算可能在程序代码的循环中重复地执行。
在一个实施例中,控制电路响应于组合大小检测算术指令以在大小指示寄存器中累计该循环的各迭代的大小指示结果。此提供将用于多个结果值的最高有效位位置的计算分解成为更多可管理子计算的灵活性。
根据第二方面,本发明提供一种用于采用数据处理设备处理数据的方法,所述处理数据设备具有:处理电路,其用于执行数据处理运算;一个或多个寄存器,其用于存储数据;以及控制电路,其用于控制所述处理电路以执行所述这些数据处理运算,所述方法包括响应于组合大小检测算术指令的以下步骤:
控制所述处理电路以执行在存储于一个或多个寄存器中的至少一个数据单元上且通过所述组合大小检测算术指令指定的算术运算;以及
执行大小检测运算,其中所述大小检测运算计算大小指示结果,其提供所述算术运算的结果的大小的最高有效位的位置的指示,而不论所述最高有效位位置是否超过所述至少一个数据单元的数据单元宽度。
根据第三方面,本发明提供一种虚拟机,其提供用于处理数据的设备的仿真,所述设备包括:
处理电路,其用于执行数据处理运算;
一个或多个寄存器,其用于存储数据;
控制电路,其用于控制所述处理电路以执行所述数据处理运算;
其中所述控制电路配置成以致其响应于组合大小检测算术指令,以控制所述处理电路来执行在存储于所述一个或多个寄存器中的至少一个数据单元上且通过所述组合大小检测算术指令指定的算术运算以及执行大小检测运算,其中所述大小检测运算计算大小指示结果,其提供所述算术运算的结果的大小的最高有效位的位置的指示,而不论所述最高有效位位置是否超过所述至少一个数据单元的数据单元宽度。
附图说明
本发明的实施例现将参考附图仅通过举例说明,其中:
图1概要地说明在快速傅立叶变换的计算期间执行的数据操控的「蝶形图」;
图2是概要地说明已知块浮点算术如何执行快速傅立叶变换计算的流程图;
第3图是概要地说明根据本发明的实施例的块浮点算法的流程图;
图4是概要地说明根据本发明的替代实施例的块浮点算法的流程图;
图5概要地说明用于根据本技术实施组合大小检测算术指令的数据引擎;
图6概要地说明图5的最大屏蔽电路的更多细节;
第7A和7B图概要地说明根据本执行组合大小检测算术指令的两个不同组的电路以及相关数据流;以及
第8图概要地说明图5的数据引擎的虚拟机实施。
具体实施方式
傅立叶变换是将函数分解成为其频率分量的连续频谱的数学运算。
离散傅立叶变换是对应于离散时间信号的傅立叶变换,且是广泛地用于信号处理应用以分析在取样信号内含有的频率,以解出部分微分方程式且执行例如卷积(convolution)的其它运算。快速傅立叶变换(FFT)算法用于计算离散傅立叶变换。
离散傅立叶变换可由以下方程式说明:
该变换计算涉及计算对应于序列(n)(通常亦假设为复数值(complex value))的复数(complex number)给定N输入数据值的序列X(k),且其中WN=e-j2π/N(旋转因子(twiddle factor))。
将X(k)分成偶数以及奇数取样(称为整数倍降低取样率(decimation)的程序)提供:
这些方程式形成用于计算离散傅立叶变换的整数倍降低取样率中(decimation-in)频率FFT算法。此经由整数倍降低取样率中频率FFT的N点DFT的计算需要Nlog2N复数加法(complex addition)以及(N/2)log2N复数乘法(complex multiplication)。
为了直接评估在离散傅立叶变换方程式中涉及的和,将会对于总数N数据样本采用N2阶的数学运算,但FFT算法允许相同结果仅在NlogN运算的阶中计算。此简化通过递归地分解任何复合大小N=N1.N2的离散傅立叶变换成为大小N2以及N1的多个较小DFT,且通过称为「旋转因子」的单位(unity)的复数根的N乘法的阶来达到。数基-2FFT算法将离散傅立叶变换在各步骤分成大小N/2的两件。
图1概要地显示说明在快速傅立叶变换的计算期间执行的数据操控的「蝶形图」。
通过图1的蝶形图代表的基本计算在FFT计算期间是迭代许多次。蝶形图显示两个复数输入值a和b。输入值a具有实分量r0和虚分量i0而输入值b具有实分量r1和虚分量i1。图的右手侧的点对应至一轮FFT计算的输出。尤其是,输出值A代表输入值a和输入值b的复数和。输出值A的实部通过分别输入值a和输入值b的实分量的和给定(即r0+r1),而虚部是通过a和b的虚部的和给定(即i0+i1)。输出值B亦根据输入值a和b计算,但此时间对应至复数减法运算a-b和通过称为「旋转因子」W的复数因子的乘法。因此输出值B通过(a-b)*W给定且涉及单一复数乘法。在蝶形图上具有箭头的线代表数据流且因此给定在输出数据值A和B与输入数据值a和b间的相关性的指示。输出A和B对应于两个子变换的输出。
FFT计算涉及计算的多个循环,各循环涉及多个蝶形图的计算。因此图1中输出值A和B将会供应为对于后续一轮蝶形计算的输入值。然而,在后续那些轮的蝶形计算(计算的内部循环)间,来自先前些轮的计算的结果矢量典型将会在执行下一轮蝶形计算前例如通过执行去交错(在此亦指「未压缩」运算)重排。
可以从图1的数据流见到,内循环的各迭代(其涉及蝶形图的计算)可造成数据单元的位宽度的成长。此可通过考虑输入数据单元a和b以及注意到输出值A涉及对于该复数的实部和虚部的各者的加法运算见到。因此,输出值A可由于来自加法运算的进位位而成长一位。同样地,输出值B涉及在c=a-b=cr+ici和复数旋转因子W=wr+iwi间的复数乘法,其中cr与wr是c和w的实分量而ci与wi是c和w的虚分量。因为复数乘法c*T=(crwr+iciwr+iwicr-ciwi)涉及两个加法运算,此可导致已通过相对于输入数据单元b的位宽度成长两位的输出值。
因此加法和乘法运算造成数据位宽度成比例地成长至其中计算蝶形运算的算法的迭代数量。一般而言,迭代数量取决于输入数据点的数量的对数(基2)。因此应了解,FFT计算典型会与正被处理的单元的数量成比例地增加动态范围。类似考虑应用于其它不同信号处理算法,例如Viterbi算法和加速(Turbo)译码算法,且本技术是可应用于不同算法的范围,FFT算法仅是一个说明性实例。
为了应付这些计算的大动态范围,可执行块浮点算术计算。在块浮点算术中,数据块被指定单一指数而不是各数据单元具有其自己的指数。因此,指数典型通过该块中具有最大大小的数据单元确定。块浮点算术的使用减轻复数浮点乘法器和浮点加法器的需要。取而代之的是,复数值整数对用单一定标因子代表,其典型在数据块的其它复数值整数对中共享。在FFT的各阶段后,检测最大大小输出值且给定迭代的结果被定标以改进计算的精度。指数记录用于执行该定标的左移和右移的数量。从固定点至块浮点表示法的转换典型通过软件中的程序器显式地执行。
图2是概要地说明已知块浮点算法如何执行计算的流程图。在此特定实例中,计算是快速傅立叶变换,但应了解,其它不同类型的计算可依类似方式执行。
程序在阶段210开始,其中搜索输入数据块中对应于具有最大大小的输入数据单元的值「dmax」。其次,在阶段220处,定标移位值根据dmax的值确定。程序接着前进至阶段230,j的值(其是用于FFT外循环的索引)对于j=1初始化至一的值且其后在连续循环上增量。
其次,在阶段240处,FFT内循环索引i在第一迭代上初始化且其后增量。此内循环对应于在所有输入数据单元上执行完整一轮蝶形计算,内循环计算的第一阶段是阶段250,其涉及通过预定定标移位值将所有输入数据单元定标。应注意,该定标移位值在阶段220处对于第一迭代确定,但其后是在阶段290处确定,即在各FFT内循环的结束处。在阶段250处的输入数据的定标后,各数据单元共享相同指数值和相同数据单元宽度。阶段260对应至FFT内循环计算的本体,其涉及多个蝶形图的计算,如图1中所说明的那个。一旦已计算FFT蝶形,程序前进至阶段270,其中对该中间结果数据(对应于图1中的输出A和B)搜索新的最大大小「dmax」。请记得,由于所涉及的算术运算,每轮蝶形计算可能涉及相对于输入数据值在结果数据值的位宽度中的增加。因此,dmax的值可能从一个迭代改变至下一个迭代。请注意,dmax针对内循环的各迭代更新以产生经更新的最大值dmax’。
一旦dmax值已在阶段270更新,程序前进至阶段280,其中其确定FFT内循环是否完成。若内循环未完成则程序返回阶段240,其中索引i被增量且FFT内循环的下一迭代被执行。另一方面,若在阶段280确定内循环事实上完成则程序前进至阶段290,其中dmax’的当前值用于计算新的定标移位值以用于后续FFT外循环。此定标移位值在执行下一轮FFT内循环计算前在阶段250处应用至所有输入数据。
在定标移位值已在阶段290处计算后,程序前进至阶段292,其中确定FFT外循环是否完成。若外循环未完成则程序前进至阶段230,其中计数器j被增量且数据重排在FFT内循环中的下一轮蝶形计算前执行。另一方面,若在阶段292确定外循环事实上完成,则程序前进至阶段294,其中执行数据正规化(normalisation)以考虑计算的各阶段处执行的数据的定标的效应。然而,正规化阶段294是可选的。最后,在阶段296处,FFT计算的结果保存在内存中。
图3是概要地说明根据本发明的实施例的块浮点算法的流程图。
与图2的流程图(其关于已知技术)进行比较,图3的流程图显示图3的阶段310、320、330、340、350、380、390、392、394和396,它们直接平行于分别在图2的已知技术中的阶段210、220、230、240、250、280、290、292、294和296。然而,图3的实施例和图2的已知技术间的关键不同是在图3中的步骤,(i)执行该内循环FFT计算以及(ii)搜索中间结果数据中的dmax’,其在图2的不同阶段260、270中执行且经组合以致其在图3中的单一阶段360处执行。
以上步骤(i)和(ii)的组合通过提供单一程序指令而可行,两者执行所需算术运算且提供关联算术运算的结果的大小信息。在FFT计算的情况下,算术运算如图1中所示(如复数加法、减法和乘法运算)。组合该算术计算步骤与如图3的步骤360中所示的dmax’确定提供更有效率实施FFT算法,dmax’计算为FFT内循环蝶形评估的部分。在图2中,dmax’必须在FFT蝶形已计算后单独地确定(使用不同程序指令)。
来自图3的流程图的阶段390处的dmax’的定标移位值的计算使用CLS(Count Leading sign)或CLZ(Count Leading Zero)指令来进行。CLZ指令返回寄存器值中的第一二进制一前的二进制位的数量。CLS指令返回相对于含有CLS的操作数的数据类型的最高有效位的无符号扩展位的位置。
例如:
MSB_Position=CLS(dmax’);
若例如容器是16位,且dmax’是0001_0000_0000_0000(二进制)(其对应于十进制中的+4096),CLS将会返回3的值。考虑带正负号整数,若例如dmax’是1111_1000_0000_0000(二进制)(其对应于十进制的-2048),则CLS将返回5的值。定标移位值计算如下:
Shift_Value=Target_MSB-MSB_Position;
其中最大MSB位置是其中最大定标数据的MSB所将置放的地方。最大MSB被选定以致无溢位可能发生。若移位是正数,则数据被左移,而若移位是负数,则数据被右移。
在阶段390处的计算结果在阶段350处应用。替代实施例使用算术运算(在此特定实例中的阶段360)的结果,而后使用不同方案来根据定标在结果上将有的已知效应来校正结果。应注意的是,在替代设置中,阶段350和360可能交换以致定标在FFT内循环计算之后进行。若计算结果是负值则最高有效位自结果的反转形式确定,以致该经组合MSB结果变成OR_MSB=Current_OR_MSB|(Result<0?~Result:Result)。
图4是概要地说明根据本发明的替代实施例的块浮点算法的流程图。
如以上解释,图3的实施例与图2的技术不同在于将图2的阶段260和270组合成为图3中的单一阶段360。图4的实施例将图2程序的三个分离阶段(即,阶段250、260和270)组合成为单一阶段450,以致单一程序指令提供为:(i)对于FFT内循环的给定迭代定标所有输入数据;(ii)执行FFT内循环蝶形计算;以及(iii)搜索中间结果中的dmax’。
步骤450经调适以致其在输入数据的定标前考虑可能在计算中发生的可能的溢位。依此方式融合图2的已知块浮点算法的运算250、260和270,其通过减少处理循环的数量和通过减轻针对每轮计算执行输入数据的定标所需的额外指令的需要(相对于图2和图3)且通过减轻分离指令以计算算术运算后dmax’的需要(相对于图2),来减少执行FFT计算所需的功率而提供性能优点。
图5概要地说明用于根据本技术实施该组合大小检测算术指令的数据引擎。该设备包含数据引擎500。数据引擎500包括:控制器510、SIMD ALU 520(包括算术单元522、SIMD移位器524、和最大值屏蔽526)、SIMD矢量寄存器530、和标量寄存器组540。
在图5的实施例中,组合大小检测算术指令是SIMD指令。SIMD处理涉及在多个数据上实质上同时地执行相同运算(其是算术或其他的)。SIMD处理利用所谓「压缩矢量」,其是含有多个基本数据单元的数据结构。SIMD压缩矢量可用作例如算术运算的SIMD指令的自变量,且通过SIMD指令指定的算术运算独立地在SIMD矢量中的多个数据单元的各个上实质上同时地执行。对应于SIMD操作数的压缩矢量在矢量寄存器530中存储。SIMD ALU 520在SIMD矢量上执行算术运算且亦执行大小检测。
根据本技术的组合大小检测算术指令的一个实例是「Vres」指令(参考图5):
vRes=vadd_bf_s16(vA,vB,sMask)。
此vRes指令采用两个SIMD矢量输入操作数Va和Vb,各经压缩矢量包括三十二个16位数据单元。另一输入参数「sMask」指定对应于标量寄存器组540内的标量寄存器的16位标量值。在此特定实例中,算术运算是加法运算「vadd」。因此三十二个独立加法对应于压缩矢量vA和vB的三十二个数据单元执行。
现考虑vRes指令如何通过图5的数据引擎实施。控制器510响应于vRes指令以将控制信号发送至SIMD处理电路520和标量寄存器组540以执行如由该指令指定的数据操控(在此加法运算和大小检测运算中)。
控制器510响应于对应于图5中所示的vadd 「原语」(或「固有」)的指令,以将对应于SIMD矢量vA和vB的构成数据单元加载至SIMD矢量寄存器530中(若还未存在时)。SIMD vA、vB从矢量寄存器530读取且直接供应给执行SIMD加法运算的算术单元520。SIMD算术运算的结果通过算术单元522输出且供应给SIMD移位器524。SIMD移位器524通过根据适当定标移位值移位各数据样本来执行数据的定标。定标移位值在图3实施例的流程图中的阶段320(第一迭代)或阶段390中计算。或者是,定标移位值在图3实施例的流程图中的阶段420(第一迭代)或阶段490中计算。右移位对应于被二除的除法。如解释,在各FFT内循环迭代后可能是来自加法的至少一个进位位,以致可能SIMD移位器524将会执行数据的至少一个右移位以实施该定标。
通过SIMD移位器524输出的定标结果作为输入供应至SIMD ALU520内的最大屏蔽电路526,其中MSB屏蔽的更新值根据定标结果计算。最大屏蔽计算参考图6在下文中详尽解释。虽然在图5的实施例中,定标在vRes指令的执行期间执行,在替代实施例中,数据定标当数据写入或读自矢量寄存器组530中的内存时发生。
用于当前FFT内循环的MSB屏蔽的更新值经由路径527供应至标量寄存器组540,用于存储在标量寄存器中供FFT内循环的下一迭代使用。该vRes指令的输入参数sMask指定标量寄存器,从该标量寄存器中最大屏蔽电路526读取在FFT内循环迭代的开始处的MSB屏蔽的当前值,且该MSB屏蔽的更新值在迭代的结束处写至sMask寄存器。
在对图5的替代实施例中,根据本技术的vRes指令具有另一输入操作数,该另一输入操作数是标量值,其指定该移位待应用至算术运算的结果。标量移位值是带正负号值。正移位值指示右移位而负符号值指示左移位。数据定标在指令的执行期间执行。在此替代实施例中指令具有以下格式:
<arithmetic op>_bf SIMD destination,SIMD operand_1,SIMDoperand_2,scalar mag,scalar shift
其中_bf限定该指令为块浮点类型;<arithmetic op>可为加、减法等;SIMD指示operand_1、operand_2和destination是SIMD寄存器。值「mag」和「shift」两者是标量值。值「mag」指定共同来源和目的寄存器以用于用于确定最高有效位的OR运算。值「shift」是带正负号值,其指定该移位待应用至算术运算的结果。应注意到,在替代实施例中,标量移位字段从指令中省略,且取代组合数据定标和指令,数据定标当数据写至或读自内存时执行。执行以实施图2的步骤250的定标的移位可关联加载运算,如Reg=vload(address、scalar shift)。
SIMD ALU 520的算术单元522包括经调适以允许通过vRes指令的算术运算在定标运算前产生的额外进位。
SIMD ALU 520的最大屏蔽电路526可操作以组合通过FFT计算的内循环的多个程序指令的每个所返回的最高有效位位置。因此多个最高有效位值被组合且标量寄存器组540的标量寄存器sMask维持对应于最高的最高有效位位置的值。因此整体而言对于给定迭代在各内FFT循环迭代的结束处的最高有效位位置自标量寄存器读取且用于在后续迭代中定标数据。
在图5的实施例中,最高有效位位置存储在标量寄存器组540的标量寄存器sMask中。然而,在替代实施例中,寄存器是数据处理设备中的通用寄存器之一。在这样的替代实施例中,组合大小检测算术指令指定通用寄存器组中的来源寄存器和目的寄存器二者以执行维持最高的最高有效位位置的值来用于一轮计算的操作。
图6概要地说明图5的最大屏蔽电路526的更多细节。最大屏蔽电路包括多个SIMD通道(SIMD Lane)600,各SIMD通道包括16位数据单元610、612、614。在此特定实施例中,总数有三十二个SIMD通道。然而,仅有三个这些通道610、612和614为了清楚说明而实际显示。三十二个16位数据单元600对应于SIMD结果矢量的项目。一组XOR门(gate)624关联于SIMD通道31和数据单元614;一组XOR门622关联于SIMD通道1和数据单元612;且一组XOR门620关联于SIMD通道0。一组OR门630包括用于16位数据单元的位11至14的各位的一个门,其包含对应于位14的OR门632。该组OR门630提供整体用于存储在三十二个数据单元SIMD结果矢量中的16位结果值的大小的最高有效位位置的指示。
各16位数据单元610、612、614是带正负号数据值,其中位15是正负号位。数据值依「2的补码」记法存储,其中负数通过绝对值的2的补码代表,且数字通过计算其2的补码从正转换成负或反之亦然。为了发现二进制数字的2的补码,各位经反转且1的值加至反转值(忽略位溢位)。负数的2的补码是对应的正值。例如考虑十进制值5的8位带正负号二进制表示法,其是0000101。因为最高有效位是0,此模式代表非负值。为了转换此正值至依2的补码记法的-5,各位反转以提供值1111010而后1加至经反转值以提供1111011。最高有效位是1以致所代表的值是负的(在此情况下是-5)。
在图6的设置中,位15是最高有效位且因此亦是正负号位。计算MSB屏蔽的第一阶段涉及在三十二个SIMD通道的各个中检查16位值以确定其是否为正或负。对于其中正负号位指示负值的各SIMD通道,16位数据单元被反转。XOR门620、622、624执行该反转。对于最高有效位是零(对应于正值)的数据单元不被反转。
如图6中所示,OR门630用于执行逻辑OR运算(或其功能等效者)。尤其是,功能OR运算在用于三十二个SIMD通道的各个的各数据单元的位14上执行。此通过OR门632执行。因此,若任何数据单元在位位置14中具有非零位,OR门将具有1的输出值。然而,若所有SIMD通道具有空白位14且OR门的输出将是零,其指示该最高有效位是其它14个位位置[0,1,2,...,13]之一。
OR门632代表对应于三十二个数据单元(其对应于三十二个SIMD通道)的位-位置14的所有32位的逻辑OR。虽然会提供等效功能OR门用于数据单元的15个非带正负号位的各个,在此特定实施例中,OR门630仅提供用于四个最高有效位位置,即位[11,12,13,14]。
由于程序器能提前确定给定一轮计算可能产生多少进位位的事实,故仅需要考虑最高有效位的子集以准确地确定最高有效位。例如,在图1的蝶形图中,明显的是至多两个进位位(来自复数乘法)可从每轮计算中产生。此知识使程序器可事先确定在其内可发现最高有效位的最大和最小范围。在图6实例中,已知在前一轮计算中,MSB位置确定在位位置12处。结果用于后续一轮计算的MSB位置可从位位置11、12、13和14单独确定。使用XOR门620、622、624提供对于全2的补码计算的良好近似而实施更快速和更价廉(如相对于逻辑门)。当丢弃更多最低有效位时近似变得更接近。
在此特定设置中,最高有效位确定在定标移位已执行后(在图3的流程图的阶段350或图4的流程图的阶段450处定标)执行。然而,在替代设置中,最高有效位确定是在定标移位之前执行。
图7A和7B概要地说明根据本技术执行组合大小检测算术指令的两个不同组的电路和关联数据流。尤其是,图7A概要地说明其中该最大值屏蔽指定为指令的自变量的指令。与之相比,图7B概要地说明根据本技术的指令的所谓「模态实现」,其中预定屏蔽当指令执行时使用(在此情况下该指令不具有指定该屏蔽的输入自变量)。
图7A的设置包括寄存器组710、ALU 720和MSB屏蔽生成器730。对应于图7的电路的指令700具有总计五个字段,其包括:算术运算字段702、目的寄存器字段704、两个操作数字段(op A和op B)705、和指定用于存储最高有效位屏蔽706的寄存器的「op Mask」字段。ALU 720在指令的执行期间自寄存器710取回操作数op A和op B。一旦ALU响应于来自控制器510(参见图5)的控制信号则已通过ALU执行算术运算,MSB屏蔽生成器730分析结果矢量,以确定用于压缩SIMD结果矢量的多个数据单元的最高有效位位置且更新寄存器710中存储的「op mask」值。
在图7B的设置中,该指令包括四个字段(而非图7A的指令的五个字段)。四个字段包括:算术操作数字段752、指定目的寄存器754的字段和两个操作数字段(op A和op B)756、758。此设置不同于图7A在于该指令不具有指定用于存储最高有效位屏蔽的寄存器的字段。反而是,当指令执行时是使用预定屏蔽寄存器740以维持提供最高有效位位置的指示的当前值。该值可在每轮计算的结束处(如在FFT计算的每个内循环的结束处)自屏蔽寄存器读取,以确定下一迭代的定标值。
屏蔽寄存器740是「模态」寄存器,其累计最高有效位位置信息。屏蔽寄存器在一批计算开始前初始化为例如零。对于一轮计算的第一迭代,屏蔽计算电路760计算屏蔽(即MSB位置)用于各执行指令以及在屏蔽寄存器740中存储当前值。对于后续迭代,对于给定迭代确定的MSB位置与存储在屏蔽寄存器740中的当前MSB位置组合,以致该寄存器维持最高MSB位置。屏蔽寄存器740接着在一批计算的结束被读取以确定已达到的最高值的MSB。
以下是利用根据本技术的组合大小检测算术指令的程序代码的摘录。该程序代码是用于块浮点数基2FFT算法。
jj=LTOuter;
FFT_LT_OUTER;
For(j=LTOuter;j>0;j--){
vRDTmp=vuzp_m_s16(t_r0,t_r0,0);
vIDTmp=vuzp_m_s16(t_i0,t_i0,0);
t_r0=vRDTmp.a[0];
t_i0=vIDTmp.a[0];
jj--;
ii=0;
sMaskR0=(s 16)0;
sMaskR1=(s16)0;
sMaskI0=(s16)0;
sMaskI1=(s16)0;
FFT_LT_INNER;
for(i=0;i<Inner;i++){
AddLY0=ii+ii+Ping;
AddLY1=ii+ii+Ping+1;
AddSY0=ii+Pong;
AddSY1=ii+Pong+Points_2;
ii++;
r0=vqrshi_n_s16(vRMem[AddLY0],sShift);//Load Data from vector
memory
r1=vqrshi_n_s16(vRMem[AddLY1],sShift);
i0=vqrshi_n_s16(vIMem[AddLY0],sShift);
i1=vqrshi_n_s16(vIMem[AddLY1],sShift);
tmpr=vpqsub_m_bf_s16(r0,r1,jj,&sMaskR0);//Butterflies
rr0=vpqadd_m_bf_s16(r0,r1,jj,&sMaskR1);
tmpi=vpqsub_m_bf_s16(i0,i1,jj,&sMaskI0);
ii0=vpqradd_m_bf_s16(i0,i1,jj,&sMaskI1);
tmpqr0=vqdmull_s16(tmpr,t_r0);//Multiply by twiddle values
rr1=vqrdmish_ s16(tmpqr0,tmpi,t_i0);
tmpqi0=vqdmull_s16(tmpi,t_r0);
ii1=vqrdmiah_s16(tmpqi0,tmpr,t_i0);
vRMem[AddSY0]=rr0; //save data where it came from
vIMem[AddSY0]=ii0;
vRMem[AddSY1]=rr1;
vIMem[AddSY1]=ii1;
}
Ping^=Pong;//swap ping and pong
Pong^=Ping;
Ping^=Pong;
sMaskR0|=sMaskR1; //combine allthe mask values
sMaskI0|=sMaskI1;
sMask=sMaskR0|sMaskR1;
sInScale=clZ_s16(sMask);//find MSBit
sShift=sInScale-LEADING_ZEROS;//new shift value
sExp=sExp+sShift; //update exponent running total
}
图1的蝶形图在FFT内循环内计算。在图1的蝶形图中的记法可与以上程序代码中的变量相关。尤其是,对于蝶形计算的输入是(r0、i0),(r1、i1)且输出是(rr0、ii0)、(rr1、ii1)。例如,下面的组合大小检测算术指令用于从输入a=(r0、i0)和b=(r1、i1)计算输出A=(rr0、ii0)。
rr0=vpqadd_m_bf_s16(r0,r1,jj,&sMaskR1);
ii0=vpqadd_m_bf_s16(i0,i1,jj,&sMaskI1);
「vpqadd」指令涉及加法运算和大小检测运算,而「vpqsub」指令涉及减法运算和大小检测运算。指令输入自变量「sMaskR1」是用于结果矢量的实分量的MSB屏蔽,而「sMaskI1」是用于结果矢量的虚分量的MSB屏蔽。屏蔽在程序代码的以上区段的结束处组合(在FFT内循环外部但在FFT外循环内)。CLZ指令用于确定在每个FFT内循环的结束处的最高有效位位置。
虽然以上描述的技术可通过执行一序列的本机指令(其包括以上所提指令)的硬件执行,应了解,在替代实施例中,这样些的指令可在虚拟机环境中执行,其中指令对于虚拟机是本机的,但虚拟机通过在具有不同本机指令集的硬件上执行的软件实施。虚拟机环境可提供全虚拟机环境,其仿真全指令集的执行,或可能是部分的,如仅包含本技术的指令的一些指令通过硬件捕获且通过部分虚拟机模拟。
更具体地,以上所述组合大小检测算术指令可执行为对于全或部分虚拟机的本机指令,其中虚拟机连同其基本硬件平台组合操作以提供以上描述的处理电路。
图8概要地说明图5的数据引擎500的虚拟机实现。该设置包括设置成仿真数据引擎500的操作的虚拟机800。虚拟机800(如模拟ARM处理器或数据引擎)设置成接收机器码(如ARM机器码),其包含根据其模拟执行的本技术的组合大小检测算术指令。若在其上欲执行虚拟机800的通用处理器具有足够高性能,则可达到实际可行的整体处理吞吐量,且能执行包含根据本技术的组合大小检测算术指令的现存编码基数(code base)的优势可依此方式证明通用处理器的使用是合理的。
尽管已在此描述本发明的特定实施例,应了解,本发明不受限于此,且许多对其的修改和增加可在本发明的范围中进行。例如,以下附属权项的特征的各种组合可对独立权项的特征进行而不脱离本发明的范围。
Claims (34)
1.一种用于处理数据的设备,所述设备包括:
处理电路,用于执行数据处理运算;
一个或多个寄存器,用于存储数据;
控制电路,用于控制所述处理电路以执行所述这些数据处理运算;
其中所述控制电路配置成以致其响应于组合大小检测算术指令来控制所述处理电路,以执行在存储于所述一个或多个寄存器中的至少一个数据单元上的且通过所述组合大小检测算术指令指定的算术运算以及执行大小检测运算,其中所述大小检测运算计算大小指示结果,其提供所述算术运算的结果的大小的最高有效位的位置的指示,而不论所述最高有效位位置是否超过所述至少一个数据单元的数据单元宽度。
2.如权利要求1所述的设备,其中所述处理电路是SIMD处理电路,其设置成针对多个SIMD通道的各个独立地执行所述算术运算,所述组合大小检测算术指令识别包括多个数据单元的至少一个SIMD输入矢量,所述算术运算在所述多个数据单元上独立地执行以生成包括相应多个结果数据单元的SIMD结果矢量。
3.如权利要求2所述的设备,其中所述大小指示结果提供对应于所述SIMD结果矢量的相应多个数据单元的多个大小的最大者的最高有效位的指示。
4.如权利要求2所述的设备,其中所述大小指示结果包括SIMD结果矢量,所述SIMD结果矢量具有分别对应于所述多个SIMD通道的多个大小指示结果值。
5.如权利要求2所述的设备,其中所述一个或多个寄存器包括SIMD寄存器组和标量寄存器组。
6.如权利要求5所述的设备,其中所述控制电路控制所述处理电路以在所述SIMD寄存器组中存储所述SIMD算术运算的所述结果。
7.如前述权利要求中任一项所述的设备,其中所述控制电路控制所述处理电路以存储所述大小指示结果于通用寄存器中。
8.如权利要求7所述的设备,其中当从属于权利要求2时所述通用寄存器是SIMD寄存器和标量寄存器之一。
9.如前述权利要求中任一项所述的设备,其中所述大小指示结果存储在专用寄存器中。
10.如前述权利要求中任一项所述的设备,其中所述算术运算是无符号算术运算。
11.如前述权利要求中任一项所述的设备,其中所述算术运算是带正负号算术运算。
12.如前述权利要求中任一项所述的设备,其中所述控制电路响应于所述组合大小检测算术指令以执行定标计算以在执行所述算术运算前根据由所述组合大小检测算术指令指定的定标参数以定标所述至少一个数据单元。
13.如权利要求12所述的设备,其中所述控制电路响应于所述组合大小检测算术指令以从所述定标计算的输出计算所述大小指示结果。
14.如前述权利要求中任一项所述的设备,其中所述组合大小检测算术指令是块浮点指令。
15.如前述权利要求中任一项所述的设备,其中所述算术运算是移动加法、减法、乘法和乘法-累计运算的至少其中之一。
16.如权利要求2所述的设备,其中所述控制电路响应于所述组合大小检测算术指令以控制所述处理电路来在所述SIMD算术运算的所述结果的所述多个数据单元的至少两者上执行至少一个逻辑运算以计算所述大小指示结果,其中所述至少一个逻辑运算在功能上与逻辑OR运算等效。
17.如权利要求16所述的设备,其中所述控制电路响应于所述组合大小检测算术指令以控制所述处理电路来在所述至少二个数据单元的位的子集上执行所述至少一个逻辑运算。
18.如权利要求17所述的设备,其中所述位的子集对应于所述至少二个数据单元的相应数据单元的一个或多个最高有效位。
19.如权利要求16所述的设备,其中当从属于权利要求11时所述控制电路响应于所述组合大小检测算术指令以控制所述处理电路,来检测所述SIMD算术运算的所述结果的所述多个数据单元的一个或多个,其具有负值,以及在执行所述至少一个逻辑运算前反转所述负值。
20.如权利要求16所述的设备,其中当从属于权利要求11时,所述控制电路响应于所述组合大小检测算术指令以控制所述处理电路来检测所述SIMD算术运算的所述结果的所述多个数据单元的一个或多个,其具有负值,以及在执行所述至少一个逻辑运算前求反所述负值。
21.如前述权利要求中任一项所述的设备,其中所述控制电路响应于所述组合大小检测算术指令以控制所述处理电路,来根据通过所述组合大小检测算术指令指定的操作数计算所述大小指示结果。
22.如权利要求21所述的设备,其中当从属于权利要求16时,所述至少一个逻辑运算取决于所述操作数。
23.如前述权利要求中任一项所述的设备,其中所述处理电路计算所述大小指示结果以致所述最高有效非零位通过执行计数前导零指令和计数前导符号指令之一而从所述大小指示结果导出。
24.如前述权利要求中任一项所述的设备,其中控制电路控制所述处理电路以在所述一个或多个寄存器中的大小指示寄存器中存储所述大小指示结果。
25.如权利要求24所述的设备,其中所述大小指示寄存器通过所述组合大小检测算术指令的参数来指定。
26.如权利要求24所述的设备,其中所述大小指示寄存器是通用寄存器。
27.如权利要求26所述的设备,其中所述通用寄存器是SIMD寄存器和标量寄存器中之一。
28.如前述权利要求中任一项所述的设备,其中所述组合大小检测算术指令在指令的循环内提供,以致所述大小指示结果针对所述循环的各迭代计算。
29.如权利要求28所述的设备,其中所述控制电路响应于所述组合大小检测算术指令以在所述大小指示寄存器中累计用于所述循环的各迭代的所述大小指示结果。
30.一种用于采用数据处理设备处理数据的方法,所述处理数据设备具有用于执行数据处理运算的处理电路、用于存储数据的一个或多个寄存器、和用于控制所述处理电路以执行所述这些数据处理运算的控制电路,所述方法包括响应于组合大小检测算术指令的以下步骤:
控制所述处理电路以执行在存储于所述一个或多个寄存器中的至少一个数据单元上的且通过所述组合大小检测算术指令指定的算术运算;以及
执行大小检测运算,其中所述大小检测运算计算大小指示结果,所述大小指示结果提供所述算术运算的结果的大小的最高有效位的位置的指示,而不论所述最高有效位位置是否超过所述至少一个数据单元的数据单元宽度。
31.一种计算机程序产品,其包括计算机程序,当所述计算机程序在数据处理设备上执行时可操作以造成所述数据处理设备如权利要求30所述的方法操作,所述计算机程序包括至少一个组合大小检测算术指令。
32.一种虚拟机,其提供用于处理数据的设备的仿真,所述设备包括:
处理电路,用于执行数据处理运算;
一个或多个寄存器,用于存储数据;
控制电路,用于控制所述处理电路以执行所述这些数据处理运算;
其中所述控制电路配置成以致其响应于组合大小检测算术指令,来控制所述处理电路以执行在存储于所述一个或多个寄存器中的至少一个数据单元上的且通过所述组合大小检测算术指令指定的算术运算以及执行大小检测运算,其中所述大小检测运算计算大小指示结果,其提供所述算术运算的结果的大小的最高有效位的位置的指示,而不论所述最高有效位位置是否超过所述至少一个数据单元的数据单元宽度。
33.一种数据处理设备,其基本上如说明书中参照附图描述的那样。
34.一种数据处理方法,其基本上如说明书中参照附图描述的那样。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0721323A GB2454201A (en) | 2007-10-30 | 2007-10-30 | Combined Magnitude Detection and Arithmetic Operation |
GB0721323.4 | 2007-10-30 | ||
PCT/GB2008/002974 WO2009056783A1 (en) | 2007-10-30 | 2008-09-02 | Apparatus and method for performing magnitude detection for arithmetic operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101874237A true CN101874237A (zh) | 2010-10-27 |
Family
ID=38834557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880114818A Pending CN101874237A (zh) | 2007-10-30 | 2008-09-02 | 用于执行算术运算的大小检测的设备和方法 |
Country Status (10)
Country | Link |
---|---|
US (1) | US20090112955A1 (zh) |
EP (1) | EP2208132B1 (zh) |
JP (1) | JP2011501310A (zh) |
KR (1) | KR20100075588A (zh) |
CN (1) | CN101874237A (zh) |
AT (1) | ATE552550T1 (zh) |
GB (1) | GB2454201A (zh) |
IL (1) | IL204548A0 (zh) |
TW (1) | TW200919304A (zh) |
WO (1) | WO2009056783A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107211135A (zh) * | 2015-01-31 | 2017-09-26 | 高通股份有限公司 | 用于调色盘模式译码的译码逃脱像素 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009099084A (ja) * | 2007-10-19 | 2009-05-07 | Kyocera Corp | 変換装置 |
US8805914B2 (en) * | 2010-06-02 | 2014-08-12 | Maxeler Technologies Ltd. | Method and apparatus for performing numerical calculations |
GB2483902B (en) * | 2010-09-24 | 2018-10-24 | Advanced Risc Mach Ltd | Vector floating point argument reduction |
US8620983B2 (en) * | 2011-01-05 | 2013-12-31 | Via Technologies, Inc. | Leading sign digit predictor for floating point near subtractor |
US9372692B2 (en) | 2012-12-29 | 2016-06-21 | Intel Corporation | Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality |
US9916130B2 (en) | 2014-11-03 | 2018-03-13 | Arm Limited | Apparatus and method for vector processing |
US11023231B2 (en) * | 2016-10-01 | 2021-06-01 | Intel Corporation | Systems and methods for executing a fused multiply-add instruction for complex numbers |
US11436010B2 (en) | 2017-06-30 | 2022-09-06 | Intel Corporation | Method and apparatus for vectorizing indirect update loops |
US11764940B2 (en) | 2019-01-10 | 2023-09-19 | Duality Technologies, Inc. | Secure search of secret data in a semi-trusted environment using homomorphic encryption |
US10963245B2 (en) | 2019-02-06 | 2021-03-30 | Arm Limited | Anchored data element conversion |
US10936285B2 (en) * | 2019-02-06 | 2021-03-02 | Arm Limited | Overflow or underflow handling for anchored-data value |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4872132A (en) * | 1987-03-13 | 1989-10-03 | Zoran Corporation | Method and means for block floating point arithmetic |
JP2002304288A (ja) * | 2001-04-06 | 2002-10-18 | Asahi Kasei Corp | データ演算処理装置及びデータ演算処理プログラム |
US20030005015A1 (en) * | 2001-06-15 | 2003-01-02 | Shiuh-Yuan Chen | Vector scaling system for G.728 annex G |
US20050071403A1 (en) * | 2003-09-29 | 2005-03-31 | Broadcom Corporation | Method, system, and computer program product for executing SIMD instruction for flexible FFT butterfly |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4748579A (en) * | 1985-08-14 | 1988-05-31 | Gte Laboratories Incorporated | Method and circuit for performing discrete transforms |
US5040138A (en) * | 1989-08-02 | 1991-08-13 | Cyrix Corporation | Circuit for simultaneous arithmetic calculation and normalization estimation |
JP2513139B2 (ja) * | 1993-07-27 | 1996-07-03 | 日本電気株式会社 | 信号処理プロセッサ |
DE19826252C2 (de) * | 1998-06-15 | 2001-04-05 | Systemonic Ag | Verfahren zur digitalen Signalverarbeitung |
US6411978B1 (en) * | 1999-05-26 | 2002-06-25 | Infineon Technologies Ag I. Gr. | Mechanism for block floating point FFT hardware support on a fixed point digital signal processor |
JP3736745B2 (ja) * | 2001-04-24 | 2006-01-18 | 旭化成株式会社 | データ演算処理装置及びデータ演算処理プログラム |
JP3640643B2 (ja) * | 2002-01-18 | 2005-04-20 | 沖電気工業株式会社 | べき数エンコーダ回路及びマスク回路 |
US7099910B2 (en) * | 2003-04-07 | 2006-08-29 | Sun Microsystems, Inc. | Partitioned shifter for single instruction stream multiple data stream (SIMD) operations |
-
2007
- 2007-10-30 GB GB0721323A patent/GB2454201A/en not_active Withdrawn
-
2008
- 2008-09-02 KR KR1020107009585A patent/KR20100075588A/ko not_active Application Discontinuation
- 2008-09-02 AT AT08788515T patent/ATE552550T1/de active
- 2008-09-02 CN CN200880114818A patent/CN101874237A/zh active Pending
- 2008-09-02 WO PCT/GB2008/002974 patent/WO2009056783A1/en active Application Filing
- 2008-09-02 JP JP2010530534A patent/JP2011501310A/ja active Pending
- 2008-09-02 EP EP08788515A patent/EP2208132B1/en not_active Not-in-force
- 2008-09-05 US US12/230,831 patent/US20090112955A1/en not_active Abandoned
- 2008-10-03 TW TW097138216A patent/TW200919304A/zh unknown
-
2010
- 2010-03-16 IL IL204548A patent/IL204548A0/en unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4872132A (en) * | 1987-03-13 | 1989-10-03 | Zoran Corporation | Method and means for block floating point arithmetic |
JP2002304288A (ja) * | 2001-04-06 | 2002-10-18 | Asahi Kasei Corp | データ演算処理装置及びデータ演算処理プログラム |
US20030005015A1 (en) * | 2001-06-15 | 2003-01-02 | Shiuh-Yuan Chen | Vector scaling system for G.728 annex G |
US20050071403A1 (en) * | 2003-09-29 | 2005-03-31 | Broadcom Corporation | Method, system, and computer program product for executing SIMD instruction for flexible FFT butterfly |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107211135A (zh) * | 2015-01-31 | 2017-09-26 | 高通股份有限公司 | 用于调色盘模式译码的译码逃脱像素 |
Also Published As
Publication number | Publication date |
---|---|
GB2454201A (en) | 2009-05-06 |
EP2208132B1 (en) | 2012-04-04 |
KR20100075588A (ko) | 2010-07-02 |
ATE552550T1 (de) | 2012-04-15 |
IL204548A0 (en) | 2010-11-30 |
TW200919304A (en) | 2009-05-01 |
EP2208132A1 (en) | 2010-07-21 |
WO2009056783A1 (en) | 2009-05-07 |
US20090112955A1 (en) | 2009-04-30 |
JP2011501310A (ja) | 2011-01-06 |
GB0721323D0 (en) | 2007-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101874237A (zh) | 用于执行算术运算的大小检测的设备和方法 | |
CN103677736B (zh) | 数字信号处理器的数据路径电路 | |
CN107077322A (zh) | 用于执行转换运算的装置和方法 | |
US20160313976A1 (en) | High performance division and root computation unit | |
CN108351761A (zh) | 使用冗余表示的第一和第二操作数的乘法 | |
CN108351776A (zh) | 用于向量的处理的通道位置信息 | |
US20130185345A1 (en) | Algebraic processor | |
CN108351762A (zh) | 使用重叠位的数值的冗余表示 | |
US7747667B2 (en) | Data processing apparatus and method for determining an initial estimate of a result value of a reciprocal operation | |
CN113902089A (zh) | 加速激活函数运算的装置、方法及存储介质 | |
US20060184602A1 (en) | Data processing apparatus and method for performing a reciprocal operation on an input value to produce a result value | |
CN108351763A (zh) | 重叠传播操作 | |
CN115936965A (zh) | 应用于gpu的函数计算系统、方法和装置 | |
CN103365822A (zh) | 数字信号处理器及数字信号处理方法 | |
US20140052767A1 (en) | Apparatus and architecture for general powering computation | |
Hsiao et al. | Design of a low-cost floating-point programmable vertex processor for mobile graphics applications based on hybrid number system | |
US20230280975A1 (en) | Variable Format Floating Point Logic | |
Yousif et al. | Implementation of Hyperbolic Sine and Cosine Functions Based on FPGA using different Approaches | |
Liu et al. | 64-point FFT Instruction Implementation and Evaluation on a Microcode Programmable Processor | |
Shams Ahari | Computer Arithmetic in modern computers and usages of Computer Arithmetic | |
Krishnegowda et al. | Design and Synthesis of a 256-Point Radix-2 DIT FFT Core with Design Ware Library using Fixed-Point Number Representation | |
Edavoor et al. | Design and Analysis of Posit Processing Engine with Embedded Activation Functions for Neural Network Applications | |
Kehtarnavaz et al. | Fixed-Point vs. Floating-Point | |
Takala et al. | Codesign Case Study on Transport-Triggered Architectures. | |
Moss | FPGA Architectures for Low Precision Machine Learning |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20101027 |