CN105138305A - 高精度的三角函数计算方法以及装置 - Google Patents
高精度的三角函数计算方法以及装置 Download PDFInfo
- Publication number
- CN105138305A CN105138305A CN201510621326.0A CN201510621326A CN105138305A CN 105138305 A CN105138305 A CN 105138305A CN 201510621326 A CN201510621326 A CN 201510621326A CN 105138305 A CN105138305 A CN 105138305A
- Authority
- CN
- China
- Prior art keywords
- mentioned
- value
- numerical value
- trigonometric function
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/548—Trigonometric functions; Co-ordinate transformations
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明的实施例提出一种三角函数计算方法,使用运算逻辑单元(Arithmetic?Logic?Unit,ALU)及特殊函数处理单元(Special?Functional?Unit,SFU)协同执行。运算逻辑单元计算相应于输入参数x的余数r以及缩减数值x*。特殊函数处理单元计算相应于缩减数值x*的中介函数(intermediate-function)值f(x*)。运算逻辑单元计算缩减数值x*及中介函数值f(x*)的乘积作为三角函数的计算结果。
Description
技术领域
本发明涉及一种图形处理单元技术,特别是一种高精度的三角函数计算方法以及装置。
背景技术
所有的三维图形应用程序接口(API,ApplicationProgrammingInterface),例如DirectX、OpenGL等,都包含三角函数运算(trigonometricfunctions)。为了满足三维图形的计算速度及效能限制,图形处理单元使用称作特殊函数处理单元(SpecialFunctionUnit,SFU)的硬件逻辑单元执行三角函数以及其它初等函数(elementaryfunctions)的计算。对于三角函数,三维图形应用程序接口于-100*Pi至100*Pi区间的最大绝对误差只需要0.0008。但是,通用计算图形处理单元(GPGPU,General-PurposeComputingonGraphicsProcessingUnit)演进至今,需要更高精度的三角函数运算。因此,本发明提出一种用以提升精确度的三角函数计算方法以及装置。
发明内容
本发明的实施例提出一种三角函数计算方法,使用运算逻辑单元及特殊函数处理单元协同执行。运算逻辑单元计算相应于输入参数x的余数r以及缩减数值x*。特殊函数处理单元计算相应于缩减数值x*的中介函数值f(x*)。运算逻辑单元计算缩减数值x*及中介函数值f(x*)的乘积作为三角函数的计算结果。
本发明的实施例提出一种三角函数计算装置,包含运算逻辑单元及特殊函数处理单元。特殊函数处理单元耦接至逻辑处理单元。特殊函数处理单元计算相应于缩减数值x*的中介函数值f(x*)。运算逻辑单元计算缩减数值x*及中介函数值f(x*)的乘积作为三角函数的计算结果。
附图说明
图1是依据本发明实施例的三角函数计算装置的硬件架构图。
图2是依据本发明实施例的三角函数计算的方法流程图。
图3是依据本发明实施例的三角函数计算的方法流程图。
具体实施方式
以下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,用以表示存在特定的技术特征、数值、方法步骤、作业处理、组件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、组件、组件,或以上的任意组合。
在权利要求中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的组件,并非用来表示之间具有优先权顺序,先行关系,或者是一个组件先于另一个组件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的组件。
一般来说,图形处理单元包含运算逻辑单元(ALU,ArithmeticLogicUnit),用以协同特殊函数处理单元(SFU,SpecialfunctionUnit)完成三角函数的计算。在一些实施方式,运算逻辑单元可经由32位的特殊函数处理单元直接计算sin(x*)或cos(x*),x*介于0至2/π之间。然而,计算结果并无法满足通用计算图形处理单元所需的准确度(<=4ULP,UnitofLeastPrecision)。本发明实施例提出一种硬件架构,用以提供通用计算图形处理单元所需准确度的三角函数计算结果。图1是依据本发明实施例的三角函数计算装置的硬件架构图。三角函数计算装置10包含特殊函数处理单元110及运算逻辑单元130。运算逻辑单元130指示特殊函数处理单元110计算中介函数值f(x*),将特殊函数处理单元110的计算结果再乘以x*,接着,输出f(x*)·x*作为sin(x)或cos(x)的结果。其中,中介函数值f(x*)为使用极小极大二次逼近(minimaxquadraticapproximation)的数值sin(x*)/x*或cos(x*)/x*。
特殊函数处理单元110包含非挥发性存储装置(non-volatilememorydevice)111,储存相应于中介函数值f(x*)的查找表(LUT,Look-UpTable)。非挥发性存储装置111可为只读存储器(ROM,Read-OnlyMemory)、可抹除可程序化只读存储器(ErasableProgrammableReadOnlyMemory)、静态随机存取内存(SRAM,StaticRandomAccessMemory)等。查找表包含128(27)笔纪录(entries),每个记录储存关联于二进制值“0b0000000”至“0b1111111”中之一者的二次多项式(second-degreepolynomial)的系数C0、C1及C2。例如,关联于“0b0000000”的纪录包含C0=0xffff96b、C1=0xd28c及C2=0x1a51。关联于“0b0000010”的纪录包含C0=0xfff5b83、C1=0x41ca8及C2=0x1a4f。关联于“0b1111111”的纪录包含C0=0xa39c56b、C1=0xa2ace4及C2=0x9a2。
在计算时,范围缩减单元131计算相应于输入参数x的余数r,并储存至特殊函数处理单元110中的挥发性存储装置115。详细来说,范围缩减单元131计算相应于输入参数x的余数r(remainder),余数r可使用公式(1)计算:
r=frc(x*2/π)(1),
其中r介于0到1之间;函数运算符“frc”表示:抽取出输入数据的小数部分。接着,根据输入的指令码(opcode)判断主装置(hostdevice)请求计算sin(x)或cos(x)。若请求计算cos(x),则更使用公式(2)调整余数r:
r=1.0-r(2)
接着,使用公式(3)计算缩减数值x*:
x*=π/2*r(3)
挥发性存储装置115可为寄存器(register)、先进先出缓存器(FIFObuffer)等。挥发性存储装置115中的余数r分为二个部分:数值X1(第30位至第24位);以及数值X2(第23位至第0位)。查找单元113依据挥发性存储装置115中储存的数值X1作为索引,从非挥发性内存111搜寻到相关联的纪录,并且将纪录中的系数C0、C1及C2输出至二次多项式计算单元119。平方计算单元117读取挥发性存储装置115中的数值X2,计算数值X2的平方,并且将计算结果输出至二次多项式计算单元119。二次多项式计算单元119依据系数C0、C1及C2、数值X2及数值X2的平方计算中介函数值f(x*)。中介函数值f(x*)可使用公式(4)计算:
f(x*)=C0+C1*X2+C2*X2 2(4)
二次多项式计算单元119更将计算结果输出至运算逻辑单元130中的后计算单元133。在此须注意的是,相较于以6位或更低位表示的数值范围的系数C0、C1及C2,查找表中储存的7位表示的数值范围的系数C0、C1及C2拥有更高的精确度。计算出的中介函数值f(x*)可视为Sin(x*)/x*或Cos(x*)/x*的结果。后计算单元133可使用公式(5)计算三角函数Tout:
Tout=f(x*)*x*(5)
若输入的指令码指出主装置请求计算sin(x),则计算结果Tout为sin(x*)。若输入的指令码指出主装置请求计算cos(x),则计算结果Tout为cos(x*)。
图2是依据本发明实施例的三角函数计算的方法流程图。此方法由特殊函数处理单元110及运算逻辑单元130协同完成。运算逻辑单元130于接收到主装置的三角函数计算请求后,计算相应于输入参数x的余数r,并将余数r传送给特殊函数处理单元110(步骤S210)。接着,特殊函数处理单元110计算相应于缩减数值的中介函数值f(x*),并将中介函数值f(x*)传送给运算逻辑单元130(步骤S230)。接着,运算逻辑单元130计算缩减数值x*及中介函数值f(x*)的乘积作为三角函数的计算结果,并且回复给主装置(步骤S250)。
图3是依据本发明实施例的三角函数计算的方法流程图。在接收到主装置的三角函数计算请求后,范围缩减单元131使用公式(1)计算相应于输入参数x的余数r(步骤S311)。接着,范围缩减单元131判断主装置是否请求计算cos(x)(步骤S313)。若是,范围缩减单元131使用公式(2)调整余数r(步骤S331),并使用公式(3)计算缩减数值x*(步骤S315)。否则,范围缩减单元131直接使用公式(3)计算缩减数值x*(步骤S315)。接着,运算逻辑单元130指示特殊函数处理单元110计算中介函数值f(x*)(步骤S351)。在步骤S351,详细来说,范围缩减单元131将余数r储存至特殊函数处理单元110中的挥发性存储装置115。查找单元113依据挥发性存储装置115中储存的数值X1作为索引,从非挥发性内存111搜寻到相关联的纪录,并且将纪录中的系数C0、C1及C2输出至二次多项式计算单元119。平方计算单元117读取挥发性存储装置115中的数值X2,计算数值X2的平方,并且将计算结果输出至二次多项式计算单元119。二次多项式计算单元119依据系数C0、C1及C2、数值X2及数值X2的平方使用公式(4)计算中介函数值f(x*),并且将计算结果输出至运算逻辑单元130中的后计算单元133。最后,后计算单元133使用公式(5)计算三角函数结果Tout,并且回复给主装置(步骤S353)。若输入的指令码指出主装置请求计算sin(x),则计算结果Tout为sin(x*)。若输入的指令码指出主装置请求计算cos(x),则计算结果Tout为cos(x*)。
虽然图1中包含了以上描述的组件,但不排除在不违反发明的精神下,使用更多其它的附加组件,已达成更佳的技术效果。此外,虽然图2及图3的处理步骤采用特定的顺序来执行,但是在不违反发明精神的情况下,熟习此技术人士可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。
虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限制本发明。相反地,此发明涵盖了熟习此技术人士显而易见的修改与相似设置。所以,申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。
【符号说明】
10三角函数计算装置;110特殊函数处理单元;
111非挥发性存储装置;113查找单元;
115挥发性存储装置;117平方计算单元;
119二次多项式计算单元;
130运算逻辑单元;131范围缩减单元;
133后计算单元;x输入参数;
r余数;x*缩减数值;
X1、X2缩减数值的部分;
C0、C1及C2二次多项式的系数;
Tout计算结果;S210~S250方法步骤;
S311~S353方法步骤。
Claims (14)
1.一种三角函数计算方法,包含:
一运算逻辑单元计算相应于一输入参数x的一余数r和一缩减数值x*;
一特殊函数处理单元计算相应于上述缩减数值x*的一中介函数值f(x*);以及
上述运算逻辑单元计算上述缩减数值x*及上述中介函数值f(x*)的乘积作为一三角函数的一计算结果。
2.如权利要求1所述的三角函数计算方法,使用以下公式计算上述缩减数值x*:
x*=π/2*frc(x*2/π)。
3.如权利要求1所述的三角函数计算方法,其中,在使用一运算逻辑单元计算相应于一输入参数x的一缩减数值x*的步骤中,更包含:
使用以下公式计算相应于上述输入参数x的一余数r:
r=frc(x*2/π);
判断一主装置是否请求计算cos(x);
当上述主装置请求计算cos(x)时,使用以下公式调整上述弧度:
r=1.0-r;以及
使用以下公式计算上述缩减数值x*:
x*=π/2*r。
4.如权利要求1所述的三角函数计算方法,其中,在使用一特殊函数处理单元计算相应于上述缩减数值x*的一中介函数值f(x*)的步骤中,更包含:
依据上述余数r中的一第一数值X1作为索引,从一查找表取得一二次多项式的系数C0、C1及C2;
取得上述余数r中的一第二数值X2;以及
使用以下公式计算上述中介函数值:
f(x*)=C0+C1*X2+C2*X2 2。
5.如权利要求4所述的三角函数计算方法,其中,上述中介函数值f(x*)视为Sin(x*)/x*或Cos(x*)/x*的结果。
6.如权利要求4所述的三角函数计算方法,其中,上述第一数值X1为7位数值,以及上述第二数值X2为24位数值。
7.如权利要求6所述的三角函数计算方法,其中,上述查找表包含128笔纪录,以及每一上述纪录储存关联于二进制值“0b0000000”至“0b1111111”中之一者的上述二次多项式的系数C0、C1及C2。
8.一种三角函数计算装置,包含:
一逻辑处理单元;以及
一特殊函数处理单元,耦接至上述逻辑处理单元;
其中,上述运算逻辑单元计算相应于一输入参数x的一缩减数值x*;上述特殊函数处理单元计算相应于上述缩减数值x*的一中介函数值f(x*);以及上述运算逻辑单元计算上述缩减数值及上述中介函数值的乘积作为一三角函数的一计算结果。
9.如权利要求8所述的三角函数计算装置,其中,上述运算逻辑单元更包含一范围缩减单元,用以使用以下公式计算上述缩减数值x*:
x*=π/2*frc(x*2/π)。
10.如权利要求8所述的三角函数计算装置,其中,上述运算逻辑单元更包含一范围缩减单元,用以使用以下公式计算相应于上述输入参数x的一余数:r=frc(x*2/π);判断一主装置是否请求计算cos(x);当上述主装置请求计算cos(x)时,使用以下公式调整上述余数:r=1.0-r;以及使用以下公式计算上述缩减数值:x*=π/2*r。
11.如权利要求10所述的三角函数计算装置,其中上述特殊函数处理单元更包含:
一挥发性存储装置,耦接于范围缩减单元,上述挥发性存储装置储存上述缩减数值x*;
一非挥发性存储装置,储存一查找表;
一查找单元,耦接于上述挥发性存储装置以及上述非挥发性存储装置;
一平方计算单元,耦接至上述挥发性存储装置;以及
一二次多项式计算单元,耦接查找单元、上述挥发性存储装置以及上述平方计算单元,
其中,上述查找单元依据上述余数r中的一第一数值X1作为索引,从上述查找表取得一二次多项式的系数C0、C1及C2;以及上述二次多项式计算单元从上述查找单元取得上述二次多项式的系数C0、C1及C2,从上述挥发性存储装置取得上述余数r中的一第二数值X2,从上述平方计算单元取得上述第二数值X2的平方,以及使用以下公式计算上述中介函数值:f(x*)=C0+C1*X2+C2*X2 2。
12.如权利要求11所述的三角函数计算装置,其中,上述中介函数值f(x*)视为Sin(x*)/x*或Cos(x*)/x*的结果。
13.如权利要求11所述的三角函数计算装置,其中,上述第一数值X1为7位数值,以及上述第二数值X2为24位数值。
14.如权利要求13所述的三角函数计算装置,其中,上述查找表包含128笔纪录,以及每一上述纪录储存关联于二进制值“0b0000000”至“0b1111111”中之一者的上述二次多项式的系数C0、C1及C2。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510621326.0A CN105138305B (zh) | 2015-09-25 | 2015-09-25 | 高精度的三角函数计算方法以及装置 |
US14/883,889 US10353672B2 (en) | 2015-09-25 | 2015-10-15 | Methods and apparatuses for computing trigonometric functions with high precision |
EP15190840.7A EP3147773B1 (en) | 2015-09-25 | 2015-10-21 | Methods and apparatuses for computing trigonometric functions with high precision |
TW104135545A TWI625635B (zh) | 2015-09-25 | 2015-10-29 | 三角函數計算方法以及裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510621326.0A CN105138305B (zh) | 2015-09-25 | 2015-09-25 | 高精度的三角函数计算方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105138305A true CN105138305A (zh) | 2015-12-09 |
CN105138305B CN105138305B (zh) | 2018-11-27 |
Family
ID=54365963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510621326.0A Active CN105138305B (zh) | 2015-09-25 | 2015-09-25 | 高精度的三角函数计算方法以及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10353672B2 (zh) |
EP (1) | EP3147773B1 (zh) |
CN (1) | CN105138305B (zh) |
TW (1) | TWI625635B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107783756A (zh) * | 2016-08-31 | 2018-03-09 | 深圳市中兴微电子技术有限公司 | 一种获取角度相关值的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090265408A1 (en) * | 2003-12-03 | 2009-10-22 | Marvell World Trade Ltd. | Methods and apparatus for performing calculations using reduced-width data |
CN103150137A (zh) * | 2013-03-01 | 2013-06-12 | 北京理工大学 | 一种覆盖全圆周角度的单精度浮点三角函数的实现方法 |
CN103699518A (zh) * | 2013-12-26 | 2014-04-02 | 北京无线电计量测试研究所 | 一种三角函数的近似计算方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6640237B1 (en) | 1999-07-27 | 2003-10-28 | Raytheon Company | Method and system for generating a trigonometric function |
US8190669B1 (en) * | 2004-10-20 | 2012-05-29 | Nvidia Corporation | Multipurpose arithmetic functional unit |
CN102262525B (zh) | 2011-08-29 | 2014-11-19 | 孙瑞玮 | 基于矢量运算的矢量浮点运算装置及方法 |
-
2015
- 2015-09-25 CN CN201510621326.0A patent/CN105138305B/zh active Active
- 2015-10-15 US US14/883,889 patent/US10353672B2/en active Active
- 2015-10-21 EP EP15190840.7A patent/EP3147773B1/en active Active
- 2015-10-29 TW TW104135545A patent/TWI625635B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090265408A1 (en) * | 2003-12-03 | 2009-10-22 | Marvell World Trade Ltd. | Methods and apparatus for performing calculations using reduced-width data |
CN103150137A (zh) * | 2013-03-01 | 2013-06-12 | 北京理工大学 | 一种覆盖全圆周角度的单精度浮点三角函数的实现方法 |
CN103699518A (zh) * | 2013-12-26 | 2014-04-02 | 北京无线电计量测试研究所 | 一种三角函数的近似计算方法 |
Non-Patent Citations (1)
Title |
---|
《ACM TRANSACTIONS ON MATHEMATICAL SOFTWARE》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107783756A (zh) * | 2016-08-31 | 2018-03-09 | 深圳市中兴微电子技术有限公司 | 一种获取角度相关值的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3147773B1 (en) | 2017-12-06 |
TW201712570A (zh) | 2017-04-01 |
EP3147773A1 (en) | 2017-03-29 |
TWI625635B (zh) | 2018-06-01 |
US20170090871A1 (en) | 2017-03-30 |
CN105138305B (zh) | 2018-11-27 |
US10353672B2 (en) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102359265B1 (ko) | 프로세싱 장치 및 프로세싱 장치에서 연산을 수행하는 방법 | |
CN103959192A (zh) | 用于估算超越函数的数学电路 | |
CN112286772B (zh) | 归因分析方法、装置和电子设备 | |
US20210254995A1 (en) | Methods, apparatuses, systems, and storage media for storing and loading visual localization maps | |
US8805914B2 (en) | Method and apparatus for performing numerical calculations | |
Heikalabad et al. | Midpoint memory: a special memory structure for data-oriented models implementation | |
US6240338B1 (en) | Seed ROM for reciprocal computation | |
US20190235834A1 (en) | Optimization apparatus and control method thereof | |
Capizzano | Automatic generation of locally refined Cartesian meshes: Data management and algorithms | |
US20210109711A1 (en) | Processor and method for processing mask data | |
CN110390072A (zh) | 业务数值计算方法、装置、计算机设备和存储介质 | |
Wang et al. | The Magnus expansion for stochastic differential equations | |
CN116028013A (zh) | 一种fpga除法运算的优化方法、装置、除法器和介质 | |
CN105677645A (zh) | 一种数据表比对方法和装置 | |
CN105138305A (zh) | 高精度的三角函数计算方法以及装置 | |
US10095630B2 (en) | Sequential access to page metadata stored in a multi-level page table | |
CN112861239A (zh) | 数值模型的初始地应力平衡方法、系统、设备及存储介质 | |
CN110633447B (zh) | 基于fpga的球面距离定点计算方法及其计算装置 | |
Mora-Mora et al. | Mathematical model of stored logic based computation | |
Ivanov et al. | Fast memory efficient evaluation of spherical polynomials at scattered points | |
US20220171602A1 (en) | Integrated circuit for constant multiplication and device including the same | |
Bonnot et al. | New non-uniform segmentation technique for software function evaluation | |
CN103942162B (zh) | 在存储器中进行多访问的方法、装置和存储系统 | |
Shih et al. | Design and implementation of decision-tree (DT) online training hardware using divider-free GI calculation and speeding-up double-root classifier | |
US6389443B1 (en) | Method and apparatus for an efficient square-root computation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211202 Address after: Room 201, No. 2557, Jinke Road, pilot Free Trade Zone, Pudong New Area, Shanghai 201203 Patentee after: Gryfield Intelligent Technology Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |
|
TR01 | Transfer of patent right |