TWI625635B - 三角函數計算方法以及裝置 - Google Patents

三角函數計算方法以及裝置 Download PDF

Info

Publication number
TWI625635B
TWI625635B TW104135545A TW104135545A TWI625635B TW I625635 B TWI625635 B TW I625635B TW 104135545 A TW104135545 A TW 104135545A TW 104135545 A TW104135545 A TW 104135545A TW I625635 B TWI625635 B TW I625635B
Authority
TW
Taiwan
Prior art keywords
value
unit
function
trigonometric function
remainder
Prior art date
Application number
TW104135545A
Other languages
English (en)
Other versions
TW201712570A (zh
Inventor
王偉
姜曦楠
殷誠信
張淮聲
沈恬
于冰
Original Assignee
上海兆芯集成電路有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 上海兆芯集成電路有限公司 filed Critical 上海兆芯集成電路有限公司
Publication of TW201712570A publication Critical patent/TW201712570A/zh
Application granted granted Critical
Publication of TWI625635B publication Critical patent/TWI625635B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/544Methods 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/548Trigonometric 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圖的處理步驟採用特定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。

Claims (10)

  1. 一種三角函數計算方法,包含:一運算邏輯單元當一主裝置請求計算sin(x)時,使用以下公式計算相應於一輸入參數x的一餘數r和一縮減數值x*r=frc(x*2/π)x * =π/2*frc(x*2/π);一特殊函數處理單元依據上述餘數r中的一第一數值X1作為索引,從一查找表取得一二次多項式的係數C0、C1及C2;取得上述餘數r中的一第二數值X2;以及使用以下公式計算一中介函數值f(x*):f(x*)=C0+C1* X2+C2*X2 2;以及上述運算邏輯單元計算上述縮減數值x*及上述中介函數值f(x*)的乘積作為一三角函數的一計算結果。
  2. 如申請專利範圍第1項所述的三角函數計算方法,更包含:當上述主裝置請求計算cos(x)時,使用以下公式計算相應於上述輸入參數x的上述餘數r:r=frc(x*2/π);以及r=1.0-r;以及當上述主裝置請求計算cos(x)時,使用以下公式計算上述縮減數值x *x *=π/2*r
  3. 如申請專利範圍第2項所述的三角函數計算方法,其中,上述中介函數值f(x*)視為Sin(x*)/x*或Cos(x*)/x*的結果。
  4. 如申請專利範圍第1項所述的三角函數計算方法,其中,上 述第一數值X1為7位元數值,以及上述第二數值X2為24位元數值。
  5. 如申請專利範圍第4項所述的三角函數計算方法,其中,上述查找表包含128筆紀錄,以及每一上述紀錄儲存關聯於二進位值”0b0000000”至”0b1111111”中之一者的上述二次多項式的係數C0、C1及C2
  6. 一種三角函數計算裝置,包含:一邏輯處理單元;以及一特殊函數處理單元,耦接至上述邏輯處理單元;其中,上述運算邏輯單元當一主裝置請求計算sin(x)時,使用以下公式計算相應於一輸入參數x的一餘數r和一縮減數值x*r=frc(x*2/π)x * =π/2*frc(x*2/π);上述特殊函數處理單元計算相應於上述縮減數值x*的一中介函數值f(x*);以及上述運算邏輯單元計算上述縮減數值及上述中介函數值的乘積作為一三角函數的一計算結果,其中上述特殊函數處理單元更包含:一揮發性記憶裝置,耦接於範圍縮減單元,上述儲存上述縮減數值x*;一非揮發性記憶裝置,儲存一查找表;一查找單元,耦接於上述揮發性記憶裝置以及上述非揮發性記憶裝置; 一平方計算單元,耦接至上述揮發性記憶裝置;以及一二次多項式計算單元,耦接上述查找單元、上述揮發性記憶裝置以及上述平方計算單元,其中,上述查找單元依據上述餘數r中的一第一數值X1作為索引,從上述查找表取得一二次多項式的係數C0、C1及C2;以及上述二次多項式計算單元從上述查找單元取得上述二次多項式的係數C0、C1及C2,從上述揮發性記憶裝置取得上述餘數r中的一第二數值X2,從上述平方計算單元取得上述第二數值X2的平方,以及使用以下公式計算上述中介函數值:f(x*)=C0+C1* X2+C2*X2 2
  7. 如申請專利範圍第6項所述的三角函數計算裝置,其中,上述運算邏輯單元更包含一範圍縮減單元,當上述主裝置請求計算cos(x)時,使用以下公式計算相應於上述輸入參數x的上述餘數r:r=frc(x*2/π);以及r=1.0-r;以及使用以下公式計算上述縮減數值:x *=π/2*r
  8. 如申請專利範圍第7項所述的三角函數計算裝置,其中,上述中介函數值f(x*)視為Sin(x*)/x*或Cos(x*)/x*的結果。
  9. 如申請專利範圍第6項所述的三角函數計算裝置,其中,上述第一數值X1為7位元數值,以及上述第二數值X2為24位元數值。
  10. 如申請專利範圍第9項所述的三角函數計算裝置,其中,上述查找表包含128筆紀錄,以及每一上述紀錄儲存關聯於二進位值”0b0000000”至”0b1111111”中之一者的上述二次多項式的係數C0、C1及C2
TW104135545A 2015-09-25 2015-10-29 三角函數計算方法以及裝置 TWI625635B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
??201510621326.0 2015-09-25
CN201510621326.0A CN105138305B (zh) 2015-09-25 2015-09-25 高精度的三角函数计算方法以及装置

Publications (2)

Publication Number Publication Date
TW201712570A TW201712570A (zh) 2017-04-01
TWI625635B true 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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107783756A (zh) * 2016-08-31 2018-03-09 深圳市中兴微电子技术有限公司 一种获取角度相关值的方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8190669B1 (en) * 2004-10-20 2012-05-29 Nvidia Corporation Multipurpose arithmetic functional unit
CN102262525B (zh) * 2011-08-29 2014-11-19 孙瑞玮 基于矢量运算的矢量浮点运算装置及方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
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
CN103150137A (zh) * 2013-03-01 2013-06-12 北京理工大学 一种覆盖全圆周角度的单精度浮点三角函数的实现方法
CN103699518A (zh) * 2013-12-26 2014-04-02 北京无线电计量测试研究所 一种三角函数的近似计算方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8190669B1 (en) * 2004-10-20 2012-05-29 Nvidia Corporation Multipurpose arithmetic functional unit
CN102262525B (zh) * 2011-08-29 2014-11-19 孙瑞玮 基于矢量运算的矢量浮点运算装置及方法

Also Published As

Publication number Publication date
CN105138305B (zh) 2018-11-27
US10353672B2 (en) 2019-07-16
TW201712570A (zh) 2017-04-01
EP3147773B1 (en) 2017-12-06
CN105138305A (zh) 2015-12-09
EP3147773A1 (en) 2017-03-29
US20170090871A1 (en) 2017-03-30

Similar Documents

Publication Publication Date Title
JP2017059229A (ja) 算術演算を行う方法及び処理装置
US9851947B2 (en) Arithmetic processing method and arithmetic processor having improved fixed-point error
Low et al. A memory-efficient tables-and-additions method for accurate computation of elementary functions
TWI557641B (zh) 除法運算裝置及其運算方法
US10019027B2 (en) Direct digital synthesizing method and direct digital synthesizer
TWI625635B (zh) 三角函數計算方法以及裝置
JP2006227939A (ja) 演算装置
TW201523183A (zh) 旋轉台精度補償系統及方法
KR102503498B1 (ko) 수학적 함수를 연산하는 시스템 및 방법
CN110633447B (zh) 基于fpga的球面距离定点计算方法及其计算装置
JP2013025467A (ja) 対数関数の近似演算回路
CN114268608B (zh) 一种地址段检索方法、装置、电子设备及存储介质
US9563402B2 (en) Method and apparatus for additive range reduction
KR102281047B1 (ko) 4개의 입력 내적 회로를 사용하는 삼각 함수 계산
JP2009089343A (ja) 角度計算方法及び関連回路
JP5266651B2 (ja) ローカル分岐履歴を用いた分岐予測装置及び分岐予測方法
JP2020524333A (ja) 範囲検査
JP4546557B2 (ja) 演算装置
JP6973677B1 (ja) 逆数算出方法、装置、およびプログラム
JP5305392B2 (ja) Iqデータの二乗和ルート計算手段
Hsiao et al. Compression of lookup table for piecewise polynomial function evaluation
KR100653675B1 (ko) 역수 연산 장치 및 방법
US20240134608A1 (en) System and method to accelerate microprocessor operations
US20120102081A1 (en) Low-latency arc-tangent calculation structure and calculation method thereof
JP2022180257A (ja) 内積計算装置、内積計算方法、および、内積計算プログラム