首页> 中国专利> 一种浮点数尾数前导零检测方法及装置

一种浮点数尾数前导零检测方法及装置

摘要

本发明提供一种浮点数尾数前导零检测方法及装置,其中浮点数尾数前导零检测方法,包括:将每个取值为1的尾数在浮点数的所有尾数中的位置分别以一种进制下的数据表示;从所有在所述进制下的数据中选取最大数据,其中所述最大数据是取值大于其他数据取值的数据;依据所述浮点数的所有尾数总个数和所述最大数据,得到所述浮点数的尾数中前导零的个数。也就是说本发明将寻找取值为1的尾数的位置转换为寻找最大数据的过程,这样就不需要依次对取值为1的尾数的位置进行判断,减少判断导致的检测延迟,提高检测速度。

著录项

  • 公开/公告号CN105786444A

    专利类型发明专利

  • 公开/公告日2016-07-20

    原文格式PDF

  • 申请/专利权人 联想(北京)有限公司;

    申请/专利号CN201410829438.0

  • 发明设计人 姜莹;

    申请日2014-12-26

  • 分类号G06F7/57(20060101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人王宝筠

  • 地址 100085 北京市海淀区上地信息产业基地创业路6号

  • 入库时间 2023-06-19 00:06:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-10-12

    授权

    授权

  • 2016-08-17

    实质审查的生效 IPC(主分类):G06F7/57 申请日:20141226

    实质审查的生效

  • 2016-07-20

    公开

    公开

说明书

技术领域

本发明涉浮点数处理技术领域,特别涉及一种浮点数尾数前导零检测 方法及装置。

背景技术

与定点数运算相比,浮点数运算具有运算范围宽和精度高的优点,因 此浮点数运算在各种工程和算法中有着广泛的应用。但是浮点数运算过 程复杂,而浮点数尾数前导零的检测是浮点数运算中一个关键的环节, 对整个运算速度有重要的影响。

目前常用的浮点数格式为IEEE754(InstituteofElectricaland ElectronicsEngineers,美国电气和电子工程师协会)标准,浮点数精度包 括:32位单精度,64位双精度和80位以上扩展双精度。对这些精度的 浮点数尾数前导零检测的过程是:首先将尾数进行分组,每组依次执行 一个周期,每个周期内从尾数的高位到低位依次判断1的位置;其次从 尾数的最高位所在组进行判断,当尾数的最高位所在组全是零时,对下 一个组进行判断,当尾数的最高位所在组不全是零时,则依次从该组的 最高位到最低位寻找尾数为1的位置;最后前导零的位置即是尾数总个 数减去尾数为1的位置。

以32位单精度浮点数为例,将尾数分为5组,即f0-f3为第一组,f4-f7 为第二组,依次类推,f20-f22为第5组,在检测时首先判断f20-f22是否 全是零,如果全是零,则再执行下一周期判断f16-f19。反之,如果f20-f22 不全是零,那么依次从f22到f20判断尾数为1的位置,然后再以尾数总 个数减去尾数为1的位置即为前导零的个数。从这一过程可以看出寻找 数值为1的最左边尾数的位置需要执行5个周期,且在每个周期内进行4 次判断。但是对于64位双精度浮点数来说,为了加快运算速度,则需要 增加每个分组中尾数的个数,从而增加每个周期的判断次数,降低检测 速度。

发明内容

有鉴于此,本发明提供一种浮点数尾数前导零检测方法及装置,用 于提高检测速度。技术方案如下:

本发明提供一种浮点数尾数前导零检测方法,包括:

将每个取值为1的尾数在浮点数的所有尾数中的位置分别以一种进 制下的数据表示;

从所有在所述进制下的数据中选取最大数据,其中所述最大数据是取 值大于其他数据取值的数据;

依据所述浮点数的所有尾数总个数和所述最大数据,得到所述浮点数 的尾数中前导零的个数。

优选地,在从所有在所述进制下的数据中选取最大数据之前,所述方 法还包括:将每个取值为0的尾数在浮点数的所有尾数中的位置以0表 示。

优选地,在将每个取值为1的尾数在浮点数的所有尾数中的位置分别 以一种进制下的数据表示之前,所述方法还包括:按照尾数在浮点数的 所有尾数中位置的从高到低顺序,将所述浮点数中的尾数划分为至少两 组。

优选地,所述将每个取值为1的尾数在浮点数的所有尾数中的位置分 别以一种进制下的数据表示包括:将每个取值为1的尾数在浮点数的所 有尾数中的位置分别以二进制数据表示。

优选地,所述从所有在所述进制下的数据中选取最大数据包括:

按照所述二进制数据中位数从高到低顺序,依次选取每个所述二进制 数据的第i位数据,其中i为非负整数,且i=n-1,n-2,......,0,n为所述 二进制数据的总位数;

基于所有所述二进制数据中所述第i位数据和第i位数据的反馈状态 位,从所有所述第i位数据中选择出所述最大数据的第i位数据,其中所 述反馈状态位用于指示第i位数据和第i位数据之前输入的数据所组成的 二进制数据是否为最大值;

在经过n次选择后得到所述最大数据。

本发明还提供一种浮点数尾数前导零检测装置,包括:

第一转换单元,用于将每个取值为1的尾数在浮点数的所有尾数中的 位置分别以一种进制下的数据表示;

选取单元,用于从所有在所述进制下的数据中选取最大数据,其中所 述最大数据是取值大于其他数据取值的数据;

检测单元,用于依据所述浮点数的所有尾数总个数和所述最大数据, 得到所述浮点数的尾数中前导零的个数。

优选地,所述装置还包括:第二转换单元,用于将每个取值为0的尾 数在浮点数的所有尾数中的位置以0表示。

优选地,所述装置还包括:划分单元,用于按照尾数在浮点数的所有 尾数中位置的从高到低顺序,将所述浮点数中的尾数划分为至少两组。

优选地,所述第一转换单元将每个取值为1的尾数在浮点数的所有尾 数中的位置分别以二进制数据表示。

优选地,所述选取单元包括:选取子单元和选择子单元;其中,

所述选取子单元,用于按照所述二进制数据中位数从高到低顺序,依 次选取每个所述二进制数据的第i位数据,其中i为非负整数,且 i=n-1,n-2,......,0,n为所述二进制数据的总位数;

所述选择子单元,用于基于所有所述二进制数据中所述第i位数据和 第i位数据的反馈状态位,从所有所述第i位数据中选择出所述最大数据 的第i位数据,在经过n次选择后得到所述最大数据,其中所述反馈状态 位用于指示第i位数据和第i位数据之前输入的数据所组成的二进制数据 是否为最大值。

从上述技术方案可以看出,本发明提供的浮点数尾数前导零检测方 法及装置通过将每个取值为1的尾数在浮点数的所有尾数中的位置分别 以一种进制下的数据表示,然后从所有数据中选取最大数据,基于浮点 数的所有尾数总个数和最大数据即可以得到浮点数的尾数中前导零的个 数,也就是说本发明将寻找取值为1的尾数的位置转换为寻找最大数据 的过程,这样就不需要依次对取值为1的尾数的位置进行判断,减少判 断导致的检测延迟,提高检测速度。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述 中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅 仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创 造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的浮点数尾数前导零检测方法的第一种流 程图;

图2为本发明实施例提供的浮点数尾数前导零检测方法的第二种流 程图;

图3为本发明实施例提供的浮点数尾数前导零检测方法的第三种流 程图;

图4为本发明实施例提供的比较器的一种结构示意图;

图5为图4所示比较器中数据输入输出情况的一种示意图;

图6为图4所示比较器中数据输入输出情况的另一种示意图;

图7为图4所示比较器中数据输入输出情况的再一种示意图;

图8为本发明实施例提供的浮点数尾数前导零检测方法中最大数据 选取的示意图;

图9为本发明实施例提供的浮点数尾数前导零检测装置的第一种结 构示意图;

图10为本发明实施例提供的浮点数尾数前导零检测装置的第二种结 构示意图;

图11为本发明实施例提供的浮点数尾数前导零检测装置的第三种结 构示意图;

图12为本发明实施例提供的浮点数尾数前导零检测装置中选取单元 的一种结构示意图;

图13为本发明实施例提供的浮点数尾数前导零检测装置中选取单元 的另一种结构示意图。

具体实施方式

本发明实施例提供的浮点数尾数前导零检测方法的核心思想之一 是:以某种进制下的数据表示取值为1的尾数在浮点数的所有尾数中的 位置,将寻找取值为1的尾数的位置转换为寻找最大数据的过程,这样 就不需要依次对取值为1的尾数的位置进行判断,减少判断导致的检测 延迟,提高检测速度。

为了使本领域技术人员更好的理解本发明,下面将结合本发明实施 例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显 然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。 基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前 提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1,其示出了本发明实施例提供的浮点数尾数前导零检测方 法的第一种流程图,用于以较快的速度检测出浮点数中前导零的个数, 可以包括以下步骤:

101:将每个取值为1的尾数在浮点数的所有尾数中的位置分别以一 种进制下的数据表示。

在本发明实施例中,每个取值为1的尾数在浮点数的所有尾数中的位 置可以以二进制、八进制、十进制和十六进制中的任意一种进制下的数 据进行表示。

假设一个浮点数的4位尾数是0101,第一个1位于所有尾数中的第 三位,第二个1则位于所有尾数中的第一位,则在以二进制数据表示这 两个取值为1的尾数在所有尾数中的位置时,则表示这两个取值为1的 尾数在所有尾数中的位置的二进制数据分别为011和001。那么这两个二 进制数据可以利用三位寄存器来表示。如果用十进制来表示,则这两个 取值为1的尾数在所有尾数中的位置的十进制下的数据分别为3和1。

102:从所有在进制下的数据中选取最大数据,其中最大数据是取值 大于其他数据取值的数据。

从上述浮点数的4位尾数是0101的例子来看,第三位取值为1的尾 数之前则是该浮点数中前导零的个数,并且第三位为取值为1的尾数在 浮点数的所有尾数中位置最大的尾数,因此在采用某种进制下的数据表 示每个取值为1的尾数在浮点数的所有尾数中的位置,需要进一步从所 有在进制下的数据中选取最大数据,这样后续就可以基于浮点数的所有 尾数总个数和最大数据得到浮点数的尾数中前导零的个数。

103:依据浮点数的所有尾数总个数和最大数据,得到浮点数的尾数 中前导零的个数。从上述浮点数的4位尾数是0101的例子来看,第三位 取值为1的尾数之前则是该浮点数中前导零的个数,因此在依据浮点数 的所有尾数总个数和最大数据得到前导零的个数时,可以直接将浮点数 的所有尾数总个数减去最大数据,得到的差值即是浮点数的尾数中前导 零的个数。

从上述技术方案可以看出,本发明实施例提供的浮点数尾数前导零 检测方法通过将每个取值为1的尾数在浮点数的所有尾数中的位置分别 以一种进制下的数据表示,然后从所有数据中选取最大数据,基于浮点 数的所有尾数总个数和最大数据即可以得到浮点数的尾数中前导零的个 数,也就是说本发明实施例将寻找取值为1的尾数的位置转换为寻找最 大数据的过程,这样就不需要依次对取值为1的尾数的位置进行判断, 减少判断导致的检测延迟,提高检测速度。

请参阅图2,其示出了本发明实施例提供的浮点数尾数前导零检测方 法的第二种流程图,在图1基础上还包括以下步骤:

104:将每个取值为0的尾数在浮点数的所有尾数中的位置以0表示。 这样在选取最大数据时,可以直接将取值为0的尾数排除,不需要再将 表示取值为0的尾数在所有尾数中的位置的数据与表示取值为1的尾数 在所有尾数中的位置的数据进行比较,减少比较次数。

此外由于每个取值为0的尾数在浮点数的所有尾数中的位置以0表 示,所以在检测浮点数的尾数中前导零的个数时还可以通过检测表示每 个取值为0的尾数在浮点数的所有尾数中的位置的总个数来确定前导零 的个数,其中表示每个取值为0的尾数在浮点数的所有尾数中的位置的 总个数即是浮点数的尾数中前导零的个数。

请参阅图3,其示出了本发明实施例提供的浮点数尾数前导零检测方 法的第三种流程图,可以包括以下步骤:

301:按照尾数在浮点数的所有尾数中位置的从高到低顺序,将浮点 数中的尾数划分为至少两组。例如在将浮点数中的尾数划分成两组时, 记为第一组和第二组,其中第一组中的尾数为位置从最高位到中间位的 尾数,第二组中的尾数则是从中间位到最低位的尾数。当所有尾数总个 数N为偶数时,中间位为:取值为N/2对应的位置;当所有尾数总个数 N为奇数时,中间位为:取值为(N-1)/2对应的位置或者取值为(N+1) /2对应的位置。

由于所划分的组按照尾数在浮点数的所有尾数中位置的从高到低顺 序划分,所以在后续进行最大数据选取时,可以首先从第一组数据中选 取,在第一组数据中选取到最大数据后无需在对第二组数据进行判断, 节省选取时间,进一步提高检测速度。

302:将每个取值为1的尾数在浮点数的所有尾数中的位置分别以一 种进制下的数据表示。

在本发明实施例中,每个取值为1的尾数在浮点数的所有尾数中的位 置可以以二进制、八进制、十进制和十六进制中的任意一种进制下的数 据进行表示。

假设一个浮点数的4位尾数是0101,第一个1位于所有尾数中的第 三位,第二个1则位于所有尾数中的第一位,则在以二进制数据表示这 两个取值为1的尾数在所有尾数中的位置时,则表示这两个取值为1的 尾数在所有尾数中的位置的二进制数据分别为011和001。那么这两个二 进制数据可以利用三位寄存器来表示。如果用十进制来表示,则这两个 取值为1的尾数在所有尾数中的位置的十进制下的数据分别为3和1。

303:将每个取值为0的尾数在浮点数的所有尾数中的位置以0表示。 这样在选取最大数据时,可以直接将取值为0的尾数排除,不需要再将 表示取值为0的尾数在所有尾数中的位置的数据与表示取值为1的尾数 在所有尾数中的位置的数据进行比较,减少比较次数。

304:从所有在进制下的数据中选取最大数据,其中最大数据是取值 大于其他数据取值的数据。

305:依据浮点数的所有尾数总个数和最大数据,得到浮点数的尾数 中前导零的个数。

其中步骤304和305:与图1所示浮点数尾数前导零检测方法中步骤 102和103相同,对此本发明实施例不再阐述。

通过上述技术方案,按照尾数在浮点数的所有尾数中位置的从高到低 顺序,将浮点数中的尾数划分为至少两组,这样在选取最大数据时可以 优先从位置为最高位的尾数所在组进行选取,当从位置为最高位的尾数 所在组内选取到最大数据后无需在对其他组内数据进行判断,节省选取 时间,进一步提高检测速度。

在上述所有方法实施例中,可以采用二进制数据来表示每个取值为1 的尾数在浮点数的所有尾数中的位置,这样在后续选取最大数据时可以 通过一些简单的逻辑运算来选取,降低成本。

其中从所有二进制数据中选取最大数据的一种可行方式是:按照二进 制数据中位数从高到低顺序,依次选取每个二进制数据的第i位数据,其 中i为非负整数,且i=n-1,n-2,......,0,n为二进制数据的总位数;基于 所有所述二进制数据中所述第i位数据和第i位数据的反馈状态位,从所 有所述第i位数据中选择出所述最大数据的第i位数据,其中所述反馈状 态位用于指示第i位数据和第i位数据之前输入的数据所组成的二进制数 据是否为最大值;在经过n次选择后得到最大数据。具体过程如下:

每从二进制数据中选取一个第i位数据,将所有第i位数据和各自的 反馈状态位一起写入到比较器中,由比较器选取出一个第i位数据,该第 i位数据即是最大数据的第i位数据,这样在轮询n次后比较器选取出最 大数据,从而完成从所有二进制数据中选取最大数据的过程。

在本发明实施例中,比较器可以由一些简单的逻辑运算单元组成, 其一种可行结构如图4所示,包括与二进制数据的总个数相同的与门11、 异或非门12和选择器13、一个或门14。其中,每个与门11的第一输入 端输入一个二进制数据的第i位数据,每个与门11的第二输入端连接各 自对应的选择器13的输出端,每个与门11的输出端连接各自对应的一 个异或非门12的第一输入端;每个异或非门12的第二输入端连接或门 14的输出端;每个或门14的输出端连接各自对应的选择器13的第一输 入端,每个选择器13的第二输入端输入0,且每个选择器13的第三输入 端连接各自的输出端。或门14的输入端个数与二进制数据的总个数相同, 且每个输入端连接一个与门11的输出端,二进制数据的第n-1位至第0 位经过图4所示比较器选取后得到所有二进制数据中的最大数据。

其中选择器13的输出端输出反馈状态位,反馈状态位的初始值为1, 并且当异或非门12的输出为1时,选择器13的输出为上一次输出的反 馈状态位;当异或非门12的输出为0时,选择器13的输出为0。

以上述4位尾数是0101时的两个取值为1的尾数在所有尾数中的位 置的二进制数据分别为011和001,比较器包括两个与门11、异或非门 12和选择器13、一个或门14,从最高位——第二位开始选取这两个二进 制数据中的第二位数据写入比较器中,每个逻辑运算输入输出情况如图5 所示,可以看出经过或门14后得到输出0,两个选择器13的输出为上一 次输出的反馈状态位(初始值1),此时两个选择器13的输出为第二次选 择的与门11的第二输入端的输入值。

将第一位数据分别送至比较器后,每个逻辑运算输入输出情况如图6 所示,可以看出第一位数据经过或门14后得到输出1,与二进制数据011 对应的选择器13的输出为上一次输出的反馈状态位(初始值1),与二进 制数据001对应的选择器13的输出为0。

将第0位数据分别送至比较器后,每个逻辑运算输入输出情况如图7 所示,可以看出第二位数据经过或门14后得到输出1,至此比较器输出 的数据为011,即是两个二进制数据中的最大数据。

从上述选取最大数据过程可以看出,对于4位尾数可以采用3位二 进制数据来表示,这样比较器通过三次选择周期即可以得到最大数据, 从而得到浮点数的尾数中前导零的个数。那么对于32位浮点数来说,其 尾数总个数为22个,则可以采用5位二进制数据进行表示,这样比较器 通过五次选择周期即可以得到浮点数的尾数中前导零的个数,与现有技 术中需要五个周期并且每个周期进行四次判断方式来说提供检测速度。

在本发明实施例中,从所有二进制数据中选取最大数据的另一种可 行方式是:在将浮点数中尾数进行分组的前提下,对包括最高位的尾数 的组进行处理来得到最大数据,具体过程可以参阅图8所示,包括以下 步骤:

801:按照尾数在浮点数中位置的从高到低顺序,将浮点数中的尾数 划分为两组,记为第一组和第二组。其中第一组中的尾数为位置从最高 位到中间位的尾数,第二组中的尾数则是从中间位到最低位的尾数。当 所有尾数总个数N为偶数时,中间位为:取值为N/2对应的位置;当所 有尾数总个数N为奇数时,中间位为:取值为(N-1)/2对应的位置或者 取值为(N+1)/2对应的位置。

802:通过选择器按照位数的从高到低顺序,依次选取第一组内每个 二进制数据的前n-1位数据中第i位数据,其中i为非负整数,且 i=n-1,n-2,......,1,n为二进制数据的总位数。

803:基于所有二进制数据中第i位数据和第i位数据的反馈状态位, 从所有第i位数据中选取出最大值{bn-1,bn-2,......,b1}的第i位数据,在经过 n-1次选择后得到最大值{bn-1,bn-2,......,b1},其中反馈状态位用于指示第i 位数据和第i位数据之前输入的数据所组成的二进制数据是否为最大值 最大值{bn-1,bn-2,......,b1}为所有二进制数据中前n-1位数据中的最大值。

以32位浮点数来说,其尾数总个数为22个,在经过步骤501划分后 每个组内包括11个尾数,则对每个尾数可以采用4位二进制数据进行表 示。每次选择器会从11个二进制数据中按照从第n-1位至第1位的顺序 选取11个第i位数据,每选取一次将11个第i位数据和各自的反馈状态 位写入到比较器中,以通过比较器从11个第i位数据中选择出一位第i 位数据。

当经过n-1次选择后得到所有二进制数据中前n-1位数据中的最大值 {bn-1,bn-2,......,b1},在本发明实施例中比较器的结构可以采用图4所示结构, 对每次选择的第i位数据和各自的反馈状态位进行选择以从11个第i位 数据中选择出一位数据。

804:当第一组内每个尾数取值为0时,获取在浮点数中位置为 {bn-1,bn-2,......,b1,0}的尾数的取值。

805:当位置为{bn-1,bn-2,......,b1,0}的尾数的取值为1时,最大数据为 {bn-1,bn-2,......,b1,1},否则最大数据为{bn-1,bn-2,......,b1,0}。

806:当第一组内每个尾数取值不全为0时,最大数据为 ({bn-1,bn-2,......,b1,0}+11)。

从图8所示方法来看,本发明实施例仅将第n-1位至第1位的数据发 送至比较器选择,相对于未分组的情况下,将未分组的五次选择周期缩 短为三次选择周期,进一步提高检测速度。

对于前述的各方法实施例,为了简单描述,故将其都表述为一系列 的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动 作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时 进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均 属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

与上述方法实施例相对应,本发明实施例还提供一种浮点数尾数前导 零检测装置,其结构示意图如图9所示,可以包括:第一转换单元81、 选取单元82和检测单元83。其中,

第一转换单元81,用于将每个取值为1的尾数在浮点数的所有尾数 中的位置分别以一种进制下的数据表示。

在本发明实施例中,每个取值为1的尾数在浮点数的所有尾数中的位 置可以以二进制、八进制、十进制和十六进制中的任意一种进制下的数 据进行表示。

假设一个浮点数的4位尾数是0101,第一个1位于所有尾数中的第 三位,第二个1则位于所有尾数中的第一位,则在以二进制数据表示这 两个取值为1的尾数在所有尾数中的位置时,则表示这两个取值为1的 尾数在所有尾数中的位置的二进制数据分别为011和001。那么这两个二 进制数据可以利用三位寄存器来表示。如果用十进制来表示,则这两个 取值为1的尾数在所有尾数中的位置的十进制下的数据分别为3和1。

选取单元82,用于从所有在进制下的数据中选取最大数据,其中最 大数据是取值大于其他数据取值的数据。

从上述浮点数的4位尾数是0101的例子来看,第三位取值为1的尾 数之前则是该浮点数中前导零的个数,并且第三位为取值为1的尾数在 浮点数的所有尾数中位置最大的尾数,因此在采用某种进制下的数据表 示每个取值为1的尾数在浮点数的所有尾数中的位置,需要选取单元82 进一步从所有在进制下的数据中选取最大数据,这样后续就可以基于浮 点数的所有尾数总个数和最大数据得到浮点数的尾数中前导零的个数。

检测单元83,用于依据浮点数的所有尾数总个数和最大数据,得到 浮点数的尾数中前导零的个数。从上述浮点数的4位尾数是0101的例子 来看,第三位取值为1的尾数之前则是该浮点数中前导零的个数,因此 在依据浮点数的所有尾数总个数和最大数据得到前导零的个数时,可以 直接将浮点数的所有尾数总个数减去最大数据,得到的差值即是浮点数 的尾数中前导零的个数。

从上述技术方案可以看出,本发明实施例提供的浮点数尾数前导零检 测装置通过将每个取值为1的尾数在浮点数的所有尾数中的位置分别以 一种进制下的数据表示,然后从所有数据中选取最大数据,基于浮点数 的所有尾数总个数和最大数据即可以得到浮点数的尾数中前导零的个 数,也就是说本发明实施例将寻找取值为1的尾数的位置转换为寻找最 大数据的过程,这样就不需要依次对取值为1的尾数的位置进行判断, 减少判断导致的检测延迟,提高检测速度。

请参阅图10,其示出了本发明实施例提供的浮点数尾数前导零检测 装置的第二种结构示意图,在图9基础上还可以包括:第二转换单元84, 用于将每个取值为0的尾数在浮点数的所有尾数中的位置以0表示。这 样在选取最大数据时,可以直接将取值为0的尾数排除,不需要再将表 示取值为0的尾数在所有尾数中的位置的数据与表示取值为1的尾数在 所有尾数中的位置的数据进行比较,减少比较次数。

此外由于每个取值为0的尾数在浮点数的所有尾数中的位置以0表 示,所以在检测浮点数的尾数中前导零的个数时还可以通过检测表示每 个取值为0的尾数在浮点数的所有尾数中的位置的总个数来确定前导零 的个数,其中表示每个取值为0的尾数在浮点数的所有尾数中的位置的 总个数即是浮点数的尾数中前导零的个数。

请参阅图11,其示出了本发明实施例提供的浮点数尾数前导零检测 装置的第三种结构示意图,在图10基础上还可以包括:划分单元85,用 于按照尾数在浮点数的所有尾数中位置的从高到低顺序,将浮点数中的 尾数划分为至少两组。

例如在将浮点数中的尾数划分成两组时,记为第一组和第二组,其中 第一组中的尾数为位置从最高位到中间位的尾数,第二组中的尾数则是 从中间位到最低位的尾数。当所有尾数总个数N为偶数时,中间位为: 取值为N/2对应的位置;当所有尾数总个数N为奇数时,中间位为:取 值为(N-1)/2对应的位置或者取值为(N+1)/2对应的位置。

由于所划分的组按照尾数在浮点数的所有尾数中位置的从高到低顺 序划分,所以在后续进行最大数据选取时,可以首先从第一组数据中选 取,在第一组数据中选取到最大数据后无需在对第二组数据进行判断, 节省选取时间,进一步提高检测速度。

在上述所有装置实施例中,第一转换单元81将每个取值为1的尾数 在浮点数的所有尾数中的位置分别以二进制数据表示。相对应的选取单 元82可以包括:选取子单元821和选择子单元822,如图12所示。其中,

选取子单元821,用于按照二进制数据中位数从高到低顺序,依次选 取每个二进制数据的第i位数据,其中i为非负整数,且i=n-1,n-2,......,0, n为二进制数据的总位数。

选择子单元822,用于基于所有二进制数据中第i位数据和第i位数 据的反馈状态位,从所有第i位数据中选择出最大数据中的第i位数据, 在经过n次选择后得到最大数据,其中反馈状态位用于指示第i位数据和 第i位数据之前输入的数据所组成的二进制数据是否为最大值。在本发明 实施例中,选择子单元822可以通过图4所示结构实现,对其如何得到 所有二进制数据中的最大数据可以参阅方法部分阐述,对此本发明实施 例不再说明。

此外在本发明实施例中,选取单元82还可以在将浮点数中尾数进行 分组的前提下,对包括最高位的尾数的组进行处理来得到最大数据,相 应的选取单元82的结构示意图可以参阅图13所示,可以包括:划分子 单元823、第一数据选择子单元824、第二数据选择子单元825、获取子 单元826、第一检测子单元827和第二检测子单元828。

其中,划分子单元823,用于按照尾数在浮点数中位置的从高到低顺 序,将浮点数中的尾数划分为两组,记为第一组和第二组。其中第一组 中的尾数为位置从最高位到中间位的尾数,第二组中的尾数则是从中间 位到最低位的尾数。当所有尾数总个数N为偶数时,中间位为:取值为 N/2对应的位置;当所有尾数总个数N为奇数时,中间位为:取值为(N-1) /2对应的位置或者取值为(N+1)/2对应的位置。

第一数据选择子单元824,用于通过选择器按照位数的从高到低顺 序,依次选取第一组内每个二进制数据的前n-1位数据中第i位数据,其 中i为非负整数,且i=n-1,n-2,......,1,n为二进制数据的总位数。

第二数据选择子单元825,用于基于所有二进制数据中第i位数据和 第i位数据的反馈状态位,从所有第i位数据中选取出最大值 {bn-1,bn-2,......,b1}的第i位数据,在经过n-1次选择后得到最大值 {bn-1,bn-2,......,b1},其中反馈状态位用于指示第i位数据和第i位数据之前 输入的数据所组成的二进制数据是否为最大值,最大值{bn-1,bn-2,......,b1}为 所有二进制数据中前n-1位数据中的最大值。

以32位浮点数来说,其尾数总个数为22个,在经过步骤501划分后 每个组内包括11个尾数,则对每个尾数可以采用4位二进制数据进行表 示。每次选择器会从11个二进制数据中按照从第n-1位至第1位的顺序 选取11个第i位数据,每选取一次将11个第i位数据和各自的反馈状态 位写入到第二数据选择子单元825中,以通过第二数据选择子单元825 从11个第i位数据中选择出一位第i位数据。

当经过n-1次选择后得到所有二进制数据中前n-1位数据中的最大值 {bn-1,bn-2,......,b1},在本发明实施例中第二数据选择子单元825的结构可以 采用图4所示结构,对每次选择的第i位数据和各自的反馈状态位进行选 择以从11个第i位数据中选择出一位数据。

获取子单元826,用于当第一组内每个尾数取值为0时,获取在浮点 数中位置为{bn-1,bn-2,......,b1,0}的尾数的取值。

第一检测子单元827,用于当位置为{bn-1,bn-2,......,b1,0}的尾数的取值为 1时,最大数据为{bn-1,bn-2,......,b1,1},否则最大数据为{bn-1,bn-2,......,b1,0}。

第二检测子单元828,用于当第一组内每个尾数取值不全为0时,最 大数据为({bn-1,bn-2,......,b1,0}+11)。

从上述选取单元的工作过程可以看出,本发明实施例仅将第n-1位至 第1位的数据发送至比较器选择,相对于未分组的情况下,将未分组的 五次选择周期缩短为三次选择周期,进一步提高检测速度。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述, 每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间 相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法 实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部 分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系 术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不 一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺 序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的 包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括 那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种 过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下, 由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方 法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种浮点数尾数前导零检测方法及装置进行了 详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述, 以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对 于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围 上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号