CN107305485B - 一种用于执行多个浮点数相加的装置及方法 - Google Patents
一种用于执行多个浮点数相加的装置及方法 Download PDFInfo
- Publication number
- CN107305485B CN107305485B CN201610261902.XA CN201610261902A CN107305485B CN 107305485 B CN107305485 B CN 107305485B CN 201610261902 A CN201610261902 A CN 201610261902A CN 107305485 B CN107305485 B CN 107305485B
- Authority
- CN
- China
- Prior art keywords
- bit
- floating point
- point number
- bits
- exponent
- 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.)
- Active
Links
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/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
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本公开提供了一种执行多个浮点数相加的装置和方法,装置包括预处理模块、加法运算模块及规格化处理模块,预处理模块对多个浮点数进行预处理,以使多个浮点数的指数位和符号位一致,加法运算模块对预处理后的多个浮点数相加,得到累加结果及该累加结果的待移位值,规格化处理模块根据待移位值对累加结果的符号位、指数位和尾数位进行移位,得到规格化的累加结果。本公开在执行多个浮点数相加时具有运算延迟低、结果精度损失小的优点。
Description
技术领域
本公开提供一种用于执行多个浮点数相加的装置及方法,可用于图像处理器、数字处理器、智能设备及片上网络数据运算等。
背景技术
随着大数据时代的来临,数据的运算量也随之大幅增加,对运算的速度也提出了更高的要求。无论是图像还是数字等处理器,都必须满足低延迟、准确度高的运算要求。浮点数加法,作为最基本且最常用的浮点数运算之一,如何加速此类运算,也显得尤为重要,并引起了广泛的讨论和研究。
现有的操作数相加的加速装置,主要分为两种,串行进位加法树和进位保存加法树。
图1示出了串行进位加法树的结构,即采用二叉树的结构,对待运算的操作数两两相加,而后向上传递,直至得到最终结果。显然,该结构支持多浮点数并行相加,加速了加法运算,但是在进位传播时,需要消耗大量的时钟延迟,而且,运算结果和操作数的顺序也有一定的关系,运算结果的精度损失较大。
图2示出了进位保存加法树的结构,即利用华莱士树的结构,将由每一级全加器的进位生成的部分连接到下一级的高位,通过连线实现进位传递,避免复杂的进位传递逻辑,降低了进位传递的延迟。然而,这种方法并不能直接用于浮点数的加法,并且,操作数的顺序不同,也可能带来计算误差。
另外,常用算法中,大多将浮点数加法和浮点数的累加混合在一起,这种混合操作,就要求运算器必需同时支持这两种运算,并且运算结果和给定的操作数顺序无关。
发明内容
(一)要解决的技术问题
本公开的目的在于,提供一种能够执行多个浮点数相加的装置和方法,具有运算延迟低、结果精度损失小的优点。
(二)技术方案
本公开提供一种用于执行多个浮点数相加的装置,浮点数包括符号位、指数位和尾数位,装置包括:
加法运算模块,用于对多个浮点数相加,得到累加结果及该累加结果的待移位值,所述累加结果包括符号位、指数位和尾数位;
规格化处理模块,用于根据待移位值对所述累加结果的符号位、指数位和尾数位进行移位,得到规格化的累加结果。
进一步,装置还包括:
预处理模块,用于对所述多个浮点数进行预处理,以使多个浮点数的指数位和符号位一致。
进一步,预处理模块包括:
比较选择模块,用于对所述多个浮点数的指数位进行两两比较,选择出最大的指数位;
计算移位模块,用于根据每个浮点数和具有最大指数位的浮点数的指数位的关系来求得每个浮点数需要进行逻辑移位的位数n,并对相应浮点数的尾数位进行逻辑移位,以使每一个浮点数的指数位均等于所述最大的指数位。
进一步,在比较选择模块中,以二叉树的形式对所述多个浮点数的指数位进行两两比较。
进一步,在所述计算移位模块中,令每一个浮点数的符号位与指数位最大的浮点数的符号位一致,其中,浮点数在改变符号位时,对其尾数位取补码。
进一步,计算移位模块求得逻辑移位的位数n,包括:
计算最大的指数位和待逻辑移位的浮点数的指数位的差值Δe;
若具有最大指数位的浮点数为规格化浮点数,而待逻辑移位的浮点数为非规格化浮点数,则令n=Δe-1;否则,令n=Δe。
进一步,计算移位模块对浮点数的尾数位进行逻辑移位,包括:
在所述浮点数的尾数位的最高位前补上1位隐藏位,其中,对于规格化浮点数,隐藏位的值为1,对于非规格化浮点数,隐藏位的值为0;
在浮点数的尾数位的最低位后增加k个“0”,作为有效位;
对增加有效位和隐藏位的尾数位右移n位,以舍弃尾数位最低的n位;
将移位后的尾数位的最低位作为粘滞位,将粘滞位与舍弃的n位进行“或”运算,用运算结果更新粘滞位,得到最终所需的浮点数的尾数位。
进一步,加法运算模块包括:
华莱士树模块,用于采用华莱士树结构将多个浮点数相加,直至归约为两个数;
最终结果累加模块,用于将该两个数相加,得到第一累加结果,并将该两个数的反码相加,得到第二累加结果,根据第一累加结果的最高位选择第一累加结果或者第二累加结果,作为累加结果;
前导零预测模块,用于对华莱士树模块得到的两个数进行逻辑运算,确定累加结果第一个有效数字位的位置,以得到累加结果的待移位值。具体而言,假设该两个数为A和B,首先利用传播函数生成函数G=AB,杀死函数Z=(AB)’分别对每一位进行运算;而后,为每一位设置一个指示符,第i位用fi表示,由下列公式得到 最后,设定参数那么我们就可以得到位置参数为第一个不为0的位置参数即为所求的第一个有效数字位的位置,将其下角标以二进制的形式输出即可。
进一步,在最终结果累加模块中,若第一累加结果的最高位的值为0,则将第一累加结果作为所述累加结果,否则,将第二累加结果作为所述累加结果。
进一步,在前导零预测模块中,利用前导零预测方法,首先对华莱士树模块得到的两个数按位求得其传播函数T,生成函数G,杀死函数Z的值;而后,求得每一位的指示符的值,第i位用fi表示,得到 最后,设定参数得到位置参数为第一个不为0的位置参数的下角标的值即为所述累加部分的最终结果tmp_sum的第一个有效数字位的位置num_shift,将其以二进制的形式输出。
进一步,规格化处理模块根据待移位值对累加结果进行逻辑移位,以使累加结果的第一个有效数字位处于最高位,并对逻辑移位后的累加结果进行规格化,得到累加结果的符号位、指数位和尾数位。
本公开还提供一种应用上述装置执行多个浮点数相加的方法,浮点数包括符号位、指数位和尾数位,方法包括:
对多个浮点数相加,得到累加结果及该累加结果的待移位值,所述累加结果包括符号位、指数位和尾数位;
根据待移位值对累加结果的符号位、指数位和尾数位进行移位,得到规格化的累加结果。
进一步,对多个浮点数相加之前,对所述多个浮点数进行预处理,以使所述多个浮点数的指数位和符号位一致。
进一步,预处理模块对所述多个浮点数进行预处理,以使所述多个浮点数的指数位和符号位一致包括:
以二叉树的形式对多个浮点数的指数位进行两两比较,选择出最大的指数位;
根据每个浮点数和具有最大指数位的浮点数的指数位的关系来求得每个浮点数需要进行逻辑移位的位数n,并对相应浮点数的尾数位进行逻辑移位,以使每一个浮点数的指数位均等于所述最大的指数位。
进一步,对所述多个浮点数的指数位进行两两比较时,以二叉树的形式进行。
进一步,预处理模块对所述多个浮点数进行预处理,以使所述多个浮点数的指数位和符号位一致还包括:令每一个浮点数的符号位与指数位最大的浮点数的符号位一致,其中,浮点数在改变符号位时,对其尾数位取补码。
进一步,求得每个浮点数需要进行逻辑移位的位数n,包括:
计算最大的指数位和待逻辑移位的浮点数的指数位的差值Δe;
若具有最大指数位的浮点数为规格化浮点数,而待逻辑移位的浮点数为非规格化浮点数,则令n=Δe-1;否则,令n=Δe。
进一步,对相应浮点数的尾数位进行逻辑移位,包括:
在浮点数的尾数位的最高位前补上1位隐藏位,其中,对于规格化浮点数,隐藏位的值为1,对于非规格化浮点数,隐藏位的值为0;
在浮点数的尾数位的最低位后增加k个“0”,作为有效位;
对增加有效位和隐藏位的尾数位右移n位,以舍弃尾数位最低的n位;
将移位后的尾数位的最低位作为粘滞位,将粘滞位与舍弃的n位进行“或”运算,用运算结果更新粘滞位,得到最终所需的浮点数的尾数位。
进一步,所述加法运算模块对多个浮点数相加,得到累加结果及该累加结果的待移位值包括:
采用华莱士树结构将多个浮点数相加,直至归约为两个数;
将该两个数相加,得到第一累加结果,并将该两个数的反码相加,得到第二累加结果,根据指数位最大的浮点数的符号位,选择第一累加结果或者第二累加结果,作为所述累加结果;
对该两个数进行逻辑运算,确定累加结果第一个有效数字位的位置,以得到累加结果的待移位值。
进一步,规格化处理模块根据所述待移位值对累加结果的符号位、指数位和尾数位进行移位,得到规格化的累加结果包括,根据累加结果的待移位值对累加结果进行逻辑移位,以使累加结果的第一个有效数字位处于最高位,并对逻辑移位后的累加结果进行规格化,得到累加结果的符号位、指数位和尾数位。
(三)有益效果
本公开能够对多个相同标准的浮点数进行加法运算,解决了一次操作完成多个操作数的加法运算的问题,同时增设有效数字位和粘滞位,降低运算结果的精度损失;利用华莱士树等结构进行运算,降低了硬件的复杂性,提高了运算速度。
附图说明
图1是现有技术中串行进位加法树的结构示意图。
图2是现有技术中华莱士树的结构示意图。
图3是本公开提供的执行多个浮点数相加的装置的示意图。
图4是本公开中指数位两两比较的示意图。
图5是本公开中选择最大指数位的示意图。
图6是本公开中计算移位模块的示意图。
图7是本公开中最终结果累加模块的示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
图3是本公开提供的执行多个浮点数相加的装置的示意图,如图3所示,装置包括预处理模块、加法运算模块和规格化处理模块,预处理模块包括比较选择模块和计算移位模块,加法运算模块包括华莱士树模块、最终结果累加模块和前导零预测模块。
现有x个相同标准的y位浮点数进行相加,第i个浮点数用fi表示,其中,x、y和i均为正整数,且1≤i≤x。
在预处理模块中,将每个浮点数fi,拆分为符号位部分si,指数位部分ei和尾数位部分mi,即fi=(si,ei,mi)。通过比较选择模块进行两两选择比较操作,如图4所示,即若ea>eb,则选择a,否则选择b。而后,如图5所示,利用二叉树结构,依次选择出具有最大指数位的浮点数fmax,其符号位、指数位、尾数位分别为smax,emax,mmax。
图6是本公开中计算移位模块的示意图,即分别求得每个浮点数fi与最大指数位的浮点数fmax的指数的差值Δe。若fmax为规格化浮点数,fi为非规格化浮点数,那么对fi的尾数部分进行逻辑移位的位数n=Δe-1;否则,n=Δe。而后相应地对每个浮点数fi的尾数部分mi进行逻辑移位。移位操作结束后,相当于该x个浮点数的指数位相同,尾数位可以直接进行运算。具体操作是,首先将尾数位mi的最高位前补上1个隐藏位,当该浮点数fi为规格化浮点数时,隐藏位的值为1;当该浮点数fi为非规格化浮点数时,隐藏位为0。尾数位最低位后增添k个“0”作为有效位。此时,尾数位总位数等于移位后总位数,即原尾数位数+隐藏位位数+新增有效数字位数。而后,根据之前求得的待逻辑移位的位数n对每个浮点数fi进行移位,这里先右移n位,以舍弃尾数位最低的n位;再将移位后的尾数位的最低位作为粘滞位,与舍弃的n位作“或”运算,运算结果更新为粘滞位的值即得到所需的移位后尾数位的最终结果。最后,判断每个浮点数fi的符号位部分si与最大指数位的浮点数fmax的符号位部分smax是否相同,相同则无需任何操作,不同则将尾数部分取其补码,便于后面运用加法器直接进行运算。
在加法运算模块中,利用如图2所示的华莱士树结构,对移位后的各个浮点数的尾数相加,直到归约为两个数,记为sum1和carry1,输出至最终结果累加模块和前导零预测模块。华莱士树结构用简单的硬件快速将处理后的多个浮点数相加归约成两个数相加,即每次利用i个全加器,把j个i位的数相加转换成2*j/3个i+1位的数相加,再用一层全加器转换成4*j/9个数相加,直到转换成2个数。
最终结果累加模块利用双通路计算出运算结果,该结构如图7所示。一条通路对sum1和carry1直接进行相加,另一条通路对二者的反码进行相加,最后根据第一条通路的所得结果的最高位,若最高位的值为0,则选择第一条通路的结果作为累加部分的最终结果tmp_sum并输出,否则,选择第二条通路的结果作为累加部分的最终结果tmp_sum并输出。前导零预测模块,利用前导零预测(leading zero anticipator,LZA)方法,首先对输入的sum1和carry1按位求得其传播函数生成函数G=sum1·carry1,杀死函数Z=(sum1·carry1)’的值;而后,求得每一位的指示符的值,第i位用fi表示,由下列公式得到 最后,设定参数那么就可以得到位置参数为第一个不为0的位置参数的下角标的值即为我们所求的累加部分的最终结果tmp_sum的第一个有效数字位的位置num_shift,将其以二进制的形式输出即可。
在规格化处理模块中,根据前导零预测模块分的第一个有效数字位的位置num_shift对最终结果tmp_sum进行逻辑移位,移动位数为num_shift,而后进行规格化,分别得到最终结果的符号位sresult、指数位eresult和尾数位mresult,,组合得到最终结果sumresult={sresult,eresult,mresult}。
本公开提供一实施例,是4个16位浮点数相加,即x=4,y=16。其中,浮点数标准采用IEEE754的half类型浮点数标准,即每个浮点数由1位符号位,5位指数位和10位尾数位组成。
在如图3所示的装置中,输入4个浮点数并用二进制表示为f1=0001001010000001,f2=0001110011110000,f3=00011001011111111,f4=0010010011011001,拆分为符号位、指数位、尾数位的格式,即{s,e,m},用二进制表示得到f1={0,00100,1010000001},f2={0,00111,0011110000},f3={0,00110,01011111111},f4={0,01001,0011011001}。利用如图4所示装置,分别比较f1、f2的指数位e1=00100、e2=00111,选出较大的指数值emax(e1,e2)=00111,和比较f3、f4的指数位e3=00110、e4=01001,选出较大的指数值emax(e3,e4)=01001,而后利用如图5所示的树状结构,比较emax(e1,e2)=00111和emax(e3,e4)=01001,选择出较大的指数位emax=01001,该浮点数用fmax=f4=0010010011011001表示,符号位和尾数位分别为smax=0和mmax=0011011001。
而后,分别求得f1、f2、f3、f4的指数位e1、e2、e3、e4与emax的差值,Δe1=5、Δe2=2、Δe3=3、Δe4=0。由于f1、f2、f3、f4均为规格化浮点数,故待移位的位数n=Δe,即n1=Δe1=5、n2=Δe2=2、n3=Δe3=3、n4=Δe4=0。这里为了降低运算过程中的精度损失,增加三位有效数字位,即k=3,并令最低位为粘滞位。移位时,由于该实施例采用IEEE754标准,故首先fmax、f1、f2、f3、f4的尾数位部分的最高位前补上1位隐藏位,并判断它们是否为规格化浮点数。由于f1、f2、f3、f4均为规格化浮点数,也就是令fmax、f1、f2、f3、f4的隐藏位的值为1。而后,将尾数位的最低位后面补上3个“0”,即达到了预设的总位数:原尾数位数+隐藏位位数+新增有效数字位数=10+1+3=14位,接着,根据指数差n进行右移,舍弃最低的n位;将舍弃的n位的数值与最后一位粘滞位进行“或”运算,用运算结果更新粘滞位的值,得到所需的移位后尾数位的最终结果。以f1为例,由上面可得其尾数部分为1010000001,最高位增加一位隐藏位,由于f1为规格化浮点数,故该隐藏位的值为1,得到11010000001;在最低位后面补3个0,并定义最低位为粘滞位,得到11010000001000。由于n1=5,所以我们需要移动5位,故最右面的5位01000均需要舍弃,得到00000110100000;将该被舍弃的5位数字01000与粘滞位0进行“或”运算,得到1,用该结果更新粘滞位,即粘滞位的值为1得到移位后的结果为00000110100001。又以f2为例,由上面可得其尾数部分为0011110000,最高位增加一位隐藏位,由于f2为规格化浮点数,故该隐藏位的值为1,在最低位后面补3个0,并定义最低位为粘滞位,得到10011110000000。由于n2=2,所以我们需要移动2位,故最右面的2位00均需要舍弃,得到00100111100000;将该被舍弃的2位数字00与粘滞位0进行“或”运算,得到0,用该结果更新粘滞位,即粘滞位的值为0,得到移位后的结果为00100111100000。最后,对浮点数f1、f2、f3、f4的符号位s1、s2、s3、s4与smax进行比较,结果均为0,即均为正数,故无需对其尾数部分再进行取补的操作。
如图3所示,将预处理的结果输入到加法运算模块。利用图2示出的华莱士树结构,对四个14位预处理后的尾数进行处理。这里,本公开考虑使用两级华莱士树结构,首先通过一级4-2华莱士树结构部分,进行相加,而后将结果分别输入到第二级3-2华莱士树结构部分和前导零预测部分进行运算。3-2华莱士树将运算结果最终归约为两个数,即sum1=11011000000100和carry1=110100010,输出至最终结果累加部分。在该部分中,利用双通路计算出运算结果,一条通路对sum1和carry1直接进行相加,另一条通路对二者先取反码,而后进行相加。由于第一条通路所得结果的最高位为0,故选择得到第一条通路的结果作为累加部分的最终结果,即tmp_sum=0011100101001000,输出至第三模块。前导零预测部分是将第一级4-2华莱士树的输出结果利用前导零预测算法(LZA算法)计算得到累加部分的最终结果规格化待移动的位数用二进制表示为num_shift=10,输出至第三模块。其中,前导零预测部分和第二级华莱士树部分是并行执行的。
如图3所示,规格化处理模块利用LZA算法,根据tmp_sum和第一模块得到的fmax进行逻辑操作,得到最终结果的符号位sresult=0;根据第一模块得到的fmax、第二模块累加部分得到的tmp_sum和前导零预测部分的输出结果num_shift进行逻辑操作,得到最终结果的指数位eresult=01001;根据前导零预测部分的输出结果num_shift、第一模块得到的fmax对第二模块得到的tmp_sum进行移位并规格化得到最终结果的尾数位mresult=11001100101001。最后,将三者组合得到最终结果sumresult={sresult,eresult,mresult}={0,01001,11001100101001}=00100111001100101001。
综上所述,能够快速高效的完成多个相同标准的浮点数的加法操作,增加了一次运算支持的操作数数量,降低了运算延迟,加速了运算过程,降低了运算结果的精度损失。
需要说明的是,本公开中各功能单元/模块/子模块都可以是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如RRAM,DRAM,SRAM,EDRAM,HBM,HMC等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (15)
1.一种用于执行多个浮点数相加的装置,所述浮点数包括符号位、指数位和尾数位,其特征在于,装置包括:
预处理模块,包括比较选择模块及计算移位模块;其中,所述比较选择模块用于对所述多个浮点数的指数位进行两两比较,选择出最大的指数位;所述计算移位模块用于根据每个浮点数和具有最大指数位的浮点数的指数位的差值Δe得到逻辑移位的位数n,并对相应浮点数的尾数位进行逻辑移位,以使每一个浮点数的指数位均等于所述最大的指数位;其中,若具有最大指数位的浮点数为规格化浮点数,而待逻辑移位的浮点数为非规格化浮点数,则令n=Δe-1;否则,令n=Δe;
加法运算模块,包括两级华莱士树结构,第一级华莱士树结构为一级4-2华莱士树结构,其用于对所述浮点数进行相加,并输出给第二级华莱士树结构,所述第二级华莱士树结构为3-2华莱士树结构,用于对浮点数的累加结果进行运算得到该累加结果及该累加结果的待移位值,所述累加结果包括符号位、指数位和尾数位;
规格化处理模块,用于根据所述待移位值对所述累加结果的符号位、指数位和尾数位进行移位,得到规格化的累加结果。
2.根据权利要求1所述的用于执行多个浮点数相加的装置,其特征在于,在比较选择模块中,以二叉树的形式对所述多个浮点数的指数位进行两两比较。
3.根据权利要求2所述的用于执行多个浮点数相加的装置,其特征在于,在所述计算移位模块中,令每一个浮点数的符号位与指数位最大的浮点数的符号位一致,其中,浮点数在改变符号位时,对其尾数位取补码。
4.根据权利要求1所述的用于执行多个浮点数相加的装置,其特征在于,所述计算移位模块对浮点数的尾数位进行逻辑移位,包括:
在所述浮点数的尾数位的最高位前补上1位隐藏位,其中,对于规格化浮点数,隐藏位的值为1,对于非规格化浮点数,隐藏位的值为0;
在所述浮点数的尾数位的最低位后增加k个“0”,作为有效位:
对增加了有效位和隐藏位的尾数位右移n位,以舍弃尾数位最低的n位;
将移位后的尾数位的最低位作为粘滞位,将粘滞位与舍弃的n位进行“或”运算,用运算结果更新粘滞位,得到最终所需的浮点数的尾数位。
5.根据权利要求1所述的用于执行多个浮点数相加的装置,其特征在于,
一级4-2华莱士树结构将所述多个浮点数相加,直至归约为两个数;
第二级3-2华莱士树结构的华莱士树结构部分将该两个数相加,得到第一累加结果,并将该两个数的反码相加,得到第二累加结果,根据第一累加结果的最高位,选择第一累加结果或者第二累加结果,作为所述累加结果;第二级3-2华莱士树结构的前导零预测部分用于对该两个数进行逻辑运算,确定所述累加结果第一个有效数字位的位置,以得到所述累加结果的待移位值。
6.根据权利要求5所述的用于执行多个浮点数相加的装置,其特征在于,在最终结果累加模块中,若第一累加结果的最高位的值为0,则将第一累加结果作为所述累加结果,否则,将第二累加结果作为所述累加结果。
9.根据权利要求8所述的用于执行多个浮点数相加的装置,其特征在于,所述规格化处理模块根据所述待移位值对所述累加结果进行逻辑移位,以使所述累加结果的第一个有效数字位处于最高位,并对逻辑移位后的累加结果进行规格化,得到累加结果的符号位、指数位和尾数位。
10.一种应用权利要求1-9任一所述装置执行多个浮点数相加的方法,其特征在于,方法包括:
预处理模块,所述预处理模块包括比较选择模块及计算移位模块;其中,所述比较选择模块对所述多个浮点数的指数位进行两两比较,选择出最大的指数位;所述计算移位模块根据每个浮点数和具有最大指数位的浮点数的指数位的差值Δe得到逻辑移位的位数n,并对相应浮点数的尾数位进行逻辑移位,以使每一个浮点数的指数位均等于所述最大的指数位;其中,若具有最大指数位的浮点数为规格化浮点数,而待逻辑移位的浮点数为非规格化浮点数,则令n=Δe-1;否则,令n=Δe;
加法运算模块包括两级华莱士树结构,所述第一级华莱士树结构为一级4-2华莱士树结构,其用于对所述浮点数进行相加,并输出给第二级华莱士树结构,所述第二级华莱士树结构为3-2华莱士树结构,用于对浮点数的累加结果进行运算得到该累加结果及该累加结果的待移位值,所述累加结果包括符号位、指数位和尾数位;
规格化处理模块根据所述待移位值对所述累加结果的符号位、指数位和尾数位进行移位,得到规格化的累加结果。
11.根据权利要求10所述的用于执行多个浮点数相加的方法,其特征在于,对所述多个浮点数的指数位进行两两比较时,以二叉树的形式进行。
12.根据权利要求10所述的用于执行多个浮点数相加的方法,其特征在于,预处理模块对所述多个浮点数进行预处理,以使所述多个浮点数的指数位和符号位一致还包括:令每一个浮点数的符号位与指数位最大的浮点数的符号位一致,其中,浮点数在改变符号位时,对其尾数位取补码。
13.根据权利要求10所述的用于执行多个浮点数相加的方法,其特征在于,对相应浮点数的尾数位进行逻辑移位,包括:
在所述浮点数的尾数位的最高位前补上1位隐藏位,其中,对于规格化浮点数,隐藏位的值为1,对于非规格化浮点数,隐藏位的值为0;
在所述浮点数的尾数位的最低位后增加k个“0”,作为有效位;
对增加有效位和隐藏位的尾数位右移n位,以舍弃尾数位最低的n位;
将移位后的尾数位的最低位作为粘滞位,将粘滞位与舍弃的n位进行“或”运算,用运算结果更新粘滞位,得到最终所需的浮点数的尾数位。
14.根据权利要求10所述的用于执行多个浮点数相加的方法,其特征在于,
所述一级4-2华莱士树结构,将所述多个浮点数相加,直至归约为两个数;
所述第二级3-2华莱士树结构的华莱士树结构部分将该两个数相加,得到第一累加结果,并将该两个数的反码相加,得到第二累加结果,根据第一累加结果的最高位,选择第一累加结果或者第二累加结果,作为所述累加结果;第二级3-2华莱士树结构的前导零预测部分对该两个数进行逻辑运算,确定所述累加结果第一个有效数字位的位置,以得到所述累加结果的待移位值。
15.根据权利要求14所述的用于执行多个浮点数相加的方法,其特征在于,所述规格化处理模块根据所述待移位值对累加结果的符号位、指数位和尾数位进行移位,得到规格化的累加结果包括,根据所述累加结果的待移位值对所述累加结果进行逻辑移位,以使所述累加结果的第一个有效数字位处于最高位,并对逻辑移位后的累加结果进行规格化,得到累加结果的符号位、指数位和尾数位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610261902.XA CN107305485B (zh) | 2016-04-25 | 2016-04-25 | 一种用于执行多个浮点数相加的装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610261902.XA CN107305485B (zh) | 2016-04-25 | 2016-04-25 | 一种用于执行多个浮点数相加的装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107305485A CN107305485A (zh) | 2017-10-31 |
CN107305485B true CN107305485B (zh) | 2021-06-08 |
Family
ID=60150769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610261902.XA Active CN107305485B (zh) | 2016-04-25 | 2016-04-25 | 一种用于执行多个浮点数相加的装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107305485B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109343823A (zh) * | 2018-11-01 | 2019-02-15 | 何安平 | 基于异步控制的浮点数加法器和浮点数的相加方法 |
CN109582279B (zh) * | 2018-11-30 | 2021-06-15 | 上海寒武纪信息科技有限公司 | 数据运算装置及相关产品 |
CN112230882B (zh) * | 2020-10-28 | 2021-06-01 | 海光信息技术股份有限公司 | 浮点数处理装置、浮点数加法装置及浮点数处理方法 |
WO2022088157A1 (zh) * | 2020-10-31 | 2022-05-05 | 华为技术有限公司 | 一种浮点数计算电路以及浮点数计算方法 |
CN112463112B (zh) * | 2020-11-19 | 2022-08-16 | 上海壁仞智能科技有限公司 | 点积累加方法及装置 |
CN114546331A (zh) * | 2020-11-27 | 2022-05-27 | 中科寒武纪科技股份有限公司 | 累加装置、方法及可读存储介质 |
CN117193712A (zh) * | 2022-06-01 | 2023-12-08 | 中科寒武纪科技股份有限公司 | 乘累加操作数的方法及其设备 |
CN115291834B (zh) * | 2022-07-07 | 2023-08-22 | 华东师范大学 | N进制浮点加法运算系统与方法 |
CN115718586B (zh) * | 2022-11-29 | 2024-01-19 | 格兰菲智能科技有限公司 | 像素颜色混合操作方法、图形绘制方法、装置和设备 |
CN117891430B (zh) * | 2024-03-18 | 2024-05-14 | 中科亿海微电子科技(苏州)有限公司 | 一种应用于fpga嵌入式dsp的浮点乘加结构 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101506771A (zh) * | 2006-08-18 | 2009-08-12 | 高通股份有限公司 | 多级浮点累加器 |
CN101847087A (zh) * | 2010-04-28 | 2010-09-29 | 中国科学院自动化研究所 | 一种支持定浮点可重构的横向求和网络结构 |
CN102103479A (zh) * | 2011-03-02 | 2011-06-22 | 中兴通讯股份有限公司 | 浮点运算器及浮点运算的处理方法 |
CN102520906A (zh) * | 2011-12-13 | 2012-06-27 | 中国科学院自动化研究所 | 支持定浮点可重构的向量长度可配置的向量点积累加网络 |
CN102789376A (zh) * | 2012-06-21 | 2012-11-21 | 华为技术有限公司 | 浮点数加法电路及其实现方法 |
CN104423926A (zh) * | 2013-09-05 | 2015-03-18 | 阿尔特拉公司 | 浮点加法器电路 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5935202A (en) * | 1997-03-25 | 1999-08-10 | International Business Machines Corporation | Compressor circuit in a data processor and method therefor |
CN101840324B (zh) * | 2010-04-28 | 2012-03-28 | 中国科学院自动化研究所 | 支持复数运算和子字并行的64位定浮点乘法器 |
GB201111035D0 (en) * | 2011-06-29 | 2011-08-10 | Advanced Risc Mach Ltd | Floating point adder |
CN103176767B (zh) * | 2013-03-01 | 2016-08-03 | 浙江大学 | 一种低功耗高吞吐的浮点数乘累加单元的实现方法 |
-
2016
- 2016-04-25 CN CN201610261902.XA patent/CN107305485B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101506771A (zh) * | 2006-08-18 | 2009-08-12 | 高通股份有限公司 | 多级浮点累加器 |
CN101847087A (zh) * | 2010-04-28 | 2010-09-29 | 中国科学院自动化研究所 | 一种支持定浮点可重构的横向求和网络结构 |
CN102103479A (zh) * | 2011-03-02 | 2011-06-22 | 中兴通讯股份有限公司 | 浮点运算器及浮点运算的处理方法 |
CN102520906A (zh) * | 2011-12-13 | 2012-06-27 | 中国科学院自动化研究所 | 支持定浮点可重构的向量长度可配置的向量点积累加网络 |
CN102789376A (zh) * | 2012-06-21 | 2012-11-21 | 华为技术有限公司 | 浮点数加法电路及其实现方法 |
CN104423926A (zh) * | 2013-09-05 | 2015-03-18 | 阿尔特拉公司 | 浮点加法器电路 |
Also Published As
Publication number | Publication date |
---|---|
CN107305485A (zh) | 2017-10-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107305485B (zh) | 一种用于执行多个浮点数相加的装置及方法 | |
CN105468331B (zh) | 独立的浮点转换单元 | |
CN110689125A (zh) | 计算装置 | |
US20120124117A1 (en) | Fused multiply-add apparatus and method | |
US9483232B2 (en) | Data processing apparatus and method for multiplying floating point operands | |
KR20080055985A (ko) | 선택가능 준정밀도를 가진 부동―소수점 프로세서 | |
CN106250098B (zh) | 用于在执行浮点运算时控制舍入的装置及方法 | |
US20170293471A1 (en) | Arithmetic units and related converters | |
Hormigo et al. | Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest | |
CN108694037B (zh) | 用于在执行浮点减法时估计移位量的装置和方法 | |
KR100465371B1 (ko) | 덧셈 및 반올림 연산을 동시에 수행하는 부동 소수점alu 연산 장치 | |
US7143126B2 (en) | Method and apparatus for implementing power of two floating point estimation | |
WO2017185203A1 (zh) | 一种用于执行多个浮点数相加的装置及方法 | |
US8554819B2 (en) | System to implement floating point adder using mantissa, rounding, and normalization | |
CN108334304B (zh) | 数字递归除法 | |
JP4273071B2 (ja) | 除算・開平演算器 | |
EP3767455A1 (en) | Apparatus and method for processing floating-point numbers | |
KR102639646B1 (ko) | 다중 입력 부동 소수점 가산기 | |
CN105573712B (zh) | 用于计算重复迭代和的结果的装置、方法和存储介质 | |
US9720648B2 (en) | Optimized structure for hexadecimal and binary multiplier array | |
Tang et al. | A high-accuracy hardware-efficient multiply–accumulate (mac) unit based on dual-mode truncation error compensation for cnns | |
Villalba-Moreno | Digit recurrence floating-point division under HUB format | |
CN114077419A (zh) | 用于处理浮点数的方法和系统 | |
US10353671B2 (en) | Circuitry and method for performing division | |
US20230334117A1 (en) | Method and system for calculating dot products |
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 | ||
CB02 | Change of applicant information |
Address after: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant after: Zhongke Cambrian Technology Co., Ltd Address before: 100190 room 644, comprehensive research building, No. 6 South Road, Haidian District Academy of Sciences, Beijing Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |