首页> 中国专利> 浮点规格化和反规格化

浮点规格化和反规格化

摘要

数据处理系统(510)包括,表示浮点数的尾数的第一组多个比特的第一比特域,和表示浮点数的指数的第二组多个比特的第二比特域。第一组多个比特被分成多个区,每个区包括多于一比特的第一组多个比特。前导零预告器(117)或者其他类型的前导比特指示电路被连接至各个区并确定第一组多个比特的前导比特的位置。连接规格化器(111)以接收包含前导比特的多个区中的区,规格化器可以规格化或者反规格化该区以产生规格化或者反规格化的浮点数。

著录项

  • 公开/公告号CN101263467A

    专利类型发明专利

  • 公开/公告日2008-09-10

    原文格式PDF

  • 申请/专利权人 飞思卡尔半导体公司;

    申请/专利号CN200680033724.X

  • 发明设计人 D·谭;T·H·恩古彦;

    申请日2006-09-06

  • 分类号G06F15/00(20060101);

  • 代理机构中国国际贸易促进委员会专利商标事务所;

  • 代理人郭放

  • 地址 美国得克萨斯

  • 入库时间 2023-12-17 20:45:19

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-11-28

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G06F15/00 变更前: 变更后: 申请日:20060906

    专利权人的姓名或者名称、地址的变更

  • 2010-07-21

    授权

    授权

  • 2008-10-29

    实质审查的生效

    实质审查的生效

  • 2008-09-10

    公开

    公开

说明书

技术领域

本发明涉及数据处理系统,特别是涉及浮点单元。

背景技术

执行浮点加或者浮点熔合乘加指令的浮点单元(FPU)可以处理 全精度的中间结果以产生符合IEEE754二进制浮点标准的规格化或 者反规格化结果。规格化包括通过左移位从全精度中间尾数去掉所有 无效比特(前导零)以及通过减去所去除的前导零的数量来调整指数。 当规格化结果的指数小于最小允许指数的值Emin且下溢(underflow) 被禁止时会需要反规格化。反规格化可包括通过右移来对全精度中间 尾数预设无效比特(前导零)以及通过加上对尾数预设的前导零的数 量直到指数等于Emin来调整指数。这样,对于规格化和反规格化,指 数通过减去规格化/反规格化的移位量而得到调整,该移位量可以为正 (表示左移)或者负(表示右移)。

该规格化/反规格化处理可以由规格化器执行。FPU中的全精度 中间结果通常由有符号数值进位传播加法器产生。在某些FPU中,加 法器和规格化器分别包含于称为加法级和规格化级的不同的流水线级 中。另外,在某些FPU中,利用前导零预告器,规格化器所用的移位 量与加法级中的加法器并行计算。

用于FPU中的规格化或者反规格化全精度中间结果的方法主要 有两种。第一种方法为“蛮力”法,其中LZA和规格化器宽度为全精度 中间尾数结果的完全宽度。在此情形下,规格化器的“宽度”指其可以 容纳的最大移位。蛮力方案可完全流水线化,但对于高速设计全宽度 规格化器需要两个或者更多个流水线级。为了支持反规格化结果,移 位量在开始移位之前必须受到限制或者钳位,否则设计在没有阻塞 (stall)的情况下不能完全流水线化。蛮力法的主要优点在于设计可 以在无需任何流水线阻塞的情况下完全流水线化。蛮力法的主要缺点 在于全宽度LZA和全宽度规格化器的大面积需求以及贯穿规格化级 和LZA的延迟的增加。增加的延迟与高度流水线化的高速设计中的迟 滞相当。

第二种方法为“叠代”法,其中使用了宽度缩减的规格化器和 LZA,根据最高有效比特的位置以及根据是否需要规格化或者反规格 化结果,尾数被多次反复馈送过规格化器。这需要流水线在叠代过程 中被阻塞。对于规格化,叠代的最大次数由非规格化全精度中间尾数 除以规格化器的宽度给出。此时,规格化器的“宽度”为其可容纳的最 大移位。LZA决定第一次通过规格化器的移位量。如果需要,使用与 规格化器并行的前导零检测器(LZD)决定随后要叠代的移位量。为 了产生反规格化结果,可以再次通过规格化器或者可以将移位量钳位。 叠代法的主要优点在于缩减了面积需求以及缩减了通过规格化级和 LZA的延迟。通过LZA的延迟得到缩减是因为LZA为串行操作,从 而宽度的缩减导致延迟的缩减。其主要缺点在于需要多次反复通过规 格化器,以及如果需要通过规格化器多于一次就需要阻塞前一个流水 线级。

有些设计通过使用单独的反规格化单元获得反规格化的结果。这 需要更多的硬件,使得指令的派遣和调度复杂化并对性能具有不利影 响。

所需的是改善了的浮点单元。

附图说明

通过参考附图,对于本领域技术人员而言,本发明更容易理解, 其各种目的、特征和优点会更清晰。

图1为本发明的浮点单元的框图。

图2给出了本发明的一个实施方式的将中间尾数分成3个区的框 图。

图3给出了本发明的应用于多路选择器的取值列表。

图4为本发明的一个实施方式的浮点单元的运算方法。

图5为本发明的一个实施方式的数据处理系统的一个实施方式的 框图。

不同附图中的相同的附图标记表示相同的内容,除非另有说明。

具体实施方式

以下对实施本发明的方式进行详细说明。对本发明的说明是解释 性的,而非限定性的。

此处公开的一些实施方式在没有阻塞或者引起类似其他方法的 硬件开销的前提下,在一次通过(one pass)和一个流水线周期内获 得规格化或者反规格化。某些实施方式中,FPU将全精度中间尾数分 成单独的区并分别计算每个区所需的左移位量,同时考虑反规格化需 求。在某些实施方式中,所需的规格化器仅与最宽的区等宽。此时, 规格化器的“宽度”指的是其可容纳的最大移位。区的数量和各个区的 宽度为独立的设计参数,可以根据工艺和实现的约束进行改变。某些 实施方式中,规格化器移位器必须支持等于最宽的区的宽度的最大移 位。此处所述的实施方式至少包含蛮力法和叠代法二者的优点,而没 有相关的缺点。

图1为根据本发明的实施方式之一的浮点单元(FPU)101的框 图。在所示实施方式中,FPU 101为熔合乘-加(FMA)FPU,经优 化可执行乘-加指令,其形式为A*C+B,其中A、B和C是各自具有 符号、尾数和指数的浮点数。

在所示实施方式中,从数据处理系统的派遣单元(例如图5中的 520)向乘法器/累加器提供操作数A(Am)和C(Cm)的尾数。操作数 B(Bm)的尾数提供给对齐移位器106。对齐移位器106将操作数B 的尾数移位来对齐操作数B的尾数,使得B的指数等于操作数A和C 相乘的指数。乘法器/累加器108以冗余进位保留格式输出全精度中间 尾数,进位部分提供给寄存器103而和数部分提供给和寄存器105。

FPU 101将全精度尾数分成数个规格化的区(N0,N1和N2,见 图2)。前导零预告器(LZA)(LZA 117、LZA 119、和LZA 121) 为前导比特指示电路,用于各个区以确定前导比特的位置。所示实施 方式中,FPU 101支持双精度浮点操作数并在规格化为161比特宽之 前产生全精度中间尾数。

FPU 101包括将寄存器103和105中的内容相加以形成161比特 的非规格化结果尾数的加法器107。在某些实施方式中,采用161比 特的回绕进位加法器(也被称为模2n+1或者反码(ones complement) 加法器)来实现加法器107。此外,在某些实施方式中,加法器107 包括反相电路以产生有符号数值表示而非有符号补码(two’s complement)表示。同样在其他实施方式中,加法器107包含LZA 误差检测器以及用于补偿因使用B操作数对齐移位量引起的潜在的一 比特误差的电路,以得到规格化移位量。替代地,LZA误差可以在加 法之后检测并与规格化器111并行地被检测,从而可以用于纠正规格 化移位的结束时的误差。

在所示实施方式中,FPU 101包括三个LZA(117、119和121)。 每个LZA电路设有特定的冗余尾数区并用于确定这些部分中的前导 比特的位置。LZA17接收54比特(比特0-53)的第一规格化区,LZA 119接收54比特(比特54-107)的第二规格化区,LZA电路121接 收53比特(比特108-161)的第三规格化区。

在其他实施方式中,可以使用其他类型的前导比特指示电路。例 如,可以由译码器进行区N0的前导一检测,该译码器(从移位器106) 检查操作数B的对齐移位量以确定前导一是否位于区N0及其位置。 误差检测电路还可用于补偿利用B对齐移位中的一比特误差。在这样 的实施方式中,LZA 117可以省略。

每个LZA 117、119和121向区选择器115提供一比特的标志, 指示在区中是否检测到前导一。每个LZA电路还向钳位电路123提供 前导零的指示。在所示实施方式中,每个前导零位置指示器为54位宽 并包括后跟一串一的一串零,其中第一个一指示由LZA确定的区中的 前导一的位置。这样的二进制数串称为单调串并呈一旦给定的比特为 一则所有位于其右的比特皆为一的特性。单调串还呈一旦给定的比特 为零则所有位于其左的比特皆为零的双重特性。在某些情况下,单调 串包含全一或者全零。在一个实施方式中,单比特指示是54比特单调 串的最低有效比特。如果54比特单调串的最低有效比特为零,则该 54比特的区不包含前导一。如果54比特单调串的最低有效比特为一, 则前导一包含于该54比特的区中的某处。

选择器115根据来自LZA 117、LZA 119、LZA 121以及反规格 化钳位计数器133的信息确定向规格化器111提供哪个区。选择器115 根据来自LZA 117、LZA 119和LZA 121的三个前导指示比特的值确 定161位的中间尾数的前导一的位置。选择器115根据反规格化钳位 计算器133的计算结果确定是否需要反规格化右移位。根据该二个确 定以及是否对该指令使能下溢,选择器115指定提供给规格化器111 的108比特以及提供给规格化器111的移位量。

在所示实施方式中,FPU的运算被实现为多个连续的流水线级。 例如,乘累加器108和指数电路122的运算被实现为多个流水线级。 这些运算的结果锁存在寄存器103、105和135中。加法器107、LZA 117、LZA 119和LZA 121、反规格化钳位计算器133、钳位电路123、 区选择器115和多路选择器电路109、125和127的运算在另一个流水 线级中进行。这样,寄存器110、126、128和130被用于锁存该级中 的这些运算的结果。

规格化器111和指数调整器129的运算在另一个流水线级中进 行,该级的结果锁存在寄存器113和指数寄存器131中。舍入器 (rounder)116的运算在最后的流水线级进行。此后,舍入器116的 结果写入改名缓冲器(例如图5中537)并回写至FPU 101的输入。

图2给出了将中间尾数划分成区N0,N1和N2。规格化运算的 目的在于从中间尾数去除前导零。利用“蛮力”法,使用161比特移位 器将前导一移位至位置0(规格化结果)。但是,161比特移位器需要 多级逻辑并且比位宽较少的移位器复杂。由规格化器111移位的位数 为54比特,少于中间尾数(161比特)的宽度。因此,该系统有益地 减少了需要规格化器移位的位数,从而降低了规格化器的复杂度,减 少了运算所需时间以及规格化器111的电路面积和供给规格化器的寄 存器。

例如,如果前导一位于第91比特,则区N1和N2的比特提供给 规格化器111(通过由选择器115选择的多路选择器电路109和寄存 器110)。由于前导一位于第91比特,没有必要向规格化器111提供 来自区N0(全部为前导零)的比特。

参照图3,多路选择器109的每个的输入具有108比特。如图3 所示,向输入0提供54个零和区N0的比特。向输入1提供区N0和 N1的比特。向输入2提供区N1和N2的比特。向输入3提供区N2 的比特和54个零。

对于规格化,如果在区N0中发现前导一,则选择输入1并向规 格化器111提供区N0和N1。如果确定前导一在区N1中,则选择输 入2并向规格化器111提供区N1和N2。如果确定前导一在区N2中, 则选择输入3并向规格化器111提供区N2和54个零。

在所示实施方式中,FPU 101还可以进行反规格化运算。该反规 格化运算包括反规格化右移运算或者少于全规格化左移的左移运算。 当下溢被禁止且需要如IEEE 754中规定的反规格化结果时需要反规 格化运算。反规格化结果的特征为在尾数中存在前导零而指数被钳位 在Emin(根据IEEE 754标准所允许的最小指数)。这与特征为尾数 的最高有效比特中前导一的规格化结果相反。

反规格化右移运算用于当指数小于Emin时将指数带回范围内。在 一个实施方式中,利用规格化器的输入数据为首先向右对齐的54比特 的假设,反规格化右移实际上是左移。以这种方式对准数据的目的在 于避免实现可左右双向移位的移位器。与双向移位器相比,单向的移 位器的实现更加简单而且速度更快。对于反规格化右移运算,如果前 导一被确定在区N0中,则输入0被选择且向规格化器111提供54个 零和N0。如果前导一被确定在区N1,则选择输入1且向规格化器111 提供区N0和N1.此时,由于前导一位于区N1内,N0全部由零组成。 如果前导一确定在区N2中,则选择输入2并向规格化器111提供区 N1和N2。此时由于前导一位于区N2内,N1全部由零组成。

当完全规格化左移引起指数落到Emin下方时,实施反规格化左移 运算。通过这些运算,提供给规格化器111的中间尾数被左移,直至 指数达到Emin。在某些实施方式中,反规格化左移通过钳位电路123 获得,该钳位电路123限制左移从而防止指数落到Emin下方。在本发 明中,反规格化钳位计算器133分别计算对各个区N0、N1和N2的 钳位,并独立于由LZA 117、LZA 119和LZA 121计算出来的完全规 格化左移位量进行计算。

在某些实施方式中,规格化器111支持54位左移,接受108比 特输入并产生54比特输出。这样的结构可以支持单精度和双精度浮点 运算。在其他实施方式中,根据所需的数据精度和区的数量,规格化 器111可以更窄或者更宽。规格化器111可以不同的方式实现。在一 个实施方式中,规格化移位器111被实现为根据对数多路选择器的三 级单向左移位器。第一级进行0、16、32或者48的16进制移位。第 二级进行0、4、8或者12的四进制移位。最后的第三级进行0、1、2、 3或者4的二进制移位。由于用于计算规格化器移位量的LZA中的一 比特不精确性,规格化器的最后一级具有额外的输入。二进制移位(最 后一级)可具有一比特的校正以解决LZA的固有误差。替代地,在其 他实施方式中,可以附加执行0或1的二进制移位的第四级以实现 LZA的误差校正。注意,规格化移位器的输入仅为54+54比特宽,其 中54为最大可能移位,54为数据宽度(53比特位数+1保护比特)。 由于输入数据宽度为108比特而输出数据宽度仅为54比特,规格化器 在各级逐渐变窄。在某些实施方式中,粘附集合逻辑(sticky collection logic)可以与利用此处未讨论的各种不同方法的规格化移位 并行地计算。规格化器111的输出提供给尾数寄存器113。该输出是 可以是规格化或者反规格化的结果尾数。

FPU 101包括根据规格化移位是否会引起指数落到Emin下方(根 据IEEE 754标准所允许的最小指数)来对规格化移位进行钳位的电 路。反规格化钳位计算器133包括将规格化前的中间指数与Emin比较 的电路。在一个实施方式中,计算器133进行以下四中运算:

(1)esemin=Eb4norm-Emin

(2)esemins54=Eb4norn-Emin-54

(3)esemins108=Eb4norm-Emin-108

(4)eseminp54=Eb4norm-Emin+54

其中,Eb4norm=规格化前的中间指数

Emin=最小指数=-102210(对于双精度),-12610(对于单精 度)

利用这些计算导出提供给钳位电路123的反规格化左移位钳位和 提供给多路选择器电路125的反规格化有效右移位量。在一个实施方 式中,左移位钳位包括单调串,该单调串掩蔽由LZA为每个区产生的 单调串。反规格化左移位钳位通过限制左移位量来防止指数落到Emin之下。在一个实施方式中,esemin、esemins54、esemins108和eseminp54 为有符号的补码(two’s complement)二进制数。数量esemin用于产 生区N0的移位钳位,数量esemins54用于产生区N1的移位钳位,数 量esemins108用于产生区N2的移位钳位。数量esemin、esemins54 和esemins108用于确定是否要进行有效的右移。进行有效右移的指示 提供给选择器115。数量esemins54、esemins108和eseminp54用于确 定反规格化有效右移位量。在一个实施方式中,根据esemins54、esemin 和eseminp54这三个数的符号来选择这三个值之一。如果esemin为负 而eseminp54为正,则选择eseminp54作为反规格化有效右移位量。 如果esemins54为负而esemin为正,则选择esemin作为反规格化有 效右移位量。如有eseminp54为负,则反规格化的尾数为全零且所有 最有效高位向右移出,并只对粘附计算有贡献。如果esemins54为负, 则选择esemins54作为反规格化有效右移位量。在所示实施方式中, 在多路选择器电路125的输入端向移位量编码器(CTS)提供反规格 化有效右移位的值以将移位量转换成规格化器111的移位选择。

在某些实施方式中,反规格化钳位计算器133的电路可以部分地 在寄存器135之前实现。例如,执行上述方程1-4的计算的电路可以 在该处实现。这些实施方式中,结果在提供给示于图1所示位置的计 算器电路133之前被锁存于寄存器(未示出)内。

如前所述,选择器115根据来自LZA 117、LZA 119、LZA 121 以及反规格化钳位计数器133的信息来确定向规格化器111提供哪个 区。选择器115根据来自LZA 117、LZA 119和LZA 121的三个前导 指示比特的值确定161比特的中间尾数的前导一的位置,说明如下。 如果LZA 117的前导比特指示为1则前导1位于区N0。如果LZA 117 的前导比特指示为0而LZA 119的前导比特指示为1,则前导1位于 区N1。如果LZA 117和LZA 119的前导比特指示均为0而LZA 121 的前导比特指示为1,则前导1位于区N2。参照图3,选择器115必 须确定向规格化器111提供哪108比特。当前导1位于区N0,按照 esemin的负值指示需要反规格化右移位,并且下溢异常(underflow exception)未被使能时,多路选择器电路109的输入0被选择。如果 下溢被使能,则结果总是规格化的。在两种单独的条件下多路选择器 电路109的输入1被选择。多路选择器电路109的输入1被选择的第 一种条件是左移规格化/反规格化情形,当前导一位于区N0且esemin 为正或者下溢异常被使能时出现。多路选择器电路109的输入1被选 择的第二种条件是右移位反规格化情形,当前导一位于区N1且 esemins54为负以及下溢异常被禁止时出现。类似地,在两种单独条 件下多路选择器电路109的输入2被选择。多路选择器电路109的输 入2被选择的第一种条件是左移位规格化/反规格化情形,当前导一位 于区N1且esemins54为正或者下溢异常被使能时出现。多路选择器电 路109的输入2被选择的第二种条件是右移位反规格化情形,当前导 一位于区N2且esemins108为负以及下溢异常被禁止时出现。最后, 当前导一位于区N2,esemins108为正或者下溢异常被使能时,多路选 择器电路109的输入3被选择,构成左规格化/反规格化情形。注意在 区选择的上下文中,左规格化/反规格化情形指的是在规格化前的指数 大于或者等于Emin从而尾数可以左移的情形。在完全规格化左移位引 起指数落到Emin之下的情况下,左移可受到钳位以产生反规格化结果。 右移反规格化情形指的是规格化前的指数已经小于Emin从而需要有效 右移的情形。这样右移的结果当然为反规格化尾数。

多路选择器电路125提供移位选择以指定对规格化器111的移位 量。在一个实施方式中,多路选择器电路125包括将单调串转成规格 化移位选择的译码器电路。由移位选择指定的量等于单调串中的前导 零的数量。译码器利用了单调串输入的双重特性,即,如果单调串中 的一个比特为一,则其右的所有比特为一;类似地,如果单调串中的 一个比特为零,则其左的所有比特为零。因此,只需检查由零到一的 迁移,每个移位选择信号可以表示为乘积之和(SOP),每个乘积项 由两个项的逻辑“与”构成。每个移位选择信号可以独立计算。每个移 位选择中的乘积项的数量从十六进制移位选择的最少情形增长至二进 制移位选择的最多情形。因此,十六进制移位选择的计算快于四进制 或者二进制移位选择。在某些实施方式中,视电路中的关键速度路径, 译码器可应用于多路选择器电路125的输入或者多路选择器电路125 的输出。此外,在某些实施方式中,由于规格化器111的第一级只需 要十六进制移位选择,四进制和二进制移位选择译码可以延至规格化 器一级。因此四进制移位选择译码的一部分可以与规格化器111的十 六进制移位级并行进行。类似地,二进制移位选择译码的一部分可以 与规格化器111的十六进制和四进制移位级并行进行。

在所示的实施方式中,多路选择器电路127(通过寄存器128) 向指数调整器129提供二进制移位量以解决规格化器111进行的规格 化或者反规格化。指数调整器129通过从规格化前的指数减去移位量 来解决规格化左移位。在反规格化右移或者反规格化左移的情况下, 由于根据定义已知指数为Emin,因此不需要计算指数。通过分别对来 自LZA 117、LZA 119和LZA 121的单调串进行译码,对于每个区 N0、N1和N2独立地计算出移位量。应该注意的是,由于对指数完全 规格化的效果取决于下溢和上溢的正确检测,被译码的单调串未被钳 位。在一个实施方式中,区选择信号被用于根据在哪个区检测到前导 一来确定提供给指数调整器129的量。例如,如果前导一在区N0中 被检测到,则指数要调整的值将是多路选择器电路127的输出值。如 果前导一被确定在区N1中,则指数要调整的值将是多路选择器电路 127的输出加上54。如果前导一被确定在区N2中,则指数要调整的 值将是多路选择器电路127的输出加上108。

FPU 101还包括指数计算电路112,该电路合并操作数的指数以 在规格化前获得中间尾数的指数。该合并依赖于指令,使得指数与全 精度中间指数的对齐相匹配。全精度中间尾数的指数被提供给寄存器 135。指数调整器129的输出被提供给指数计算器131并在进行舍入之 前表示结果的指数。在所示实施方式中,尾数和指数被提供给舍入电 路以对结果进行舍入。在某些实施方式中,指数调整器129检查下溢 和上溢。常数+0、+54、+108必须以与指数调整相同的方式正确应 用于下溢和上溢的检测。

图4为根据本发明的一个实施方式的浮点单元的运算流程图。在 运算步骤403,累加器108确定规格化前的冗余形式(以进位保留格 式)的全精度中间尾数,并向进位寄存器103提供进位部分,向和寄 存器105提供和部分。在运算步骤405,电路112确定规格化前的中 间指数并将该值提供给寄存器135。

在运算步骤414,加法器107使用进位传播加法将中间尾数从进 位保留冗余表示同化成为非冗余二进制表示。在某些实施方式中,加 法器107可以将和转化以产生有符号数值中间尾数,而非有符号补码 中间尾数。

在运算步骤409,尾数被分成2个或者更多个区。在图1的实施 方式中,尾数被分成3个区,第一个区提供给LZA1,第二个区提供 给LZA2,第三个区提供给LZA3。在运算步骤423中,对于每个区, 通过利用指定的LZA(117、119和121)定位前导比特并通过译码 LZA的输出产生左移位量。在图1中,在多路选择器电路127的输入 或者多路选择器电路127的输出将LZA输出的译码成左移位量。

在运算步骤407,利用反规格化钳位计算器133对于每个区算出 中间指数与允许的最小指数Emin之差。在一个实施方式中,该差值以 有符号的补码esemin、esemins54、esemins108和eseminp54来表示。 通常,需要计算的差值等于区的数量加一。

在运算步骤415中,通过对在运算步骤407计算的二进制数 (esemin、esemin54、esemin108)进行译码来产生每个区的反规格化 左移位钳位。在图1的实施方式中,反规格化钳位计算器133对二进 制数(esemin、esemin54、esemin108)进行译码以产生反规格化左移 位钳位。

在运算步骤413中,反规格化钳位计算器133通过检查有符号数 esemin、esemins54和esemins108的符号,在各个区的反规格化右移 位量之间进行选择。如果esemin为负,则eseminp54被选择为反规格 化右移位量。如果esemin为正而esemins54为负,则选择esemin作 为反规格化右移位量。如果esemin和esemins54为负而esemins108 为正,则选择eseminp54作为反规格化右移位量。如果eseminp54为 负,则反规格化尾数将为全零,所有有效位向右移出,并仅能参与粘 附计算。

在运算步骤417中,利用图1的钳位电路123对规格化左移位量 施加反规格化左移位钳位。在一个实施方式中,对于每个区,LZA和 反规格化左移位钳位的输出形式为前述的单调串。在这样的实施方式 中,钳位电路123由LZA单调串与反规格化左移位钳位单调串之间的 逻辑“或”构成。出现在单调串中的前导零的数量指定将从要交给规格 化器111的全精度中间尾数的被选择的区中去除的前导零(或者符号 比特位)的个数。因此,如果钳位单调串的前导零比LZA单调串的少, 则钳位电路123产生的单调串具有LZA单调串或者钳位单调串中较少 的前导零个数。

在运算步骤425中,根据每个区前导比特的位置和指数减法 esemin、esemins54、esemins108的符号选择规格化或者反规格化所需 的区。在实施方式FPU 101中,通过区选择器115进行确定。

在运算步骤429中,通过区选择器115选择提供给规格化器111 的尾数区。参见上面关于图3的讨论。

在运算步骤419中,多路选择器电路125在钳位左移位量和反规 格化有效右移位量之间进行选择以决定对由多路选择器电路109通过 寄存器110提供给规格化器111的中间全精度尾数的部分进行的左移 位量。左移位量被译码为移位选择以控制规格化器111的移位。此外, 在运算步骤419中,多路选择器电路127在由LZA 117、LZA 119和 LZA 121提供的未钳位左移位量之间进行选择并(通过寄存器218) 将产生的移位量提供给指数调整器129。

在运算步骤431中,规格化器111利用在运算步骤419中确定的 移位运算对被选择的区进行移位以产生规格化尾数。规格化尾数被提 供给尾数寄存器113。在运算步骤421中,指数调整器129通过减去 左移位量并加上一个常数来调整规格化前的指数。在一个实施方式中, 对于区N0,常数为0;对区N1为-54;对区N2为-108。当结果尾 数被反规格化且下溢异常被禁止时,结果指数为Emin。当发生指数下 溢且下溢异常被使能时,通过对单精度加上常数+192和对双精度加 上常数+1536来对指数进行进一步调整。结果指数值提供给指数寄存 器131。

图5给出了数据处理器510的框图。数据处理器510包括类似于 图1的浮点单元101的浮点单元526。数据处理器可以为CPU、DSP 或者其他类型的处理装置。在一个实施方式中,数据处理器510的部 件被实现为集成电路。在一个实施方式中,处理器510实现了数据处 理流水线。

总线接口单元(BIU)512控制数据处理器510与包含数据处理 器510的电子系统(未示出)的其他部分之间的数据流。BIU 512可 操作地连接至指令高速缓冲存储器514和数据高速缓冲存储器516。 指令高速缓冲存储器514向分支单元518和结束/派遣单元520提供指 令流。结束/派遣单元520向适合的执行单元发出单个指令。

在所示实施方式中,数据处理器510具有定点执行单元522、加 载/存储执行单元524、浮点执行单元526、矢量单元534。定点执行单 元522和加载/存储执行单元524将它们的结果读和写至通用架构寄存 器堆(GRF)528和改名缓冲器530。浮点执行单元526和加载/存储 执行单元524将它们的结果读和写至浮点架构寄存器堆(FRF)532 和改名缓冲器537。矢量单元534和加载/存储执行单元524将它们的 结果读入和写至矢量架构寄存器堆(VRF)533和改名缓冲器537。

在某些实施方式中,在给定特定的数据寄存器内容和编程步骤的 前提下,分支单元518确定适合的编程指令序列。结束/派遣单元520 向各执行单元522、524和526发送单个指令。各执行单元执行一个或 多个特定种类的指令。各执行单元的特定种类的指令由执行单元的名 字指示。例如浮点执行单元526操作以浮点格式表示的数据。

在一个实施方式中,定点执行单元522将其运算结果返回至改名 缓冲器530中的指定入口。当产生结果的指令之前的所有指令更新了 其GPR文件入口时,改名缓冲器530通过来自改名缓冲器530的入 口周期性地更新GPR文件528的入口。结束/派遣单元520协调该更 新。改名缓冲器530和GPR文件528都可向定点执行单元522提供 操作数。反之,浮点执行单元526将其运算结果返回至改名缓冲器537 中的指定入口。当产生结果的指令之前的所有指令更新了其FPR文件 入口时,改名缓冲器537通过改名缓冲器537的入口周期性地更新FPR 文件532的入口。结束/派遣单元520也协调该更新。改名缓冲器537 和FPR文件532都向定点执行单元526提供操作数。

上述一些实施方式(例如FPU 101)均进行规格化运算和反规格 化运算。但是,其他实施方式可以仅进行规格化运算,而另外其他的 实施方式可仅进行反规格化运算。此外,其他实施方式可以包含不同 的电路和/或使用不同的技术从进行反规格化运算的单元进行规格化 运算。可以理解的是,特征为“执行规格化被选择的区以产生规格化浮 点数或者反规格化被选择的区以产生反规格化浮点数之一”的实施方 式包括仅进行被选择的区的规格化运算(而非反规格化运算)的实施 方式,仅进行被选择的区的反规格化运算(而非规格化运算)的实施 方式,以及进行被选择的区(例如FPU 101)的规格化运算和反规格 化运算两种的那些实施方式。

在一个实施方式中,一种方法,包括接收浮点数的尾数和指数, 所述尾数由第一组多个比特表示,而所述指数由第二组多个比特表示。 该方法包括:将所述第一组多个比特分成多个区;分别检查所述多个 区的每个区以确定第一组多个比特的前导比特的位置;根据对所述多 个区的每个的分别检查来选择所述多个区中的区;执行将被选择的区 规格化以产生规格化浮点数或者将被选择的区反规格化以产生反规格 化浮点数中之一。

在进一步的实施方式中,选择区的步骤还包括根据上述分别检查 来选择所述多个区的相邻区;规格化的步骤还包括将被选择的区和相 邻区规格化以产生规格化浮点数。在进一步的实施方式中,选择多个 区中的区的步骤还包括根据所述多个区的每个中前导比特的指示和指 数与对于所述多个区的每个的预定值之差来选择区。在进一步的实施 方式中,分别检查的步骤还包括对冗余格式的所述多个区的每个进行 分别检查。该方法还包括:将所述第一组多个比特压缩成非冗余格式, 其中规格化步骤还包括将非冗余格式的被选择的区规格化。在进一步 的实施方式中,分别检查所述多个区的每个的步骤包括利用前导零预 告器检查所述多个区中的至少一个。在进一步的实施方式中,分别检 查所述多个区的每个的步骤包括同时检查多个区的每个。在进一步的 实施方式中,所述方法在数据处理系统的浮点单元中执行。在进一步 的实施方式中,所述前导比特表示第一个非符号比特。在进一步的实 施方式中,该方法包括:对于所述多个区的每个区,确定指数和与所 述多个区的每个区相关的预定值之差,其中根据所确定的差来选择区。 在进一步的实施方式中,该方法包括:对于所述多个区的每个区,确 定指数和与所述多个区的每个区相关的预定值之差。如果指数大于或 者等于与被选择的区相关的预定值,则该方法包括:将指数和与被选 择的区相关的预定值之差与被选择的区的前导比特的位置进行比较; 如果指数和与被选择的区相关的预定值之差大于或者等于该位置,则 选择该位置作为被选择的区的移位量,将被选择的区左移该移位量以 产生浮点数的规格化尾数,并将指数调整该移位量以产生用于规格化 浮点数的调整了的指数。在进一步的实施方式中,该方法还包括:如 果指数和与被选择的区相关的预定值之差小于该位置,则选择该差作 为被选择的区的移位量,将被选择的区左移该移位量以产生浮点数的 反规格化尾数。在进一步的实施方式中,执行将被选择的区规格化以 产生规格化浮点数或者将被选择的区反规格化以产生反规格化浮点数 中之一的步骤还包括将被选择的区规格化以产生规格化的浮点数。在 进一步的实施方式中,执行将被选择的区规格化以产生规格化浮点数 或者将被选择的区反规格化以产生反规格化浮点数中之一的步骤还包 括将被选择的区反规格化以产生反规格化的浮点数。在进一步的实施 方式中,所述将被选择的区规格化以产生规格化浮点数包括规格化少 于所述多个区的所有区。

在另一个实施方式中,一种数据处理系统包括第一比特域和第二 比特域,所述第一比特域用于包括表示浮点数的尾数的第一组多个比 特,所述第二比特域用于包括表示浮点数的指数的第二组多个比特。 所述第一组多个比特被分成多个区。所述多个区的每个包括所述第一 组多个比特的多于一个比特。该数据处理系统还包括多个前导比特指 示电路,所述多个前导比特指示电路的每个被连接为接收所述多个区 中的区以提供关于前导比特的指示。该数据处理系统还包括选择电路, 连接至所述多个前导比特指示电路,该选择电路根据所述多个前导比 特指示电路的指示给出所述多个区中的被选择的区。该数据处理系统 还包括规格化器,被连接为接收被选择的区,所述规格化器将被选择 的区规格化以产生规格化的浮点数。在进一步的实施方式中,所述规 格化器能够将被选择的区反规格化以产生反规格化的浮点数。在进一 步的实施方式中,所述多个前导比特指示电路包括至少一个前导零预 告器。在进一步的实施方式中,该方法还包括反规格化钳位计算器, 所述反规格化钳位计算器被连接为接收指数并用于确定尾数将被移位 多远。在进一步的实施方式中,所述选择电路还包括区选择器,连接 至所述多个前导比特指示电路的每个,用于确定所述多个区中的哪个 包含前导比特。所述选择电路还包括多路选择器,具有用于接收多个 区的多个输入、被连接至所述区选择器的输出的控制输入、以及用于 提供被选择的区的输出。在进一步的实施方式中,该数据处理系统还 包括指数调整器,该指数调整器具有:连接至第二比特域用以接收表 示指数的第二组多个比特的第一输入;连接为接收移位量信号的第二 输入;以及用于为调整后的浮点数提供调整了的指数的输出。在进一 步的实施方式中,第一组多个比特为冗余形式的全精度尾数,其中选 择电路以非冗余形式提供被选择的区。

在另一个实施方式中,一种方法包括接收浮点数的尾数和指数, 所述尾数由第一组多个比特表示,而所述指数由第二组多个比特表示。 该方法还包括将第一组多个比特分成多个区,所述多个区的每个包括 至少二比特。该方法还包括分别检查所述多个区的每个以确定所述第 一组多个比特的前导比特的位置。该方法还包括对于所述多个区的每 个区,确定指数和与所述多个区的每个区相关的预定值之差。该方法 还包括根据前导比特的位置和对每个区确定的差来选择所述多个区中 的区;根据被选择的区的确定的差值将被选择的区规格化或反规格化; 调整指数以产生调整了的指数。

在进一步的实施方式中,该方法还包括如果指数大于或者等于被 选择的区的预定值,则将指数和与被选择的区相关的预定值之差与被 选择的区的前导比特的位置进行比较。该方法还包括如果指数和与被 选择的区相关的预定值之差大于或者等于该位置,则:选择该位置作 为被选择的区的移位量;将被选择的区左移该移位量以产生浮点数的 规格化尾数。如果指数和与被选择的区相关的预定值之差小于该位置, 则:选择该差值作为被选择的区的移位量;将被选择的区左移该移位 量以产生浮点数的反规格化尾数。如果指数小于与被选择的区相关的 预定值,则:将被选择的区向右调整预定的量;产生调整了的移位量; 以及将被选择的区左移该调整了的移位量以产生浮点数的反规格化的 尾数。

尽管本发明的具体实施方式已经给出并予以说明,可以理解,对 于本领区技术人员而言,根据此处所讲述的,在不偏离本发明及其广 义范围的前提下可进行进一步的改动和修正,这样,在本发明的主旨 和范围之内,所附的权利要求将所有这样的改动和修正包含于其范围 之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号