TWI847519B - 一種浮點數運算方法以及相關的算術單元 - Google Patents
一種浮點數運算方法以及相關的算術單元 Download PDFInfo
- Publication number
- TWI847519B TWI847519B TW112103523A TW112103523A TWI847519B TW I847519 B TWI847519 B TW I847519B TW 112103523 A TW112103523 A TW 112103523A TW 112103523 A TW112103523 A TW 112103523A TW I847519 B TWI847519 B TW I847519B
- Authority
- TW
- Taiwan
- Prior art keywords
- exponent
- mantissa
- register
- threshold
- arithmetic unit
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Nonlinear Science (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Analogue/Digital Conversion (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一種浮點數運算方法,應用於第一浮點數與第二浮點數的乘法運算。第一浮點數包含第一符號、第一指數及第一尾數,第二浮點數包含第二符號、第二指數及第二尾數。方法包含使用算術單元進行以下步驟:將第一指數與指數閾值比較,其中當第一指數不小於指數閾值,將第一尾數與第二尾數相乘以產生一尾數運算結果;根據尾數運算結果、第一指數與第二指數的指數運算結果產生計算後浮點數。
Description
本發明涉及一種浮點數運算的應用,尤其是一種浮點數運算方法以及相關的算術單元。
隨著機器學習(Machine Learning)領域越來越廣泛所帶來的龐大的浮點數運算量,如何壓縮浮點數資料以增加運算速度及降低功耗成為本領域人士致力研究的議題。現有的浮點數技術皆使用均勻的編碼及運算,這導致過度設計(over design),且因為儲存了不必要的資料而浪費儲存空間,並且增加傳輸時間及運算功耗。
綜上所述,實有需要一種新穎的浮點數運算方法及硬體架構來改善現有技術的問題。
根據以上需求,本發明的目的之一在於提供一種高效的浮點數編碼及運算方法,以在不大幅增加成本的前提下改善現有技術中浮點數運算的缺陷,進而提高運算速度並降低功耗。
本發明一實施例提供了一種浮點數運算方法,應用於一第一暫存器及一第二暫存器之間的乘法運算,該第一暫存器儲存第一浮點數,該第二暫存器儲存第二浮點數;該第一暫存器包含第一正負號位元(Sign bit)、第一指數位元(Exponent bit)及第一尾數位元(Mantissa bit),分別儲存第一符號、第一指數及第一尾數;該第二暫存器包含第二正負號位元、第二指數位元及第二尾數位元,分別儲存第二符號、第二指數及第二尾數;其中該方法包含使用一算術單元(Arithmetic Unit)進行以下步驟:將該第一指數與一指數閾值進行比較,其中當該第一指數不小於該指數閾值,將該第一尾數與第二尾數相乘以產生一尾數運算結果;當該第一指數小於該指數閾值,則將該第一尾數捨棄至少一個位元後,與第二尾數相乘以產生尾數運算結果(或將該第一尾數全部位元捨棄);將該第一指數與該第二指數進行相加運算,以產生一指數運算結果;以及根據該尾數運算結果及該指數運算結果產生一計算後浮點數。
除了上述方法,本發明另一實施例提供了一種算術單元,其耦接於一第一暫存器及一第二暫存器,該第一暫存器儲存第一浮點數,該第二暫存器儲存第二浮點數;該第一暫存器包含第一指數位元及第一尾數位元,分別儲存第一符號、第一指數及第一尾數;該第二暫存器包含第二指數位元及第二尾數位元,分別儲存第二符號、第二指數及第二尾數;其中於處理該第一暫存器及該第二暫存器之間的乘法運算時,該算術單元進行以下步驟:將該第一指數與一指數閾值進行比較,其中當該第一指數不小於該指數閾值,將該第一尾數與第二尾數相乘以產生尾數運算結果;當該第一指數小於該指數閾值,則將該第一尾數捨棄至少一個位元後,與第二尾數相乘以產生尾數運算結果(或將該第一尾數全部位元捨棄);將該第一指數與該第二指數進行相加運算,以產生一指數運算結果;以及根據該尾數運算結果及該指數運算結果產生一計算後浮點數。
本發明另一實施例提供了一種運算裝置,包含一算術單元、一第一暫存器、一第二暫存器,該算術單元耦接於該第一暫存器及該第二暫存器,該第一暫存器儲存第一浮點數,該第二暫存器儲存第二浮點數;該第一暫存器包含第一指數位元及第一尾數位元,分別儲存第一符號、第一指數及第一尾數;該第二暫存器包含第二指數位元及第二尾數位元,分別儲存第二符號、第二指數及第二尾數;其中於處理該第一暫存器及該第二暫存器之間的乘法運算時,該算術單元進行以下步驟:將該第一指數與一指數閾值進行比較,其中當該第一指數不小於該指數閾值,將該第一尾數與第二尾數相乘以產生一尾數運算結果;當該第一指數小於該指數閾值,則將該第一尾數捨棄至少一個位元後,與第二尾數相乘以產生尾數運算結果(或將該第一尾數全部位元捨棄);將該第一指數與該第二指數進行相加運算,以產生一指數運算結果;以及根據該尾數運算結果及該指數運算結果產生一計算後浮點數。
可選地,根據本發明一實施例,該指數閾值儲存於一第三暫存器中,該算術單元於執行該第一暫存器及該第二暫存器之間的乘法運算時存取該第三暫存器。
可選地,根據本發明一實施例,該第一暫存器另包含第一正負號位元(Sign bit),該第一正負號位元儲存第一符號;該第二暫存器另包含第二正負號位元,該第二正負號位元儲存第二符號,該浮點數運算方法另包含:將該第一符號與該第二符號進行異或(XOR)運算,以產生一符號運算結果;以及根據該尾數運算結果、該符號運算結果及該指數運算結果產生一計算後浮點數。
可選地,根據本發明一實施例,當該第一指數小於該指數閾值,該第一尾數僅被暫存而不涉及運算。
可選地,根據本發明一實施例,該指數閾值為動態可調。
可選地,根據本發明一實施例,該指數閾值係根據該算術單元的溫度及/或該算術單元的處理事項類型進行動態調整。
可選地,根據本發明一實施例,該指數閾值係介於一動態可調的範圍,該算術單元以數值為1的指數閾值開始訓練,由該算術單元判斷運算精確度是否高於一精確度閾值條件,若符合該條件則遞增該指數閾值的數值,直至該運算精確度不高於一精確度閾值,該動態可調的範圍為該些符合該條件的指數閾值。
可選地,根據本發明一實施例,第一暫存器耦合記憶體,該記憶體儲存第一指數,當該第一指數小於該指數閾值,該第一尾數的至少一個位元被捨棄而不被該記憶體儲存。
可選地,根據本發明一實施例,當該第一指數小於該指數閾值,該第一尾數的至少一個位元為不理會狀態(Don’t care)。
可選地,根據本發明一實施例,當該第一指數小於該指數閾值,該第一浮點數解碼成(-1)
Sign1× 2
Exponent1,其中Sign1代表該第一正負號,Exponent1代表該第一指數。
可選地,根據本發明一實施例,其中當該第二指數小於該指數閾值,該第二浮點數解碼成(-1)
Sign2× 2
Exponent2,其中Sign2代表該第二正負號,Exponent2代表該第二指數。
可選地,根據本發明一實施例,所述浮點數運算方法另包含以該算術單元存取一記憶體,該記憶體儲存有複數組批量範數係數(Batch Normalization Coefficient),分別對應於多個候選閾值,該指數閾值係選自該些候選閾值中的一者。批量範數係數係為人工智慧運算中,調整數值的平均及標準差的係數。通常一筆特徵圖(Feature map)數值資料會對應一組特定的批量範數係數,根據本實施例,一筆特徵圖數值資料的運算過程因為指數閾值不同,而尾數省略的情況也會不同,故本發明對應提供複數組批量範數係數。
綜上所述,本發明於浮點數的指數欄位值小於閾值,可將尾數捨棄以進一步節省儲存空間,或僅儲存尾數而不被解碼及運算,以節省資料傳輸與運算功耗。此外,藉由閾值的可調性,所搭配的電子產品可彈性地在高效能模式和低功耗模式之間作折衷取捨,如此一來,本發明得以在符合應用程式對於精確度的要求的情況下節省功耗並加快運算速度。
本發明特別以下述例子加以描述,這些例子僅係用以舉例說明而已,因為對於熟習此技藝者而言,在不脫離本揭示內容之精神和範圍內,當可作各種之更動與潤飾,因此本揭示內容之保護範圍當視後附之申請專利範圍所界定者為準。在通篇說明書與申請專利範圍中,除非內容清楚指定,否則「一」以及「該」的意義包含這一類敘述包含「一或至少一」元件或成分。此外,如本發明所用,除非從特定上下文明顯可見將複數排除在外,否則單數冠詞亦包含複數個元件或成分的敘述。而且,應用在此描述中與下述之全部申請專利範圍中時,除非內容清楚指定,否則「在其中」的意思可包含「在其中」與「在其上」。在通篇說明書與申請專利範圍所使用之用詞(terms),除有特別註明,通常具有每個用詞使用在此領域中、在此揭露之內容中與特殊內容中的平常意義。某些用以描述本發明之用詞將於下或在此說明書的別處討論,以提供從業人員(practitioner)在有關本發明之描述上額外的引導。在通篇說明書之任何地方之例子,包含在此所討論之任何用詞之例子的使用,僅係用以舉例說明,當然不限制本發明或任何例示用詞之範圍與意義。同樣地,本發明並不限于此說明書中所提出之各種實施例。
在此所使用的用詞「實質上(substantially)」、「大約(around)」、「約(about)」或「近乎(approximately)」應大體上意味在給定值或範圍的20%以內,較佳係在10%以內。此外,在此所提供之數量可為近似的,因此意味著若無特別陳述,可以用詞「大約」、「約」或「近乎」加以表示。當數量、濃度或其他數值或參數有指定的範圍、較佳範圍或表列出上下理想值之時,應視爲特別揭露由任何上下限之數對或理想值所構成的所有範圍,不論等範圍是否分別揭露。舉例而言,如揭露範圍某長度為X公分到Y公分,應視為揭露長度為H公分且H可為X到Y之間之任意實數。
此外,若使用「電(性)耦接」或「電(性)連接」一詞在此係包含任何直接及間接的電氣連接手段。舉例而言,若文中描述第一裝置電性耦接于第二裝置,則代表第一裝置可直接連接于第二裝置,或透過其他裝置或連接手段間接地連接至第二裝置。另外,若描述關于電訊號之傳輸、提供,熟習此技藝者應可以瞭解電訊號之傳遞過程中可能伴隨衰减或其他非理想性之變化,但電訊號傳輸或提供之來源與接收端若無特別叙明,實質上應視爲同一訊號。舉例而言,若由電子電路之端點A傳輸(或提供)電訊號S給電子電路之端點B,其中可能經過電晶體開關之源汲極兩端及/或可能之雜散電容而產生電壓降,但此設計之目的若非刻意使用傳輸(或提供)時産生之衰减或其他非理想性之變化而達到某些特定的技術效果,電訊號S在電子電路之端點A與端點B應可視為實質上為同一訊號。
可瞭解如在此所使用的用詞「包含(comprising或including)」、「具有(having)」、「含有(containing)」、「涉及(involving)」等等,為開放性的(open-ended),即意指包含但不限於。另外,本發明的任一實施例或申請專利範圍不須達成本發明所揭露之全部目的或優點或特點。此外,摘要部分和標題僅是用來輔助專利文件搜尋之用,並非用來限制本發明之申請專利範圍。
請參考圖1,圖1係為根據本發明一實施例的算術單元110應用於運算裝置100的示意圖。如圖1所示,運算裝置100包含算術單元110、第一暫存器111、第二暫存器112、第三暫存器113及記憶體114,算術單元110係耦接於第一暫存器111、第二暫存器112及第三暫存器113,且記憶體114係耦接於第一暫存器111、第二暫存器112及第三暫存器113。值得注意的是,記憶體114僅為運算裝置100內記憶單元的總稱,亦即記憶體114可以是獨立的記憶單元,或泛指運算裝置100內所有可能的記憶單元,例如第一暫存器111、第二暫存器112及第三暫存器113可能各自耦接於不同的記憶體。運算裝置100可以是任何具備運算能力的裝置,諸如中央處理器(CPU)、圖形處理器(GPU)、人工智慧加速器(AI Accelerator)、可程式邏輯陣列(FPGA)、桌上型電腦、筆記型電腦、智慧型手機、平板電腦、智慧穿戴裝置等。對於儲存於第一暫存器111和第二暫存器112內的浮點數的尾數,本發明可進行忽略而不儲存於記憶體114中,藉此節省記憶體空間。此外,記憶體114可儲存有複數組批量範數係數(Batch Normalization Coefficient),分別對應於多個候選閾值,上述指數閾值係選自該等候選閾值中的一者。批量範數係數係為人工智慧運算中,調整數值的平均及標準差的係數。通常一筆特徵圖(Feature map)數值資料,對應一組特定的批量範數係數。通常一筆特徵圖(Feature map)數值資料會對應一組特定的批量範數係數,根據本實施例,一筆特徵圖數值資料的運算過程因為指數閾值不同,而尾數省略的情況也會不同,故本發明對應提供複數組批量範數係數。第一暫存器111係用以儲存第一浮點數,第二暫存器112係用以儲存第二浮點數,且第三暫存器113係用以儲存一指數閾值,第一暫存器111與第二暫存器112進行運算時會存取第三暫存器113,以讀取指數閾值。舉例來說,請參考圖2,圖2係為現有技術中暫存器儲存浮點數的示意圖。如圖2所示,浮點數會分為正負號(Sign)、指數(Exponent) 及尾數(Mantissa)而儲存於暫存器的三個不同欄位,解碼運算時都解碼成:
(-1)
Sign× 1.Mantissa × 2
Exponent其中Sign代表此浮點數的正負號,Exponent代表此浮點數的指數。一般來說,暫存器的最左一位元會分配作為正負號位元以儲存正負號,其餘多個位元(例如7~63個位元)會分別分配作為指數位元及尾數位元以儲存指數和尾數。在圖2的例子中,正負號位元、指數位元及尾數位元的總和可為8~64位元,但本發明不以此為限,上述位元的總和亦可為8位元以下,例如7位元。
接著請參閱圖3,圖3係為根據本發明一實施例的暫存器儲存浮點數的示意圖。本發明係將浮點數的指數位元與一指數閾值進行比較,主要透過設定一指數閾值來選擇對於浮點數的尾數的處理模式,如圖3所示,在單精度(Float 32)表示下,十進制數值“0.3057”轉換為二進制浮點數即為“00111110100111001000010010110110”,其中最高位元算起第一個位元儲存“0”以表示正負號,第二~第九位元儲存指數,其餘位元儲存尾數,當第二~第九位元“01111101”高於指數閾值時,將尾數“00111001000010010110110”視為有效,並將其儲存於第10~第32位元,如此一來,此浮點數在後續和其他浮點數進行運算時,尾數部分會被實際使用。
在另一範例中,十進制數值“-0.002”轉換為二進制浮點數即為“10111011000000110001001001101111”,其中最高位元算起第一個位元儲存“1”以表示正負號,第二~第九位元儲存指數,其餘位元儲存尾數,當第二~第九位元“01110110”小於指數閾值時,將尾數“00000110001001001101111”視為無效而不進行儲存,故此時第10~第32位元為空,如此一來,此浮點數在後續和其他浮點數進行運算時,尾數部分不會參與計算。換言之,當浮點數的指數欄位值小於閾值,即代表此浮點數數值小,而在忽略該浮點數的尾數的情況下,浮點數可解碼成:
(-1)
Sign× 2
Exponent其中尾數的全部位元可不參與計算,也可不用傳輸進入暫存器,如此可節省功耗與傳輸,甚至尾數可根本不儲存在於記憶體中,以進一步節省儲存空間。在另一實施方式中,尾數的至少一個位元不參與計算,且不被傳輸進入暫存器,甚至不儲存在於記憶體中,以進一步節省儲存空間
在又一範例中,十進制數值“0.003”轉換為二進制浮點數即為“00111011010001001001101110100110”,其中最高位元算起第一個位元儲存“1”以表示正負號,第二~第九位元儲存指數,其餘位元儲存尾數,當第二~第九位元“01110110”小於指數閾值時,將尾數“10001001001101110100110”視為可忽略,但仍將其儲存於第10~第32位元並標注為不理會狀態(Don’t care),如此一來,此浮點數在後續和其他浮點數進行運算時,尾數部分不會參與計算。本範例和前一個範例的差別在於,尾數可以存在但不被解碼及運算,以進一步節省資料傳輸與運算功耗。同理,在圖3的例子中,正負號位元、指數位元及尾數位元的總和可為8~64位元,但本發明不以此為限,上述位元的總和亦可為8位元以下,例如7位元。
請參考圖4,圖4係為本發明對二浮點數進行相乘的算術單元架構示意圖。如前所述,第一浮點數可提取自第一暫存器111,第二浮點數可提取自第二暫存器112,指數閾值可提取自第三暫存器113。第一暫存器包含第一正負號位元、指數位元及尾數位元,分別儲存第一符號(即對應第一浮點數的正負號)、第一指數及第一尾數;第二暫存器包含第二正負號位元、指數位元及尾數位元,分別儲存第二符號、第二指數及第二尾數。
於處理第一暫存器111及第二暫存器112之間的乘法運算時,算術單元110透過比較邏輯144將第一指數與指數閾值進行比較,其中當第一指數不小於指數閾值,代表第一浮點數的數字相對較大,不可忽略尾數的有效數字,則透過乘法邏輯143將第一尾數與第二尾數相乘以產生尾數運算結果(亦即比較邏輯144的輸出);若第一指數小於指數閾值,代表第一浮點數數字相對較小,可忽略尾數有效數字,則將該第一尾數捨棄至少一個位元(例如一個或多個位元)後,與第二尾數相乘以該尾數運算結果,此步驟可包括僅捨棄一個或若干位元,或者捨棄全部位元(亦即忽略整個第一尾數,相當於直接根據第二尾數產生尾數運算結果)。較佳地,捨棄整個第一尾數能降低更多功耗,但在精確度有要求的情況下,即便僅捨棄1個位元亦能達到降低功耗的目的。此外,可透過異或邏輯141進行第一符號與第二符號之間的異或運算以產生一符號運算結果(亦即異或邏輯141的輸出),透過加法邏輯142將第一指數與第二指數進行相加運算以產生指數運算結果(亦即加法邏輯142的輸出)。最後,根據上述尾數運算結果、符號運算結果及指數運算結果產生一計算後浮點數,作為最終運算結果。其中,當第一指數小於指數閾值時,第一浮點數解碼成(-1)
Sign1× 2
Exponent1,其中Sign1代表第一正負號,Exponent1代表第一指數。同理,除了比較第一指數與指數閾值,本實施例可進一步比較第二指數與指數閾值,當第二指數小於指數閾值,第二浮點數解碼成(-1)
Sign2× 2
Exponent2,其中Sign2代表第二正負號,Exponent2代表第二指數。本實施例中異或邏輯141、加法邏輯142、乘法邏輯143及比較邏輯144的呈現方式僅為舉例,確切的實作方式可根據實際需求作出變化,而與本實施例所示之態樣有所不同,然本發明包括所有可能的細節調整,並不額外限制。例如,單精度(single-precision)浮點數算術單元的乘法邏輯143,係將Mantissa 解讀為1.Mantissa,即小數點左邊位元為1,小數點右邊右邊為Mantissa,但不以此為限。此外,單精度浮點數算術單元的加法邏輯142,係將Exponent解讀為(Exponent-127)再進行加法,但亦不以此為限。雖然以上大致以對第一尾數的儲存及傳輸進行精簡化,但同樣的概念亦可應用在第二尾數,例如以上舉例中的第一尾數和第二尾數可角色互換,或者對於第一尾數和第二尾數的儲存及傳輸皆進行精簡化。
根據本發明不同實施例,指數閾值可為一定值,或為動態可調。藉由閾值可調的設計,能夠選擇所需的浮點數運算的精確度高低。例如,若閾值高,不被解碼的尾數就會更多,因此可大幅降低資料傳輸及運算的功率功耗。指數閾值可根據算術單元110的溫度及/或算術單元110的處理事項類型進行動態調整,舉例來說,當運算裝置100的當前溫度過高而需要降溫時,可以調昇指數閾值以使算術單元110可操作在低功耗、低溫模式。此外,當運算裝置100為一行動裝置且處於低電量的狀況時,亦可調昇指數閾值以延長行動裝置的待機時間。另外,倘若算術單元110要執行精密運算時,可調降指數閾值以使得有更多尾數被解碼,藉此來提高精確度。
可選地,根據本發明實施例,指數閾值係介於動態可調的範圍,算術單元110以數值為1的指數閾值開始訓練,由算術單元110判斷運算精確度是否高於精確度閾值條件,若符合條件則遞增指數閾值的數值,直至運算精確度不高於精確度閾值,動態可調的範圍為上述符合條件的指數閾值。本發明忽略數值小的浮點數的尾數欄位,只有針對數值大的浮點數才進行尾數欄位的解碼,故相較先前技術,本發明可避免對於硬體架構的過度設計(亦即可將硬體架構精簡化),故能節省資料儲存及資料傳輸的功耗和時間。
從以上實施例可知,由於運算裝置100可能會有各種不同的應用層面,因此如何妥善選取指數閾值是至關重要的,以使精確度與功耗及處理速度之間得到最佳折衷。若本發明應用於人工智慧(AI)模型,可根據運算裝置100的當下需求計算出適當的指數閾值。請參考圖5,圖5係為根據本發明一實施例算術單元110對人工智慧模型進行訓練的流程圖,可簡單歸納如下:
步驟S502: 設定指數閾值的初始值為1;
步驟S504: 將指數閾值應用至AI模型;
步驟S506: 根據指數閾值對AI模型重新訓練(retrain);
步驟S508: 判斷浮點數運算的精確度的下降是否達到AI模型的最大可接受程度,若是,執行步驟S510;若否,執行步驟S512;
步驟S510: 調昇指數閾值;
步驟S512: 訓練完成。
總結來說,圖5示意了一種低功耗模式的訓練方案,倘若在步驟S508中判斷出浮點數運算的精確度的下降未超過AI模型的最大可接受程度,即表示目前浮點數運算的精確度仍高於預期,在容錯率許可的狀況下可調昇指數閾值以更進一步降低功耗和處理時間。
請參考圖6,圖6係為根據本發明一實施例運算裝置100降低晶片功耗的流程圖,可簡單歸納如下:
步驟S602: 判斷晶片是否需要降低功率消耗,若是,執行步驟S604;若否,流程跳至步驟S608;
步驟S604: 判斷浮點數運算的精確度下降是否達到AI模型的最大可接受程度,若否,執行步驟S606;若是,流程跳至步驟S608;
步驟S606: 調昇指數閾值;
步驟S608: 流程結束。
總結來說,圖6示意了一種功耗最佳化的方案,首先於步驟S602判斷是否有降低功耗的需求,以智慧型手機為例,倘若手機電量充足或手機處於高度使用狀態,則不降低功耗。反之,若手機電量不足,或手機處於低度使用狀態,則應降低功耗。當判斷晶片有降低功耗的需求之後,步驟S604判斷當前浮點數運算的精確度,若精確度下降未達到AI模型的最大可接受程度,即表示目前浮點數運算的精確度仍高於預期,在容錯率許可的狀況下可調昇指數閾值以更進一步降低功耗和處理時間。
請參考圖7,圖7係為根據本發明一實施例運算裝置100在維持精確度的情況下適應性調整晶片功耗的流程圖,可簡單歸納如下:
步驟S702: 判斷晶片是否需要提昇運算精確度,若是,執行步驟S704;若否,流程跳至步驟S708;
步驟S704: 判斷指數閾值是否為1(即指數閾值的最小值),若否,執行步驟S706;若是,流程跳至步驟S708;
步驟S706: 調降指數閾值;
步驟S708: 流程結束。
總結來說,圖7示意了一種以浮點數運算精確度為導向的功耗調整方案,首先於步驟S702判斷是否有提昇運算精確度,以智慧型手機為例,倘若手機正在執行高畫質影像處理,因為對精確度有較高的要求,則晶片會進入高效能(Turbo)模式而不考慮節約功耗。反之,倘若手機正在執行影像辨識,對精確度要求較低,則可節約功耗。接著,步驟S704判斷指數閾值是否為最小指數閾值(本發明以1為例,但不限於此),若仍非最小指數閾值則透過步驟S706繼續調降。
請參考圖8,圖8係為根據本發明一實施例的一種浮點數運算方法的流程圖。請注意,假若可獲得實質上相同的結果,則這些步驟並不一定要遵照圖8所示的執行次序來執行。圖8所示之浮點數運算方法可被圖1所示之運算裝置100或算術單元110所採用,並可簡單歸納為下列步驟:
步驟S802: 將第一指數與指數閾值進行比較,其中當第一指數不小於指數閾值,將第一尾數與第二尾數相乘以產生尾數運算結果;當第一指數小於指數閾值,則將第一尾數捨棄至少一個位元後 ,與第二尾數相乘以產生尾數運算結果;
步驟S804: 將第一符號與第二符號進行異或運算,以產生符號運算結果;
步驟S806: 將第一指數與第二指數進行相加運算,以產生指數運算結果;
步驟S808: 根據尾數運算結果、符號運算結果及指數運算結果產生計算後浮點數。
由於熟習技藝者在閱讀完以上段落後應可輕易瞭解圖8中每一步驟的細節,為簡潔之故,在此將省略進一步的描述。
綜上所述,本發明於浮點數的指數欄位值小於閾值(代表該浮點數數值太小),可將尾數捨棄(即:不儲存在於記憶體中)以進一步節省儲存空間,或僅儲存尾數而不被解碼及運算,以節省資料傳輸與運算功耗。此外,藉由閾值的可調性 (詳見圖5至圖7的優化流程),所搭配的電子產品可彈性地在高效能模式和低功耗模式之間作折衷取捨(例如閾值高,不被解碼的尾數就多,資料傳輸、運算功耗可被降低) ,如此一來,本發明得以在符合應用程式對於精確度的要求的情況下節省功耗並加快運算速度。
100:運算裝置
110:算術單元
111:第一暫存器
112:第二暫存器
113:第三暫存器
114:記憶體
S502-S512,S602-S608,S702-S708,S802-S808:步驟
141:異或邏輯
142:加法邏輯
143:乘法邏輯
144:比較邏輯
圖1係為根據本發明實施例的算術單元應用於運算裝置的示意圖。
圖2係為現有技術中暫存器儲存浮點數的示意圖。
圖3係為根據本發明一實施例的暫存器儲存浮點數的示意圖。
圖4係為本發明對二浮點數進行相乘的算術單元架構示意圖。
圖5係為根據本發明一實施例算術單元對人工智慧模型進行訓練的流程圖。
圖6係為根據本發明一實施例運算裝置降低晶片功耗的流程圖。
圖7係為根據本發明一實施例運算裝置在維持精確度的情況下適應性調整晶片功耗的流程圖。
圖8係為根據本發明一實施例的一種浮點數運算方法的流程圖。
S802-S808:步驟
Claims (23)
- 一種浮點數運算方法,應用於一第一暫存器及一第二暫存器之間的乘法運算,該第一暫存器儲存第一浮點數,該第二暫存器儲存第二浮點數;該第一暫存器包含第一指數位元(Exponent bit)及第一尾數位元(Mantissa bit),分別儲存第一指數及第一尾數;該第二暫存器包含第二指數位元及第二尾數位元,分別儲存第二指數及第二尾數;其中該方法包含使用一算術單元進行以下步驟: 將該第一指數與一指數閾值進行比較,其中當該第一指數不小於該指數閾值,將該第一尾數與第二尾數相乘以產生一尾數運算結果;當該第一指數小於該指數閾值,則將該第一尾數捨棄至少一個位元後,與第二尾數相乘以產生該尾數運算結果; 將該第一指數與該第二指數進行相加運算,以產生一指數運算結果;以及 根據該尾數運算結果及該指數運算結果產生一計算後浮點數。
- 如請求項1所述之浮點數運算方法,其中該第一暫存器另包含第一正負號位元(Sign bit),該第一正負號位元儲存第一符號;該第二暫存器另包含第二正負號位元,該第二正負號位元儲存第二符號,該浮點數運算方法另包含: 將該第一符號與該第二符號進行異或(XOR)運算,以產生一符號運算結果;以及 根據該尾數運算結果、該符號運算結果及該指數運算結果產生一計算後浮點數。
- 如請求項1所述之浮點數運算方法,其中該指數閾值儲存於一第三暫存器中,該算術單元於執行該第一暫存器及該第二暫存器之間的乘法運算時存取該第三暫存器。
- 如請求項1所述之浮點數運算方法,其中當該第一指數小於該指數閾值,該第一尾數的至少一個位元僅被暫存而不涉及運算。
- 如請求項4所述之浮點數運算方法,其中該指數閾值為動態可調。
- 如請求項5所述之浮點數運算方法,其中該指數閾值係根據該算術單元的溫度及/或該算術單元的處理事項類型進行動態調整。
- 如請求項4所述之浮點數運算方法,其中該指數閾值,係介於一動態可調的範圍,該算術單元以數值為1的指數閾值開始訓練,由該算術單元判斷運算精確度是否高於一精確度閾值條件,若符合該條件則遞增該指數閾值的數值,直至該運算精確度不高於一精確度閾值,該動態可調的範圍為該些符合該條件的指數閾值。
- 如請求項1所述之浮點數運算方法,其中該第一暫存器耦合記憶體,該記憶體儲存第一指數,當該第一指數小於該指數閾值,該第一尾數的至少一個位元被捨棄而不被該記憶體儲存。
- 如請求項1所述之浮點數運算方法,其中當該第一指數小於該指數閾值,該第一尾數的至少一個位元為不理會狀態(Don’t care)。
- 如請求項1所述之浮點數運算方法,其中當該第一指數小於該指數閾值,該第一浮點數解碼成(-1) Sign1× 2 Exponent1,其中Sign1代表該第一正負號,Exponent1代表該第一指數。
- 如請求項10所述之浮點數運算方法,其中當該第二指數小於該指數閾值,該第二浮點數解碼成(-1) Sign2× 2 Exponent2,其中Sign2代表該第二正負號,Exponent2代表該第二指數。
- 如請求項1所述之浮點數運算方法,另包含以該算術單元存取一記憶體,該記憶體儲存有複數組批量範數係數(Batch Normalization Coefficient),分別對應於多個候選閾值,該指數閾值係選自該些候選閾值中的一者。
- 一種算術單元,耦接於一第一暫存器及一第二暫存器,該第一暫存器儲存第一浮點數,該第二暫存器儲存第二浮點數;該第一暫存器包含第一指數位元(Exponent bit)及第一尾數位元(Mantissa bit),分別儲存第一指數及第一尾數;該第二暫存器包含第二指數位元及第二尾數位元,分別儲存第二指數及第二尾數;其中於處理該第一暫存器及該第二暫存器之間的乘法運算時,該算術單元進行以下步驟: 將該第一指數與一指數閾值進行比較,其中當該第一指數不小於該指數閾值,將該第一尾數與第二尾數相乘以產生一尾數運算結果;當該第一指數小於該指數閾值,則將該第一尾數捨棄至少一個位元後,與第二尾數相乘以產生該尾數運算結果; 將該第一指數與該第二指數進行相加運算,以產生一指數運算結果;以及 根據該尾數運算結果及該指數運算結果產生一計算後浮點數。
- 如請求項13所述之算術單元,其中該第一暫存器另包含第一正負號位元(Sign bit),該第一正負號位元儲存第一符號;該第二暫存器另包含第二正負號位元,該第二正負號位元儲存第二符號,該算術單元另執行以下步驟: 將該第一符號與該第二符號進行異或(XOR)運算,以產生一符號運算結果;以及 根據該尾數運算結果、該符號運算結果及該指數運算結果產生一計算後浮點數。
- 如請求項13所述之算術單元,其中該指數閾值儲存於一第三暫存器中,該算術單元於執行該第一暫存器及該第二暫存器之間的乘法運算時存取該第三暫存器。
- 如請求項13所述之算術單元,其中當該第一指數小於該指數閾值,該第一尾數的至少一個位元僅被暫存而不涉及運算。
- 如請求項16所述之算術單元,其中該指數閾值為動態可調。
- 如請求項17所述之算術單元,其中該指數閾值係根據該算術單元的溫度及/或該算術單元的處理事項類型進行動態調整。
- 如請求項16所述之算術單元,其中該指數閾值,係介於一動態可調的範圍,該算術單元以數值為1的指數閾值開始訓練,由該算術單元判斷運算精確度是否高於一精確度閾值條件,若符合該條件則遞增該指數閾值的數值,直至該運算精確度不高於一精確度閾值,該動態可調的範圍為該些符合該條件的指數閾值。
- 如請求項13所述之算術單元,其中當該第一指數小於該指數閾值,該第一浮點數解碼成(-1) Sign1× 2 Exponent1,其中Sign1代表該第一正負號,Exponent1代表該第一指數。
- 如請求項20所述之算術單元,其中當該第二指數小於該指數閾值,該第二浮點數解碼成(-1) Sign2× 2 Exponent2,其中Sign2代表該第二正負號,Exponent2代表該第二指數。
- 如請求項13所述之算術單元,其中該第一暫存器及第二暫存器耦接一記憶體,該記憶體儲存複數組批量範數係數(Batch Normalization coefficient),分別對應於多個候選閾值,該指數閾值係選自該些候選閾值中的一者。
- 一種運算裝置,包含一第一暫存器、一第二暫存器以及一算術單元,該算術單元耦接於該第一暫存器及該第二暫存器,該第一暫存器儲存第一浮點數,該第二暫存器儲存第二浮點數;該第一暫存器包含第一指數位元(Exponent bit)及第一尾數位元(Mantissa bit),分別儲存第一符號、第一指數及第一尾數;該第二暫存器包含第二指數位元及第二尾數位元,分別儲存第二符號、第二指數及第二尾數;其中於處理該第一暫存器及該第二暫存器之間的乘法運算時,該算術單元進行以下步驟: 將該第一指數與一指數閾值進行比較,其中當該第一指數不小於該指數閾值,將該第一尾數與第二尾數相乘以產生一尾數運算結果;當該第一指數小於該指數閾值,則將該第一尾數捨棄至少一個位元後,與第二尾數相乘以產生該尾數運算結果; 將該第一指數與該第二指數進行相加運算,以產生一指數運算結果;以及 根據該尾數運算結果及該指數運算結果產生一計算後浮點數。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18/104,311 US20230273768A1 (en) | 2022-02-02 | 2023-02-01 | Floating-point calculation method and associated arithmetic unit |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US202263305711P | 2022-02-02 | 2022-02-02 | |
| US63/305,711 | 2022-02-02 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202333043A TW202333043A (zh) | 2023-08-16 |
| TWI847519B true TWI847519B (zh) | 2024-07-01 |
Family
ID=87553164
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW112103523A TWI847519B (zh) | 2022-02-02 | 2023-02-01 | 一種浮點數運算方法以及相關的算術單元 |
Country Status (3)
| Country | Link |
|---|---|
| CN (1) | CN118613785A (zh) |
| TW (1) | TWI847519B (zh) |
| WO (1) | WO2023147770A1 (zh) |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI262431B (en) * | 2003-10-24 | 2006-09-21 | Goldbond Llc | Method and computer-readable medium for detecting motion and filtering noise by using block processing |
| US8959129B2 (en) * | 2011-06-30 | 2015-02-17 | Altera Corporation | Compression of floating-point data |
| CN106575214A (zh) * | 2014-08-18 | 2017-04-19 | 高通股份有限公司 | 融合乘加运算的模拟 |
| CN111492343A (zh) * | 2017-12-21 | 2020-08-04 | 高通股份有限公司 | 浮点乘法运算处理的系统和方法 |
| CN112579519A (zh) * | 2021-03-01 | 2021-03-30 | 湖北芯擎科技有限公司 | 数据运算电路和处理芯片 |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9417839B1 (en) * | 2014-11-07 | 2016-08-16 | The United States Of America As Represented By The Secretary Of The Navy | Floating point multiply-add-substract implementation |
| CN112988110A (zh) * | 2019-12-17 | 2021-06-18 | 深圳市中兴微电子技术有限公司 | 一种浮点处理装置和数据处理方法 |
| US11275560B2 (en) * | 2020-02-19 | 2022-03-15 | Meta Platforms, Inc. | Hardware for floating-point arithmetic in multiple formats |
| WO2021107995A1 (en) * | 2020-05-30 | 2021-06-03 | Futurewei Technologies, Inc. | Single-cycle kulisch accumulator |
-
2023
- 2023-02-01 WO PCT/CN2023/074108 patent/WO2023147770A1/zh not_active Ceased
- 2023-02-01 TW TW112103523A patent/TWI847519B/zh active
- 2023-02-01 CN CN202380019062.4A patent/CN118613785A/zh active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI262431B (en) * | 2003-10-24 | 2006-09-21 | Goldbond Llc | Method and computer-readable medium for detecting motion and filtering noise by using block processing |
| US8959129B2 (en) * | 2011-06-30 | 2015-02-17 | Altera Corporation | Compression of floating-point data |
| CN106575214A (zh) * | 2014-08-18 | 2017-04-19 | 高通股份有限公司 | 融合乘加运算的模拟 |
| CN111492343A (zh) * | 2017-12-21 | 2020-08-04 | 高通股份有限公司 | 浮点乘法运算处理的系统和方法 |
| CN112579519A (zh) * | 2021-03-01 | 2021-03-30 | 湖北芯擎科技有限公司 | 数据运算电路和处理芯片 |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2023147770A9 (zh) | 2024-07-18 |
| TW202333043A (zh) | 2023-08-16 |
| WO2023147770A1 (zh) | 2023-08-10 |
| CN118613785A (zh) | 2024-09-06 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8972472B2 (en) | Apparatus and methods for hardware-efficient unbiased rounding | |
| WO2021151271A1 (zh) | 基于命名实体的文本问答的方法、装置、设备及存储介质 | |
| You et al. | A 1–8b reconfigurable digital sram compute-in-memory macro for processing neural networks | |
| US20230273768A1 (en) | Floating-point calculation method and associated arithmetic unit | |
| CN107305485A (zh) | 一种用于执行多个浮点数相加的装置及方法 | |
| CN114612996B (zh) | 神经网络模型的运行方法、介质、程序产品以及电子设备 | |
| US20250077527A1 (en) | Variable precision in vectorization | |
| EP4529653A1 (en) | Systems and methods for hardware acceleration of masking and normalizing data with a triangular input mask | |
| CN115795065A (zh) | 基于带权哈希码的多媒体数据跨模态检索方法及系统 | |
| CN118176480A (zh) | 用于加速倒数函数和平方根倒数函数的计算的系统和方法 | |
| TWI847519B (zh) | 一種浮點數運算方法以及相關的算術單元 | |
| WO2017185203A1 (zh) | 一种用于执行多个浮点数相加的装置及方法 | |
| Guan et al. | Recursive binary neural network training model for efficient usage of on-chip memory | |
| CN115729360A (zh) | 输入法词库更新方法、装置、设备及服务器 | |
| WO2023202440A1 (zh) | 一种适用于多电平通信的io电路及其控制方法 | |
| CN117095722A (zh) | 三态内容可寻址存储器 | |
| TWI837000B (zh) | 一種浮點數壓縮方法、運算裝置及電腦可讀取儲存媒介 | |
| EP4660782A1 (en) | Floating-point data precision conversion method and apparatus | |
| CN118519608A (zh) | 浮点加法运算装置及方法、电子装置和存储介质 | |
| CN116401546A (zh) | 数据处理方法、装置及电子设备和存储介质 | |
| Izadi et al. | LSHIM: Low-power and small-area inexact multiplier for high-speed error-resilient applications | |
| US7272623B2 (en) | Methods and apparatus for determining a floating-point exponent associated with an underflow condition or an overflow condition | |
| US9335967B1 (en) | Accurate floating-point calculation method and device | |
| CN121411731A (zh) | 基于risc-v的alu架构低功耗优化系统及方法 | |
| Jahadi et al. | Low-Power Register File for Tensor Cores |