TW201712570A - 三角函數計算方法以及裝置 - Google Patents
三角函數計算方法以及裝置 Download PDFInfo
- Publication number
- TW201712570A TW201712570A TW104135545A TW104135545A TW201712570A TW 201712570 A TW201712570 A TW 201712570A TW 104135545 A TW104135545 A TW 104135545A TW 104135545 A TW104135545 A TW 104135545A TW 201712570 A TW201712570 A TW 201712570A
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- function
- unit
- trigonometric function
- remainder
- Prior art date
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 Funtional Unit,SFU)協同執行。運算邏輯單元計算相應於輸入參數x的餘數r以及縮減數值x*。特殊函數處理單元計算相應於縮減數值x*的中介函數值f(x*)。運算邏輯單元計算縮減數值x*及中介函數值f(x*)的乘積作為三角函數的計算結果。
Description
本發明關連於一種圖形處理單元技術,特別是一種高精度之三角函數計算方法以及裝置。
所有的三維圖形應用程式介面(API,Application Programming Interface),例如DirectX、OpenGL等,都包含三角函數運算(trigonometric functions)。為了滿足三維圖形的計算速度及效能限制,圖形處理單元使用稱做特殊函數處理單元(Special Function Unit,SFU)的硬體邏輯單元執行三角函數以及其他初等函數(elementary functions)的計算。對於三角函數,三維圖形應用程式介面於-100*Pi至100*Pi區間的最大絕對誤差只需要0.0008。但是,通用計算圖形處理單元(GPGPU,General-Purpose Computing on Graphics Processing Unit)演進至今,需要更高精度的三角函數運算。因此,本發明提出一種用以提升精確度的三角函數計算方法以及裝置。
本發明的實施例提出一種三角函數計算方法,使用運算邏輯單元及特殊函數處理單元協同執行。運算邏輯單元計算相應於輸入參數x的餘數r以及縮減數值x*。特殊函數處理單元計算相應於縮減數值x*的中介函數值f(x*)。運算邏輯單元
計算縮減數值x*及中介函數值f(x*)的乘積作為三角函數的計算結果。
本發明的實施例提出一種三角函數計算裝置,包含運算邏輯單元及特殊函數處理單元。特殊函數處理單元耦接至邏輯處理單元。特殊函數處理單元計算相應於縮減數值x*的中介函數值f(x*)。運算邏輯單元計算縮減數值x*及中介函數值f(x*)的乘積作為三角函數的計算結果。
10‧‧‧三角函數計算裝置
110‧‧‧特殊函數處理單元
111‧‧‧非揮發性記憶裝置
113‧‧‧查找單元
115‧‧‧揮發性記憶裝置
117‧‧‧平方計算單元
119‧‧‧二次多項式計算單元
130‧‧‧運算邏輯單元
131‧‧‧範圍縮減單元
133‧‧‧後計算單元
x‧‧‧輸入參數
r‧‧‧餘數
x*‧‧‧縮減數值
X1、X2‧‧‧縮減數值的部分
C0、C1及C2‧‧‧二次多項式的係數
Tout‧‧‧計算結果
S210~S250‧‧‧方法步驟
S311~S353‧‧‧方法步驟
第1圖係依據本發明實施例之三角函數計算裝置的硬體架構圖。
第2圖係依據本發明實施例之三角函數計算的方法流程圖。
第3圖係依據本發明實施例之三角函數計算的方法流程圖。
以下說明係為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,係用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、"第二"、"第三"等詞係用來修飾權利要求中的元件,並非用來表示之間具有優先權
順序,先行關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
一般來說,圖形處理單元包含運算邏輯單元(ALU,Arithmetic Logic Unit),用以協同特殊函數處理單元(SFU,Special function Unit)完成三角函數的計算。於一些實施方式,運算邏輯單元可經由32位元的特殊函數處理單元直接計算sin(x*)或cos(x*),x*介於0至2/π之間。然而,計算結果並無法滿足通用計算圖形處理單元所需的準確度(<=4ULP,Unit of Least Precision)。本發明實施例提出一種硬體架構,用以提供通用計算圖形處理單元所需準確度的三角函數計算結果。第1圖係依據本發明實施例之三角函數計算裝置的硬體架構圖。三角函數計算裝置10包含特殊函數處理單元110及運算邏輯單元130。運算邏輯單元130指示特殊函數處理單元110計算中介函數值f(x*),將特殊函數處理單元110的計算結果再乘以x*,接著,輸出f(x*).x*作為sin(x)或cos(x)的結果。其中,中介函數值f(x*)為使用極小極大二次逼近(minimax quadratic approximation)的數值sin(x*)/x*或cos(x*)/x*。
特殊函數處理單元110包含非揮發性記憶裝置(non-volatile memory device)111,儲存相應於中介函數值f(x*)的查找表(LUT,Look-Up Table)。非揮發性記憶裝置111可為唯讀記憶體(ROM,Read-Only Memory)、可抹除可程式化唯讀記憶體(Erasable Programmable Read Only Memory)、靜態隨機存取記憶體(SRAM,Static Random Access Memory)等。查找表包
含128(27)筆紀錄(entries),每個記錄儲存關聯於二進位值”0b0000000”至”0b1111111”中之一者的二次多項式(second-degree polynomial)的係數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之間。接著,根據輸入的指令碼(opcode)判斷主裝置(host device)請求計算sin(x)或cos(x)。若請求計算cos(x),則更使用公式(2)調整餘數r:r=1.0-r (2)接著,使用公式(3)計算縮減數值x*:x *=π/2*r (3)揮發性記憶裝置115可為寄存器(register)、先進先出緩存器(FIFO buffer)等。揮發性記憶裝置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圖的處理步驟採用特定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
S210~S250‧‧‧方法步驟
Claims (14)
- 一種三角函數計算方法,包含:一運算邏輯單元計算相應於一輸入參數x的一餘數r和一縮減數值x*;一特殊函數處理單元計算相應於上述縮減數值x*的一中介函數值f(x*);以及上述運算邏輯單元計算上述縮減數值x*及上述中介函數值f(x*)的乘積作為一三角函數的一計算結果。
- 如申請專利範圍第1項所述的三角函數計算方法,使用以下公式計算上述縮減數值x*:x *=π/2*frc(x * 2/π)。
- 如申請專利範圍第1項所述的三角函數計算方法,其中,於使用一運算邏輯單元計算相應於一輸入參數x的一縮減數值x*的步驟中,更包含:使用以下公式計算相應於上述輸入參數x的一餘數r:r=frc(x*2/π);判斷一主裝置是否請求計算cos(x);當上述主裝置請求計算cos(x)時,使用以下公式調整上述弧度:r=1.0-r;以及使用以下公式計算上述縮減數值x *:x *=π/2*r。
- 如申請專利範圍第1項所述的三角函數計算方法,其中,於使用一特殊函數處理單元計算相應於上述縮減數值x*的一 中介函數值f(x*)的步驟中,更包含:依據上述餘數r中的一第一數值X1作為索引,從一查找表取得一二次多項式的係數C0、C1及C2;取得上述餘數r中的一第二數值X2;以及使用以下公式計算上述中介函數值:f(x*)=C0+C1* X2+C2*X2 2。
- 如申請專利範圍第4項所述的三角函數計算方法,其中,上述中介函數值f(x*)視為Sin(x*)/x*或Cos(x*)/x*的結果。
- 如申請專利範圍第4項所述的三角函數計算方法,其中,上述第一數值X1為7位元數值,以及上述第二數值X2為24位元數值。
- 如申請專利範圍第6項所述的三角函數計算方法,其中,上述查找表包含128筆紀錄,以及每一上述紀錄儲存關聯於二進位值”0b0000000”至”0b1111111”中之一者的上述二次多項式的係數C0、C1及C2。
- 一種三角函數計算裝置,包含:一邏輯處理單元;以及一特殊函數處理單元,耦接至上述邏輯處理單元;其中,上述運算邏輯單元計算相應於一輸入參數x的一縮減數值x*;上述特殊函數處理單元計算相應於上述縮減數值x*的一中介函數值f(x*);以及上述運算邏輯單元計算上述縮減數值及上述中介函數值的乘積作為一三角函數的一計算結果。
- 如申請專利範圍第8項所述的三角函數計算裝置,其中,上 述運算邏輯單元更包含一範圍縮減單元,用以使用以下公式計算上述縮減數值x*:x *=π/2*frc(x*2/π)。
- .如申請專利範圍第8項所述的三角函數計算裝置,其中,上述運算邏輯單元更包含一範圍縮減單元,用以使用以下公式計算相應於上述輸入參數x的一餘數:r=frc(x*2/π);判斷一主裝置是否請求計算cos(x);當上述主裝置請求計算cos(x)時,使用以下公式調整上述餘數:r=1.0-r;以及使用以下公式計算上述縮減數值:x *=π/2*r。
- 如申請專利範圍第10項所述的三角函數計算裝置,其中上述特殊函數處理單元更包含:一揮發性記憶裝置,耦接於範圍縮減單元,上述儲存上述縮減數值x*;一非揮發性記憶裝置,儲存一查找表;一查找單元,耦接於上述揮發性記憶裝置以及上述非揮發性記憶裝置;一平方計算單元,耦接至上述揮發性記憶裝置;以及一二次多項式計算單元,耦接查找單元、上述揮發性記憶裝置以及上述平方計算單元,其中,上述查找單元依據上述餘數r中的一第一數值X1作為索引,從上述查找表取得一二次多項式的係數C0、C1及C2;以及上述二次多項式計算單元從上述查找單元取得上述二次多項式的係數C0、C1及C2,從上述揮發性記憶裝置取得上述餘數r中的一第二數值X2,從上述平方計算單元取得上 述第二數值X2的平方,以及使用以下公式計算上述中介函數值:f(x*)=C0+C1* X2+C2*X2 2。
- 如申請專利範圍第11項所述的三角函數計算裝置,其中,上述中介函數值f(x*)視為Sin(x*)/x*或Cos(x*)/x*的結果。
- 如申請專利範圍第11項所述的三角函數計算裝置,其中,上述第一數值X1為7位元數值,以及上述第二數值X2為24位元數值。
- 如申請專利範圍第13項所述的三角函數計算裝置,其中,上述查找表包含128筆紀錄,以及每一上述紀錄儲存關聯於二進位值”0b0000000”至”0b1111111”中之一者的上述二次多項式的係數C0、C1及C2。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510621326.0A CN105138305B (zh) | 2015-09-25 | 2015-09-25 | 高精度的三角函数计算方法以及装置 |
??201510621326.0 | 2015-09-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201712570A true TW201712570A (zh) | 2017-04-01 |
TWI625635B TWI625635B (zh) | 2018-06-01 |
Family
ID=54365963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104135545A TWI625635B (zh) | 2015-09-25 | 2015-10-29 | 三角函數計算方法以及裝置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10353672B2 (zh) |
EP (1) | EP3147773B1 (zh) |
CN (1) | CN105138305B (zh) |
TW (1) | TWI625635B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107783756A (zh) * | 2016-08-31 | 2018-03-09 | 深圳市中兴微电子技术有限公司 | 一种获取角度相关值的方法和装置 |
Family Cites Families (6)
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 |
US7457838B2 (en) * | 2003-12-03 | 2008-11-25 | Marvell World Trade Ltd. | Methods and apparatus for performing calculations using reduced-width data |
US8190669B1 (en) * | 2004-10-20 | 2012-05-29 | Nvidia Corporation | Multipurpose arithmetic functional unit |
CN102262525B (zh) | 2011-08-29 | 2014-11-19 | 孙瑞玮 | 基于矢量运算的矢量浮点运算装置及方法 |
CN103150137A (zh) * | 2013-03-01 | 2013-06-12 | 北京理工大学 | 一种覆盖全圆周角度的单精度浮点三角函数的实现方法 |
CN103699518A (zh) * | 2013-12-26 | 2014-04-02 | 北京无线电计量测试研究所 | 一种三角函数的近似计算方法 |
-
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
Also Published As
Publication number | Publication date |
---|---|
CN105138305A (zh) | 2015-12-09 |
US20170090871A1 (en) | 2017-03-30 |
EP3147773B1 (en) | 2017-12-06 |
CN105138305B (zh) | 2018-11-27 |
US10353672B2 (en) | 2019-07-16 |
EP3147773A1 (en) | 2017-03-29 |
TWI625635B (zh) | 2018-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2017059229A (ja) | 算術演算を行う方法及び処理装置 | |
TW201723803A (zh) | 除法運算裝置及其運算方法 | |
GB2522194A (en) | Multiply adder | |
US9851947B2 (en) | Arithmetic processing method and arithmetic processor having improved fixed-point error | |
JP2015103245A (ja) | 浮動小数点加算ユニットを含む装置及びシステム、並びに浮動小数点加算方法 | |
JP2006227939A (ja) | 演算装置 | |
TW201523183A (zh) | 旋轉台精度補償系統及方法 | |
TWI625635B (zh) | 三角函數計算方法以及裝置 | |
CN111813371A (zh) | 数字信号处理的浮点除法运算方法、系统及可读介质 | |
KR102503498B1 (ko) | 수학적 함수를 연산하는 시스템 및 방법 | |
US7366745B1 (en) | High-speed function approximation | |
KR20060103920A (ko) | 스케일링된 정수를 사용하는 부동 소수점 연산 | |
WO2006022048A1 (ja) | 演算方法および装置 | |
US9563402B2 (en) | Method and apparatus for additive range reduction | |
US20040015882A1 (en) | Branch-free software methodology for transcendental functions | |
KR102281047B1 (ko) | 4개의 입력 내적 회로를 사용하는 삼각 함수 계산 | |
JP2009089343A (ja) | 角度計算方法及び関連回路 | |
JPS63186329A (ja) | 三角関数前処理装置 | |
Hsiao et al. | Compression of lookup table for piecewise polynomial function evaluation | |
KR100653675B1 (ko) | 역수 연산 장치 및 방법 | |
US20240134608A1 (en) | System and method to accelerate microprocessor operations | |
JP2008112391A (ja) | フォグ効果処理方法、グラフィックス装置、グラフィックス用半導体集積回路装置及びフォグ効果処理プログラム | |
US11455145B2 (en) | Applications of and techniques for quickly computing a modulo operation by a Mersenne or a Fermat number | |
JP5305392B2 (ja) | Iqデータの二乗和ルート計算手段 | |
CN100534203C (zh) | 一种获取白平衡校正参数的方法和图像处理装置 |