太阳城集团

  • / 22
  • 下载费用:30 金币  

独立的浮点转换单元.pdf

摘要
申请专利号:

CN201510600250.3

申请日:

2015.09.18

公开号:

太阳城集团CN105468331A

公开日:

2016.04.06

当前法律状态:

实审

有效性:

审中

法律详情: 实质审查的生效IPC(主分类):G06F 7/57申请日:20150918|||公开
IPC分类号: G06F7/57 主分类号: G06F7/57
申请人: ARM有限公司
发明人: 大卫·雷蒙德·鲁茨; 内尔·伯吉斯
地址: 英国剑桥
优先权: 14/498,172 2014.09.26 US
专利代理机构: 北京东方亿思知识产权代理有限责任公司11258 代理人: 李晓冬
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201510600250.3

授权太阳城集团号:

|||

法律状态太阳城集团日:

太阳城集团2017.10.20|||2016.04.06

法律状态类型:

实质审查的生效|||公开

摘要

本公开涉及独立的浮点转换单元。一种数据处理装置,包括:浮点加法器电路;以及浮点转换电路,该浮点转换电路通过对具有来自格式列表中的格式的任意输入执行转换来生成作为输出的浮点数,其中格式列表包括整数、定点数、以及具有小于输出浮点数的格式的浮点数。浮点转换电路物理上不同于浮点加法器电路。

权利要求书

1.一种数据处理装置,包括:
浮点加法器电路;以及
浮点转换电路,该浮点转换电路通过对具有来自格式列表中的格式的
任意输入执行转换来生成作为输出的浮点数,所述格式列表包括整数、定
点数、以及具有小于所述输出浮点数的格式的浮点数,
其中,所述浮点转换电路物理上不同于所述浮点加法器电路。
2.根据权利要求1所述的数据处理装置,其中,所述格式列表包括:
次正规浮点数。
3.根据权利要求1所述的数据处理装置,
所述浮点转换电路能够响应于所述输入为次正规浮点数,通过对所述
输入执行多次移位从而使得最高有效位为1来生成经规范化的有效数。
4.根据权利要求1所述的数据处理装置,其中,所述浮点转换电路包
括以下各项中的一项或多项:
反向器电路,该反向器电路能够对负整数或者负定点输入进行反向;
计数前导零电路,该计数前导零电路能够确定所述输入中前导1的位
置;
左移位器电路,该左移位器电路能够对所述输入进行规范化;以及
整数加法器电路,用于将经移位的输入、根据舍入模式的舍入常数、
以及所述经移位的输入被反向时的进位输入相结合。
5.根据权利要求1所述的数据处理装置,其中,所述浮点转换电路包
括:
舍入电路,该舍入电路通过将舍入常数与所述经规范化的有效数相加
来对所述经规范化的有效数进行舍入,以产生经舍入的有效数。
6.根据权利要求5所述的数据处理装置,
所述舍入电路根据舍入模式生成所述舍入常数。
7.根据权利要求6所述的数据处理装置,
所述舍入电路根据所述舍入模式是否是舍入到零来生成所述舍入常
数;
所述舍入电路根据所述舍入模式是否是上舍入来生成所述舍入常数;
并且
所述舍入电路根据所述输出的格式来生成所述舍入常数。
8.根据权利要求6所述的数据处理装置,所述舍入电路根据以下各项
生成所述舍入常数:
指示所述输出是否是32位浮点数并且所述舍入方法是否不是舍入到
零的第一值;
指示所述输出是否是32位浮点数、并且所述舍入方法是否是上舍入
的第二值;
指示所述输出是否是64位浮点数、并且所述舍入方法是否不是舍入
到零的第三值;以及
指示所述输出是否是64位浮点数、并且所述舍入方法是否是上舍入
的第四值。
9.根据权利要求5所述的数据处理装置,
其中所述舍入常数是64位的数。
10.根据权利要求8所述的数据处理装置,所述舍入电路通过依次输
出以下各项来生成所述舍入常数:
值0输出24次;
所述第一值;
所述第二值输出28次;
对所述第三值和所述第二值执行逻辑或的第一结果;
第二结果输出10次,其中所述第二结果是对所述第四值和所述第二
值执行逻辑或的结果。
11.根据权利要求5所述的数据处理装置,
所述舍入电路输出指示所述舍入常数与所述经规范化的有效数的所述
相加是否产生了溢出的进位输出值。
12.根据权利要求11所述的数据处理装置,其中所述浮点转换电路包
括:
结合电路,该结合电路将经舍入的有效数、指数或者经调整的指数之
一、以及符号位相结合,来产生所述浮点数。
13.根据权利要求12所述的数据处理装置,
所述结合电路在所述进位输出值指示没有溢出发生的情况下,将所述
经舍入的有效数与所述指数相结合;并且
所述结合电路在所述进位输出值指示溢出发生的情况下,将所述经舍
入的有效数与所述经调整的指数相结合。
14.根据权利要求1所述的数据处理装置,其中所述浮点转换电路包
括:
有效数构建电路,该有效数构建电路接收所述输入并且通过使用移位
电路对所述输入执行移位来生成经规范化的有效数;并且
所述有效数构建电路响应于所述输入是二进制补码格式,通过对所述
输入的位进行反向来生成所述经规范化的有效数。
15.根据权利要求1所述的数据处理装置,其中所述浮点转换电路包
括:
指数构建电路,该指数构建电路接收所述输入并且根据所述输出的精
度的指数偏差提供指数,
所述指数构建电路响应于所述输入为浮点数,通过将所述输出的所述
精度的所述指数偏差与所述输入的指数相加,并且减去所述输入的精度的
指数偏差和所述次数来提供所述指数;
所述指数构建电路响应于所述输入的所述指数为零而通过加1来调整
所述指数;并且
所述指数构建电路响应于所述输入不是浮点数,通过将所述输出的所
述精度的所述指数偏差、所述输入的非小数位的数目、以及所述次数相
加,并且减去1来提供所述指数。
16.根据权利要求14所述的数据处理装置,
所述有效数构建电路调整所述输入,从而使得所述输入具有预定数目
的位。
17.一种操作数据处理装置的方法,该数据处理装置包括浮点加法器
电路和浮点转换电路,其中所述浮点转换电路物理上不同于所述浮点加法
器电路,所述方法包括由所述数据处理装置执行的以下步骤:
接收具有来自格式列表中的格式的任意输入,所述格式列表包括整
数、定点数、以及具有小于所述输出浮点数的格式的浮点数;以及
通过对所述输入执行转换来生成作为输出的浮点数。
18.一种数据处理装置,包括:
用于执行浮点加法的装置;以及
用于执行浮点转换的装置,所述用于执行浮点转换的装置通过对具有
来自格式列表中的格式的任意输入执行转换来生成作为输出的浮点数,所
述格式列表包括整数、定点数、以及具有小于所述输出浮点数的格式的浮
点数,
其中所述用于执行浮点转换的装置物理上不同于所述用于执行浮点加
法的装置。

说明书

独立的浮点转换单元

技术领域

本公开涉及数据处理领域。

背景技术

在数据处理装置中,数字可以被以多种不同格式中的一种格式表示。
例如,32位整数格式使用32位来表示整个二进制数。另一示例是64位整
数格式,其使用64位来表示整个二进制数。64位格式中使用的增多的位
数可以使得相比32位整数格式表示的数值范围更大范围的值被表示。

另一示例格式是浮点数。浮点数可以被用来表示任何实数(而不仅仅
是任何整数)。与利用整数格式的情况一样,增大用于表示浮点数的位数
一般会增大可以被表示的值的范围。另外,增大用于表示浮点数的位数可
以增加表示数字的精确度。

通常,在数据处理装置中,期望能够从多种不同的格式转换到浮点格
式。例如,如果程序员希望将整数与小数相加,则一种方法是首先将整数
转换为浮点数。替代地,如果要求更高的精度,则期望增大用于表示浮点
数的位数,并且在这种情形下,更少的位表示的输入浮点数提供了输入格
式。

期望允许多种不同格式之间的直接转换,因为这可以减少转换到中间
格式导致的延时(这使得两个以上转换成为必要)。但是,操控多个直接
转换的电路通常更为复杂,因此相比支持较少直接转换的电路需要更多空
间。更大的电路会导致具有更高功耗的更大设备,这在低功耗设备中是不
期望的。

发明内容

根据一个方面,提供了一种数据处理装置,包括:浮点加法器电路;
以及浮点转换电路,该浮点转换电路通过对具有格式列表中的格式的任意
输入执行转换来生成作为输出的浮点数,该格式列表包括整数、定点数、
以及具有小于输出浮点数的格式的浮点数,其中浮点转换电路物理上不同
于浮点加法器电路。

根据第二方面,提供了一种操作数据处理装置的方法,该数据处理装
置包括浮点加法器电路和浮点转换电路,其中所述浮点转换电路物理上不
同于所述浮点加法器电路,并且所述方法包括由数据处理装置执行的以下
步骤:接收具有格式列表中的格式的任意输入,其中格式列表包括整数、
定点数、以及具有小于所述输出浮点数的格式的浮点数;以及通过对输入
执行转换生成作为输出的浮点数。

根据第三方面,提供了一种数据处理装置,包括:用于执行浮点加法
的装置;以及用于执行浮点转换的装置,所述用于浮点转换的装置通过对
具有格式列表中的格式的任意输入执行转换生成作为输出的浮点数,该格
式列表包括整数、定点数、以及具有小于所述输出浮点数的格式的浮点
数,其中,所述用于执行浮点转换的装置物理上不同于所述用于执行浮点
加法的装置。

附图说明

仅通过示例,参考附图中示出的本发明的实施例来进一步描述本发
明,其中:

图1是示意性地示出根据一个实施例的电路配置的示意图;

图2是示意性地示出根据一个实施例用于对输入的有效数进行规范化
的电路的示意图;

图3是示出根据一个实施例的各种输入可以被如何调整的示意图;

图4是示意性地示出根据一个实施例的用于舍入经规范化的有效数的
电路的示意图;

图5是示出根据一个实施例的用于通过对输入执行转换来生成作为输
出的浮点数的方法的流程图,其中输入可以具有多种不同格式;

图6是示出根据一个实施例的对输入的有效数进行规范化、生成指
数、对经规范化的有效数执行舍入、以及调整指数的处理的流程图;以及

图7是示出根据一个实施例的将从输入生成的不同值相结合以产生经
转换的输出的处理的流程图。

具体实施方式

浮点(FP)是使用少数的位来近似实数的有用途径。IEEE754-2008
浮点标准提出了浮点数的多种不同格式。示例包括二进制64(也称为双精
度或DP)、二进制32(也称为单精度或SP)、以及二进制16(也称为半
精度或HP)。数字64、32、和16是指每种格式需要的位数。

浮点数非常类似于科学课中教的“科学计数法”,其中负两百万可以
替代写成-2.0×106。这个数字的各部分是符号(在这个示例中为负)、有
效数(2.0)、指数的基数(10)、以及指数(6)。所有这些部分在浮点
数中具有类似物,尽管存在不同,其中最重要的不同是组成部分被存储为
二进制数,并且指数的基数(baseofexponent)总是2。浮点数一般包括
符号位、一些数目的偏置指数位、以及一些数目的小数位:


负数的符号是1,正数的符号是0。包括零在内的每个数字都具有符
号。

指数被偏置,意味着真指数不同于数字中存储的指数。例如,经偏置
的SP指数是8位长,并且在0到255范围内变化。指数0和255是特例,
所有其他指数都具有偏差127,这意味着真指数比经偏置的指数小127。
最小的经偏置的指数是1(其对应于真指数-126)。最大的经偏置的指数
是254(其对应于真指数127)。HP和DP指数以相同的方式工作,具有
以上表格中指示的偏差。SP指数255(或者DP指数2047、或者HP指数
31)被保留用于无穷大和被称为NaN(没有这样的值)的特殊符号。无穷
大(可以是正或者负)具有为零的小数。具有指数255和非零小数的任意
数是NaN。无穷大提供饱和值,所以其实际上表示“这种计算导致比我们
可以用这种格式表示的数更大的数”的意思。NaN针对实数上没有数学定
义的操作(例如,除以零、或者将负数作为平方根)被返回。

指数零(在任意格式)被保留用于次正规数和零。正规数(normal
number)表示这样的值:符号×1小数×2e,其中e是根据经偏置的指数
计算出的真指数。术语“1.小数”被称为有效数,1不作为浮点数的部分
被存储,但是替代地从指数推定得出。除了零和最大指数以外的所有指数
指示形式“1.小数”的有效数。指数零指示形式“0.小数”的有效数、以
及针对给定格式等于(1-偏差)的真指数。这样的数字被称为次正规数
(历史上,这些数字被称为“非正规数”,但是现代用法更喜欢用术语
“次正规数”)。

具有等于零的指数和小数(fraction)二者的数为零。下面的表格具有
HP格式的一些示例数字。条目是二进制的,并且添加了字符“_”来增加
可读性。注意,次正规条目(表格的第四行,具有零指数)相对于在前行
中的正规条目产生了不同的有效数。

符号
5位指数
10位小数
11位有效数

0
01111
00_0000_0000
100_0000_0000
1.0×20
1
01110
10_0000_0000
110_0000_0000
-1.0×2-1
0
00001
10_0000_0000
110_0000_0000
1.1×2-14
0
00000
10_0000_0000
110_0000_0000
0.1×2-14
1
11111
00_0000_0000


负无穷大
0
11111
00_1111_0011


NaN

浮点实现中的大部分复杂度是由于次正规数,因此它们通常由微代码
或者软件操控。

操控符号的方式被称为符号-量值,并且不同于整数被存储在计算机中
的通常方式(二进制补码)。在符号-量值表示中,同一数字的正版本和负
版本仅在符号位不同。包括符号位和3个有效数位的4位符号-量值整数将
如下表示+1和-1:

+1=0001

-1=1001

在二进制补码表示中,n位整数i由二进制n+1位值2n+i的低n位表
示,所以4位二进制补码整数将如下表示+1和-1:

+1=0001

-1=1111

二进制补码格式实际上对有符号整数是通用的,因为其简化了计算机
运算。

定点数可以看上去与整数类似甚至相同,但是实际上表示具有一定数
目的小数位的值。传感器数据通常是定点格式的。利用定点数,程序员通
常必须追踪“二进制点”(即,数字的整数和小数部分之间的分隔符),
并且还必须不停地对数字移位以保持这些位处于正确的位置。

IEEE-754标准要求大多数浮点操作被计算(如同该操作是利用无界范
围和精度进行一样)然后被舍入,以纳入浮点数。如果计算精确匹配浮点
数,则该值总是被返回,但是通常计算会产生介于两个连续的浮点数之间
的值。舍入(rounding)是选择两个连续数字中的哪个应该被返回的处
理。

存在多种舍入方式(称为舍入模式);这里示出了六个示例:


一种常见的实施方式是进行操作,查看截断值(即,纳入浮点格式的
值)以及所有剩余位,然后如果某些条件满足则调整截断值。这些计算全
部基于以下三个值:

L-(最低)截断值的最低有效位

G-(保护)下一个最高有效位(即,没有包括在截断中的第一个位)

S-(粘着)不是截断部分的所有剩余位的逻辑或

给出这三个值和截断值,我们可以根据以下表格计算正确舍入后的
值:

模式
对截断值的改变
RNE
(L&G)|(G&S)情况下,递增
RNA
G情况下,递增
RZ

RP
正&(G|S)情况下,递增
RM
负&(G|S)情况下,递增
RX
G|S情况下,将L置位

例如,考虑将两个4位有效数相乘,然后舍入到4位有效数。

sig1=1011(十进制的11)

sig2=0111(十进制的7)

相乘产生:

sig1×sig2=1001_101(十进制的77)

截断的4位结果是结果中的最右4位-1101。截断的4位结果的最低
有效位(第一数位1)被标记以L,下一个位(1)被标记以G,并且S是
剩余位的逻辑或(即,S=(0|1)=1)。为了舍入,我们根据舍入模式和以
上表格中的计算调整我们的4位结果(1001)。所以,例如在RNA舍入
中,G被置位从而使得我们通过返回1001+1=1010而增大。对于RX舍
入,G|S为真,所以我们设置L为1(其已经为1,所以在这种情况下没
有改变)并且返回1001。

进行舍入的更快方式是添加舍入常数作为有效数加法的部分。为了看
这个如何工作,考虑以美元和美分为单位对数字进行相加,然后舍入到美
元。如果我们进行以下加法运算:

$1.27+$2.35=$3.62

我们看到总和$3.62更接近$4而不是$3,所以舍入到最近模式应该
返回$4。如果我们以二进制来表示数字,则我们可以使用前面描述的L,
G,S方法得到相同的结果。但是,假设我们仅加50美分然后截断结果。

$1.27+$2.35+$0.05(舍入添加)=$4.12

如果我们仅返回我们的总和($4.12)中的美元量($4),则我们使
用RNA舍入模式进行了正确舍入。如果我们加$0.99而不是$0.50,则我
们将使用RP舍入进行正确舍入。RNE稍微复杂一些:我们加$0.50,截
断,然后查看剩余的美分。如果剩余的美分是非零的,则截断结果是正确
的。如果剩余零美分,则我们在添加之前正好处于两个美元量之间,所以
我们选择偶数美元量。对于二进制浮点,这意味着将美元量的最低有效位
设置为零。

三个数相加比两个数相加稍微慢一点,所以我们使用舍入添加
(roundinginiection)相比以下情况可以更快地得到舍入后的结果:我们对
两个有效数相加,检查L、G、S,然后根据舍入模式增大我们的结果。对
于浮点数,舍入添加是三个不同值中的一个,这些值取决于舍入模式和
(有时)结果的符号。

RNA和RNE二者要求我们在G位置添加1(就像以上的美元和美分
示例中加$0.50美分一样)。

RP和RM舍入取决于符号和模式。RP向上舍入正结果(朝向正无
穷),但是截断负结果(再次朝向正无穷舍入)。类似地,RM向上舍入
负结果(朝向负无穷),但是截断正结果(再次朝向负无穷舍入)。因
此,我们将RM和RP划分为两种情况:当符号匹配舍入方向时上舍入
(roundup,RU),以及当符号不同于舍入添加时截断(RZ)。对于RU
情况,我们在G位的位置和逻辑上对S有贡献的每个位置添加1(就像美
元和美分示例中加$0.99一样)。

对于RZ和RX模式、和降低到RZ模式的RP和RM模式,我们添加
零。

对于大多数舍入模式,与舍入添加相加然后截断给出了正确的舍入后
结果。两个例外是RNE和RX,它们要求我们在执行加法之后检查G和
S。对于RNE,如果G和S均为零,则我们设置L为零。对于RX,如果
G或S为非零,则我们设置L为1。

第一方面的浮点转换电路物理上不同于浮点加法器电路(例如,分
离)。如前面所述,常见的是浮点转换电路形成加法器电路的一部分,因
为到特定格式的浮点数的转换通常在对浮点数执行ADD操作时是必需
的。但是,浮点加法器电路的剩余部分通常比较大,并且对整个单元上电
以执行转换是浪费的。通过分离出执行转换的电路,可以提供电路尺寸的
整体减小。多个不同格式可以包括:整数、定点数、以及具有比所述输出
的所述格式更小的格式的浮点数。浮点转换电路因此接受至少这些格式的
任意输入。通过接受各种不同格式,浮点转换电路可以无需执行从输入到
中间格式、以及从中间格式到输出格式的转换而执行转换。

格式列表可以包括次正规浮点数。因此,有可能在更大范围的输入上
执行转换,而不要求在转换可以被执行之前以特定方式对输入进行格式
化。

尽管有多种对次正规浮点数进行规范化的方式,但是在一些实施例
中,响应于输入为次正规浮点数,经规范化的有效数可以通过对输入进行
多次移位使得最高有效位为1来产生。

浮点转换电路可以包括以下各项中的一项或多项:能够对负整数或定
点输入进行反向的反向器电路;能够确定输入中前导1的位置的计数前导
零电路;能够对输入进行规范化的左移位器电路;以及用于将经移位的输
入、根据舍入模式的舍入常数、以及经移位的输入被反向的情况下的进位
输入(carry-in)相结合的整数加法器电路。这种电路可以被用于使用少量
电路空间来执行浮点转换。整数加法器电路中使用进位输入值意味着从负
数的转换可以被有效操控。特别地,一种表示负整数的方法是使用二进制
补码表示。可以通过采用二进制反码(即,对数字的二进制表示中的零和
1进行反向)并且加1,在数字与其二进制补码表示之间转换。浮点数不
使用二进制补码表示来表示负数。因此,如果到浮点转换电路的输入是二
进制补码形式的,则必须将数转换为符号-量值形式。如已经提及的,这是
通过采用二进制反码形式并且加1来实现的。由于整数加法器电路可以为
了实现舍入而将舍入常数相加,所以可以延迟加1直到舍入常数被相加为
止,并且可以通过向执行舍入加法的整数加法器提供进位输入值同时进行
两个加法。这节省了处理中的额外步骤,并且还省去了向装置提供第二加
法单元。

浮点转换电路可以包括舍入电路,该舍入电路通过将舍入常数与所述
经规范化的有效数相加对所述经规范化的有效数进行舍入,来产生经舍入
的有效数。特别地,舍入电路可以执行添加舍入(iniectionrounding)。因
此,舍入可以在无需对数字本身进行任何分析的条件下被实现。舍入处理
因此可以被简单且快速地实现。

舍入电路可以根据舍入模式生成舍入常数。已经讨论了多种不同舍入
模式和它们的操作。通过根据舍入模式生成舍入常数,可以使用相同的电
路来支持各种不同的舍入模式。

舍入电路可以根据所述舍入模式是否是舍入到零而生成舍入常数。另
外,舍入电路可以根据舍入模式是否是上舍入来生成舍入常数。最后,舍
入常数可以根据输出的格式被生成。舍入常数可以根据所使用的舍入模式
是哪种(如果有舍入模式的话)而变化。舍入常数还可以根据输出格式变
化。输出格式可以指示用于表示数字的位数和/或这些位被如何实际使用。

例如,舍入电路可以根据以下各项生成舍入常数:指示所述输出是否
是32位浮点数并且所述舍入方法是否不是舍入到零的第一值;指示所述
输出是否是32位浮点数并且所述舍入方法是否是上舍入的第二值;指示
所述输出是否是64位浮点数并且所述舍入方法是否不是舍入到零的第三
值;以及指示所述输出是否是64位浮点数并且所述舍入方法是否是上舍
入的第四值。例如,舍入常数可以是这四个值的级联。

舍入常数可以是64位的数。因此,可以对32位以及64位的输入二者
进行舍入。在其他实施例中,舍入常数可以是32位的数。

在一个示例中,舍入电路可以通过依次输出以下各项生成舍入常数:
值0输出24次;所述第一值;所述第二值输出28次;对所述第三值和所
述第二值执行逻辑或的第一结果;第二结果输出10次,其中所述第二结
果是对所述第四值和所述第二值执行逻辑或的结果。

舍入电路可以输出指示所述舍入常数与所述经规范化的有效数相加是
否产生了溢出的进位输出值(carryoutvalue)。例如,进位输出值可以指
示舍入常数与经规范化的有效数的和是否大于执行加法的电路能够表示的
最大数。

浮点转换电路可以包括将经舍入的有效数、指数或者经调整的指数之
一、以及符号位相结合,以产生浮点数的结合电路。根据进位输出值存在
与否(即,加法结果是否大于电路能表示的数),经舍入的有效数可以被
与指数或者经调整的指数相结合。例如,在一些实施例中,结合电路可以
在所述进位输出值指示没有溢出发生的情况下将经舍入的有效数与所述指
数相结合,并且在所述进位输出值指示溢出发生的情况下将所述经舍入的
有效数与所述经调整的指数相结合。

浮点转换电路可以包括有效数构建电路,该有效数构建电路接收所述
输入并且通过使用移位电路对所述输入执行移位来生成经规范化的有效
数。另外,响应于输入为二进制补码格式,有效数构建电路可以通过对输
入的位进行反向来生成经规范化的有效数。如前所述,在一些实施例中,
从二进制补码格式到自然表示的完全转换还会涉及到加1。这可以通过在
任何后续加法步骤中将进位输入值的值设置为1来实现。

浮点转换电路可以包括指数构建电路,该指数构建电路接收所述输入
并且根据所述输出的精度的指数偏差来提供指数,其中响应于所述输入是
浮点数,所述指数构建电路通过将所述输出的所述精度的所述指数偏差与
所述输入的指数相加,并且减去所述次数和所述输入的精度的指数偏差来
提供所述指数;其中,响应于所述输入的所述指数为零,所述指数构建电
路通过加1来调整所述指数;并且其中,响应于所述输入不是浮点数,所
述指数构建电路通过将所述输出的所述精度的所述指数偏差、所述输入的
非小数位的数目、所述次数相加并减1来提供所述指数。

在一些实施例中,有效数构建电路可以调整输入,从而使得输入具有
预定义数目的位。这可以通过“填充(padding)”来实现。通过添加较低
有效位,可以使数字具有正确的(预定义的)位数。例如,可向32位数
添加较低有效位以产生64位数。类似地,可以向16位数添加位,以产生
64位数。该修改后的64位数可以成为输入。

图1示意性地示出了根据一个实施例的电路配置。浮点转换单元(也
称为浮点转换电路)10接收具有特定格式的输入。浮点转换单元对输入进
行转换,以产生具有不同格式的输出。该输出随后可以被提供给例如,浮
点加法器(也称为浮点加法器电路)20,浮点加法器20与浮点转换单元
10物理上是分离的。所以,注意,浮点转换单元10和浮点加法器20被具
体化为彼此不同的组件。浮点转换单元10接收输入,输入被发送到有效
数构建单元30和指数构建单元40。有效数构建单元30在步骤1a中接收
输入,并且生成经规范化的有效数。如前所述,有效数包括正在被表示的
数字的有效数位。换言之,有效数是除指数以外的数字部分。有效数构建
单元30产生经规范化的有效数。换言之,有效数构建单元30的输出包含
作为最高有效数位的数1。通过对有效数进行规范化并且将值传递到舍入
单元50,舍入单元50可以对具有类似格式的数进行操作。结果,舍入单
元50不必处理具有多种不同格式的不同输入。

在步骤2a,舍入单元50对有效数构建单元30产生的经规范化的有效
数执行舍入处理,以产生经舍入和规范化的有效数。

到浮点转换单元10的输入也被传递到指数构建单元40。指数构建单
元40可以在步骤1b中使用两个不同公式之一来确定输出数的指数应该是
什么。注意,有效数构建单元30和指数构建单元40可以分别实质上并行
操作。指数构建单元40的输出被传递到指数调整单元60和结合单元70。

指数调整单元60在步骤2b中接收已经由指数构建单元40构建的指
数,并且通过向该值加1来产生经调整的指数。得到的经调整的指数被作
为输出传递到结合单元70。注意,舍入单元50和指数调整单元60可以分
别并行操作。

结合单元70接收指数构建单元40计算出的指数、指数调整单元60计
算出的经调整的指数、以及舍入单元50生成的经舍入和规范化的有效数
作为输入。来自舍入单元50的经舍入和规范化的有效数的至少一部分被
与来自指数构建单元40的指数、或者来自指数调整单元60的经调整的指
数相结合,以产生输出(其是经转换的数)。结合单元70的输出可以被
传递到例如,浮点加法器20。

浮点转换单元10能够从各种不同格式转换到各种不同格式。特别
地,图1中所示的实施例中的浮点转换单元10能够采用16位整数、32位
整数、64位整数、浮点数、或者定点数作为输入。整数输入可以是有符号
的或者没有符号的。当输入是定点数或者整数时,输出可以是标准浮点格
式中的任意格式。当输入是浮点数时,输出可以是任意更大格式的浮点数
(例如,半精度或者单精度浮点数可以被转换为双精度数,或者半精度数
可以被转换为单精度数)。这全都可以通过使用相同的电路来实现。这里
描述的浮点转换电路10相对于其他提出的方案具有非常小且快速的优
点。特别地,浮点转换单元10的延时可以小至两个周期。

由有效数构建单元30、指数构建单元40、舍入单元50、以及指数调
整单元60中的每个单元执行的处理可以被认为是四个不同的步骤,其中
的一些步骤可以被并行执行。特别地,有效数构建单元30可以被认为执
行处理1a,指数构建单元40可以被认为执行处理1b(应该理解,处理1a
和1b被并行执行),同时舍入单元50可以被认为执行处理2a,并且指数
调整单元60可以被认为执行处理2b(同样,处理2a和2b被并行执
行)。但是需要注意,步骤的这种分配仅是说明性的,并且尽管这里描述
的实施例可以基本或者完全并行地执行特定处理,但是在其他实施例中,
处理可以被顺序或者以其他方式并行执行。

图2示出了根据一个实施例的有效数构建单元30。如前所述,有效数
构建单元30可以被认为执行步骤1a。特别地,有效数构建单元30被配置
为从输入生成经规范化的有效数。有效数构建单元30包括多路复用器
80,该多路复用器80接收输入。多路复用器80被配置为对输入进行转换
从而使得他们具有一致的格式。具体地,多路复用器80的输出将具有64
位。这可以通过对输入(其可能具有少于64位)进行填充来实现。另
外,填充可以在最低有效位处进行,从而使得感兴趣的位被全部对齐。接
受的不同输入、以及转换发生的方式参考图3被示出。

如果到有效数构建单元30的输入对应于负整数或者负定点数,则
neg_convert的值首先被设置为1,并且多路复用器90被配置为选择多路复
用器80的输出的经反向的版本作为输入。反向由反向器100实现。换言
之,如果输入是二进制补码格式的,则使用反向器100,二进制反码可以
被复用器90采用并输出。否则,多路复用器80的输出的原始形式将被多
路复用器90输出。另外,neg_convert的值被多路复用器90输出,以指示
输入是否是二进制补码格式的。因此,多路复用器90的输出不是二进制
补码格式的。由多路复用器90输出的作为结果的64位值被称为
1s_in[63:0]。应该明白,到自然形式的转换并不是完全在这个阶段完成
的,因为从二进制补码格式到自然格式的转换也要求与值1相加。然而,
该加法是在随后阶段实现的。

在图2中所示的实施例中,前导零的数目由计数器105计数。值随后
作为值lzc[5:0]被发送给左移位器110,并且左移位器110对多路复用器90
输出的值左移位值lzc[5:0]指示的次数。换言之,多路复用器90输出的值
被左移位,直到最高有效位等于1为止。将明白的是,在一些实施例中,
诸如计数器105之类的特定计数器将不是必需的,因为前导零的数目可以
由系统中的其他电路提供。例如,对指令进行解码的解码单元可以向左移
位器110提供前导零的数目。

该处理的结果是经规范化的有效数,该经规范化的有效数被传递到舍
入单元50。

图3示出了根据一个实施例的输入是如何被多路复用器80转换为具
有64位的一致格式的:

对于半精度整数,64位格式数由半精度输入的11位有效数及跟随其
后的53个零组成;

对于单精度数,输出由输入的23位有效数及跟随其后的41个零组
成;

对于16位有符号或者没有符号的整数或者定点数,输出由该16位数
及跟随其后的48个零组成;

对于32位有符号或者没有符号的整数或者定点数,输出由该32位数
及跟随其后的32个零组成;并且

对于64位有符号或者没有符号的整数或者定点数,输入直接被作为
输出而输出。

如前所述,输入通过多路复用器80被以多种方式中的一种转换,并
且输出被转发到多路复用器90和反向器100。

图4示出了根据一个实施例的舍入单元50。在图4中示出的实施例
中,舍入单元包括整数加法器120。整数加法器接收从有效数构建单元30
的左移位器110输出的经规范化的有效数、舍入常数cvt_round[63:0]、以
及由有效数构建单元30中的多路复用器90确定的值neg_convert作为输
入。

通过将值neg_convert作为进位输入值提供给整数加法器120,可以将
二进制补码格式的输入进行转换。初始步骤使用有效数构建单元30中的
多路复用器90进行,其中输入在多路复用器90中被反向。通过使用进位
输入值在整数加法器120处执行加1的加法步骤,只需要单个整数加法
器。注意,如果到有效数构建单元30中的多路复用器90的输入不是二进
制补码格式的,则值neg_convert将为零,并且因此没有进位输入值在舍入
单元50中的整数加法器120中被提供。

现在讨论舍入常数cvt_round[63:0]的构建。在图4所示的实施例中,
添加舍入处理被使用,以执行舍入。添加舍入是一种在不分析将被舍入的
数的条件下实现舍入的技术。相反,诸如加法和截断之类的操作可以在不
对数本身进行分析的情况下被执行。舍入常数根据多个参数被生成。第一
参数指示输出大小是单精度数(32位)还是双精度数(64位)。第二参
数指示舍入模式是否舍入到零。换言之,该参数表示舍入模式是否截断将
被舍入的数。第三参数指示舍入模式是否是上舍入。换言之,该参数表示
舍入模式是否涉及对数的上取整。使用这些参数,四个不同的值可以被计
算出来。这些值中的每个值都是单个位,并且被示出如下:

sp_guard在输出是单精度的并且舍入模式不是舍入到零的情况下值为
1,在其他情况下值为0;

sp_ru在输出是单精度的并且舍入模式是上舍入的情况下值为1,在其
他情况下值为0;

dp_guard在输出为双精度的并且舍入模式不是舍入到零的情况下值为
1,在其他情况下值为0;

dp_ru在输出是双精度的并且舍入模式是上舍入的情况下值为1,在其
他情况下值为0。

64位的舍入常数cvt_round[63:0]随后可以通过以下处理生成:输出24
个0;输出sp_guard的值;重复输出sp_ru的值28次;输出值dp_guard和
sp_ru的逻辑或;然后重复输出值dp_ru和sp_ru的逻辑或10次。

将舍入常数cvt_round[63:0]与有效数构建单元30中的左移位器110输
出的经规范化的有效数相加的结果是经规范化和舍入的有效数
(rounded_sig[63:0])。整数加法器120的另一输出可以是cout,其是整数
加法器120执行的加法的结果溢出的情况中的进位输出值。该值被结合单
元70用来确定使用指数构建单元40计算出的指数还是指数调整单元60产
生的经调整的指数。

图5示出了与根据一个实施例的通过对输入执行转换来生成作为输出
的浮点数的方法相对应的流程图。

在步骤S10,输入被接收。注意,输入可以具有包括半精度浮点数、
单精度浮点数、16位整数、32位整数、64位整数、16位定点数、32位定
点数、或者64位定点数在内的各种不同的格式。在步骤S20,输入被用来
生成经规范化的有效数(对应于处理1a)。这可以使用例如图2中所示的
有效数构建单元30来执行。在步骤S30(对应于处理1b),指数根据输
入被生成。在步骤S40(对应于处理2a),在步骤S20产生的经规范化的
有效数随后被舍入。这可以通过使用例如,图4中所示的舍入单元50执
行。对经规范化的有效数进行舍入处理的步骤可以使用多种不同的方法。
但是,在图5所示的实施例中,舍入处理使用添加舍入,其包括将舍入常
数与经规范化的有效数相加。在步骤S50(对应于处理2b),在步骤S30
生成的指数被调整,以生成经调整的指数。最后,在步骤S60,在步骤
S40产生的经规范化和舍入的有效数的至少一部分被与指示输出数是正还
是负的符号位、以及在步骤S30生成的指数或者在步骤S50生成的经调整
的指数之一相结合,以产生输出值。该最终步骤在图7中更详细地描述。

注意,在图5所示的实施例中,该系列步骤被顺序示出。但是,这不
是必须的。在其他实施例中,步骤S20处的经规范化的有效数的生成、以
及步骤S30处的指数的生成可以并行进行。类似地,步骤S40处的对经规
范化的有效数进行舍入的处理和步骤S50处的经调整的指数的生成可以并
行进行。替代地,其他并行化处理也是适当的。类似地,并行化处理可以
完全并行或者是实质并行。换言之,在实践中,并行化处理可以包括一定
数量的交织,或者可以包括横跨“并行”发生的处理使用共享的变量。

图6是示出根据一个实施例的对输入的有效数进行规范化、生成指
数、对经规范化的有效数执行舍入、以及调整指数的处理的详细流程图。

处理1a对应于图5的步骤S20。该处理也可以由例如,有效数构建单
元30执行。在步骤S21,输入被转换。例如,输入可以被填充,以产生
64位值,其中填充被以附加零的形式添加到最低有效位。这种格式化在图
3中被详细示出。在步骤S22,确定经转换的输入值是否为负的。例如,
可以确定经转换的输入是否为二进制补码格式。

如果输入为负,则流程进行到步骤S24,在该步骤该数的二进制反码
被采用。这可以通过对该数的所有位进行反向来实现。该处理的结果随后
在步骤S25处被左移位x次。这里,值x表示数中前导零的数目。因此,
在步骤S25,值被左移位,直到最高有效数位为1为止。换言之,采用二
进制反码的结果被规范化。该流程随后进行到步骤S41。

如果在步骤S22经转换的输入的值不为负(即,为正或者零),则流
程继续到步骤S23,在该步骤输入被左移位x次。该左移位以步骤S25中
相同的方式进行。流程随后进行到步骤S42。

处理1b基本上与处理1a同步进行。处理1b对应于图5中的步骤
S30,并且包括指数的生成。这可以通过例如,图1中所示的指数构建单
元40执行。

在步骤S31,确定输入是否为浮点数。如果输入不是浮点数,则流程
进行到步骤S33。在步骤S33,指数被使用以下公式计算出来:

(obias+size-fbits-x-1)其中:

“obias”是与将输出的数的指数相关联的偏差。尽管指数可以为正或
者负,但是一般被表示为没有符号的数。因此,为了从所表示的指数确定
实际的指数,必须减去偏差。例如,单精度数的偏差是127。因此,如果
指数被表示为数1,则真指数为-126(即,1-127)。半精度浮点数的偏差
是15,双精度浮点数的偏差是1023。

“size”是用来表示输入数的位数。

“fbits”表示用来表示输入中的小数(如果有的话)的位数。例如,
具有3个小数位的32位定点数将具有值3。替代地,不具有小数的64位
整数具有值0。

“x”是输入数中前导零的数目。

一旦输出指数的值被以这种方式计算出来,流程进行到步骤S50。如
果在步骤S31确定输入是浮点数,则流程进行到步骤S32,在步骤S32输
出指数被使用以下等式计算出来:

(obias-ibias+iexp-x),其中:

“obias”是以前讨论的输出的指数的偏差。

“ibias”是输入数的指数的偏差。

“iexp”是输入指数的值。

“x”是输入数中前导零的数目。

流程随后进行到步骤S34,在步骤S34确定输入指数是否为零。如果
输入指数为零,则在步骤S35,输出指数加1。在每种情况下,流程随后
进行到步骤S50。

有很多可以被用来执行处理1b的不同电路。但是,由于步骤S32和
S33不是同时被需要,所以通过对输入多路复用,每个步骤可以使用3:2
进位保留加法器及跟随其后的11位进位传播加法器执行。这样的实施方
式避免了对额外的有可能复杂的电路的需要,并且可以使处理1b使用少
量电路空间(因此利用少量功率)被执行。

处理2a对应于图5中的步骤S40。例如,其可以使用舍入单元50
(其示例在图4中被示出)来实现。

如果在前一步骤S22处输入被发现为负,则处理2a可以开始于步骤
S41。在步骤S41,值1被与有效数相加,并且流程进行到步骤S42。

如果在步骤S22确定输入不是负的,则处理2a可以直接在步骤S42
处开始。在步骤S42,舍入常数被相加。注意,步骤S41和S42可以使用
整数加法器来执行,其中该整数加法器采用值neg_convet作为进位输入值
(在输入为负的情况下该值被设置为1,在其他情况下该值被设置为
0)。这种电路参考图4中所示的实施例被示出。使用加法器进行该处理
的优点在于,整数加法器特别小。因此,舍入可以使用少量电路被执行,
从而该电路的功率消耗相对较小。在步骤S43,确定与舍入常数(在合适
的情况下,该常数为1)相加的结果是否导致进位输出值被生成。换言
之,确定与舍入常数相加是否产生了溢出。如果进位输出值在步骤S43处
被生成,则流程进行到步骤S44,在步骤S44输出小数被设置为零。

处理2b对应于图5中所示的步骤S50。处理2b也可以使用例如,图
1中所示的指数调整单元60被执行。

指数调整单元通过采用在处理1b中生成的指数并且加1生成经调整
的指数。

注意,处理2a和2b可以被并行执行。

图7示出了结合单元70可以如何将舍入单元50与指数构建单元40和
指数调整单元60中的一者的结果相结合的流程图。结合单元70执行图5
中所示的结合步骤S60。

在步骤S61,确定输入是否为负。如果输入为负,则在步骤S62,用
在输出中的符号位也被设置为负。否则,在步骤S63,输出的符号位被设
置为正。在每种情况中,流程随后进行到步骤S64,在步骤S64确定舍入
加法器(例如,整数加法器120)的进位输出值是否为1。如果进位输出
值不是1,则在步骤S66如处理1b中一样生成输出的指数。如果舍入加法
器的进位输出值等于1,则在步骤S65输出的指数等于在步骤S50计算出
的经调整的指数。在每种情况下,流程都继续到步骤S67,在步骤S67经
舍入和规范化的有效数的至少一部分被用作小数分量。特别地,如果期望
单精度输出,则经舍入和规范化的有效数的高24位被使用。但是,如果
期望双精度输出,则高53位被使用。

因此,输出由符号位、指数或者经调整的指数、以及作为处理2a的结
果产生并且被舍入单元50输出的经调整和规范化的有效数组成。

因此,作为使用前述电路的结果,可以通过太阳城集团和空间高效的方式使
用相同的电路从多种不同的输入格式进行转换。

尽管这里参考附图详细描述了本发明的说明性实施例,但是将理解的
是本发明不限于这些清楚的实施例,并且本领域技术人员可以在不脱离所
附权利要求限定的本发明的范围和精神的条件下做出各种改变、添加和修
改。例如,从属权利要求的特征的各种组合可以在不偏离本发明的范围的
条件下与独立权利要求的特征相结合。

关 键 词:
独立 浮点 转换 单元
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:独立的浮点转换单元.pdf
链接地址:http://zh228.com/p-6409694.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

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


收起
展开
葡京赌场|welcome document.write ('');