一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于处理浮点数的方法和系统与流程

2022-02-24 11:04:46 来源:中国专利 TAG:


1.本技术涉及处理浮点数。


背景技术:

2.大多数计算系统使用数字格式,通常以二进制或基数2进行各种计算。这些数字格式包括定点数格式或浮点数格式。定点数格式可以提供附加的精度,但仅用于表示有限范围的值。因此,大多数现代计算系统都使用浮点数格式来提供范围和精度之间的权衡。
3.浮点数包括具有

b’位的位长度的尾数(m)、具有

a’位的位长度的指数(e)和可选的符号位(s)以表示二进制数。在一些广泛使用的格式中,指数被偏置(即,偏移)值(c)以表示小于1的数字,并且用于对在其端点处的异常值进行编码。对于非极值e,浮点数x被称为已归一化,并且数字x表示为(-1)
s2e-c
(1 2-b
m。)当e=0时,浮点数x被称为非正规数,并且数字被表示为(-1)
s21-c
2-b
m。这包括通过使m=0获得的值0。因此,浮点数可用于精确地使用科学记数法、二进制或其他基数来表示非常小或非常大的数字。在算术计算中使用浮点数提供不同程度的精度,具体取决于所使用的浮点格式的位长度或类型。
4.涉及大的实数数组的总和的计算通常出现在各种数值问题的解决方案中。例如,此类总和可以作为点积计算的一部分出现。因此,具有专用于在高性能计算系统、图形处理系统、神经网络加速器等中执行求和的硬件是有利的。传统上,存在不同的方法来实现这一点,不同的方法具有不同的优点和缺点。
5.计算系统中对一组浮点数执行加法的一种已知方法是进行累加。这种形式的连续求和使用浮点加法器,并且依次将每个输入数字添加到浮点累加器中。图l示出了使用该原理的加法器单元100。加法器单元100包括多路复用器102和加法器104。浮点数数组x1、x2....xn作为输入提供给多路复用器102。在每个周期中,多路复用器102将浮点数作为第一输入提供给加法器104。加法器104将每个浮点数累加或添加到第二输入。将由加法器104生成的输出(总和)作为第二输入反馈给加法器。每个步骤中加法器的输出都经过舍入,这导致在每个循环中生成的输出出现舍入误差。舍入误差是浮动点计算的特征。
6.因此,将每个浮点数添加到先前计算的输出(总和)以生成新的或累积的输出。换句话讲,总和作为两个数字的单独的总和的序列来执行。在将数组中的所有浮点数相加后生成的最终输出(y)被提供为加法器单元100的输出。因此,在n个输入数字的情况下,执行顺序求和将产生1/(n-1)的处理量。此外,在将非常小的数字与非常大的值相加时,舍入可导致大的抵消误差。
7.通过使用多个浮点加法器,可以获得提供更多处理量的架构。例如,使用n-1个浮点加法器可以用流水线方式累加n个浮点数的总和,处理量为1。此外,使用浮点加法器的顺序链将提供(n-1)个循环的延迟作为累加。
8.因此,用于处理浮点数的现有方法和架构中存在缺点。


技术实现要素:

9.提供本发明内容是为了以简化的形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
10.本文公开了一种用于处理一组

k’浮点数以执行加法和/或减法的方法和系统。每个浮点数包括尾数(mi)和指数(ei)。该方法包括以第一格式接收该组

k’浮点数。该方法还包括基于

k’浮点数的尾数产生一组

k’数字(yi)。该方法包括标识指数ei中的最大指数(e
max
),基于最大指数(e
max
)对准数字(yi)的量值位,并且同时处理该组

k’数字。
11.根据第一方面,提供了一种处理一组

k’浮点数以执行加法和/或减法的方法,k≥3,使用硬件实施方式,每个浮点数包括尾数(mi)和指数(ei),其中该方法包括:接收第一格式的该组

k’浮点数,第一格式的每个浮点数包括位长度为

b’位的尾数(mi);基于

k’浮点数的尾数产生一组

k’数字(yi),该数字具有通过将额外的最高有效位和额外的最低有效位添加到尾数(mi)的位长度

b’来获得的

n’位的位长度,其中

n’位包括多个量值位,其中

n’为位,其中x为整数,并且x≥1;标识指数ei中的最大指数(e
max
);基于最大指数(e
max
)来对准数字(yi)的量值位;以及同时处理该组

k’数字。
12.任选地,该组

k’浮点数包括显式地包括前导位的无符号浮点数。
13.任选地,该组

k’浮点数包括隐式地包括前导位并且x≥2的无符号浮点数。
14.任选地,该组

k’浮点数包括显式地包括前导位并且x≥2的有符号浮点数。
15.任选地,该组

k’浮点数包括隐式地包括前导位并且x≥3的有符号浮点数。
16.任选地,x≤3,并且任选地,x≤b。
17.任选地,加额外的最高有效位包括加至少个最高有效位。
18.任选地,加额外的最低有效位包括加至少个最低有效位。
19.任选地,如果所接收的第一格式的该组

k’浮点数隐式地包括前导位,则添加额外的最高有效位包括加前导位。
20.任选地,该方法包括通过在浮点数的尾数mi的位前面加上前导位来形成数字(yi)的量值位。
21.任选地,该方法还包括:通过处理

k’数字(yi)来计算输出值;重新归一化输出值;以及对输出值进行舍入以将输出值表示为浮点数。
22.任选地,将数字(yi)的量值位对准为基于最大指数(e
max
)包括以下步骤:对于每个浮点数(i):计算最大指数(e
max
)和指数(ei)之间的差(ed);以及基于所计算的差(ed)将对应的数字(yi)的量值位移至lsb侧。
23.任选地,除了对数字的量值位进行移位之外,该方法还包括截断被移位到数字的位长度之外的数字位。
24.任选地,该方法还包括如果该组

k’浮点数包括有符号浮点数,则基于每个对应数字的符号位(si)来确定数字的量值位的二的补码。
25.任选地,通过确定该组

k’浮点数中的指数ei中的最大值来标识最大指数。
26.任选地,处理

k’数字包括通过执行

n’位进位保存加法来计算总和值。
27.任选地,处理该组

k’浮点数生成相同的输出值,而不管该组

k’浮点数作为输入
提供的顺序如何。
28.根据第二方面,提供了一种硬件实施方式,用于处理一组k浮点数以执行加法和/或减法,k≥3,每个浮点数包括尾数mi和指数(ei),该硬件实施方式包括格式转换单元、最大指数检测单元、对准单元和处理单元。格式转换单元被配置为:接收第一格式的该组

k’浮点数,第一格式的每个浮点数包括位长度为

b’位的尾数(mi);并且将该组

k’浮点数的尾数(mi)转换成一组

k’数字(yi),数字(yi)具有通过将额外的最高有效位和额外的最低有效位添加到尾数(mi)的位长度

b’来产生的

n’位的位长度,其中

n’位包括量值位,并且其中

n’为位,其中x为整数,并且x≥1。最大指数检测单元被配置为标识指数ei中的最大指数(e
max
)。对准单元被配置为基于最大指数(e
max
)对准数字的量值位。处理单元被配置为同时处理该组

k’数字以生成输出值。
29.任选地,格式转换单元接收包括无符号浮点数的第一格式的该组

k’浮点数,该无符号浮点数显式地包括前导位。
30.任选地,格式转换单元接收包括无符号浮点数的第一格式的该组

k’浮点数,该无符号浮点数隐式地包括前导位并且x≥2。
31.任选地,格式转换单元接收包括有符号浮点数的第一格式的该组

k’浮点数,该有符号浮点数显式地包括前导位并且x≥2。
32.任选地,格式转换单元接收包括有符号浮点数的第一格式的该组

k’浮点数,其中隐式地包括前导位并且x≥3。
33.任选地,还包括重新归一化单元,被配置为:重新归一化输出值;并且舍入输出值以将输出值表示为浮点数。
34.任选地,如果所接收的第一格式的该组

k’浮点数隐式地包括前导位,则格式转换单元通过加前导位来转换尾数(mi)。
35.任选地,格式转换单元在产生数字时在每个尾数(mi)前面加上添加的前导位。
36.任选地,对准单元将数字的量值位对准为基于最大指数(e
max
),其中对准单元包括:多个减法单元,其中每个减法单元被配置为计算每个浮点数(i)的最大指数(e
max
)和指数(ei)之间的差(ed);以及多个移位器单元,每个移位器单元被配置为基于所计算的差(ed)将对应的数字的量值位移位至lsb侧。
37.任选地,对准单元进一步截断移位到数字的位长度之外的数字的位。
38.任选地,对准单元还包括多个补码单元,所述多个补码单元被配置为如果该组

k’浮点数包括有符号浮点数,则基于对应的数字的符号位(si)来确定每个数字的量值位的二的补码。
39.任选地,格式转换单元通过向尾数(mi)添加至少额外的最高有效位来将该组

k’浮点数的尾数(mi)转换成该组

k’数字。
40.任选地,格式转换单元通过向尾数(mi)添加至少数量的额外的最低有效位,将该组

k’浮点数的尾数(mi)转换成该组

k’数字。
41.任选地,多个移位器单元并行地执行量值位的移位,从而在很大程度上减少延迟。
42.任选地,多个移位器单元和多个补码单元以任何顺序依次实施。
43.任选地,处理单元是能够将

k’数字相加以生成总和值作为输出值的进位保存加
法器电路。
44.根据第三方面,提供了一种计算机可读代码,该计算机可读代码被配置为在运行该代码时使第一方面的方法被执行。
45.根据第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质上编码有第三方面的计算机可读代码。
46.根据上述第一方面的加法器的硬件实施方式可以体现在集成电路上的硬件中。提供一种在集成电路制造系统处制造加法器的方法。可提供一种集成电路定义数据集,该集成电路定义数据集在集成电路制造系统中被处理时配置该系统以制造加法器。可以提供一种非暂态计算机可读存储介质,在其上存储有加法器的计算机可读描述,当在集成电路制造系统中被处理时,该计算机可读描述使集成电路制造系统制造体现加法器的集成电路。
47.可以提供一种集成电路制造系统,该集成电路制造系统包括:非暂态计算机可读存储介质,其上存储有根据上述第一方面的加法器的硬件实施方式的计算机可读描述;布局处理系统,该布局处理系统被配置为处理计算机可读描述以便生成体现加法器的集成电路的电路布局描述;以及集成电路生成系统,该集成电路生成系统被配置为根据电路布局描述来制造加法器。
48.可以提供一种用于执行本文中描述的任一方法的计算机程序代码。可以提供非暂态计算机可读存储介质,在其上存储有计算机可读指令,所述计算机可读指令在计算机系统处执行时使计算机系统执行本文中描述的任何方法。
49.如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。
附图说明
50.现在将参考附图详细描述示例,在附图中:
51.图1是示出常规浮点累加器的框图;
52.图2是示出旨在最小化延迟的浮点加法器网络的示意性框图;
53.图3是示出加法器的硬件实施方式的示例的框图;
54.图4a是示出第一格式表示的浮点数的尾数的框图;
55.图4b是示出有符号数的第二格式表示的框图;
56.图5是示出图3中的加法器硬件实施方式中的不同单元的框图;
57.图6a至图6d示出了从第一格式表示转换成第二格式表示的浮点数的示例;
58.图7a是示出处理一组k浮点数的方法的流程图;
59.图7b是示出将该组浮点数的尾数转换为一组有符号或无符号数的方法的流程图;
60.图8是示出浮点数加法器的三种不同架构的面积与延迟比较的曲线图;
61.图9示出了其中实现加法器的计算机系统;并且
62.图10示出了用于生成体现加法器的集成电路的集成电路制造系统;并且
63.图11示出了实现为累加器的架构300。
64.附图示出了各种示例。技术人员将理解,附图中所示的元素边界(例如,框、框的组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元素可以被设计为多个元素,或者多个元素可以被设计为一个元素。在适当的情况下,贯穿各附图使用共同的
附图标记来指示类似的特征。
具体实施方式
65.通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施方案,并且对所公开的实施方案的各种修改对于所属领域的技术人员而言将是显而易见的。
66.现在仅通过示例的方式来描述实施方案。
67.在提高处理浮点数的计算性能,诸如执行加法或减法时,所生成的输出的准确性和计算速度是考虑的两个主要标准。
68.提供较快计算的浮点加法器的一些布置包括用于执行并行求和的布置。这些也以可用于减少网络延迟。例如,用于执行并行求和并且旨在减少延迟的浮点加法器网络的特定实施方式如图2所示。图2中的树加法器200包括以平衡结构布置的多个加法器202a、202b

202g。每个加法器被配置为接收两个输入并且生成两个输入的输出(总和)。使用树加法器200,可以使用阶段实现

n’浮点数的加法。
69.在图2中给出的示例中,8个浮点数(x1、x2…
x8)的数组被提供为树加法器200的输入。在第一阶段,将阵列的两个(不同)输入提供给多个加法器中的四个加法器(主加法器)中的每一个加法器。因此,将8个浮点数作为输入提供给四个主加法器(202a、202b、202c和202d)。每个加法器生成第一输出值y,从而生成四个第一输出值(y1、y2、y3和y4)。在第二阶段期间,将第一输出值的两个(不同)值作为输入提供给多个加法器中的两个加法器(次级加法器)中的每一个加法器。因此,将四个第一输出作为输入提供给两个次级加法器(202e和202f)。每个次级加法器(202e和202f)生成次级输出,从而生成两个次级输出值(y5和y6)。此外,在第三阶段中,将两个次级输出值提供为三级加法器202g的输入。三级加法器202g生成最终输出y7,该最终输出是8个浮点数数组的总和。因此,可以在阶段(即,3个阶段)中对8个浮点数执行加法。
70.此外,在一般示例中,树加法器不必是如图2所示的平衡结构。树加法器可以在每个不同阶段使用单个加法器来添加浮点数。例如,在第一阶段中将任意两个浮点数相加以生成第一总和值。此外,在第二阶段中使用第二加法器将第一总和值与另一个浮点数相加以生成第二总和值,依此类推。与平衡树加法器相比,该示例中的布置延迟增加。
71.然而,在所有这些示例和背景技术中提供的示例中,在每个阶段,输出值都被舍入或截断,以便将输出值拟合到其有限表示中。多次舍入可导致大幅抵消。对于将每个输入提供给树加法器的不同顺序,生成不同的输出。非常小的数字与非常大的数字相加时可发生大幅抵消,并且可导致结果的重要位因舍入而丢失。例如,当对一个大的正数p、对应的负数-p和两个小的正数q和r求和时,总和的精确值为(q r)。对第一主加法器中的p和-p和第二主加法器中的q和r求和的浮点加法布置应该给出最终结果(q r)。然而,如果输入的顺序不同并且主加法器执行求和(p q)和(-p r),并且p远大于q和r,则主加法器的输出可以舍入为p和-p,总输出为0。可以在累加器架构中观察到类似的效应。
72.如上所述,处理浮点数的现有方法,诸如使用累加器或二叉树加法器执行加法,基于提供数字作为输入的顺序生成不同精度的输出值。即,提供输入的特定顺序生成最接近实际数字总和的最佳结果。提供输入的其他顺序可生成与实际数字总和不太接近的结果。
因此,基于提供输入的顺序,可以围绕浮点数的实际总和获得一系列结果。
73.所获得结果的不同精度是由于截断误差或舍入误差以及先前所讨论的大幅抵消等原因造成的。此外,使用累加器对大量数字执行加法的延迟非常大,因为加法是按顺序进行的。尽管使用二叉树加法器执行加法的方法能够并行求和,但仍然需要在各个阶段执行加法以生成最终输出值。此外,在每个阶段中执行重新归一化和舍入,这增加了生成输出值的延迟。因此,需要一种更精确并且以更少的延迟处理一组浮点数的方法。
74.本文描述了同时处理一组k浮点数的硬件实施方式和方法。该方法包括将以第一格式接收的每个浮点数转换成第二格式的数字以供处理。此外,该方法包括同时处理第二格式的数字(例如,通过对集合中的所有数字执行单个总和来获得总和,与跨集合执行多个总和相反)以生成输出值。
75.图3是示出用于处理一组k浮点数的架构的实施方式的示例的框图。架构300是加法器,执行k浮点数(x0、x1、x2…
x
k-1
)的集合的加法或减法以生成输出值。架构特别适合加大的数字数组,但也可以根据需要用于加两个或两个以上的数字。架构300包括格式转换单元302、最大指数检测单元304、对准单元306、处理单元308和重新归一化单元310。该组

k’浮点数中的每个数字包括位长度为

b’位的尾数mi和位长度为

a’位的指数ei。该组

k’浮点数可以是有符号数或无符号数。在有符号数的情况下,数字还将各自包括符号位si以及尾数和指数。然而,一些浮点格式(例如,无符号格式)可以不包括符号位。
76.可以在输入单元301中接收该组

k’浮点数(x0、x1、x2…
x
k-1
)。输入单元301可以是可以存储所接收的输入的存储装置或存储器单元。该组

k’浮点数(x0、x1、x2…
x
k-1
)以传入的第一格式存储,并且在下文中称为第一格式的数字。格式转换单元302从输入单元301接收该组

k’浮点数的尾数(m0、m1、m2…mk-1
)。格式转换单元302将尾数(m0、m1、m2…mk-1
)转换成不同的第二格式(y0、y1、y2…yk-1
)的

k’数字,如下文更详细描述的。
77.基于浮点数格式的类型来标识第一格式的数字的尾数和指数的位长度。第一格式可以是架构300被设计成接收的预定义格式,或者可以根据逐个任务(例如,由控制器,未示出)来标识。各种类型的浮点数格式的示例包括但不限于ieee格式,包括半精度浮点数(16位浮点数)、单精度浮点数(浮点数)和双精度浮点数(双),或其他格式诸如脑浮点数(bfloat16)。在下面的一些示例中,将ieee单精度浮点格式视为具有位长度为23位的尾数mi和位长度为8位的指数ei的第一格式。在下面给出的一些其他示例中,将脑浮点格式视为具有位长度为7位的尾数mi和位长度为8位的指数ei的第一格式,用于解释该方法。然而,应当理解,本发明不限于这些格式,并且本领域的技术人员将理解架构300可以被实施为使用任何类型的浮点数格式的数字来执行本文所述的方法。
78.格式转换单元302将第一格式的浮点数转换成第二格式的数字。这包括将该组

k’浮点数中的每个浮点数的尾数
‘mi’转换成数字
‘yi’。在接收到所有数字为无符号浮点数的该组

k’浮点数时,格式转换单元转换尾数以产生一组k无符号数。类似地,在接收到作为有符号浮点数的该组

k’浮点数时,格式转换单元转换尾数以产生一组k有符号数。格式转换单元302转换位长度为

b’位(第一格式)的尾数mi以产生位长度为

n’位的数字
‘yi’(以表示第二格式)。通过将一个或多个额外的最高有效位(msb)和一个或多个额外的最低有效位(lsb)添加到第一格式的位长度为

b’位的尾数(mi)来获得

n’位的位长度。因此,位长度

n’总是大于原始尾数的位长度

b’。
79.如果该组

k’浮点数是无符号浮点数,则所产生的位长度为

n’位的无符号数的表示包括n量值位。如果该组

k’浮点数是有符号浮点数,则添加到第一格式的尾数的额外的msb可包括表示符号位的位。因此,所产生的具有

n’位的位长度的有符号数的表示包括符号位和(n-1)量值位。通常,浮点格式不会对前导位(即,表示在小数点之前出现的数字的位)进行显式编码,因为可以假定它是二进制浮点数中的1,因此可以隐式编码(并且因此也被称为

隐藏位’)。因此,在第一格式中前导位是

隐藏位’的情况下,第二格式添加位来考虑第二格式的数字
‘yi’的位长度的前导位。格式转换单元通过在浮点数的尾数位前面加上具有基于编码的浮点数值的值的前导位来形成数字
‘yi’的这个特定量值位(即,它是正规数或非正规数)。在这种第二格式中,作为格式转换单元的输出,每个数字都可以被认为是有效的符号位(如果已经添加)与具有扩展的位宽度的浮点尾数的组合,小数点出现的位置与表示第一格式的尾数量值的位的位置相同—第二格式只包括在小数点出现的位置之前和之后的额外位。
80.基于集合中浮点数(k)的数量将第一格式的数字转换成第二格式的数字。即,添加到第一格式的尾数(mi)的额外的msb和lsb的数量基于数字

k’来确定。尾数mi至少以数字

k’的对数数量(位)扩展到msb侧并且至少以数字

k-1’的对数数量位扩展到lsb侧以获得数字
‘yi’。优选地,假设第一格式是具有隐式前导位并且将任何符号位视为与尾数分开的有符号浮点数,则将额外的msb和lsb添加到尾数mi的位长度

b’的任一侧。即,在添加的额外的msb中的(除位之外的)两个附加位被分配给隐式前导位(或隐藏位)和符号位si。添加的额外的lsb中的(除位之外的)附加位为精度位,用于获得额外的精度。添加的额外的msb和lsb可防止位上溢或下溢,同时处理后面将详细解释的该组

k’数字。在不同的示例中,添加到每一侧的额外的msb和lsb的数量可以相同或不同。一般来讲,第二格式的数字
‘yi’的位长度

n’可以获得为:
[0081][0082]
其中x为整数并且优选地x≥1,其中x的值取决于为了表示前导位、符号位和精度位(如果有的话)而添加的额外的位的数量。
[0083]
图4a示出了第一格式的尾数(mi)的表示,并且图4b示出了第二格式的有符号数
‘yi’的表示。在图4a中,第一格式被示出为具有7位尾数位长度b的脑浮点数。图4b示出了以第二格式表示的有符号数。图4b中的表示示出了有符号数
‘yi’,位长度为,位长度为位。这通过向尾数的位长度

b’加log2(k) 2额外的msb和log2(k-1) 1额外的lsb获得。因此,在一个示例中,当具有如图4a所示的位长度7的一组8个浮点数相加(即,k=8)时,第二格式的有符号数将具有n=16位的位长度。
[0084]
从图4b的示例可以清楚地看出,如本文所定义的,以第二格式表示的数字
‘yi’包括被分配用于表示符号位(si)的位、被分配用于表示前导位(lb)的位(即隐藏位,为了提高效率没有以第一格式明确编码)和作为额外的msb的另外的位,以及额外的lsb。因此,第二格式的数字
‘yi’是有符号数,包括符号位和量值位
(即,指示所表示的值的绝对量值的位)。基于数字是正数还是负数,将符号位分配为
‘0’

‘1’
位。如上所述,如果示例中的该组

k’浮点数中的所有浮点数都是无符号数,则可以通过添加额外的msb来表示第二格式,该额外的msb包括表示前导位的位和位。此外,如果示例中的以第一格式表示的该组

k’浮点数中的所有浮点数都是无符号数并且包含显式前导位,则有符号数
‘yi’可以通过将额外的msb添加到尾数mi的位长度b来表示
[0085]
在图4b所示的示例中,数字
‘yi’包括额外的lsb,添加到尾数mi。数字
‘yi’可包括额外的lsb,添加到尾数(mi),其中r为任何整数,r≥1。优选地,数字
‘yi’包括额外的lsb,添加到尾数(mi)。添加到尾数mi的额外的lsb提高了所得结果的精度并且减少了尾数位的下溢,同时对准数字
‘yi’,对此下文中将详细解释。
[0086]
因此,在上述段落中描述的示例中,其中第一格式是具有隐式前导位的有符号浮点数,附加位的数量x≥3。此外,在另一个示例中,假设第一格式是具有显式前导位的有符号浮点数,额外的msb和lsb被添加到尾数mi的位长度

b’的任一侧以产生数字
‘yi’,从而使附加位的数量x≥2。
[0087]
类似地,在另一种示例性情况下,假设第一格式是具有隐式前导位的无符号浮点数,额外的msb和额外的lsb被添加到尾数mi的位长度

b’的任一侧以产生数字
‘yi’,从而使附加位的数量x≥2。此外,在另一种示例性情况下,假设第一格式是具有显式前导位的无符号浮点数,额外的msb和额外的msb和额外的lsb被添加到尾数mi的位长度

b’的任一侧以产生数字
‘yi’,从而使附加位的数量x≥1。
[0088]
因此,尽管预期需要多于b的附加位才能保持所需精度,但实际上(正如后面提出的数学证明所证实的那样)可能使用少于或等于b的附加位来实现所需精度,并且在上面的示例中,可以用小于或等于三位的附加位的数量x来实现所需精度。
[0089]
因此,在一般示例中,x≥1并且x≤

b’位,使得数字
‘yi’的位长度最大,
[0090][0091]
除了符号位和前导位之外,添加到尾数的额外的msb和lsb最初在第二格式中被分配
‘0’
位。基于数字是正数还是负数,将符号位分配为
‘0’

‘1’
位。基于浮点数格式的类型,将前导位分配为
‘1’
位或
‘0’
位。在一个示例中,当浮点数为归一化的非零数时,将
‘1’
位添加为前导位,并且当浮点数为零或去归一化数时,将
‘0’
位添加为前导位。
[0092]
此外,第一格式的每个数字的指数
‘ei’(e0、e1、e2、e3...e
k-1
)被提供为最大指数检测单元304的输入。如图3所示,从输入单元301提供到最大检测单元的输入
‘ei’。在一些其他布置中,指数可以通过格式转换单元被传递到最大指数检测单元304。
[0093]
最大指数检测单元304从该组k数字的指数中标识最大指数(e
max
)。最大指数检测单元304使用各种方法或功能来检测最大指数。标识最大指数的方法的一个示例是使用二叉树结构。下面参考图5详细描述标识最大指数(e
max
)的方法。然而,哪个选项更优选可取决于可用资源(例如,并行处理总体上可更快,但计算更密集)。
[0094]
除了提供给最大指数检测单元304之外,还从输入单元301提供指数值ei作为对准单元306的输入。对准单元306接收第一格式的每个浮点数的指数
‘ei’作为第一输入。对准单元306还接收来自最大指数检测单元304的最大指数(e
max
)作为第二输入,并且接收来自格式转换单元302的数字
‘yi’作为第三输入。对准单元306对准每个数字
‘yi’的量值位,从而基于最大指数将数字
‘yi’转换成位长度为n位的不同数字(或整数pi)。参考图5详细地解释了对准数字
‘yi’的方法,但总而言之,第二格式的数字被调整为基于最大指数,并且为方便起见,调整后的数字(p0、p1、p2…
p
k-1
)作为整数在处理单元308进行后续处理。
[0095]
此后,将如此生成的k整数(p0、p1、p2…
p
k-1
)提供给处理单元308。处理单元308是加法器单元。处理单元308同时处理k整数(即,k对准数字)。即,处理单元同时对集合中的所有整数进行处理,而不是例如顺序地处理集合中的元素。处理单元308执行k整数的加法和/或减法以生成输出值q。需注意,正数与负数的相加等同于执行减法,因此术语处理在本文中用于涵盖加法和减法两者的单独或组合的作用。
[0096]
处理单元308的输出值q和最大指数检测单元304的最大指数被进一步提供给重新归一化单元310。重新归一化单元310将来自处理单元的输出值转换成例如以第一格式表示的浮点数(但任选地以不同格式表示,例如,如果需要,以第三格式表示),具有尾数mi和指数
‘ei’。输出单元312存储转换后的输出值(即,输出浮点数)。
[0097]
图5是示出图3中的架构300的实施方式中的不同单元的框图。考虑一种场景,其中第一格式的该组k浮点数包括四个数字,即,k=4。格式转换单元302接收该组四个浮点数xi(x0、x1、x2、x3)作为输入。格式转换单元302将第一格式的4个数字的集合转换成第二格式的四个数字yi,如参考图3所述。在该示例中,考虑第一格式的该组k浮点数是具有隐式前导位的四个有符号浮点数。因此,该组k浮点数被转换为具有n位的位长度的四个有符号数,包括符号位si和(n-1)量值位fi。在其他示例性情况下,第一格式的该组k浮点数可以是无符号浮点数。
[0098]
来自输入单元301的每个数字(e0、e1、e2和e3)的指数
‘ei’被提供给最大指数检测单元304。
[0099]
图5中的最大指数检测单元304包括三个最大函数逻辑504a、504b和504c。这仅作为示例,并且其他实施方式可具有用于查找最大指数的不同结构,或类似结构,但具有不同数量的逻辑以考虑不同数量的输入。
[0100]
在所描绘的示例中,最大函数逻辑(max1)504a接收指数e0和e1。最大函数逻辑(max2)504b接收指数e2和e3。最大值函数逻辑504a标识e0和e1中的最大指数值。最大值函数逻辑504b标识e2和e3中的最大指数值。此外,最大函数逻辑504a和最大函数逻辑504b的输出被提供给最大函数逻辑(max3)504c。最大函数逻辑504c标识最大函数逻辑504a和最大函数逻辑504b的输出中的最大指数值以检测e
max
,即输入指数e0、e1、e2和e3中的最大指数。
[0101]
如上所述,最大值检测单元304可以不同的其他方式来实施。例如,最大检测单元304可以使用二叉查找树来实施。
[0102]
回到所描绘的示例,由最大检测单元304标识的最大指数被提供为对准单元306的输入。此外,第一格式的四个数字的指数被提供为对准单元306的输入。此外,第二格式的四个有符号数
‘yi’被提供为对准单元306的输入。对准单元306基于最大指数和对应于有符号数的第一格式的数字的相应指数,对准每个有符号数
‘yi’的量值位fi。换句话讲,对应的浮
点数尚不具有最大指数的有符号数的量值位被移位以考虑第一格式的数字的指数与最大指数之间的差(有效地在第一(或至少第一非零)量值位之前添加零,并且根据需要移除尾随位,以根据需要重新对准量值位)。因此,对准单元306将每个有符号数(

yi’)转换成由对准单元306输出的另一个整数(pi)。整数pi被认为是定点数格式。类似地,在无符号数的情况下,对准单元基于最大指数和对应于无符号数的第一格式的数字的相应指数,对无符号数的量值位进行移位。
[0103]
用图6a至图6d所示的示例例示了有符号数
‘yi’到整数pi的转换。应当理解,在描述这一系列图时,起点为由格式转换单元302输出的第二格式数的有符号数
‘yi’,并且终点为上文所提及的转换后的有符号数pi(整数pi)。然而,为了便于参考,在下面的描述中,中间阶段也可以被称为有符号数。
[0104]
考虑具有隐式前导位和与尾数分开的符号位的第一格式的浮点数的示例。每个数字具有第一格式的位长度为7位的尾数mi(诸如bfloat16)。因此,在该示例中,当转换成第二格式时,一组4个数字中的每个数字包括具有位长度

n’的有符号数yi(包括有符号位si),其中
[0105][0106]
图6a示出了位长度为14位的第二格式的有符号数
‘yi’。在一个示例中,考虑图6a所示的数字表示提供为对准单元306的输入的有符号数y0。对准单元306包括多个减法模块505。对准单元306还包括多个移位器单元506和多个补码单元507。
[0107]
减法模块中的每个减法模块从输入单元301接收指数ei作为第一输入,从最大指数检测单元304接收最大指数作为第二输入,并且从格式转换单元302接收有符号数
‘yi’作为第三输入。输入单元301将四个数字的原始指数
‘ei’提供给每个减法模块。每个减法模块计算数字的最大指数
‘emax’和指数
‘ei’之间的差
‘edi’。在图5中,第一减法模块从输入单元301接收第一数字的指数e0,并且从最大指数检测单元304接收最大指数e
max
。第一减法模块计算在图5中称为e
d0
的第一差。类似地,其余减法模块计算差值e
d1
、e
d2
、e
d3
,如图5所示。如图所示,多个减法模块并行计算每个数字的差e
di
,但其他布置也是可能的—例如,依次执行每个减法的单个减法模块。返回所描绘的示例,来自多个减法模块505的每个所计算的差e
d0
、e
d1
、e
d2
和e
d3
被进一步提供给多个移位器单元506中的对应的移位器单元。
[0108]
多个移位器单元506中的每个移位器单元接收数字的所计算的差ed作为第一输入,并且接收对应的有符号数
‘yi’的量值位fi作为第二输入。此外,多个移位器单元506中的每个移位器单元基于对应的所计算的指数差来对有符号数
‘yi’的量值位fi进行移位。量值位fi(符号位除外)向最低有效位侧(即,所描绘的格式的右侧)移位与所计算的指数差相等数量的位置。图6a示出第一输入的有符号数

y0’
的量值位fi包括对应于所述第一格式的所述数字的所述尾数的所述位的所述

b位’,在前面有显式前导位
‘1’
。有符号数

y0’
的其余的额外位用
‘0’
位填充。原始

b位’以及显式前导位由移位器单元移位。此外,在图6a中,有符号数y0的符号位被分配有
‘1’
位,指示有符号数y0为负数。移位器单元未对符号位进行移位。
[0109]
在该示例中,多个移位器506中的第一移位器从格式转换单元302接收第一输入(有符号数y0的量值位f0)。此外,第一移位器从第一减法模块接收所计算的差e
d0
(在一个示
例中,对于图6a所示的具有尾数(f0)的第一数字,考虑所计算的差e
d0
(差e
max
和e0)等于5)作为第二输入。因此,第一移位器单元将有符号数y0的量值位f0向右移位5个位置。图6b示出了经过移位的数字。所计算的差ed永远不会是负数。因此,基于针对每个数字计算的差ed,量值位fi总是移位至最低有效位侧(即,在示例中移位至右侧),可能移动零位。
[0110]
类似地,多个移位器单元506中的其他移位器单元基于对应的所计算的差e
d1
、e
d2
和e
d3
对其余三个数字的量值位(f1、f2和f3)进行移位。因此,多个移位器单元506中的所有移位器单元并行地执行量值位fi的移位,而在用于处理浮点数的大多数现有架构中,移位器根据需要顺序地对尾数进行移位或对准,这在很大程度上增加了延迟。由于在所公开的架构中,因所有数字的移位或对准并行发生,当待处理的浮点数数量增加时,处理延迟可以显著减少。在另一个实施方式中,尽管存在由于可用资源的限制而增加了延迟的事实,但多个移位器单元506可能依次执行量值位fi的移位(例如,并行处理总体上可更快,但计算更密集)。
[0111]
在图6b中可以看到,量值位的移位导致从有符号数的位宽度移出5位(并且因此移出所存储的数字的表示)。移位器单元截断被移位到n位的位长度之外的有符号数的位。当所计算的对应数字的指数差大于转换成第二格式时第一格式的数字的尾数mi中添加的额外的lsb的数量时,对应于第一格式的原始数的尾数的位被移出

n’位的位长度。当所计算的差大于额外的lsb的数量时,会导致原始(第一格式)尾数的位下溢。当所计算的差小于额外的lsb的数量时,只引起由格式转换单元302添加的

零’位的下溢。如上所述,图6b示出了当位被移位5位时从n位的位长度移出的5位。图6c示出了执行截断之后的有符号数。从图中可以明显看出,尽管位被移动了5位,但在这种情况下,由于在转换为第二种格式期间加了额外的lsb,因此仅丢失了实际数字的2位(即,第一格式的数字的尾数的2位)。因此,额外的lsb用于减少精度损失,例如,如果所有数字都被移位成使用第一格式的相同的最大指数,就会发生精度损失。
[0112]
来自每个移位器单元506的输出还被提供给多个补码单元507中的对应的补码单元。补码单元从移位器单元接收对准的量值位作为第一输入,并且将有符号数
‘yi’的符号位作为第二输入。然而,在其他布置中,补码单元的功能可以在移位单元的功能之前或者作为加法器单元(处理单元308)的一部分执行。在任何情况下,补码单元都会对具有指示负数的符号位的那些数字执行量值位fi的二的补码。在这种情况下,集合中经过移位的正符号数被提供给处理单元308(图5中的加法器508)而不进行补码。此外,对集合中的负数的二的补码被提供给处理单元。处理单元308接收多个补码单元507的输出,并且同时处理对准的有符号数pi以生成输出。从每个补码单元获得的输出是对准的数字pi。图6d表示对图6c所示的尾数进行补码获得的数字p0。
[0113]
因此,对准单元306通过执行对数字
‘yi’的量值位fi进行移位和截断的步骤来对准数字
‘yi’的量值位以生成一组数字(或整数)pi。对准单元还将任何带有指示数字为负数的符号位的数字转换成二的补码表示。在无符号数
‘yi’的情况下,对准单元执行对数字
‘yi’的量值位fi进行移位和截断的步骤。唯一的区别是在无符号数的情况下不需要执行补码步骤。对准单元306能够针对尾数位的移位、截断和补码的步骤并行地处理每个数字。在转换后获得的数字pi是整数。数字pi表示为
[0114]
[0115]
为简单起见,假设指数偏差为0。
[0116]
如图5所示,转换后的数字,即整数p0、p1、p2和p3被进一步提供给作为处理单元308的加法器508。通过对示例中的有符号数y0的量值位f0执行移位、截断和补码而生成的有符号整数p0如图6d所示。在一个示例中,加法器508是能够对4个

n’位整数执行加法的进位保存加法器。整数pi的值介于和之间。进位保存加法器执行4个有符号整数pi的加法以生成总和值q(输出)。
[0117][0118]
被加项的量值(即4个整数pi)小于并且因此总和值将小于并且不会溢出

n’位。即,最大值整数pi将在对应于隐藏位的位置为1-即,即来自msb端的位(占符号位),并且该值的k数字之和(即考虑所有数字都具有最大指数的极端情况)不能溢出在符号位之后的msb端提供的附加的位。加法器508处理该组

k’浮点数以生成相同的输出值,而不管该组

k’浮点数作为输入提供的顺序如何。
[0119]
总和值q被进一步提供给重新归一化单元310。需注意,在该示例中,值q与值pi一样,将是二的补码格式的有符号整数。归一化单元310包括移位器510a和减法器510b。移位器510a对总和值q的位进行移位以生成归一化值(一般格式)。移位器510a通过计算在msb中连续出现(即包括符号位)的前导
‘0’
位或
‘1’
位(表示为

d’)的数量,以归一化格式表示总和值q。当所获得的总和值为非负数时,计算前导
‘0’
位的数量,当所获得的总和值为负数时,计算前导
‘1’
位的数量。移位器对数字的位进行移位以生成归一化格式的归一化数字(nk)。数字(nk)被进一步舍入以表示具有所需位长度的归一化数字(nk),例如,如果输出与输入的格式相同,则位长度为

b’位。归一化数字(nk)表示为(假设在转换成第二格式时添加了msb):
[0120][0121]
减法器510b接收最大指数作为第一输入和d(前导
‘0’

‘1’
的数量)并且接收添加到第一格式)的尾数的额外的lsb的数量作为输入。此外,减法器基于输入计算归一化数字的指数,并且在

a’位的位长度上表示指数。最终输出的指数被计算为(同样假设在转换成第二格式时添加了msb)
[0122][0123]
这是一个示例,并且不限于本领域的技术人员在其他示例中可以使用不同的其他已知方法来计算指数ek。因此,所获得的最终输出或总和值用归一化尾数(nk)和指数(ek)表示。
[0124]
加法器的架构300可用于对任何数量的浮点数执行加法。图5所示的示例是用于将一组4个浮点数相加的加法器300的具体示例。此外,可以类似的方式将附加数量的元素添加到加法器500中的每个单元,从而将其扩展为同时对任意数量的浮点数(例如,20个浮点数或50个浮点数)执行加法。
[0125]
此外,架构300还可以用作累加器,如图11所示,用于对多批浮点数集合执行加法,即使浮点数多于加法器的输入。图11示出了实施为累加器设计的架构300。累加器设计1100包括接收大量浮点数数组(x0、x1…
xn)的门控单元1102、作为如图3所示的加法器(300)的累加器1104和寄存器1106。考虑累加器1104是具有能够同时将一组33个浮点数相加的架构300的加法器。如果存在128个浮点数(x0、x1…
x
127
)的数组要执行加法,则累加器1104在不同的时钟周期分四个单独的批次对数组中的128个浮点数执行加法。
[0126]
在第一循环期间,数组门控单元1102将阵列中的前32个浮点数提供给累加器1104。累加器1104将数组(x0、x1…
x
31
)中的前32个浮点数与累加值(c)相加,其中初始c=0,以生成第一输出并且将第一输出作为累加值(c)存储在寄存器1106中。第一输出通过以与图3或图5中所述的相同方式执行加法来生成。在第二循环中,累加器1104将接下来的32个浮点数(x
32
、x
33

x
63
)与累加值(c)相加以生成第二输出并且传递第二输出以存储为累加值。类似地,数组中的其余数字在每个时钟周期与更新的累加值以每批次32个数字分批次相加。因此,在流水线设计中,添加128个数字的数组仅需要三个额外的加法周期。
[0127]
图7a是示出处理一组

k’浮点数的方法的流程图。该方法包括使用架构的硬件实施方式来执行加法和/或减法。该组

k’浮点数中的每个浮点数包括尾数(mi)和指数(ei)。
[0128]
在步骤702中,该方法包括接收第一格式的该组

k’浮点数。第一格式的每个浮点数包括位长度为

b’位的尾数(mi)和位长度为

a’位的指数(ei)。基于浮点数格式的类型来标识第一格式的尾数(mi)的位长度

b’位和指数(ei)的位长度

a’位。此外,浮点数可以是带有隐式或显式前导位的有符号数或无符号数。例如,第一格式的单精度(32位)浮点数通常可能是带有隐式前导位的有符号数,其包括位长度为23位的尾数,(不包括前导位)、位长度为8位的指数和额外的符号位(si)。在其他示例中,第一格式的单精度(32位)浮点数可以是具有显式前导位的有符号数,然后尾数具有包括显式前导位的23位的位长度。
[0129]
当第一格式的单精度(32位)浮点数是具有隐式前导位的无符号数时,将不存在任何额外的符号位,并且尾数可以用24位(不包括前导位)的位长度来表示。此外,当第一格式的单精度(32位)浮点数是具有显式前导位的无符号数时,尾数的24位的位长度包括显式前导位。
[0130]
在接收到第一格式的该组

k’浮点数时,在步骤704处,该方法包括将该组

k’浮点数中的每一个浮点数的尾数(mi)转换成数字(yi)。通过将额外的msb和额外的lsb添加到第一格式的尾数(mi)的位长度

b’中来获得数字(yi)。b位的位长度基于数字

k’(集合中的浮点数的数量)进行扩展。在第一格式的该组

k’浮点数作为有符号数的示例中,添加额外的mbs和lsb包括优选地添加数量的最高有效位和数量的最高有效位和数量的最低有效位。添加到尾数的位长度b的额外的msb和额外的lsb的数量可以相同或不同。在该示例中,添加的额外的msb包括表示符号位的位和表示前导位的另一个位。因此,有符号数用包括符号位si和前导位(lb)的

n’位的位长度表示。位长度

n’表示为
[0131][0132]
其中x为整数并且x≥1。
[0133]
此外,步骤706处的方法包括标识该组

k’浮点数的指数(ei)中的最大指数(e
max
)。最大指数(e
max
)由最大指数检测单元304标识。最大指数检测单元304实施算法,诸如用于标
识一组值(指数,ei)中的最大值的最大值函数。步骤706可以在步骤704之前或之后执行,或者甚至可以与步骤706并行执行。
[0134]
该方法还包括在步骤708处,将数字
‘yi’的量值位对准为基于最大指数(e
max
)。数字
‘yi’是表示为具有n位的位长度的定点数的整数。相对于图7b论述了对准数字的量值位的方法。对准单元306基于最大指数对准数字的量值位。对准单元306因此生成对准数字,该对准数字为整数pi。
[0135]
该方法还包括,在步骤710处,同时处理该组

k’对准数字pi以生成输出值q。整数pi的处理包括执行对k数字的加法和/或减法。需注意,正数与负数的相加等同于执行减法,因此术语处理在本文中用于涵盖加法和减法两者的单独或组合的作用。k数字的处理同时执行。即,处理单元同时对集合中的所有整数进行处理,而不是例如顺序地处理集合中的元素或成对地处理集合中的元素。处理单元308执行对k整数的加法和/或减法以生成输出值。
[0136]
此外,在步骤712处,该方法包括将输出值q重新归一化和舍入,将输出值表示为第一格式或任何其他格式的具有归一化尾数nk和指数ek的浮点数。该方法包括将输出值重新归一化以将输出值q表示为标准的归一化数字。此外,该方法对归一化数字nk进行舍入以用具有特定位长度的尾数来表示该数字。在一个示例中,归一化数字被舍入为

b’位的位长度,以便将第一格式的数字表示为所接收的具有位长度

b’的尾数的输入。在其他示例中,与所接收的输入相比,输出值以不同的浮点数格式表示。归一化是通过最初计算在msb侧重复出现的
‘0’
位或
‘1’
位的数量来执行的。当输出值

q’为非负(即正)数时,对重复出现的
‘0’
位进行计数。当输出值

q’为负数时,对重复出现的
‘1’
位进行计数。此外,通过将输出值q的位移位到小数点周围的lsb侧以将有符号数表示为标准的归一化数来执行归一化。此外,该方法基于最大指数和重复出现的位的计数数量来计算指数值。如此计算的指数值用

a’位的位长度表示,如上面参考图5所解释的。因此,将输出

q’归一化为表示为第一格式的浮点数。
[0137]
图7b是示出基于最大指数对准数字(yi)的方法的流程图。
[0138]
该方法包括,在第一步骤714处,为该组

k’浮点数中的每个浮点数计算最大指数(e
max
)和指数(ei)之间的差(ed)。对准单元306中的减法器单元针对每个输入浮点数计算差ed。对准单元306包括用于计算差ed的多个减法器单元。
[0139]
该方法包括在步骤716处,基于对应的浮点数的所计算的差,将对应的数字的量值位移位至lsb侧。如果所计算的差ed大于在将第一格式的尾数mi转换成数字时添加的额外的lsb的数量,通过对位的位置进行移动来对准量值位导致原始

b位’从第一格式的数字的尾数下溢。
[0140]
此外,为了对数字的量值位进行移位,步骤718处的方法包括截断移位到数字位长度之外的数字的位。即,所有移位到位长度

n’之外的数字位都被截断。该方法在所计算的差值大于添加的额外的lsb的数量时,仅截断对应于原始第一格式的数字的尾数位的数字的位。任何合理舍入(fair rounding)方案都可用于截断数字的位。在处理浮点数时因截断位而引起的错误很微小,因为尾数(mi)已经通过添加额外的lsb数量来扩展,以减轻在执行移位或截断数字位的步骤时下溢造成的影响。
[0141]
在(可选步骤720)处的方法还包括基于每个对应数字的符号位(si)来确定数字的二的补码。如果所接收的第一格式的该组

k’浮点数作为有符号数,则该步骤是可选的。当
数字的符号位(si)指示负数时,对有符号数进行补码。正数保持不变,然后同时处理所有数字。在一个示例中,处理

k’数字包括通过执行

n’进位保存加法来计算总和值。对总和值进行进一步的归一化和舍入以表示浮点数格式的输出。
[0142]
图8是说明架构300的实施方式与用于处理一组浮点数的其他标准架构的比较的图。在图8中,示出了将图3中解释的架构300的实施方式与其他标准架构进行比较的第一实验的结果的图形表示。第一实验包括比较不同架构的面积与延迟的权衡。如图8所示,在第一实验中,使用三种架构(拱形1、拱形2和拱形3)来进行比较。拱形1是浮点加法器实施方式的平衡树的架构(成对舍入到最接近的位置并且与偶数实施方式相关)。针对拱形1获得的结果由图8中的第一曲线上的十字( )符号表示。拱形2是浮点加法器实施方式的平衡树的另一个架构(具有成对的合理舍入实施方式)。针对拱形2获得的结果由图8所示第二曲线上的圆圈(o)符号表示。拱形3是本文件中公开的架构300的实施方式(具有合理舍入实施方式)。针对拱形3获得的结果由图8中的第三曲线上的正方形符号表示。在第一实验中,三个架构使用vhdl在软件中实施。
[0143]
在第一实验中,使用第一格式的单精度(32位)浮点数的一组浮点数作为输入。每个浮点数包括位长度为23位(b=23位)的尾数mi、位长度为8位(a=8位)的指数
‘ei’和符号位。第一实验包括针对各种时序目标综合三种架构,以便观察面积与延迟的权衡。从图8中的图观察到拱形3(架构300)具有最小的延迟和最小的面积。特别地,根据架构300综合的最快电路使用的面积不到从其他正在考虑的架构综合的最快电路的面积的50%,其延迟也不到后者的50%。
[0144]
此外,还比较了不同架构的硬件实施方式的复杂性。关键路径等硬件实施方式的复杂性使用大o符号来表示。对于架构300,最大指数检测单元304在关键路径上用o(log(k)log(a))门来实施。此外,对准单元306在关键路径上用o(log(b))门实施。处理单元(308),即,加法器508在关键路径上用o(log(k) log(b))门实施。归一化单元310在关键路径上用o(log(a))门实施。因此,整体硬件实施方式可以在其关键路径上用o(log(k)log(a) log(b))逻辑门来实施。为了增加数组大小k和尾数宽度b,关键路径比浮点加法器的平衡树的架构渐近短。
[0145]
对于第一格式的该组k浮点数的相同输入,下文解释了由浮点加法器的二叉树(具有固定舍入模式,例如向零舍入)组成的多输入加法器的直接实施。通过构造,实施方式产生成对的合理舍入的总和。浮点加法器平衡树中的关键路径经过o(log(k))加法器,每个加法器在其关键路径上有o(log(ab))门。总之,浮点加法器平衡树的架构因此在其关键路径上具有o(log(k)log(ab))逻辑门。
[0146]
此外,架构300的实施方式所生成的输出的精度不低于在使用二叉树加法器或具有合理舍入的累加器加法器的架构时执行的成对加法的最坏情况。稍后提供架构300的精度的数学证明。这表明结果的准确性不低于具有合理舍入方案的最坏情况下的成对浮点加法。这意味着,对于任何给定的输入数组,通过将数组中的两项迭代地替换为其舍入到最接近的较大或较小可表示值的总和来执行成对加法总是可以生成与使用所公开的架构300的加法生成的结果相比不太精确或与其相等的结果。在已知架构中,对输入进行排序和执行舍入步骤的一种不精确选择是将量值递增的数字与最大的数字相加并且始终在相同的方向上进行舍入。由架构300获得的输出精度不低于通过作出这些选择来获得的结果的精度。
[0147]
与浮点加法器树相比,通过移除中间的归一化步骤并且用单个进位保存加法替代中间进位传播步骤,架构300的延迟和面积性能显著提高,如图8所示。如在以零为中心的高斯分布式输入上测量的那样,如上所述的架构300的经验精度显示出显著优于浮点加法器树。
[0148]
最后,用于执行加法的架构300是可交换的。任何输入顺序产生相同的输出。这导致更好的结果再现性,因为集合中的浮点数绑定到架构300的输入的顺序不会影响结果。
[0149]
下文提供了架构300的精度的数学证明。在下面的部分中,证明了算法的精度不低于具有合理舍入的最坏情况下的迭代成对加法。
[0150]
首先,定义并且证明了合理舍入方案的一些基本性质。令f1,为两种数字格式,并且r∈r∪{
±
∞}为数字。当q为f中r的最小上限或最大下限时,q为格式f的r的合理舍入,写为q≈
f r。
[0151]
当f2中的r的最小上限和最大下限属于f1时,在r的邻域中f1比f2更精确。因此直接给出以下命题。
[0152]
命题1:如果在r的邻域中f1比f2更精确,那么对于所有值q1、q2,使得q1≈
f1 r和q2≈
f2 q1,获得q2≈
f2 r。.
[0153]
现在令f为浮点格式,在计算的输入和输出中使用

a’指数位、

b’尾数位和指数偏差

c’。此外,格式f的一组

k’浮点数作为输入。算法通过转换成在数组中的最大指数e
max
上对准的定点格式g进行。
[0154]
令l为指数,使得e
l
=e
max
为最大指数。格式g的数字经由为最大指数。格式g的数字经由位给定为符号整数,其值在范围内并且表示实数每个输入浮点数xi被转换成定点值其中舍入的选择留待实施。
[0155]
然后将定点值相加,并且将它们的总和转换回原始格式,从而产生结果其中舍入的选择同样留待实施。
[0156]
出于此分析的目的,输入数组中的数字分为两类:小数字,其指数小于出于此分析的目的,输入数组中的数字分为两类:小数字,其指数小于以及大数字,其指数介于和e
l之间
。输入数组被划分成小数字x


,...,x
′k′‑1的数组和大数字x
′k′
,...,x

k-z
,x

k-1
=x
l
的数组。小数字的计数k

验证0≤k

≤k-1。对于所有i=0,...,k-1,,n
′i和e
′i分别表示x
′i的有效数和指数,并且p
′i表示x
′i转换成定点格式g,使得需注意,虽然小数字可产生舍入误差,但大数字被精确表示。
[0157]
序列wi通过使来构建,其中i=0,...,k-2,并且w
k-1
=y。回想一下因此
在该分解中证明了关于中间总和的量值的两个引理。
[0158]
首先,证明了在将小数字与具有最大指数的数字相加时,格式g中不会出现下溢。
[0159]
引理1:如果x
l
已归一化,则
[0160][0161]
对于所有i=1,...,k
′‑
1都是如此。.
[0162]
证明:通过归纳证明对于所有i=1,...,k
′‑
1都是如此。令i为介于1和k
′‑
1之间的整数。首先,通过三角不等式然后,由于i≤k
′‑
1,通过假设获得此外,可以用g素示,因此在舍入后,获得
[0163]
如果i=1,则因为x
l
可以用g素示,继而因为x
l
已归一化。
[0164]
如果i>1,则通过归纳假设
[0165]
在任一种情况下,获得从而结束归纳。作为直接结果,获得结果,获得使得对于所有i=1,...,k
′‑
1都是如此,因为k

≤k-1。.
[0166]
接下来,证明在将所有其他数字与具有最大指数的数字相加时,格式g中不会出现溢出。
[0167]
引理2:如果x
l
已归一化,则已归一化,则对于所有i=1,...,k-1都是如此。
[0168]
证明:指出对于所有i=0,...,k-1都是如此,因为x
l
是最大的输入指数,继而因为值可以用g素示。因此可以用g素示。因此对于所有i=1,...,k-1都是如此,这通过对i的直接归纳获得。继而1都是如此,这通过对i的直接归纳获得。继而
[0169]
在以下定理中陈述和证明架构300的最坏情况下的精度。
[0170]
定理1:对于任何数组x0,...,x
k-1
,将存在x0,...,x
k-1
的成对平均舍入的总和z,使得将一组输入x0,...,x
k-1
应用于架构300将产生输出y,使得
[0171]
证明:专注于x
l
归一化的情况,其他情况不会造成任何困难。考虑序列u0,...,u
k-1
,使得u0=x
l
和ui是f中的u
i-1
x

i-1
的最大下限,对于所有i=1,...,k-1都是如此,以及序列v0,...,v
k-1
,使得v0=x
l
和vi是f中的v
i-1
x

i-1
的最小下限,对于所有i=1,...,k-1都是如此。这些序列定义了成对的合理舍入的总和u
k-1
和v
k-1
,通过在相同的方向上系统地舍入中间总和而获得。很明显间总和而获得。很明显声称ui≤wi≤vi,对于所有i=0,...,k-1都是如此,使得u
k-1
≤y≤v
k-1
。这样立即获得其中z=u
k-1
或z=v
k-1
。.
[0172]
通过归纳证明ui≤wi≤vi,对于所有i=0,...,k-1都是如此。.
[0173]
i=0:由定义获得u0=v0=x
l
,并且w0=x
l
,因为w0≈
g x
l
,并且x
l
可以用g表示。.
[0174]
i=1,...,k
′‑
1:通过归纳假设,获得u
i-1
≤w
i-1
≤v
i-1
,继而u
i-1
x

i-1
≤w
i-1
x

i-1
≤v
i-1
x

i-1
。此外,通过引理1和引理2,获得。此外,通过引理1和引理2,获得使得g相比于f在w
i-1
x

i-1
的邻域更精确,因为对于该指数范围g,至少容纳与f相同数量的尾数位。由于g是定点格式并且总和不会上溢或下溢,因此将x

i舍入
,然后将结果添加到w
i-1
相当于将x

i-1
添加到w
i-1
,然后对结果进行舍入。获知ui是f中的u
i-1
x

i-1
的的最大下限,并且小于或等于g中的u
i-1
x

i-1
的最大下限。类似地,vi是f中的u
i-1
x

i-1
的最小上限,并且大于或等于g中的u i-1

u i-1。因此,根据合理舍入的定义,获得ui≤wi≤vi。
·
[0175]
i=k

,k

1,...,k-2:通过归纳假设,获得u
i-1
≤w
i-1
≤v
i-1
,继而u
i-1
x

i-1
≤w
i-1
x

i-1
≤v
i-1
x

i-1
。由于x
′i是大数字,因此可以用g表示,并且在引理2之后,获得wi=w
i-1
x

i-1
。由于ui≤u
i-1
x

i-1
和vi≥v
i-1
x

i-1
,获得ui≤wi≤vi,
·
[0176]
i=k-1:根据归纳假设,u
k-2
x

k-2
≤w
k-2
x

k-2
≤v
k-2
x

k-2
。使用与之前类似的参数,获知和g中的任一者相比于w
k-2
x

k-2
和中的邻域的f更精确。然后,通过平均舍入的定义,根据命题1获得w
k-1

f w
k-2
x

k-2
,继而u
k-1
≤w
k-1
≤v
k-1

[0177]
类似的推理适用于x
l
的非正规值。在这种情况下,所有中间总和都可以用g表示,因此只有最后的舍入会导致精度损失。与之前一样,最后的舍入保留顺序。x
l
的无限的或nan输入值导致无限的或nan输出值,这不涉及舍入。
[0178]
图9示出了计算机系统,其中可以实施本文所述的图形处理系统。计算机系统包括cpu 902、gpu 904、存储器906和其他装置914,诸如显示器916、扬声器918和相机908。处理框910(对应于处理框110)在gpu 904上实施。在其他示例中,处理块910可以在cpu 902上实施。计算机系统的部件可经由通信总线920彼此进行通信。存储库912(对应于存储库112)被
实施为存储器906的一部分。
[0179]
虽然图9示出了图形处理系统的实施方式,但应当理解,可以针对人工智能加速器系统绘制类似的框图-例如,通过用神经网络加速器(nna)替代gpu 904,或者添加nna作为附加单元。在此类情况下,可以在nna中实施加法器的架构300。
[0180]
本文所描述的加法器可体现在集成电路上的硬件中。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或它们的任何组合中实施。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或它们的任何组合。在软件实施方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,该程序码在处理器上执行时执行指定任务。本文中所述的算法和方法可以由执行代码的一个或多个处理器执行,该代码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(ram)、只读存储器(rom)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并且可以由机器存取的其他存储器装置。
[0181]
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包括以机器语言、解释语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(诸如硬件描述语言或网表),以及用诸如c、java或opencl等编程语言码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由该代码指定的任务。
[0182]
处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或它们的集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,诸如cpu、gpu、nna、片上系统、状态机、媒体处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)等。计算机或计算机系统可以包括一个或多个处理器。
[0183]
本发明还意图涵盖限定如本文中所描述的硬件的配置的软件,诸如硬件描述语言(hdl)软件,用于设计集成电路或用于配置可编程芯片以执行所需功能。即,可提供一种计算机可读存储介质,其上编码有集成电路定义数据集(也可被称为硬件设计)形式的计算机可读程序代码,当在集成电路制造系统中进行处理(即,运行)时,该计算机可读程序代码将系统配置为制造包括本文所述的任何设备的计算装置。集成电路定义数据集可以是例如集成电路描述。
[0184]
因此,可以提供一种在集成电路制造系统处制造如本文所描述的加法器架构的方法。此外,可以提供一种集成电路定义数据集,该集成电路定义数据集当在集成电路制造系统中被处理时,使制造加法器的方法被执行。
[0185]
集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(rtl)代码,作为高级电路表示法(诸如verilog或vhdl),以及作为低级电路表示法(诸如oasis(rtm)和gdsii)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如rtl)可以在计算机系统上处理,该计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义和用于组合这些元件以便
生成由该表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
[0186]
现在将关于图10描述在集成电路制造系统上处理集成电路定义数据集(例如,硬件设计)以便将系统配置为制造加法器的示例。
[0187]
图10示出被配置为制造如本文中的任一个示例中描述的加法器的集成电路(ic)制造系统1002的示例。特别地,ic制造系统1002包括布局处理系统1004和集成电路生成系统1006。ic制造系统1002被配置为接收ic定义数据集/硬件设计(例如,定义如本文任何示例中描述的加法器),处理ic定义数据集,并且根据ic定义数据集生成ic(例如,其体现如本文任何示例中描述的加法器)。ic定义数据集的处理将ic制造系统1002配置为制造体现如本文中的任一个示例中所述的加法器的集成电路。
[0188]
布局处理系统1004被配置为接收和处理ic定义数据集/硬件设计以确定电路布局。根据ic定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成rtl代码以确定待生成的电路的门级表示,例如就逻辑部件(例如,nand、nor、and、or、mux和flip-flop部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1004已经确定电路布局时,其可将电路布局定义输出到ic生成系统1006。电路布局定义可以是例如电路布局描述。
[0189]
如本领域中已知的,ic生成系统1006根据电路布局定义来生成ic。例如,ic生成系统1006可实施生成ic的半导体设备制造工艺,该半导体设备制造工艺可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,掩模可在光刻工艺中用于根据电路定义来生成ic。替代地,提供给ic生成系统1006的电路布局定义可呈计算机可读代码的形式,ic生成系统1006可使用该计算机可读代码来形成用于生成ic的合适的掩模。
[0190]
由ic制造系统1002执行的不同过程可全部在一个位置例如由一方来实施。替代地,ic制造系统1002可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同方来执行。例如,以下阶段中的一些可以在不同位置以及/或者由不同方来执行:(i)合成表示ic定义数据集的rtl代码,以形成待生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。
[0191]
在其他示例中,在集成电路制造系统处对集成电路定义数据集进行处理可将系统配置为制造加法器,而无需对ic定义数据集进行处理来确定电路布局。例如,集成电路定义数据集可以定义可重新配置的处理器诸如fpga的的配置,并且对所述数据集进行的处理可以将ic制造系统配置为(例如,通过将配置数据加载到fpga)生成具有所述定义的配置的可重新配置的处理器。
[0192]
在一些实施方案中,当集成电路制造定义数据集/硬件设计在集成电路制造系统中进行处理时,可使集成电路制造系统生成如本文所述的装置。例如,通过集成电路制造定义数据集,以上面参考图10描述的方式对集成电路制造系统进行配置,可以制造出如本文所述的装置。
[0193]
在一些示例中,集成电路定义数据集可包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图10所示的示例中,ic生成系统可由集成电路定义数据集/硬件设计进一步被配置为在制造集成电路时根据在集成电路定义数据集处定义的程序代码将固件加载到该集成电路上,或者以其他方式向集成电路提供程序代码,用于与集成电路一起使用。
[0194]
与已知的实施方式相比,在本技术中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实施的方法中)的实施方式可以引起性能改进。性能改进可以包括计算性能提高、延迟减少、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如,在集成电路中)期间,可以在性能改进与物理实施方式之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本技术中阐述的引起装置、设备、模块和系统的物理实施方式的改进(诸如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个实例来完成。
[0195]
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献