CN112463112A - 点积累加方法及装置 - Google Patents
点积累加方法及装置 Download PDFInfo
- Publication number
- CN112463112A CN112463112A CN202011307771.7A CN202011307771A CN112463112A CN 112463112 A CN112463112 A CN 112463112A CN 202011307771 A CN202011307771 A CN 202011307771A CN 112463112 A CN112463112 A CN 112463112A
- Authority
- CN
- China
- Prior art keywords
- floating point
- point value
- register
- dot product
- normalized
- 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
- 238000009825 accumulation Methods 0.000 title claims abstract description 74
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000007667 floating Methods 0.000 claims abstract description 196
- 238000010606 normalization Methods 0.000 claims abstract description 39
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000003860 storage Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 7
- 241001442055 Vipera berus Species 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 3
- 238000003491 array Methods 0.000 description 42
- 238000012545 processing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 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/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
- G06F7/485—Adding; Subtracting
-
- 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
- G06F7/487—Multiplying; Dividing
- G06F7/4876—Multiplying
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
-
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Control Of Indicators Other Than Cathode Ray Tubes (AREA)
- Image Generation (AREA)
Abstract
本发明实施例提供一种点积累加方法及装置,该方法包括:步骤S1:在第k时钟周期,将新进入的第n组浮点值进行点积运算,得到第n个非规格化浮点值;步骤S2:在第k+1时钟周期,将新进入的第n+1组浮点值进行点积运算,同时与所述第一寄存器中的第n个非规格化浮点值、第二寄存器中的规格化浮点值进行累加,将所述累加后的非规格化的浮点值存入第一寄存器中;步骤S3:在第k+2时钟周期,将新进入的第n+2组浮点值进行点积运算,得到第n+2个非规格化浮点值,同时对步骤S2中第一寄存器中累加后的非规格化的浮点值进行规格化操作,将规格化的浮点值存入所述第二寄存器,本发明减少了规格化的次数,缩短了流水线长度,降低功耗。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种点积累加方法及装置。
背景技术
乘累加器(Multiply and Accumulate,简称MAC)用于完成向量相乘、矩阵相乘和向量矩阵互乘等乘累加运算,是协处理器(Cooperation Processor,简称CP)、数字信号处理器(Digital Signal Processing,简称DSP)、中央处理器(Central Processing Unit,简称CPU)和专用指令处理器(Application Specific Instruction Processor,简称ASIP)等处理器中极其重要的运算子系统。乘累加器架构作为矢量指令的架构载体,可以应用在多个领域中完成重要的功能,如通信领域中长期演进(Long Term Evolution,简称LTE)上下行多入多出通信技术(Multiple Input Multiple Output,简称MIMO)编码和译码的向量或矩阵处理、下行波束成形技术(Beam Forming,简称BF)中的天线数据加权处理,信号处理领域中的数据处理,图形图像领域中的数据处理。
然而现有技术中的累加器的点积值输入端有两种形式,第一种形式是一个非规格化数,分为两个部分,一个是加法树的和,一个是对齐单元的最大指数值,另一种形式是一个规格化数。累加器的另一个输入端为规格化累加结果,或者为标准规格化数,无论累加器的两个输入为哪种形式,累加器需要将两者相加,需要进行规格化(如果没有规格化),对齐,累加,规格化等多个操作,导致其流水线过长,流水线变后需要引入多个数据缓存,防止发生数据冲突导致的流水线阻塞,从而导致功耗增大、计算量过大。
因此,如何提供一种点积累加方案,能够减少流水线长度,减少计算量,降低功耗是本领域技术人员亟待解决的技术问题。
发明内容
本发明实施例提供一种点积累加方法及装置,能够减少流水线长度,减少计算量,降低功耗。
第一方面,本发明实施例提供一种点积累加方法,包括:
步骤S1:在第k时钟周期,将新进入的第n组浮点值进行点积运算,得到第n个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的;
步骤S2:在第k+1时钟周期,将新进入的第n+1组浮点值进行点积运算,同时与所述第一寄存器中的第n个非规格化浮点值、第二寄存器中的规格化浮点值进行累加,将所述累加后的非规格化的浮点值存入第一寄存器中的;
步骤S3:在第k+2时钟周期,将新进入的第n+2组浮点值进行点积运算,得到第n+2个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的,同时对步骤S2中第一寄存器中的累加后的非规格化的浮点值进行规格化操作,将规格化的浮点值存入所述第二寄存器;
其中,第二寄存器中的规格化浮点值为进行规格化操作时钟周期之前累加并规格化的结果,k为自然数,n为正整数。
进一步地,若为程序初始状态,则第二寄存器中规格化的数值为0。
进一步地,进行点积累加的浮点数表示为dpM,其中M为正整数。
进一步地,还包括:当新进入浮点数时,循环步骤S1到步骤S3直到计算完所有新进入的浮点数得到计算结果。
进一步地,当时钟周期内发生数据输入则状态变化,若当前时钟周期无新数据输入,则不发生状态改变。
进一步地,所述步骤S1:在第k时钟周期,将新进入的第n组浮点值进行点积运算,得到第n个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的包括:
在第k时钟周期,N个乘法器接收N对第一浮点值,得到N个第一浮点乘法结果;
N个移位器接收N个第一浮点乘法结果,并进行对齐操作,得到N个当前对齐数;
加法树接收N个当前对齐数并累加得到第n个非规格化浮点值;将所述第n个非规格化浮点值存入第一寄存器中的。
进一步地,所述步骤S2:在第k+1时钟周期,将新进入的第n+1组浮点值进行点积运算,同时与上述第一寄存器中的第n个非规格化浮点值、第二寄存器中的规格化浮点值进行累加,将上述累加后的非规格化的浮点值存入第一寄存器中的包括:
在第k+1时钟周期,N个乘法器接收N对第二浮点尾数,得到N个第二浮点乘法结果;
N个移位器接收N个第二浮点乘法结果,并进行对齐操作,得到第n个非规格化浮点值;
加法树接收第n个非规格化浮点值,同时与上述第一寄存器中的第n个非规格化浮点值、第二寄存器中的规格化浮点值进行累加,将上述累加后的非规格化的浮点值存入第一寄存器中的。
进一步地,所述加法树包括:4:2压缩器或3:2压缩器。
进一步地,所述移位器与所述加法树的数位宽度均为log2n+1+(1+man_width)*2+1+guard bit,其中n为浮点尾数的组数,man_width为浮点数的小数位位宽,guard bit为保护位,所述guard bit越长,最终点积累加结果精度越好。
进一步地,所述对步骤S2中第一寄存器中的累加后的非规格化的浮点值进行规格化操作包括:
获取实时非规格化数的源码,根据所述源码检测的前导零个数;
根据所述前导零个数和最大指数位数max_exp以及预设指数偏置计算出规格化后的指数位数;
根据前导零个数对所述源码进行数位左移,得到规格化后的尾数;
对规格化后的指数位数和规格化后的尾数经过rounding舍入得到标准浮点结果,作为新的当前规格化数。
进一步地,所述最大指数位max_exp的确定步骤如下:
将每一个点积项对应的指数部分相加,表示为sum_exp[i]=a.exp[i]+b.exp[i],i取[0,n-1];其中a[i].exp是浮点操作数a[i]的指数部分,b[i].exp是浮点操作数b[i]的指数部分;
将sum_exp[i],第一浮点值对应的指数部分以及当前规格化数对应的指数部分做比较,得到最大指数位max_exp;
将所述最大指数位max_exp存储于第三寄存器中。
第二方面,本发明实施例提供一种点积累加装置,包括:
第一模块,用于在第k时钟周期,获取第一浮点值,将所述第一浮点值存储于第一寄存器中,所述第一浮点值为N对第一浮点尾数的累加结果;
第二模块,用于在第k时钟周期,将新进入的第n组浮点值进行点积运算,得到第n个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的;
第三模块,用于在第k+2时钟周期,将新进入的第n+2组浮点值进行点积运算,得到第n+2个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的,同时对步骤S2中第一寄存器中的累加后的非规格化的浮点值进行规格化操作,将规格化的浮点值存入所述第二寄存器;
其中,第二寄存器中的规格化浮点值为进行规格化操作时钟周期之前累加并规格化的结果,k为自然数,n为正整数。
第三方面,本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述点积累加方法的步骤。
第四方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述点积累加方法的步骤。
本发明实施例提供的一种点积累加方法及装置,通过调整时钟周期产生的累加结果运算路径,将两个时钟周期的乘积累加结果与当前规格化数相加并进行规格化,与现有技术中每个时钟周期的乘积累加结果都要进行一次规划相比,减少了一半的规格化进程,进而缩短了流水线长度,减少计算量,降低功耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种点积累加方法的流程图之一;
图2为本发明实施例提供的一种点积累加方法的流程图之二;
图3为本发明实施例提供的一种点积累加方法的流程图之三;
图4为本发明实施例提供的一种点积累加方法的规格化流程图;
图5为本发明实施例提供的点积累加方法的硬件执行示意图;
图6为本发明实施例提供的点积累加装置的组成示意图;
图7是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合图1-图4描述本发明实施例的点积累加方法。
图1为本发明实施例提供的一种点积累加方法的流程图之一;图2为本发明实施例提供的一种点积累加方法的流程图之二;图3为本发明实施例提供的一种点积累加方法的流程图之三;4为本发明实施例提供的一种点积累加方法的规格化流程图。
在本发明一种具体实施方式中,本发明实施例提供一种点积累加方法,包括:
步骤S1:在第k时钟周期,将新进入的第n组浮点值进行点积运算,得到第n个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的。
在本发明实施例中,N个乘法器的两个输入端分别接收一对浮点数的两个尾数值,而N个乘法器接收N对第一浮点尾数,得到N个第一浮点乘法结果;第一浮点尾数为需要进行点积累加的数组的对应的两个浮点数,例如,如果有两个n项的数组a、b,那么点积操作的表达式为a[0]*b[0]+a[1]*b[1]+…+a[n-1]*b[n-1],其中a[i],b[i]表示浮点数;这里假设a、b都为1维数组,长度为n,a和b都为浮点数。而一个浮点数有符号位,指数部分,小数部分三个部分组成,其表达形式为{符号位,指数位,小数位},符号位位宽为1bit,指数位位宽为exp_width,小数位位宽为man_width。
在本发明的一种具体实施方式中,在第k时钟周期,为了获取第一浮点值,将所述第一浮点值存储于第一寄存器中,所述第一浮点值为N对第一浮点尾数的累加结果可以进行以下步骤:
步骤S11:在第k时钟周期,N个乘法器接收N对第一浮点值,得到N个第一浮点乘法结果;
步骤S12:N个移位器接收N个第一浮点乘法结果,并进行对齐操作,得到N个当前对齐数;
步骤S13:加法树接收N个当前对齐数并累加得到第n个非规格化浮点值;将所述第n个非规格化浮点值存入第一寄存器中的。
当然,也可以使用其他的方式获取第一浮点值,也就是数组a1和b1的尾数点积值的和。
步骤S2:在第k+1时钟周期,将新进入的第n+1组浮点值进行点积运算,同时与所述第一寄存器中的第n个非规格化浮点值、第二寄存器中的规格化浮点值进行累加,将所述累加后的非规格化的浮点值存入第一寄存器中的;
本步骤与上述步骤S1类似,这时接收第二组需要点积累加的数组a2和b2,点积操作的表达式为a1[0]*b1[0]+a1[1]*b1[1]+…+a1[n-1]*b1[n-1],然而并不需要得到累加的结果,而是直接输入到加法树中,与所述第一寄存器中的第n个非规格化浮点值、第二寄存器中的规格化浮点值进行累加,将所述累加后的非规格化的浮点值存入第一寄存器中的。
在本发明的一种实施例中,在第k+1时钟周期,为了获取第二浮点值,所述第二浮点值为N对第二浮点尾数的累加结果包括:
步骤S21:在第k+1时钟周期,N个乘法器接收N对第二浮点尾数,得到N个第二浮点乘法结果;
步骤S22:N个移位器接收N个第二浮点乘法结果,并进行对齐操作,得到第n个非规格化浮点值;
步骤S23:加法树接收第n个非规格化浮点值,同时与上述第一寄存器中的第n个非规格化浮点值、第二寄存器中的规格化浮点值进行累加,将上述累加后的非规格化的浮点值存入第一寄存器中的。
需要指出的是,对于乘法器,乘法器的2个输入为n个点积操作数对应的浮点尾数部分,其中对于规格化数(denorm数)而言,尾数为{0,a[man_width-1:0]},即最高位为0,其它为浮点数尾数部分,对于非规格话数(非denorm数)而言,尾数为{1,a[man_width-1:0]},即最高位为1,其它为浮点数尾数部分。当然,这里的乘法输入也可以是浮点尾数转换成补码的形式,然后进入有符号数乘法器。然后将每一个点积项对应的指数部分相加,表示为sum_exp[i]=a.exp[i]+b.exp[i],i取[0..n-1],以便后续进行的指数位数的确定,其中a[i].exp是浮点操作数a[i]的指数部分,b[i].exp是浮点操作数b[i]的指数部分,这里乘法器的输出结果尾数乘积项宽度为(1+man_width)*2+1,这里乘法部分输出的指数宽度为exp_width+1。
步骤S3:在第k+2时钟周期,将新进入的第n+2组浮点值进行点积运算,得到第n+2个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的,同时对步骤S2中第一寄存器中的累加后的非规格化的浮点值进行规格化操作,将规格化的浮点值存入所述第二寄存器;其中,第二寄存器中的规格化浮点值为进行规格化操作时钟周期之前累加并规格化的结果,k为自然数,n为正整数。
需要说明的是,若为程序初始状态,则第二寄存器中规格化的数值为0。在进行点积累加的浮点数表示为dpM,其中M为正整数。当新进入浮点数时,循环步骤S1到步骤S3直到计算完所有新进入的浮点数得到计算结果。当时钟周期内发生数据输入则状态变化,若当前时钟周期无新数据输入,则不发生状态改变。
在本步骤中,第一浮点值存储于第一寄存器中,而N个第n+1组浮点值刚计算出来,因此,可以从第一寄存器中的将第一浮点值调到移位器中,而从第二寄存器中调取当前规格化数,如果是在本次进行数组的点积累积中并未进行第二寄存器的数值存储,则第二寄存器中的预设数值为0,从而可以实现三者的相加。
并且可以将实时非规格化数进行规格化,得到新的当前规格化数,并存于所述第二寄存器中;
在得到了实时非规格化数后,可以对该数进行规格化,具体地,可以进行取反操作,并且将取反之后的数值进行前导零检测,并在移位器中进行移位,最后进行指数和尾数进位以及结果纠正,从而得到当前规格化数。
在后续有更多组的浮点数需要计算时,可以循环上述的步骤S1-S3,当然,时钟周期也需要顺序叠加,顺序执行步骤S1至S3直到所有的浮点数全部接收完毕,在步骤S3得到的最新的当前规格化数为最终点积累加结果;其中,k的初始值为0,当前规格化数的初始值为0,N为正整数。
如果后续没有更多的数组进行点积累加,那么该当前规格化数也就是最终的计算结果,而如果后续有更多的数组进行点积累加,则继续循环到步骤S1进行下两组数组的点积累加。
本实施例中的k为时钟周期数,一般时钟周期从自然数0开始,而由于两次数组点积累加的结果才进行一次规格化,因此,在进行周期循环时,需要将k的值增大2进行循环,并且在新的循环周期中接收更多的浮点尾数进行计算,当然,也可以每三组浮点数、四组浮点数甚至更多组的浮点数进行一次规格化,相应地在进行循环时,需要将时钟周期增大相应的个数。
值得指出的是,本发明实施例提供的点积累加方法适合于大规模的数据计算,而且在实施例中,数组的出现是成对的,例如数组a1、b1为一对,数组a、b2为一对,分别进行点积累加;如果有更多的数组a3、b3以及数组a4、b4,则可以继续进行循环点积累加,然而在实际中,可能并不存在数组a4、b4,那么此时,可以将第二浮点值进行置零操作,也就是说,第二浮点值为0,与数组a3、b3的点积相加结果第一浮点值进行后续的循环运算,从而无论乘法器接收偶数次的数组还是奇数次的数组都能够使得点积累加正常进行。
更进一步地,本发明实施例中用到的加法树包括:4:2压缩器或3:2压缩器,当然也可以使用其他的加法树。而且移位器与所述加的数位宽度均为log2n+1+(1+man_width)*2+1+guard bit,其中n为浮点尾数的组数,man_width为浮点数的小数位位宽,guard bit为保护位,所述guard bit越长,最终点积累加结果精度越好。
在上述任一实施例的基础上,本实施例中,在第k+3时钟周期,为了将实时非规格化数进行规格化,得到新的当前规格化数,并存于第二寄存器中可以具体进行以下步骤:
步骤S31:获取实时非规格化数的源码,根据所述源码检测的前导零个数;
步骤S32:根据所述前导零个数和最大指数位数max_exp以及预设指数偏置计算出规格化后的指数位数;
步骤S33:根据前导零个数对所述源码进行数位左移,得到规格化后的尾数;
步骤S34:对规格化后的指数位数和规格化后的尾数经过rounding舍入得到标准浮点结果,作为新的当前规格化数。
其中,所述最大指数位max_exp的确定步骤如下:将每一个点积项对应的指数部分相加,表示为sum_exp[i]=a.exp[i]+b.exp[i],i取[0,n-1];其中a[i].exp是浮点操作数a[i]的指数部分,b[i].exp是浮点操作数b[i]的指数部分;将sum_exp[i],第一浮点值对应的指数部分以及当前规格化数对应的指数部分做比较,得到最大指数位max_exp;将所述最大指数位max_exp存储于第三寄存器中。
请参考图5,图5为本发明实施例提供的点积累加方法的硬件执行示意图。
在上述实施例的基础上,本实施例中,将所有的sum_exp[i],非规格化浮点的指数部分,标准浮点数的指数部分加127(如果是fp32浮点数或bf16浮点数),即n+2项数做树形比较,得到最大的数,我们表示为max_exp;乘法器后面的右移移位器的输入为乘法器的有符号数结果,移位值如下:如果是点积的乘积项,移位值为max_exp–sum_exp[i];如果是非规格化浮点的指数部分,移位值为max_exp–非规格化浮点的指数部分;如果是标准浮点数的指数部分,移位值为max_exp–标准浮点数的指数部分加127;这里的移位器的输入是乘法的结果在msb补上log2 n+1的宽度的零(进位),同时在乘法结果的右侧补上guard bit位0,这里的guard bit补的越长,最终结果的精度越好。能够减小减法对消和加法进位不够造成的精度损失。
具体地,下面以8对数组进行点积累加为例进行说明,如下表1所示为每个时钟周期的输出处理:
表1
每个数字代表一次dpN输入 | 移位阶段的N+2输入 | 求和阶段的输出 | 求和规格化阶段后延迟一时钟周期 | |
时钟周期0 | 1 | 1 | ||
时钟周期1 | 2 | 2+1非规格化 | 1非规格化 | |
时钟周期2 | 3 | 3 | (2+1)非规格化 | |
时钟周期3 | 4 | 4+3非规格化+(2+1)规格化 | 3非规格化 | (2+1)规格化 |
时钟周期4 | 5 | 5 | (4+3+2+1)非规格化 | |
时钟周期5 | 6 | 6+5非规格化+(4+3+2+1)规格化 | 5非规格化 | (4+3+2+1)规格化 |
时钟周期6 | 7 | 7 | (6+5+4+3+2+1)非规格化 | |
时钟周期7 | 8 | 8+7非规格化+(6+5+4+3+2+1)规格化 | 7非规格化 | (6+5+4+3+2+1)规格化 |
时钟周期8 | (8+7+6+5+4+3+2+1)非规格化 | |||
时钟周期9 | (8+7+6+5+4+3+2+1)规格化 |
在每个时钟周期,都有一对数组输入到乘法器进行乘法操作,如图,在时钟周期0输入了第1对数组,……依次类推时钟周期7输入了第8对数组;如图5所示,时钟周期0时在移位器中只有第1对数组的点积结果,而在时钟周期1时,在移位器中存在第2对数组的点积结果以及第一次点积结果累加的和,也就是说第一次点积的N个结果进行了求和;而在时钟周期2中移位器中只有第3对数组的点积结果的输入,而(2+1)表示第1对数组、第2对数组进行了求和,但是还没有进行规格化,是非规格化数;类似地,(4+3+2+1)表示第1对数组、第2对数组、第3对数组、第4对数组进行了点积并求和;(6+5+4+3+2+1)表示第1对数组、第2对数组、第3对数组、第4对数组、第5对数组、第6对数组进行了点积并求和;(8+7+6+5+4+3+2+1)表示第1对数组、第2对数组、第3对数组、第4对数组、第5对数组、第6对数组、第7对数组、第8对数组进行了点积并求和,非规格化指的是,这些数值还没有进行规格化,而标注了规格化的意思是,下一个周期进行这些数值的规格化,规格化指的是数据是规格化的浮点数,非规格化指的是没有进行规格化的浮点数。
也就是说,上图表示了一次完整的8次dpN累加时序图,每一个数字代表一笔dpN的输入,其中N代表点积的个数。例如时钟周期3,位移阶段的输入时4和3(非规格化),(2+1)规格化,其中3(非规格化)来自于求和阶段的输出,(2+1)规格化来自于规格化阶段后延迟一个时钟周期的结果。再接下来看时钟周期4,这个时候5输入位移阶段,上一个时钟周期的位移阶段的结果进入输出求和阶段并得到(4+3+2+1)的非规格化结果。可以看到,在位移阶段,时钟周期1/3/5/7只有当前的dpN进入位移阶段。而2/4/6/8时钟周期,分别有dpN/非规格化数和规格化数一共n+2项进入位移和求和操作,求和阶段的过程是位移阶段操作的延续。从而实现了8对数组的点积累加,最终(8+7+6+5+4+3+2+1)规格化的结果存储在了第二寄存器(寄存器1)中,实现了数组的点积累加。
下面对本发明实施例提供的点积累加装置进行描述,下文描述的点积累加装置与上文描述的点积累加方法可相互对应参照。
请参考图6,图6为本发明实施例提供的点积累加装置的组成示意图。
在本发明又一具体实施方式中,本发明实施例提供供一种点积累加装置600,包括:
第一模块610,用于在第k时钟周期,将新进入的第n组浮点值进行点积运算,得到第n个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的;
第二模块620,用于在第k+1时钟周期,将新进入的第n+1组浮点值进行点积运算,同时与所述第一寄存器中的第n个非规格化浮点值、第二寄存器中的规格化浮点值进行累加,将所述累加后的非规格化的浮点值存入第一寄存器中的;
第三模块630,用于在第k+2时钟周期,将新进入的第n+2组浮点值进行点积运算,得到第n+2个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的,同时对步骤S2中第一寄存器中的
累加后的非规格化的浮点值进行规格化操作,将规格化的浮点值存入所述第二寄存器;其中,第二寄存器中的规格化浮点值为进行规格化操作时钟周期之前累加并规格化的结果,k为自然数,n为正整数。
本发明实施例提供的一种点积累加方法及装置,能够减少流水线长度,减少计算量,降低功耗,通过调整是时钟周期产生的累加结果运算路径,将两个时钟周期的乘积累加结果与当前规格化数相加并进行规格化,与现有技术中每个时钟周期的乘积累加结果都要进行一次规划相比,减少了一半的规格化进程,进而缩短了流水线长度,减少计算量,降低功耗。
图7示例了一种电子设备的实体结构示意图,如图7所示,该电子设备可以包括:处理器(processor)710、通信接口(Communications Interface)720、存储器(memory)730和通信总线740,其中,处理器710,通信接口720,存储器730通过通信总线740完成相互间的通信。处理器710可以调用存储器730中的逻辑指令,以执行点积累加方法,该方法包括:步骤S1:在第k时钟周期,将新进入的第n组浮点值进行点积运算,得到第n个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的;步骤S2:在第k+1时钟周期,将新进入的第n+1组浮点值进行点积运算,同时与所述第一寄存器中的第n个非规格化浮点值、第二寄存器中的规格化浮点值进行累加,将所述累加后的非规格化的浮点值存入第一寄存器中的;步骤S3:在第k+2时钟周期,将新进入的第n+2组浮点值进行点积运算,得到第n+2个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的,同时对步骤S2中第一寄存器中的累加后的非规格化的浮点值进行规格化操作,将规格化的浮点值存入所述第二寄存器;其中,第二寄存器中的规格化浮点值为进行规格化操作时钟周期之前累加并规格化的结果,k为自然数,n为正整数。
此外,上述的存储器730中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的点积累加方法,该方法包括:步骤S1:在第k时钟周期,将新进入的第n组浮点值进行点积运算,得到第n个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的;步骤S2:在第k+1时钟周期,将新进入的第n+1组浮点值进行点积运算,同时与所述第一寄存器中的第n个非规格化浮点值、第二寄存器中的规格化浮点值进行累加,将所述累加后的非规格化的浮点值存入第一寄存器中的;步骤S3:在第k+2时钟周期,将新进入的第n+2组浮点值进行点积运算,得到第n+2个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的,同时对步骤S2中第一寄存器中的累加后的非规格化的浮点值进行规格化操作,将规格化的浮点值存入所述第二寄存器;其中,第二寄存器中的规格化浮点值为进行规格化操作时钟周期之前累加并规格化的结果,k为自然数,n为正整数。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (14)
1.一种点积累加方法,其特征在于,包括:
步骤S1:在第k时钟周期,将新进入的第n组浮点值进行点积运算,得到第n个非规格化浮点值,将该非规格化浮点值存入第一寄存器中;
步骤S2:在第k+1时钟周期,将新进入的第n+1组浮点值进行点积运算,同时与所述第一寄存器中的第n个非规格化浮点值、第二寄存器中的规格化浮点值进行累加,将所述累加后的非规格化的浮点值存入第一寄存器中;
步骤S3:在第k+2时钟周期,将新进入的第n+2组浮点值进行点积运算,得到第n+2个非规格化浮点值,将该非规格化浮点值存入第一寄存器中,同时对步骤S2中第一寄存器中的累加后的非规格化的浮点值进行规格化操作,得到规格化的浮点值,将上述规格化的浮点值存入所述第二寄存器;
其中,第二寄存器中的规格化浮点值为进行规格化操作时钟周期之前累加并规格化的结果,k为自然数,n为正整数。
2.如权利要求1所述的一种点积累加方法,其特征在于,若为程序初始状态,则第二寄存器中规格化的数值为0。
3.如权利要求1所述的一种点积累加方法,其特征在于,进行点积累加的浮点数表示为dpM,其中M为正整数。
4.如权利要求1所述的一种点积累加的方法,其特征在于,还包括:当新进入浮点数时,循环步骤S1到步骤S3直到计算完所有新进入的浮点数得到计算结果。
5.如权利要求1所述的一种点积累加的方法,其特征在于,当时钟周期内发生数据输入则状态变化,若当前时钟周期无新数据输入,则不发生状态改变。
6.根据权利要求1所述的点积累加方法,其特征在于,
所述步骤S1:在第k时钟周期,将新进入的第n组浮点值进行点积运算,得到第n个非规格化浮点值,将该非规格化浮点值存入第一寄存器中包括:
在第k时钟周期,N个乘法器接收N对第一浮点值,得到N个第一浮点乘法结果;
N个移位器接收N个第一浮点乘法结果,并进行对齐操作,得到N个当前对齐数;
加法树接收N个当前对齐数并累加得到第n个非规格化浮点值;将所述第n个非规格化浮点值存入第一寄存器中。
7.根据权利要求6所述的点积累加方法,其特征在于,
所述步骤S2:在第k+1时钟周期,将新进入的第n+1组浮点值进行点积运算,同时与上述第一寄存器中的第n个非规格化浮点值、第二寄存器中的规格化浮点值进行累加,将上述累加后的非规格化的浮点值存入第一寄存器中包括:
在第k+1时钟周期,N个乘法器接收N对第二浮点尾数,得到N个第二浮点乘法结果;
N个移位器接收N个第二浮点乘法结果,并进行对齐操作,得到第n个非规格化浮点值;
加法树接收第n个非规格化浮点值,同时与上述第一寄存器中的第n个非规格化浮点值、第二寄存器中的规格化浮点值进行累加,将上述累加后的非规格化的浮点值存入第一寄存器中。
8.根据权利要求7所述的点积累加方法,其特征在于,
所述加法树包括:4:2压缩器或3:2压缩器。
9.根据权利要求7所述的点积累加方法,其特征在于,
所述移位器与所述加法树的数位宽度均为log2n+1+(1+man_width)*2+1+guard bit,其中n为浮点尾数的组数,man_width为浮点数的小数位位宽,guard bit为保护位,所述guardbit越长,最终点积累加结果精度越好。
10.根据权利要求1至9任一项所述的点积累加方法,其特征在于,
所述对步骤S2中第一寄存器中累加后的非规格化的浮点值进行规格化操作包括:
获取实时非规格化数的源码,根据所述源码检测的前导零个数;
根据所述前导零个数和最大指数位数max_exp以及预设指数偏置计算出规格化后的指数位数;
根据前导零个数对所述源码进行数位左移,得到规格化后的尾数;
对规格化后的指数位数和规格化后的尾数经过rounding舍入得到标准浮点结果,作为新的当前规格化数。
11.根据权利要求10所述的点积累加方法,其特征在于,
所述最大指数位max_exp的确定步骤如下:
将每一个点积项对应的指数部分相加,表示为sum_exp[i]=a.exp[i]+b.exp[i],i取[0,n-1];其中a[i].exp是浮点操作数a[i]的指数部分,b[i].exp是浮点操作数b[i]的指数部分;
将sum_exp[i],第一浮点值对应的指数部分以及当前规格化数对应的指数部分做比较,得到最大指数位max_exp;
将所述最大指数位max_exp存储于第三寄存器中。
12.一种点积累加装置,其特征在于,包括:
第一模块,用于在第k时钟周期,获取第一浮点值,将所述第一浮点值存储于第一寄存器中,所述第一浮点值为N对第一浮点尾数的累加结果;
第二模块,用于在第k时钟周期,将新进入的第n组浮点值进行点积运算,得到第n个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的;
第三模块,用于在第k+2时钟周期,将新进入的第n+2组浮点值进行点积运算,得到第n+2个非规格化浮点值,将该非规格化浮点值存入第一寄存器中的,同时对步骤S2中第一寄存器中的累加后的非规格化的浮点值进行规格化操作,将规格化的浮点值存入所述第二寄存器;
其中,第二寄存器中的规格化浮点值为进行规格化操作时钟周期之前累加并规格化的结果,k为自然数,n为正整数。
13.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至11任一项所述点积累加方法的步骤。
14.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至11任一项所述点积累加方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011307771.7A CN112463112B (zh) | 2020-11-19 | 2020-11-19 | 点积累加方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011307771.7A CN112463112B (zh) | 2020-11-19 | 2020-11-19 | 点积累加方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112463112A true CN112463112A (zh) | 2021-03-09 |
CN112463112B CN112463112B (zh) | 2022-08-16 |
Family
ID=74836371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011307771.7A Active CN112463112B (zh) | 2020-11-19 | 2020-11-19 | 点积累加方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463112B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988112A (zh) * | 2021-04-27 | 2021-06-18 | 北京壁仞科技开发有限公司 | 点积计算装置 |
CN113434113A (zh) * | 2021-06-24 | 2021-09-24 | 上海安路信息科技股份有限公司 | 基于静态配置数字电路的浮点数乘累加控制方法及系统 |
CN115328436A (zh) * | 2022-10-11 | 2022-11-11 | 深圳鲲云信息科技有限公司 | 一种多个累加器的计算方法、装置、电子设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6256655B1 (en) * | 1998-09-14 | 2001-07-03 | Silicon Graphics, Inc. | Method and system for performing floating point operations in unnormalized format using a floating point accumulator |
CN102799411A (zh) * | 2012-06-29 | 2012-11-28 | 华为技术有限公司 | 浮点数累加电路及其实现方法 |
CN103135958A (zh) * | 2006-05-10 | 2013-06-05 | 高通股份有限公司 | 用于反规格化操作数的基于模式的乘加处理器 |
CN103176767A (zh) * | 2013-03-01 | 2013-06-26 | 浙江大学 | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 |
CN107305485A (zh) * | 2016-04-25 | 2017-10-31 | 北京中科寒武纪科技有限公司 | 一种用于执行多个浮点数相加的装置及方法 |
CN107608655A (zh) * | 2016-10-03 | 2018-01-19 | 上海兆芯集成电路有限公司 | 微处理器中执行fma指令的方法和微处理器 |
CN111492343A (zh) * | 2017-12-21 | 2020-08-04 | 高通股份有限公司 | 浮点乘法运算处理的系统和方法 |
-
2020
- 2020-11-19 CN CN202011307771.7A patent/CN112463112B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6256655B1 (en) * | 1998-09-14 | 2001-07-03 | Silicon Graphics, Inc. | Method and system for performing floating point operations in unnormalized format using a floating point accumulator |
CN103135958A (zh) * | 2006-05-10 | 2013-06-05 | 高通股份有限公司 | 用于反规格化操作数的基于模式的乘加处理器 |
CN102799411A (zh) * | 2012-06-29 | 2012-11-28 | 华为技术有限公司 | 浮点数累加电路及其实现方法 |
CN103176767A (zh) * | 2013-03-01 | 2013-06-26 | 浙江大学 | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 |
CN107305485A (zh) * | 2016-04-25 | 2017-10-31 | 北京中科寒武纪科技有限公司 | 一种用于执行多个浮点数相加的装置及方法 |
CN107608655A (zh) * | 2016-10-03 | 2018-01-19 | 上海兆芯集成电路有限公司 | 微处理器中执行fma指令的方法和微处理器 |
CN111492343A (zh) * | 2017-12-21 | 2020-08-04 | 高通股份有限公司 | 浮点乘法运算处理的系统和方法 |
Non-Patent Citations (1)
Title |
---|
沈俊等: "一种低延迟高吞吐率的浮点整型乘累加单元", 《计算机工程》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988112A (zh) * | 2021-04-27 | 2021-06-18 | 北京壁仞科技开发有限公司 | 点积计算装置 |
CN112988112B (zh) * | 2021-04-27 | 2021-08-10 | 北京壁仞科技开发有限公司 | 点积计算装置 |
CN113434113A (zh) * | 2021-06-24 | 2021-09-24 | 上海安路信息科技股份有限公司 | 基于静态配置数字电路的浮点数乘累加控制方法及系统 |
CN113434113B (zh) * | 2021-06-24 | 2022-03-11 | 上海安路信息科技股份有限公司 | 基于静态配置数字电路的浮点数乘累加控制方法及系统 |
CN115328436A (zh) * | 2022-10-11 | 2022-11-11 | 深圳鲲云信息科技有限公司 | 一种多个累加器的计算方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112463112B (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112463112B (zh) | 点积累加方法及装置 | |
CN107168678B (zh) | 一种乘加计算装置及浮点乘加计算方法 | |
CN107273090B (zh) | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 | |
EP0377837B1 (en) | Floating point unit having simultaneous multiply and add | |
US6813626B1 (en) | Method and apparatus for performing fused instructions by determining exponent differences | |
US4949296A (en) | Method and apparatus for computing square roots of binary numbers | |
US20210349692A1 (en) | Multiplier and multiplication method | |
WO2022170809A1 (zh) | 一种适用于多精度计算的可重构浮点乘加运算单元及方法 | |
EP0018519A1 (en) | Multiplier apparatus having a carry-save/propagate adder | |
EP3374853A1 (en) | Multiplication of first and second operands using redundant representation | |
US11816448B2 (en) | Compressing like-magnitude partial products in multiply accumulation | |
US11294627B2 (en) | Floating point dot-product operator with correct rounding | |
EP3640792A1 (en) | Arithmetic processing device and method of controlling arithmetic processing device | |
WO2017081435A1 (en) | Lane position information for processing of vector | |
CN108196822A (zh) | 一种双精度浮点开方运算的方法及系统 | |
CN114341796A (zh) | 带符号多字乘法器 | |
US20220291901A1 (en) | Data processing method for processing unit, electronic device and computer readable storage medium | |
US5278782A (en) | Square root operation device | |
US6598065B1 (en) | Method for achieving correctly rounded quotients in algorithms based on fused multiply-accumulate without requiring the intermediate calculation of a correctly rounded reciprocal | |
CN116166217A (zh) | 执行浮点操作的系统和方法 | |
CN109960532A (zh) | 用于前台运行的方法及装置 | |
US20020124037A1 (en) | Floating-point multiplier for de-normalized inputs | |
CN113986194A (zh) | 基于预处理的神经网络近似乘法器实现方法及装置 | |
CN112783470A (zh) | 一种用于执行浮点对数运算的装置和方法 | |
CN111124361A (zh) | 算术处理装置及其控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee after: Shanghai Bi Ren Technology Co.,Ltd. Country or region after: China Address before: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |