用于使用逐次累积旋转电路计算初等函数的装置和方法制造方法及图纸

技术编号:30959093 阅读:18 留言:0更新日期:2021-11-25 20:22
一种系统和加速器电路,包括寄存器文件,该寄存器文件包括用于存储用于评估初等函数的指令的指令寄存器,以及包括用于存储输入值的第一数据寄存器的数据寄存器。加速器电路还包括逐次累积旋转电路和确定电路,逐次累积旋转电路包括执行逐次累积旋转递推的可重新配置的内部级,确定电路基于指令确定初等函数的类型,并响应于确定输入值为定点数,将可重新配置的内部级配置为用于评估该类型的初等函数的配置,其中逐次累积旋转电路使用执行逐次累积旋转递推的可重新配置的内部级来计算初等函数的评估。等函数的评估。等函数的评估。

【技术实现步骤摘要】
【国外来华专利技术】用于使用逐次累积旋转电路计算初等函数的装置和方法
[0001]相关申请的交叉引用
[0002]本申请要求于2019年2月20日提交的美国临时申请62/807,852的优先权,其内容通过引用整体并入。


[0003]本公开涉及用于实现特定初等函数的电路和方法,尤其涉及用于使用逐次累积旋转电路计算非三角初等函数的电路和方法。

技术介绍

[0004]诸如图形处理单元(GPU)的加速器电路可以包括被配置为执行数值函数的计算的电路。数值函数可以根据由数值函数定义的某些数学关系将一个或多个输入值转换为一个或多个输出值。数值函数的示例可以包括被广泛用于诸如图像处理和机器学习之类的实际应用中的初等函数。
[0005]用于执行数值函数的计算的运算符的类型确定实现这些数值函数的电路的复杂性以及执行这些计算所需的时间。众所周知,与移位运算符或加法运算符的电路实现相比,乘法运算符的电路实现要复杂得多。因此,具有小尺寸集成电路(例如,小尺寸现场可编程门阵列(FPGA)电路)的电路通常不支持乘法运算符的直接计算。
附图说明
[0006]从下面给出的详细描述以及从本公开的各种实施方式的附图,将更全面地理解本公开。然而,不应认为附图将本公开内容限制于具体实施方式,而是仅用于解释和理解。
[0007]图1示出了根据本公开的实施方式的用于执行初等函数的计算的系统。
[0008]图2示出了根据本公开的实施方式的用于确定和配置初等计算电路的流程图。
[0009]图3示出了根据本公开的实施方式的逐次近似电路的内部级,其包括要被组合成单个块的每个操作的循环。
[0010]图4示出了根据本公开的实施方式的用于自适应地评估初等函数的方法的流程图。
具体实施方式
[0011]本公开的实施方式采用逐次累积旋转算法来执行初等函数的计算。逐次累积旋转算法使用累积和旋转而不是乘法来执行计算,从而显著降低了实现这些数值函数的硬件电路的复杂性。此外,逐次累积旋转算法的实施方式可以利用坐标旋转数字计算机(CORDIC)硬件架构来计算三角函数,从而获得实现三角函数和初等函数的单个硬件电路块。为三角函数设计的CORDIC硬件架构用于计算初等函数的重复使用可以节省电路面积并降低系统功耗。本公开中描述的逐次累积旋转算法用于计算定点输入值和浮点输入值的某些初等函数。逐次累积旋转算法采用旋转操作的一系列迭代步骤来近似关于一个或多个输入值的初
等函数。本公开中的初等函数是指双曲函数幂函数和对数函数(A
x
,log(x))、倒数函数、平方根和平方根反函数等。这些初等函数是非三角函数。因为逐次累积旋转算法的每个迭代步骤都涉及旋转计算而不调用乘法计算,所以支持实现的电路可以简单得多,并且可以以在FPGA电路板上实现的小电路占用空间(即小电路面积)实现。
[0012]在计算初等函数时,输入值(例如实数)可以表示为定点数或浮点数。实数的定点数表示包括用于表示实数的整数部分的第一固定位数和用于表示实数的小数部分的第二固定位数。n位(二进制)点数可以被认为是n位整数除以比例因子2
m
。这相当于将数字视为在位m和m

1之间有一个小数点。下图假设一个8位数字,比例因子为25,因此小数点位于第5位和第4位之间。
[0013]765
·
43210
[0014]在这种情况下,位模式0101_1001被解释为实数定点数通常以与整数处理有符号数相同的方式表示负数,使用2的补码表示,而不是显式的符号位。
[0015]实数的浮点数表示包括符号位、表示有效数字(或有效数)的固定位数以及用于缩放有效数的指数。例如,在IEEE浮点数表示中,实数表示为
±
1.m*2
exp
,其中尾数1.m是范围(1.0

2.0]中的一个数,其中小数m为固定位数,其中位数取决于实现。指数exp是一个范围内的整数,该范围也取决于实现。符号位用于指示符号(+或

)。在IEEE单精度浮点的情况下,23位用于小数部分,m。指数exp的范围是127到

126。IEEE浮点数表示还包括特殊情况的表示,例如非规格化数和无穷大。
[0016]CORDIC算法在计算三角函数时使用旋转而不是乘法,允许三角函数计算的有效硬件实现。以计算正弦(即sin())和余弦(即cos())函数为例,CORDIC算法是通过重复应用恒等式来计算三角函数sinx和cosx。对于三角函数,
[0017]sin(x+y)=cos(y)[sin(x)+tan(y)cos(x)][0018]cos(x+y)=cos(y)[cos(x)

tan(y)sin(x)][0019]选择x=θ
i
=tan
‑1(2

i
),上面的方程可以写成
[0020]sin(θ
i
+y)=cos(θ
i
)[sin(y)+cos(y)/2
i
][0021]cos(θ
i
+y)=cos(θ
i
)[cos(y)

sin(y)/2
i
][0022]其中除以2
i
可以在硬件中实现(对于定点表示)为右移i次。
[0023]给定的输入角α在第一象限中可以近似为其中δ
i

±
1。近似的精度由项数n确定。给定α,三角函数值sinα
n
和cosα
n
可以使用以下递推计算:
[0024]sin(δ
i
θ
i

i
‑1θ
i
‑1+

+θ0)=cos(θ
i
)[sin(δ
i
‑1θ
i
‑1+

+θ0)+δ
i
cos(δ
i
‑1θ
i
‑1+

+θ0)/2
i
][0025]cos(δ
i
θ
i

i
‑1θ
i
‑1+

+θ0)=cos(θ
i
)[cos(δ
i
‑1θ
i
‑1+

+θ0)

δ
i
sin(δ
i
‑1θ
i
‑1+

+θ0)/2
i
][0026]请注意,该序列的计算包括在每一步乘以cos(θ
i
)。这可以通过认识到这些乘法可以被分解从而有一个乘积来避免。为了利用这一事实,可以重写递推,
以便:...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种加速器电路,包括:寄存器文件,包括:指令寄存器,用于存储用于评估初等函数的指令;以及数据寄存器,包括用于存储与所述指令相关联的输入值的第一数据寄存器;逐次累积旋转电路,其包括可重新配置的内部级以执行逐次累积旋转递推;以及确定电路,用于:基于所述指令来确定所述初等函数的类型;以及响应于确定所述输入值为定点数,将所述可重新配置的内部级配置为用于评估所述类型的初等函数的配置,其中所述逐次累积旋转电路使用执行所述逐次累积旋转递推的所述可重新配置的内部级来计算所述初等函数的评估。2.根据权利要求1所述的加速器电路,还包括近似电路,其中,所述确定电路还用于:响应于确定所述输入值为浮点数,确定所述输入值是否属于小值范围;响应于确定所述输入值在所述小值范围之外,将所述浮点数转换为定点数;以及将所述可重新配置的内部级配置为用于评估所述类型的初等函数的配置,其中,所述逐次累积旋转电路使用执行所述逐次累积旋转递推的所述可重新配置的内部级来计算所述初等函数的评估;以及其中所述近似电路用于:响应于确定所述输入值属于所述小值范围,接收所述输入值并计算关于所述输入值的所述初等函数的近似值。3.根据权利要求1或2所述的加速器电路,其中,所述初等函数的类型包括幂函数、对数函数、倒数函数、平方根函数或平方根反函数中的至少一种,并且其中所述逐次累积旋转递推包括关于所述输入值的单旋转操作或关于所述输入值的双旋转操作中的至少一个。4.根据权利要求2或3所述的加速器电路,其中,为了确定所述输入值是否在小值范围内,所述确定电路基于估计的绝对误差、估计相对误差、所述初等函数的类型、用于所述浮点输入值的浮点数表示的类型或所述逐次累积旋转电路的硬件约束中的至少一个来确定所述输入值是否在小值范围内。5.根据权利要求2或3所述的加速器电路,其中,所述逐次累积旋转电路重复所述逐次累积旋转递推中的至少一个,以及其中所述浮点输入值根据IEEE浮点数表示来表示。6.根据权利要求2或3所述的加速器电路,其中,为了计算关于所述输入值的所述初等函数的近似值,所述近似电路用于:使用所述初等函数的泰勒展开式的第一项或第二项中的至少一个计算所述初等函数的近似值;以及将近似值存储在所述数据寄存器的第二数据寄存器中。7.根据权利要求2或3所述的加速器电路,其中,所述逐次累积旋转电路还用于将所述初等函数的评估转换为浮点数表示,并将所述浮点评估存储在所述数据寄存器的第三数据寄存器中。8.根据权利要求2或3所述的加速器电路,其中,所述可重新配置的内部级包括多路复用器、可重新配置的比较器、移位器、双移位器、加法电路或减法电路中的至少一个。9.根据权利要求8所述的加速器电路,其中,响应于确定所述初等函数的类型是幂函
数、对数函数、倒数函数、平方根函数或平方根反函数中之一,所述确定电路将所述可重新配置的比较器配置为第一模式;以及响应于确定所述初等函数的类型是三角函数,所述确定电路将所述可重新配置的比较器配置为第二模式。10.根据权利要求2所述的加速器电路,其中,响应于确定所述输入值在所述小值范围之外,为了使用执行所述逐次累积旋转递推的所述可重新配置的内部级计算所述初等函数的评估,所述逐次累积旋转电路还用于:将所述浮点输入值拆分为整数部分和小数部分;将所述小数部分转换为定点数;使用所述逐次累积旋转递推计算关于所述定点数的初等函数以生成定点结果;将所述定点结果转换为浮点结果;以及使用所述浮点结果和所述整数部分转换为浮点输出。11.一种计算系统,包括:用于存储输入值的存储装置;处理器,用于执行包括用于评估关于所述输入值的初等函数的指令的应用;加速器电路,通信地耦合到所述处理器,包括:逐次累积旋转电路,其包括可重新配置的内部级以执行逐次累积旋转递推;以及确定电路:接收所述指令和所述输入值;基于所述指令来确定所述初等函数的类型;以及响应于确定所述输入值是定点数,将所述可重新配置的内部级配置为用于评估所述类...

【专利技术属性】
技术研发人员:玛雅
申请(专利权)人:优创半导体科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1