TWI484352B - 使用級數展開之超越及非線性元件 - Google Patents

使用級數展開之超越及非線性元件 Download PDF

Info

Publication number
TWI484352B
TWI484352B TW102111573A TW102111573A TWI484352B TW I484352 B TWI484352 B TW I484352B TW 102111573 A TW102111573 A TW 102111573A TW 102111573 A TW102111573 A TW 102111573A TW I484352 B TWI484352 B TW I484352B
Authority
TW
Taiwan
Prior art keywords
value
function
circuit
approximation
series
Prior art date
Application number
TW102111573A
Other languages
English (en)
Other versions
TW201346594A (zh
Inventor
Vaughn T Arnold
Brijesh Tripathi
Albert Kuo
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of TW201346594A publication Critical patent/TW201346594A/zh
Application granted granted Critical
Publication of TWI484352B publication Critical patent/TWI484352B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • G06F1/035Reduction of table size
    • G06F1/0356Reduction of table size by using two or more smaller tables, e.g. addressed by parts of the argument
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • G06F1/0307Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2101/00Indexing scheme relating to the type of digital function generated
    • G06F2101/08Powers or roots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2101/00Indexing scheme relating to the type of digital function generated
    • G06F2101/12Reciprocal functions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)

Description

使用級數展開之超越及非線性元件
本發明係關於積體電路之領域,且更特定而言,係關於在積體電路中實施超越及特定非線性函數。
存在被稱作「超越」函數之一類數學函數。超越函數為無法以代數運算之有限序列進行表達的函數。實例包括指數函數、對數函數及三角函數。
超越函數在積體電路中具有多種用途。舉例而言,各種超越函數常常用於諸如像素之視訊值的操縱中。舉例而言,伽瑪/反伽瑪(Gamma/Degamma)運算包括超越函數。因此,有必要在積體電路中實施超越函數。
因為超越函數不具有有限代數表示,所以該等函數無法直接以硬體予以實施。一種用以近似一超越函數之技術使用一查找表(LUT),該LUT儲存針對各種預選點處之給定超越函數之結果。自LUT讀取最接近於至函數之輸入運算元的兩個點,且使用該兩個點之間的線性內插以近似針對該輸入運算元之答案。為了達成可接受程度之準確度,必須使LUT極大。特定其他非線性函數可相似地需要大LUT以提供可接受程度之準確度(例如,互反函數1/x、平方根,等等)。
在一實施例中,硬體實施一超越函數或其他非線性函數係基於該函數之一級數展開。舉例而言,可使用一泰勒(Taylor)級數展開作為基礎。可使用且可以硬體來實施泰勒級數之初始項中之一或多者。在一些實施例中,可使用對該泰勒級數展開之修改以增加結果之準確度。
在一實施例中,針對函數運算元之多種位元寬度對於在一給定實施中之使用可為可接受的。提供一種用於建置供積體電路設計中使用之級數近似元件之一庫的方法,其合成可接受之實施且測試結果之準確度。可選擇產生一所要程度之準確度之一最小(在面積方面)實施作為庫元素(library element)。
10‧‧‧積體電路
12A‧‧‧區塊
12B‧‧‧區塊
12C‧‧‧區塊
12D‧‧‧區塊
12E‧‧‧區塊
12F‧‧‧區塊
12G‧‧‧區塊
12H‧‧‧區塊
12I‧‧‧區塊
14A‧‧‧元件
14B‧‧‧元件
14C‧‧‧元件
16‧‧‧級數近似元件
20‧‧‧log(x)元件
22‧‧‧2X 元件
24‧‧‧固定至浮動轉換元件
26‧‧‧乘法器元件/乘法器
28‧‧‧捨位/箝位元件
30‧‧‧浮動至固定轉換元件
32‧‧‧加法器元件
34‧‧‧元件
36‧‧‧多工器元件
38‧‧‧乘法器元件
40‧‧‧捨位/箝位元件
42‧‧‧比較器元件
50‧‧‧指數計算單元
52‧‧‧尾數計算單元
54‧‧‧查找表(LUT)
56‧‧‧加法器/乘加電路
58‧‧‧乘法器/乘加電路
60‧‧‧補數三角電路
62‧‧‧捨位查找表(LUT)
64‧‧‧正規化電路
66‧‧‧加法器
70‧‧‧f"(a)查找表(LUT)
72‧‧‧乘法器
74‧‧‧平方電路
80‧‧‧實線曲線/函數曲線
82‧‧‧虛線
84‧‧‧虛線
86‧‧‧線
88‧‧‧虛線
90‧‧‧虛線
92‧‧‧虛線
94‧‧‧虛線
96‧‧‧虛線
98‧‧‧虛線/中值線
100‧‧‧點
102‧‧‧偽中值線
104‧‧‧線
110‧‧‧曲線
112‧‧‧曲線
120‧‧‧合成工具
122‧‧‧級數近似元件產生器
124‧‧‧級數近似元件暫存器傳送層級(RTL)
126‧‧‧區塊暫存器傳送層級(RTL)
128‧‧‧級數近似元件可執行模型
200‧‧‧電腦可存取儲存媒體
以下詳細描述參看隨附圖式,現在簡要地描述該等圖式。
圖1為積體電路之一實施例的方塊圖。
圖2為包括級數近似元件之區塊之一實施例的方塊圖。
圖3為說明泰勒級數展開之公式。
圖4為基於泰勒級數展開之初始兩項而實施的超越或其他非線性元件之一實施例的方塊圖。
圖5為說明針對一實施例的泰勒級數展開之x-a項之產生的方塊圖。
圖6為基於泰勒級數展開之初始三項而實施的超越或其他非線性元件之一實施例的方塊圖。
圖7為圍繞區間之中心之點的泰勒級數展開之一實施例的圖解。
圖8為圍繞經選擇以在區間之每一邊界處提供相等誤差之點的泰勒級數展開之一實施例的圖解。
圖9為一階導數項之線性內插近似之一實施例的圖解。
圖10為合併線性內插近似之結果與泰勒級數展開之經修改泰勒級數展開的圖解。
圖11為使用額外區間之經修改泰勒級數之一實施例的圖解。
圖12為使用級數之三個初始項的泰勒級數展開之一實施例的圖解。
圖13為基於級數之三個初始項的經修改泰勒級數展開之另一實施例的圖解。
圖14為對三項泰勒級數之VFit近似的圖解。
圖15為電腦可存取儲存媒體之一實施例的方塊圖。
圖16為說明建置超越函數實施之庫之一實施例的流程圖。
雖然本發明容許各種修改及替代形式,但本發明之特定實施例係在該等圖式中作為實例予以展示,且將在本文中予以詳細地描述。然而,應理解,該等圖式及其詳細描述並不意欲將本發明限於所揭示之特定形式,而相反地,本發明應涵蓋屬於如由附加申請專利範圍界定的本發明之精神及範疇的所有修改、等效者及替代例。本文所使用之標題係僅出於組織目的且並不有意要用以限制該描述之範疇。如貫穿本申請案所使用,詞語「可」係在准許意義(亦即,意謂有可能)而非強制意義(亦即,意謂必須)上得以使用。相似地,詞語「包括」意謂包括但不限於。
各種單元、電路或其他元件可被描述為「經組態以」執行一或若干任務。在此等內容背景中,「經組態以」為對結構之廣泛敍述,其通常意謂「具有在操作期間執行該或該等任務之電路」。因而,即使當該單元/電路/元件當前未接通時,該單元/電路/元件亦可經組態以執行該任務。一般而言,形成對應於「經組態以」之結構之電路可包括硬體電路及/或儲存可執行以實施操作之程式指令之記憶體。該記憶體可包括:揮發性記憶體,諸如,靜態或動態隨機存取記憶體; 及/或非揮發性記憶體,諸如,光碟或磁碟儲存器、快閃記憶體、可程式化唯讀記憶體,等等。相似地,出於描述方便起見,各種單元/電路/元件可被描述為執行一或若干任務。此等描述應被解釋為包括片語「經組態以」。敍述經組態以執行一或多個任務之單元/電路/元件明確地並不意欲援引35 U.S.C.§112第六段針對彼單元/電路/元件之解釋。
現在轉至圖1,展示積體電路10之方塊圖。在所說明實施例中,積體電路10包括多個區塊12A至12H。區塊12C係以分解圖予以展示,且包括多種元件14A至14C及級數近似元件16。在各種實施例中,一區塊可包括一個以上級數近似元件16,且一個以上區塊可包括若干級數近似元件。
區塊12A至12H可經組態以執行積體電路10經設計所針對之各種操作。可藉由基於積體電路10之定義將設計分割成邏輯子區段來判定區塊12A至12H。舉例而言,積體電路10可為系統單晶片(SoC)。區塊12A至12H可包括處理器、周邊裝置、通信網狀架構電路(communication fabric circuit)、記憶體控制器,等等。區塊可具有多個階層層級(亦即,區塊可含有其他區塊)。舉例而言,處理器區塊可包括用於提取及解碼、快取記憶體、指令發出、執行單元等等之區塊。區塊可包括除了其他區塊以外之元件,或在該等區塊為階層中之最低層級時可僅包括元件。雖然圖1中未圖示,但區塊12A至12H通常可視需要而互連以實施積體電路10之總操作。
區塊之元件14A至14C可為各種電路組件。舉例而言,元件可為諸如加法器、乘法器、多工器、移位器、旋轉器、暫存器、記憶體等等之資料流電路的執行個體化。元件14A至14C亦可為對應於以區塊之暫存器傳送層級(register-transfer level,RTL)描述而撰寫之表達的邏 輯電路。通常,RTL描述可以諸如Verilog或VHDL之硬體設計語言予以撰寫,且可在暫存狀態及對彼狀態之邏輯運算方面描述邏輯電路。暫存狀態可儲存於任何時控儲存裝置(例如,暫存器、鎖存器、正反器,等等)中。可使用合成工具以讀取RTL描述且產生對應於RTL描述以供在積體電路10中實施之邏輯電路。在其他狀況下,自訂電路可由設計者開發且可經由示意性擷取工具予以擷取。自訂電路亦可為元件14A至14C。
級數近似元件16可為實施超越函數或其他非線性函數之元件。並非所有非線性函數皆被實施為級數近似元件,但一些此等函數可受益於級數近似實施(例如,互反函數1/x、平方根,等等)。更特定而言,在一實施例中,超越/非線性函數可由自超越/非線性函數之級數展開導出之電路實施。該電路可自該展開之選定項加以導出,及/或可自該級數展開之原始項加以修改。下文更詳細地論述各種實施例。在以下論述中之一些狀況下,可使用超越函數作為一實例,但通常,可將級數展開近似用於任何非線性函數。在其他狀況下,使用諸如互反函數之非線性函數作為一實例。因此,級數近似元件通常可為使用超越或非線性函數之級數展開表示之項或自該等級數展開項加以修改(例如,針對來自該等級數展開項之縮減誤差而最佳化)之項來近似該函數的元件。該近似函數可被稱作級數近似函數(series-approximated function)。
元件14A至14C及16可耦合在一起以實現區塊12C之操作。因此,非級數近似元件可產生至級數近似元件之輸入,且反之亦然。另外,來自其他區塊之輸入及至其他區塊之輸出可由超越元件及非級數近似元件兩者產生。
圖2為可實施於一實施例中之區塊12I之更特定實例。圖2之實施例可為對像素值執行伽瑪/反伽瑪校正之伽瑪/反伽瑪校正區塊。伽瑪 校正為應用於像素值以補償人類視覺屬性以便相對於人類如何感知光及色彩來改良像素位元之使用的非線性運算。伽瑪校正藉由使輸入像素值乘某次方(通常被稱作希臘字母「伽瑪」,因此為函數名稱)來產生輸出像素值,該次方通常對於伽瑪校正介於0與1之間且對於反伽瑪運算大於1。接近於0(在像素值方面)的伽瑪函數之部分為略微線性,且隨著像素值增加而變得愈加非線性。
圖2之實施例中之級數近似元件可包括log(x)元件20及2X 元件22。log(x)元件20可實施對數底數2或log2 。2X 元件22亦可被稱作反對數元件,此係因為使2乘x次方為x之log2 的逆算。然而,應注意,在其他實施例中可使用任何底數,只要用於對數函數及反對數函數兩者之底數匹配即可。另一底數之一實施可使用底數2對數及反對數函數,且可使為x之值乘以log2 (底數)以得出正確答案。舉例而言,為e之底數在一些實施中係所要的且可用log2 (e)項予以實施。
在所說明實施例中,輸入像素值為整數,且級數近似元件對浮點值進行運算。因此,包括固定至浮動轉換元件24以轉換像素值。
如上文所提及,藉由使像素值乘伽瑪次方來執行伽瑪校正。藉由採取像素值之對數,「乘某次方」計算變為乘法。因此,log(x)元件20之輸出可在乘法器元件26中乘以輸入伽瑪值。可將結果捨位及箝位至最大值以防止溢位(捨位/箝位元件28)。將結果提供至2X 元件22。藉由採取來自乘法器26之乘積的反對數,可產生自乘值伽瑪之輸入像素。可將結果自浮點轉換回至固定點(浮動至固定轉換元件30)。在此實施例中,將位移(B)加至伽瑪校正像素,且可提供加法器元件32以加上該位移。其他實施例可不加上位移且可消除加法器元件32。結果可被捨位及箝位(元件34)且提供至多工器元件36。
應注意,2-X 函數及2X 函數可為分離實施,此係因為該等函數之泰勒級數值可不同。在一些實施例中,可實施2-X 函數,且可使用2-X 來實施2X 。舉例而言,2X 在數學上等於21 、2X 與2-1 之乘積。使2X 與2-1 相乘等於2X-1 ,其亦可藉由在指數中析出因數-1而被寫為2-(1-X) 。因此,2X 亦在數學上等於21 乘以2-(1-X) 。藉由使用1-X作為輸入之2-X 函數且使結果乘以2(21 ),可實現2X 函數。可將乘以2實施為一移位。視需要,亦可使用為2之其他次方。
在此實施例中,輸入像素範圍之一部分係藉由線性運算近似。線性路徑被展示為乘法器元件38及捨位/箝位元件40。乘法器元件38可經組態以使輸入像素值乘以因數M,其可由捨位/箝位元件40捨位/箝位。在此實施例中,結果為至多工器元件36之其他輸入。比較器元件42可比較像素值與用於使用線性路徑之臨限值。該臨限值被展示為至比較器元件42之值Z輸入。若像素值小於或等於Z,則可通過多工器元件36選擇線性路徑。否則,可通過多工器元件36選擇非線性路徑(包括元件20至34)。其他實施例可不實施線性路徑,而是將非線性路徑用於全函數範圍。在此實施例中,可消除組件36、38、40及42。
如先前所提及,可使用自對應於級數近似元件之級數近似函數之無限級數展開導出的硬體來實施級數近似元件之一些實施例。無限級數展開將非代數超越函數或非線性函數轉換成代數。可藉由實施無限級數之初始幾項來獲得超越/非線性函數之相當精確近似。另外,在一些實施例中,可藉由修改初始級數展開實施來改良級數近似元件之誤差屬性,此將在下文予以更詳細地論述。
在一實施例中,使用泰勒級數展開作為級數近似元件之基礎。圖3中展示用於泰勒級數展開之公式。通常,泰勒級數展開(或更簡要而言,「泰勒級數」)涉及函數之值及其在預選點(圖3中之「a」)處之無限數。可使用一個以上預選點,在此狀況下,可選擇最接近於給定輸入值之預選點且可將其函數及導數值用於彼給定輸入值。給定預選點被使用之輸入值集合可被稱作「區間」,且該給定預選點可被稱作 對應於該區間。若使用僅一個預選點,則區間可為x之整個範圍。
通常,針對輸入x之函數(圖3中之「f(x)」)之值為在a處該函數之值(「f(a)」)與乘積的總和,該等乘積包括在a處之每一導數(「f'(a)」、「f"(a)」,等等),及x與a之間的差。更特定而言,在a處之每一導數可除以對應於該導數之階的階乘(例如,一階導數除以1階乘,二階導數除以2階乘,三階導數除以3階乘,等等)。接著結果可乘以x與a之間的差乘導數階次方,對於一階導數為「x-a」,對於二階導數為「(x-a)2 」,對於三階導數為「(x-a)3 」等等。
若級數近似元件係用浮點運算元予以實施,則正規數之尾數被知道介於正好1與幾乎2之間。若a經選擇為接近於尾數範圍之中間的某數,則x-a之範圍為約-0.5至+0.5。使x-a項乘每額外次方導致愈來愈小之數,從而縮減對應項在泰勒級數中之效應。當遍及尾數範圍使用a之一個以上值時,高階導數之縮減效應可甚至更明顯。因此,下文使用針對超越/非線性函數之泰勒級數之浮點實施作為一實例。可將泰勒級數用於尾數產生,且可並行地處置指數產生。
圖4為說明基於泰勒級數之浮點實施的級數近似元件16之一實施例的方塊圖。圖4中之實施例實施泰勒級數之初始兩項(f(a)及其一階導數f'(a))。級數近似元件16可包括指數計算單元50及尾數計算單元52。指數計算單元50經耦合以接收輸入值之指數部分且經組態以產生輸出指數。若輸出尾數需要正規化,則可調整輸出指數。
在所說明實施例中,尾數計算單元52包括針對該實施中之每一選定a之f(a)及f'(a)值的査找表(LUT)(參考數字54)。該表中之預選點(「a」)的數目可隨不同實施例而變化。每一預選點可與一尾數值區間相關聯。因此,尾數之最高有效位元(MSB)可定義哪一區間包括輸入尾數,且此等MSB可充當至LUT 54之輸入。LUT 54可經組態以自回應於輸入尾數之MSB而選擇之輸入項輸出f(a)及f'(a)之值。
來自LUT 54之f(a)輸出可經耦合作為至加法器56之輸入,且f'(a)輸出可經耦合作為至乘法器58之輸入。加法器56及乘法器58可被共同地稱作乘加電路(multiply-add circuitry)或乘加單元(multiply-add unit)。乘法器58之輸出可經耦合作為至加法器56之輸入。乘法器58可經耦合以自LUT 54接收f'(a)值以及接收基於輸入尾數及a之x-a項。
更特定而言,在一實施例中,若a經選擇作為區間之中心,則可如圖5所示來計算x-a。圖5說明x(輸入值)之尾數部分及對應於x的a之值(亦即,針對含有x之區間的a之值)。兩個尾數始於在二進位小數點左邊的默許之1。另外,兩個尾數具有定義區間之相同MSB尾數位元集合。此等位元在圖5中被說明為位址位元a6:a0,此係因為該等位元亦可用作至LUT 54之位址位元。在該等位址位元之後的MSB在圖5中被展示為x之值中之正負號位元(「s」)。此正負號位元可被稱作區間正負號位元。若s位元為1,則x之值大於或等於a且x-a值為正值。若s位元為0,則x之值小於a且x-a值為負值。
如圖5所說明,若在區間之中心處選擇a,則a之最低有效位元(在區間正負號位元下方)為0。因此,若x大於a,則x-a之值僅僅為x之最低有效位元(例如,圖5中之d6:d0)。若x-a之值為負值,則x-a為x之最低有效位元的1補數。
對於基於圖5之實施例,補數三角電路(complement delta circuit)60可經組態以產生x-a之值。若x-a為正值(區間正負號位元為1),則補數三角電路60可經組態以傳遞x之最低有效位元作為x-a。若x-a為負值,則補數三角電路60可經組態以傳輸x之最低有效位元的1補數作為x-a。更一般化地,在其他實施例中,補數三角電路60可由經組態以自x減去a之加法器替換。補數三角電路60之輸出可經耦合作為至乘法器58之輸入。
圖4之實施例可視情況包括捨位LUT 62。LUT 54及乘加電路 56/58產生針對每一輸入值x的超越/非線性函數之近似。因此,在至少一些結果中可存在某一不準確度。更特定而言,該等結果可不滿足諸如電機電子工程師學會(IEEE)標準754及後續標準之浮點標準的準確度要求。IEEE標準要求結果相比於完全精確結果準確至在+/-1/2最小單位(unit in the last place,ULP)內,且亦要求捨位「統計上非偏誤」(亦即,用於捨位之相持(ties)的一半被升值捨位且另一半被降值捨位)。在一實施例中,級數近似元件16可在不包括捨位LUT 62的情況下產生準確至在一個全ULP內之結果。捨位LUT 62可經程式化以執行正確捨位,包括滿足統計上非偏誤要求。
在一些狀況下,不滿足IEEE標準準確度之結果可為可接受的。舉例而言,級數近似函數可用於圖形操作中,且某一量之不準確度可為可接受的,此係因為視覺影像仍可相當準確的且視覺合意的。然而,若需要更準確之結果,則可包括捨位LUT 62。捨位LUT 62可包括針對不產生IEEE準確結果之每一輸入尾數值的捨位值,且可產生將結果捨位至IEEE準確結果之捨位因數。在一實施例中,LUT 62可為兩個表:一個表列出產生低一個ULP之結果的輸入尾數,且另一表列出產生高一個ULP之結果的輸入尾數(相比於IEEE正確結果)。若在該表中找到輸入尾數,則該等表可產生1,且輸出可用以控制一多工,該多工選擇為-1(高一個ULP)、+1(低一個ULP)或預設0(若任一表皆不含有輸入尾數)之捨位。
在下文更詳細地所描述之一實施例中,可針對級數近似元件16產生一可執行模型。該可執行模型可以諸如C、C++等等之高階程式設計語言予以表達。可執行模型可被編譯成可執行二進位碼且執行於電腦中之處理器上。或者,可執行模型可以可執行二進位碼或低階處理器指令予以表達。更進一步,可將級數近似元件16之RTL描述模擬為一可執行模型。可針對每一可能輸入尾數執行該可執行模型,且可 記錄將結果捨位至在+/-1/2 ULP內之捨位值以填入捨位LUT 62。捨位LUT 62之輸出可經耦合作為至加法器56之輸入,且加法器輸出可為IEEE正確結果。在不包括捨位LUT 62之實施例中,加法器56可為雙輸入加法器。
有可能的是,結果將不為正常浮點數(亦即,尾數並非在二進位小數點左邊的單一之二進位1及在二進位小數點右邊的剩餘數位)。可提供正規化電路64以正規化尾數。加法器66可經組態以藉由加上由正規化電路64施加之移位量來調整由指數計算單元50產生之指數。
可視需要選擇尾數寬度以提供來自級數近似函數(或來自其中級數近似函數為一分量的總函數)之結果的所要程度之準確度。舉例而言,若被運算之值為像素,則略微大於所要色深之尾數寬度可為可接受的。通常,尾數愈寬,則來自級數近似函數之結果相比於精確結果可愈準確(因為誤差出現於結果之LSB中)。然而,較寬尾數通常亦導致較寬之乘法器58及加法器56。特別是對於乘法器58,增加寬度可在級數近似元件16於積體電路10中之實現中導致增加面積。若將較窄尾數用於給定實施,則可需要定義較多區間以縮減最大誤差。較多區間可增加LUT 54之大小,但較窄尾數可導致大小縮減之乘法器/加法器56。因此,滿足針對級數近似元件16之準確度目標之多種設計變化可為可能的。在一實施例中,可使用用於自動地選擇用於級數近似元件16之參數之方法。下文提供關於該方法之額外細節。
圖6為級數近似元件16之另一實施例的方塊圖。圖6之實施例可實施泰勒級數之初始三項(對應於f(a)、f'(a)及f"(a))。相似於圖4之實施例,圖6之實施例可實施指數計算單元50、尾數計算單元52及加法器66以調整用於正規化之指數。尾數計算單元52可包括以相似於圖4之實施例之方式而耦合的LUT 54、乘法器58、加法器56(具有三個或四個輸入,而非兩個或三個輸入)、正規化電路64、補數三角電路60 及(視情況)捨位LUT 62。
另外,圖6之實施例可包括f'(a)LUT 70、乘法器72及平方電路74。平方電路74可經耦合以接收x-a項且可經組態以對x-a項進行平方,從而產生(x-a)2 項作為至乘法器72之輸入。通常,平方電路74可為乘法器。然而,該乘法器可自諸如乘法器58及72之全一般用途乘法器簡化而得,此係因為:眾所周知,相同值經輸入作為該乘法器之兩個運算元。
乘法器72之其他輸入可為來自LUT 70之f"(a)項。相似於LUT 54,LUT 70可由尾數之MSB加索引。LUT 70可與LUT 54具有相同數目個輸入項,且可視需要而實體上包括於同一表中。LUT 70之輸出可為f"(a)項除以2階乘(或簡單地為2)以匹配於如圖3所示之泰勒級數之第三項。因此,乘法器72之輸出可為該泰勒級數之第三項。
應注意,圖4及圖6所示之級數近似元件16之實施例為元件16之邏輯表示。可產生描述如圖所示之實施例的元件16之RTL描述,且可使用一合成工具來合成該RTL描述以產生一實際實施。在各種實施例中,該合成工具可產生邏輯設計之任何布林(Boolean)等效者。
在各種實施例中可支援多種級數近似函數。舉例而言,一實施例可支援以下各者中之一或多者:log(x)、antilog(x)(或2x )、1/x、互反平方根、平方根,及2-x 。視需要,其他實施例可支援以上函數及其他函數之任何子集,或以上函數及其他函數之全部。
對於每一受支援函數,可開發LUT表54及70以基於泰勒級數近似來計算尾數。可直接由指數計算單元50計算指數。舉例而言,對於1/x,指數為輸入指數減1之負值,惟為正好1.0之尾數的狀況除外,在該狀況下,指數為輸入指數之負值(亦即,無減1因數)。互反平方根具有為輸入指數除以2、減1(或在尾數為正好1.0時,無減1因數)之負值的指數。
接下來轉至圖7至圖14,針對自泰勒級數導出之實施例以圖形形式說明級數近似元件16之各種實施例。使用函數1/x作為一實例。在每一圖中,水平軸線為至函數之x輸入之尾數部分,且垂直軸線為f(x)之值。函數被展示為實線曲線80。在每一圖中,來自元件16之對應結果被展示為一或若干虛線。
現在轉至圖7,展示說明使用泰勒級數之初始兩項及針對尾數之單一區間的該級數之圖解。在此實例中,a經選擇作為區間之中點(區間/2)。因為在此實例中展示一個區間,所以a為1.5。虛線82說明針對此函數之兩項泰勒級數之結果。在該圖解中可看出,誤差在a處最小(誤差為0),且隨著與a相隔之距離增加而增加。包括較多區間可縮減誤差。
在此實例中之最大誤差位於區間之端點處(例如,對於一個區間之狀況,尾數為1.0或幾乎2.0)。對於許多函數,誤差在區間之一個末端處相比於在區間之另一末端處可較大,且因此,最大誤差可為出現於區間之一個末端處的誤差。在函數1/x之實例中,針對未經修改兩項泰勒級數近似的在1.0處之誤差為在x=1.0處之約0.111及在x=2.0處之約0.0556。然而,在區間之中心處選擇a可准許x-a產生僅僅為補數三角電路60。
在另一實施例中,可實施對兩項泰勒級數之最佳化,使得在區間之每一末端處的誤差相等(或大致相等,在級數近似元件16之誤差範圍內)。一種用以在每一末端處提供大致相等誤差之機制係將f'(a)項調整為函數遍及區間之平均斜率(亦即,平均一階導數f'(a))。在函數1/x之狀況下,此斜率可為-0.5,且a可為2之平方根(例如,約1.414)。最大誤差大小可縮減,此係因為最大誤差可在區間之一個末端處縮減,同時在另一末端(其在圖7之實施例中不具有最大誤差)處增加。對於函數1/x,在圖8中用虛線84以圖形方式說明此實施例。每一末端 上之最大誤差可為約0.086。為了繼續使用在區間之中點處之a,可在具有平均斜率之最佳化線上重新評估f(a)。
應注意,在其他實施例中可不同地選擇a。在此等實施例中,可代替補數三角電路60而使用一全加器(full adder),從而增加x-a產生電路之大小。
圖9說明根據一實施例之線性內插近似之使用。該線性內插近似可被定義為用一線(例如,圖9中之線86)來連接級數近似函數之區間端點。因此,對於一個區間之實例,最小誤差(0)位於端點x=1.0及x=2.0處,且最大誤差可出現於中心附近。對於圖9之1/x實例,最大誤差可出現於x=2之平方根處,且可為約0.086。若實施線性內插近似,則對於每一區間,線86之斜率可為來自LUT 54之f'(a)輸出。
或者,可使用f(a)之儲存值以計算針對一區間之斜率f'(a)。在此實施例中,可針對每一區間之末端儲存f(a)項,且可針對一給定區間自LUT 54讀取兩個連續項。在一實施例中,LUT 54可被劃分成偶數部分及奇數部分以避免將第二讀取埠添加至LUT 54。可自偶數部分讀取一個f(a)項且自奇數部分讀取另一f(a)項。可使用加法器以自該兩個f(a)項計算斜率(f'(a))項以供乘法器58中使用。可自區間之端點(例如,自較接近於給定輸入值x之端點)而非自中心計算x-a項。可添加多工器以選擇使用端點值中哪一者作為f(a)。
圖10說明1/x函數之近似之又一實施例。在此實施例中,兩項泰勒級數近似(例如,上文關於圖7或圖8所描述之任一實施例)與圖9之線性內插近似的組合。圖10之實施例可在本文中被稱作「中值擬合(median fit)」。可藉由求泰勒級數近似中之一者與線性內插近似的平均值來產生中值擬合。更特定而言,在一實施例中,該平均值可為幾何平均值。針對圖10中的一個區間之實例來說明該求平均值之結果。若使用多個區間,則可個別地求該等區間的平均值以產生針對該等區 間之LUT值。在圖10中藉由虛線88說明所得近似。
對於中值擬合,最大誤差可出現於三個點處,但可小於先前實施例之最大誤差。具體而言,最大誤差可位於端點處且接近於中間(例如,在如圖10所說明之1/x的狀況下,位於x=2之平方根處)。在此實例中,最大誤差可為約0.043。
圖11為說明當使用4個區間時之近似的圖解。在圖11中藉由在x=1.25、1.5、1.75及2.0處之粗垂直點線而對該等區間進行定界。在每一區間內,可使用圖7至圖10之實施例中任一者。因此,存在說明每一區間內之近似的4條虛線90、92、94及96。在比較圖11與圖7至圖10的情況下清楚的是,可經由使用額外區間而顯著地縮減誤差。因此,可在每一區間處之近似的複雜性與所使用之區間的數目之間達到平衡。
圖12為針對一實施例的使用單一區間之三項泰勒級數近似之實例。將二階導數項加至該近似通常可具有使該近似在a之兩個側上「彎曲」的效應,從而使該近似在兩個側上較接近於曲線。基於初始三項之近似在圖12中被說明為曲線110。在圖12中可看出,三項近似中之誤差在端點處最大。
可產生改良型三項泰勒級數近似。舉例而言,在圖13中用曲線112來說明一改良。此近似在區間之端點處將誤差縮減至大約0。在一實施例中,圖13之近似可涉及使用遍及區間之平均斜率作為f'(a)項(相似於圖8之兩項最佳化)。在假定f"(a)項等於0的情況下,可在端點中之一者(例如,1.0端點)處計算誤差。接著,可將該誤差設定為等於泰勒級數之第三項且可求解f"(a)以產生改良型三項泰勒級數近似。在一實施例中,f"(a)項可為0.66667,且誤差可縮減至約-0.01336(最小值)及0.009(最大值)。對於1/x實例,已藉由試誤法而判定具有為+/- 0.00736之相等之最小及最大誤差的最佳化解。該最佳化解包括為 0.66422之f(a)、為-0.48531之f(a),及為0.68612之f'(a)。
針對一般化函數(及多個區間)找到最佳化三項泰勒級數近似可為計算密集型試誤任務。一種用於近似圖12所示之三項泰勒級數之方法係執行如本文所描述之「Vfit」。該Vfit使用與兩項泰勒級數相同之硬體連同一額外加法器以自儲存於LUT 54中之f'(a)項及儲存於LUT 54中之f"(a)項產生正確f'(a)項。具體而言,在較陡子區間中,使用來自LUT 54之f"(a)項以使來自LUT 54之f(a)項較陡,且使用來自LUT 54之f'(a)項以使來自LUT 54之f'(a)項較淺。針對圖14中之一實施例來說明Vfit。在Vfit程序中,可將區間視為兩個子區間,一個子區間在該區間之一個端點處開始且在a處結束,另一子區間在a處開始且在該區間之另一端點處結束。圖14中展示Vfit之簡化版本,其在區間之中心處選擇a。可對一個子區間執行中值擬合(例如,圖14中之虛線98)。更特定而言,可對具有較大二階導數之子區間執行中值擬合。針對該子區間之中值擬合終止於並不位於函數曲線80上的在中心(在a處)之端點處。該端點在圖14中被說明為點100。對於另一子區間,可建構偽中值擬合線(圖14中之線102)。在一實施例中,可藉由以下方式來建構線102:(1)在曲線80上找到點f(t),其中f(t)為穿過點100且進行至區間邊界之線將正切於曲線80的點;及(2)建構偽中值擬合線,其具有在t處的曲線80與該線之間的垂直距離等於在區間之末端處的該線與曲線80之間的垂直距離的屬性。最後,針對該區間之f'(a)可為穿過點100且在正負號及量值兩者方面與區間邊緣處之中值線98及偽中值線102相等地相隔之線的斜率(例如,圖14中之線104)。
可如下基於圖14所示之近似來填滿LUT 54及70。f(a)值可為點100;f'(a)值可為線104之斜率,且f"(a)值可為可加至f'(a)值以針對子區間中每一者產生圖14中之線98及102之斜率的正值或負值。在一實施例中,針對1/x之實例的結果可為f(a)=0.64983(在a=1.5處)、f'(a)=- 0.48583及f"(a)=0.18084(使得在較陡子區間中f'(x)=-0.66667且在較淺子區間中f'(x)=-0.30500)。
在另一實施例中,可使用更最佳化之Vfit,其中針對每一子區間產生一中值擬合線,且選擇a作為兩個中值擬合線交叉的點。接著,計算f'(a)作為穿過該交叉點且在正負號及量值兩者方面與針對區間邊緣處之每一子區間之中值線相等地相隔之線的斜率。在一實施例中,針對1/x實例之結果可為a=1.37258、f(a)=0.71783、f'(a)=-0.54642及f"(a)=0.18214(使得在較陡子區間中f'(a)=-0.72855且在較淺子區間中f'(a)=-0.36428)。
現在轉至圖15,展示電腦可存取儲存媒體200之一實施例的方塊圖。一般而言,電腦可存取儲存媒體可包括可在使用期間由電腦存取以將指令及/或資料提供至電腦之任何儲存媒體。舉例而言,電腦可存取儲存媒體可包括諸如磁性媒體或光學媒體之儲存媒體,例如,磁碟(固定式或抽取式)、磁帶、CD-ROM、DVD-ROM、CD-R、CD-RW、DVD-R、DVD-RW或Blu-Ray。儲存媒體可進一步包括揮發性或非揮發性記憶體媒體,諸如,RAM(例如,同步動態RAM(SDRAM)、Rambus DRAM(RDRAM)、靜態RAM(SRAM),等等)、ROM或Flash記憶體。儲存媒體可實體上包括於電腦內,該等儲存媒體將指令/資料提供至該電腦。或者,儲存媒體可連接至電腦。舉例而言,儲存媒體可經由網路或無線鏈路而連接至電腦,諸如,網路附接式儲存器。儲存媒體可經由諸如通用串列匯流排(USB)之周邊介面而連接。
圖15中之電腦可存取儲存媒體200可儲存合成工具120、級數近似元件產生器122、級數近似元件RTL 124、區塊RTL 126及/或級數近似元件可執行模型128中之一或多者。合成工具120可包括在執行於電腦上時實施此處針對該合成工具所描述之操作之指令。在一實施例中,合成工具120可為市售工具,諸如,可購自Synopsys Inc.、 Cadence Design Systems,Inc.等等之工具。相似地,級數近似元件產生器122可包括在執行於電腦上時實施本文針對該級數近似元件產生器所描述之操作之指令。級數近似元件RTL 124可包括各種級數近似元件實施例之RTL描述。區塊RTL 126可包括可執行個體化級數近似元件、非級數近似元件及/或其他區塊之各種區塊之RTL描述。級數近似元件可執行模型128可包括對應於級數近似元件RTL 124之可執行模型。載體媒體可包括電腦可存取儲存媒體以及諸如有線或無線傳輸之傳輸媒體。
提供用於開發級數近似元件之庫之方法以輔助設計者有效率地以硬體實施級數近似函數。合成工具可使用元件之基礎儲存格庫(underlying cell library)來合成級數近似元件之LUT及乘加電路(例如,參見圖4及圖6),從而嘗試產生有效率之接線對照表實施(net list implementation)。然而,在合成工具之不同版本之間、在合成工具之不同廠商之間及在不同儲存格庫之間可存在顯著變化。因此,可需要具有元件之可重新合成版本(例如,RTL 124)以用於在合成工具之版本或廠商改變時重新產生該庫。亦即,最小(在合成之後由所得元件佔據之面積方面)且滿足積體電路10之準確度要求的選擇可取決於合成工具之版本/廠商而不同。
級數近似元件產生器122可經組態以針對由使用者設定之輸入方針內之每一可能實施來產生級數近似元件RTL 124及級數近似元件可執行模型128。圖16為說明級數近似元件產生器122之一實施例之操作的流程圖。雖然出於理解簡易性起見而以特定次序展示區塊,但可使用其他次序。級數近似元件產生器122可包括在執行於電腦上時在電腦上實施圖16所示之操作之指令。
級數近似元件產生器122可經組態以接收描述級數近似元件之可接受輸入參數之範圍(區塊130)。舉例而言,該等輸入參數可包括可 接受尾數寬度及/或查找表深度(區間)之範圍。LUT輸出(f(a)、f'(a)及f"(a))之寬度可為輸入參數寬度,或亦可直接藉由參數而變化。該等參數可進一步包括待實施之超越/非線性函數。在一些實施例中,該等參數可進一步指定哪些級數擴展係可准許的(例如,中值、線性內插、泰勒、兩項、三項,等等)。可以任何所要方式將該等參數提供至級數近似元件產生器122。舉例而言,使用者可使用一或多個輸入裝置來直接輸入該等參數。該等參數亦可儲存於一參數檔案中。使用者可選擇定義包括使用者相信將不滿足要求之實施之範圍,以確保該方法之涵蓋範圍。亦即,若嘗試至少一些難實行選項,則吾人可能能夠具有可實行解決方案中之許多者已在該方法中被產生及分析的一些信心。
級數近似元件產生器122可針對指定範圍內之每一可能級數近似元件實施來產生級數近似元件RTL(區塊132)。舉例而言,每一實施可儲存於其自有RTL檔案中。所產生之實施集合可在指定極限內為窮舉的。
級數近似元件產生器122可調用合成工具120以合成每一實施(區塊134)。在一些實施例中,級數近似元件產生器122亦可產生每一實施之可執行模型(區塊136)。該可執行模型可以諸如C或C++之高階程式設計語言予以表達,且可被編譯至可執行碼。通常,可執行模型可模仿對應級數近似元件產生器122中所描述之電路之操作,從而針對相同輸入運算元產生相同結果。可執行模型可用於驗證目的,例如,用對應於積體電路之其他元件的可執行碼。在一實施例中,可執行模型可包括針對每一可能輸入之結果之查找表,及回應於輸入運算元而讀取該表之程式碼。在另一實施例中,可執行碼可包括根據實施來計算結果之程式碼。
級數近似元件產生器122可調用可執行模型且遍及每一可能輸入來演練該模型(區塊138)。級數近似元件產生器122可比較來自該模型 之結果與正確結果(取決於是否需要IEEE準確結果,為IEEE準確結果或在1個ULP準確度內之結果)。該模型可產生該等正確結果(除了對應於RTL實施之結果以外)且可進行該比較。或者,級數近似元件產生器122可產生該等正確結果且進行該比較。視情況,若將要使用捨位LUT 62,則級數近似元件產生器122可藉由附註哪些輸入已產生不準確結果及不準確度之值來產生LUT 62(區塊140)。該等值(或更特定而言,不準確度之負值)可儲存於LUT 62中以校正不準確度。
一旦合成及準確度判定針對每一實施而完成(區塊136及138完成),級數近似元件產生器122就可比較由每一實施之合成結果佔據之面積,且可選擇滿足針對級數近似元件之準確度要求的最小面積實施(區塊142)。可藉由置放及路由藉由合成提供之接線對照表來判定面積。或者,可自在接線對照表中注標之閘、自訂電路及/或標準儲存格連同彼等各種電路之相對大小來估計面積。可將選定實施添加至實施之庫,可使該庫可用於區塊設計者以供在其區塊中執行個體化(區塊144)。
對於熟習此項技術者而言,一旦已完全地瞭解以上揭示內容,眾多變化及修改就將變得顯而易見。希望將以下申請專利範圍解釋為涵蓋所有此等變化及修改。
16‧‧‧級數近似元件
50‧‧‧指數計算單元
52‧‧‧尾數計算單元
54‧‧‧查找表(LUT)
56‧‧‧加法器/乘加電路
58‧‧‧乘法器/乘加電路
60‧‧‧補數三角電路
62‧‧‧捨位查找表(LUT)
64‧‧‧正規化電路
66‧‧‧加法器

Claims (7)

  1. 一種積體電路,其包含:複數個元件,其耦合在一起以實施針對該積體電路所定義之一操作,且其中該複數個元件中之一第一元件為實施一函數之一級數近似元件,且其中該級數近似元件用自該函數之一級數展開表示導出之硬體來實施該函數,且其中該第一元件包含:一表,其儲存對應於由該電路實施之一函數之第一複數個值及第二複數個值,其中該第一複數個值包含在複數個選定點處該函數之一值,且其中該第二複數個值包含在該複數個選定點處該函數之一一階導數之一值及該一階導數之一第二近似的一平均值,其中該表經耦合以接收至該函數之一輸入運算元之至少一部分且經組態以輸出該第一複數個值中之一第一值及該第二複數個值中之一第二值,其中該第一值及該第二值對應於該函數之該級數近似中之項;及乘加電路,其耦合至該表且經組態以使一第二值乘以該輸入運算元與該複數個選定點中之一第一選定點之間的一差,該第一選定點對應於該第一值及該第二值,且其中該乘加電路經組態以將該乘法之一結果加至該第一值。
  2. 如請求項1之電路,其中該表經進一步組態以儲存第三複數個值,其中該第三複數個值包含在該複數個選定點處該函數之一二階導數,且其中該表經組態以回應於該輸入運算元之該部分而輸出該第三複數個值中之一第三值。
  3. 如請求項2之電路,其中該乘加電路經組態以使該第三值乘以該輸入運算元與該第一選定點之間的該差之一平方以產生一第二結果,且其中該乘加電路經進一步組態以將該第二結果加至該 結果及該第一值。
  4. 如請求項1之電路,其中該第一選定點位於輸入運算元值之一區間之一中心處,該第一值及該第二值係遍及該區間被使用,且其中經組態以計算該差之該電路經組態以在該差為正值時提供該第一值之複數個最低有效位元作為該差。
  5. 如請求項4之電路,其中若該差為負值,則該差為該複數個最低有效數位之一1補數。
  6. 一種電路,其包含:一表,其經耦合以接收針對一函數之一輸入運算元之至少一部分,該表具有複數個輸入項,且該複數個輸入項中每一者對應於該輸入運算元之一值區間,且其中該複數個輸入項中每一者儲存對應於該函數之一級數展開中之一第一項的一第一值及對應於該級數展開中之一第二項的一第二值,其中該表經組態以自該複數個輸入項中之一選定輸入項輸出該第一值及該第二值,該選定輸入項係回應於該輸入運算元被選擇;及一乘法器,其耦合至該表且經組態以使該第二值乘以該輸入運算元與在該值區間內之一第三值之間的一差;及一加法器,其耦合至該表及該乘法器且經組態以將該第一值加至該乘法器之一結果,其中該第一值為在該第三值處該函數之值,且該第二值為求在該第三點處該函數之一一階導數及該一階導數之一第二近似的一平均值。
  7. 如請求項6之電路,其中藉由在該函數上之該區間之端點之間建構一線來進行該第二近似。
TW102111573A 2012-03-30 2013-03-29 使用級數展開之超越及非線性元件 TWI484352B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/435,900 US9015217B2 (en) 2012-03-30 2012-03-30 Transcendental and non-linear components using series expansion

Publications (2)

Publication Number Publication Date
TW201346594A TW201346594A (zh) 2013-11-16
TWI484352B true TWI484352B (zh) 2015-05-11

Family

ID=48044571

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102111573A TWI484352B (zh) 2012-03-30 2013-03-29 使用級數展開之超越及非線性元件

Country Status (7)

Country Link
US (1) US9015217B2 (zh)
EP (1) EP2645199A1 (zh)
JP (1) JP5666649B2 (zh)
KR (1) KR101471750B1 (zh)
CN (1) CN103365824B (zh)
TW (1) TWI484352B (zh)
WO (1) WO2013148619A1 (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130185345A1 (en) * 2012-01-16 2013-07-18 Designart Networks Ltd Algebraic processor
US9207880B2 (en) * 2013-12-27 2015-12-08 Intel Corporation Processor with architecturally-visible programmable on-die storage to store data that is accessible by instruction
GB2525648C (en) * 2014-05-01 2019-10-09 Imagination Tech Ltd Approximating functions
US9779272B2 (en) * 2015-04-14 2017-10-03 Analog Devices, Inc. Extended use of logarithm and exponent instructions
CN105354006B (zh) * 2015-11-27 2017-11-21 中国科学院计算技术研究所 一种非线性函数的快速运算装置及其方法
US10713013B1 (en) * 2016-02-24 2020-07-14 Xilinx, Inc. Apparatus and method for an exponential operator for a half-precision floating-point format
US10042607B2 (en) 2016-08-22 2018-08-07 Altera Corporation Variable precision floating-point multiplier
US10055195B2 (en) 2016-09-20 2018-08-21 Altera Corporation Variable precision floating-point adder and subtractor
US10331162B2 (en) * 2017-05-15 2019-06-25 International Business Machines Corporation Power series truncation using constant tables for function interpolation in transcendental functions
US10970080B2 (en) 2018-02-08 2021-04-06 Marvell Asia Pte, Ltd. Systems and methods for programmable hardware architecture for machine learning
US11016801B1 (en) 2018-05-22 2021-05-25 Marvell Asia Pte, Ltd. Architecture to support color scheme-based synchronization for machine learning
US10929778B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Address interleaving for machine learning
US10929779B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture to support synchronization between core and inference engine for machine learning
US10997510B1 (en) 2018-05-22 2021-05-04 Marvell Asia Pte, Ltd. Architecture to support tanh and sigmoid operations for inference acceleration in machine learning
US10929760B1 (en) * 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture for table-based mathematical operations for inference acceleration in machine learning
US10891136B1 (en) 2018-05-22 2021-01-12 Marvell Asia Pte, Ltd. Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction
US10871946B2 (en) 2018-09-27 2020-12-22 Intel Corporation Methods for using a multiplier to support multiple sub-multiplication operations
US10732932B2 (en) 2018-12-21 2020-08-04 Intel Corporation Methods for using a multiplier circuit to support multiple sub-multiplications using bit correction and extension
US20210200539A1 (en) * 2019-12-28 2021-07-01 Intel Corporation Generic linear unit hardware accelerator
CN112749803B (zh) * 2021-03-05 2023-05-30 成都启英泰伦科技有限公司 一种神经网络的激活函数计算量化方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4482975A (en) * 1982-03-29 1984-11-13 Motorola, Inc. Function generator
US6581085B1 (en) * 1999-05-12 2003-06-17 Ati International Srl Approximation circuit and method
US7809782B1 (en) * 2002-09-19 2010-10-05 Nvidia Corporation Method and system for selecting a set of parameters

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3003A (en) * 1843-03-17 Improvement in the method of propelling vessels by means of continuous streams of water
US5197024A (en) 1989-06-14 1993-03-23 Pickett Lester C Method and apparatus for exponential/logarithmic computation
US5224064A (en) 1991-07-11 1993-06-29 Honeywell Inc. Transcendental function approximation apparatus and method
JP3091574B2 (ja) 1992-07-21 2000-09-25 三洋電機株式会社 データ変換回路及びデータ変換方法
US5367702A (en) * 1993-01-04 1994-11-22 Texas Instruments Incorporated System and method for approximating nonlinear functions
US6058473A (en) 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
US5600581A (en) 1995-02-22 1997-02-04 Motorola, Inc. Logarithm/inverse-logarithm converter utilizing linear interpolation and method of using same
US5963460A (en) 1996-12-17 1999-10-05 Metaflow Technologies, Inc. Apparatus for computing transcendental functions quickly
US6223192B1 (en) * 1997-10-23 2001-04-24 Advanced Micro Devices, Inc. Bipartite look-up table with output values having minimized absolute error
US6127860A (en) 1997-11-17 2000-10-03 Lucent Technologies, Inc. Linear expansion based sine generator
US6363405B1 (en) 1997-12-24 2002-03-26 Elbrus International Limited Computer system and method for parallel computations using table approximation methods
US6567831B1 (en) * 1997-12-24 2003-05-20 Elbrus International Limited Computer system and method for parallel computations using table approximation
KR100321705B1 (ko) 1998-09-29 2002-03-08 이계철 2의멱수함수를이용한신경회로망의비선형함수변환장치및그방법
US6760390B1 (en) 2000-10-25 2004-07-06 Motorola, Inc. Log-map metric calculation using the avg* kernel
US6807554B2 (en) 2001-08-10 2004-10-19 Hughes Electronics Corporation Method, system and computer program product for digitally generating a function
US6931612B1 (en) 2002-05-15 2005-08-16 Lsi Logic Corporation Design and optimization methods for integrated circuits
US6981009B2 (en) 2002-07-09 2005-12-27 Silicon Integrated Systems Corp. Apparatus and method for computing a logarithm of a floating-point number
KR100499111B1 (ko) 2003-04-30 2005-07-04 삼성탈레스 주식회사 급수전개함수의 근사화 방법 및 그 시스템
JP3845636B2 (ja) 2004-01-21 2006-11-15 株式会社東芝 関数近似値の演算器
JP2005227811A (ja) 2004-02-10 2005-08-25 Olympus Corp 近似回路
JP2006065633A (ja) 2004-08-27 2006-03-09 Sony Computer Entertainment Inc 演算方法および装置
US8346831B1 (en) 2006-07-25 2013-01-01 Vivante Corporation Systems and methods for computing mathematical functions
JP4755129B2 (ja) 2007-03-16 2011-08-24 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US8099685B2 (en) 2007-07-31 2012-01-17 Mentor Graphics Corporation Model based microdevice design layout correction
CN101741775B (zh) * 2009-12-22 2013-03-06 上海大学 基于泰勒展开的单频率的ofdm时变信道估计方法
US8570203B2 (en) 2010-08-27 2013-10-29 M.S. Ramaiah School Of Advanced Studies Method and apparatus for direct digital synthesis of signals using Taylor series expansion
US20130185345A1 (en) * 2012-01-16 2013-07-18 Designart Networks Ltd Algebraic processor
US8504954B1 (en) 2012-03-30 2013-08-06 Apple Inc. Methodology for automatically generating series-approximated components

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4482975A (en) * 1982-03-29 1984-11-13 Motorola, Inc. Function generator
US6581085B1 (en) * 1999-05-12 2003-06-17 Ati International Srl Approximation circuit and method
US7809782B1 (en) * 2002-09-19 2010-10-05 Nvidia Corporation Method and system for selecting a set of parameters

Also Published As

Publication number Publication date
US20130262540A1 (en) 2013-10-03
JP2013214305A (ja) 2013-10-17
CN103365824B (zh) 2016-08-24
US9015217B2 (en) 2015-04-21
CN103365824A (zh) 2013-10-23
WO2013148619A1 (en) 2013-10-03
JP5666649B2 (ja) 2015-02-12
KR101471750B1 (ko) 2014-12-10
EP2645199A1 (en) 2013-10-02
TW201346594A (zh) 2013-11-16
KR20130111466A (ko) 2013-10-10

Similar Documents

Publication Publication Date Title
TWI484352B (zh) 使用級數展開之超越及非線性元件
US8504954B1 (en) Methodology for automatically generating series-approximated components
US8539014B2 (en) Solving linear matrices in an integrated circuit device
US8396914B1 (en) Matrix decomposition in an integrated circuit device
US8949298B1 (en) Computing floating-point polynomials in an integrated circuit device
US20200225912A1 (en) Approximating Functions
TW201818266A (zh) 用查找表執行遞歸運算的方法、設備及其測試方法
US11010515B2 (en) Implementing fixed-point polynomials in hardware logic
Liddicoat High-performance arithmetic for division and the elementary functions
US10416960B2 (en) Check procedure for floating point operations
US10037191B2 (en) Performing a comparison computation in a computer system
US9959091B2 (en) Evaluation of polynomials with floating-point components
CN111352607B (zh) 迭代估计硬件
Lee et al. A parallel look-up logarithmic number system addition/subtraction scheme for FPGA
TWI753668B (zh) 資訊處理裝置、電腦程式、記錄媒體及資訊處理方法
WO2021106253A1 (ja) 情報処理装置、プログラム、及び情報処理方法
GB2572622A (en) Evaluating a mathematical function in a computational environment
US20240134607A1 (en) Hardware to perform squaring
ES2562072B1 (es) Sistema y método para la optimización de anchos de palabra de circuitos digitales mediante simulaciones bit-true
GB2584016A (en) Iterative estimation hardware
Malhan et al. Floating Point CORDIC Based Power Operation
Constantinides Precision analysis for fixed-point computation

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees