TWI785546B - 浮點數的編碼與解碼的方法與裝置 - Google Patents

浮點數的編碼與解碼的方法與裝置 Download PDF

Info

Publication number
TWI785546B
TWI785546B TW110110407A TW110110407A TWI785546B TW I785546 B TWI785546 B TW I785546B TW 110110407 A TW110110407 A TW 110110407A TW 110110407 A TW110110407 A TW 110110407A TW I785546 B TWI785546 B TW I785546B
Authority
TW
Taiwan
Prior art keywords
floating
point number
value
exponent
encoded
Prior art date
Application number
TW110110407A
Other languages
English (en)
Other versions
TW202238363A (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 創鑫智慧股份有限公司
Priority to TW110110407A priority Critical patent/TWI785546B/zh
Priority to US17/238,226 priority patent/US11387843B1/en
Priority to CN202110495935.1A priority patent/CN115113924A/zh
Publication of TW202238363A publication Critical patent/TW202238363A/zh
Application granted granted Critical
Publication of TWI785546B publication Critical patent/TWI785546B/zh

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/485Adding; Subtracting
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6011Encoder aspects
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Software Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Transmission Systems Not Characterized By The Medium Used For Transmission (AREA)

Abstract

一種浮點數的編碼與解碼的方法與裝置。浮點數的編碼方法用以將至少一個原浮點數轉換為至少一個已編碼浮點數。編碼方法包括:依據至少一個原浮點數的至少一個原指數值,決定至少一個已編碼浮點數的指數位元數量以及計算指數偏移值;以及依據指數偏移值,將至少一個原浮點數中的一個目前原浮點數的原指數值轉換為至少一個已編碼浮點數中的一個目前已編碼浮點數的已編碼指數值。

Description

浮點數的編碼與解碼的方法與裝置
本發明是有關於一種浮點數的編碼與解碼的方法與裝置。
浮點(floating point,FP)數是一種實數的近似值數值表現法。在IEEE二進位浮點數算術標準(例如IEEE 754)中,規範了浮點數包括三個域:「符號(sign)」、「指數(exponent)」以及「尾數(fraction)」。「符號」可以表示浮點數的正負號,「指數」可以表示浮點數的次方數(以二為基底),以及「尾數」可以表示浮點數的小數(在正規化形式的浮點數的整數部分被預設為1,在非正規化形式的浮點數的整數部分被預設為0)。IEEE二進位浮點數算術標準使用固定的「指數偏移值」(exponent bias)。指數偏移值固定為「127」。浮點數的指數值加上127(固定的指數偏移值)即為實數的指數值。例如,以IEEE 754所規範的32位元(bit)單精度(single-precision)浮點數為例,其符號、指數及尾數的位元數量分別為1、8、23位元。假設浮點數的符號值為s,浮點數 的指數值為exp,浮點數的尾數值為f,則實數為(-1)s*2(exp-127)*1.f。IEEE 754所規範的浮點數的指數範圍為0~255,而浮點數所表示的實數的指數範圍為-126~127。
然則,在實際應用中,一群實數(浮點數)的指數值可能會集中在某個狹窄範圍。例如,假設一群實數的指數是在-10~-3之間,則所對應的浮點數的指數是在117~124之間。很明顯地,這一群實數僅使用了浮點數所能表示的指數範圍-126~127中的極小部分,造成浮點數儲存空間的浪費。
本發明提出一種浮點數的編碼與解碼的方法與裝置,可以對浮點數進行編碼/解碼,以有效減少浮點數的資料量。
在本發明的一實施例中,所述浮點數的編碼方法用以將至少一個原浮點數轉換為至少一個已編碼浮點數。編碼方法包括:依據至少一個原浮點數的至少一個原指數值,決定至少一個已編碼浮點數的指數位元數量以及計算指數偏移值;以及依據指數偏移值,將至少一個原浮點數中的一個目前原浮點數的原指數值轉換為至少一個已編碼浮點數中的一個目前已編碼浮點數的已編碼指數值。
在本發明的一實施例中,所述浮點數的編碼裝置包括運算電路、儲存單元以及轉換電路。運算電路產生至少一個原浮點數。轉換電路耦接至運算電路以接收至少一個原浮點數。轉換電 路依據至少一個原浮點數的至少一個原指數值去決定至少一個已編碼浮點數的指數位元數量以及計算指數偏移值。轉換電路依據指數偏移值將至少一個原浮點數中的一個目前原浮點數的原指數值轉換為至少一個已編碼浮點數中的一個目前已編碼浮點數的已編碼指數值。轉換電路將至少一個已編碼浮點數儲存至儲存單元。
在本發明的一實施例中,所述浮點數的解碼方法用以將至少一個已編碼浮點數轉換為至少一個解碼浮點數。解碼方法包括:接收至少一個已編碼浮點數所對應的指數偏移值;依據指數偏移值與標準偏移值,將至少一個已編碼浮點數中的一個目前已編碼浮點數的已編碼指數值轉換為至少一個解碼浮點數中的一個目前解碼浮點數的解碼指數值。
在本發明的一實施例中,所述浮點數的解碼裝置包括儲存單元、運算電路以及轉換電路。儲存單元被配置為儲存至少一個已編碼浮點數以及至少一個已編碼浮點數所對應的指數偏移值。轉換電路耦接至儲存單元以接收至少一個已編碼浮點數與指數偏移值。轉換電路依據指數偏移值與標準偏移值將至少一個已編碼浮點數中的一個目前已編碼浮點數的已編碼指數值轉換為至少一個解碼浮點數中的一個目前解碼浮點數的解碼指數值。轉換電路將至少一個解碼浮點數提供給運算電路。
基於上述,本發明諸實施例提供一種浮點數的壓縮與解壓縮技術。所述的浮點數的編碼方法可以依據原浮點數的原指數 值來動態調整指數位元數量及指數偏移值,並依據指數位元數量及指數偏移值將原浮點數轉換為已編碼浮點數。已編碼浮點數的指數位元數量相關於原浮點數的指數範圍。如此一來,可以依據原浮點數的實際指數範圍去動態改變浮點數的資料結構,以有效壓縮浮點數的資料量,進而節省浮點數儲存空間。另一方面,所述的浮點數的解碼方法可以依據標準偏移值與已編碼浮點數所對應的指數偏移值,來將已編碼浮點數的已編碼指數值轉換回解碼浮點數的解碼指數值,進而可以將已編碼浮點數轉換為解碼浮點數。如此一來,依據實際的應用需求,編碼後的浮點數(經壓縮浮點數)的資料結構可以被解碼回標準的浮點數的資料結構。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
100:浮點數的編碼裝置
110、330:運算電路
120、320:轉換電路
130、310:儲存單元
300:浮點數的解碼裝置
exp_b3:指數偏移值
FP1:原浮點數
FP2、FP3:已編碼浮點數
FP4:解碼浮點數
S210、S220、S410、S420:步驟
圖1是依照本發明一實施例的一種浮點數的編碼裝置的電路方塊(circuit block)示意圖。
圖2繪示本發明一實施例的浮點數的編碼方法的流程示意圖。
圖3是依照本發明一實施例的一種浮點數的解碼裝置的電路方塊示意圖。
圖4繪示本發明一實施例的浮點數的解碼方法的流程示意 圖。
在本案說明書全文(包括申請專利範圍)中所使用的「耦接(或連接)」一詞可指任何直接或間接的連接手段。舉例而言,若文中描述第一裝置耦接(或連接)於第二裝置,則應該被解釋成該第一裝置可以直接連接於該第二裝置,或者該第一裝置可以透過其他裝置或某種連接手段而間接地連接至該第二裝置。本案說明書全文(包括申請專利範圍)中提及的「第一」、「第二」等用語是用以命名元件(element)的名稱,或區別不同實施例或範圍,而並非用來限制元件數量的上限或下限,亦非用來限制元件的次序。另外,凡可能之處,在圖式及實施方式中使用相同標號的元件/構件/步驟代表相同或類似部分。不同實施例中使用相同標號或使用相同用語的元件/構件/步驟可以相互參照相關說明。
圖1是依照本發明一實施例的一種浮點數的編碼裝置100的電路方塊(circuit block)示意圖。於圖1所示實施例中,編碼裝置100包括運算電路110、轉換電路120以及儲存單元130。依照實際設計,運算電路110可以進行任何應用運算,例如神經網路(Neural Network)運算或是其他運算。運算電路110的運算結果包含了一個或多個原浮點數FP1。儲存單元130被用來儲存運算電路110的運算結果。為了節省浮點數儲存空間,原浮點數FP1需要被壓縮。轉換電路120耦接至運算電路110,以接收運算 電路110所產生的原浮點數FP1。轉換電路120可以對原浮點數FP1進行資料結構的轉換(亦即進行編碼方法,或是進行壓縮方法),以產生已編碼浮點數(已壓縮浮點數)FP2。儲存單元130耦接至轉換電路120,以接收並且存放已編碼浮點數FP2。
運算電路110與(或)轉換電路120的相關功能可以利用硬體描述語言(hardware description languages,例如Verilog HDL或VHDL)或其他合適的編程語言來實現為硬體。舉例來說,運算電路110與(或)轉換電路120的相關功能可以被實現於一或多個微控制器、微處理器、特殊應用積體電路(Application-specific integrated circuit,ASIC)、數位信號處理器(digital signal processor,DSP)、場可程式邏輯閘陣列(Field Programmable Gate Array,FPGA)及/或其他處理單元中的各種邏輯區塊、模組和電路。以軟體形式及/或韌體形式而言,運算電路110與(或)轉換電路120的相關功能可以被實現為編程碼(programming codes)。例如,利用一般的編程語言(programming languages,例如C、C++或組合語言)或其他合適的編程語言來實現。所述編程碼可以被記錄/存放在「非臨時的電腦可讀取媒體(non-transitory computer readable medium)」中,例如包括唯讀記憶體(Read Only Memory,ROM)、帶(tape)、碟(disk)、卡(card)、半導體記憶體、可程式設計的邏輯電路及/或存儲裝置。中央處理器(Central Processing Unit,CPU)、微控制器或微處理器可以從所述非臨時的電腦可讀取媒體 中讀取並執行所述編程碼,從而達成相關功能。儲存單元130例如可以是任意型式的隨機存取記憶體(Random Access Memory,RAM)、唯讀記憶體(Read-Only Memory,ROM)、快閃記憶體(Flash memory)、硬碟或其他類似裝置或這些裝置的組合。
圖2繪示本發明一實施例的浮點數的編碼方法的流程示意圖。請參照圖1與圖2。圖2所示編碼方法可以將原浮點數FP1轉換為已編碼浮點數FP2。於步驟S210中,轉換電路120可以依據原浮點數FP1的原指數值,決定已編碼浮點數FP2的指數位元數量,以及計算指數偏移值。
例如,在一些實施例中,原浮點數FP1包括多個原浮點數。轉換電路120可以統計這些原浮點數FP1的原指數值,以獲得這些原指數值的數值範圍。轉換電路120可以依據所述數值範圍來決定已編碼浮點數FP2的指數位元數量。轉換電路120可以從這些原指數值中選擇其中一個作為第一代表值。所述第一代表值的選擇可以依據設計需求來決定。舉例來說,在一些實施例中,所述第一代表值可以是這些原指數值中的最大原指數值。依照實際設計,在其他實施例中,所述第一代表值也可以是這些原指數值中的最小原指數值、平均值或任意閥值。轉換電路120可以從已編碼浮點數FP2的指數位元數量的值域中選擇第一代表值所對應的一個值作為第二代表值。轉換電路120可以使用第一代表值與第二代表值去計算已編碼浮點數FP2的指數偏移值。在一些實 施例中,所述第二代表值可以為已編碼浮點數FP2的指數位元數量的值域中的最大值。依照實際設計,在其他實施例中,所述第二代表值也可以為已編碼浮點數FP2的指數位元數量的值域中的最小值、中間值或任意閥值。
在此以表1所示具體數字作為步驟S210的操作範例。表1所示s1表示原浮點數FP1的原符號(sign)值,表1所示exp1表示原浮點數FP1的原指數(exponent)值,以及表1所示frac1表示原浮點數FP1的原尾數(fraction)值。在此假設原浮點數FP1的資料結構符合IEEE二進位浮點數算術標準(例如IEEE 754)的規範,亦即原符號值s1為1位元數值,原指數值exp1為8位元數值,原尾數值frac1為23位元數值。
Figure 110110407-A0305-02-0010-1
轉換電路120可以統計表1所示這些原浮點數FP1的原指數值exp1,以獲得這些原指數值exp1的數值範圍。轉換電路120可以依據表1所示這些原指數值exp1的數值範圍來決定已編 碼浮點數FP2的指數位元數量。表1所示這些原指數值exp1的數值範圍為119~124,而在這個數值範圍119~124中有6個整數。因此,已編碼浮點數FP2的指數位元數量可以被設定為3位元,其中已編碼浮點數FP2的指數位元的值域為0~7。
轉換電路120可以從表1所示這些原指數值exp1中選擇其中一個作為第一代表值。舉例來說,所述第一代表值可以是這些原指數值exp1中的最大原指數值「124」。轉換電路120可以從已編碼浮點數FP2的指數位元數量(3個位元)的值域中選擇第一代表值所對應的一個值作為第二代表值。舉例來說,所述第二代表值可以是已編碼浮點數FP2的指數位元的值域「0~7」中的最大值「7」。轉換電路120可以使用第一代表值「124」與第二代表值「7」去計算已編碼浮點數FP2的指數偏移值exp_b2。此時,exp1-exp_b1=124-127=7-exp_b2,其中exp_b1表示IEEE二進位浮點數算術標準所使用的固定指數偏移值「127」。所以,已編碼浮點數FP2的指數偏移值exp_b2為「10」。
在步驟S220中,轉換電路120可以依據已編碼浮點數FP2的指數偏移值,將原浮點數FP1中的一個目前原浮點數的原指數值轉換為已編碼浮點數FP2中的一個目前已編碼浮點數的已編碼指數值。此外,依照實際設計,轉換電路120還可以使用目前原浮點數的符號值作為目前已編碼浮點數的符號值,以及轉換電路120還可以使用目前原浮點數的尾數值作為目前已編碼浮點數的 尾數值。然後,轉換電路120可以將已編碼浮點數FP2的目前已編碼浮點數儲存至儲存單元130。
在此繼續沿用表1所示原浮點數FP1的具體範例來說明步驟S220的操作,並將步驟S220的操作結果呈現於下述表2。表2所示範例可以參照表1的相關說明。表2所示exp2表示已編碼浮點數FP2的已編碼指數值,以及表2所示frac2表示已編碼浮點數FP2的尾數值。在此假設原浮點數FP1的資料結構為符合IEEE二進位浮點數算術標準(例如IEEE 754)規範的32位元數值,而已編碼浮點數FP2的資料結構為8位元數值。其中,已編碼浮點數FP2的符號值為1位元數值,已編碼浮點數FP2的已編碼指數值exp2為3位元數值(這個已編碼指數值exp2的位元數量由步驟S210來動態決定)。使用已編碼浮點數FP2的總位元數量「8位元」去扣除符號欄位(1位元)與指數欄位(3位元)後的剩餘位元數量為「4位元」,而此剩餘位元可以被用來記錄已編碼浮點數FP2的尾數值frac2。因此,表2所示已編碼浮點數FP2的尾數值frac2為4位元數值。
Figure 110110407-A0305-02-0012-2
Figure 110110407-A0305-02-0013-4
在表1與表2所示實施例中,步驟S210可以計算出已編碼浮點數FP2的指數偏移值exp_b2為「10」。轉換電路120可以依據已編碼浮點數FP2的指數偏移值exp_b2,將表2所示原浮點數FP1中的一個目前原浮點數的原指數值exp1轉換為表2所示已編碼浮點數FP2中的一個目前已編碼浮點數的已編碼指數值exp2。舉例來說,轉換電路120可以計算exp2=exp1-exp_b1+exp_b2,以獲得目前已編碼浮點數的已編碼指數值exp2。以表2所示第一筆浮點數作為計算範例,exp2=exp1-exp_b1+exp_b2=124-127+10=7。以表2所示第二筆浮點數作為計算範例,exp2=120-127+10=3。表2所示其他浮點數可以依此類推。針對指數部份轉換電路120可以將8位元的原指數值exp1轉換為3位元的已編碼指數值exp2。因此,轉換電路120可以有效減少已編碼浮點數FP2的位元數量。
在一些實施例中,已編碼浮點數FP2的尾數值frac2的位元數量可以相同於原浮點數FP1的尾數值frac1的位元數量。在這樣的實施範例中,轉換電路120可以使用目前原浮點數FP1的符號值s1作為目前已編碼浮點數FP2的符號值,以及轉換電路120還可以使用目前原浮點數FP1的尾數值frac1作為目前已編碼浮點數FP2的尾數值frac2。然後,轉換電路120可以將已編碼浮點數 FP2的目前已編碼浮點數儲存至儲存單元130。在這樣的實施範例中,轉換電路120可以實現「無損壓縮」而有效減少已編碼浮點數FP2的位元數量。
依照實際設計,在另一些實施例中,轉換電路120還可以進一步減少已編碼浮點數FP2的位元數量。例如,儲存單元130中的已編碼浮點數FP2的符號值欄位可以依照實際設計省略。例如,轉換電路120可以具有符號值暫存器(未繪示,例如是單一位元暫存器);若轉換電路120判斷原浮點數FP1的每一個的符號值s1皆為某一個共同符號值時(例如皆為1或0),轉換電路120可以將所述共同符號值存入所述符號值暫存器,並且在將原浮點數FP1轉換為已編碼浮點數FP2的過程中捨棄原浮點數FP1的每一個的符號值s1。亦即,在一些實施例中,原浮點數FP1的每一個的符號值s1可以不用存入儲存單元130(儲存單元130中的已編碼浮點數FP2沒有符號值欄位)。在其他實施例中,若已知原浮點數FP1固定為正值或負值(原浮點數FP1的每一個的符號值皆固定為某一個共同符號值)時,所述符號值暫存器可以依照實際設計被進一步省略。
此外,在另一些實施例中,轉換電路120還可以有效減少已編碼浮點數FP2的尾數值frac2的位元數量。例如在表2所示實施例中,已編碼浮點數FP2的尾數值frac2的位元數量從23位元被縮減為4位元,亦即已編碼浮點數FP2的總位元數量「8位 元」去扣除符號欄位(1位元)與指數欄位(3位元)後的剩餘位元數量作為尾數值frac2的位元數量。當尾數值frac1的位元數量大於尾數值frac2的位元數量時,捨去或捨入該尾數值的一剩餘部份。舉例來說,以表2所示第一筆浮點數作為計算範例,尾數值frac1「1235141」的二進值為「001 0010 1101 1000 1100 0101」,則轉換電路120可以使用尾數值frac1的高位元(MSB)的4位元值「001 0」(十進值為「2」)作為尾數值frac2,以及捨去或捨入尾數值frac1的剩餘部份。以表2所示第二筆浮點數作為計算範例,尾數值frac1「601492」的二進值為「000 1001 0010 1101 1001 0100」,則轉換電路120可以使用尾數值frac1的高位元(MSB)的4位元值「000 1」(十進值為「1」)作為尾數值frac2,以及捨去或捨入尾數值frac1的剩餘部份。表2所示其他浮點數可以依此類推。在這樣的實施範例中,轉換電路120可以實現「有損壓縮」而有效減少已編碼浮點數FP2的位元數量。在一些應用情境中,例如在神經網路運算的應用情境中,尾數值frac2的低位元(LSB)的誤差是可以接受的。
綜上所述,本實施例提供一種浮點數的壓縮技術(編碼方法)。所述的浮點數的編碼方法可以依據原浮點數FP1的原指數值exp1來動態調整指數位元數量及指數偏移值exp_b2。轉換電路120可以依據指數位元數量及指數偏移值exp_b2將原浮點數FP1轉換為已編碼浮點數FP2。已編碼浮點數FP2的指數位元數量相 關於原浮點數FP1的指數範圍。如此一來,可以依據原浮點數FP1的實際指數範圍去動態改變浮點數FP2的資料結構,以有效壓縮浮點數FP2的資料量,進而節省浮點數儲存空間。
圖3是依照本發明一實施例的一種浮點數的解碼裝置300的電路方塊示意圖。於圖3所示實施例中,解碼裝置300包括儲存單元310、轉換電路320以及運算電路330。儲存單元310可以儲存至少一個已編碼浮點數FP3以及已編碼浮點數FP3所對應的指數偏移值exp_b3。圖3所示已編碼浮點數FP3與指數偏移值exp_b3可以參照圖1與圖2所示實施例所提及的已編碼浮點數FP2與指數偏移值exp_b2的相關說明,故不再贅述。依照實際設計,在一些實施例中,圖3所示儲存單元310以及運算電路330可以參照圖1所示儲存單元130以及運算電路110的相關說明。
圖4繪示本發明一實施例的浮點數的解碼方法的流程示意圖。請參照圖3與圖4。圖4所示解碼方法可以將已編碼浮點數FP3轉換為解碼浮點數FP4。於步驟S410中,轉換電路320耦接至儲存單元310,以接收已編碼浮點數FP3與指數偏移值exp_b3。於步驟S420中,轉換電路320可以依據指數偏移值exp_b3與標準偏移值exp_b4,將已編碼浮點數FP3中的目前已編碼浮點數的已編碼指數值exp3轉換為解碼浮點數FP4中的目前解碼浮點數的解碼指數值exp4。此外,依照實際設計,轉換電路320還可以使用目前已編碼浮點數FP3的符號值作為目前解碼浮點數FP4的符 號值,以及轉換電路320還可以使用目前已編碼浮點數FP3的尾數值作為目前解碼浮點數FP4的尾數值。然後,轉換電路320可以將解碼浮點數FP4的目前已編碼浮點數提供給運算電路330。依照實際設計,運算電路330可以使用解碼浮點數FP4去進行任何應用運算,例如神經網路運算或是其他運算。
依照實際設計,解碼浮點數FP4的資料結構可以是符合IEEE二進位浮點數算術標準(例如IEEE 754)所規範的浮點數資料結構或是其他資料結構。例如,解碼浮點數FP4的符號值為1位元數值,解碼浮點數FP4的解碼指數值exp4為8位元數值,而解碼浮點數FP4的尾數值frac4為23位元數值。當解碼浮點數FP4是符合IEEE 754所規範的浮點數時,所述標準偏移值exp_b4可以是IEEE 754所規範的固定指數偏移值「127」。
在一些實施例中,轉換電路320於步驟S420中可以計算指數偏移值exp_b3與標準偏移值exp_b4的差值。依照實際設計,在其他實施例中,解碼裝置300可以包括偏移差值暫存器(未繪示),用以存放預設的所述差值。這樣的差值可以是一個固定值,或是先前計算好的數值。例如,以離線(off line)方式預先計算好指數偏移值exp_b3與標準偏移值exp_b4的差值,然後將所述差值存放在所述偏移差值暫存器,以便於步驟S420使用。在這樣的實施例中,步驟S420可以依照實際設計省略指數偏移值exp_b3與標準偏移值exp_b4的差值的動態計算。轉換電路320可以使用 所述差值將目前已編碼浮點數FP3的已編碼指數值exp3轉換為目前解碼浮點數FP4的解碼指數值exp4。
舉例來說,在一實施例中,轉換電路320可以將標準偏移值exp_b4減去指數偏移值exp_b3而產生所述差值,以及轉換電路320可以將目前已編碼浮點數FP3的已編碼指數值exp3加上所述差值而產生目前解碼浮點數FP4的解碼指數值exp4。假設標準偏移值exp_b4為「127」,指數偏移值exp_b3為「10」,而目前已編碼浮點數FP3的已編碼指數值exp3為「7」,則目前解碼浮點數FP4的解碼指數值exp4為exp3+(exp_b4-exp_b3)=7+(127-10)=124。假設目前已編碼浮點數FP3的已編碼指數值exp3為「3」,則目前解碼浮點數FP4的解碼指數值exp4為3+(127-10)=120。
在另一實施例中,轉換電路320可以將指數偏移值exp_b3減去標準偏移值exp_b4而產生所述差值,以及轉換電路320可以將目前已編碼浮點數FP3的已編碼指數值exp3減去所述差值而產生目前解碼浮點數FP4的解碼指數值exp4。假設標準偏移值exp_b4為「127」,指數偏移值exp_b3為「10」,而目前已編碼浮點數FP3的已編碼指數值exp3為「7」,則目前解碼浮點數FP4的解碼指數值exp4為exp3-(exp_b3-exp_b4)=7-(10-127)=124。假設目前已編碼浮點數FP3的已編碼指數值exp3為「3」,則目前解碼浮點數FP4的解碼指數值exp4為3-(10-127)=120。
在一些實施例中,已編碼浮點數FP3的尾數值frac3的位元數量可以相同於解碼浮點數FP4的尾數值frac4的位元數量。在這樣的實施範例中,轉換電路320可以使用目前已編碼浮點數FP3的符號值作為目前解碼浮點數FP4的符號值,以及轉換電路320還可以使用目前已編碼浮點數FP3的尾數值frac3作為目前解碼浮點數FP4的尾數值frac4。然後,轉換電路320可以將解碼浮點數FP4的目前解碼浮點數提供給運算電路330。
此外,在另一些實施例中,解碼浮點數FP4的尾數值frac4的位元數量可以大於已編碼浮點數FP3的尾數值frac3的位元數量。當目前解碼浮點數FP4的尾數值frac4(尾數欄位)的位元數量大於目前已編碼浮點數FP3的尾數值frac3的位元數量時,在將目前已編碼浮點數FP3的尾數值frac3填入目前解碼浮點數FP4的尾數欄位後,轉換電路320可以填入0於目前解碼浮點數FP4的尾數欄位的剩餘部份。
舉例來說,假設解碼浮點數FP4的尾數值frac4的位元數量為23個位元,而已編碼浮點數FP3的尾數值frac3的位元數量為4個位元。轉換電路320可以已編碼浮點數FP3的尾數值frac3「001 0」填入目前解碼浮點數FP4的尾數欄位作為尾數值frac4的高位元(MSB)的4位元值,以及轉換電路320可以填入0於目前解碼浮點數FP4的尾數欄位的剩餘部份。因此,目前解碼浮點數FP4的尾數值frac4(尾數欄位)為「001 0000 0000 0000 0000 0000」。
綜上所述,本實施例提供一種浮點數的解壓縮技術(解碼方法)。所述的浮點數的解碼方法可以依據標準偏移值exp_b4與已編碼浮點數FP3所對應的指數偏移值exp_b3,來將已編碼浮點數FP3的已編碼指數值exp3轉換回解碼浮點數FP4的解碼指數值exp4。因此,依據實際的應用需求,轉換電路320可以將已編碼浮點數FP3的資料結構轉換(解壓縮)為標準的浮點數的資料結構。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S210、S220:步驟

Claims (34)

  1. 一種浮點數的編碼方法,以將至少一原浮點數轉換為至少一已編碼浮點數,所述編碼方法包括:依據該至少一原浮點數的至少一原指數值,決定該至少一已編碼浮點數的一指數位元數量以及計算一指數偏移值,其中該至少一已編碼浮點數的該指數位元數量是由一數值範圍所決定,且該數值範圍關聯於該至少一原浮點數的該至少一原指數值;以及依據該指數偏移值,將該至少一原浮點數中的一目前原浮點數的一原指數值轉換為該至少一已編碼浮點數中的一目前已編碼浮點數的一已編碼指數值。
  2. 如請求項1所述的編碼方法,更包括:使用該目前原浮點數的一符號值作為該目前已編碼浮點數的一符號值。
  3. 如請求項1所述的編碼方法,其中該至少一原浮點數包括多個原浮點數,所述編碼方法更包括:當該些原浮點數的每一個的一符號值皆為一共同符號值時,在將該些原浮點數轉換為該至少一已編碼浮點數的過程中捨棄該些原浮點數的每一個的該符號值。
  4. 如請求項3所述的編碼方法,更包括:將該共同符號值存入一符號值暫存器。
  5. 如請求項1所述的編碼方法,更包括:使用該目前原浮點數的一尾數值作為該目前已編碼浮點數的 一尾數值。
  6. 如請求項5所述的編碼方法,更包括:使用該目前已編碼浮點數的一總位元數量去扣除一符號欄位與一指數欄位後的一剩餘位元數量去記錄該目前已編碼浮點數的該尾數值。
  7. 如請求項6所述的編碼方法,更包括:當該尾數值的一位元數量大於該剩餘位元數量時,捨去或捨入該尾數值的一剩餘部份。
  8. 如請求項1所述的編碼方法,其中該至少一原浮點數包括多個原浮點數,所述編碼方法更包括:統計該些原浮點數的該些原指數值,以獲得該些原指數值的該數值範圍;以及依據該數值範圍決定該至少一已編碼浮點數的該指數位元數量。
  9. 如請求項8所述的編碼方法,更包括:從該些原指數值中選擇一者作為一第一代表值;從該至少一已編碼浮點數的該指數位元數量的一值域中選擇該第一代表值所對應的一個值作為一第二代表值;以及使用該第一代表值與該第二代表值去計算該指數偏移值。
  10. 如請求項9所述的編碼方法,其中該第一代表值為該些原指數值中的一最大原指數值,以及該第二代表值為該至少一已編碼浮點數的該指數位元數量的該值域中的一最大值。
  11. 一種浮點數的編碼裝置,包括:一運算電路,產生至少一原浮點數;一儲存單元;以及一轉換電路,耦接至該運算電路以接收該至少一原浮點數,其中該轉換電路依據該至少一原浮點數的至少一原指數值去決定至少一已編碼浮點數的一指數位元數量以及計算一指數偏移值,其中該至少一已編碼浮點數的該指數位元數量是由一數值範圍所決定,且該數值範圍關聯於該至少一原浮點數的該至少一原指數值,並且該轉換電路依據該指數偏移值將該至少一原浮點數中的一目前原浮點數的一原指數值轉換為該至少一已編碼浮點數中的一目前已編碼浮點數的一已編碼指數值,以及該轉換電路將該至少一已編碼浮點數儲存至該儲存單元。
  12. 如請求項11所述的編碼裝置,其中該轉換電路使用該目前原浮點數的一符號值作為該目前已編碼浮點數的一符號值。
  13. 如請求項11所述的編碼裝置,其中該至少一原浮點數包括多個原浮點數,以及當該些原浮點數的每一個的一符號值皆為一共同符號值時,該轉換電路在將該些原浮點數轉換為該至少一已編碼浮點數的過程中捨棄該些原浮點數的每一個的該符號值。
  14. 如請求項13所述的編碼裝置,其中該轉換電路將該共同符號值存入一符號值暫存器。
  15. 如請求項11述的編碼裝置,其中該轉換電路使用該目前原浮點數的一尾數值作為該目前已編碼浮點數的一尾數值。
  16. 如請求項15所述的編碼裝置,其中該轉換電路使用該目前已編碼浮點數的一總位元數量去扣除一符號欄位與一指數欄位後的一剩餘位元數量去記錄該目前已編碼浮點數的該尾數值。
  17. 如請求項16所述的編碼裝置,其中當該尾數值的一位元數量大於該剩餘位元數量時,該轉換電路捨去或捨入該尾數值的一剩餘部份。
  18. 如請求項11所述的編碼裝置,其中該至少一原浮點數包括多個原浮點數,該轉換電路統計該些原浮點數的該些原指數值以獲得該些原指數值的該數值範圍,以及該轉換電路依據該數值範圍決定該至少一已編碼浮點數的該指數位元數量。
  19. 如請求項18所述的編碼裝置,其中該轉換電路從該些原指數值中選擇一者作為一第一代表值,該轉換電路從該至少一已編碼浮點數的該指數位元數量的一值域中選擇該第一代表值所對應的一個值作為一第二代表值,以及該轉換電路使用該第一代表值與該第二代表值去計算該指數偏移值。
  20. 如請求項19所述的編碼裝置,其中該第一代表值為該些原指數值中的一最大原指數值,以及該第二代表值為該至少一已編碼浮點數的該指數位元數量的該值域中的一最大值。
  21. 一種浮點數的解碼方法,以將至少一已編碼浮點數轉換為至少一解碼浮點數,所述解碼方法包括:接收該至少一已編碼浮點數所對應的一指數偏移值;依據該指數偏移值與一標準偏移值,將該至少一已編碼浮點數中的一目前已編碼浮點數的一已編碼指數值轉換為該至少一解碼浮點數中的一目前解碼浮點數的一解碼指數值。
  22. 如請求項21所述的解碼方法,更包括:使用該目前已編碼浮點數的一符號值作為該目前解碼浮點數的一符號值。
  23. 如請求項21所述的解碼方法,更包括:使用該目前已編碼浮點數的一尾數值作為該目前解碼浮點數的一尾數值。
  24. 如請求項23所述的解碼方法,更包括:當該目前解碼浮點數的一尾數欄位的一位元數量大於該目前已編碼浮點數的該尾數值的一位元數量時,在將該目前已編碼浮點數的該尾數值填入該目前解碼浮點數的該尾數欄位後,填入0於該目前解碼浮點數的該尾數欄位的一剩餘部份。
  25. 如請求項21所述的解碼方法,更包括:計算該指數偏移值與該標準偏移值的一差值;以及使用該差值將該目前已編碼浮點數的該已編碼指數值轉換為該目前解碼浮點數的該解碼指數值。
  26. 如請求項25所述的解碼方法,更包括: 將該標準偏移值減去該指數偏移值而產生該差值;以及將該目前已編碼浮點數的該已編碼指數值加上該差值而產生該目前解碼浮點數的該解碼指數值。
  27. 如請求項25所述的解碼方法,更包括:將該指數偏移值減去該標準偏移值而產生該差值;以及將該目前已編碼浮點數的該已編碼指數值減去該差值而產生該目前解碼浮點數的該解碼指數值。
  28. 一種浮點數的解碼裝置,包括:一儲存單元,被配置為儲存至少一已編碼浮點數以及該至少一已編碼浮點數所對應的一指數偏移值;一運算電路;以及一轉換電路,耦接至該儲存單元以接收該至少一已編碼浮點數與該指數偏移值,其中該轉換電路依據該指數偏移值與一標準偏移值將該至少一已編碼浮點數中的一目前已編碼浮點數的一已編碼指數值轉換為至少一解碼浮點數中的一目前解碼浮點數的一解碼指數值,以及該轉換電路將該至少一解碼浮點數提供給該運算電路。
  29. 如請求項28所述的解碼裝置,其中該轉換電路使用該目前已編碼浮點數的一符號值作為該目前解碼浮點數的一符號值。
  30. 如請求項28所述的解碼裝置,其中該轉換電路使用該目前已編碼浮點數的一尾數值作為該目前解碼浮點數的一尾數值。
  31. 如請求項30所述的解碼裝置,其中當該目前解碼浮點數的一尾數欄位的一位元數量大於該目前已編碼浮點數的該尾數值的一位元數量時,該轉換電路將該目前已編碼浮點數的該尾數值填入該目前解碼浮點數的該尾數欄位,以及該轉換電路填入0於該目前解碼浮點數的該尾數欄位的一剩餘部份。
  32. 如請求項28所述的解碼裝置,其中該轉換電路計算該指數偏移值與該標準偏移值的一差值,以及該轉換電路使用該差值將該目前已編碼浮點數的該已編碼指數值轉換為該目前解碼浮點數的該解碼指數值。
  33. 如請求項32所述的解碼裝置,其中該轉換電路將該標準偏移值減去該指數偏移值而產生該差值,以及該轉換電路將該目前已編碼浮點數的該已編碼指數值加上該差值而產生該目前解碼浮點數的該解碼指數值。
  34. 如請求項32所述的解碼裝置,其中該轉換電路將該指數偏移值減去該標準偏移值而產生該差值,以及該轉換電路將該目前已編碼浮點數的該已編碼指數值減去該差值而產生該目前解碼浮點數的該解碼指數值。
TW110110407A 2021-03-23 2021-03-23 浮點數的編碼與解碼的方法與裝置 TWI785546B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
TW110110407A TWI785546B (zh) 2021-03-23 2021-03-23 浮點數的編碼與解碼的方法與裝置
US17/238,226 US11387843B1 (en) 2021-03-23 2021-04-23 Method and apparatus for encoding and decoding of floating-point number
CN202110495935.1A CN115113924A (zh) 2021-03-23 2021-05-07 浮点数的编码与译码的方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW110110407A TWI785546B (zh) 2021-03-23 2021-03-23 浮點數的編碼與解碼的方法與裝置

Publications (2)

Publication Number Publication Date
TW202238363A TW202238363A (zh) 2022-10-01
TWI785546B true TWI785546B (zh) 2022-12-01

Family

ID=82323894

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110110407A TWI785546B (zh) 2021-03-23 2021-03-23 浮點數的編碼與解碼的方法與裝置

Country Status (3)

Country Link
US (1) US11387843B1 (zh)
CN (1) CN115113924A (zh)
TW (1) TWI785546B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060181436A1 (en) * 2003-04-28 2006-08-17 Nippon Telegraph And Telephone Corp. Floating point type digital signal reversible encoding method, decoding method, devices for them, and programs for them
US20130060827A1 (en) * 2009-10-23 2013-03-07 Albert W. Wegener Block floating point compression with exponent token codes
US9104473B2 (en) * 2012-03-30 2015-08-11 Altera Corporation Conversion and compression of floating-point and integer data
TWI506539B (zh) * 2011-12-23 2015-11-01 Intel Corp 十進位浮點資料邏輯提取的方法與設備
TWI524265B (zh) * 2011-06-30 2016-03-01 艾特拉股份有限公司 浮點資料之壓縮
US20170194986A1 (en) * 2016-01-04 2017-07-06 Solid, Inc. Data compression device and method using floating point format
US10200060B1 (en) * 2014-12-22 2019-02-05 EMC IP Holding Company LLC Content-aware lossless compression and decompression of floating point data
US20200225948A1 (en) * 2020-03-28 2020-07-16 Jaewoong Sim Method and System for Efficient Floating-Point Compression

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004114527A1 (ja) * 2003-06-20 2004-12-29 Nippon Telegraph And Telephone Corporation 浮動小数点形式ディジタル信号可逆符号化方法、及び復号化方法と、その各装置、その各プログラム
CN101019325A (zh) 2004-09-13 2007-08-15 易斯普维 压缩和解压缩数字序列的方法
US8880571B2 (en) * 2006-05-05 2014-11-04 Microsoft Corporation High dynamic range data format conversions for digital media
JP2011215728A (ja) * 2010-03-31 2011-10-27 Toshiba Corp 書類管理システム、判定装置、データ出力制御装置、書類管理方法、書類管理プログラム
US8719322B2 (en) * 2011-04-06 2014-05-06 Kodak Alaris Inc. Floating point format converter
US9143159B2 (en) * 2012-10-04 2015-09-22 Silminds, Inc. DPD/BCD to BID converters

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060181436A1 (en) * 2003-04-28 2006-08-17 Nippon Telegraph And Telephone Corp. Floating point type digital signal reversible encoding method, decoding method, devices for them, and programs for them
US20130060827A1 (en) * 2009-10-23 2013-03-07 Albert W. Wegener Block floating point compression with exponent token codes
TWI524265B (zh) * 2011-06-30 2016-03-01 艾特拉股份有限公司 浮點資料之壓縮
TWI506539B (zh) * 2011-12-23 2015-11-01 Intel Corp 十進位浮點資料邏輯提取的方法與設備
US9104473B2 (en) * 2012-03-30 2015-08-11 Altera Corporation Conversion and compression of floating-point and integer data
US10200060B1 (en) * 2014-12-22 2019-02-05 EMC IP Holding Company LLC Content-aware lossless compression and decompression of floating point data
US20170194986A1 (en) * 2016-01-04 2017-07-06 Solid, Inc. Data compression device and method using floating point format
US20200225948A1 (en) * 2020-03-28 2020-07-16 Jaewoong Sim Method and System for Efficient Floating-Point Compression

Also Published As

Publication number Publication date
CN115113924A (zh) 2022-09-27
TW202238363A (zh) 2022-10-01
US11387843B1 (en) 2022-07-12

Similar Documents

Publication Publication Date Title
JP6616877B2 (ja) Vlsiでの効率的なハフマン符号化を行う装置および方法
JP3227292B2 (ja) 符号化装置、符号化方法、復号化装置、復号化方法、符号化復号化装置及び符号化復号化方法
CN105634499B (zh) 一种基于新短浮点型数据的数据转换方法
US9423999B1 (en) Block floating-point representation of data samples
JP5366363B2 (ja) Mをnより小さいとしてnビット語をmビット語にトランスコードする方法および装置
US7602316B2 (en) Data coding/decoding for electrical computers and digital data processing systems
KR102233174B1 (ko) 신경망 가속기 및 그것의 동작 방법
WO2019041919A1 (zh) 一种数据编码方法、装置以及存储介质
JPH0253329A (ja) 圧縮符号化方法及び復号方法
US8933826B2 (en) Encoder apparatus, decoder apparatus and method
KR20190038746A (ko) 데이터 인코딩 방법, 장치 및 저장매체
WO2021027487A1 (zh) 一种编码方法及相关设备
JP5619326B2 (ja) 符号化装置、復号装置、符号化方法、符号化プログラム、復号方法および復号プログラム
TWI785546B (zh) 浮點數的編碼與解碼的方法與裝置
US8754792B2 (en) System and method for fixed rate entropy coded scalar quantization
JPS6376525A (ja) 算術符号化システムにおける確率適応化方法
US9160362B1 (en) Lempel-Ziv (LZ)-based data compression employing implicit variable-length distance coding
CN112449191B (zh) 压缩多个图像的方法、解压缩图像的方法和装置
WO2022156601A1 (zh) 音频编码方法和解码方法、音频编码装置和解码装置
CN116208171A (zh) 数据压缩和解压缩方法、装置、电子设备及存储介质
CN110739974B (zh) 数据压缩方法及装置和计算机可读存储介质
JP4148356B2 (ja) 量子化ステップパラメータ決定装置と量子化ステップパラメータ決定方法と量子化ステップパラメータ決定プログラム、ならびに非線形量子化方法と非線形量子化装置と非線形量子化プログラム
EP2113845A1 (en) Character conversion method and apparatus
CN107463355B (zh) 立即数压缩编码方法和系统
CN111181568A (zh) 数据压缩装置及方法、数据解压装置及方法