TW202333041A - 執行浮點運算的系統及方法 - Google Patents
執行浮點運算的系統及方法 Download PDFInfo
- Publication number
- TW202333041A TW202333041A TW111144751A TW111144751A TW202333041A TW 202333041 A TW202333041 A TW 202333041A TW 111144751 A TW111144751 A TW 111144751A TW 111144751 A TW111144751 A TW 111144751A TW 202333041 A TW202333041 A TW 202333041A
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- point
- floating
- fixed
- operand
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 103
- 238000010606 normalization Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 9
- 238000012805 post-processing Methods 0.000 claims description 9
- 230000001131 transforming effect Effects 0.000 abstract 1
- 230000015654 memory Effects 0.000 description 42
- 238000010586 diagram Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 238000007792 addition Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 1
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/4836—Computations with rational numbers
-
- 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49915—Mantissa overflow or underflow in handling floating-point numbers
-
- 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/556—Logarithmic or exponential functions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一種執行浮點運算的方法可包括:獲得具有浮點格式的運算元,基於運算元的指數的範圍來計算增益,藉由將增益施加於運算元來產生具有定點格式的中間值,藉由對中間值執行運算來產生具有定點格式的定點結果值,以及將定點結果值轉換成具有浮點格式的浮點輸出值。
Description
本發明概念一般而言是有關於執行算術運算的系統及可用於執行浮點運算的方法。
[相關申請案的交叉參考]
本申請案主張於2021年11月24日在韓國智慧財產局提出申請的韓國專利申請案第10-2021-0163767號的優先權,所述韓國專利申請案的標的物特此全文併入本案供參考。
對於給定數目的數位位元,可使用浮點格式(floating-point format)來表示較定點格式(fixed-point format)相對更大範圍的數字。然而,對以浮點格式表達的數字進行的算術運算相較於對以定點格式表達的數字進行的算術運算而言可能更複雜。隨著各種計算硬體的發展,浮點格式已被廣泛使用。然而,需要對浮點數(floating-point number)執行(或實行)多個算術運算的某些應用(例如,電腦視覺、神經網路、虛擬實境、增強實境等)的精確度及效率可能會根據正在執行的算術運算的類型而變化。此種可變性是不可取的且需要對浮點算術運算的執行進行改善。
本發明概念提供能夠對浮點數執行更精確的算術運算的系統及方法。
根據本發明概念的態樣,一種執行浮點運算的方法包括:獲得運算元,其中運算元中的每一者以浮點格式表達;基於運算元的運算元指數的範圍來計算增益;藉由將增益施加於運算元來產生中間值,其中中間值中的每一者以定點格式表達;藉由對中間值執行算術運算來產生定點結果值,其中定點結果值以定點格式表達;以及自定點結果值產生浮點輸出值,其中浮點輸出值以浮點格式表達。
根據本發明概念的態樣,一種執行浮點運算的系統可包括:增益計算電路,被配置成獲得運算元且基於運算元指數的範圍來計算增益,其中運算元中的每一者以浮點格式表達;正規化電路,被配置成藉由將增益施加於運算元來產生中間值,其中中間值中的每一者以定點格式表達;定點運算電路,被配置成藉由對中間值執行算術運算來產生定點結果值,其中定點結果值以定點格式表達;以及後處理電路,被配置成將定點結果值轉換成浮點輸出值,其中浮點輸出值以浮點格式表達。
根據本發明概念的態樣,一種執行浮點運算的系統可包括:處理器;以及非暫時性儲存媒體,儲存使處理器能夠執行浮點運算的指令。浮點運算可包括:獲得運算元,其中運算元中的每一者以浮點格式表達;基於運算元的運算元指數的範圍來計算增益;藉由將增益施加於運算元來產生中間值,其中中間值中的每一者以定點格式表達;藉由對中間值執行算術運算來產生定點結果值,其中定點結果值以定點格式表達;以及將定點結果值轉換成浮點輸出值,其中浮點輸出值以浮點格式表達。
在書面說明及附圖通篇中,相同的參考編號及標記用於標示相似的元件、組件、特徵及/或方法步驟。
圖1是示出根據本發明概念實施例的執行浮點運算的方法的流程圖。參照圖1,所示出的示例性方法可包括步驟S10、S30、S50、S70及S90,其中所述步驟中的一或多者可使用各種硬體、韌體及/或軟體配置(例如下文中關於圖13闡述的配置)來執行。在一些實施例中,與本發明概念的實施例一致的方法的一或多個步驟(例如下文中關於圖14及圖15闡述的步驟)可由處理器來執行,所述處理器被配置成實行由儲存於記憶體中的程式化代碼控制的一系列指令。
參照圖1,可獲得(例如,產生)多個運算元(S10),其中運算元中的每一者可以浮點格式表達。如上所述,當在數位系統中進行處理的數位位元的數目增加時,浮點格式可更精確地表示擴展(或更寬)範圍內的數字。就此而言,相較於類似的定點格式,浮點格式需要的位元數目減少。並且在所界定的精確度內,此更少數目的位元需要更少的資料儲存空間及/或記憶體頻寬。
各種浮點格式的使用在此項技術中眾所習知。舉例而言,本發明概念的某些實施例可根據使用32個位元的單精度浮點格式(例如,FP32)及/或使用16個位元的半精度浮點格式(例如,FP16)(例如根據由電機電子工程師協會(Institute of Electrical and Electronics Engineers,IEEE)公佈的754-2008技術標準所定義的格式)進行運算。(參見例如,
www.ieee.org上公佈的相關背景資訊)。
使用此種假定的情境作為教示實例,藉由儲存FP16資料而非FP32資料,可明顯減少記憶體(例如,動態隨機存取記憶體(或DRAM(dynamic random access memory)))的資料儲存空間及/或記憶體頻寬。亦即,處理器可自記憶體讀取FP16資料並將FP16資料轉換成對應的FP32資料。作為另外一種選擇,處理器可將FP32資料反向轉換成對應的FP16資料並將FP16資料寫入記憶體中。
此外,就此而言,可與應用相關地採用具有適當數目的位元的浮點格式。舉例而言,關於執行深度學習推理(deep learning inference),可使用以FP16表達的特徵圖及對應的加權。因此,相較於定點格式(例如,INT8)而言,可在更寬的範圍內以更高的精確度執行深度學習。此外,相較於FP32格式而言,可以更高的效率(例如,儲存空間、記憶體頻寬、處理速度等)來執行深度學習。因此,在以有限資源表徵的應用(例如,如行動電話等可攜式計算系統)中,可能期望使用具有相對較少位元的浮點格式(例如,FP16)。
熟習此項技術者將自上文認識到,浮點運算在各種應用中可能特別有用。舉例而言,浮點運算可用於神經網路,例如用於卷積層(convolution layer)、全連接(fully connected,FC)層、柔性最大化層(softmax layer)、均值池化(average pooling)層等。另外,浮點運算可用於某些轉換,例如離散余弦轉換(discrete cosine transform,DCT)、快速傅立葉轉換(fast Fourier transform,FFT)、離散小波轉換(discrete wavelet transform,DWT)等。另外,浮點運算可用於有限脈波響應(finite impulse response,FIR)濾波器、無限脈波響應(infinite impulse response,IIR)濾波器、線性內插(linear interpolation)、矩陣算術等。
然而,隨著浮點格式的位元的數目減少,因捨入(rounding)而在算術運算中出現重大錯誤的可能性可能會增加。舉例而言,如下文中關於圖2所述,當對以FP16表達的四個數{1024,0.5,1.0,1.5}求和時,根據特定的加法次序,所述和可為{1026,1027,1028}中的一者。亦即,在對以浮點格式表達的一組數執行加法運算期間,由於捨入的變化,關聯性質可能並非有效。因此,具有相對更多位元的浮點格式(例如,FP32)可能具有長的小數部分,且因此,錯誤的影響可能相對弱。相比而言,具有相對較少位元的浮點格式(例如,FP16)可能具有短的小數部分,且因此,錯誤的影響可能更顯著。為了消除錯誤,可考量將FP16資料轉換成FP32資料以及將FP32資料的算術運算結果轉換成FP16資料的各種方法。然而,此等方法可能不僅會導致資料轉換的負擔,而且亦會降低並列資料處理(例如,單指令多資料(single instruction multiple data,SIMD))的效率,藉此降低執行算術運算的整體速度。
在下文中,在與本發明概念實施例一致的執行浮點運算的某些系統及方法中,可消除因浮點運算中的重複捨入而導致的錯誤(例如,與加法次序相關地出現的錯誤)。另外,在與本發明概念實施例一致的執行浮點運算的某些系統及方法中,包括對浮點數執行算術運算的應用的整體效能可藉由自浮點運算消除錯誤來提高。更具體而言,可消除具有相對較少位元的浮點算術運算中的錯誤,且可使用複雜度相對低的硬體來高效地處理浮點數。
參照圖1,在獲得運算元(S10)之後,可計算增益(S30)。舉例而言,可基於先前所產生的運算元的指數(下文中被稱為「運算元指數(operand exponents)」)的範圍來計算增益。所述增益可對應於施加於(例如,乘以)運算元的值,以將分別具有不同指數的運算元轉換成共用的定點格式。舉例而言,增益「g」可定義施加於相應的運算元的值「2
g」。在一些實施例中,可預先計算(或確定)增益「g」,或者基於所產生的運算元動態地計算增益「g」。將在下文中關於圖3闡述可用於計算增益「g」的方法步驟(S30)的一個實例。
在計算增益「g」(S30)之後,可將增益「g」施加於運算元(S50)。舉例而言,可使所產生的運算元中的每一者乘以所計算的增益(例如,2
g)。因此,可產生多個中間值,所述多個中間值各自以特定的定點格式表達且分別對應於運算元中的一者。此處,將所計算的增益施加於運算元可被稱為「正規化(normalization)」。
此後,可產生以定點格式表達的結果值(下文中,被稱為「定點結果值」)(S70)。舉例而言,可對中間值執行一或多個算術運算以產生定點結果值。在一些實施例中,產生定點結果值的步驟可由被設計成對以定點格式表達的數字進行處理的算術運算裝置來執行,其中所述算術運算可與中間值相關地(即,與所產生的運算元相關地)迭代執行。
下文中將關於圖4闡述產生定點結果值的步驟的一個實例。
此後,可使用定點結果值來產生具有浮點格式的輸出值(下文中,被稱為「浮點輸出值」)(S90)。舉例而言,可將先前所產生的定點結果值(例如,S70)轉換成具有浮點格式的對應的輸出值。在一些實施例中,可與所產生的運算元的浮點格式相似地表達浮點輸出值。
下文中將關於圖6闡述產生浮點輸出值的步驟的一個實例。
圖2是示出可與本發明概念的實施例相關地使用的浮點格式的概念圖。更具體而言,圖2的上部部分示出由IEEE 754-2008技術標準定義的FP16資料結構,而圖2的下部部分示出FP16數(FP16 number)的實例。
參照圖2的上部部分,FP16數可具有16位元的長度。最高有效位元(most significant bit,MSB)(b
15)可為標示FP16數的符號的符號位元「s」。MSB(b
15)之後的五個位元(b
10至b
14)可為指數部分「e」,且包括最低有效位元(least significant bit,LSB)(b
0)的10個位元(b
0至b
9)可為小數部分「m」。根據FP16,依據FP16數進行表達(或由FP16數表示)的實數「v」可根據以下方程式1來定義:
[方程式1]
此處,當指數部分「e」為零時,「q」可為1,且當指數部分e不為零時,「q」可為0;實數「v」可具有在第十位元(b
9)與第十一位元(b
10)之間假定的隱藏前導位元(hidden lead bit),使得當指數部分「e」為零時,實數「v」可被稱為「次正規數(subnormal number)」,其中在次正規數中,隱藏前導位元可為0,且可使用兩次小數部分「m」。此外,並非次正規數的實數「v」可被稱為「正規數(normal number)」,且在正規數中隱藏前導位元可為1。
參照圖2的下部部分,當指數部分「e」為11111
2時,小數部分「m」可為0,並且根據符號位元「s」,FP16數可為正無窮大或負無窮大。因此,指數部分「e」的最大值可為11110
2(即,30),且指數部分「e」的最小值可為00000
2(即,0)。另外,當指數部分「e」及小數部分「m」二者皆為0時,根據符號位元「s」, FP16數可為正零或負零。在下文中,FP16將被進一步假定及闡述為可與本發明概念實施例相關地使用的浮點格式的實例。然而,本發明概念的其他實施例可使用不同的浮點格式。
圖3是在一個實施例中進一步示出圖1所示的方法中計算增益的步驟(S30')的流程圖。
參照圖1及圖3,可藉由獲得與所產生的運算元相關聯的指數的最大值及最小值來計算增益(S32)。如以上關於圖1所述,增益可用於將所產生的分別具有不同指數的運算元轉換成共用定點格式。隨著增益的增加,定點格式的位元的數目可能會增加,而隨著增益的減少,定點格式的位元的數目可能會減少。因此,為了計算最佳(或適當)增益,可獲得運算元的指數的最大值及最小值。若運算元落於所界定的範圍內,則指數的最大值及最小值可基於所述範圍來確定。否則,若運算元未落於所述範圍內,或者若運算元的範圍不能被精確預測,則指數的最大值及最小值可分別對應於浮點格式中的最大指數及最小指數。舉例而言,若不能預測以FP16表達的運算元的範圍,則指數的最大值可被假定為30,且指數的最小值可被假定為0。
此後,可基於最大值與最小值之間的差來計算增益(S34)。為了將具有最大指數的第一運算元與具有最小指數的第二運算元相加,可將藉由將第一運算元中的指數與第二運算元中的指數之間的差值乘以第一運算元及第二運算元而獲得的各自對應的值相加。如此一來,例如,可與在方法步驟S32中獲得的指數的最大值及最小值相關地計算增益。
在對N個運算元進行的算術運算(其中「N」是大於1的整數)中,第n個運算元的實數「v
n」可根據以下方程式2來表示,其中1 ≤ n ≤ N。
[方程式2]
與方程式1一致,在方程式2中,「s
n」標示第n個運算元的符號位元,「e
n」標示第n個運算元的指數部分,「m
n」標示第n個運算元的小數部分,並且當「e
n」為零時,「q
n」可為1,且當「e
n」不為零時,「q
n」可為0。
為了計算所述N個運算元之和,可將所述N個運算元調整為具有相同的指數。舉例而言,第n個運算元的實數「v
n」可根據以下方程式3來調整:
[方程式3]
此處,「s
n」標示第n個運算元的符號位元,且「e
max」標示所述N個運算元之中具有最大指數的運算元的指數。
與圖1所示的方法一致,將增益施加於運算元的步驟(S50)可包括根據以下方程式4藉由將增益「g」施加於方程式2的實數「v
n」來確定實數「f
n」:
[方程式4]
此處,方程式4可對應於與圖1所示方法的說明中的第n個運算元對應的第n個中間值的實數。為了最大限度地保留運算元的有效數位,增益「g」可滿足以下方程式5:
[方程式5]
此處,「e
min」標示所述N個運算元之中具有最小指數的運算元的指數,且根據運算元的指數的最小值e
min,「q
max」可為0或1。亦即,若「e
min」為0,則「q
max」可為1,否則,若「e
min」不為0,則「q
max」可為0。隨著增益的增加,用於處理定點數的資源可增加,且因此,增益可被設定為滿足方程式5的最小值(例如,「e
max- (e
min+ q
max)」)。舉例而言,若所述N個運算元的範圍不能被預測,則「e
max」、「e
min」及「q
max」可分別被假定為30、0及1。因此,增益「g」可為29。若增益「g」為29,則被施加增益g的實數「f
n」可由以下方程式6表示:
[方程式6]
因此,實數「f
n」的最大值可為[2
g(2
10+ m
n) = 2
29(2
10+ m
n)],且當實數「f
n」的最大值以定點格式表達時,可能需要至少40個位元(40 = g+11)。另外,實數「f
n」的最小值可為「m
n」,且可能需要至少10個位元。因此,若在FP16的情境中不能預測運算元的範圍,則可使用能夠執行40位元的定點運算的硬體。
然而,在一些實施例中,增益「g」可能不滿足方程式5。舉例而言,當系統用於定點運算的位元的數目有限時,增益可被設定為小於[e
max- (e
min+ q
max)]的值。因此,可基於定點格式的位元的數目(例如,中間值及/或輸出值的位元的數目)來確定增益。
圖4是在一個實施例中進一步示出圖1所示的方法中產生定點結果值的步驟(S70')的流程圖。更具體而言,圖4所示的流程圖示出作為算術運算的一個可能實例的加法運算,所述算術運算可用於產生關於中間值的圖1所示的定點結果值(S70)。
參照圖1及圖4,可計算正中間值的第一和(S72),且可計算負中間值的第二和(S74)。藉由對圖2所示的浮點格式實例(FP16)進行擴展,浮點數可包括符號位元及具有定點格式的中間值,且可自以FP16表達的運算元產生浮點數。因此,中間值可根據其各自的符號位元值而被分類為正中間值或負中間值。因此,可計算正中間值的第一和以及負中間值的第二和。在一些實施例中,可使用兩個硬體組件(例如,加法器)來分別計算第一和以及第二和。在一些實施例中,可使用單個硬體組件(例如,加法器)來依次計算第一和以及第二和。
第一和以及第二和一經算出(S74),便可計算中間值之和(S76)。舉例而言,可基於第一和與第二和之間的差來計算中間值之和。在一些實施例中,可將第一和的絕對值與第二和的絕對值進行比較,並且可根據比較結果來計算中間值之和。下文中將參照圖5更詳細地闡述方法步驟S76的一個實例。
圖5示出根據本發明概念實施例的可用於執行浮點運算的偽代碼50的部分列表。在一些實施例中,可實行圖5所示的偽代碼50來執行圖4所示的方法步驟S76。參照圖4及圖5,可基於正中間值的第一和以及負中間值的第二和來計算中間值之和。因此,在圖5所示的偽代碼50中,用語「psum」可標示第一和的絕對值(例如,由除符號位元之外的位元指示的值),且用語「nsum」可標示第二和的絕對值(例如,由除符號位元之外的位元指示的值)。在圖5中,用語「f
sum」可標示結果值的絕對值,且用語「s
sum」可標示結果值的符號。此處,在一些實施例中,用語f
sum及s
sum可使用16個位元來表達。
參照圖5,可將psum與nsum進行比較(行51)。若psum大於nsum(psum > nsum)(即,若第一和的絕對值大於第二和的絕對值),則實行行52及行53。否則,若psum小於或等於nsum(psum ≤ nsum)(即,若第一和的絕對值小於或等於第二和的絕對值),則實行行55及行56。
因此,若psum大於nsum(psum > nsum),則在行52中,可藉由自psum減去nsum來計算結果值的絕對值f
sum。另外,在行53中,可將指示結果值的符號的s
sum的MSB設定為0以指示正數。
若psum小於或等於nsum(psum ≤ nsum),則在行55中,可藉由自nsum減去psum來計算結果值的絕對值f
sum。另外,在行56中,可將指示結果值的符號的s
sum的MSB設定為1以指示負數。
圖6是在一個實施例中進一步示出圖1所示的方法中產生浮點輸出值的步驟(S90)的流程圖,且圖7是示出示例性浮點輸出值的概念圖。
參照圖1、圖6及圖7,可將浮點(floating-point,FP)輸出值與浮點格式的最小值FP
min及最大值FP
max進行比較。舉例而言,可判斷在圖1所示方法的方法步驟S70中產生的定點結果值是否落於FP16的不包括正無窮大的最大值(即,0111101111111111
2)與FP16的不包括負無窮大的最小值(即,1111101111111111
2)之間的範圍內。如圖6所示,若FP輸出值大於浮點格式的最大值FP
max或者小於浮點格式的最小值FP
min,則所述方法可行進至方法步驟S94。否則,若FP輸出結果小於或等於浮點格式的最大值FP
max且大於或等於浮點格式的最小值FP
min,則所述方法行進至方法步驟S96及S98。
若FP輸出值大於浮點格式的最大值FP
max或小於浮點格式的最小值FP
min,則可將FP輸出值設定為正無窮大或負無窮大(S94)。舉例而言,若結果值大於FP16的最大值(即,0111101111111111
2),則FP輸出值可被設定為指示正無窮大的值(即,0111110000000000
2)。作為另外一種選擇,若結果值小於FP16的最小值(即,1111101111111111
2),則FP輸出值可被設定為指示負無窮大的值(即,1111110000000000
2)。
若FP輸出結果小於或等於浮點格式的最大值FP
max且大於或等於浮點格式的最小值FP
min,則可對結果值的上連續零(upper continuous zeros)進行計數(S96)。舉例而言,如圖7所示,在40位元的FP輸出值中,可對上連續零進行計數以確定計數值(例如,在圖7所示的實例中可確定20個零)。然而,在一些實施例中,當定點結果值可包括符號位元時,可對不包括符號位元的上連續零進行計數。在一些實施例中,可使用在處理器或硬體加速器中實施的函數(例如,clz)來對上連續零進行計數。因此,可根據以下方程式7來獲得上連續零的數目nlz:
[方程式7]
參照圖6,可計算FP輸出值的指數部分及小數部分(S98)。舉例而言,若結果值的絕對值(或除符號位元之外的位元)具有如圖7中所示的40位元的長度,且在方法步驟S96中所計數的上連續零的數目大於29(例如,增益「g」),則在第十位元(b
9)或更少位元處可能存在前導1。因此,FP輸出值可對應於FP16的次正規數。當輸出值對應於次正規數時,FP輸出值的指數部分「e
sum」及小數部分「m
sum」可根據以下方程式8來計算:
[方程式8]
否則,若結果值的絕對值(或除符號位元之外的位元)具有如圖7中所示的40位元的長度,且在方法步驟S96中所計數的上連續零的數目小於或等於29(例如,增益「g」),則FP輸出值可對應於正規數,並且可將位元移位(bit shift)確定為(g - nlz)並且可執行捨入以使得前導1位於第十一位元(例如,b
10)處。當FP輸出值對應於正規數,且增益「g」為29時,FP輸出值的指數部分e
sum及小數部分m
sum可根據以下方程式9來計算:
[方程式9]
因此,可使用例如由圖5所示的偽代碼50產生的s
sum,根據以下方程式10來計算以FP16表達的輸出值sum
out,其中e
sum及m
sum可根據方程式8及/或方程式9來計算。
[方程式10]
圖8A及圖8B是示出根據本發明概念實施例的用於執行浮點運算的方法的相關流程圖。更具體而言,圖8A所示的流程圖示出與FP16運算相關的圖1所示方法的一個實施實例,且圖8B所示的流程圖在一個實例中進一步示出圖8A所示方法的方法步驟S102。
參照圖8A,假定在執行用於執行浮點運算的方法之前,已經獲得了運算元資料OP(或者例如,包括N個運算元x[0]至x[N-1]的集合X)。
然後可對變數進行初始化(S100)。舉例而言,可將增益「g」設定為29,可將與正中間值的第一和對應的「psum」及與負中間值的第二和對應的「nsum」設定為0,且亦可將索引「n」設定為0。
可自集合X選擇運算元x[n](S101)。亦即,可獲得運算元OP中的一者。
然後,可更新「psum」或「nsum」,且可將n增加1(S102)。舉例而言,若所選擇的運算元x[n]是正數,則可更新「psum」,而若運算元x[n]是負數,則可更新「nsum」。下文中將參照圖8B更詳細地闡述方法步驟S102的一個實例。
然後,可將「n」與「N」進行比較(S103)。若「n」不同於「N」(例如,若n小於N),則所述方法循環可行進至步驟S101及S102,否則若n等於N(例如,若已完全計算了「psum」及「nsum」),則所述方法可行進至方法步驟S104。
亦即,可將「psum」與「nsum」進行比較(S104)。舉例而言,若「psum」大於或等於「nsum」(S104=是),則所述方法行進至方法步驟S105,並且可將「s
sum」的MSB設定為0,且可藉由自「psum」減去「nsum」來計算「f
sum」。作為另外一種選擇,若psum小於nsum(S104=否),則所述方法行進至方法步驟S106,並且可將「s
sum」的MSB設定為1,且可藉由自「nsum」減去「psum」來計算「f
sum」。
然後,可將「f
sum」與2
g+11進行比較(S107)。此處,例如,可將「f
sum」與2
g+11進行比較以判斷「f
sum」是否大於FP16的最大值。並且,若「f
sum」大於或等於2
g+11(S107=否),則所述方法行進至S112,其中可將「e
sum」設定為0x7C00,且可將「m
sum」設定為0,以指示正無窮大(S112)。
若「f
sum」小於2
g+11(S107=是),則可使用clz函數對「f
sum」的上連續零進行計數,且nlz可指示「f
sum」的上連續零的數目(S108)。
然後,可將「nlz」與增益「g」進行比較(S109)。舉例而言,可將「nlz」與增益「g」進行比較以判斷「f
sum」是FP16的次正規數還是正規數。因此,若「nlz」小於或等於增益「g」(即,若f
sum是FP16的正規數)(S109=是),則可藉由將(g - nlz)向右移位10次來計算「e
sum」,且可將「m
sum」捨入(g-nlz)位元(S110)。否則,若「nlz」大於增益「g」(即,若f
sum是FP16的次正規數)(S109=否),則可將「e
sum」設定為0,且可將「m
sum」設定為「f
sum」(S111)。
然後,可計算「sum
out」(S113)。舉例而言,可將「sum
out」計算為在方法步驟S105或S106中所計算的「s
sum」之和,且可在方法步驟S110、S111或S112中計算「e
sum」及「m
sum」。如此一來,可產生包括sum
out的輸出資料OUT。
如圖8B所示,方法步驟S102(例如,更新「psum」或「nsum」的步驟)可以各種方式實施(例如,實施為S102')。舉例而言,可自運算元提取符號、指數及小數(S102_1)。此處,可將符號「sx」設定為16位元運算元x[n]的MSB,可將指數「ex」設定為運算元x[n]中的MSB之後的五個位元,且可將小數「mx」設定為運算元x[n]中包括LSB在內的10個位元。
因此,可判斷指數「ex」是否為0(S102_2)(例如,可判斷運算元x[n]是否為FP16的次正規數)。亦即,若指數「ex」為0(S102_2=是)(即,若運算元x[n]是次正規數),則所述方法行進至操作S102_3;否則,若指數「ex」為非零(non-zero)(S102_2=N)(即,若運算元x[n]是正規數),則所述方法行進至操作S102_4。
若運算元x[n]是次正規數,則可將指數「ex」設定為1,且可將「fx」設定為「mx」(S102_3);否則,若運算元x[n]是正規數,則可將「fx」設定為藉由使隱藏前導位元與「mx」相加而產生的值(S102_4)。亦即,「fx」可對應於以與FP16一致的方式進行調整的運算元的小數。
然後,可對「fx」進行移位(S102_5)。舉例而言,可將「fx」向左移位(ex - 1),且因此,「frac」可具有定點格式。
然後,可判斷「sx」是否為0(S102_6)。亦即,若「sx」為0(S102_6=是)(即,若運算元x[n]是正數),則可使「frac」與「psum」相加(S102_7);否則,若「sx」為非零(S102_6=否)(即,若運算元x[n]是負數),則可使「frac」與「nsum」相加(S102_8)。
圖9是在一個實例中進一步示出圖1所示的方法的步驟S10的流程圖。亦即,可藉由執行圖9中所示的方法步驟S10'來獲得運算元。在各種應用中,可能需要對多對輸入值的乘積(例如向量的純量積(scalar product)或點積(dot product))進行求和的算術運算。為此,可在圖9所示的操作S10'中產生一對輸入值的乘積作為運算元,且可藉由結合圖1所示的方法中的方法步驟S30來迭代執行方法步驟S10'而產生運算元。
參照圖1及圖9,可對一對輸入值的指數進行求和(S12),且可將所述一對輸入值的小數相乘(S14)。舉例而言,FP16的第一輸入值「x
n」及第二輸入值「y
n」可根據以下方程式11來表達:
[方程式11]
然後,第一輸入值x
n與第二輸入值y
n的乘積「v
n」可根據以下方程式12來表達:
[方程式12]
如方程式12所示,乘積「v
n」的指數部分可基於第一輸入值x
n的指數e
n(x)及第二輸入值y
n的指數e
n(y),且乘積「v
n」的小數部分可基於第一輸入值x
n的小數
及第二輸入值y
n的小數
。
然後,可產生運算元(S16)。舉例而言,可結合在方法步驟S12中計算的指數之和以及在方法步驟S14中計算的小數的乘積來產生運算元。下文中將關於圖10來闡述方法步驟S16的一個實例。
圖10是在一個實例中進一步示出圖9所示的方法中產生運算元的步驟(S16)的流程圖。
參照圖9及圖10,可確定運算元的符號位元(S16_2)。舉例而言,基於第一輸入值「x
n」的符號位元s
n(x)及第二輸入值「y
n」的符號位元s
n(y),可根據以下方程式13來確定第一輸入值「x
n」與第二輸入值「y
n」的乘積「v
n」的符號位元「s
n」。
[方程式13]
然後,可對小數的乘積進行移位(S16_4)。與前述內容一致,可在圖9所示的方法的步驟S14中計算第一輸入值x
n的小數與第二輸入值y
n的小數的乘積,且可基於在圖9所示的方法的步驟S12中計算的指數之和來對小數的乘積進行移位。下文中將關於圖11來闡述方法步驟S16_4的一個實例。
圖11是偽代碼110的部分列表,偽代碼110可用於在執行浮點運算的方法期間對小數的乘積進行移位。亦即,在一些實施例中,可實行圖11所示的偽代碼110來執行圖10所示的操作S16_4。
參照圖10及圖11,可確定移位量(shift amount)(行111)。舉例而言,在方程式12的乘積「v
n」中,當施加增益「g」(g=29)時,可依據以下方程式14來表達實數「fn」:
[方程式14]
因此,可根據圖11的行111來定義移位量「r」。
可根據移位量「r」的符號來確定移位方向(行112)。如圖11所示,若移位量「r」為負數,則可藉由將h(x
n)與h(y
n)的乘積向右移位-r並對經移位的值進行捨入來計算「fn」(行113);否則,若移位量「r」為正數,則可藉由將h(x
n)與h(y
n)的乘積向左移位r來計算「fn」(行115)。由偽代碼110產生的實數「fn」可被提供為圖1所示的方法中的運算元中的一者。
圖12A及圖12B是示出根據本發明概念實施例的用於執行浮點運算的方法的相關流程圖。更具體而言,圖12A所示的流程圖是圖1所示的方法的實例,或者是對根據FP16表達的多對數的乘積進行求和的方法的實例,並且圖12B在一個實例中進一步示出圖12A所示的方法的步驟S202。在下文中,參照圖8A及圖8B作出的說明在參照圖12A及圖12B作出的說明中不再重複。
參照圖8A、圖8B及圖12A,用於執行浮點運算的方法假定預先提供輸入資料IN,輸入資料IN可包括包含N個第一運算元x[0]至x[N-1]的第一集合X及包含N個第二運算元y[0]至y[N-1]的第二集合Y。
因此,可對變數進行初始化(S200)。舉例而言,如圖12A所示,可將增益「g」設定為29,可將與正中間值的第一和對應的「psum」及與負中間值的第二和對應的「nsum」設定為0,且亦可將索引「n」設定為0。可自X及Y選擇一對輸入值(例如,第一輸入值x[n]及第二輸入值y[n])(S201)。亦即,可選擇一對輸入值。
然後,可更新「psum」或「nsum」,且可將「n」增加1(S202)。舉例而言,若在步驟S201中選擇的第一輸入值x[n]與第二輸入值y[n]的乘積是正數,則可更新「psum」,而若第一輸入值x[n]與第二輸入值y[n]的乘積是負數,則可更新「nsum」。下文中將關於圖12B來闡述方法步驟S202的一個實例。
然後,可將「n」與N進行比較(S203),並且若n不同於N(S203=否)(即,若n小於N),則所述方法可循環回步驟S201及S202;否則,若n等於N(即,若完全計算了「psum」及「nsum」)(S203=是),則所述方法可行進至方法步驟S204至S213,其中方法步驟S204至S213分別對應於圖8A所示的方法的方法步驟S104至S113。
參照圖12B,方法步驟S202'(例如,更新「psum」或「nsum」)可包括自第一輸入值x[n]提取符號「sx」、指數「ex」及小數「mx」(S202_1)。然後,可判斷第一輸入值x[n]的指數「ex」是否為0(S202_2)。若指數ex為0(S202=是)(即,若第一輸入值x[n]是次正規數),則可將指數「ex」設定為1(S202_3),並且可將「fx」設定為「m」。若指數「ex」為非零(S202_2=否)(即,若第一輸入值x[n]是正規數),則可藉由使隱藏前導位元與「mx」相加來設定「fx」(S202_4)。
然後,可自第二輸入值y[n]提取符號「sy」、指數「ey」及小數my(S202_5)。然後,可判斷第二輸入值y[n]的指數「ey」是否為0(S202_6)。因此,若指數「ey」為0(S202_6=是)(即,若第二輸入值y[n]是次正規數),則可將指數「ey」設定為1,且可將「fy」設定為「m」(S202_7)。然而,若指數「ey」為非零(S202_6=否)(即,若第二輸入值y[n]是正規數),則可藉由使隱藏前導位元與「my」相加來設定「fy」(S202_8)。
然後,可執行移位(S202_9)。舉例而言,可自第一輸入值x[n]的指數ex[n]及第二輸入值y[n]的指數ey[n]來計算移位量「r」。若移位量「r」是負數,則可執行向右移位及捨入,且若移位量「r」是正數,則可執行向左移位。
可將第一輸入值x[n]的符號「sx」與第二輸入值y[n]的符號「sy」進行比較(S202_10)。若該兩個符號相同(S202_10=是),則可使「frac」與「psum」相加(S202_11);否則,若該些符號不同,則可使「frac」與「nsum」相加(S202_12)。
圖13是示出根據本發明概念實施例的可用於執行浮點運算的系統130的方塊圖。亦即,在一些實施例中,系統130可實行執行與本發明概念的實施例一致的浮點運算的方法。
參照圖1及圖13,系統130可包括增益計算電路132、正規化電路134、定點運算電路136及後處理電路138。此處,增益計算電路132、正規化電路134、定點運算電路136及後處理電路138中的每一者可以硬體、韌體及/或軟體以各種方式進行配置。舉例而言,增益計算電路132、正規化電路134、定點運算電路136及後處理電路138中的每一者可被實施為一或多個可程式化組件,例如中央處理單元(central processing unit,CPU)、數位訊號處理器(digital signal processor,DSP)、圖形處理單元(graphics processing unit,GPU)及神經處理單元(neural processing unit,NPU)。作為另外一種選擇或另外地,增益計算電路132、正規化電路134、定點運算電路136及後處理電路138中的每一者可被實施為:可重新配置的組件,例如現場可程式化閘陣列(field programmable gate array,FPGA);或者被配置成執行一或多個功能的組件,例如智慧財產(intellectual property,IP)核心。
增益計算電路132可用於執行圖1所示的方法的步驟S30。舉例而言,增益計算電路132可接收運算元(OP),並基於運算元OP的指數的範圍來計算增益「g」。
正規化電路134可用於執行圖1所示的方法的步驟S50。舉例而言,正規化電路134可接收運算元OP及增益「g」,並藉由將增益「g」施加於運算元OP來產生具有定點格式的中間值(INT)。
定點運算電路136可用於執行圖1所示的方法的步驟S70。舉例而言,定點運算電路136可接收定點的中間值INT,且藉由對中間值INT執行一或多個算術運算而根據特定的定點格式來產生定點結果值(RES)。
後處理電路138可用於執行圖1所示的方法中的步驟S90。舉例而言,後處理電路138可接收定點結果值RES,且使用定點結果值RES而根據特定的浮點格式來產生浮點輸出值(OUT)。
圖14是示出根據本發明概念實施例的系統140的方塊圖。如圖14所示,系統140一般可包括處理器141及記憶體142,其中處理器141被配置成執行一或多個浮點運算。
系統140可以硬體、韌體及/或軟體以各種方式進行實施,使得處理器141實行根據儲存於記憶體142中的程式化代碼而定義的指令。在一些實施例中,系統140可為獨立的計算系統,例如下文中關於圖15闡述的系統。作為另外一種選擇,系統140可被實施為更通用(或能力更高)的系統的一部分,例如系統晶片(system-on-chip,SoC),其中處理器141及記憶體142通常被整合於單個晶片、包括處理器141及記憶體142的模組以及包括處理器141及記憶體142的板(例如,印刷電路板)等之內。
處理器141可與記憶體142通訊,讀取儲存於記憶體142中的指令及/或資料,並將資料寫入記憶體142。如圖14所示,處理器141可包括位址產生器141_1、指令高速緩衝記憶體141_2、擷取電路141_3、解碼電路141_4、執行電路141_5及暫存器141_6。
位址產生器141_1可產生用於讀取指令及/或資料的位址,並將所產生的位址提供至記憶體142。舉例而言,位址產生器141_1可接收解碼電路141_4藉由對指令進行解碼所提取的資訊,並基於接收到的資訊而產生位址。
指令高速緩衝記憶體141_2可自記憶體142的與由位址產生器141_1產生的位址對應的區接收指令且臨時儲存接收到的指令。藉由實行預先儲存於指令高速緩衝記憶體141_2中的指令,可減少實行指令所花費的總時間。
擷取電路141_3可擷取儲存於指令高速緩衝記憶體141_2中的指令中的至少一者,並將所擷取的指令提供至解碼電路141_4。在一些實施例中,擷取電路141_3可擷取用於執行浮點運算的至少一部分的指令並將所擷取的指令提供至解碼電路141_4。
解碼電路141_4可自擷取電路141_3接收所擷取的指令並對所擷取的指令進行解碼。如圖14所示,解碼電路141_4可將藉由對指令進行解碼而提取的資訊提供至位址產生器141_1及執行電路141_5。
執行電路141_5可自解碼電路141_4接收經解碼的指令並對暫存器141_6進行存取。舉例而言,執行電路141_5可基於自解碼電路141_4接收到的經解碼的指令來對暫存器141_6中的至少一者進行存取且執行浮點運算的至少一部分。
暫存器141_6可由執行電路141_5進行存取。舉例而言,暫存器141_6可因應於執行電路141_5的存取而向執行電路141_5提供資料,或者因應於執行電路141_5的存取而儲存自執行電路141_5提供的資料。另外,暫存器141_6可儲存自記憶體142讀取的資料或者儲存欲儲存於記憶體142中的資料。舉例而言,暫存器141_6可自記憶體142的與由位址產生器141_1產生的位址對應的區接收資料並儲存接收到的資料。另外,暫存器141_6可向記憶體142提供欲被寫入記憶體142的與由位址產生器141_1所產生的位址對應的區的資料。
記憶體142可具有被配置成儲存指令及/或資料的任意結構。舉例而言,記憶體142可包括例如靜態隨機存取記憶體(static random access memory,SRAM)或DRAM等揮發性記憶體、或者例如快閃記憶體或電阻式隨機存取記憶體(resistive random access memory,RRAM)等非揮發性記憶體。
圖15是示出根據本發明概念實施例的能夠執行浮點運算的計算系統150的方塊圖。
在一些實施例中,計算系統150可包括:定置式計算系統(stationary computing system),例如桌上型電腦、工作站或伺服器;或者可攜式計算系統,例如膝上型電腦。計算系統150可包括至少一個處理器151、輸入/輸出(input/output,I/O)介面152、網路介面153、記憶體子系統154、儲存器155及匯流排156,且所述至少一個處理器151、I/O介面152、網路介面153、記憶體子系統154及儲存器155可經由匯流排156彼此進行通訊。
所述至少一個處理器151可被稱為至少一個處理單元,並且可如CPU、GPU、NPU及DSP一樣進行程式化。舉例而言,所述至少一個處理器151可經由匯流排156對記憶體子系統154進行存取並實行儲存於記憶體子系統154中的指令。在一些實施例中,計算系統150可更包括作為被設計成高速執行特定功能的專用硬體的加速器。
I/O介面152可包括例如鍵盤及定點裝置(pointing device)等輸入裝置及/或例如顯示裝置及列印機等輸出裝置,或者提供對輸入裝置及/或輸出裝置的存取。使用者可藉由I/O介面152啟動程式155_1的實行及/或資料155_2的加載並檢查程式155_1的實行結果。
網路介面153可提供對計算系統150外部的網路的存取。舉例而言,網路可包括多個計算系統及/或通訊鏈路,其中每一通訊鏈路可包括一或多個硬連線鏈路(hardwired link)、一或多個光學連接鏈路(optically-connected link)及/或一或多個無線鏈路。
記憶體子系統154可儲存程式155_1或程式155_1的至少一部分以執行上面參照附圖闡述的浮點運算,且所述至少一個處理器151可藉由實行儲存於記憶體子系統154中的程式(或指令)來執行浮點運算中所包括的運算中的至少一些運算。記憶體子系統154可包括唯讀記憶體(read-only memory,ROM)、隨機存取記憶體(random access memory,RAM)等。
儲存器155可包括非暫時性電腦可讀取儲存媒體,並且即使當供應至計算系統150的電力被阻斷時亦可能不會丟失所儲存的資料。舉例而言,儲存器155可包括非揮發性記憶體裝置且包括例如磁帶、光碟或磁碟等儲存媒體。另外,儲存器155可自計算系統150拆離。如圖15所示,儲存器155可儲存程式155_1及資料155_2。
在被所述至少一個處理器151實行之前,程式155_1的至少一部分可被加載於記憶體子系統154上。程式155_1可包括一系列指令。在一些實施例中,儲存器155可儲存使用程式化語言編輯的檔案,且由編譯器等自所述檔案產生的程式155_1或者程式155_1的至少一部分可被加載於記憶體子系統154上。
資料155_2可包括與浮點運算相關聯的資料。舉例而言,資料155_2可包括浮點運算的運算元、中間值、結果值及/或輸出值。
儘管已參照本發明的實施例具體示出及闡述了本發明概念,然而應理解,可在不背離以下申請專利範圍的精神及範圍的條件下,對其作出形式及細節上的各種改變。
50、110:偽代碼
51、52、53、54、55、56、57、111、112、113、114、115、116:排
130、140:系統
132:增益計算電路
134:正規化電路
136:定點運算電路
138:後處理電路
141、151:處理器
141_1:位址產生器
141_2:指令高速緩衝記憶體
141_3:擷取電路
141_4:解碼電路
141_5:執行電路
141_6:暫存器
142:記憶體
150:計算系統
152:輸入/輸出(I/O)介面
153:網路介面
154:記憶體子系統
155:儲存器
155_1:程式
155_2:資料
156:匯流排
b
0:最低有效位元(LSB)/位元
b
1、b
2、b
3、b
4、b
5、b
6、b
7、b
8、b
11、b
12、b
13、b
14:位元
b
9:第十位元/位元
b
10:第十一位元/位元
b
15:最高有效位元(MSB)
e:指數部分
e
n(x)、e
n(y)、ex、ex[n]、ey、ey[n]:指數
FP
max:最大值
FP
min:最小值
g:增益
IN:輸入資料
INT:中間值
m:小數部分
mx、my:小數
OP:運算元資料/運算元
OUT:輸出資料/浮點輸出值
r:移位量
RES:定點結果值
s、s
n、s
n(x)、s
n(y):符號位元
S10、S12、S14、S16、S30、S50、S70、S90、S101、S102、S201、S202:方法步驟/步驟
S10'、S16_4、S102_3、S102_4:方法步驟/操作
S16_2、S32、S34、S70'、S72、S74、S76、S94、S96、S98、S100、S102'、S102_1、S102_2、S102_5、S102_6、S102_7、S102_8、S103、S104、S105、S106、S107、S108、S109、S110、S111、S112、S113、S200、S202'、S202_1、S202_2、S202_3、S202_4、S202_5、S202_6、S202_7、S202_8、S202_9、S202_10、S202_11、S202_12、S203、S204、S205、S206、S207、S208、S209、S210、S211、S212、S213:方法步驟
S30':步驟
sx、sy:符號
X:第一集合/集合
x[0]~x[N-1]:第一運算元/運算元
x[n]:運算元/第一輸入值
x
n:第一輸入值
Y:第二集合
y[0]~y[N-1]:第二運算元
y[n]、y
n:第二輸入值
結合附圖考量以下詳細說明,可更清楚地理解本發明概念的優點、有益效果及特徵、以及本發明概念的形成及使用,在附圖中:
圖1是示出根據本發明概念實施例的執行浮點運算的方法的流程圖。
圖2是示出根據本發明概念實施例的浮點格式的概念圖。
圖3是在一個實施例中進一步示出圖1所示的方法中計算增益的步驟的流程圖。
圖4是在一個實施例中進一步示出圖1所示的方法中產生具有定點格式的結果值的步驟的流程圖。
圖5是根據本發明概念實施例的浮點運算的偽代碼的部分示例性列表。
圖6是在一個實施例中進一步示出圖1所示的方法中產生具有浮點格式的輸出值的步驟的流程圖。
圖7是示出根據本發明概念實施例的結果值的概念圖。
圖8A及圖8B是示出根據本發明概念實施例的執行浮點運算的方法的相關流程圖。
圖9是在一個實施例中進一步示出圖1所示的方法中產生運算元的步驟的流程圖。
圖10是在一個實施例中進一步示出圖9所示的方法中產生運算元的步驟的流程圖。
圖11是根據本發明概念實施例的浮點運算的偽代碼的部分示例性列表。
圖12A及圖12B是示出根據本發明概念實施例的執行浮點運算的方法的相關流程圖。
圖13是示出根據本發明概念實施例的執行浮點運算的系統的方塊圖。
圖14是示出根據本發明概念實施例的系統的方塊圖。
圖15是示出根據本發明概念實施例的計算系統的總體方塊圖。
S10、S30、S50、S70、S90:方法步驟/步驟
Claims (10)
- 一種執行浮點運算的方法,所述方法包括: 獲得運算元,其中所述運算元中的每一者以浮點格式表達; 基於所述運算元的運算元指數的範圍來計算增益; 藉由將所述增益施加於所述運算元來產生中間值,其中所述中間值中的每一者以定點格式表達; 藉由對所述中間值執行算術運算來產生定點結果值,其中所述定點結果值以所述定點格式表達;以及 自所述定點結果值產生浮點輸出值,其中所述浮點輸出值以所述浮點格式表達。
- 如請求項1所述的方法,其中計算所述增益包括: 獲得所述運算元指數的最大值及最小值;以及 基於所述運算元指數的所述最大值與所述最小值之間的差來計算所述增益。
- 如請求項2所述的方法,其中所述運算元指數的所述最大值及所述最小值分別是所述浮點格式的最大指數及最小指數。
- 如請求項3所述的方法,其中所述浮點格式是半精度浮點格式,且 基於所述運算元指數的所述最大值與所述最小值之間的所述差來計算所述增益包括自所述半精度浮點格式的最大指數與所述半精度浮點格式的最小指數之間的差減去1。
- 如請求項1所述的方法,其中藉由對所述中間值執行所述算術運算來產生所述定點結果值包括: 計算所述中間值之中的正中間值的第一和; 計算所述中間值之中的負中間值的第二和;以及 基於所述第一和與所述第二和之間的差來計算所述中間值之和。
- 如請求項1所述的方法,其中自所述定點結果值產生所述浮點輸出值包括: 對包括最高有效位元且不包括所述定點結果值的符號位元的連續零的數目進行計數以產生計數值;以及 基於所述增益及所述計數值來計算所述浮點輸出值的指數及小數。
- 如請求項1所述的方法,其中自所述定點結果值產生所述浮點輸出值包括: 將所述浮點輸出值設定為以所述浮點格式表達的值;以及 若所述定點結果值超出所述浮點格式的範圍,則指示正無窮大及負無窮大中的一者。
- 如請求項1所述的方法,其中對於所述運算元中的每一者,獲得所述運算元包括: 將一對輸入值的指數相加以產生所述一對輸入值的指數之和;以及 將所述一對輸入值的小數相乘以產生所述小數的乘積,其中所述一對輸入值中的每一者以所述浮點格式表達。
- 如請求項8所述的方法,其中對於所述運算元中的每一者,獲得所述運算元更包括: 基於所述一對輸入值的符號位元來確定符號位元;以及 基於所述一對輸入值的所述指數之和來使所述小數的所述乘積移位。
- 一種執行浮點運算的系統,所述系統包括: 增益計算電路,被配置成獲得運算元且基於運算元指數的範圍來計算增益,其中所述運算元中的每一者以浮點格式表達; 正規化電路,被配置成藉由將所述增益施加於所述運算元來產生中間值,其中所述中間值中的每一者以定點格式表達; 定點運算電路,被配置成藉由對所述中間值執行算術運算來產生定點結果值,其中所述定點結果值以所述定點格式表達;以及 後處理電路,被配置成將所述定點結果值轉換成浮點輸出值,其中所述浮點輸出值以所述浮點格式表達。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0163767 | 2021-11-24 | ||
KR1020210163767A KR20230076641A (ko) | 2021-11-24 | 2021-11-24 | 부동-소수점 연산을 위한 장치 및 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202333041A true TW202333041A (zh) | 2023-08-16 |
Family
ID=86383785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111144751A TW202333041A (zh) | 2021-11-24 | 2022-11-23 | 執行浮點運算的系統及方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230161555A1 (zh) |
KR (1) | KR20230076641A (zh) |
CN (1) | CN116166217A (zh) |
TW (1) | TW202333041A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117785108B (zh) * | 2024-02-27 | 2024-06-14 | 芯来智融半导体科技(上海)有限公司 | 一种前导数处理方法、系统、设备及存储介质 |
-
2021
- 2021-11-24 KR KR1020210163767A patent/KR20230076641A/ko unknown
-
2022
- 2022-11-22 US US17/992,130 patent/US20230161555A1/en active Pending
- 2022-11-22 CN CN202211466221.9A patent/CN116166217A/zh active Pending
- 2022-11-23 TW TW111144751A patent/TW202333041A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
US20230161555A1 (en) | 2023-05-25 |
KR20230076641A (ko) | 2023-05-31 |
CN116166217A (zh) | 2023-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110036368B (zh) | 用于执行算术运算以累加浮点数的装置及方法 | |
CN107608715B (zh) | 用于执行人工神经网络正向运算的装置及方法 | |
US20190087718A1 (en) | Hardware Implementation of a Deep Neural Network with Variable Output Data Format | |
US9519460B1 (en) | Universal single instruction multiple data multiplier and wide accumulator unit | |
US10579338B2 (en) | Apparatus and method for processing input operand values | |
EP3769208B1 (en) | Stochastic rounding logic | |
JPH11511577A (ja) | パック・データの乗加算演算を実行する装置 | |
JP2019139338A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
CN113076083B (zh) | 数据乘加运算电路 | |
CN113296732B (zh) | 数据处理方法和装置,处理器及数据搜索方法和装置 | |
US20230259578A1 (en) | Configurable pooling processing unit for neural network accelerator | |
CN114970807A (zh) | Softmax和指数在硬件中的实施 | |
CN1862483A (zh) | 具有有效的函数估计指令的处理器 | |
TW202333041A (zh) | 執行浮點運算的系統及方法 | |
US20230334117A1 (en) | Method and system for calculating dot products | |
WO2023116400A1 (zh) | 向量运算方法、向量运算器、电子设备和存储介质 | |
US11275713B2 (en) | Bit-serial linear algebra processor | |
WO2020161458A1 (en) | Encoding special value in anchored-data element | |
JP2020067897A (ja) | 演算処理装置、学習プログラム及び学習方法 | |
TW202217551A (zh) | 處理模數乘法的裝置及方法 | |
Hass | Synthesizing optimal fixed-point arithmetic for embedded signal processing | |
US20240086152A1 (en) | Calculation unit for multiplication and accumulation operations | |
JP3541086B2 (ja) | 除算結果、及び開平算結果に正確な丸め処理を行う方法、及び装置 | |
CN112862086A (zh) | 一种神经网络运算处理方法、装置及计算机可读介质 | |
CN118302744A (zh) | 用于机器学习的浮点对数系统缩放系统 |