浮点加法器.pdf

上传人:a1 文档编号:4262139 上传时间:2018-09-12 格式:PDF 页数:27 大小:844.41KB
返回 下载 相关 举报
摘要
申请专利号:

CN201210229706.6

申请日:

2012.06.29

公开号:

CN102855117A

公开日:

2013.01.02

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 7/485申请日:20120629|||公开

IPC分类号:

G06F7/485

主分类号:

G06F7/485

申请人:

ARM有限公司

发明人:

卓恩·尼斯塔德

地址:

英国剑桥

优先权:

2011.06.29 GB 1111035.0; 2011.07.05 GB 1111399.0

专利代理机构:

北京东方亿思知识产权代理有限责任公司 11258

代理人:

李晓冬

PDF下载: PDF下载
内容摘要

本公开涉及一种浮点加法器。浮点加法器电路16,18,20被提供有远路径电路18和近路径电路20。远路径电路利用尾随零TZ的计数和输入操作数指数的差值来形成相应的后缀值,该后缀值与输入加数的尾数串接并且当被求和时用于生成代替传统被计算的粘滞位的进位。在近路径内,最小值电路46被用于计算在相减中产生的中间尾数的前导零计数与输入操作数指数值的较大值中的较低值,以使得被应用于中间尾数值的左移位不会由于所应用的去除前导零的左移位太大并且因此对应于不能被有效表示的指数,而产生无效的浮点结果。

权利要求书

权利要求书一种浮点加法器电路,用于将第一浮点数与第二浮点数相加,所述第一浮点数具有指数值EA和尾数值MA,所述第二浮点数具有指数值EB和尾数值MB,并且EA大于或等于EB,所述浮点加法器电路包括:
远路径电路,被配置为当所述第一浮点数和所述第二浮点数匹配至少一个预定的远路径条件时生成结果浮点值,所述远路径电路具有:
尾随零计数电路,被配置为确定与在从MB的最低有效位端开始MB的最低有效(EA‑EB)位内的尾随零值的游程相对应的尾随零值TZ;以及
远路径加法器,被配置为将第一加数值与第二加数值相加,所述第一加数值包括MA与第一后缀值串接,所述第二加数值包括不带其(EA‑EB)最低有效位的MB与第二后缀值串接;其中
所述第一后缀值和所述第二后缀值依赖于TZ和(EA‑EB)中相应的一个而形成。
根据权利要求1所述的浮点加法器电路,其中,所述第一后缀值和所述第二后缀值依赖于TZ和NOT((EA‑EB))中相应的一个而形成。
根据权利要求2所述的浮点加法器电路,其中,所述第一后缀值包括三个填充位后接第一后缀结尾值,所述第二后缀值包括一个填充位后接第二后缀结尾值,所述第一后缀结尾值和所述第二后缀结尾值包括(TZ+2)和NOT((EA‑EB))中相应的值。
根据权利要求3所述的浮点加法器电路,其中,所述三个填充位和所述一个填充位总和为与所述远路径加法器的输出中的最低精度单位的一半相对应的值。
根据权利要求1所述的浮点加法器电路,其中,所述第一后缀值和所述第二后缀值依赖于NOT(TZ)和(EA‑EB)中相应的一个值而形成。
根据权利要求5所述的浮点加法器电路,其中,所述第一后缀值包括三个填充位后接第一后缀结尾值,所述第二后缀值包括一个填充位后接第二后缀结尾值,所述第一后缀结尾值和所述第二后缀结尾值包括NOT(TZ+2)和(EA‑EB)中相应的值。
根据权利要求6所述的浮点加法器电路,其中,所述三个填充位和所述一个填充位总和为与所述远路径加法器的输出中的最低精度单位的一半相对应的值。
根据权利要求1所述的浮点加法器电路,其中,所述第二加数具有(EA‑EB)个零值的前缀。
根据权利要求1所述的浮点加法器电路,其中,所述远路径电路具有第二加数移位器电路,所述第二加数移位器电路被配置为与所述尾随零计数电路并行操作,所述第二加数移位器电路将MB逻辑右移(EA‑EB)位的位置。
根据权利要求9所述的浮点加法器电路,其中,所述第二加数移位器电路在所述第二加数值的最高有效的(EA‑EB)位的位置中提供前导零值。
根据权利要求1所述的浮点加法器电路,其中,所述远路径电路具有被配置为与所述尾随零计数电路并行操作的指数差值计算电路,所述指数差值计算电路计算(EA‑EB)的值。
根据权利要求1所述的浮点加法器电路,其中,MA的位长大于或等于2X,其中X是正整数,并且所述第一加数的位长小于2(X+1)。
根据权利要求1所述的浮点加法器电路,其中,第一输入加数和第二输入加数被接收,并且所述浮点加法器电路包括复制电路和多路选择器,所述复制电路被配置为形成假设所述第一输入加数大于所述第二输入加数的第一处理路径以及假设所述第二输入加数大于所述第一输入加数的第二处理路径,所述多路选择器用于当在加法处理已经在所述复制路径中至少部分完成之后确定了所述第一输入加数和所述第二输入加数中哪个更大后,选择来自所述第一处理路径和所述第二处理路径之一的结果。
根据权利要求1所述的浮点加法器电路,其中,第一输入加数和第二输入加数被接收,并且所述浮点加法器电路包括比较电路和切换电路,所述比较电路被配置为执行对所述第一输入加数和所述第二输入加数的比较以确定哪个更大,所述切换电路被配置为在所述第一输入加数和所述第二输入加数的相加开始之前,将所述第一输入加数和所述第二输入加数的路径切换为根据所述比较确定的路径。
根据权利要求1所述的浮点加法器电路,其中,所述远路径电路具有反相电路,该反相电路被配置为在所述加法器电路将所述第一加数和所述第二加数相加之前对MB内的位进行反相,以使得从所述第一浮点值减去所述第二浮点值。
根据权利要求1所述的浮点加法器电路,所述浮点加法器电路包括:
近路径电路,被配置为当所述第一浮点数和所述第二浮点数匹配至少一个预定的近路径条件时生成结果浮点值,所述近路径电路具有:
近路径加法器,被配置为确定与(MA‑MB)相对应的中间尾数值MI;
前导零计数电路,被配置为确定与在从MI的最高有效位端开始MI内的前导零值的游程相对应的前导零值LZ;
最小值电路,被配置为将结果移位值确定为LZ和EA中较低的值;以及
结果移位电路,被配置为将MI左移与所述结果移位值相对应的多个位的位置以生成构成结果浮点数的一部分的结果尾数MR。
根据权利要求16所述的浮点加法器电路,其中,所述近路径电路具有尾数移位电路,所述尾数移位电路被配置为如果EA不等于EB则在MB被输入到所述近路径加法器之前对MB执行(EA‑EB)位位置的右移。
根据权利要求16所述的浮点加法器电路,其中,所述最小值电路被配置为在所述结果移位值的一个或多个低阶位之前生成所述结果移位值的一个或多个高阶位。
根据权利要求18所述的浮点加法器电路,其中,所述结果移位电路是被配置为将MI右移由所述结果移位量给定的多个位位置的对数移位器,所述对数移位电路被配置为在所述一个或多个低阶位已被所述最小值电路生成之前开始任何取决于所述一个或多个高阶位的左移。
根据权利要求16的浮点加法器电路,其中,所述最小值电路具有与LZ和EA相对应的两个输入P和Q,并且通过将长度为2i的所述结果移位值的一系列前缀部分Pi,从i=0开始,确定为以下值来确定所述结果移位值:
Pi=(LZi AND NOT GRi)OR(EAi AND GRi),其中
LZi为长度为2i的LZ的前缀部分;
EAi为长度为2i的EA的前缀部分;
对于i=0和有效位递减的每个位位置k,EQi[k]为NOT(LZ[k]XOREA[k]);
对于i=0和有效位递减的每个位位置k,当LZ[k]>EA[k]时GRi[k]=1,并且当LZ[k]≤EA[k]时GRi[k]=0;
对于i>0和有效位递减的每个位位置k,EQi[k]=EQi‑1[k]AND EQi‑1[k+2(i‑1)];以及
对于i>0和有效位递减的每个位位置k,GRi[k]=GRi‑1[k]OR(Ei‑1[k]AND GRi‑1[k+2(i‑1)])。
根据权利要求16所述的浮点加法器电路,其中,所述近路径预定量为1。
根据权利要求16所述的浮点加法器电路,其中,所述最小值电路约束所述结果移位值以使得所述结果浮点数为有效的非正规浮点数。
一种浮点加法器电路,用于从第一浮点数减去第二浮点数,所述第一浮点数具有指数值EA和尾数值MA,所述第二浮点数具有指数值EB和尾数值MB,并且EA大于或等于EB,所述浮点加法器电路包括:
近路径电路,被配置为当(EA‑EB)小于近路径预定量时生成结果浮点值,所述近路径电路具有:
近路径加法器,被配置为确定与(MA‑MB)相对应的中间尾数值MI;
前导零计数电路,被配置为确定与在从MI的最高有效位端开始MI内的前导零值的游程相对应的前导零值LZ;
最小值电路,被配置为将结果移位值确定为LZ和EA中较低的值;以及
结果移位电路,被配置为将MI左移与所述结果移位值相对应的多个位的位置以生成构成结果浮点数的一部分的结果尾数MR。
根据权利要求23所述的浮点加法器电路,其中,所述近路径电路具有尾数移位电路,所述尾数移位电路被配置为如果EA不等于EB则在MB被输入到所述近路径加法器之前对MB执行(EA‑EB)位位置的右移。
根据权利要求23所述的浮点加法器电路,其中,所述最小值电路被配置为在所述结果移位值的一个或多个低阶位之前生成所述结果移位值的一个或多个高阶位。
根据权利要求25所述的浮点加法器电路,其中,所述结果移位电路是被配置为将MI右移由所述结果移位量给定的多个位位置的对数移位器,所述对数移位电路被配置为在所述一个或多个低阶位已被所述最小值电路生成之前开始任意取决于所述一个或多个高阶位的左移。
根据权利要求23的浮点加法器电路,其中,所述最小值电路具有与LZ和EA相对应的两个输入P和Q,并且通过将长度为2i的所述结果移位值的一系列前缀部分Pi,从i=0开始,确定为以下值来确定所述结果移位值:
Pi=(LZi AND NOT GRi)OR(EAi AND GRi),其中
LZi是长度为2i的LZ的前缀部分;
EAi是长度为2i的EA的前缀部分;
对于i=0和有效位递减的每个位位置k,EQi[k]为NOT(LZ[k]XOREA[k]);
对于i=0和有效位递减的每个位位置k,当LZ[k]>EA[k]时GRi[k]=1并且当LZ[k]≤EA[k]时GRi[k]=0;
对于i>0和有效位递减的每个位位置k,EQi[k]=EQi‑1[k]AND EQi‑1[k+2(i‑1)];以及
对于i>0和有效位递减的每个位位置k,GRi[k]=GRi‑1[k]OR(Ei‑1[k]AND GRi‑1[k+2(i‑1)])。
根据权利要求23所述的浮点加法器电路,其中,所述近路径预定量为1。
根据权利要求23所述的浮点加法器电路,其中,所述最小值电路约束所述结果移位值以使得所述结果浮点数为有效的非正规浮点数。
一种浮点加法器电路,用于将第一浮点数与第二浮点数相加,所述第一浮点数具有指数值EA和尾数值MA,所述第二浮点数具有指数值EB和尾数值MB,并且EA大于或等于EB,所述浮点加法器电路包括:
远路径装置,被配置为当所述第一浮点数和所述第二浮点数匹配至少一个预定的远路径条件时生成结果浮点值,所述远路径装置具有:
尾随零计数装置,用于确定与在从MB的最低有效位端开始MB的最低有效(EA‑EB)位内的尾随零值的游程相对应的尾随零值TZ;以及
远路径加法器装置,用于将第一加数值与第二加数值相加,所述第一加数值包括MA与第一后缀值串接,所述第二加数值包括不带其(EA‑EB)最低有效位的MB与第二后缀值串接;其中
所述第一后缀值和所述第二后缀值依赖于TZ和(EA‑EB)中相应的一个而形成。
一种浮点加法器电路,用于从第一浮点数减去第二浮点数,所述第一浮点数具有指数值EA和尾数值MA,所述第二浮点数具有指数值EB和尾数值MB,并且EA大于或等于EB,所述浮点加法器电路包括:
近路径装置,用于当所述第一浮点数和所述第二浮点数匹配至少一个预定的近路径条件时生成结果浮点值,所述近路径装置具有:
近路径加法器装置,用于确定与(MA‑MB)相对应的中间尾数值MI;
前导零计数装置,用于确定与在从MI的最高有效位端开始MI内的前导零值的游程相对应的前导零值LZ;
最小值装置,用于将结果移位值确定为LZ和EA中较低的值;以及
结果移位装置,用于将MI移动与所述结果移位值相对应的多个位的位置以生成构成结果浮点数的一部分的结果尾数MR。
一种将第一浮点数和第二浮点数相加的方法,所述第一浮点数具有指数值EA和尾数值MA,所述第二浮点数具有指数值EB和尾数值MB,并且EA大于或等于EB,所述方法包括当所述第一浮点数和所述第二浮点数匹配至少一个预定的远路径条件时:
确定与在从MB的最低有效位端开始MB的最低有效(EA‑EB)位内的尾随零值的游程相对应的尾随零值TZ;以及
将第一加数值与第二加数值相加,所述第一加数值包括MA与第一后缀值串接,所述第二加数值包括不带其(EA‑EB)最低有效位的MB与第二后缀值串接;其中
所述第一后缀值和所述第二后缀值依赖于TZ和(EA‑EB)中相应的一个而形成。
一种从第一浮点数中减去第二浮点数的方法,所述第一浮点数具有指数值EA和尾数值MA,所述第二浮点数具有指数值EB和尾数值MB,并且EA大于或等于EB,所述方法包括当所述第一浮点数和所述第二浮点数匹配至少一个预定近路径条件时:
确定与(MA‑MB)相对应的中间尾数值MI;
确定与在从MI的最高有效位端开始MI内的前导零值的游程相对应的前导零值LZ;
将结果移位值确定为LZ和EA中较低的值;以及
将MI移动与所述结果移位值相对应的多个位的位置以生成构成结果浮点数的一部分的结果尾数MR。
一种用于确定将第一浮点数和第二浮点数相加时所使用的粘滞位的浮点运算电路,所述第一浮点数具有指数值EA和尾数值MA,所述第二浮点数具有指数值EB和尾数值MB,并且EA大于或等于EB,所述浮点运算电路包括:
移位量确定电路,被配置为确定取决于(EA‑EB)的移位量,所述移位量对应于要被应用于MB以形成要与MA相加的MB的移位后版本的右移;
尾随零计数电路,被配置为确定与在从MB的最低有效位端开始MB的尾随零值的游程相对应的尾随零值;以及
粘滞位值确定电路,被配置为将所述移位量与所述尾随零值进行比较以确定所述粘滞位的值,所述粘滞位指示是否有任何非零位将从要与MA相加的所述MB的移位后版本中被移出。
根据权利要求34所述的浮点运算电路,包括用于确定EA大于EB的指数比较电路。
根据权利要求35所述的浮点运算电路,其中,所述移位量确定电路被配置为在所述指数比较电路已确定EA大于EB之前确定取决于(EB‑EA)的另一移位量。
根据权利要求35所述的浮点运算电路,其中,所述尾随零计数电路被配置为确定与从MA的最低有效位端开始MA的尾随零值的游程相对应的另一尾随零值。
一种用于确定将第一浮点数和第二浮点数相加时所使用的粘滞位的浮点运算电路,所述第一浮点数具有指数值EA和尾数值MA,所述第二浮点数具有指数值EB和尾数值MB,并且EA大于或等于EB,所述浮点运算电路包括:
移位量确定装置,用于确定取决于(EA‑EB)的移位量,所述移位量对应于要被应用于MB以形成要与MA相加的MB的移位后版本的右移;
尾随零计数装置,用于确定与在从MB的最低有效位端开始MB的尾随零值的游程相对应的尾随零值;以及
粘滞位值确定装置,用于将所述移位量与所述尾随零值进行比较以确定所述粘滞位的值,所述粘滞位指示是否有任何非零位将从要与MA相加的所述MB的移位后版本中被移出。
一种用于确定将第一浮点数和第二浮点数相加时所使用的粘滞位的方法,所述第一浮点数具有指数值EA和尾数值MA,所述第二浮点数具有指数值EB和尾数值MB,并且EA大于或等于EB,所述方法包括以下步骤:
确定取决于(EA‑EB)的移位量,所述移位量对应于要被应用于MB以形成要与MA相加的MB的移位后版本的右移;
确定与在从MB的最低有效位端开始MB的尾随零值的游程相对应的尾随零值;以及
将所述移位量与所述尾随零值进行比较以确定所述粘滞位的值,所述粘滞位指示是否有任何非零位将从要与MA相加的所述MB的移位后版本中被移出。

说明书

说明书浮点加法器
技术领域
本发明涉及数据处理系统的领域。更具体地,本发明涉及浮点加法器的领域。
背景技术
在数据处理系统中公知了提供可以加和减浮点数的浮点加法器。这些浮点数可以包括符号位、指数字段和尾数字段。浮点数格式和浮点算术操作的例子可以在IEEE 754标准中找到。
当相加(或者可以通过与首先经过修改的输入中的一个输入相加而实现的相减)时,通常在加法被执行之前,具有较小指数的加数被右移以对齐小数点的位置。这种对齐将尾数值的最低有效位移出尾数结果的有效位范围,因此将损失精度。这导致需要对结果进行适当的四舍五入。在浮点算术中支持各种四舍五入模式。一个四舍五入模式是舍入到最近的偶数。公知当执行这种舍入时,粘滞位应当被确定和保持,所述粘滞位指示当小数点的位置被对齐时被右移出有效位范围的任意位是否具有非零值。这个粘滞位通常可以通过对在加数尾数对齐期间被移出有效位范围的所有位执行逻辑OR操作来确定。这个方法的问题是OR操作可能是很多位宽的并且在处理路径中引入不利的延迟度。延迟的增加可能降低可以使用的最大操作时钟频率,减小定时驰豫并且具有其它负面后果。
在浮点加法器领域中,公知提供远路径加法器以在操作数的量值大于预定差值时使用,以及近路径加法器以在操作数的量值小于预定差值时使用。
发明内容
从一个方面来看,本发明提供了用于将第一浮点数与第二浮点数相加的浮点加法器电路,所述第一浮点数具有指数值EA和尾数值MA,所述第二浮点数具有指数值EB和尾数值MB并且EA大于或等于EB,所述浮点加法器电路包括:
远路径电路,被配置为当所述第一浮点数和第二浮点数匹配至少一个预定的远路径条件时生成结果浮点值,所述远路径电路具有:
尾随零计数电路,被配置为确定与在从MB的最低有效位端开始MB的最低有效(EA‑EB)位内的尾随零值的游程相对应的尾随零值TZ;以及
远路径加法器,被配置为将第一加数值与第二加数值相加,所述第一加数值包括MA与第一后缀值串接并且所述第二加数值包括不带其(EA‑EB)最低有效位的MB与第二后缀值串接;其中
所述第一后缀值和所述第二后缀值根据TZ和(EA‑EB)中相应的一个被形成。
本发明意识到代替通过对被移出到有效位范围以外的位进行逻辑OR来明显地计算粘滞位,可以通过根据取决于被移出位中尾随零的数目以及指数值差值的总和(这些加数中的一个首先被进行NOT操作)确定进位输出,从而间接地计算具有相同值的位。尾随零数目的计算可以与对较小的加数进行的右移并行地被执行,从而通过加法器电路有效地减小延迟。
第一后缀值可以包括三个填充位后面跟(i)尾随零的数目加二;或(ii)指数值的差值中的一个值,这些值中的一个被进行NOT操作,并且第二后缀值可以包括一个填充位后面跟(i)尾随零的数目加二;或(ii)指数值的差值中的另外一个值。
所述三个填充位和一个填充位可以被选择为具有总和为输出尾数值中的最低精度单位的一半的值,所述输出尾数值由远路径加法器根据浮点数和的格式所生成。
应当理解与要相加的尾数值串接并且产生与传统粘滞位等同的进位的后缀值可以利用被进行了NOT操作的尾随零计数或者指数差值来形成。
被右移的第二加数也将具有零值前缀以将其长度填充为与第一加数的尾数相同的长度。
作为前缀被加到第二加数上的前导零值可以利用第二加数移位器电路来插入。
尾随零计数电路可以被配置为与指数差值计算电路并行操作。指数差值可被要求与尾随零计数进行对比,但是利用该指数差值有效地为尾随零计数设置最大值,尾随零计数操作可以开始于指数差值已知之前。
利用与尾数串接并通过远路径加法器馈送的后缀值来计算与粘滞位具有相同值的位的上述技术可以在通过远路径加法器所馈送的值的长度变化不超过2的位宽次方的边界时被使用。这个约束条件是由于很多超前进位加法器(例如Sklansky加法器和Kogge‑Stone加法器)的工作方式而引起的,如果2的乘幂的边界被超过时,额外的门延迟将会被引入。其中浮点运算被执行的很多实际情况都满足这个约束条件。
应当理解上述的浮点加法机制需要识别哪个输入加数具有更大尺寸(至少具有最大指数值或相等的最大指数值或相等的最大指数值)。实现该识别的一个方式是在加法开始之前比较指数值,然后将输入加数切换到适当的路径,匹配用于较大加数的路径和用于较小加数的路径。这种方法相对来说很少增加门数目,但是会增大操作的延迟时间。
另一种方法是复制加法器电路并基于关于哪个输入加数的尺寸更大的相反假设通过相应的复制路径馈送输入加数。因此,加法操作可以更快地开始,并且当后来确定了实际上是哪个输入加数的尺寸更大(具有大于或等于另一输入加数的指数值的指数值)时,来自适当的复制路径的结果可以被选择输出。
如上所述,本发明的加法器电路也可以执行减法操作。这可以通过包括反相电路在一些实施例中被实现,所述反相电路在第一加数与第二加数相加之前对第二加数的尾数内的位进行反相。本发明同样适用于浮点加法和浮点减法。
本领域技术人员将熟知浮点加法器可以包括用于将浮点数与大于预定界限的差值相加的远路径加法器和用于将浮点数与小于预定界限的差值相加的近路径加法器。当可能有大量的尾数位被移出有效位范围并且需要根据这些尾数位计算的粘滞位时,上述确定与用于控制舍入的粘滞位等同的位值的技术在远路径加法器中非常有用。
在近路径加法器中,公知对结果尾数内的前导零进行计数,然后执行适当的移位和指数调节来规范浮点结果。这种方法的问题在于前导零计数和要被应用的相关联的后续左移位可能导致在可被有效地表示的范围以外的相应指数值。用于处理该问题的已知技术通常提供附加电路,用于识别是否有范围以外的指数值被产生,然后修复结果以生成非正规(denormal)浮点数。这种方法可能会引起近路径加法器中延迟的增加。
本发明的另一方面可以单独使用或者与被应用于远路径加法器的上述技术组合使用,其中最小值电路被提供在近路径加法器内并且用于将结果被左移的结果移位值确定为对结果尾数执行的前导零计数和较大输入加数的指数值中的较低值(注意,即使是当减法被执行时,术语“加数”仍然可以被使用)。如果较大加数的指数值接近最小值,则该指数可能低于前导零计数,因此提供关于要对结果尾数执行的左移的限制,并且控制左移以使得将得到正确形成的非正规数,而不需要执行增加延迟时间的修补操作。
当输入加数满足预定的近路径条件时,近路径加法器可以被使用。当输入加数的值差别较小时,尾数移位电路可以被提供以在较小加数的尾数被输入到近路径加法器之前被将该尾数右移与指数差值相等的位数的位置。
最小值电路可以被配置为在结果移位值的一个或多个低价位被生成之前生成结果移位值的一个或多个高阶位。这是有益的,因为它允许采用对数移位器的形式的结果移位电路在完整精度的结果移位值可用之前开始其对中间尾数的右移以产生结果尾数。这减小了近路径的延迟。
最小值电路可以具有多种不同的形式并且以各种不同的方式计算最小值。最小值电路操作的一种方式在允许较早的生成结果移位值的高阶位方面被认为是非常方便的,这种方式是当所述最小值电路具有两个输入LZ和EA时,通过按以下方式确定长度为2i(从i=0开始)的所述结果移位值的一系列前缀部分Pi来确定结果移位值:
Pi=(LZi AND NOT GRi)OR(EAi AND GRi),其中
LZi为长度为2i的LZ的前缀部分;
EAi为长度为2i的EA的前缀部分;
对于i=0和有效位递减的每个位位置k,EQi[k]=NOT(LZ[k]XOR EA[k]);
对于i=0和有效位递减的每个位位置k,当LZ[k]>EA[k]时GRi[k]=1,当LZ[k]≤EA[k]时GRi[k]=0;
对于i>0和有效位递减的每个位位置k,EQi[k]=EQi‑1[k]AND EQi‑1[k+2(i‑1)];以及
对于i>0和有效位递减的每个位位置k,GRi[k]=GRi‑1[k]OR(Ei‑1[k]ANDGRi‑1[k+2(i‑1)])。
近路径可被使用的限制情况是其中近距离预定量为1的情况。当结果浮点数为非正规浮点数时,该技术特别有用。
从另一方面来看,本发明提供了一种用于将第一浮点数减去第二浮点数,所述第一浮点数具有指数值EA和尾数值MA,所述第二浮点数具有指数值EB和尾数值MB并且EA大于或等于EB,所述浮点加法器电路包括:
近路径电路,被配置为当所述第一浮点数和所述第二浮点数匹配至少一个预定的近路径条件时生成结果浮点值,所述近路径电路具有:
近路径加法器,被配置为确定与(MA‑MB)相对应的中间尾数值MI;
前导零计数电路,被配置为确定与在从MI的最高有效位端开始MI内的前导零值的游程相对应的前导零值LZ;
最小值电路,被配置为将结果移位值确定为LZ和EA中较低的值;以及
结果移位电路,被配置为将MI左移与所述结果移位值相对应的多个位的位置以生成构成结果浮点数的一部分的结果尾数MR。
应当理解减小近路径内的延迟时间的技术可以与用于减小远路径内的延迟时间的技术互相独立地被使用。然而,对这些技术的组合使用是有益的,因为近路径和远路径可以被保持平衡的延迟时间。
本发明的另一方面提供用于确定将第一浮点数和第二浮点数相加时所使用的粘滞位的浮点运算电路,所述第一浮点数具有指数值EA和尾数值MA,所述第二浮点数具有指数值EB和尾数值MB并且EA大于或等于EB,所述浮点运算电路包括:
移位量确定电路,被配置为确定取决于(EA‑EB)的移位量,所述移位量对应于要被应用于MB以形成要与MA相加的MB的移位后的版本的右移位:
尾随零计数电路,被配置为确定与在从MB的最低有效位端开始MB的尾随零值的游程相对应的尾随零值;以及
粘滞位值确定电路,被配置为将所述移位量与所述尾随零值进行比较以确定所述粘滞位的值,所述粘滞位指示是否有任何非零位将从要与MA相加的所述MB的移位后版本中被移出。
本发明的其它方面在所附权利要求中被列出。
根据结合附图描述的以下对说明性实施例的详细描述,本发明的以上和其它目的、特征和优点将变得清楚。
附图说明
图1示意性地图示了包括浮点加法器电路的集成电路;
图2和图3示意性地图示了用于确保浮点加法结果基于已知了哪个输入量值更大的输入被生成的两种方法;
图4示意性地图示了包括远路径加法器和近路径加法器的浮点加法器电路;
图5示意性地图示了16位浮点数的格式;
图6示意性地图示了包括尾随零计数电路的远路径加法器;
图7示意性地图示了包括最小值电路的近路径加法器电路;
图8示意性地图示了利用尾随零计数来确定粘滞位的等同物的16位浮点加法内的数据流;以及
图9示意性地图示了利用尾随零计数来确定粘滞位的等同物的16位浮点减法内的数据流。
具体实施方式
图1示意性地图示了包括用于存储浮点数的一排浮点寄存器4和包括多个处理级的数据处理流水线6的集成电路2,所述处理级中的至少一个提供浮点加法器电路8。根据数据处理系统中的传统流水线,流水线级被公共时钟驱动,所述公共时钟控制一个处理级的结果向下一个处理级的推进。可以减少与在每个处理级执行的处理相关联的延迟时间的措施是有益的,因为它们例如可以允许使用更高的时钟频率并且因此在给定时间量内完成更大量的数据处理。被减少的延迟时间还可以增大处理级之间的定时驰豫(timing slack),具有使设计更加鲁棒的优点。
在根据这里所描述的示例实施例的浮点加法器电路中,假设具有最高量值的浮点数被提供作为输入加数A并且具有最低量值的浮点数被提供作为输入加数B。当两个任意浮点数作为浮点加法器电路8的输入被接收时,可能提前不知道哪个浮点数具有更大的量值。图2和图3图示了处理这个问题的两种可能的方法。
在图2中,比较电路10用于比较两个输入加数的量值(或者至少是指数的量值)。然后,该比较的结果被用于控制多路选择器12,14以引导第一输入加数和第二输入加数,从而形成到浮点加法器电路16的输入A和B中的适当的相应加数。这种方法具有增加相对来说很少的附加门的优点,但是由于在浮点加法器电路16可以开始操作之前需要确定来自比较电路10的结果,所以这种方法具有增大了与浮点加法相关联的延迟时间的缺点。
图3图示了替代方法。在该方法中,浮点加法器电路18,20是被复制的,并且每个电路都接收这两个输入加数。在浮点加法器电路18中,假设第一输入加数的量值大于第二输入加数。在第二浮点加法器电路20中,假设第二输入加数的量值大于第一输入加数。浮点加法器电路18和浮点加法器电路20并行操作来计算各自的结果浮点数。这些浮点数中的一个将是不正确的,因为它是基于关于第一输入加数和第二输入加数中哪个加数的量值更大的不正确假设的。在通过由浮点加法器电路18和浮点加法器电路20执行的计算过程中,可以做出关于第一输入加数和第二输入加数中哪一个加数更大的判断。该判断结果被提供给多路选择器22以选择来自正在使用正确假设的浮点加法器电路18,20的结果浮点数。这种方法具有产生较少的与浮点加法相关联的延迟增加的优点,但是具有需要更多的门数目的缺点,因为浮点加法器电路18,20被复制以提供被配置为形成基于第一假设的第一处理路径和基于第二假设的第二处理路径的复制电路。
图4示意性地图示了被用于将两个浮点数相加(或相减)的浮点加法器电路24。这些浮点数中的每个浮点数包括符号位S,指数位字段E和尾数位字段M。本领域技术人员将熟知,在浮点加法器电路20中提供有当将量值不近似的两个浮点数相加(或相减)时所使用的远路径电路26以及当将量值近似的两个浮点数相加(或相减)时所使用的近路径电路28。多路选择器30被对于两个输入加数之间的量值差值的大小的判断结果控制,以选择来自远路径电路26的输出或来自近路径电路28的输出作为结果浮点值。决定远路径电路26和近路径电路28中哪一个要被使用的远路径条件和近路径条件可以按以下方式被评估:
1:如果两个输入具有相同符号,则这是“有效相加”,使用远路径。
2:如果Ea‑Eb大于1,则远路径被使用。
3:如果Ea‑Eb为零并且两个输入具有相反的符号,则近路径被使用。
4:如果Ea‑Eb为1并且输入具有相反的符号,则尾数位被检查:如果Ma的最高位的下一位(即,在前导1位之后的最高位)为1,则远路径被使用,否则近路径被使用。
图5示意性地图示了根据IEEE‑754‑2008标准的16位浮点数的格式。具体而言,这些浮点数包括单个符号位,5位指数字段和10位尾数字段。这些字段内的位值与所表示的浮点数之间的关系在图5中被示出。可以看到指数值被进行了“‑15”的偏移。这导致当指数字段[14:10]具有最低正常值1时,所表示的浮点数包括2‑14的因子。如果想要表示更小的浮点数,则不可能进一步减小指数值,因此非正规数被使用。就非正规数而言,指数字段为全零,但是尾数字段与在小数点位置左边的假设的前导值“1”不相关联。因此,在尾数值内有前导零,例如“0.000...”。这种非正规值对本领域技术人员来说将是熟知的。
图6示意性地图示了远路径电路18。具有最大量值(或者至少最大指数)的输入加数被提供在输入A上。另一输入浮点数被提供在输入B上。应当理解如果指数值相同,则无所谓输入加数以何种顺序被应用于输入A和B。远路径电路18的操作的总体原则是较小量值的输入加数被第二加数移位器电路24进行右移位,以在远路径加法器26将两个尾数值相加之前,使两个加数的有效指数值相等并对齐尾数内的小数点位置。
在传统的远路径电路中,被右移出将通过远路径加法器26相加的有效位范围的较小输入加数的位需要被检查以确定它们是否会导致向结果尾数值的借位,该借位可能影响之后被应用于尾数值的舍入。确定这个借位值(或粘滞位)的传统方法是对低量值输入加数中被右移出远路径加法器26的范围的所有低阶位执行逻辑OR。使用这种逻辑OR方法的问题是它引入了不利的额外延迟时间。图6的电路采用了不同的方法。
指数差值计算电路28确定相应的输入加数A,B的两个指数值之间的差值。这作为输入被提供给第二加数移位器电路24以控制被应用于较小输入加数的尾数的右移量,如上所述。指数值的差值(EA‑EB)也被提供作为后缀值30,该后缀值30与输入加数中较小加数的右移后的尾数串接。一个填充位PB被插入到移位后的尾数32和指数差值(EA‑EB)之间。第二加数移位器电路24将在B路径上远路径加法器26的输入的最高有效的(EA‑EB)位填充零值32。因而,在B路径上被提供给远路径加法器26的第二加数被形成为输入尾数B去掉其(EA‑EB)个最低有效位再与一个填充位和后缀值以及由第二加数移位器电路24插入的零前缀值串接,所述后缀值表示由指数差值计算电路28计算的指数差值。
与第二加数移位器电路24的操作并行地,附加电路33对B路径的尾数MB附加两个零。尾随零计数电路34从B路径接收具有两个附加零位的输入尾数值,并对尾随零的数目进行计数(即,对从具有两个附加零的尾数值的算术最低有效位端开始出现的连续零的数目进行计数)。然后,该尾随零值(TZ+2)在与三个填充位以及沿A路径提供的尾数值MA串接之前被进行NOT操作以形成A路径的尾数MA的后缀。来自A路径的尾数MA加上三个填充位后接NOT(TZ)的后缀用作远路径加法器26的第一加数。远路径加法器26将包括它们的后缀值的第一加数和第二加数相加以产生结果尾数值Mr。
与两个后缀字段(EA‑EB)和NOT(TZ)相加的结果产生进位,该进位与根据之前的技术所计算的粘滞位相同。因此,由后缀值的相加所产生的这个进位可以沿进位通路被馈送到结果尾数的最低位的位置并且用于在执行舍入到最近值时实现必要的舍入。
填充位所具有的值使得当这些值被求和时产生对应于输出尾数值的最低精度单位的一半的结果。或者这种半ULP值可以被单独添加到尾数总和。
为了处理舍入到偶数的需求,如果保护位、舍入位和粘滞位都为零,则尾数结果的最低有效位通过比较器27和多路选择器31的操作被设为零。
应当理解两个后缀值可以以任一方式应用于路径A和B,即NOT(TZ)可以是路径B中的后缀,(EA‑EB)可以是路径A上的后缀。此外,后缀值也可以是T2和NOT(EA‑EB)。所有这些可能性都被包括在本发明的技术中。
这些技术工作在通过远路径加法器26相加的值的长度增加不超过2的乘幂边界时。这等同于如下条件:MA的位长大于或等于2X,其中X是正整数,并且第一加数的位长小于2(X+1)。
应当理解远路径加法器电路18通常包括很多其它处理元件。这些处理元件例如可以负责符号位的处理,结果指数值的生成,为了执行减法而对尾数值中的一个进行的反相,以及本领域技术人员所熟知的其它处理需求。包括这些附加元件的电路被包括在本发明的技术中。
考虑以下简化示例:
Ma=1.01010,Ea=5
Mb=1.10100,Eb=2
Mb有两个尾随零,但是通过填充Mb得到了4个尾随零。
现在,执行右移和加法:
1.01010_00_0_011//Ma加上三个填充零,然后是移位量。
+0.00110_10_0_011//Mb被右移三位,保持移位后的尾数的2个最低有效位,后接一个填充位再后接NOT(TZ+2)
+0.00000_10_0_000//ULP的一半
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
+1.10001_00_0_110//中间结果
GRS
GRS为全零,所以尾数结果的LSB必须被清除:
+1.10001 AND NOT LSB=1.10000为正确结果。
图7示意性地图示了近路径电路20。当输入加数具有相同的指数值或者最多相差1的指数值时,该近路径电路20被使用。如果指数值不同,则该差值通过指数差值电路36检测到,该指数差值电路36因此控制尾数移位电路38将B路径的输入加数右移一位的位置以使有效指数相等并且对齐尾数内的小数点位置。来自A路径的尾数MA和尾数MB(可能被尾数移位电路38右移)被作为输入加数提供给近路径加法器40。近路径加法器40生成中间尾数值MI。
应当理解当两个输入加数的量值相似并且减法被执行时,结果浮点数的量值可能远小于两个输入浮点数。如果输入浮点数本身接近于所使用的浮点数格式可能支持的最小值,则有可能生成非正规结果浮点数。
前导零计数电路42用于对中间尾数值中的前导零的数目(从尾数的算术最高有效位端开始的连续零值的数目)进行计数,以使得中间尾数值可被左移以尽可能产生正常浮点数。然而,如果这种减法的输入的指数值很小,或者输入碰巧非常近似使得差值很小,则可能会出现左移由前导零计数电路42所计数的前导零值LZ的完整量会导致无效指数值,该指数值太小以至于不能用所考虑的浮点数格式正确表示。
具体而言,如果指数值字段的最小允许值为零并且如果由前导零计数值LZ指示的左移指示指数字段值应当为负值(在形式上应用‑15的偏移),则该指数值不能被正确表示。可以在这些结果值被生成之后尝试捕获它们,但是这种机制需要在结果被生成之后(即,在被接收中间尾数值的结果移位电路44进行了左移之后)对结果进行检查,所以通常会增加延迟时间。结果移位电路44是可被用于首先应用较大位移之后再应用较小位移的对数移位器。
本发明的近路径电路20包括最小值电路46,该最小值电路46接收较大输入加数的指数值EA以及前导零值LZ作为输入。最小值电路产生结果移位值,指定要由结果移位电路44产生的左移位数。该结果移位值基于输入LZ和EA被确定。图7中所示的是利用生成结果移位值的这两个输入LZ和EA执行的算术和逻辑操作。具体而言,如果最小值电路46具有两个输入LZ和EA,则该电路被配置为通过确定长度为2i(从i=0开始)的所述结果移位值的一系列前缀部分Pi为以下值来确定结果移位值:
Pi=(LZi AND NOT GRi)OR(EAi AND GRi),其中
LZi为长度为2i的LZ的前缀部分;
EAi为长度为2i的EA的前缀部分;
对于i=0和有效位递减的每个位位置k,EQi[k]=NOT(LZ[k]XOR EA[k]);
对于i=0和有效位递减的每个位位置k,当LZ[k]>EA[k]时GRi[k]=1,当LZ[k]≤EA[k]时GRi[k]=0;
对于i>0和有效位递减的每个位位置k,EQi[k]=EQi‑1[k]AND EQi‑1[k+2(i‑1)];以及
对于i>0和有效位递减的每个位位置k,GRi[k]=GRi‑1[k]OR(Ei‑1[k]ANDGRi‑1[k+2(i‑1)])。
对结果移位值的这种评估使得结果移位值的高阶位在结果移位值的低阶位之前可用。因此,结果移位值的这些高阶位可以被提供给结果移位电路44以在结果移位值的低阶位可用之前控制其高阶移位。这允许最小值电路46的评估至少部分地与结果移位电路44的操作并行执行。这减少了通过近路径电路20的延迟时间。
最小值电路首先传送最高位。
该电路按如下方式工作:
*对于两个输入值LZ和EA中的每个位位置,确定两个位‘EQ’和‘GR’;‘EQ’对应于来自LZ的位等于来自输入EA的位的情况;位‘GR’对应于来自LZ的位大于来自输入EA的位。
*基于针对每个位位置的‘EQ’和‘GR’位EQ[k]和GR[k],可以通过按如下方式合并‘EQ’和‘GR’位来计算针对任意2位序列的‘EQ’和‘GR’位:
*EQ_combined=EQ_high AND EQ_low
*GR_combined=GR_high OR(EQ_high AND GR_low)
*根据针对任意2位序列的‘EQ’和‘GR’位,可以将来自相邻2位序列的‘EQ’和‘GR’位合并以计算针对每个4位序列的‘EQ’和‘GR’位。
*然后,对相邻4位序列重复该合并过程以形成针对每个8位序列的‘EQ’和‘GR’,对相邻8位序列重复该合并过程以形成针对16位的‘EQ’和‘GR’,等等。
最后,针对每个位位置确定‘GR’值;该GR位可被用于选择LZ和EA的最小值:min(LZ,EA)=(LZ AND NOT GR)OR(EA AND GR)
这样不会自己首先提供最高位。然而,对于最小值函数,如果我们定义了只返回其输入的特定数目的高阶位的函数prefix(),则存在关系prefix(min(a,b))=min(prefix(a),prefix(b));
(例如,如果前缀函数返回最高4位,a=01011100并且b=10101111,则min(a,b)=01011100,prefix(a)=0101,prefix(b)=1010,prefix(min(a,b))=0101并且min(prefix(a),prefix(b))=0101),所述关系成立)
不管prefix()函数返回多少位,所述关系都成立。
该关系可以按以下方式结合‘EQ’和‘GR’位被使用:
*因为LZ和EA的最高位是LZ和EA的1位前缀,所以可以利用针对最高位的‘GR’位来正确地确定最小值结果的最高位。
*类似地,对于最高2位,可以利用针对最高2位序列的‘GR’位来正确地确定最小值结果的最高2位。
*对于最高4位,可以利用针对最高4位序列的‘GR’位来正确地确定最小值结果的最高4位。
*对于8,16,32位等等,可以类推。
按照这种方式,正确的最小值位可以用最高位优先的方式被得到。
在以下示例中,有位串LZ=01010111和EA=01010101,尝试计算X=min(LZ,EA):
*首先,计算针对每个位位置的‘EQ’和‘GR’位;该计算给出EQ=11111101和GR=00000010。
*此时,针对最高位的‘GR’为′0′,所以X的最高位被计算为(LZ AND NOT GR)OR(EA AND GR),得到′0′。
*接下来,针对相邻位位置合并‘EQ’和‘GR’位;得到EQ=1111100和GR=0000011。
*此时,针对最高2位序列的‘GR’为′0′,所以最高两位可被计算为(LZ AND NOT GR)OR(EA AND GR),得到′01′。(当然,此时计算最高位是多余的,因为之前已经计算过了。)
*接下来,针对相邻2位位置合并‘EQ’和‘GR’位;得到EQ=11100和GR=00011。
*此时,针对最高4位序列的‘GR’为′0′,所以最高四位可被计算为(LZ AND NOT GR)OR(EA AND GR),得到′0101′。(此时计算最高两位是多余的,因为之前已经计算过了。)
*接下来,针对相邻4位位置合并‘EQ’和‘GR’位;得到针对整个数的最终的‘EQ’和‘GR’值:‘EQ’=0,‘GR’=1。
*此时,针对整个8位数的‘GR’为′1′,所以最高八位可被计算为(LZAND NOT GR)OR(EAAND GR),得到′01010101′。(当然,此时计算最高四位是多余的,因为之前已经计算过了。)
注意针对1位、2位和4位前缀的结果是怎样早于针对整个8位数的结果被得到的。
如前所述,近路径被用于处理发生抵消的情况(A和B的浮点相加,其中A非常接近于‑B);在这种情况下,需要执行左移来规范化结果浮点数的尾数。然而,抵消可能会导致浮点数非常小以至于变成了非正规数;在这种情况下,必须限制所执行的左移。
通过对相减后的尾数执行计数前导零(CLZ)来实现规范化。为此,在CLZ之前前置单个′0′位,然后执行CLZ操作,然后在CLZ结果和较大输入数的指数之间执行最小值操作,然后将最小值操作的结果用作移位量来应用于结果数。
首先考虑其中结果不是非正规数的FP16的示例。
*假设A=0_00111_1100001010且B=1_00111_1000000000
*将这两个数分成指数和尾数(隐含的1位),得到:A_exp=00111,A_mant=11100001010,B_exp=00111,B_mant=1100000000。较大的指数为MaxExp=max(A_exp,B_exp)=00111。
然后,在相减之前对尾数前置和附加零:
A_mant:=0_11100001010_0
B_mant:=0_11000000000_0
然后执行实际的减法:
Diff=A_mant‑B_mant=0001000010100
对该结果执行计数前导零,得到Cdiff=CLZ(Diff)=3。
然后计算最小值:Lsh=Min(Cdiff,MaxExp)=3。然后执行′Lsh′位的左移以得到结果尾数值Res_mant=Diff<<Lsh=1000010100000。由于结果为正常值,所以计算指数为:Res_exp=MaxExp+1‑Cdiff=00100。然后得到尾数值,去掉最低两位。
然后组合最后的结果:Res=0_00100_0000101000(注意由于尾数的MSB是隐含的,所以并不实际出现在结果中。)
然后,考虑第二个FP16的示例,其中结果是非正规数。
*假设A=0_00010_1100001010且B=1_00010_1100000000
*将这两个数分成指数和尾数(隐含的1位),得到:A_exp=00010,A_mant=11100001010,B_exp=00010,B_mant=11100000000。较大的指数为MaxExp=max(A_exp,B_exp)=00010。
然后,在相减之前对尾数前置和附加零:
A_mant:=0_11100001010_0
B_mant:=0_11100000000_0
然后执行实际的减法:
Diff=A_mant‑B_mant=0000000010100
对该结果执行计数前导零,得到Cdiff=CLZ(Diff)=8。
然后计算最小值:Lsh=Min(Cdiff,MaxExp)=2。然后执行′Lsh′位的左移以得到结果尾数值Res_mant=Diff<<Lsh=0000001010000。由于结果为非正规的,所以指数为零。同样得到尾数值,去掉最低两位。然后组合最后的结果:Res=0_00000_0000010100(同样,尾数的MSB不出现在最后的结果中;对于这种非正规情况,该MSB为零。)
两个示例涵盖了具有相同量值级别的两个输入;在具有不同量值的两个输入的情况下,量值可以最多相差1(或者系统已使用远路径);在这种情况下,较小数的尾数在相减之前将被前置两个零位但不附加零位,而较大数的尾数将被前置一个零位并附加一个零位。
注意在正常结果和非正规结果两种情况下,相加后的结果尾数的最低有效的两位被去掉。对于将具有相等量值的两个数相减的情况,这两个位被确保为0,因为移位量始终至少为1。对于将具有不同量值的两个数相减的情况,可能得到为1的移位量,因而在这些位中得到非零数据;在这种情况下,近路径产生不正确的结果,并且要返回的整体加法器结果必须从远路径获取。
图7在其右下角的部分图示了两个输入怎样可能相减产生中间尾数值,该中间尾数值根据其全部前导零的数目被左移将产生无效数,因为相应的指数将小于可以用所考虑的格式有效表示的最小值。在这种情况下,最小值电路46用于将所应用的左移位数限制为前导零值LZ和较大输入的指数EA中的较低值。由最小值电路46确定的结果移位值与结果移位电路44的操作并行确定,使得近路径电路20内的延迟时间减少。
图8示意性地图示了在浮点加法期间两个16位浮点数内的字段与远路径加法器内所计算(或组成)的值之间的关系。具体而言,在图8中,在处理级48中,指数值的差值被用于形成5位移位值SH。在处理级50中,尾随零值(TZ+2)根据最低量值的输入尾数的扩展版本(通过附加两个零位)被计算。在高估的结果路径和低估的结果路径中,都形成带后缀的尾数值,所述后缀分别包括指数值的差值52和尾随零计数值的NOT值54。具有固定值的附加填充位53被插入到要被相加的尾数中,如图8中所示。这些用于将等于尾数结果的最低精度单位(ULP)的一半的值加到总和中。两个后缀值52,54相加的结果是由此生成了代表粘滞位的进位,所述粘滞位可以通过对在指数均衡和小数点对齐操作期间被右移出有效位范围的尾数MB的位执行多位OR操作来生成。所述进位值(替换粘滞位)用于根据需要通过尾数加法向上进位以将适当的舍入应用于本领域技术人员所熟知的最近值舍入模式。
图9与图8类似,只是图9对应于减法。在这种情况下,指数差值(EA‑EB)被用作一个后缀56,另一个后缀用尾随零值58来设置。填充位57具有不同的值以实现1/2ULP加法。此外,在B路径上输入的较低量值的尾数在被提供给远路径加法26之前被进行NOT操作,如字段60所示,使得远路径加法器26的操作为减法而不是加法。
粘滞位可以按结合图6所述的方式在与所提供的任何主加法器相分离的其自己的浮点运算电路中被计算。当某个非零位被移出主求和计算时,所述粘滞位指示该非零位被移出主求和计算。移位量根据指数差值EA‑EB来计算(移位量并不总是正好等于该差值,只是利用该差值来计算)。如果B加数中尾随零的数目被计数,则比较移位量和尾随零计数可以指示当主求和计算被执行时是否有任何非零位将被移出(即,可以确定粘滞位是否应当被设置)。这可以在B加数被移位之前被确定。
在一些实施例中,尾随零计数可以在确定哪个操作数更大之前针对两个操作数被执行(或者至少开始执行)。类似地,两个移位量Ea‑Eb和Eb‑Ea可以在确定哪个操作数更大之前被计算(或者至少开始计算)。粘滞位确定电路可以与上述的其它特征组合使用。
虽然本发明的说明性实施例已在这里参考附图进行了详细描述,但是应当理解本发明并不局限于那些确切的实施例,本领域技术人员可以进行各种改变和修改而不脱离由所附权利要求定义的本发明的范围和精神。

浮点加法器.pdf_第1页
第1页 / 共27页
浮点加法器.pdf_第2页
第2页 / 共27页
浮点加法器.pdf_第3页
第3页 / 共27页
点击查看更多>>
资源描述

《浮点加法器.pdf》由会员分享,可在线阅读,更多相关《浮点加法器.pdf(27页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102855117 A (43)申请公布日 2013.01.02 C N 1 0 2 8 5 5 1 1 7 A *CN102855117A* (21)申请号 201210229706.6 (22)申请日 2012.06.29 1111035.0 2011.06.29 GB 1111399.0 2011.07.05 GB G06F 7/485(2006.01) (71)申请人 ARM有限公司 地址英国剑桥 (72)发明人卓恩尼斯塔德 (74)专利代理机构北京东方亿思知识产权代理 有限责任公司 11258 代理人李晓冬 (54) 发明名称 浮点加法器 (57) 摘要 本。

2、公开涉及一种浮点加法器。浮点加法器电 路16,18,20被提供有远路径电路18和近路径电 路20。远路径电路利用尾随零TZ的计数和输入 操作数指数的差值来形成相应的后缀值,该后缀 值与输入加数的尾数串接并且当被求和时用于生 成代替传统被计算的粘滞位的进位。在近路径内, 最小值电路46被用于计算在相减中产生的中间 尾数的前导零计数与输入操作数指数值的较大值 中的较低值,以使得被应用于中间尾数值的左移 位不会由于所应用的去除前导零的左移位太大并 且因此对应于不能被有效表示的指数,而产生无 效的浮点结果。 (30)优先权数据 (51)Int.Cl. 权利要求书5页 说明书11页 附图10页 (19)。

3、中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 5 页 说明书 11 页 附图 10 页 1/5页 2 1.一种浮点加法器电路,用于将第一浮点数与第二浮点数相加,所述第一浮点数具有 指数值E A 和尾数值M A ,所述第二浮点数具有指数值E B 和尾数值M B ,并且E A 大于或等于E B , 所述浮点加法器电路包括: 远路径电路,被配置为当所述第一浮点数和所述第二浮点数匹配至少一个预定的远路 径条件时生成结果浮点值,所述远路径电路具有: 尾随零计数电路,被配置为确定与在从M B 的最低有效位端开始M B 的最低有效(E A -E B ) 位内的尾随零值的游程相对应的尾随零值。

4、TZ;以及 远路径加法器,被配置为将第一加数值与第二加数值相加,所述第一加数值包括M A 与 第一后缀值串接,所述第二加数值包括不带其(E A -E B )最低有效位的M B 与第二后缀值串接; 其中 所述第一后缀值和所述第二后缀值依赖于TZ和(E A -E B )中相应的一个而形成。 2.根据权利要求1所述的浮点加法器电路,其中,所述第一后缀值和所述第二后缀值 依赖于TZ和NOT(E A -E B )中相应的一个而形成。 3.根据权利要求2所述的浮点加法器电路,其中,所述第一后缀值包括三个填充位后 接第一后缀结尾值,所述第二后缀值包括一个填充位后接第二后缀结尾值,所述第一后缀 结尾值和所述第。

5、二后缀结尾值包括(TZ+2)和NOT(E A -E B )中相应的值。 4.根据权利要求3所述的浮点加法器电路,其中,所述三个填充位和所述一个填充位 总和为与所述远路径加法器的输出中的最低精度单位的一半相对应的值。 5.根据权利要求1所述的浮点加法器电路,其中,所述第一后缀值和所述第二后缀值 依赖于NOT(TZ)和(E A -E B )中相应的一个值而形成。 6.根据权利要求5所述的浮点加法器电路,其中,所述第一后缀值包括三个填充位后 接第一后缀结尾值,所述第二后缀值包括一个填充位后接第二后缀结尾值,所述第一后缀 结尾值和所述第二后缀结尾值包括NOT(TZ+2)和(E A -E B )中相应的。

6、值。 7.根据权利要求6所述的浮点加法器电路,其中,所述三个填充位和所述一个填充位 总和为与所述远路径加法器的输出中的最低精度单位的一半相对应的值。 8.根据权利要求1所述的浮点加法器电路,其中,所述第二加数具有(E A -E B )个零值的 前缀。 9.根据权利要求1所述的浮点加法器电路,其中,所述远路径电路具有第二加数移位 器电路,所述第二加数移位器电路被配置为与所述尾随零计数电路并行操作,所述第二加 数移位器电路将MB逻辑右移(E A -E B )位的位置。 10.根据权利要求9所述的浮点加法器电路,其中,所述第二加数移位器电路在所述第 二加数值的最高有效的(E A -E B )位的位置。

7、中提供前导零值。 11.根据权利要求1所述的浮点加法器电路,其中,所述远路径电路具有被配置为与所 述尾随零计数电路并行操作的指数差值计算电路,所述指数差值计算电路计算(E A -E B )的 值。 12.根据权利要求1所述的浮点加法器电路,其中,M A 的位长大于或等于2 X ,其中X是 正整数,并且所述第一加数的位长小于2 (X+1) 。 13.根据权利要求1所述的浮点加法器电路,其中,第一输入加数和第二输入加数被接 收,并且所述浮点加法器电路包括复制电路和多路选择器,所述复制电路被配置为形成假 权 利 要 求 书CN 102855117 A 2/5页 3 设所述第一输入加数大于所述第二输入。

8、加数的第一处理路径以及假设所述第二输入加数 大于所述第一输入加数的第二处理路径,所述多路选择器用于当在加法处理已经在所述复 制路径中至少部分完成之后确定了所述第一输入加数和所述第二输入加数中哪个更大后, 选择来自所述第一处理路径和所述第二处理路径之一的结果。 14.根据权利要求1所述的浮点加法器电路,其中,第一输入加数和第二输入加数被接 收,并且所述浮点加法器电路包括比较电路和切换电路,所述比较电路被配置为执行对所 述第一输入加数和所述第二输入加数的比较以确定哪个更大,所述切换电路被配置为在所 述第一输入加数和所述第二输入加数的相加开始之前,将所述第一输入加数和所述第二输 入加数的路径切换为根。

9、据所述比较确定的路径。 15.根据权利要求1所述的浮点加法器电路,其中,所述远路径电路具有反相电路,该 反相电路被配置为在所述加法器电路将所述第一加数和所述第二加数相加之前对M B 内的 位进行反相,以使得从所述第一浮点值减去所述第二浮点值。 16.根据权利要求1所述的浮点加法器电路,所述浮点加法器电路包括: 近路径电路,被配置为当所述第一浮点数和所述第二浮点数匹配至少一个预定的近路 径条件时生成结果浮点值,所述近路径电路具有: 近路径加法器,被配置为确定与(M A -M B )相对应的中间尾数值M I ; 前导零计数电路,被配置为确定与在从M I 的最高有效位端开始M I 内的前导零值的游程。

10、 相对应的前导零值LZ; 最小值电路,被配置为将结果移位值确定为LZ和E A 中较低的值;以及 结果移位电路,被配置为将M I 左移与所述结果移位值相对应的多个位的位置以生成构 成结果浮点数的一部分的结果尾数M R 。 17.根据权利要求16所述的浮点加法器电路,其中,所述近路径电路具有尾数移位电 路,所述尾数移位电路被配置为如果E A 不等于E B 则在M B 被输入到所述近路径加法器之前 对M B 执行(E A -E B )位位置的右移。 18.根据权利要求16所述的浮点加法器电路,其中,所述最小值电路被配置为在所述 结果移位值的一个或多个低阶位之前生成所述结果移位值的一个或多个高阶位。 。

11、19.根据权利要求18所述的浮点加法器电路,其中,所述结果移位电路是被配置为将 M I 右移由所述结果移位量给定的多个位位置的对数移位器,所述对数移位电路被配置为在 所述一个或多个低阶位已被所述最小值电路生成之前开始任何取决于所述一个或多个高 阶位的左移。 20.根据权利要求16的浮点加法器电路,其中,所述最小值电路具有与LZ和E A 相对应 的两个输入P和Q,并且通过将长度为2 i 的所述结果移位值的一系列前缀部分P i ,从i0 开始,确定为以下值来确定所述结果移位值: P i (LZ i AND NOT GR i )OR(E Ai AND GR i ),其中 LZ i 为长度为2 i 的。

12、LZ的前缀部分; E Ai 为长度为2 i 的E A 的前缀部分; 对于i0和有效位递减的每个位位置k,EQ i k为NOT(LZkXORE A k); 对于i0和有效位递减的每个位位置k,当LZkE A k时GR i k1,并且当 LZkE A k时GR i k0; 权 利 要 求 书CN 102855117 A 3/5页 4 对于i0和有效位递减的每个位位置k,EQ i kEQ i-1 kAND EQ i-1 k+2 (i-1) ;以及 对于i0和有效位递减的每个位位置k,GR i kGR i-1 kOR(E i-1 kAND GR i-1 k+2 (i-1) )。 21.根据权利要求16。

13、所述的浮点加法器电路,其中,所述近路径预定量为1。 22.根据权利要求16所述的浮点加法器电路,其中,所述最小值电路约束所述结果移 位值以使得所述结果浮点数为有效的非正规浮点数。 23.一种浮点加法器电路,用于从第一浮点数减去第二浮点数,所述第一浮点数具有指 数值E A 和尾数值M A ,所述第二浮点数具有指数值E B 和尾数值M B ,并且E A 大于或等于E B ,所 述浮点加法器电路包括: 近路径电路,被配置为当(E A -E B )小于近路径预定量时生成结果浮点值,所述近路径电 路具有: 近路径加法器,被配置为确定与(M A -M B )相对应的中间尾数值M I ; 前导零计数电路,被。

14、配置为确定与在从M I 的最高有效位端开始M I 内的前导零值的游程 相对应的前导零值LZ; 最小值电路,被配置为将结果移位值确定为LZ和E A 中较低的值;以及 结果移位电路,被配置为将M I 左移与所述结果移位值相对应的多个位的位置以生成构 成结果浮点数的一部分的结果尾数M R 。 24.根据权利要求23所述的浮点加法器电路,其中,所述近路径电路具有尾数移位电 路,所述尾数移位电路被配置为如果E A 不等于E B 则在M B 被输入到所述近路径加法器之前 对M B 执行(E A -E B )位位置的右移。 25.根据权利要求23所述的浮点加法器电路,其中,所述最小值电路被配置为在所述 结果。

15、移位值的一个或多个低阶位之前生成所述结果移位值的一个或多个高阶位。 26.根据权利要求25所述的浮点加法器电路,其中,所述结果移位电路是被配置为将 M I 右移由所述结果移位量给定的多个位位置的对数移位器,所述对数移位电路被配置为在 所述一个或多个低阶位已被所述最小值电路生成之前开始任意取决于所述一个或多个高 阶位的左移。 27.根据权利要求23的浮点加法器电路,其中,所述最小值电路具有与LZ和E A 相对应 的两个输入P和Q,并且通过将长度为2 i 的所述结果移位值的一系列前缀部分P i ,从i0 开始,确定为以下值来确定所述结果移位值: P i (LZ i AND NOT GR i )OR。

16、(E Ai AND GR i ),其中 LZ i 是长度为2 i 的LZ的前缀部分; E Ai 是长度为2 i 的E A 的前缀部分; 对于i0和有效位递减的每个位位置k,EQ i k为NOT(LZkXORE A k); 对于i0和有效位递减的每个位位置k,当LZkE A k时GR i k1并且当 LZkE A k时GR i k0; 对于i0和有效位递减的每个位位置k,EQ i kEQ i-1 kAND EQ i-1 k+2 (i-1) ;以及 对于i0和有效位递减的每个位位置k,GR i kGR i-1 kOR(E i-1 kAND GR i-1 k+2 (i-1) )。 28.根据权利要求。

17、23所述的浮点加法器电路,其中,所述近路径预定量为1。 权 利 要 求 书CN 102855117 A 4/5页 5 29.根据权利要求23所述的浮点加法器电路,其中,所述最小值电路约束所述结果移 位值以使得所述结果浮点数为有效的非正规浮点数。 30.一种浮点加法器电路,用于将第一浮点数与第二浮点数相加,所述第一浮点数具有 指数值E A 和尾数值M A ,所述第二浮点数具有指数值E B 和尾数值M B ,并且E A 大于或等于E B , 所述浮点加法器电路包括: 远路径装置,被配置为当所述第一浮点数和所述第二浮点数匹配至少一个预定的远路 径条件时生成结果浮点值,所述远路径装置具有: 尾随零计数。

18、装置,用于确定与在从M B 的最低有效位端开始M B 的最低有效(E A -E B )位内 的尾随零值的游程相对应的尾随零值TZ;以及 远路径加法器装置,用于将第一加数值与第二加数值相加,所述第一加数值包括M A 与 第一后缀值串接,所述第二加数值包括不带其(E A -E B )最低有效位的M B 与第二后缀值串接; 其中 所述第一后缀值和所述第二后缀值依赖于TZ和(E A -E B )中相应的一个而形成。 31.一种浮点加法器电路,用于从第一浮点数减去第二浮点数,所述第一浮点数具有指 数值E A 和尾数值M A ,所述第二浮点数具有指数值E B 和尾数值M B ,并且E A 大于或等于E B。

19、 ,所 述浮点加法器电路包括: 近路径装置,用于当所述第一浮点数和所述第二浮点数匹配至少一个预定的近路径条 件时生成结果浮点值,所述近路径装置具有: 近路径加法器装置,用于确定与(M A -M B )相对应的中间尾数值M I ; 前导零计数装置,用于确定与在从M I 的最高有效位端开始M I 内的前导零值的游程相对 应的前导零值LZ; 最小值装置,用于将结果移位值确定为LZ和E A 中较低的值;以及 结果移位装置,用于将M I 移动与所述结果移位值相对应的多个位的位置以生成构成结 果浮点数的一部分的结果尾数M R 。 32.一种将第一浮点数和第二浮点数相加的方法,所述第一浮点数具有指数值E A。

20、 和尾 数值M A ,所述第二浮点数具有指数值E B 和尾数值M B ,并且E A 大于或等于E B ,所述方法包括当 所述第一浮点数和所述第二浮点数匹配至少一个预定的远路径条件时: 确定与在从M B 的最低有效位端开始M B 的最低有效(E A -E B )位内的尾随零值的游程相对 应的尾随零值TZ;以及 将第一加数值与第二加数值相加,所述第一加数值包括M A 与第一后缀值串接,所述第 二加数值包括不带其(E A -E B )最低有效位的M B 与第二后缀值串接;其中 所述第一后缀值和所述第二后缀值依赖于TZ和(E A -E B )中相应的一个而形成。 33.一种从第一浮点数中减去第二浮点数。

21、的方法,所述第一浮点数具有指数值E A 和尾 数值M A ,所述第二浮点数具有指数值E B 和尾数值M B ,并且E A 大于或等于E B ,所述方法包括当 所述第一浮点数和所述第二浮点数匹配至少一个预定近路径条件时: 确定与(M A -M B )相对应的中间尾数值M I ; 确定与在从M I 的最高有效位端开始M I 内的前导零值的游程相对应的前导零值LZ; 将结果移位值确定为LZ和E A 中较低的值;以及 将M I 移动与所述结果移位值相对应的多个位的位置以生成构成结果浮点数的一部分 权 利 要 求 书CN 102855117 A 5/5页 6 的结果尾数M R 。 34.一种用于确定将第。

22、一浮点数和第二浮点数相加时所使用的粘滞位的浮点运算电 路,所述第一浮点数具有指数值E A 和尾数值M A ,所述第二浮点数具有指数值E B 和尾数值M B , 并且E A 大于或等于E B ,所述浮点运算电路包括: 移位量确定电路,被配置为确定取决于(E A -E B )的移位量,所述移位量对应于要被应用 于M B 以形成要与M A 相加的M B 的移位后版本的右移; 尾随零计数电路,被配置为确定与在从M B 的最低有效位端开始M B 的尾随零值的游程相 对应的尾随零值;以及 粘滞位值确定电路,被配置为将所述移位量与所述尾随零值进行比较以确定所述粘滞 位的值,所述粘滞位指示是否有任何非零位将从。

23、要与M A 相加的所述M B 的移位后版本中被移 出。 35.根据权利要求34所述的浮点运算电路,包括用于确定E A 大于E B 的指数比较电路。 36.根据权利要求35所述的浮点运算电路,其中,所述移位量确定电路被配置为在所 述指数比较电路已确定E A 大于E B 之前确定取决于(E B -E A )的另一移位量。 37.根据权利要求35所述的浮点运算电路,其中,所述尾随零计数电路被配置为确定 与从M A 的最低有效位端开始M A 的尾随零值的游程相对应的另一尾随零值。 38.一种用于确定将第一浮点数和第二浮点数相加时所使用的粘滞位的浮点运算电 路,所述第一浮点数具有指数值E A 和尾数值M。

24、 A ,所述第二浮点数具有指数值E B 和尾数值M B , 并且E A 大于或等于E B ,所述浮点运算电路包括: 移位量确定装置,用于确定取决于(E A -E B )的移位量,所述移位量对应于要被应用于M B 以形成要与M A 相加的M B 的移位后版本的右移; 尾随零计数装置,用于确定与在从M B 的最低有效位端开始M B 的尾随零值的游程相对应 的尾随零值;以及 粘滞位值确定装置,用于将所述移位量与所述尾随零值进行比较以确定所述粘滞位的 值,所述粘滞位指示是否有任何非零位将从要与M A 相加的所述M B 的移位后版本中被移出。 39.一种用于确定将第一浮点数和第二浮点数相加时所使用的粘滞。

25、位的方法,所述第 一浮点数具有指数值E A 和尾数值M A ,所述第二浮点数具有指数值E B 和尾数值M B ,并且E A 大 于或等于E B ,所述方法包括以下步骤: 确定取决于(E A -E B )的移位量,所述移位量对应于要被应用于M B 以形成要与M A 相加的 M B 的移位后版本的右移; 确定与在从M B 的最低有效位端开始M B 的尾随零值的游程相对应的尾随零值;以及 将所述移位量与所述尾随零值进行比较以确定所述粘滞位的值,所述粘滞位指示是否 有任何非零位将从要与M A 相加的所述M B 的移位后版本中被移出。 权 利 要 求 书CN 102855117 A 1/11页 7 浮点。

26、加法器 技术领域 0001 本发明涉及数据处理系统的领域。更具体地,本发明涉及浮点加法器的领域。 背景技术 0002 在数据处理系统中公知了提供可以加和减浮点数的浮点加法器。这些浮点数可以 包括符号位、指数字段和尾数字段。浮点数格式和浮点算术操作的例子可以在IEEE 754标 准中找到。 0003 当相加(或者可以通过与首先经过修改的输入中的一个输入相加而实现的相减) 时,通常在加法被执行之前,具有较小指数的加数被右移以对齐小数点的位置。这种对齐将 尾数值的最低有效位移出尾数结果的有效位范围,因此将损失精度。这导致需要对结果进 行适当的四舍五入。在浮点算术中支持各种四舍五入模式。一个四舍五入模。

27、式是舍入到最 近的偶数。公知当执行这种舍入时,粘滞位应当被确定和保持,所述粘滞位指示当小数点的 位置被对齐时被右移出有效位范围的任意位是否具有非零值。这个粘滞位通常可以通过对 在加数尾数对齐期间被移出有效位范围的所有位执行逻辑OR操作来确定。这个方法的问 题是OR操作可能是很多位宽的并且在处理路径中引入不利的延迟度。延迟的增加可能降 低可以使用的最大操作时钟频率,减小定时驰豫并且具有其它负面后果。 0004 在浮点加法器领域中,公知提供远路径加法器以在操作数的量值大于预定差值时 使用,以及近路径加法器以在操作数的量值小于预定差值时使用。 发明内容 0005 从一个方面来看,本发明提供了用于将第。

28、一浮点数与第二浮点数相加的浮点加法 器电路,所述第一浮点数具有指数值E A 和尾数值M A ,所述第二浮点数具有指数值E B 和尾数 值M B 并且E A 大于或等于E B ,所述浮点加法器电路包括: 0006 远路径电路,被配置为当所述第一浮点数和第二浮点数匹配至少一个预定的远路 径条件时生成结果浮点值,所述远路径电路具有: 0007 尾随零计数电路,被配置为确定与在从M B 的最低有效位端开始M B 的最低有效 (E A -E B )位内的尾随零值的游程相对应的尾随零值TZ;以及 0008 远路径加法器,被配置为将第一加数值与第二加数值相加,所述第一加数值包括 M A 与第一后缀值串接并且。

29、所述第二加数值包括不带其(E A -E B )最低有效位的M B 与第二后缀 值串接;其中 0009 所述第一后缀值和所述第二后缀值根据TZ和(E A -E B )中相应的一个被形成。 0010 本发明意识到代替通过对被移出到有效位范围以外的位进行逻辑OR来明显地计 算粘滞位,可以通过根据取决于被移出位中尾随零的数目以及指数值差值的总和(这些加 数中的一个首先被进行NOT操作)确定进位输出,从而间接地计算具有相同值的位。尾随 零数目的计算可以与对较小的加数进行的右移并行地被执行,从而通过加法器电路有效地 减小延迟。 说 明 书CN 102855117 A 2/11页 8 0011 第一后缀值可。

30、以包括三个填充位后面跟(i)尾随零的数目加二;或(ii)指数值的 差值中的一个值,这些值中的一个被进行NOT操作,并且第二后缀值可以包括一个填充位 后面跟(i)尾随零的数目加二;或(ii)指数值的差值中的另外一个值。 0012 所述三个填充位和一个填充位可以被选择为具有总和为输出尾数值中的最低精 度单位的一半的值,所述输出尾数值由远路径加法器根据浮点数和的格式所生成。 0013 应当理解与要相加的尾数值串接并且产生与传统粘滞位等同的进位的后缀值可 以利用被进行了NOT操作的尾随零计数或者指数差值来形成。 0014 被右移的第二加数也将具有零值前缀以将其长度填充为与第一加数的尾数相同 的长度。 。

31、0015 作为前缀被加到第二加数上的前导零值可以利用第二加数移位器电路来插入。 0016 尾随零计数电路可以被配置为与指数差值计算电路并行操作。指数差值可被要求 与尾随零计数进行对比,但是利用该指数差值有效地为尾随零计数设置最大值,尾随零计 数操作可以开始于指数差值已知之前。 0017 利用与尾数串接并通过远路径加法器馈送的后缀值来计算与粘滞位具有相同值 的位的上述技术可以在通过远路径加法器所馈送的值的长度变化不超过2的位宽次方 的边界时被使用。这个约束条件是由于很多超前进位加法器(例如Sklansky加法器和 Kogge-Stone加法器)的工作方式而引起的,如果2的乘幂的边界被超过时,额外。

32、的门延迟 将会被引入。其中浮点运算被执行的很多实际情况都满足这个约束条件。 0018 应当理解上述的浮点加法机制需要识别哪个输入加数具有更大尺寸(至少具有 最大指数值或相等的最大指数值或相等的最大指数值)。实现该识别的一个方式是在加法 开始之前比较指数值,然后将输入加数切换到适当的路径,匹配用于较大加数的路径和用 于较小加数的路径。这种方法相对来说很少增加门数目,但是会增大操作的延迟时间。 0019 另一种方法是复制加法器电路并基于关于哪个输入加数的尺寸更大的相反假设 通过相应的复制路径馈送输入加数。因此,加法操作可以更快地开始,并且当后来确定了实 际上是哪个输入加数的尺寸更大(具有大于或等于。

33、另一输入加数的指数值的指数值)时, 来自适当的复制路径的结果可以被选择输出。 0020 如上所述,本发明的加法器电路也可以执行减法操作。这可以通过包括反相电路 在一些实施例中被实现,所述反相电路在第一加数与第二加数相加之前对第二加数的尾数 内的位进行反相。本发明同样适用于浮点加法和浮点减法。 0021 本领域技术人员将熟知浮点加法器可以包括用于将浮点数与大于预定界限的差 值相加的远路径加法器和用于将浮点数与小于预定界限的差值相加的近路径加法器。当可 能有大量的尾数位被移出有效位范围并且需要根据这些尾数位计算的粘滞位时,上述确定 与用于控制舍入的粘滞位等同的位值的技术在远路径加法器中非常有用。 。

34、0022 在近路径加法器中,公知对结果尾数内的前导零进行计数,然后执行适当的移位 和指数调节来规范浮点结果。这种方法的问题在于前导零计数和要被应用的相关联的后续 左移位可能导致在可被有效地表示的范围以外的相应指数值。用于处理该问题的已知技术 通常提供附加电路,用于识别是否有范围以外的指数值被产生,然后修复结果以生成非正 规(denormal)浮点数。这种方法可能会引起近路径加法器中延迟的增加。 0023 本发明的另一方面可以单独使用或者与被应用于远路径加法器的上述技术组合 说 明 书CN 102855117 A 3/11页 9 使用,其中最小值电路被提供在近路径加法器内并且用于将结果被左移的结。

35、果移位值确定 为对结果尾数执行的前导零计数和较大输入加数的指数值中的较低值(注意,即使是当减 法被执行时,术语“加数”仍然可以被使用)。如果较大加数的指数值接近最小值,则该指数 可能低于前导零计数,因此提供关于要对结果尾数执行的左移的限制,并且控制左移以使 得将得到正确形成的非正规数,而不需要执行增加延迟时间的修补操作。 0024 当输入加数满足预定的近路径条件时,近路径加法器可以被使用。当输入加数的 值差别较小时,尾数移位电路可以被提供以在较小加数的尾数被输入到近路径加法器之前 被将该尾数右移与指数差值相等的位数的位置。 0025 最小值电路可以被配置为在结果移位值的一个或多个低价位被生成之。

36、前生成结 果移位值的一个或多个高阶位。这是有益的,因为它允许采用对数移位器的形式的结果移 位电路在完整精度的结果移位值可用之前开始其对中间尾数的右移以产生结果尾数。这减 小了近路径的延迟。 0026 最小值电路可以具有多种不同的形式并且以各种不同的方式计算最小值。最小值 电路操作的一种方式在允许较早的生成结果移位值的高阶位方面被认为是非常方便的,这 种方式是当所述最小值电路具有两个输入LZ和E A 时,通过按以下方式确定长度为2 i (从i 0开始)的所述结果移位值的一系列前缀部分P i 来确定结果移位值: 0027 P i (LZ i AND NOT GR i )OR(E Ai AND GR。

37、 i ),其中 0028 LZ i 为长度为2 i 的LZ的前缀部分; 0029 E Ai 为长度为2 i 的E A 的前缀部分; 0030 对于i0和有效位递减的每个位位置k,EQ i kNOT(LZkXOR E A k); 0031 对于i0和有效位递减的每个位位置k,当LZkE A k时GR i k1,当 LZkE A k时GR i k0; 0032 对于i0和有效位递减的每个位位置k,EQ i kEQ i-1 kAND EQ i-1 k+2 (i-1) ; 以及 0033 对于i0和有效位递减的每个位位置k,GR i kGR i-1 kOR(E i-1 k ANDGR i-1 k+2 。

38、(i-1) )。 0034 近路径可被使用的限制情况是其中近距离预定量为1的情况。当结果浮点数为非 正规浮点数时,该技术特别有用。 0035 从另一方面来看,本发明提供了一种用于将第一浮点数减去第二浮点数,所述第 一浮点数具有指数值E A 和尾数值M A ,所述第二浮点数具有指数值E B 和尾数值M B 并且E A 大 于或等于E B ,所述浮点加法器电路包括: 0036 近路径电路,被配置为当所述第一浮点数和所述第二浮点数匹配至少一个预定的 近路径条件时生成结果浮点值,所述近路径电路具有: 0037 近路径加法器,被配置为确定与(M A -M B )相对应的中间尾数值M I ; 0038 前。

39、导零计数电路,被配置为确定与在从M I 的最高有效位端开始M I 内的前导零值的 游程相对应的前导零值LZ; 0039 最小值电路,被配置为将结果移位值确定为LZ和E A 中较低的值;以及 0040 结果移位电路,被配置为将M I 左移与所述结果移位值相对应的多个位的位置以生 成构成结果浮点数的一部分的结果尾数M R 。 说 明 书CN 102855117 A 4/11页 10 0041 应当理解减小近路径内的延迟时间的技术可以与用于减小远路径内的延迟时间 的技术互相独立地被使用。然而,对这些技术的组合使用是有益的,因为近路径和远路径可 以被保持平衡的延迟时间。 0042 本发明的另一方面提供。

40、用于确定将第一浮点数和第二浮点数相加时所使用的粘 滞位的浮点运算电路,所述第一浮点数具有指数值E A 和尾数值M A ,所述第二浮点数具有指 数值E B 和尾数值M B 并且E A 大于或等于E B ,所述浮点运算电路包括: 0043 移位量确定电路,被配置为确定取决于(E A -E B )的移位量,所述移位量对应于要被 应用于M B 以形成要与M A 相加的M B 的移位后的版本的右移位: 0044 尾随零计数电路,被配置为确定与在从M B 的最低有效位端开始M B 的尾随零值的游 程相对应的尾随零值;以及 0045 粘滞位值确定电路,被配置为将所述移位量与所述尾随零值进行比较以确定所述 粘。

41、滞位的值,所述粘滞位指示是否有任何非零位将从要与M A 相加的所述M B 的移位后版本中 被移出。 0046 本发明的其它方面在所附权利要求中被列出。 0047 根据结合附图描述的以下对说明性实施例的详细描述,本发明的以上和其它目 的、特征和优点将变得清楚。 附图说明 0048 图1示意性地图示了包括浮点加法器电路的集成电路; 0049 图2和图3示意性地图示了用于确保浮点加法结果基于已知了哪个输入量值更大 的输入被生成的两种方法; 0050 图4示意性地图示了包括远路径加法器和近路径加法器的浮点加法器电路; 0051 图5示意性地图示了16位浮点数的格式; 0052 图6示意性地图示了包括尾。

42、随零计数电路的远路径加法器; 0053 图7示意性地图示了包括最小值电路的近路径加法器电路; 0054 图8示意性地图示了利用尾随零计数来确定粘滞位的等同物的16位浮点加法内 的数据流;以及 0055 图9示意性地图示了利用尾随零计数来确定粘滞位的等同物的16位浮点减法内 的数据流。 具体实施方式 0056 图1示意性地图示了包括用于存储浮点数的一排浮点寄存器4和包括多个处理级 的数据处理流水线6的集成电路2,所述处理级中的至少一个提供浮点加法器电路8。根 据数据处理系统中的传统流水线,流水线级被公共时钟驱动,所述公共时钟控制一个处理 级的结果向下一个处理级的推进。可以减少与在每个处理级执行的。

43、处理相关联的延迟时 间的措施是有益的,因为它们例如可以允许使用更高的时钟频率并且因此在给定时间量内 完成更大量的数据处理。被减少的延迟时间还可以增大处理级之间的定时驰豫(timing slack),具有使设计更加鲁棒的优点。 0057 在根据这里所描述的示例实施例的浮点加法器电路中,假设具有最高量值的浮点 说 明 书CN 102855117 A 10 5/11页 11 数被提供作为输入加数A并且具有最低量值的浮点数被提供作为输入加数B。当两个任意 浮点数作为浮点加法器电路8的输入被接收时,可能提前不知道哪个浮点数具有更大的量 值。图2和图3图示了处理这个问题的两种可能的方法。 0058 在图2。

44、中,比较电路10用于比较两个输入加数的量值(或者至少是指数的量值)。 然后,该比较的结果被用于控制多路选择器12,14以引导第一输入加数和第二输入加数, 从而形成到浮点加法器电路16的输入A和B中的适当的相应加数。这种方法具有增加相 对来说很少的附加门的优点,但是由于在浮点加法器电路16可以开始操作之前需要确定 来自比较电路10的结果,所以这种方法具有增大了与浮点加法相关联的延迟时间的缺点。 0059 图3图示了替代方法。在该方法中,浮点加法器电路18,20是被复制的,并且每个 电路都接收这两个输入加数。在浮点加法器电路18中,假设第一输入加数的量值大于第二 输入加数。在第二浮点加法器电路20。

45、中,假设第二输入加数的量值大于第一输入加数。浮 点加法器电路18和浮点加法器电路20并行操作来计算各自的结果浮点数。这些浮点数中 的一个将是不正确的,因为它是基于关于第一输入加数和第二输入加数中哪个加数的量值 更大的不正确假设的。在通过由浮点加法器电路18和浮点加法器电路20执行的计算过程 中,可以做出关于第一输入加数和第二输入加数中哪一个加数更大的判断。该判断结果被 提供给多路选择器22以选择来自正在使用正确假设的浮点加法器电路18,20的结果浮点 数。这种方法具有产生较少的与浮点加法相关联的延迟增加的优点,但是具有需要更多的 门数目的缺点,因为浮点加法器电路18,20被复制以提供被配置为形。

46、成基于第一假设的第 一处理路径和基于第二假设的第二处理路径的复制电路。 0060 图4示意性地图示了被用于将两个浮点数相加(或相减)的浮点加法器电路24。 这些浮点数中的每个浮点数包括符号位S,指数位字段E和尾数位字段M。本领域技术人员 将熟知,在浮点加法器电路20中提供有当将量值不近似的两个浮点数相加(或相减)时所 使用的远路径电路26以及当将量值近似的两个浮点数相加(或相减)时所使用的近路径 电路28。多路选择器30被对于两个输入加数之间的量值差值的大小的判断结果控制,以选 择来自远路径电路26的输出或来自近路径电路28的输出作为结果浮点值。决定远路径电 路26和近路径电路28中哪一个要被。

47、使用的远路径条件和近路径条件可以按以下方式被评 估: 0061 1:如果两个输入具有相同符号,则这是“有效相加”,使用远路径。 0062 2:如果Ea-Eb大于1,则远路径被使用。 0063 3:如果Ea-Eb为零并且两个输入具有相反的符号,则近路径被使用。 0064 4:如果Ea-Eb为1并且输入具有相反的符号,则尾数位被检查:如果Ma的最高位 的下一位(即,在前导1位之后的最高位)为1,则远路径被使用,否则近路径被使用。 0065 图5示意性地图示了根据IEEE-754-2008标准的16位浮点数的格式。具体而言, 这些浮点数包括单个符号位,5位指数字段和10位尾数字段。这些字段内的位值与。

48、所表示 的浮点数之间的关系在图5中被示出。可以看到指数值被进行了“-15”的偏移。这导致当 指数字段14:10具有最低正常值1时,所表示的浮点数包括2 -14 的因子。如果想要表示 更小的浮点数,则不可能进一步减小指数值,因此非正规数被使用。就非正规数而言,指数 字段为全零,但是尾数字段与在小数点位置左边的假设的前导值“1”不相关联。因此,在尾 数值内有前导零,例如“0.000.”。这种非正规值对本领域技术人员来说将是熟知的。 说 明 书CN 102855117 A 11 6/11页 12 0066 图6示意性地图示了远路径电路18。具有最大量值(或者至少最大指数)的输入 加数被提供在输入A上。

49、。另一输入浮点数被提供在输入B上。应当理解如果指数值相同, 则无所谓输入加数以何种顺序被应用于输入A和B。远路径电路18的操作的总体原则是较 小量值的输入加数被第二加数移位器电路24进行右移位,以在远路径加法器26将两个尾 数值相加之前,使两个加数的有效指数值相等并对齐尾数内的小数点位置。 0067 在传统的远路径电路中,被右移出将通过远路径加法器26相加的有效位范围的 较小输入加数的位需要被检查以确定它们是否会导致向结果尾数值的借位,该借位可能影 响之后被应用于尾数值的舍入。确定这个借位值(或粘滞位)的传统方法是对低量值输入 加数中被右移出远路径加法器26的范围的所有低阶位执行逻辑OR。使用这种逻辑OR方法 的问题是它引入了不利的额外延迟时间。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1