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

浮点数处理装置、浮点数加法装置及浮点数处理方法

文献发布时间:2023-06-19 09:35:27


浮点数处理装置、浮点数加法装置及浮点数处理方法

技术领域

本申请涉及计算机领域,具体而言,涉及一种浮点数处理装置、浮点数加法装置及浮点数处理方法。

背景技术

随着人工智能、信号处理,物联网等多个领域的发展,处理器对浮点半精度的性能需求越来越高。一方面,浮点半精度能够以较低的实现代价提供满足需求的计算精度,硬件效率较高;另一方面,浮点半精度只有16位宽,相对浮点单精度、双精度等高精度浮点数据格式,在相同的访存带宽下,可以提供更多单位的计算数据,让程序拥有更好的性能。因此,目前采用浮点半精度的应用越来越广泛,使得提升浮点半精度的性能变得越来越重要。

现有技术中,在进行两个浮点数相加时,往往会计算两个浮点数的阶码的差值,然后保持两个浮点数中阶码较大的浮点数的阶码不变,将两个浮点数中阶码较小的浮点数的阶码与阶码较大的浮点数对阶。然后再对完成对阶后的两个浮点数进行执行相加运算。然而,获取两个浮点数各自的阶码,再计算两个浮点数的阶码的差值在实际计算过程中,耗费的时间较多,不利于浮点半精度性能的提升。

发明内容

本申请实施例的目的在于提供一种浮点数处理装置、浮点数加法装置及浮点数处理方法,用以改善现有技术在计算浮点数相加运算时耗费时间多的问题。

第一方面,本申请实施例提供了一种浮点数处理装置,包括多个浮点数处理单元和符号位压缩逻辑单元,所述多个浮点数处理单元和所述符号位压缩逻辑单元均与进位保存加法器CSA压缩阵列连接;每个所述浮点数处理单元均包括:阶码差值运算子单元、对阶移位器和第一反相器;所述阶码差值运算子单元用于在所属的浮点数处理单元对应处理的目标浮点数的隐含整数位为1时,计算目标阶码与带偏阶的阶码的阶码差值,其中,所述阶码差值为所述目标浮点数的整体右移的位数;所述对阶移位器用于根据所述阶码差值对所述目标浮点数的所述隐含整数位和尾数进行整体右移,将进行过整体右移的所述目标浮点数作为输出结果发送给所述第一反相器;所述第一反相器用于根据所述目标浮点数的符号位,对所述对阶移位器的输出结果进行与所述符号位对应的处理,得到处理结果,并将所述处理结果发送给所述CSA压缩阵列;所述符号位压缩逻辑单元用于获取多个浮点数处理单元分别对应处理的目标浮点数的符号位,对获取的符号位进行加和运算,并将加和值发送给所述CSA压缩阵列,以使所述CSA压缩阵列对所述符号位的加和值、以及多个浮点数处理单元输出的处理结果进行加和运算,得到两个中间加和结果,并经所述CSA压缩阵列连接的加法器对所述两个中间加和结果进行加和运算得到累加值。

在上述的实施方式中,符号位压缩逻辑单元用于实现多个浮点数中每个浮点数的符号位的相加。阶码差值运算子单元在目标浮点数的隐含整数位为1时,计算预先设置的目标阶码与目标浮点数的带偏阶的阶码的阶码差值。该阶码差值同样为目标浮点数进行整体右移时,需要右移的位数。然后对接移位器根据该阶码差值,对目标浮点数的隐含整数位和尾数进行整体右移。整体右移后得到的右移结果被输入到第一反相器。第一反相器可以根据目标浮点数的符号位,对上述的右移结果进行与符号位对应的处理,得到处理结果,该目标浮点数的处理结果被输入到CSA压缩阵列。CSA压缩阵列以及与CSA压缩阵列连接的加法器可以对多个浮点数处理单元输出的处理结果以及多个浮点数的符号位的相加加和进行处理。本申请通过计算每个浮点数的带偏阶的阶码与目标阶码的差得到阶码差值,并根据该阶码差值进行运算,与现有的两两浮点数之间计算阶码差值相比,节省了计算的时间。

在一个可能的设计中,所述浮点数处理单元还包括:或处理子单元,所述或处理子单元与所述对阶移位器连接;所述或处理子单元用于:获取目标浮点数的带偏阶的阶码,并对所述带偏阶的阶码进行或操作,得到或操作结果;根据所述或操作结果,确定所述目标浮点数的隐含整数位的数值。

在上述的实施方式中,可以通过或处理子单元来确定目标浮点数的隐含整数位。或处理子单元可以获取以二进制形式表示的带偏阶的阶码,并对该带偏阶的阶码逐位进行或操作,得到或操作结果。

在一个可能的设计中,所述或处理子单元用于:根据所述或操作结果,确定所述目标浮点数的隐含整数位的数值,具体包括:当所述或操作结果为1时,确定所述目标浮点数的隐含整数位为1;当所述或操作结果为0时,确定所述目标浮点数的隐含整数位为0。

在上述的实施方式中,在或操作结果为1时,确定目标浮点数的隐含整数位为1。若对带偏阶的阶码逐位进行或操作,得到的或操作结果为0。

在一个可能的设计中,所述对阶移位器还用于在所述隐含整数位为0时,将所述目标浮点数的尾数维持在小数部分,并在整数部分补0,得到新的目标浮点数,并将所述新的目标浮点数作为输出结果发送给所述第一反相器。

在上述的实施方式中,对于隐含整数位为0的情况,可以将目标浮点数的尾数维持在小数部分,并在整数部分补0,得到新的目标浮点数,对阶移位器可以将该新的目标浮点数发送给第一反相器,以便反相器对隐含整数位为0的浮点数进行进一步的计算。

在一个可能的设计中,所述第一反相器用于:根据所述目标浮点数的符号位,对所述对阶移位器的输出结果进行与所述符号位对应的处理,得到处理结果,并将所述处理结果发送给所述CSA压缩阵列,包括:在所述目标浮点数的符号位为0时,将所述对阶移位器的输出结果发送给所述CSA压缩阵列;在所述目标浮点数的符号位为1时,将所述对阶移位器的输出结果按位取反得到反相值,并将所述反相值发送给所述CSA压缩阵列。

在上述的实施方式中,符号位为0,则意味着目标浮点数为正,则在进行加和运算时,目标浮点数对应的输出结果可以直接参与相加;符号位为1,则意味着目标浮点数为负,则在进行加和运算时,根据运算规则,加一个负数与加该负数的取反加一一致。由于符号位压缩逻辑单元已经加了目标浮点数的符号位1,即已经进行加一的操作,因此,第一反相器可以直接对目标浮点数对应的输出结果进行取反。通过第一反相器对不同符号位的浮点数进行不同的处理,使得不同符号位的浮点数均能准确地参与到加和运算中。

在一个可能的设计中,所述目标阶码的十进制对应值为31,所述阶码差值运算子单元为第二反相器;所述阶码差值运算子单元用于对所述带偏阶的阶码取反,得到所述阶码差值。

在上述的实施方式中,目标阶码可以取十进制对应值为31,即二进制对应值为11111。在目标阶码确定为31的情况下,阶码差值运算子单元可以由反相器实现。由于目标浮点数的带偏阶的阶码也是一个五位的二进制数,因此,二进制数11111(十进制对应值31)与带偏阶的阶码相减与直接对带偏阶的阶码取反等效。通过明确目标阶码为31,可以使得浮点数据处理装置的数据处理过程更加快捷高效。与现有技术相比,直接消除了阶码对阶的动作,通过取反直接实现对阶移位,节省了计算时间。

第二方面,本申请实施例提供了一种浮点数加法装置,包括CSA压缩阵列、加法器以及上述的浮点数处理装置,所述浮点数处理装置包括多个浮点数处理单元和符号位压缩逻辑单元,所述多个浮点数处理单元和符号位压缩逻辑单元均与CSA压缩阵列连接,所述CSA压缩阵列与加法器连接;所述CSA压缩阵列用于对所述符号位压缩逻辑单元计算出的符号位的加和值、以及多个浮点数处理单元输出的处理结果进行加和运算,得到两个中间加和结果;所述加法器用于对所述两个中间加和结果进行加和运算,得到累加值。

在上述的实施方式中,CSA压缩阵列可以对符号位的加和、多个浮点数处理单元输出的处理结果组成的多个加数进行处理,得到两个中间加和结果。该中间加和结果的具体值与CSA压缩阵列的内部电路的构建有关。CSA压缩阵列在计算出两个中间加和结果之后,可以将这两个中间加和结果输入到加法器,由加法器对两个中间加和结果进行加和运算,得到累加值,从而实现了多个浮点数的加法运算的过程。

在一个可能的设计中,还包括与所述CSA压缩阵列连接的前导零预测单元LZA,以及与所述LZA连接的规格化移位器;所述LZA用于根据所述两个中间加和结果,获得前导零结果,并将所述前导零结果发送给所述规格化移位器;所述规格化移位器还与所述加法器连接,所述规格化移位器用于根据目标阶码以及前导零结果,获得左移位数;并根据所述左移位数,对所述加法器输出的累加值进行左移操作以得到规格化处理结果。

在上述的实施方式中,还包括规格化移位器、与CSA压缩阵列连接的LZA。LZA用于根据两个中间加和结果,获得前导零结果。该前导零结果被发送给规格化移位器,由规格化移位器根据目标阶码和前导零结果得到左移位数,并根据具体的左移位数,对加法器计算出的累加值进行规格化左移操作。

在一个可能的设计中,所述规格化移位器用于根据目标阶码以及前导零结果,获得左移位数,具体包括:计算所述目标阶码与所述前导零结果的差值,所述差值为所述左移位数。

第三方面,本申请提供一种一种浮点数处理方法,多个浮点数处理单元中的每个浮点数处理单元的阶码差值运算子单元在对应的目标浮点数的隐含整数位为1时,计算目标阶码与带偏阶的阶码的阶码差值,其中,所述阶码差值为所述目标浮点数的整体右移的位数;所述每个浮点数处理单元的所述对阶移位器根据所述阶码差值对所述目标浮点数的所述隐含整数位和尾数进行整体右移,进行过整体右移的所述目标浮点数为对应的所述对阶移位器的输出结果;所述每个浮点数处理单元的所述第一反相器根据所述目标浮点数的符号位,对所述对阶移位器的输出结果进行与所述符号位对应的处理,得到处理结果,并将所述处理结果发送给所述CSA压缩阵列;所述符号位压缩逻辑单元获取所述多个浮点数处理单元分别对应处理的目标浮点数的符号位,对获取的符号位进行加和运算得到加和值,并将所述加和值发送给所述CSA压缩阵列,以使所述CSA压缩阵列对所述符号位的加和值、以及多个浮点数处理单元输出的处理结果进行加和运算,得到两个中间加和结果,并经所述CSA压缩阵列连接的加法器对所述两个中间加和结果进行加和运算得到累加值。

在上述的实施方式中,符号位压缩逻辑单元用于实现多个浮点数中每个浮点数的符号位的相加。阶码差值运算子单元在目标浮点数的隐含整数位为1时,计算预先设置的目标阶码与目标浮点数的带偏阶的阶码的阶码差值。该阶码差值同样为目标浮点数进行整体右移时,需要右移的位数。然后对接移位器根据该阶码差值,对目标浮点数的隐含整数位和尾数进行整体右移。整体右移后得到的右移结果被输入到第一反相器。第一反相器可以根据目标浮点数的符号位,对上述的右移结果进行与符号位对应的处理,得到处理结果,该目标浮点数的处理结果被输入到CSA压缩阵列。CSA压缩阵列以及与CSA压缩阵列连接的加法器可以对多个浮点数处理单元输出的处理结果以及多个浮点数的符号位的相加加和进行处理。本申请通过计算每个浮点数的带偏阶的阶码与目标阶码的差得到阶码差值,并根据该阶码差值进行运算,与现有的两两浮点数之间计算阶码差值相比,节省了计算的时间。

在一个可能的设计中,所述浮点数处理单元还包括:或处理子单元;所述目标浮点数的隐含整数位为1通过如下方法确定:所述或处理子单元获取目标浮点数的带偏阶的阶码,并对所述带偏阶的阶码进行或操作,得到或操作结果;若所述或操作结果为1,所述或处理子单元确定所述目标浮点数的隐含整数位为1。

在上述的实施方式中,可以通过或处理子单元来确定目标浮点数的隐含整数位。或处理子单元可以获取以二进制形式表示的带偏阶的阶码,并对该带偏阶的阶码逐位进行或操作,得到或操作结果。

在一个可能的设计中,在所述或处理子单元获取目标浮点数的带偏阶的阶码,并对所述带偏阶的阶码进行或操作,得到或操作结果之后,所述方法还包括:若或操作结果为1,确定目标浮点数的隐含整数位为1。若所述或操作结果为0,所述或处理子单元确定所述目标浮点数的隐含整数位为0;所述对阶移位器将所述目标浮点数的尾数维持在小数部分,并在整数部分补0,得到新的目标浮点数,并将所述新的目标浮点数作为输出结果发送给所述第一反相器。

在上述的实施方式中,在或操作结果为1时,确定目标浮点数的隐含整数位为1。若对带偏阶的阶码逐位进行或操作,得到的或操作结果为0,则可以将目标浮点数的尾数维持在小数部分,并在整数部分补0,得到新的目标浮点数,对阶移位器可以将该新的目标浮点数发送给第一反相器,以便反相器对隐含整数位为0的浮点数进行进一步的计算。

在一个可能的设计中,所述第一反相器根据所述目标浮点数的符号位,对所述对阶移位器的输出结果进行与所述符号位对应的处理,得到处理结果,并将所述处理结果发送给所述CSA压缩阵列,包括:所述第一反相器在所述目标浮点数的符号位为0时,将所述对阶移位器的输出结果发送给所述CSA压缩阵列;在所述目标浮点数的符号位为1时,将所述对阶移位器的输出结果按位取反得到反相值,并将所述反相值发送给所述CSA压缩阵列。

在上述的实施方式中,符号位为0,则意味着目标浮点数为正,则在进行加和运算时,目标浮点数对应的输出结果可以直接参与相加;符号位为1,则意味着目标浮点数为负,则在进行加和运算时,根据运算规则,加一个负数与加该负数的取反加一一致。由于符号位压缩逻辑单元已经加了目标浮点数的符号位1,即已经进行加一的操作,因此,第一反相器可以直接对目标浮点数对应的输出结果进行取反。通过第一反相器对不同符号位的浮点数进行不同的处理,使得不同符号位的浮点数均能准确地参与到加和运算中。

在一个可能的设计中,所述目标阶码的十进制对应值为31;所述计算目标阶码与所述带偏阶的阶码的阶码差值,包括:对所述带偏阶的阶码取反,得到所述阶码差值。

在上述的实施方式中,目标阶码可以取十进制对应值为31,即二进制对应值为11111。在目标阶码确定为31的情况下,阶码差值运算子单元可以由反相器实现。由于目标浮点数的带偏阶的阶码也是一个五位的二进制数,因此,二进制数11111(十进制对应值31)与带偏阶的阶码相减与直接对带偏阶的阶码取反等效。通过明确目标阶码为31,可以使得浮点数据处理装置的数据处理过程更加快捷高效。

为使本申请实施例所要实现的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本申请实施例提供的浮点数加法装置的示意性结构框图;

图2示出了本申请实施例提供的浮点数处理装置的示意性结构框图;

图3示出了图2的浮点数处理装置对浮点数进行处理的具体示例图;

图4示出了对阶移位器的一种具体实施方式的示意性结构框图;

图5示出了本申请实施例提供的浮点数处理方法的一种流程示意图;

图6示出了本申请实施例提供的浮点数处理方法的部分步骤的流程示意图;

图7示出了图5中步骤S140的具体步骤的流程示意图。

具体实施方式

浮点数可以用形如F=(-1)

现有技术在进行两个浮点数相加时,往往会计算两个浮点数的阶码的差值,然后保持两个浮点数中阶码较大的浮点数的阶码不变,将两个浮点数中阶码较小的浮点数的阶码与阶码较大的浮点数对阶。然后再对完成对阶后的两个浮点数进行执行相加运算。

为了便于说明,不妨设两个浮点数分别为

现有技术在进行上述两个浮点数相加时,会先判断待相加的两个浮点数是否为0,若两个浮点数中有一个浮点数为0,则相加结果为另一个浮点数的数值。

若两个浮点数均不为0,则会计算两者的带偏阶的阶码的阶码差值ΔE=E

获取两个浮点数各自的阶码,再计算两个浮点数的阶码的差值在实际计算过程中,耗费的时间较多。

本申请实施例提供的浮点数处理装置通过计算每个浮点数的带偏阶的阶码与目标阶码的差得到阶码差值,并根据该阶码差值进行运算,与现有的两两浮点数之间计算阶码差值相比,节省了计算的时间。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。

请参见图1,图1示出了本申请实施例提供的浮点数加法装置的示意性结构框图,浮点数加法装置包括浮点数处理装置、进位保存加法器(Carry save adder,简称CSA)压缩阵列310、加法器320、前导零预测单元(Leading-Zero Anticipator,简称LZA)330、规格化移位器340以及舍入和异常处理模块350。浮点数处理装置与CSA压缩阵列310连接,CSA压缩阵列310分别与加法器320和LZA 330连接。加法器320和LZA 330均与规格化移位器340连接,规格化移位器340还与舍入和异常处理模块350连接。

请参见图1,浮点数处理装置包括符号位压缩逻辑单元200和多个浮点数处理单元100。符号位压缩逻辑单元200和多个浮点数处理单元100均与CSA压缩阵列310连接。

符号位压缩逻辑单元200用于获取多个浮点数的符号位的加和,并将浮点数的符号位的加和发送给CSA压缩阵列310。

可选地,在一种具体实施方式中,符号位压缩逻辑单元200获取多个浮点数的符号位的加和,可以通过如下方式实现:如图1所示,符号位压缩逻辑单元200可以获取从A

可选地,在另一种具体实施方式中,符号位压缩逻辑单元200获取多个浮点数的符号位的加和,也可以通过如下方式实现:符号位压缩逻辑单元200可以获取从A

多个浮点数处理单元100中的每个浮点数处理单元100对应处理一个浮点数,请参见图1,从A

多个浮点数处理单元100中的每个浮点数处理单元100均包括:阶码差值运算子单元110、对阶移位器120、第一反相器130以及或处理子单元140,详情请参见图2,图2示出了浮点数Ai对应的浮点数处理单元100,其中,i=0,1,2…n-1。阶码差值运算子单元110以及或处理子单元140均用于获取浮点数A

或处理子单元140用于获取浮点数A

阶码差值运算子单元110用于在浮点数A

可选地,在一种具体实施方式中,目标阶码的十进制对应值可以是31。与之对应的,阶码差值运算子单元110具体可以为第二反相器。

在目标阶码的十进制对应值是31的情况下,阶码差值运算子单元110可以通过对浮点数A

可选地,若目标阶码的十进制对应值为除31以外的其他数值,则阶码差值运算子单元110可以通过直接计算该目标阶码与浮点数A

对阶移位器120可以从或处理子单元140获取到隐含整数位,并执行与隐含整数位对应的操作。即对阶移位器120所要执行的操作与隐含整数位的具体值相关,隐含整数位为1或0,对阶移位器120执行的操作不同。

在隐含整数位为1时,对阶移位器120用于从阶码差值运算子单元110获取到目标阶码与浮点数A

在隐含整数位为0时,对阶移位器120用于将浮点数A

请参见图4,图4示出了对阶移位器120的一种具体实施方式,对阶移位器120可以包括数据选择器121(multiplexer,简称mux)和移位器122,数据选择器121包括两个输入端和一个输出端,数据选择器121的第一输入端连接有移位器122,第二输入端连接有一根信号线。

数据选择器121可以接收或处理子单元140发送的隐含整数位,并根据隐含整数位的具体值,选择需导通的输入端。数据选择器121在隐含整数位为1时,选择导通连接有移位器122的第一输入端;在隐含整数位为0时,选择导通连接一根信号线的第二输入端。

移位器122可以接收阶码差值运算子单元110输出的阶码差值,并根据阶码差值对浮点数A

请参见图2,第一反相器130会获取浮点数A

在浮点数A

符号位为0,则意味着浮点数A

在浮点数A

符号位为1,则意味着浮点数A

通过第一反相器130对不同符号位的浮点数进行不同的处理,使得不同符号位的浮点数均能准确地参与到加和运算中。

通过图2示出的与浮点数A

请参见图3,图3示出了浮点数的隐含整数位为1时以及隐患整数位为0时,图2示出的浮点数处理单元100对浮点数进行处理的示例图,浮点数均是由隐含整数位与10位尾数组成的11位浮点数。

不妨设:目标阶码的十进制对应值为31;E-bias的取值范围为-24至15,bias取值为15,其中,包括-24至-15这10位小数部分,-14至-1这14位负指数,0至15这16位正指数。对应的,E的取值范围为-9至30,其中,包括-9至0这10位小数部分,1至14这14位负指数,15至30这16位正指数。

请参见图3,对于E=30的浮点数,可以利用阶码差分运算子单元110计算目标阶码与E的差值,即31-30=1,得出该浮点数需要整体右移1位,则对阶移位器120将该浮点数整体右移1位,即隐含整数位1移动至E的取值为30对应的位置,且隐含整数位与10位尾数位共同组成的11位数被移动到E的取值为30至20对应的位置,在E的取值为-9至19的部分补0,详情请参见图3示出的E=30所在的行,其中,E=30所在的行的虚线框框出的部分为上述的补0的部分。

对于E=15的浮点数,可以利用阶码差分运算子单元110计算目标阶码与E的差值,即31-15=16,得出该浮点数需要整体右移16位,则对阶移位器120将该浮点数整体右移16位,即隐含整数位1移动至E的取值为15对应的位置,且隐含整数位与10位尾数位共同组成的11位数被移动到E的取值为15至5对应的位置,在E的取值为-9至4的部分以及16至30的部分补0。详情请参见图3示出的E=15所在的行,其中,E=15所在的行的虚线框框出的部分为上述的补0的部分。

对于E=1的浮点数,可以利用阶码差分运算子单元110计算目标阶码与E的差值,即31-1=30,得出该浮点数需要整体右移30位,则对阶移位器120将该浮点数整体右移30位,即隐含整数位1移动至E的取值为1对应的位置,且隐含整数位与10位尾数位共同组成的11位数被移动到E的取值为-9至1对应的位置,在E的取值为2至30的部分补0。详情请参见图3示出的E=1所在的行,其中,E=1所在的行的虚线框框出的部分为上述的补0的部分。

可选地,请参见图3,对于隐含整数位为0的非规格数,E恒等于0,该非规格数与隐含整数位为1的规格数的E=1的浮点数的处理过程相同,在此便不做赘述。

在经过对阶移位器的操作后,便可以得到右移后的40位长的数据。

第一反相器130可以根据符号位来确定是否对右移后的40位长的数据进行按位取反。

在符号位为0时,第一反相器130可以直接将右移后的40位长的数据发送到CSA压缩阵列310,而不对右移后的40位长的数据进行按位取反。

在符号位为1时,第一反相器130可以对右移后的40位长的数据进行按位取反。

请参见图1,CSA压缩阵列310用于对符号位压缩逻辑单元200得到的符号位的加和、以及多个浮点数处理单元100输出的处理结果进行加和运算,得到两个中间加和结果。请参见图1,CSA压缩阵列310输出的两个中间加和结果可以分别输出给加法器320和LZA330。

加法器320得到CSA压缩阵列310算出的两个中间加和结果,并对两个中间加和结果进行加和运算,得到累加值。该累加值为图1示出的A

LZA 330用于根据所述两个中间加和结果,获得前导零结果,并将前导零结果发送给规格化移位器340。

规格化移位器340用于根据目标阶码以及前导零结果,获得左移位数;并根据左移位数,对所述累加值进行左移操作,得到规格化处理结果。规格化移位器340可以将规格化处理结果发送给舍入和异常处理模块350。

可选地,规格化移位器340可以通过如下方式计算左移位数:

规格化移位器340计算目标阶码与LZA 330得到的前导零结果的差值,该差值便为左移位数。其中,目标阶码可以存储在规格化移位器340中。若目标阶码的十进制对应值为31,则规格化移位器340可以通过对前导零结果取反的方式得到目标阶码与前导零结果的差值。

舍入和异常处理模块350用于获取规格化处理结果,并对该规格化处理结果进行舍入处理和异常情况处理。

在IEEE754标准中,舍入处理提供了四种可选方法:

就近舍入:其实质就是通常所说的"四舍五入"。例如,尾数超出规定的23位的多余位是10010,多余位的值超过规定的最低有效位值的一半,故最低有效位应增1;若尾数超出规定的23位的多余位是01111,则进行截尾即可。对尾数超出规定的23位的多余位是10000这种特殊情况,可以通过如下方式进行处理:若最低有效位现为0,则截尾处理;若最低有效位现为1,则向上进一位使其变为0。

朝0舍入:朝数轴原点方向舍入,即简单的截尾。无论尾数是正数还是负数,截尾都使取值的绝对值比原值的绝对值小。

朝正无穷舍入:对正数来说,只要多余位不全为0,则向最低有效位进1;对负数来说,则进行截尾处理。

朝负无穷舍入:处理方法与朝正无穷舍入情况相反。对正数来说,只要多余位不全为0,则进行截尾处理;对负数来说,向最低有效位进1。

异常情况处理指的是判断浮点数是否为无穷大或NAN,若是,则对该浮点数进行专门的异常数处理流程,该异常数处理流程可以采用现有技术中的异常数处理流程。

本申请通过计算每个浮点数的带偏阶的阶码与目标阶码的差得到阶码差值,并根据该阶码差值进行运算,与现有的两两浮点数之间计算阶码差值相比,节省了计算的时间。

在目标阶码确定为十进制值31(即二进制对应值为11111)的情况下,二进制数11111与带偏阶的阶码相减与直接对带偏阶的阶码取反等效。通过明确目标阶码为31,并对带偏阶的阶码取反获取目标阶码与带偏阶的阶码的差值,可以使得浮点数据处理装置的数据处理过程更加快捷高效。

本申请实施例提供的浮点数加法装置中,对浮点数的符号位进行处理的线路、对阶移位处理过程对应的线路以及CSA压缩阵列310进行加和运算的路径均相互独立,对浮点数的符号位进行处理的过程以及对阶移位的处理过程均不会占据CSA压缩阵列310进行加和运算的路径,进一步节约了处理时间。

图5为本申请实施例提供的浮点数处理方法的一种流程示意图,该浮点数处理方法由上述的浮点数处理装置执行,具体包括如下步骤S110至步骤S140:

步骤S110,多个浮点数处理单元中的每个浮点数处理单元的阶码差值运算子单元在对应的目标浮点数的隐含整数位为1时,计算目标阶码与带偏阶的阶码的阶码差值,其中,所述阶码差值为所述目标浮点数的整体右移的位数。

步骤S120,每个浮点数处理单元的对阶移位器根据所述阶码差值对所述目标浮点数的所述隐含整数位和尾数进行整体右移,进行过整体右移的所述目标浮点数为对应的所述对阶移位器的输出结果。

步骤S130,每个浮点数处理单元的第一反相器根据所述目标浮点数的符号位,对所述对阶移位器的输出结果进行与所述符号位对应的处理,得到处理结果,并将所述处理结果发送给CSA压缩阵列。

步骤S140,符号位压缩逻辑单元获取所述多个浮点数处理单元分别对应处理的目标浮点数的符号位,对获取的符号位进行加和运算得到加和值,并将所述加和值发送给所述CSA压缩阵列。

目标阶码的十进制对应值可以为31,则计算目标阶码与所述带偏阶的阶码的阶码差值,包括:对所述带偏阶的阶码取反,得到所述阶码差值。

目标阶码可以取十进制对应值为31,即二进制对应值为11111。在目标阶码确定为31的情况下,阶码差值运算子单元110可以由反相器实现。由于目标浮点数的带偏阶的阶码也是一个五位的二进制数,因此,二进制数11111(十进制对应值31)与带偏阶的阶码相减与直接对带偏阶的阶码取反等效。

符号位压缩逻辑单元200用于实现多个浮点数中每个浮点数的符号位的相加。阶码差值运算子单元110在目标浮点数的隐含整数位为1时,计算预先设置的目标阶码与目标浮点数的带偏阶的阶码的阶码差值。该阶码差值同样为目标浮点数进行整体右移时,需要右移的位数。然后对接移位器根据该阶码差值,对目标浮点数的隐含整数位和尾数进行整体右移。整体右移后得到的右移结果被输入到第一反相器130。第一反相器130可以根据目标浮点数的符号位,对上述的右移结果进行与符号位对应的处理,得到处理结果,该目标浮点数的处理结果被输入到CSA压缩阵列310。CSA压缩阵列310以及加法器320可以对多个浮点数处理单元100输出的处理结果以及多个浮点数的符号位的加和进行相加处理。本申请通过计算每个浮点数的带偏阶的阶码与目标阶码的差得到阶码差值,并根据该阶码差值进行运算,与现有的两两浮点数之间计算阶码差值相比,节省了计算的时间。

请参见图7,图7示出了步骤S140的具体步骤的流程示意图,具体包括如下步骤S141至步骤S142:

步骤S141,第一反相器130在所述目标浮点数的符号位为0时,将所述对阶移位器120的输出结果发送给所述CSA压缩阵列310。

符号位为0,则意味着目标浮点数为正,则在进行加和运算时,目标浮点数对应的输出结果可以直接参与相加。

步骤S142,在所述目标浮点数的符号位为1时,将所述对阶移位器120的输出结果按位取反得到反相值,并将所述反相值发送给所述CSA压缩阵列310。

符号位为1,则意味着目标浮点数为负,则在进行加和运算时,根据运算规则,加一个负数与加该负数的取反加一一致。由于符号位压缩逻辑单元200已经加了目标浮点数的符号位1,即已经进行加一的操作,因此,第一反相器130可以直接对目标浮点数对应的输出结果进行取反。通过第一反相器130对不同符号位的浮点数进行不同的处理,使得不同符号位的浮点数均能准确地参与到加和运算中。

可选地,请参见图6,目标浮点数的隐含整数位为1通过如下步骤S210至步骤S220确定:

步骤S210,或处理子单元140获取目标浮点数的带偏阶的阶码,并对所述带偏阶的阶码进行或操作,得到或操作结果。

步骤S220,若所述或操作结果为1,所述或处理子单元140确定所述目标浮点数的隐含整数位为1。

可以通过或处理子单元140来确定目标浮点数的隐含整数位。或处理子单元140可以获取以二进制形式表示的带偏阶的阶码,并对该带偏阶的阶码逐位进行或操作,得到或操作结果。在或操作结果为1时,确定目标浮点数的隐含整数位为1。

可选地,请参见图6,或处理子单元140还可以执行如下步骤S230至步骤S240:

步骤S230,若所述或操作结果为0,所述或处理子单元140确定所述目标浮点数的隐含整数位为0。

步骤S240,所述对阶移位器120将所述目标浮点数的尾数维持在小数部分,并在整数部分补0,得到新的目标浮点数,并将所述新的目标浮点数作为输出结果发送给所述第一反相器130。

若对带偏阶的阶码逐位进行或操作,得到的或操作结果为0,则可以将目标浮点数的尾数维持在小数部分,并在整数部分补0,得到新的目标浮点数,对阶移位器120可以将该新的目标浮点数发送给第一反相器130,以便反相器对隐含整数位为0的浮点数进行进一步的计算。

在本申请所提供的实施例中,应该理解到,所揭露设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。

以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 浮点数处理装置、浮点数加法装置及浮点数处理方法
  • 用于处理浮点数的系统、浮点数处理方法及装置
技术分类

06120112223970