乘法舍入实现方法和装置的制作方法

文档序号:6335232阅读:529来源:国知局
专利名称:乘法舍入实现方法和装置的制作方法
技术领域
本发明实施例涉及浮点计算技术,尤其涉及一种乘法舍入实现方法和装置。
背景技术
现代微处理器的浮点处理单元一般都包含一个兼容电气电子工程师协会 (Institute of Electrical and Electronics Engineers,简称 IEEE) 754标准的浮,点乘法 器。由于30%以上的浮点操作是浮点乘法操作,所以浮点乘法器是决定浮点处理单元性能 的关键。浮点乘法通常包括译码、生成部分积、部分积压缩、生成结果、以及将结果按规定 模式进行舍入这几个步骤。浮点乘法在部分积压缩之后会得到进位保留形式(carry save) 的结果,即进位保留进位结果(carry)与和结果(sum)这样两个数字串。现有技术基于进 位结果与和结果得到最终舍入结果的方式是直接将进位结果与和结果相加按位相加,而后 对相加值进行舍入运算来得到舍入结果。舍入操作通常是根据待截去部分的数值选择是否 对未截去部分的最低位执行加1 (本文描述技术方案时所列出的数值,若未经特别说明,则 均表示为二进制数值)操作来实现的。但是,在进行本发明的研究过程中,发明人发现现有技术存在如下缺陷浮点数的
二进制表示形式为01. X_lX_2......x_(n_1)x_(n),其中η为自然数,在单精度计算中,规定η =
23,在双精度计算中,规定η = 52。浮点数的十进制取值范围为(2,1]。在进位结果与和结 果相加后,最高位可能产生进位,即发生溢出的情况。对于不溢出情况则按照上述方案对未 截去部分的最低位进行处理,但是当出现溢出情况时,数值需要右移一位,则应该对未截去 部分最低位的前一位进行处理。现有技术中,若由于舍入操作而导致溢出,那么就需要再进 行一次舍入操作,即将因溢出而右移的一位进行舍入操作,这样导致计算效率较低,影响了 浮点处理单元的性能。

发明内容
本发明实施例提供一种乘法舍入实现方法和装置,以提高浮点乘法器舍入操作的 执行效率,改善浮点处理单元的性能。本发明实施例提供了一种乘法舍入实现方法,包括分别获取浮点数进位保留形式的进位结果与和结果,其中,所述浮点数划分为高 位、L位、R位和黏着位,所述L位为保留部分的最低位,所述高位为保留部分除L位以外的 其余部分,所述R位为截去部分的最高位,所述黏着位为截去部分除R位以外的其余部分;将进位结果与和结果的高位和L位分别采用半加器相加,将R位采用全加器相加, 以获取二次进位结果与二次和结果,并同时获取所述高位相加后的高位溢出值,其中,所述 全加器采用根据当前舍入模式设定的输入进位值作为输入进位;根据当前舍入模式获取L位的进位值与和位值;将L位的和位值作为舍入结果的L位,当识别到L位的进位值为0时,将所述二次进位结果与二次和结果的高位相加之和作为舍入结果的高位,当识别到L位的进位值为1 时,将所述二次进位结果与二次和结果的高位相加之和再加1作为舍入结果的高位。 本发明实施例还提供了一种乘法舍入实现装置,包括至少L+2个半加器和一个全加器,用于分别获取浮点数进位保留形式的进位结果 与和结果,其中,所述浮点数划分为高位、L位、R位和黏着位,所述L位为保留部分的最低 位,所述高位为保留部分除L位以外的其余部分,所述R位为截去部分的最高位,所述黏着 位为截去部分除R位以外的其余部分,所述L+2个半加器用于进行所述进位结果与和结果 的高位和L位的相加操作,以获取二次进位结果与二次和结果,并同时获取所述高位相加 后的高位溢出值,所述全加器用于进行所述进位结果与和结果的R位的相加操作;输入进位存储器,用于存储所述输入进位值,为所述全加器提供输入进位;进位与和位获取模块,用于根据当前舍入模式获取L位的进位值与和位值;并行前缀加法器,用于计算获取所述二次进位结果与二次和结果的高位相加之 和,以及获取所述二次进位结果与二次和结果的高位相加之和加1 ;结果获取模块,用于将L位的和位值作为舍入结果的L位,当识别到L位的进位值 为0时,将所述二次进位结果与二次和结果的高位相加之和作为舍入结果的高位,当识别 到L位的进位值为1时,将所述二次进位结果与二次和结果的高位相加之和再加1作为舍 入结果的高位。本发明的技术方案,能够提高浮点乘法器舍入操作的执行效率,改善浮点处理单 元的性能。


图1为本发明实施例一提供的乘法舍入实现方法的流程图;图2为本发明实施例二提供的乘法舍入实现方法的流程图;图3为本发明实施例二提供的乘法舍入实现方法的运算示意图;图4为本发明实施例三提供的乘法舍入实现方法中判断平局情况的流程图;图5为本发明实施例四提供的乘法舍入实现方法的流程图;图6为本发明实施例五提供的乘法舍入实现方法的流程图;图7为本发明实施例提供的乘法舍入实现方法的运算示意图。
具体实施例方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。浮点乘法器的舍入操作按照标准数据格式分为单精度浮点舍入和双精度浮点舍 入,按照舍入模式则分为舍入到最近(Round to Nearest,简称RN)、舍入到正无穷(Round to+Infinite)、舍入到负无穷(Round to-Infinite)和舍入到零(Round to Zero)。舍入 到正无穷即将正数舍入到正无穷,舍入到负无穷即负数舍入到负无穷,由于表示正负的符 号不参与舍入操作,所以舍入到正无穷和舍入到负无穷可以统称为舍入到无穷(Round toInfinite,简称RN)。单精度、双精度、以及各种舍入模式都可以通过指令或者预配置来指 定,乘法器根据指定的模式进行操作。 浮点数可以通过指数位和尾数位01. X_lX_2......x_(n_1)x_(n)来表示。按照规定,单
精度浮点数的尾数位可以表示为01. X_lX_2......x_22x_23,其浮点精度值的位数为23,双精度
浮点数的尾数位可以表示为01. X_lX_2......x_51x_52,其浮点精度值的位数为52。本发明实
施例以单精度和双精度浮点数为例进行说明,但是本领域技术人员可以理解对于浮点精度 值的位数为其他数值时,本发明的技术方案同样适用。本发明实施例主要涉及乘法运算中的舍入操作,可视为已知浮点数进位保留形式 的进位结果(carry)与和结果(sum),且舍入操作不受进位结果与和结果获取形式的限制。 进位结果与和结果是部分积的压缩结果,其形式通常为X1Xtl. X-lX-2......X-^dX-^。当两个浮点数相乘之后,其十进制取值范围为(4,1],其形式可以为
01· X-iX-2......X-(n-l)X-(n) Χ-1Χ-2......X-(n-l)X-(n)或川· X-^2......X—(n—Χ—(n)。 当部分积
压缩之后的十进制取值范围为(4,2]时,即后两种形式,超出了规定的标准精度数据范围, 称之为发生溢出(overflow),需要将进位结果与和结果的相加值右移一位,并对指数位加 1。由于结果右移,导致截去部分的位数发生了变化,所以在进行舍入过程中应考虑溢出的 情况。为描述方便,本文中定义浮点数尾数位的形式为01. Χ_ιΧ_2......浮点精
度值的位数为L,因此,浮点数舍入后保留部分的最低位为L位(Low),舍入后截去部分的最
高位称为R位(Round),截去部分除R位以外的部分χ_(κ+1)......χ-(2Μ)χ-(2 称为黏着位,保
留部分除L位以外的部分01. X_lX_2......x_a_D称为高位。具体计算时,黏着位的位数可能
更多,最低位的位数会大于2L。例如,双精度部分积的黏着位可以是X_53......X-K16X-K17,黏
着位的最低位并不影响本发明的实现。按照上述四段数位进行并行计算。在溢出情况下, 结果会右移,则L位和R位所对应的值也随之变化,将进位结果的L位值和R位值分别记为 Lc'和Rc',将和结果的L位值和R位值分别记为Ls'和Rs'。进位结果与和结果的高位 相加后的高位溢出值记为Rv,发生溢出时Rv等于1,不溢出时Rv等于0。基于上述设定,通过实施例对本发明的技术方案分别进行详细描述。实施例一图1为本发明实施例一提供的乘法舍入实现方法的流程图,本实施例的方法具体 包括如下步骤步骤110、分别获取浮点数进位保留形式的进位结果与和结果,如前所述,浮点数 划分为高位、L位、R位和黏着位,L位为保留部分的最低位,高位为保留部分除L位以外的 其余部分,R位为截去部分的最高位,黏着位为截去部分除R位以外的其余部分;步骤120、将进位结果与和结果的高位和L位分别采用半加器相加,将R位采用 全加器相加,以获取二次进位结果与二次和结果,并同时获取高位相加后的高位溢出值,其 中,全加器采用根据当前舍入模式设定的输入进位值Rin作为输入进位;其中,每个半加器仅将两个二进制数相加,而不考虑低位的进位值,相加得到进位 值与和位值,进位值进入二次进位结果的高一位,和位值进入二次和结果的当前位。半加器 的数量按照高位和L位的位数设置。全加器将三个二进制数相加,其中一个二进制数一般 是低位的进位值,作为输入进位来参与相加。通过将低位的进位值设置为0,也可以将全加器作为半加器使用。步骤120为舍入操作的一次压缩。 步骤130、根据当前舍入模式获取L位的进位值与和位值;步骤140、将L位的和位值作为舍入结果的L位,当识别到L位的进位值为0时,将 二次进位结果与二次和结果的高位相加之和作为舍入结果的高位,当识别到L位的进位值 为1时,将二次进位结果与二次和结果的高位相加之和再加1作为舍入结果的高位。在步骤120获取二次进位结果与二次和结果之后,还可以首先采用并行前缀加 法器(Parallel-Prefix Adder)来同时计算获取二次进位结果(carryl)与二次和结果 (suml)的高位相加之和(suml+carryl),以及获取二次进位结果(carryl)与二次和结果 (suml)的高位相加之和再加1 (suml+carryl+1)。并行前缀加法器可以一次性得到两数之和,以及两数之和再加1,以供后续根据L 位的进位值进行选择即可,提高了计算效率。或者,也可以在步骤140中,在识别L位的进位值之后,再计算获取对应的高位相 加结果。本实施例的技术方案是首先计算得到一个无限精度的数值,再舍入到目标精度, 因此能够适用于IEEE754标准的规定。本发明的技术方案可具体适用于舍入到最近、舍入到正无穷、舍入到负无穷和舍 入到零等多种舍入模式,下面通过实施例分别进行介绍。实施例二图2为本发明实施例二提供的乘法舍入实现方法的流程图,本实施例具体为浮点 数按照舍入到最近模式进行舍入的方法。舍入到最近可以通过舍入到最近的上限(Round to Nearest Up,简称RNU)再修正L位来实现。对于L位的修正,根据发明人在实现本发明 过程中的研究发现舍入到最近可以通过在舍入结果的R位加1,并在舍入结果的黏着位均 为0时将舍入结果的L位置0来得到。对于溢出和不溢出的两种情况,不溢出时,应在舍入 结果的R位加1 ;在溢出时,应在L位,即R位的高一位加1,相当于在R位上加10,然后将 舍入结果右移一位。本实施例实现在一次压缩过程中执行舍入操作。在R位需要加的值可称为输入进位值,记作Rin,在不同舍入模式下,Rin设置为不 同数值。在舍入到最近模式下,Rin设定为1。上述思路为舍入到最近模式的计算思路,为了提高计算效率,本实施例采用在进 位结果与和结果相加的过程中,结合软硬件来进行舍入到最近模式的操作,相加过程如图3 所示,具体包括如下流程步骤210、分别获取浮点数进位保留形式的进位结果(carry[1:_2L])与和结果 (sum[l -2L]),如前所述,浮点数划分为高位、L位、R位和黏着位;步骤220、将进位结果与和结果的高位(carry [1:-(L-I)])与和结果 (sum[l:-(L-l)])和L位(Lc'和Ls')分别采用半加器相加,将进位结果与和结果的R位 (Rc'和Rs')采用全加器相加,以获取二次进位结果(carryl)与二次和结果(suml),并 同时获取高位相加后的高位溢出值Rv。其中,全加器采用根据当前舍入模式设定的输入进 位值Rin作为输入进位,本实施例中,Rin = 1 ;在本实施例中,还需要进一步执行步骤230、获取进位结果与和结果的R位相加后的进位值,可称为R位进位输出值,记为Cout[-R]。后续符号Cout[-m]均可表示m位相加所产生的m位进位输出值,m为自然 数。R位进位输出值Cout [-R]可以通过超前进位链来生成,这样可以提高速度,避免生成 Cout [-R]的逻辑作为关键路径而成为舍入操作的瓶颈。 步骤240、根据当前舍入模式获取L位的进位值与和位值,在本实施例中,当识别 到当前舍入模式为舍入到最近的模式时,步骤240具体为根据二次进位结果的L位值Lc、二次和结果中的L位值Ls和R位值Rs、高位溢出 值Rv、以及R位进位输出值Cout [-R],识别L位的进位值与和位值。在上述步骤240中,根据Lc、Ls、R、Rv和Cout [-R]来识别L位的进位值与和位值 的操作实际上是进行相加的操作。如图3所示,R、Rv和Cout [-R]所处的位数相同,为相同 权重值,R、Rv和Cout [-R]相加所产生的进位值与Lc和Ls的位数相同,为相同权重。L位 的进位值,即R、Rv和Cout [-R]相加所产生的进位值再与Lc和Ls相加后最终得到的进位 值。因此,L位的进位值可以通过硬件全加器将Lc、Ls、R、Rv和Cout[-R]按照权重相加来 获得。为简化硬件,也可以采用查表的方式,在对应关系表中查询获取对应的L位的进位 值。在对应关系表中,Rs、Rv和Cout[-R]相加后的进位值,再与Lc和Ls相加获得的进位 值与L位的进位值对应。Lc、Ls、R、Rv和Cout [-R]的值与L位的进位值的对应关系如表1 所示表 权利要求
1.一种乘法舍入实现方法,其特征在于,包括分别获取浮点数进位保留形式的进位结果与和结果,其中,所述浮点数划分为高位、L 位、R位和黏着位,所述L位为保留部分的最低位,所述高位为保留部分除L位以外的其余 部分,所述R位为截去部分的最高位,所述黏着位为截去部分除R位以外的其余部分;将进位结果与和结果的高位和L位分别采用半加器相加,将R位采用全加器相加,以获 取二次进位结果与二次和结果,并同时获取所述高位相加后的高位溢出值,其中,所述全加 器采用根据当前舍入模式设定的输入进位值作为输入进位;根据当前舍入模式获取L位的进位值与和位值;将L位的和位值作为舍入结果的L位,当识别到L位的进位值为0时,将所述二次进位 结果与二次和结果的高位相加之和作为舍入结果的高位,当识别到L位的进位值为1时,将 所述二次进位结果与二次和结果的高位相加之和再加1作为舍入结果的高位。
2.根据权利要求1所述的方法,其特征在于,在获取所述二次进位结果与二次和结果 之后,还包括采用并行前缀加法器同时计算获取所述二次进位结果与二次和结果的高位相加之和, 以及获取所述二次进位结果与二次和结果的高位相加之和加1。
3.根据权利要求1所述的方法,其特征在于,还包括当识别到当前舍入模式为舍入到最近时,将输入进位值设置为1 ;当识别到当前舍入模式位舍入到零时,将输入进位值设置为0。
4.根据权利要求3所述的方法,其特征在于,根据当前舍入模式获取L位的进位值包括根据二次进位结果的L位值Lc、二次和结果的L位值Ls和R位值Rs、高位溢出值Rv、 以及二次进位结果与二次和结果中的R位进位输出值Cout [-R],在对应关系表中查询获取 对应的L位的进位值;所述对应关系表中,所述Rs、Rv和Cout[-R]相加后的进位值,再与所 述Lc和Ls相加获得的进位值与所述L位的进位值对应。
5.根据权利要求3所述的方法,其特征在于,根据当前舍入到最近的舍入模式获取L位 的和位值包括按照如下公式计算所述L位的和位值Lsb Lsb = Ls'Lc"(R&Rv|Cout[-R])&Rv|R&Cout[-R]其中,Ls为二次和结果的L位值;Lc为二次进位结果的L位值;Rv为所述高位溢出值; Rs为二次和结果的R位值;Cout[-R]为二次进位结果与二次和结果的R位相加的进位值; “表示异或运算;&表示与运算;I表示或运算。
6.根据权利要求3所述的方法,其特征在于,根据当前舍入到零的舍入模式获取L位的 和位值包括按照如下公式计算所述L位的和位值Lsb Lsb = Ls"Cout[_L]其中,Ls为二次和结果的L位值;Cout[-L]为二次进位结果与二次和结果的最低位至 L+1位相加的进位值Γ表示异或运算。
7.根据权利要求3所述的方法,其特征在于,当识别到当前舍入模式为舍入到最近时, 在获取所述舍入结果之后,还包括当识别到所述高位溢出值为0时,确定判断位数K等于R,当识别到所述高位溢出值为 1时,确定所述判断位数K等于L ;判断所述黏着位的最低位至K+1位是否全为零,若是,则确定零标志Z等于0,若否,则 确定零标志Z等1 ;按照如下公式计算平局判断信号tie_c0nd tie—cond = ((sum[-K] "carry [-K] "Cout [-K]) &Z-(K+1))其中, 代表非运算;sum[-K]为二次和结果的K位值;Carry[-K]为二次进位结果的K 位值;Cout[-K])为二次进位结果与二次和结果的最低位至K+1位相加的进位值;当判断出所述平局判断信号tie_COnd等于1时,将所述舍入结果的L位置0,当判断出 所述平局判断信号tie_COnd等于0时,保持所述舍入结果的L位不变。
8.根据权利要求7所述的方法,其特征在于,在获取所述舍入结果之后,判断所述黏着 位的最低位至K+1位是否全为零,若是,则确定零标志Z等于0,若否,则确定零标志Z等1 包括按照如下公式计算所述黏着位的最低位至K位中各位的快速预测值ζ [i] z [i]= ((sum[i] "carry[i]) “ (sum[i-l] | carry[i-l])) ~2n < i < - (K+1) 其中,2n为所述黏着位最低位的位数值; 按照如下公式进行按位相与运算得到Κ+1位的所述零标志Z Ζ_(κ+1) = &ζ[-(Κ+1) :-2η]。
9.根据权利要求1所述的方法,其特征在于还包括当识别到当前舍入模式为舍入到无穷时,将输入进位值设置为0 ; 且在获取到浮点数进位保留形式的进位结果与和结果之后,还包括在所述进位结果 与和结果的黏着位的各位分别加1。
10.根据权利要求9所述的方法,其特征在于,根据当前舍入到无穷的舍入模式获取L 位的进位值包括根据二次和结果的L位值Ls、高位溢出值Rv、以及二次进位结果与二次和结果最低位 至L+1位相加的进位值Cout [-L],在对应关系表中查询获取对应的L位的进位值;所述对 应关系表中,所述Ls、Rv和Cout [-L]相加后的进位值与所述L位的进位值对应。
11.根据权利要求9所述的方法,其特征在于,根据当前舍入到无穷的舍入模式获取L 位的和位值包括按照如下公式计算所述L位的和位值Lsb Lsb = Ls"Cout[-L])"Rv其中,Ls为二次和结果的L位值;Cout[-(L+l)]为二次进位结果与二次和结果的最低 位至L+1位相加的进位值Γ表示异或运算。
12.根据权利要求4 8、10 11任一所述的方法,其特征在于所述Cout[i]值采用 超前生成链计算获取,其中,i为自然数。
13.—种乘法舍入实现装置,其特征在于,包括至少L+2个半加器和一个全加器,用于分别获取浮点数进位保留形式的进位结果与和 结果,其中,所述浮点数划分为高位、L位、R位和黏着位,所述L位为保留部分的最低位,所 述高位为保留部分除L位以外的其余部分,所述R位为截去部分的最高位,所述黏着位为截去部分除R位以外的其余部分,所述L+2个半加器用于进行所述进位结果与和结果的高位 和L位的相加操作,以获取二次进位结果与二次和结果,并同时获取所述高位相加后的高 位溢出值,所述全加器用于进行所述进位结果与和结果的R位的相加操作; 输入进位存储器,用于存储所述输入进位值,为所述全加器提供输入进位; 进位与和位获取模块,用于根据当前舍入模式获取L位的进位值与和位值; 并行前缀加法器,用于计算获取所述二次进位结果与二次和结果的高位相加之和,以 及获取所述二次进位结果与二次和结果的高位相加之和加1 ;结果获取模块,用于将L位的和位值作为舍入结果的L位,当识别到L位的进位值为 0时,将所述二次进位结果与二次和结果的高位相加之和作为舍入结果的高位,当识别到L 位的进位值为1时,将所述二次进位结果与二次和结果的高位相加之和再加1作为舍入结 果的高位。
14.根据权利要求13所述的装置,其特征在于L = 52,采用输入进位置0的全加器作 为第24个半加器。
15.根据权利要求13所述的装置,其特征在于,还包括注入模块,用于在所述进位结果与和结果的黏着位的各位分别加1。
全文摘要
本发明公开了一种乘法舍入实现方法和装置。该方法包括分别获取浮点数进位保留形式的进位结果与和结果;将进位结果与和结果的高位和L位分别采用半加器相加,将R位采用全加器相加,以获取二次进位结果与二次和结果,并同时获取高位相加后的高位溢出值;根据当前舍入模式获取L位的进位值与和位值;将L位的和位值作为舍入结果的L位,当识别到L位的进位值为0时,将二次进位结果与二次和结果的高位相加之和作为舍入结果的高位,当识别到L位的进位值为1时,将二次进位结果与二次和结果的高位相加之和再加1作为舍入结果的高位。本发明能够提高浮点乘法器舍入操作的执行效率,改善浮点处理单元的性能。
文档编号G06F7/57GK102004627SQ201010532090
公开日2011年4月6日 申请日期2010年11月1日 优先权日2010年11月1日
发明者周昔平 申请人:深圳市海思半导体有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1