掌桥专利:专业的专利平台
掌桥专利
首页

浮点加法单元

文献发布时间:2023-06-19 10:08:35


浮点加法单元

技术领域

本发明涉及浮点加法单元,属于计算机体系架构技术领域。

背景技术

浮点算术单元是通用处理器CPU、数字信号处理器DSP和图形处理器GPU的内核基本组成单元。IEEE754-2019规定的主要浮点算术单元有浮点加法单元FAU、浮点乘法单元FMU、浮点除法单元FDU、浮点开方单元FSQU以及浮点乘加单元FMA。相比于浮点FDU和FSQU,由于FAU、FMU和FMA具有延时小、电路面积小的特点,FAU、FMU和FMA一直是浮点算术单元结构研究的重点和热点。

目前,FAU的电路结构主要以单路径结构和双路径结构为主,前者的电路面积小,延时一般为4~6个周期,主要用在超深流水线处理器或对功耗敏感的处理器中,如手机处理器;后者的电路面积稍微大一些,延时一般为3个周期,广泛用在服务器、个人电脑等处理器中。上述两种结构的浮点加法单元其延时仍然比整数加法周期要长,当处理器执行浮点加法指令时,会造成处理器主流水线中指令的等待,即流水线停顿。从而导致处理器每周期执行的指令数IPC下降,使得处理器在执行大量浮点加法运算时表现出性能与理论不符、性能下降的特性。

发明内容

本发明的目的在于提供一种浮点加法单元,用于解决现有技术中存在的问题。

为达到上述目的,本发明提供如下技术方案:

根据第一方面,本发明实施例提供了一种浮点加法单元,所述浮点加法单元包括:

获取浮点加减法运算的两个浮点数的指数的指数差值δ;

判断浮点加减法运算的有效运算是减法运算或者加法运算;

根据计算得到的所述指数差值δ以及判断得到的有效运算分别计算有效加法运算下的尾数和与指数、指数差值δ为0或1时的尾数差与指数、指数差值δ大于1时的尾数差与指数,将计算得到的尾数和或者尾数差确定为最终尾数,计算得到的指数确定为最终指数;

根据所述最终尾数和所述最终指数确定所述最终运算结果。

可选的,判断浮点加减法运算的有效运算是减法运算或者加法运算,包括:

若执行运算的两个浮点数是符号相同的浮点数进行减法运算,或者两个符号不同的浮点数进行加法运算,则判断为有效运算为减法运算;

若执行运算的两个浮点数是符号不同的浮点数进行减法运算,或者符号相同的浮点数进行加法运算,则判断为有效运算为加法运算。

可选的,若所述浮点加减法有效运算为减法运算且所述指数差值为1或0,则根据计算得到的所述指数差值δ计算尾数差与指数,包括:

将两个浮点数中绝对值较小的浮点数的尾数右移1位或0位;

对右移1位或0位后的尾数与绝对值较大的浮点数的尾数求差,得到指数差为1或0时的尾数求差结果;

根据右移1位或0位后的尾数以及绝对值较大的浮点数的尾数进行前导零个数Z1的预测,将绝对值较大的浮点数的指数与Z1的差值确定为所述指数差为1或0且有效减法运算时的指数结果。

可选的,若所述浮点加减法有效运算为减法运算且所述指数差值为2时,所述根据计算得到的所述差值计算指数差值大于1时的尾数差与指数,包括:

将两个浮点数的尾数左移1位,将绝对值较小的浮点数的尾数右移δ位;

对左移1位的浮点数的尾数以及右移δ-1位的浮点数的尾数进行求差;

根据绝对值较大的浮点数的指数确定所述最终指数。

可选的,若所述浮点加减法有效运算为加法运算,则根据所述指数差值,确定有效加法运算结果的尾数和与指数,包括:

将两个浮点数的尾数均右移1位;

将所述两个浮点数中绝对值较小的浮点数的尾数继续右移δ位;

对两个浮点数中右移1位的尾数以及右移δ+1位的尾数求和;

根据绝对值较大的浮点数的指数确定所述最终指数。

可选的,所述根据所述最终尾数和所述最终指数确定所述最终运算结果,包括:

根据两个浮点数的符号以及所述尾数差的符号确定所述有效减法运算结果的符号;

根据所述符号、所述最终尾数和所述最终指数确定所述最终运算结果。

可选的,所述根据所述符号、所述最终尾数和所述最终指数确定所述最终运算结果,包括:

将所述符号、所述最终尾数和所述最终指数进行拼接,得到所述最终运算结果。

通过获取两个浮点加减法运算的两个浮点数的指数的差值;判断浮点加减法运算的有效运算是减法运算或者加法运算;根据所述差值以及有效运算,确定最终运算结果的最终尾数和最终指数;根据所述最终尾数和所述最终指数确定所述最终运算结果。解决了现有技术中延时较长、性能较差的问题;达到了可以缩短延时提高性能的效果。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。

附图说明

图1为本发明一个实施例提供的浮点数加减法运算的处理方法的方法流程图;

图2为本发明一个实施例提供的浮点加法单元的架构图。

具体实施方式

下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖 直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。 在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。 此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间 未构成冲突就可以相互结合。

首先,为了便于论述,假设执行浮点加减法运算的两个浮点数为A和B,且假设|A|>|B|(A的绝对值大于B的绝对值,那么A的指数一定是大于B的指数的),A和B的指数分别是expA、expB,A和B的尾数分别是sigA、sigB。

请参考图1,其示出了本申请一个实施例提供的浮点数加减法运算的处理方法,上述方法可以用于图2所示的浮点加法单元中,结合图1和图2,所述方法包括:

步骤101,获取两个浮点加减法运算的两个浮点数的指数的指数差值;

结合图1,在expA和expB进入ExpDiff模块之后,即可输出指数的差值为δ=|expA-expB|。

步骤102,判断浮点加减法运算的有效运算是减法运算或者加法运算;

本步骤包括:

若执行运算的两个浮点数是符号相同的浮点数进行减法运算,或者两个符合不同的浮点数进行加法运算,则判断为有效运算为减法运算;

若执行运算的两个浮点数是符号不同的浮点数进行减法运算,或者符号相同的浮点数进行加法运算,则判断为有效运算为加法运算。

步骤103,根据计算得到的所述指数差值δ以及判断得到的有效运算分别计算有效加法运算下的尾数和与指数、指数差值δ为0或1时的尾数差与指数、指数差值δ大于1时的尾数差与指数,将计算得到的尾数和或者尾数差确定为最终尾数,计算得到的指数确定为最终指数;

步骤104,根据所述最终尾数和所述最终指数确定所述最终运算结果。

在上述实施例中,由于两个浮点数可以进行加法运算,也可以进行减法运算,并且根据指数的差值的不同确定最终尾数和最终指数的确定方式也不同,因此,下述将分开不同方式分别进行详细介绍。实际实现时,可以分成加法运算和减法运算两种情况,并且当时减法运算时,根据指数的差值可以分成,差值为2时远路径的情况,以及差值为0或者1时近路径的情况。因此,下述将在不同实施例中分别对上述情况进行说明。

在一种可能的实施例中,若步骤102中的判定结果为减法运算且差值为1时,则步骤103包括:

第一,将两个浮点数中绝对值较小的浮点数的尾数右移1位;

结合图1,在δ=1时,将sigB通过SigShiftRight_S1模块右移1位,之后和sigA进入前导零预测模块PredictLZS_1模块进行前导零个数Z1的预测计算,同时进入SigSub_1模块进行减法运算。

第二,对右移1位后的尾数与绝对值较大的浮点数的尾数求差,得到最终尾数结果;

当δ=1时,尾数运算结果选择SigSub_1的输出。通过SigShift_Near模块完成将尾数左移Z位,实现尾数规格化的过程,得到减法近路径的最终尾数。

第三,根据右移1位后的尾数以及绝对值较大的浮点数的尾数进行前导零的个数Z1的预测,将绝对值较大的浮点数的指数与Z1的差值确定为所述最终指数结果。

当δ=1时,前导零预测值Z=Z1。得到减法近路径的指数expA – Z1。该路径的尾数运算结果记为SigNear,指数记为expNear(expA – Z1)。

在第二种可能的实施例中,若步骤102中的判定结果为减法运算且差值为0时,则步骤103包括:

第一,直接进行尾数求差,将求差结果作为最终尾数结果;

当δ=0时,sigA和sigB不需要进行移位,直接进入SigSub_0模块进行减法运算,尾数运算结果选择SigSub_0的输出。

第二,根据两个浮点数的尾数进行前导零的个数Z0的预测,将绝对值较大的浮点数的指数与Z0的差值确定为所述最终指数结果。

在进行上述步骤中的减法运算的同时,进入前导零预测模块PredictLZS_0进行前导零个数Z0的预测。只需要将expA减去Z0即可,得到减法近路径的指数expA – Z0。该路径的尾数运算结果记为SigNear,指数记为expNear(expA – Z0)。

在第三种可能的实施例中,若步骤102中的判定结果为减法运算且差值为2时,则步骤103包括:

第一,将两个浮点数的尾数左移1位,将绝对数较小的浮点数的尾数右移δ位;

浮点数进行有效减法运算,且δ≥2,其尾数差值的小数点前最多有一个0,因此,在将尾数进行规格化过程中:如果尾数差的小数点前的整数部分是0,则将尾数差左移1位,同时将expA减1;如果尾数差的小数点前的整数部分是1,则将尾数差不进行移位,expA也不改变。以两个二进制浮点数为例:1.0011×25-1.0000×23=0.111001×25,为了符合IEEE-754标准规定的科学计数法,需要将结果变为1.11001×24,由于其小数点前面1个零,所以需要尾数左移1位,指数减1,使其小数点前面只有1位非零的有效数字。因此,为了对是否左移1位进行预测,在PATH_FAR路径的第一级流水中,提前将sigA和sigB通过SigShiftLeft_1模块左移1位,左移1位后的sigB进入SigAlign_Sub模块完成右移δ位的过程。

第二,对左移1位的浮点数的尾数以及右移δ-1位的浮点数的尾数进行求差,对绝对值较大的浮点数的尾数以及右移δ位的浮点数的尾数进行求差;

在PATH_FAR路径的第二级流水级中,SigSub_Round1模块对左移了1位的sigA和右移了δ-1位(左移1位,右移δ位,等价于右移δ-1位)的sigB进行求差并舍入,SigSub_Round0模块对sigA和右移了δ位的sigB求差并进行舍入。SigSub_Round0和SigSub_Round1都是标志并行前缀整数加法器,可以同时求出不舍入和舍入的结果。

第三,根据两次求差结果确定所述最终尾数;

之后,根据右移了(δ-1)位的sigB的最低g、r、s位的值,按照IEEE-754标准的规定,从SigAdd_Round0和SigAdd_Round1中选择出该路径的正确尾数运算结果,该路径的尾数运算结果记为SigSub。

第四,根据绝对值较大的浮点数的指数确定所述最终指数。

该路径的指数记为expSub(=expA-1或expA)。

在第四种可能的实施例中,若步骤102中的判定结果为加法运算时,则步骤103包括:

第一,将两个浮点数的尾数均右移1位;

浮点数进行有效加法运算时,其尾数相加结果的小数点前面最多只有2位有效数字,因此,在将尾数进行规格化过程中:如果尾数和的小数点前有2位有效数字,则只需要将尾数求和结果右移1位,同时将expA加1;如果尾数和的小数点前面有1位有效数字,则不需要将尾数求和的结果右移,expA也不需要加1。以两个二进制浮点数为例:1.0011×23+1.0000×23=10.0011×23,为了符合IEEE-754标准规定的科学计数法,需要将结果变为1.00011×24,由于其小数点前面有两位有效数字,所以需要尾数右移1位,指数加1,使其小数点前面只有1位非零的有效数字。因此,为了对是否右移进行预测,在PATH_ADD路径的第一级流水中,提前将sigA和sigB通过SigShiftRight_A1模块右移1位。

第二,将所述两个浮点数中绝对值较小的浮点数的尾数继续右移δ位;

之后将右移1位的sigB通过SigAlign_Add模块右移δ位,完成尾数的对齐过程。

第三,对两个浮点数中右移1位的尾数以及右移δ+1位的尾数求和,并且对绝对值较大的浮点数的尾数以及右移δ位的尾数求和;

在PATH_ADD的第二级流水级中,SigAdd_Round1模块对右移了1位的sigA和右移了(1+δ)位的sigB求和并进行舍入,SigAdd_Round0模块对sigA和右移了δ位的sigB求和并进行舍入。SigAdd_Round0和SigAdd_Round1都是标志并行前缀整数加法器,可以同时求出不舍入与舍入后的结果。

第四,根据两次求和结果确定所述最终尾数;

之后,根据右移了(1+δ)位的sigB的最低g、r、s位的值,按照IEEE-754标准的规定,从SigAdd_Round0和SigAdd_Round1中选择出该路径的正确尾数运算结果,该路径的尾数运算结果记为SigAdd。

第五,根据绝对值较大的浮点数的指数确定所述最终指数。

该路径的指数记为expAdd(=expA+1或=expA)。

需要说明的是,在上述各个实施例中,在计算得到最终尾数和最终指数之后即可根据两者计算最终运算结果。并且,实际实现时,在步骤104之前,该方法还包括:

根据两个浮点数的符号以及所述判断结果确定所述最终运算结果的符号;

比如,在有效运算为减法运算时,根据两个浮点数的符号以及计算得到的尾数查的符号确定有效减法运算结果的符号。

相应的,步骤104包括:

根据所述符号、所述最终尾数和所述最终指数确定所述最终运算结果。

在流水线的第二级,最后根据δ的值,以及有效运算是加法还是减法,从3条路径中通过MUX2选出最终的尾数sigC和最终的指数expC:当有效运算是加法时,expC=expAdd,sigC=sigAdd;当有效运算是减法,且δ≥2时,expC=expSub,sigC=sigSub;当有效运算是减法,且δ=0或δ=1,expC=expNear,sigC=SigNear。由于A的绝对值大于B的绝对值,所以C的符号是和A的符号相等的,即signC=signA。将signC、expC和sigC进行拼接,就得到了最终的浮点计算结果C:C={signC, expC, sigC}。

也即所述浮点加法单元是通过区分有效运算是加法还是减法,指数差是否大于等于2,将尾数的计算过程分成了3条路径,同时在不同的路径中加入前导零预测和尾数并行求和、求差以及舍入电路来得到正确的尾数计算结果。经实验证明上述方案的延时为2个周期,相比于当前广泛使用的3周期延时的双路径结构的浮点加法单元,其延时减小了33%。

步骤105包括:将所述符号、所述最终尾数和所述最终指数进行拼接,得到所述最终运算结果。

综上所述,通过获取两个浮点加减法运算的两个浮点数的指数的差值;判断浮点加减法运算的有效运算是减法运算或者加法运算;根据所述差值以及判断结果,确定最终运算结果的最终尾数和最终指数;根据所述最终尾数和所述最终指数确定所述最终运算结果。解决了现有技术中延时较长、性能较差的问题;达到了可以缩短延时提高性能的效果。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

相关技术
  • 浮点加法器、通过浮点加法器执行的方法和信息处理系统
  • 循环浮点数生成器、循环浮点数加法器、生成循环浮点数方法及循环浮点数相加方法
技术分类

06120112438009