使用双曲线函数的指数函数的高效硬件实现的制作方法

文档序号:33622789发布日期:2023-03-25 13:15阅读:32来源:国知局
使用双曲线函数的指数函数的高效硬件实现的制作方法

1.各种实施方案总体涉及指数计算电路。


背景技术:

2.指数函数是形式z=mn的函数,其中m是底数并且n是指数。指数函数是唯一的,因为实变量的指数函数的导数与该函数的值成正比。对于自然指数函数,其中m是欧拉数(e),比例常数是1,使得该函数是它自己的导数。在纯数学和应用数学中普遍存在的是指数函数模型关系,其中自变量的不断变化造成因变量的相同的百分比变化。此类关系可出现在例如各种自然科学和社会科学(诸如人口增长或复利)中。指数关系也通常出现在物理学、化学、工程学、生物学和经济学中。
3.双曲线函数就自然指数函数e
x
和e-x
的特定组合而言定义。双曲线正弦函数可表达为双曲线余弦函数可表达为因此,e
x
关于双曲线函数可表达为:
4.误差关于应用数学是真实值或参考值与该值的估计值或近似值之间的差值。误差分析可用于评估在近似或模型的参数变化时在实系统和实函数的数值建模或近似中数值误差的传播。误差分析可用于评估计算的分辨率或精度。


技术实现要素:

5.装置和相关联的方法涉及通过拆分数字字来从数字字输入确定自然指数,并且在由第一字定义的地址处从数据存储检索预先计算且预先确定的值。在一个说明性示例中,所检索的值可以是双曲线和。可将该双曲线和与第二字相乘。可缩放该双曲线和,并且求该双曲线和与乘法结果的和以生成所缩放的指数值。可缩放所缩放的指数值以产生表示e
x
的指数值。在各种示例中,该数字字输入可以是定点格式或浮点格式,或者在两者间转换。在各种实施方案中,该数据存储可以是查找表。各种示例可提供用于用最小化硬件资源确定自然指数的紧凑且通用的架构。
6.各种实施方案可实现一个或多个优点。例如,一些实施方案可有利地减少从数字信号计算自然指数所需的资源。一些实施方案可被配置为将计算自然指数所需的查找表的深度压缩至少一半。一些实施方案可有利地实现为紧凑且通用的架构,该架构适合于适应在有限的硬件可用性下的指数函数的宽动态范围。一些实施方案可允许使用单个数字信号处理器(dsp)、仅使用逻辑门或使用其资源优化组合来计算自然指数。一些实施方案可有利地仅使用单个乘法-累积单元实现。
7.在一个示例性方面中,一种自然指数计算电路包括:拆分器电路,该拆分器电路被配置为接收定点字并将其拆分成第一字和第二字;检索电路,该检索电路被配置为在由该第一字定义的地址处从数据存储检索预先确定且预先计算的双曲线和;乘法器电路,该乘法器电路被配置为将该双曲线和与该第二字相乘在一起并输出所相乘的双曲线和;第一缩
放电路,该第一缩放电路被配置为接收该双曲线和并以第一因子对其进行缩放;求和器电路,该求和器电路被配置为将所缩放的双曲线和与所相乘的双曲线和相加在一起并生成所缩放的第二和;以及第二缩放电路,该第二缩放电路被配置为以第二因子缩放所缩放的第二和并输出e
x
的近似。
8.该乘法器电路和该求和器电路可至少部分地实现在至少一个数字信号处理器(dsp)中。以下项中的至少一者可被至少部分地实现为逻辑门:该乘法器电路、该求和器电路和该数据存储。该数据存储可以是查找表。该查找表可被配置为以定点格式存储条目。该查找表可具有2b的深度,其中b是在该第一字中的位的总数。该数据存储可被配置为以浮点格式存储条目。
9.该第一因子可以是2
b-i
,其中b是该第一字的位的总数,并且i是在该第一字中的整数位的总数,并且该第一缩放电路可使该双曲线和右零填充b-i个位。该第二因子可以是1/(2
b-i
),其中b是位的总数,并且i是在该第一字中的整数位的总数,并且该第二缩放电路可使该第二和按位右移b-i个位。
10.该自然指数计算电路还可包括浮点到定点转换电路,该浮点到定点转换电路是在该拆分器电路之前,其中该转换电路被配置为接收浮点输入并将其转换成由该拆分器电路接收的该定点字。该自然指数计算电路还可包括定点到浮点转换电路,该定点到浮点转换电路是在该第二缩放电路之后,其中该转换电路被配置为以定点格式接收e
x
的输出的近似并以浮点格式将其输出。
11.该第二字可表示小于1的数值。该电路可被配置为其中:定点字是n个位长,该第一字是该定点字的前b个位,该第二字是该定点字的最后a个位,n=a+b,并且该定点字的二进制点被包含在该第一字中。b可被选择为使得e
x
的该近似在预先确定的误差极限内是准确的。
12.在另一个示例性方面中,一种在数字电路中高效地计算指数的方法可包括:接收n个位长的数字定点字x;将x的前b个位拆分成第一字wb,并且将x的剩余a个位拆分成第二字wa,其中该第一字包括i个整数位和b-i个分数位,并且其中n=a+b并且x=wb+wa;在由wb定义的地址处从数据存储检索表示sinh(wb)+cosh(wb)的预先确定且预先计算的双曲线和;将该双曲线和与wa相乘在一起并生成表示[sinh(wb)+cosh(wb)]*[wa]的所相乘的双曲线和;以缩放因子k缩放该双曲线和以生成表示[sinh(wb)+cosh(wb)]*k的所缩放的双曲线和;求所缩放的双曲线和与所相乘的双曲线和的和以生成表示[sinh(b)+cosh(b)]*[wa+k]的所缩放的第二和;以及以1/k缩放所缩放的第二和,由此生成[sinh(wb)+cosh(wb)]*[wa/k+1]的表示作为e
x
的近似。该相乘步骤和该求和步骤可至少部分地实现在至少一个数字信号处理器(dsp)中。该数据存储可以是查找表,该查找表被配置为以定点格式存储条目,并且该查找表可具有2b的深度。第一字wb可包括x的二进制点,k可以是2
b-i
,以k缩放该双曲线和可包括使该双曲线和右零填充b-i个位,并且以1/k缩放所缩放的第二和可包括使该第二和按位右移b-i个位。b可被选择为使得e
x
的该近似在预先确定的误差极限内是准确的。
[0013]
在另一个示例性方面中,至少一种非暂态计算机可读介质可提供指令程序,该指令程序在由处理器执行时使操作计算自然指数。该操作可包括:接收n个位长的数字定点字x;将x的前b个位拆分成第一字wb,并且将x的剩余a个位拆分成第二字wa,其中该第一字包括i个整数位和b-i个分数位,并且其中n=a+b并且x=wb+wa;在由wb定义的地址处从数据
存储检索表示sinh(wb)+cosh(wb)的预先确定且预先计算的双曲线和;将该双曲线和与wa相乘在一起并生成表示[sinh(wb)+cosh(wb)]*[wa]的所相乘的双曲线和;以缩放因子k缩放该双曲线和以生成表示[sinh(wb)+cosh(wb)]*k的所缩放的双曲线和;求所缩放的双曲线和与所相乘的双曲线和的和以生成表示[sinh(b)+cosh(b)]*[wa+k]的所缩放的第二和;以及以1/k缩放所缩放的第二和,由此生成[sinh(wb)+cosh(wb)]*[wa/k+1]的表示作为e
x
的近似。
[0014]
附图和以下描述中阐述了各种实施方案的细节。其他特征和优点将从描述和附图中以及从权利要求书中显而易见。
附图说明
[0015]
图1描绘了可在其上实现所公开的电路和过程的示例性可编程集成电路(ic)。
[0016]
图2描绘了自然指数计算电路的示例性用例。
[0017]
图3a描绘了示例性自然指数计算电路的框图。
[0018]
图3b描绘了接受和输出浮点值的紧凑且通用的指数计算电路的框图。
[0019]
图3c描绘了接受定点值并输出浮点值的示例性自然指数计算电路的框图。
[0020]
图3d描绘了设置有双曲线和的浮点数据存储的示例性自然指数计算电路的框图。
[0021]
图4描绘了在集成架构中使用高级语言表示来实现紧凑指数计算的示例性系统的框图。
[0022]
图5描绘了评估具有固定的输入动态范围的示例性架构的准确度的模拟结果。
[0023]
图6描绘了评估在输入动态范围变化时的示例性架构的准确度的模拟结果。
[0024]
图7a描绘了评估在字宽跨第一输入动态范围变化时的示例性架构的准确度的模拟结果。
[0025]
图7b描绘了评估在字宽跨第二更大输入动态范围变化时的示例性架构的准确度的模拟结果。
[0026]
图8描绘了用于在电路中计算指数的示例性紧凑且通用的方法。
[0027]
图9描绘了用于优化电路的配置以计算指数的示例性方法。
[0028]
图10示出了可在其上实现所公开的电路和过程的片上系统(soc)的示例性架构。
[0029]
在各个附图中的相同的参考符号指示相同的要素。
具体实施方式
[0030]
装置和相关联的方法涉及自然指数的紧凑且通用的计算。为了有助于理解,本文档被组织如下。第一,参考图1,简要地介绍适合于执行数据通信的示例性平台(例如,现场可编程门阵列fpga)。第二,参考图2,讨论转向实现自然指数的紧凑计算的示例性用例。第三,参考图3a至图9,讨论转向说明用于自然指数的紧凑计算的各种具体实施的示例性电路和方法。最后,参考图10,简要地介绍适合于执行数据通信的另一个示例性平台(例如,片上系统(soc)),以及dsp。
[0031]
图1描绘了可在其上实现所公开的电路和过程的示例性可编程集成电路(ic)。可编程ic 100包括fpga逻辑。可编程ic 100可用各种可编程资源实现并可称为片上系统(soc)。fpga逻辑的各种示例可包括在阵列中的若干不同类型的可编程逻辑块。
[0032]
例如,图1示出了可编程ic 100,其包括大量不同可编程片,包括多千兆位收发器(mgt)101、可配置逻辑块(clb)102、随机存取存储器块(bram)103、输入/输出块(iob)104、配置和时钟逻辑(config/clocks)105、数字信号处理块(dsp)106、专用输入/输出块(i/o)107(例如,时钟端口)和其他可编程逻辑108(例如,数字时钟管理器、模拟到数字转换器、系统监视逻辑)。可编程ic 100包括专用处理器块(proc)110。可编程ic 100可包括内部和外部重新配置端口(未示出)。
[0033]
在各种示例中,可使用mgt 101实现串行器/解串器。mgt 101可包括各种数据串行器和解串器。数据串行器可包括各种复用器实现。数据解串器可包括各种解复用器实现。
[0034]
在fpga逻辑的一些示例中,每个可编程片包括可编程互连元件(int)111,该int具有去往和来自在每个相邻片中的对应互连元件的标准化互连124。因此,可编程互连元件在一起实现用于所示出的fpga逻辑的可编程互连结构。可编程互连元件int111包括去往和来自在同一片内的可编程逻辑元件的内连接120,如图1中包括的示例所示。可编程互连元件int 111包括去往和来自在同一片内的可编程互连元件int 111的内int连接122,如图1中包括的示例所示。
[0035]
例如,clb 102可包括可被编程以实现用户逻辑的可配置逻辑元件(cle)112加上单个可编程互连元件int 111。bram 103可包括bram逻辑元件(brl)113和一个或多个可编程互连元件。在一些示例中,被包括在片中的互连元件的数量可取决于片的高度。在所描绘的具体实施中,bram片具有与五个clb相同的高度,但是也可使用其他数量(例如,四个)。dsp片106可包括dsp逻辑元件(dspl)114和一个或多个可编程互连元件。iob 104可包括例如输入/输出逻辑元件(iol)115的两个实例和可编程互连元件int 111的一个实例。连接到例如i/o逻辑元件115的实际i/o接合焊盘可使用在各种所示出的逻辑块上方分层的金属制造,并且可不限于输入/输出逻辑元件115的区域。
[0036]
在所绘示的具体实施中,在管芯的中心附近的列式区域(在图1中以阴影示出)用于配置、时钟和其他控制逻辑。从列延伸的水平区域109跨可编程ic 100的宽度分配时钟和配置信号。需注意,对“列式”和“水平”区域的引用是相对于在纵向取向上查看附图的。
[0037]
利用图1中示出的架构的一些可编程ic可包括附加的逻辑块,该附加的逻辑块扰乱规则列式结构,从而组成可编程ic的大部分。附加的逻辑块可以是可编程块和/或专用逻辑。例如,图1中示出的处理器块proc 110跨越若干列clb 102和bram 103。
[0038]
图1示出了示例性可编程ic架构。在列中的逻辑块的数量、列的相对宽度、列的数量和次序、列中包括的逻辑块的类型、逻辑块的相对大小和互连/逻辑实现仅作为示例提供。例如,在实际可编程ic中,可在出现clb 102的任何地方包括多于一个的相邻列的clb 102,以便于用户逻辑的高效实现。
[0039]
集成电路(ic)(例如,fpga),诸如可编程ic 100,例如可用于确定自然指数。ic的架构可有利地被配置为通过将数字字拆分成第一字和第二字并使用第一字从数据存储检索双曲线和来从数字字输入高效地计算自然指数。
[0040]
图2描绘了自然指数计算电路的示例性用例200。定点字x 205表示指数,该指数可被预期作为使欧拉数(表示为“e”的数学常数)上升的指数。字x是n个位长215[0:n-1],其可表示为e
x
。字x被拆分成b个位长的第一字wb 220和a个位长的第二字wa 225。第一字wb包括二进制点240,并且由此,包括i个整数位230和f个分数位235。字x的剩余的分数位在a中。因
此,n=b+a,因为在x中的位的数量等于在wb中的位的数量和在wa中的位的数量。类似地,b=i+f,因为在b中的位的数量等于整数位的数量和分数位的数量。
[0041]
字wb可用作在包含表示e
x
的结果的双曲线三角表达式的数据存储210中的地址或足以从中生成结果的所期望的表示的数据。双曲线三角表达式可用于另外的运算中,以在所期望的容差内生成e-x
的结果。另外的运算可包括求和、乘法或它们的组合。另外的运算也可包括例如在wa上的运算。
[0042]
因此,指数函数可有利地使用双曲线实现在各种紧凑且通用的架构中。例如,在一些实施方案中,指数计算电路可有利地实现在嵌入电路(例如,fpga或asic)中。
[0043]
指数函数的动态范围是相当大的,这可能使数字实现有挑战性。各种实施方案可有利地实现双曲线函数的性质以压缩用于计算指数函数中的查找表的大小并减少用于计算中的处理资源。一些实施方案可使用单个压缩查找表和单个乘法累积单元实现,这在例如大小和资源有限的情况下可能是有利的。在一些实施方案中,例如,可有利地在卷积神经网络(cnn)、快速傅立叶变换(fft)电路和数字信号处理(dsp)应用中实现和采用紧凑指数计算电路。
[0044]
作为说明,数字字x可以是欧拉数的指数,其结果(y)被求出为:y=e
x
。然而,e
x
可表达为双曲线函数的和:
[0045]
方程1:y=e
x
=cosh(x)+sinh(x)
[0046]
其中cosh是双曲线余弦函数,并且sinh是双曲线正弦函数。
[0047]
x可表达为以因子k缩放的wb和wa的和,其中x=wb+wa*k。例如,作为说明,wa可以是定点字a个位长。使wa左零填充为n个位长,其中前b个位等于零,结果是wa/k,其中k=2
b-i
。k可针对给定具体实施合适地进行选择,包括例如基于使用定点数还是浮点数、x、b、a、i或f的值或它们的某种组合。
[0048]
然后,可使用wa*k和wb重新表达y、使其扩大并简化:
[0049]
方程2a:方程2b:
[0050][0051]
方程2c:
[0052]
wb可作为x、a(在wa中的位的数量)、n(在x中的位的数量)和i(在wb中的整数位的数量)的长度的函数表达为:
[0053]
方程3:
[0054]
由于wa的值由x的分数位确定,因此可假设wa《1。在该假设下,sinh(wa)和cosh(wa)可简化:
[0055]
方程4a:
[0056]
方程4b:
[0057]
由于在wa接近零时,sinh(wa)的极限接近wa,并且在wa接近零时,cosh(wa)的极限
接近1,因此当假设wa《1时,或者尤其是如果wa《《1(wa远小于1),则sinh(wa)可近似为wa并且cosh(wa)可近似为1。因此,方程2c可简化为:
[0058]
方程5:
[0059]
图3a描绘了示例性自然指数计算电路的框图。指数计算电路300a接收具有n个位[0:n-1]的定点字x。拆分电路302将x按位拆分成两个字,即,具有位[b+1:n-1]的第一字wb和具有位[0:a-1]的第二字wa,其中a是在wa中的位的数量,b是在wb中的位的数量,并且n=b+a。第一字wb是数据存储304中对应于表示sinh(wb)+cosh(wb)的值的地址。数据存储304可实现为例如具有sinh(wb)+cosh(wb)的预先确定且预先计算的值的查找表或其部分。数据存储304可例如实现在只读存储器(rom)中,并且可实现为在随机存取存储器(ram)、块ram(bram)、静态ram(sram)、动态ram(dram)或其他适当的数据存储中的查找表。例如,作为说明而非限制,数据存储304可实现为在bram中的深度2b并针对在预先确定的范围内的wb的每个值具有[sinh(wb)+cosh(wb)]的预先确定且预先计算的值的查找表。可根据b的预先确定值设置预先确定范围。将x拆分成b个位和a个位的两个字可有利地将乘法器306的大小从足以对n个位进行运算的乘法器减小到足以对b个位或a个位的最大值进行运算的乘法器。
[0060]
从数据存储304检索的双曲线和可表示为:
[0061]
方程6:sinh(wb)+cosh(wb)
[0062]
通过乘法电路306将双曲线和与wa相乘,以得到所相乘的双曲线和,其可表示为:
[0063]
方程7:[sinh(wb)+cosh(wb)]*wa
[0064]
缩放电路308以因子k缩放从数据存储304检索的双曲线和。在其中x是定点数的具体实施中,k可以是例如2
b-i
,其中b是在wb中的位的数量,并且i是在b中的整数位的数量。在其中x是定点数的一些具体实施中,在缩放电路338中的缩放可例如通过使双曲线和右零填充b-i个位来实现。
[0065]
然后,所相乘的双曲线和和所缩放的双曲线和在加法电路310中相加,由此生成所缩放的指数计算,其可表示为:
[0066]
方程8:
[0067][0068]
然后,缩放电路312将缩放因子1/k应用于所缩放的指数计算以生成指数计算。缩放电路312可例如诸如在其中k=2
b-i
的定点具体实施中按位右移位b-i个位。
[0069]
由缩放电路312生成的指数计算可表示为:
[0070]
方程9:
[0071][0072]
按照方程5,该指数计算近似等于e
x

[0073]
方程11:
[0074]
因此,如图3a所描绘的那样实现的电路可被配置为有利地针对x的给定范围和n、a
和b的大小在可接受误差极限内从输入x计算e
x
的值。
[0075]
图3b描绘了接受和输出浮点值的紧凑且通用的指数计算电路的框图。电路300b可以是例如与图3a实现的类似的电路,其中在该电路的入口和出口处添加浮点转换块,以允许接收浮点输入、将其转换成定点、生成指数计算并然后将其转换成浮点输出。一般来讲,浮点值被接收并由浮点转换电路330转换成定点字x。字x由拆分电路332拆分成第一字wb和第二字wa。双曲线和在由wb定义的地址处从数据存储334检索。该双曲线和与wa由乘法器电路336相乘以生成所相乘的双曲线和。双曲线和在缩放电路338中以因子k进行缩放,并且结果由加法电路340相加到所相乘的双曲线和以生成所缩放的指数计算。所缩放的指数计算由缩放电路342以因子1/k进行缩放,并且所得的定点指数计算通过固定到浮点转换电路344来转换成浮点值。所得的浮点指数计算可以是在可接受误差极限内的e
x
的表示。
[0076]
图3c描绘了接受定点值并输出浮点值的示例性自然指数计算电路的框图。指数计算电路300c可以是例如与图3a实现的类似的电路,其中在该电路的出口处添加浮点转换块,以允许接收定点输入、生成指数计算并然后将其转换成浮点输出。一般来讲,定点字x被接收并由拆分电路360拆分成第一字wb和第二字wa。双曲线和在由wb定义的地址处从数据存储362检索。该双曲线和与wa由乘法器电路364相乘以生成所相乘的双曲线和。双曲线和在缩放电路366中以因子k进行缩放,并且结果由加法电路368相加到所相乘的双曲线和以生成所缩放的指数计算。所缩放的指数计算由缩放电路370以因子1/k进行缩放,并且所得的定点指数计算通过固定到浮点转换电路372来转换成浮点值。所得的浮点指数计算可以是在可接受误差极限内的e
x
的表示。
[0077]
图3d描绘了设置有双曲线和的浮点数据存储的示例性自然指数计算电路的框图。指数计算电路300d可以是例如与图3a实现的类似的电路,其中数据存储被配置为存储浮点值,并且其中添加浮点转换块以将第二字转换成浮点字,由此允许接收定点输入、生成指数计算并产生原生浮点输出。一般来讲,定点字x被接收并由拆分电路380拆分成第一字wb和第二字wa。以浮点格式的双曲线和在由wb定义的地址处从浮点数据存储382检索。数据存储382可设置有以浮点格式表示sinh(wb)+cosh(wb)的预先加载且预先计算的双曲线和。wa在固定到浮点转换电路384时从定点格式转换到浮点格式。
[0078]
该双曲线和与wa由乘法器电路386相乘以生成所相乘的双曲线和。双曲线和在缩放电路388中以因子k进行缩放,并且结果由加法电路390相加到所相乘的双曲线和以生成所缩放的指数计算。所缩放的指数计算由缩放电路392以因子1/k缩放。所得的浮点指数计算可以是在可接受误差极限内的e
x
的表示。
[0079]
图4描绘了在集成架构中使用高级语言表示来实现紧凑指数计算的示例性系统的框图。具体地,图4描绘了用于以高级语言(hll)编译指令以配置例如n个可编程逻辑块(1、2、3

n)中的任何或全部可编程逻辑块的一般化系统。配置系统400a包括开发环境405。用户可经由用户接口使用hll(例如,p4语言)来在设计时生成指令,该指令可经由在编译时的寄存器传送级(rtl)生成来产生硬件架构,该硬件架构在运行时可使用fpga 465来用压缩数据存储执行指数计算。开发环境405还包括hll编译器415。hll编译器415可操作地与hll程序410和数据库420连接。在该描绘的示例中,数据库420包括用户库420a和hll库420b。hll编译器415可选择数据库420中的可用库文件以将hll命令编译成一个或多个指令集,该一个或多个指令集也可称为数据结构。在开发期间,hll编译器415可将指令集存储在数据
存储或nvm 425(非易失性存储器)中。
[0080]
配置系统400a还包括实现环境430。实现工程师例如可采用一些编译器工具来将存储在nvm 425中的指令转换成硬件/软件实现430a(例如,rtl(寄存器传输逻辑)),例如,该硬件/软件实现可经由例如位流加载到目标设备诸如fpga 465中。在一些实施方案中,实现环境430可根据通过例如在开发环境405中的用户输入高级语言编程指定的设计来生成适当的数据文件以实现固定的硬件(例如,在asic中)。
[0081]
配置系统400a还包括硬件环境440。硬件环境440可包括例如线路卡。在一些实施方案中,硬件环境440可包括网络接口卡(nic)。在该描绘的示例中,硬件环境440包括将外部信号连接到fpga(例如,fpga 465)中的多个缓冲器445a(例如,其可形成i/o接口)。在所描绘的示例中,fpga 465包括n个可编程逻辑块,其表示可用于根据通过例如在开发环境405中的用户输入高级语言编程指定的设计实现电路系统的可编程硬件资源。fpga 465还与可提供多种辅助功能的其他设备445b连接。
[0082]
图5描绘了评估具有固定的输入动态范围的示例性架构的准确度的模拟结果。在各种实施方案中,指数计算的准确度取决于wb中包括的位的数量b。在一些实施方案中,诸如在被配置用于具有预先确定的数量i的整数位的定点输入x的实施方案中,作为wb中包括的分数位的数量f的结果(其中f=b-i),准确度间接地取决于b。随着f增大,a减小,由此减小wa的值。随着wa减小,wa接近0,并且方程4a和4b中的简化假设产生简化方程5,从而变得越来越准确。
[0083]
最大误差图501比较在b在其中n=28、lf=14并且x在范围[-1,1)内的说明性示例中变化时在未压缩实现(例如,e
x


准确’计算)与在压缩实现中的计算之间的最大误差,诸如图3a所示。在b接近12个位时,最大误差从大约3.48
×
10-5
下降到大约3.07
×
10-5
,并且在15个位中保持恒定。在b=16个位时,误差略上升到大约3.1
×
10-5

[0084]
平均误差图502比较在与图501相同的具体实施中的未压缩计算和压缩计算之间的平均误差。图502示出了未压缩计算的平均误差围绕b=17收敛并保持稳定。因此,例如,b的值或范围可根据预先确定的极限进行选择和预先确定。b的范围可用于将查找表的宽度预先确定为2b,并且可用于预先确定在b个位的字的范围内,针对在数据存储中的所有地址wb的sinh(wb)+cosh(wb)的值。
[0085]
图6描绘了评估在输入动态范围变化时的示例性架构的准确度的模拟结果。准确度可取决于例如在二进制点之前的在第一字wb中的整数位的数量(i),诸如当wb为定点格式时。例如,当b保持恒定并且i增大时,在wb中的分数位的数量(f)减小。因此,精度可能降低,因为所表示的值的精度以及因此查找表的粒度可能降低。
[0086]
最大误差图601比较在i在其中n=16、lf=14、b=12并且x在范围[-|2
i-1
|,2
i-1
)内的说明性示例中变化时在未压缩实现(例如,e
x


准确’计算)与在压缩实现中的计算之间的最大误差,诸如图3a所示。类似地,平均误差图602比较在相同的模拟场景中的平均误差。在3个位以下,在压缩实现中的误差保持与未压缩实现几乎不能区分,为约0.15
×
10-4
。在i=3个位之后,误差开始上升。因此,例如,i的值或范围可根据预先确定的误差极限进行选择和预先确定。例如,取决于x的预先确定的范围,i的值可被选择为足以表示该值,并且取决于i,b的值可被选择为使得f大到足以以足够的精度表示x以保持在预先确定的误差极限内。
[0087]
图7a描绘了评估在字宽跨第一输入动态范围变化时的示例性架构的准确度的模拟结果。准确度可取决于例如在存储在数据存储中的预先确定且预先计算的双曲线和中的分数位的数量。所存储的分数位的数量可由lf表示。lf可例如在配置过程期间确定,并且可例如取决于x、b、i、f或它们的某种组合。
[0088]
最大误差图701比较在lf和b在其中n=16、lf在范围[10,18]内、b在范围[9,12]内并且x在范围[-1,1)内的说明性示例中变化时在未压缩实现(例如,e
x


准确’计算)与在压缩实现中的计算之间的最大误差,诸如图3a所示。类似地,平均误差图702比较在相同模拟场景中的平均误差。在图701和702上的每个不同压缩系列表示b的单独值,对于b,lf是变化的并相对于误差绘制。如可看出,在lf增大时,误差以大体上指数式衰减减小,其中随着lf继续增大,准确度的提高减少。类似地,随着b增大,误差减小,但是返回值减小。通过增大b和lf实现的在误差方面的改善在评估最大误差时比在评估平均误差时更明显,其中对增大的b和lf的响应在该水平上可能看起来是不能区分的。
[0089]
图7b描绘了评估在字宽跨第二更大输入动态范围变化时的示例性架构的准确度的模拟结果。最大误差图703比较在如图7a所示的类似模拟场景中(唯一的不同是x的范围增大到[-2,2))在未压缩实现(例如,e
x


准确’计算)与在压缩实现中的计算之间的最大误差,诸如图3a所示。类似地,平均误差图704比较在相同模拟场景中的平均误差。在图703和704上的每个不同压缩级数表示b的单独值,对于b,lf是变化的并相对于误差绘制。
[0090]
如可看出,在lf增大时,误差同样以大体上指数式衰减减小,其中随着lf继续增大,准确度的提高减少。类似地,随着b增大,误差减小,而且返回值减小。通过增大b和lf实现的在误差方面的改善在评估最大误差时比在评估平均误差时更明显,其中对增大的b和lf的响应在该水平上通常是不能区分的。最值得注意的是,在x的范围增大的情况下,b看起来对误差、特别是对最大误差有强烈影响。例如,当b=9时,最大误差看起来在大约2.5
×
10-4
处呈平线,其中在lf=13之后,lf的增大几乎没有另外的影响。通过将b增大到10,就看到在最大误差和平均误差两者方面的显著改善。压缩与未压缩的误差看起来收敛于b=12。因此,对于x的预先确定的范围和预先确定的误差极限,n、lf和b的值可有利地被选择以使计算资源(例如,如所选择的lf所确定的查找表所需的存储器大小,以及乘法器和求和器大小)与保持在误差极限内所需的准确度和精度平衡。
[0091]
图8描绘了用于在电路中计算指数的示例性紧凑且通用的方法。方法800可例如体现在电路诸如参考图3a至图3d描述的示例性具体实施中、体现在用于一个或多个控制器的计算机程序指令中或体现在电路设计优化系统中。接收805定点数字字x,该定点数字字可以是n个位长。将字x拆分成两个字,即,第一字wb和第二字wa,该第一字是x)的前b个位,该第二字包括x的最后a个位。字x可表示将用于计算自然指数e
x
中的指数。定点数字字x可能已经例如先前从浮点值转换。第一字wb可包括x的二进制点,并且可包括i个整数位和f个分数位,其中b=i+f。第二字wa可以是a个位长,其中a=n-b,并且x=wb+wa/k,k是缩放因子。因此,x位可寻址为[0:n-1],wb位可寻址为[b+1:n-1],并且wa可寻址为[0:a]。
[0092]
第一字wb可定义在数据存储中的地址。数据存储可包含例如针对x的预先确定的范围和b的预先确定的值的sinh(wb)+cosh(wb)的预先确定且预先计算的值,并且可具有2b的深度。从数据存储检索815预先确定的、预先计算的双曲线和,其表示sinh(wb)+cosh(wb)。将双曲线和与wa相乘825以表示[sinh(wb)+cosh(wb)]*[wa]。以k缩放820双曲线和以
表示[sinh(wb)+cosh(wb)]*k。可例如通过使双曲线和右零填充b-i个位来执行缩放,使得k=2
b-i

[0093]
然后,将所缩放的双曲线和与所相乘的双曲线和相加830以生成表示[sinh(wb)+cosh(wb)]*[wa+k]的所缩放的指数计算。以缩放因子1/k缩放835该结果以将[sinh(wb)+cosh(wb)]*[wa/k+1]表示为e
x
的近似表示。缩放835可例如是使定点值右移b-i个位,对应于将所表示的值乘以1/2
b-i

[0094]
方法800可例如在要求用于查找表的深度2b的rom的资源有限的电路中使用单个乘法累积单元实现。b可例如根据x的值的预先确定的范围、根据预先确定的误差极限确定。
[0095]
图9描绘了用于优化电路的配置以计算指数的示例性方法。方法900开始于接收905x的值的范围和最大误差参数来根据压缩计算方法(诸如通过图8中描绘的示例性方法800)连同最大误差参数一起计算e
x
。然后,进行配置模拟,从而模拟910实现参数。作为示例而非限制,实现参数可包括b、a、f、i、lf、查找表深度或它们的某种组合。
[0096]
评估915结果以确定是否将超过最大误差参数。如果将超过最大误差参数,则改变920实现参数并重复910模拟。如果将不超过最大误差参数,则针对多个硬件配置(包括逻辑门实现和dsp实现)确定950实现所需的资源。可例如使用逻辑综合工具以使用预先确定的实现参数产生设计实现来产生硬件实现配置(其可包括例如逻辑门、dsp、bram、其他适当的硬件或它们的某种组合)以确定资源。资源例如可以是在预先确定的fpga或asic上可用的预先确定的资源。所需的资源可包括例如逻辑门的数量、数据存储的大小和物理占用面积。比较硬件实现以确定哪个实现使用最少资源。如果逻辑门实现是最具资源效率的,则选择955该逻辑门实现。如果dsp实现是最具资源效率的,则选择960该dsp实现。
[0097]
在各种实施方案中,要比较的硬件实现可包括不同于dsp和逻辑门的实现,并且一些实现可省略dsp、逻辑门或两者。一些实施方案可评估dsp和逻辑门的组合的硬件实现或其多个组合。方法900的各种实施方案可例如至少部分地实现在合成器中,该合成器可有利地用于配置fpga固件、设计asic或以其他方式配置电路、程序指令或它们的某种组合。一些实施方案可例如是供应商特定的,并且实现在允许用户选择各种参数(包括r和最大误差或其范围)和选择资源优化的配置的计算机程序指令中。一些实施方案可允许用户基于对用户感兴趣的一个或多个参数的约束来比较所使用的资源、计算速度、误差界限、给定误差界限的x的范围、其他感兴趣参数或它们的某种组合。
[0098]
图10示出了可在其上实现所公开的电路和过程的片上系统(soc)的另一个示例性架构。soc 1000是可编程ic和集成可编程设备平台的示例。在图10的示例中,所示出的soc 1000的各种不同的子系统或区域可实现在设置在单个集成封装内的单个管芯上。在其他示例中,不同子系统可实现在作为单个集成封装提供的两个或多于两个互连管芯上。
[0099]
在该示例中,soc 1000包括具有功能不同的电路系统的两个或更多个区域。在该示例中,soc 1000任选地包括数据处理引擎(dpe)阵列1002。soc 1000包括可编程逻辑(pl)区域1004(以下称为pl区域或pl)、处理系统(ps)1006、片上网络(noc)1008和一个或多个硬连线电路块1010。dpe阵列1002实现为具有通向soc 1000的其他区域的接口的两个或更多个互连、硬连线且可编程处理器。
[0100]
pl 1004是可被编程以执行指定功能的电路系统。作为一个示例,pl 1004可实现为现场可编程门阵列类型的电路系统。pl 1004可包括可编程电路块的阵列。在pl1004内的
可编程电路块的示例包括但不限于可配置逻辑块(clb)、专用随机存取存储器块(bram和/或ultraram或uram)、数字信号处理块(dsp)、时钟管理器和/或延迟锁定环路(dll)。
[0101]
在pl 1004内的每个可编程电路块通常包括可编程互连电路系统和可编程逻辑电路系统两者。可编程互连电路系统通常包括由可编程互连点(pip)互连的不同长度的大量互连线。通常,互连线被配置为(例如,在每一线的基础上)在每一位的基础上提供连通性(例如,其中每个线传达单个位的信息)。可编程逻辑电路系统使用可编程元件实现用户设计的逻辑,该可编程元件可包括例如查找表、寄存器、算术逻辑等。可编程互连和可编程逻辑电路系统可通过将配置数据加载到内部配置存储器单元中来进行编程,该内部配置存储器单元定义如何配置和操作可编程元件。
[0102]
ps 1006实现为被制造为soc 1000的一部分的硬连线电路系统。ps 1006可实现为或可包括各自能够执行程序代码的多种不同处理器类型中的任何处理器类型。例如,ps 1006可实现为个别处理器,例如,能够执行程序代码的单核。在另一个示例中,ps 1006可实现为多核处理器。在又一个示例中,ps 1006可包括一个或多个核、模块、协处理器、接口和/或其他资源。ps 1006可使用多种不同类型的架构中的任何类型的架构实现。可用于实现ps 1006的示例性架构可包括但不限于arm处理器架构、x86处理器架构、gpu架构、移动处理器架构、dsp架构或能够执行计算机可读指令或程序代码的其他合适的架构。
[0103]
noc 1008包括用于在soc 1000中的端点电路之间共享数据的互连网络。端点电路可设置在dpe阵列1002、pl区域1004、ps 1006和/或硬连线电路块1010中。noc 1008可包括具有专用交换的高速数据路径。在一个示例中,noc 1008包括水平路径、竖直路径或水平路径和垂直路径两者。图10中示出的区域的布置和数量仅是示例。noc 1008是在soc 1000内可用以连接所选择的部件和/或子系统的公共基础设施的示例。
[0104]
noc 1008提供与pl 1004、ps 1006和与硬连线电路块1010中的所选择的硬连线电路块的连通性。noc 1008是可编程的。在可编程noc与其他可编程电路系统一起使用的情况下,要路由通过noc 1008的网是未知的,直到创建用于在soc 1000内实现的用户电路设计。noc 1008可通过将配置数据加载到内部配置寄存器中来进行编程,该内部配置寄存器定义如何配置和操作在noc 1008内的元件(诸如交换机和接口)以将数据从交换机传递到交换机和在noc接口间传递。
[0105]
noc 1008被制造为soc 1000的一部分,并且虽然物理上不可修改,但是可被编程以在用户电路设计的不同主电路和不同从电路之间建立连接。例如,noc 1008可包括能够建立连接用户指定的主电路和从电路的分组交换网络的两个或更多个可编程交换机。就这一点而言,noc 1008能够适应不同电路设计,其中每个不同电路设计具有实现在soc 1000中可由noc 1008耦接的不同位置处的主电路和从电路的不同组合。noc 1008可被编程以在用户电路设计的主电路和从电路间路由数据,例如应用程序数据和/或配置数据。例如,noc 1008可被编程以将实现在pl 1004内的不同的用户指定的电路系统与ps 1006和/或dpe阵列1002、与不同硬连线电路块和/或与在soc 1000外部的不同电路和/或系统耦接。
[0106]
硬连线电路块1010可包括输入/输出(i/o)块和/或用于向在soc 1000外部的电路和/或系统、存储器控制器等发送和接收信号的收发器。不同i/o块的示例可包括单端和伪差分i/o以及高速差分时钟收发器。另外,硬连线电路块1010可实现为执行特定功能。硬连线电路块1010的示例包括但不限于密码引擎、数字到模拟转换器、模拟到数字转换器等。在
soc 1000内的硬连线电路块1010在本文中有时可称为特定于应用程序的块。
[0107]
在图10的示例中,pl 1004被示出在两个单独区域中。在另一个示例中,pl 1004可实现为可编程电路系统的统一区域。在又一个示例中,pl 1004可实现为可编程电路系统的多于两个不同区域。pl 1004的特定组织不旨在作为限制。就这一点而言,soc 1000包括一个或多个pl区域1004、ps 1006和noc 1008。可任选地包括dpe阵列1002。
[0108]
在其他示例性具体实施中,soc 1000可包括位于ic的不同区域中的两个或更多个dpe阵列1002。在又一些示例中,soc 1000可实现为多管芯ic。在那种情况下,每个子系统可实现在不同管芯上。不同管芯可使用多种可用多管芯ic技术中的任何多管芯ic技术(诸如将管芯并排地堆叠在中介层上、使用其中ic实现为多芯片模块(mcm)的堆叠管芯架构等)通信地链接。在多管芯ic示例中,应当理解,每个管芯可包括单个子系统、两个或更多个子系统、子系统和另一个部分子系统或它们的任何组合。
[0109]
可编程集成电路(ic)是指某种类型的设备,其包括可编程逻辑。可编程设备或ic的示例是现场可编程门阵列(fpga)。fpga的特征在于包括可编程电路块。可编程电路块的示例包括但不限于输入/输出块(iob)、可配置逻辑块(clb)、专用随机存取存储器块(bram)、数字信号处理块(dsp)、处理器、时钟管理器和延迟锁定环路(dll)。现代可编程ic已经演化为包括与一个或多个其他子系统结合的可编程逻辑。例如,一些可编程ic已经演化为包括可编程逻辑和硬连线处理器两者的片上系统或“soc”。其他种类的可编程ic包括附加和/或不同系统。
[0110]
尽管各种实施方案可使用可重新配置的可编程逻辑块(例如,fpga)实现,但是其他实施方案可实现在固定的实例化(例如,asic)中,或者与可编程逻辑组合在单个集成电路(例如,soc)中。虽然在asic实现中的专用硬块电路系统一旦在集成电路中被实例化就不可重新配置,但是例如在一些具体实施中,asic实现可提供关于例如功率消耗和/或管芯面积的最小化平台。
[0111]
尽管已经参考附图描述了各种实施方案,但是其他实施方案是可能的。例如,在各种实施方案中,数据存储可以是在fpga中的查找表、存储在bram中并使用触发器(ff)、查找表单元(lut)(诸如个别逻辑门)和dsp的某种组合实现。在一些实施方案中,乘法电路和加法电路可实现在dsp中。在一些实施方案中,乘法电路和加法电路可映射到lut。
[0112]
表1示出了在设置有ff、lut、bram36(36千字节(kb)的bram单元)和dsp的示例性fpga中所需的资源的模拟,在关于n=16个位、i=1个位、lf=20个位的具体实施中,在查找表中的每个条目的位的数量量(l)为26,并且b的值在范围[1014]内以2位增量变化。如可看出,在一个具体实施中,可改变资源的组合以实现所期望的资源利用。例如,当b=10时,可使用1个dsp和36kb bram单元的一半完全地实现压缩计算电路,而无需ff或lut。当b=12时,可有利地例如不使用dsp并使用48个ff、63个lut和1个bram单元来实现压缩计算电路。当b=14时,可有利地使用例如更少的ff和lut(分别是36和33个)、将所使用的bram单元的数量增大到4并仍不使用dsp来实现压缩计算电路。这些具体实施是作为说明而非限制的方式提供的,并且用于展示压缩计算方法跨各种架构配置的灵活性。因此,自然指数的计算可有利地跨不同架构配置实现,以便实现例如硬件资源、计算准确度和计算速度的所期望的优化。
[0113]
表1。比较实现的资源要求的示例性模拟。
[0114]
n=16,i=1,lf=20,l=26fflutbram36dspb=10000.51b=12486310b=14363340
[0115]
表2示出了针对x的扩展输入范围的如关于表1所描述的资源的类似模拟,其中n=28个位,并且b在范围[14,18]内以2位增量变化。在其中b=14个位的示例性具体实施中,连同4个bram单元一起利用单个dsp。相比之下,当b=16和18时,与bram单元以及ff和lut结合利用单个dsp。这些说明性具体实施提供了资源组合的灵活性的另外的示例,该灵活性可有利地通过使用压缩计算方法计算自然指数来实现。
[0116]
表2。将输入字的实现的资源要求与增加的位比较的示例性模拟。
[0117]
n=28,i=1,lf=20,l=26fflutbram36dspb=140041b=1615161b=18320641
[0118]
在各种实施方案中,本文描述的压缩自然指数计算方法和电路可有利地替代采用泰勒级数、线性内插或深查找表的具体实施。此类具体实施可例如消耗若干dsp和存储器单元。一些实施方案可例如实现将查找表大小压缩至少一半,并且可将所需的dsp减少到实现乘法器和求和器的1个dsp或例如通过使用lut和ff来消除对dsp的需要。
[0119]
可使用电路系统(包括各种电子硬件)来实现各种示例。作为示例而非限制,硬件可包括晶体管、电阻器、电容器、开关、集成电路和/或其他设备。在各种示例中,电路可包括被制造在硅衬底上的模拟和/或数字逻辑、离散部件、迹线和/或存储器电路,包括各种集成电路(例如,fpga、asic)。在一些实施方案中,电路可涉及预先编程的指令和/或由处理器执行的软件的执行。例如,各种系统可涉及硬件和软件两者。
[0120]
实施方案的一些方面可实现为计算机系统。例如,各种具体实施可包括数字和/或模拟电路系统、计算机硬件、固件、软件或它们的组合。装置元件可实现在计算机程序产品中,该计算机程序产品有形地体现在信息载体中,例如体现在机器可读存储设备中,以供固定硬件处理器执行;并且方法可由执行指令程序以通过对输入数据进行操作并生成输出来执行各种实施方案的功能的可编程处理器执行。一些实施方案可有利地实现在一个或多个计算机程序中,该一个或多个计算机程序可在可编程系统上执行,该可编程系统包括至少一个处理器,该至少一个处理器被耦接以从数据存储、至少一个输入和/或至少一个输出接收数据和指令和向该数据存储、该至少一个输入和/或该至少一个输出传输数据和指令。数据存储可包括在例如存储器空间中的一个或多个寄存器或存储器位置。计算机程序是可在计算机中直接地或间接地使用以执行特定活动或带来特定结果的指令集。计算机程序可以任何形式的编程语言(包括编译或解释语言)编写,并且其可以任何形式(包括作为独立程序或作为模块、部件、子例程或适合于在计算环境中使用的其他单元)部署。
[0121]
在各种实施方案中,计算机系统可包括非暂态存储器。存储器可连接到一个或多个处理器,该一个或多个处理器可被配置用于存储数据和计算机可读指令,包括处理器可执行程序指令。数据和计算机可读指令可供一个或多个处理器访问。处理器可执行程序指令在由一个或多个处理器执行时可使该一个或多个处理器执行各种操作。
[0122]
上文公开的技术中的一些技术可在以下非限制性实施例中进行表达。
[0123]
实施例1。一种自然指数计算电路,包括:
[0124]
拆分器电路,该拆分器电路被配置为接收定点字并将其拆分成第一字和第二字;
[0125]
检索电路,该检索电路被配置为在由该第一字定义的地址处从数据存储检索预先确定且预先计算的双曲线和;
[0126]
乘法器电路,该乘法器电路被配置为将该双曲线和与该第二字相乘在一起并输出所相乘的双曲线和;
[0127]
第一缩放电路,该第一缩放电路被配置为接收该双曲线和并以第一因子对其进行缩放;
[0128]
求和器电路,该求和器电路被配置为将所缩放的双曲线和与所相乘的双曲线和相加在一起并生成所缩放的第二和;以及
[0129]
第二缩放电路,该第二缩放电路被配置为以第二因子缩放所缩放的第二和并输出e
x
的近似。
[0130]
实施例2。根据实施例1所述的电路,其中该乘法器电路和该求和器电路至少部分地实现在至少一个数字信号处理器(dsp)中。
[0131]
实施例3。根据实施例1所述的电路,其中以下项中的至少一者被至少部分地实现为逻辑门:该乘法器电路、该求和器电路和该数据存储。
[0132]
实施例4。根据实施例1所述的电路,其中该数据存储是查找表。
[0133]
实施例5。根据实施例4所述的电路,其中该查找表被配置为以定点格式存储条目。
[0134]
实施例6。根据实施例5所述的电路,其中该查找表具有2b的深度,其中b是在该第一字中的位的总数。
[0135]
实施例7。根据实施例1所述的电路,其中该数据存储被配置为以浮点格式存储条目。
[0136]
实施例8。根据实施例1所述的电路,其中:
[0137]
该第一因子是2
b-i
,其中b是该第一字的位的总数,并且i是在该第一字中的整数位的总数,并且
[0138]
该第一缩放电路使该双曲线和右零填充b-i个位。
[0139]
实施例9。根据实施例1所述的电路,其中:
[0140]
该第二因子是1/(2
b-i
),其中b是位的总数,并且i是在该第一字中的整数位的总数,并且
[0141]
该第二缩放电路使该第二和按位右移b-i个位。
[0142]
实施例10。根据实施例1所述的电路,还包括浮点到定点转换电路,该浮点到定点转换电路是在该拆分器电路之前,并且
[0143]
其中该转换电路被配置为接收浮点输入并将其转换成由该拆分器电路接收的该定点字。
[0144]
实施例11。根据实施例1所述的电路,还包括定点到浮点转换电路,该定点到浮点转换电路是在该第二缩放电路之后,并且
[0145]
其中该转换电路被配置为以定点格式接收e
x
的输出的近似并以浮点格式将其输出。
[0146]
实施例12。根据实施例1所述的电路,其中该第二字表示小于1的数值。
[0147]
实施例13。根据实施例1所述的电路,其中:
[0148]
该定点字是n个位长,
[0149]
该第一字是该定点字的前b个位,
[0150]
该第二字是该定点字的最后a个位,
[0151]
n=a+b,并且
[0152]
该定点字的二进制点被包含在该第一字中。
[0153]
实施例14。根据实施例12所述的电路,其中b被选择为使得e
x
的该近似在预先确定的误差极限内是准确的
[0154]
实施例15。一种在数字电路中高效地计算指数的方法,该方法包括:
[0155]
接收n个位长的数字定点字x;
[0156]
将x的前b个位拆分成第一字wb,并且将x的剩余a个位拆分成第二字wa,其中该第一字包括i个整数位和b-i个分数位,并且其中n=a+b并且x=wb+wa;
[0157]
在由wb定义的地址处从数据存储检索表示sinh(wb)+cosh(wb)的预先确定且预先计算的双曲线和;
[0158]
将该双曲线和与wa相乘在一起并生成表示[sinh(wb)+cosh(wb)]*[wa]的所相乘的双曲线和;
[0159]
以缩放因子k缩放该双曲线和以生成表示[sinh(wb)+cosh(wb)]*k的所缩放的双曲线和;
[0160]
求所缩放的双曲线和与所相乘的双曲线和的和以生成表示[sinh(b)+cosh(b)]*[wa+k]的所缩放的第二和;以及
[0161]
以1/k缩放所缩放的第二和,由此生成[sinh(wb)+cosh(wb)]*[wa/k+1]的表示作为e
x
的近似。
[0162]
实施例16。根据实施例13所述的方法,其中该相乘步骤和该求和步骤至少部分地实现在至少一个数字信号处理器(dsp)中。
[0163]
实施例17。根据实施例13所述的方法,其中:
[0164]
该数据存储是查找表,该查找表被配置为以定点格式存储条目,并且
[0165]
该查找表具有2b的深度。
[0166]
实施例18。根据实施例13所述的方法,其中:
[0167]
wb包括x的二进制点,
[0168]
k是2
b-i

[0169]
以k缩放该双曲线和包括使该双曲线和右零填充b-i个位,并且
[0170]
以1/k缩放所缩放的第二和包括使该第二和按位右移b-i个位。
[0171]
实施例19。根据实施例13所述的方法,其中b被选择为使得e
x
的该近似在预先确定的误差极限内是准确的。
[0172]
实施例20。至少一种非暂态计算机可读介质,该至少一种非暂态计算机可读介质提供指令程序,该指令程序在由处理器执行时使操作计算自然指数,该操作包括:
[0173]
接收n个位长的数字定点字x;
[0174]
将x的前b个位拆分成第一字wb,并且将x的剩余a个位拆分成第二字wa,其中该第
一字包括i个整数位和b-i个分数位,并且其中n=a+b并且x=wb+wa;
[0175]
在由wb定义的地址处从数据存储检索表示sinh(wb)+cosh(wb)的预先确定且预先计算的双曲线和;
[0176]
将该双曲线和与wa相乘在一起并生成表示[sinh(wb)+cosh(wb)]*[wa]的所相乘的双曲线和;
[0177]
以缩放因子k缩放该双曲线和以生成表示[sinh(wb)+cosh(wb)]*k的所缩放的双曲线和;
[0178]
求所缩放的双曲线和与所相乘的双曲线和的和以生成表示[sinh(b)+cosh(b)]*[wa+k]的所缩放的第二和;以及
[0179]
以1/k缩放所缩放的第二和,由此生成[sinh(wb)+cosh(wb)]*[wa/k+1]的表示作为e
x
的近似。
[0180]
已经描述多个具体实施。然而,应当理解,可进行各种修改。例如,如果所公开的技术的步骤以不同顺序执行,或者如果所公开的系统的部件以不同方式组合,或者如果该部件用其他部件作补充,则可实现有利结果。因此,其他具体实施在所附权利要求书的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1