TWI524265B - 浮點資料之壓縮 - Google Patents

浮點資料之壓縮 Download PDF

Info

Publication number
TWI524265B
TWI524265B TW101123004A TW101123004A TWI524265B TW I524265 B TWI524265 B TW I524265B TW 101123004 A TW101123004 A TW 101123004A TW 101123004 A TW101123004 A TW 101123004A TW I524265 B TWI524265 B TW I524265B
Authority
TW
Taiwan
Prior art keywords
mantissa
floating point
index
sign
bits
Prior art date
Application number
TW101123004A
Other languages
English (en)
Other versions
TW201322118A (zh
Inventor
艾伯特 偉格納
Original Assignee
艾特拉股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 艾特拉股份有限公司 filed Critical 艾特拉股份有限公司
Publication of TW201322118A publication Critical patent/TW201322118A/zh
Application granted granted Critical
Publication of TWI524265B publication Critical patent/TWI524265B/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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Nonlinear Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

浮點資料之壓縮
本文描述的本技術相關於以在計算系統中用於有效率的儲存及轉移的浮點格式表示之資料的壓縮。
在目前的高效能計算應用程式中,常必需在多處理器核心之間或在記憶體核心與記憶體之間轉移大量的浮點資料。處理器核心之間及核心與記憶體之間的介面的有限資料轉移率可產生整體資料處理速度及效能的瓶頸。在資料豐富的應用程式中,浮點資料的儲存對記憶體資源及儲存裝置係項挑戰。降低對浮點資料之資料傳輸及儲存容量的要求可改善計算系統的效率、經劑性、及效能。然而,浮點資料的壓縮可能以額外的計算成本降低此等要求。在具有大量浮點資料的應用程式中,該壓縮有計算效率以將計算資源的要求最小化係特別重要的。
共同擁有的專利及申請案描述可應用至代表數值資料或訊號樣本之定點、或整數的各種壓縮技術。此等包括由Wegener於1998年11月17日發佈之US案號第5,839,100號(該'100專利),發明名稱為「取樣資料訊號的無損耗及有限損耗的壓縮」,以及於2011年4月28日公開之US專利申請案案號第12/605,245號(該'245申請案),發明名稱為「訊號資料的區塊浮點壓縮」,公開號係2011-0099295。由Wegener於2011年3月31日公開 之共同擁有的專利申請案案號第12/891,312號(該'312申請案),發明名稱為「使用壓縮及解壓縮的強化多處理器波形資料交換」,公開號係2011-0078222,描述在具有多核心處理器的計算系統中用於定點或浮點資料種類的可組態壓縮及解壓縮,其以提及之方式併入本文中。在多核心處理環境中,輸入、中間、以及輸出波形資料常在核心之間或核心與記憶體裝置之間交換。該'312申請案描述在可壓縮/解壓縮整數或浮點波形資料之各核心的可組態壓縮器/及解壓縮器。該'312申請案描述在記憶體控制器的可組態壓縮/解壓縮,以在壓縮封包中壓縮/解壓縮用於轉移至晶片外記憶體/自其轉移出的整數或浮點波形資料。可能將該'312申請案的可組態壓縮器及解壓縮器組態成施用於描述於本申請案中的浮點壓縮及解壓縮。
圖1係描繪使用在計算系統中的浮點資料格式之範例的圖。此浮點格式僅為說明目的而呈現。本文描述的壓縮及解壓縮並未受限於浮點資料的此特定呈現。在圖1中,該浮點格式藉由二進位位元陣列表示浮點數10。浮點數10佔據包括單一正負號位元12、代表指數14的位元數NE、及代表尾數16之位元數NM的多個位元NB,也稱為有效位數。正負號位元12對正數具有s=0且對負數具有s=1之值。位元數NB、NE、以及NM可能由浮點格式指定。例如,用於浮點算術的IEEE-754標準,稱為「IEEE-754標準」,界定單精準度及倍精準度浮點格式。針對單精準度,位元數NB=32、指數位元數NE=8、且尾數位元 數NM=23。為從定點二進位數建構單精準度浮點數,將該二進位定點數的前導之「1」偏移至該二進位點的左側,並將小數部分儲存在浮點尾數16的NM個位元中。該前導之「1」並未儲存在浮點尾數16中。為將浮點指數14僅儲存為正值,將127的指數偏差加至指數值。以正負號及乘法符號將單精準度浮點數的值給定為,(-1)s×1.m×2(e-e0) (1)
其中s係正負號位元12的值、m係尾數16的二進位值、e係指數14的二進位值、且e0=127,用於單精準度的指數偏差。針對e0=127,方程式(1)中的指數項(e-e0)可係在-127(e-e0)128之範圍中的任何值。針對倍精準度浮點格式,IEEE-754標準指定位元數NB=64、指數位元數NE=11、尾數位元數NM=52、以及指數偏差e0=1023。在方程式(1)中,「1.m」項在二進位點之前包含未明顯地編碼在尾數「m」中,但隱含地編碼在浮點格式中的「1」。該隱含的「1」稱為「隱藏位元」。
為在許多計算應用程式中更好地符合更高速的資料轉移、降低記憶體使用、以及最小計算的要求,對浮點資料之有計算效率的壓縮及解壓縮存在需求。
可針對有效率的資料轉移及記憶體使用提供有計算效率的浮點數壓縮。在一變化中,浮點數壓縮係藉由比較浮點數的指數及一或多個指數臨界,以分類浮點數並將不同 壓縮種類施用至不同類別而實現。各類別及壓縮種類與指示器關聯。針對M個浮點數維護用於M個指示器的指示器陣列。指示器在指示器陣列中的位置對應於該等浮點數之一者且指示器值指示該浮點數的類別及壓縮種類。如該指示器值所指示的,根據用於浮點數之類別的壓縮種類編碼該浮點數,以提供編碼浮點數。壓縮資料封包包含指示器陣列以及多達M個編碼浮點數。
壓縮資料封包的解壓縮係藉由從來自壓縮資料封包的編碼浮點數重構浮點數而實現。從壓縮資料封包擷取指示器陣列。指示器陣列的M個指示器對應於包含在壓縮資料封包中的編碼浮點數,其中指示器在指示器陣列中的位置對應於編碼浮點數且指示器值指定壓縮種類。從壓縮資料封包擷取對應於指示器的編碼浮點數。根據與指示器值關聯的壓縮種類將編碼浮點數解碼,以形成具有根據浮點格式之原始位元數的重構浮點數。
在另一變化中,藉由將複數個浮點數的指數、尾數壓縮、並選擇性地壓縮正負號,在資料處理系統中實現浮點數的壓縮。針對指數壓縮,計算浮點數的指數之間的差,以產生指數差。從將一組指數差值與一組對應指數符記關聯的碼表選擇用於該指數差的指數符記。針對尾數壓縮,基於浮點數的指數判定用於尾數符記的編碼尾數位元數。將尾數編碼為具有預定編碼尾數位元數的尾數符記。可能直接編碼浮點數的正負號而不壓縮,其中將正負號符記設定成正負號的值。或者,可能壓縮正負號以產生用於複數 個浮點數的較少正負號符記。針對複數個浮點數產生的指數符記、尾數符記、以及正負號符記形成儲存在壓縮資料封包中的複數個編碼浮點數。
壓縮資料封包在資料處理系統中的解壓縮係藉由從來自壓縮資料封包之包括正負號符記、指數符記、以及尾數符記的複數個編碼浮點數重構複數個浮點數而實現。從壓縮資料封包擷取複數個編碼浮點數的指數符記。將一組指數差值與一組對應指數符記關聯的碼表用於判定以指數符記表示的指數差。將解碼指數差加至先前的重構指數,以產生重構指數。為解壓縮尾數,將重構指數用於判定編碼尾數位元數。從壓縮資料封包擷取對應於重構指數並具有編碼尾數位元數的尾數符記並解碼之,以形成重構尾數。針對直接編碼正負號符記,從壓縮資料封包擷取的正負號符記提供重構正負號。或者,針對壓縮正負號,將正負號符記解壓縮以提供重構正負號。將從各編碼浮點數產生的重構正負號、重構指數、以及重構尾數組合,以根據浮點格式形成重構浮點數,以產生複數個重構浮點數。
在另一變化中,藉由將在編碼群組中受處理之複數個浮點數的指數、尾數壓縮、並選擇性地壓縮正負號,在資料處理系統中實現浮點數的壓縮。針對指數壓縮,判定各編碼群組的最大指數。計算不同編碼群組的最大指數之間的差,以產生指數差。從將一組指數差值與一組對應指數符記關聯的碼表選擇用於該指數差的指數符記。針對尾數壓縮,基於針對編碼群組判定的最大指數判定用於尾數符 記的編碼尾數位元數。將編碼群組中的各尾數編碼為具有預定編碼尾數位元數的尾數符記。可能直接編碼浮點數的正負號而不壓縮,其中將正負號符記設定成正負號的值。或者,可能壓縮正負號以產生用於編碼群組的較少正負號符記。將針對編碼群組產生的指數符記、尾數符記、以及正負號符記儲存在壓縮資料封包中。壓縮資料封包可能包含用於複數個編碼浮點數的編碼群組序列。
壓縮資料封包在資料處理系統中的解壓縮係藉由從配置在壓縮資料封包中的編碼群組中之包括正負號符記、指數符記、以及尾數符記的複數個編碼浮點數重構複數個浮點數而實現。從壓縮資料封包擷取編碼群組的指數符記。將一組指數差值與一組對應指數符記關聯的碼表用於判定以指數符記表示的指數差。將解碼指數差加至先前重構的最大指數,以產生用於編碼群組的重構最大指數。為解壓縮尾數,將重構最大指數用於判定用於編碼群組中之各尾數的編碼尾數位元數。從壓縮資料封包擷取具有編碼尾數位元數的尾數符記並解碼之,以形成用於編碼群組的重構尾數。針對直接編碼正負號符記,從壓縮資料封包擷取的正負號符記提供重構正負號。或者,針對壓縮正負號,將正負號符記解壓縮以提供用於編碼群組的重構正負號。將從編碼群組中之各編碼浮點數產生的重構正負號、重構指數、以及重構尾數組合,以根據浮點格式形成重構浮點數。
本文描述之壓縮及解壓縮的實施例可能包含表示使用在本文中稱為浮點資料、浮點數、以及浮點樣本的浮點格式之數位資料的各種計算架構。浮點資料可能藉由各種應用程式及產生,且計算架構可能係通用或針對特定應用特殊化的。數位資料可能從來自實體處理的偵測資料、由計算模擬或資料處理之中間值產生的資料產生。例如,該數位資料可能從藉由類比至數位轉換器(ADC)轉換為其樣本值係以浮點格式表示之數位訊號的類比感測器訊號產生。另一範例係該數位資料可能係用於模擬電腦圖形影像的空間資料點。
圖2係適合供浮點資料之壓縮及解壓縮的實施例使用之電腦系統的方塊圖。電腦系統210典型地包括經由匯流排次系統212與許多周邊裝置通訊的至少一處理器214。該等周邊裝置可能包括儲存次系統224,包含記憶體次系統226以及檔案儲存次系統228、使用者介面輸入裝置222、使用者介面輸出裝置220、以及通訊介面次系統216。該等輸入及輸出裝置容許使用者與電腦系統210互動。通訊介面次系統216提供至通訊頻道或網路218的介面,其可能係單頻道或具有多頻道的通訊網路。將通訊頻道或網路218耦合至其他電腦系統、傳輸或接收裝置、或外側網路中的對應介面裝置。通訊頻道或網路218可能包含有線連接、光學連接、無線連接、或用於資訊通訊的任何其他機制。通訊網路218可能包含許多已互連電腦系統 及通訊連接。雖然在一實施例中,通訊網路218係網際網路,在其他實施例中,通訊網路218可能係任何合適的電腦網路。
使用者介面裝置222可能包含鍵盤、諸如滑鼠、軌跡球、觸控板、或圖形輸入板之指向裝置、掃描器、併入顯示器的觸控螢幕、諸如語音辨識系統、麥克風之音訊輸入裝置、以及其他種類的輸入裝置。通常,術語「輸入裝置」的使用意圖包括將資訊輸入至電腦系統210之所有可能類型的裝置及方式。
使用者介面輸出裝置220可能包含顯示次系統,列表機、傳真機、或非視覺顯示,諸如音訊輸出裝置。該顯示次系統可能包含陰極射線管(CRT)、平面裝置,諸如液晶顯示器(LCD)、投影裝置、或用於產生可視影像的特定其他機制。該顯示次系統也可能提供非視覺顯示,諸如經由音訊輸出裝置。通常,術語「輸出裝置」的使用意圖包括將資訊從電腦系統210輸出至使用者或至其他機械或電腦系統之所有可能類型的裝置及方式。
儲存次系統224儲存可能提供用於本文描述的該浮點壓縮及/或解壓縮之部分或全部功能的基本程式化及資料架構。此等軟體模組通常由處理器214執行。處理器(等)214可能包括一或多個DSP、微處理器、微控制器、CPU、或GPU。處理器(等)214也可能包括實作部分或全部浮點壓縮及/或解壓縮功能的專用特定應用積體電路(ASIC)或現場可程式閘陣列(FPGA)邏輯。
記憶體次系統226典型地包括許多記憶體,該等記憶體包括在程式執行期間用於指令及資料儲存的主隨機存取記憶體(RAM)230以及將固定指令儲存於其中的唯讀記憶體(ROM)232。檔案儲存次系統228提供用於程式及資料檔案的永續儲存,並可能包括硬式磁碟驅動機、連同關聯之可移除媒體的軟式磁碟驅動機、CD-ROM驅動器、光學驅動器、或可移除媒體匣。可能藉由檔案儲存次系統228儲存實作特定實施例之功能的該等資料庫及模組。
匯流排次系統212提供用於使電腦系統210之各種組件及次系統如預期地彼此通訊的機制。雖然將匯流排次系統212概要地顯示為單一匯流排,該匯流排的替代實施例可能使用多匯流排。
電腦可讀媒體240可係與檔案儲存次系統228,及/或與通訊介面次系統216關聯的媒體。電腦可讀媒體240可係硬碟、軟碟、CD-ROM、光學媒體、可移除媒體匣、或電磁波。將電腦可讀媒體240顯示為壓縮資料檔242。電腦可讀媒體也可能儲存實作浮點壓縮及/或解壓縮功能的程式。
電腦系統210自身可係各種類型,包括個人電腦、可攜式電腦、工作站、電腦終端機、網路電腦、大型主機、電視機、智慧型手機、平板電腦、或任何其他資料處理系統或使用者裝置。甚至由於電腦及網路的本質改變,將描畫於圖2中之電腦系統210的描述視為係僅用於說明較佳實施例之目的的特定範例。電腦系統210的許多其他組態 可能具有較描畫於圖2中之該電腦系統更多或更少的組件。
圖3、4、及5描繪具有適合浮點壓縮及解壓縮之實施例的多處理器核心之資料處理裝置的範例。例如,多處理器核心裝置可能包含圖2之電腦系統210的處理器(等)214。例如,可能將多核心處理器嵌入應用裝置中,諸如,行動耳機、智慧型手機、機上盒、醫學成像裝置、無線通訊基礎架構、及其他計算密集型儀器。
圖3描繪供浮點資料之壓縮及解壓縮的實施例使用之四核心先進RISC機器(ARM)Cortex-A15處理器的方塊圖。ARM於2010年9月介紹的A15核心瞄準在智慧型手機(一至二個A15核心)、無線基材台(二至四個核心)、及低功率伺服器(四至十二個核心)中的使用。在圖3中,四個A15核心分享2級(L2)快取以及至128-位元AMBA 4匯流排的連接。AMBA 4匯流排可連接至少3個四核心A15處理器,因此容許A15使用者在單一矽晶粒上例示多達十二個A15核心。ARM Cortex-A15設計典型地將以32nm或28nm CMOS製程製造。在圖3中,標示為「FPU/NEON資料引擎」(FPU=浮點單元;NEON=ARM的單指令多資料[SIMD]執行單元)的方塊可合併本文描述的浮點壓縮及解壓縮功能。偵測控制單元(SCU)係用於AMBA 4匯流排的介面。SCU可包括實作浮點壓縮及解壓縮功能的額外方塊。經由AMBA 4匯流排介面將整數及浮點資料種類傳送至其他A15核心,並從其他A15核心、 晶片外記憶體及匯流排接收。當與既存之浮點數及整數的非壓縮轉移比較時,資料壓縮會將顯著的額外帶寬加至AMBA 4匯流排,或替代地,會容許AMBA 4匯流排轉移顯著地需要較少的功率。
圖4描繪供浮點資料的壓縮及解壓縮之實施例使用的Intel Nehalem CPU架構。Intel Nehalem CPU 400在一晶粒上包含四個處理器核心400a、400b、400c、以及400d,具有8 MB容量的共享快取402。處理器核心400a至400d經由一對快速通道互連(QPI)介面404存取其他電腦系統週邊。QPI介面404使用封包為基的通訊協定。Intel CPU的部分版本也使用一或多個QPI介面404以與也具有一或多個QPI介面404的其他Intel CPU通訊。壓縮浮點資料可能在CPU核心400a-d、快取402、記憶體406、以及QPI 404之間轉移。可將壓縮器積體在各QPI介面404,以針對待傳輸之QPI封包的酬載壓縮資料,並從該已接收QPI封包的酬載解壓縮該壓縮資料。用於提供用於Nehalem處理器之資料的晶片外輸入控制器(未圖示)可能壓縮該資料,以形成用於QPI封包的壓縮酬載資料。在QPI互連連接控制器404的解壓縮器解壓縮該壓縮酬載資料,並提供作為用於轉移至CPU核心400a-d的QPI封包之酬載資料的解壓縮資料。CPU核心400a-d也可能實作用於資料轉移的壓縮器及解壓縮器。積體記憶體控制器也可能包括壓縮器及解壓縮器,以壓縮提供至晶片外記憶體的波形資料並解壓縮自記憶體取得的壓縮波形資 料。此等壓縮器及解壓縮器可施用本文描述的浮點壓縮及解壓縮。
圖5描繪供浮點資料的壓縮及解壓縮之實施例使用的Nvidia GeForce 8800 GPU架構。Nvidia GeForce 8800 GPU包括分組為8組多處理器410a至410h的64個處理器。各多處理器包括8個核心。多處理器410a至410h使用分散式1級(L1)快取412及分散式2級(L2)快取413以儲存輸入值、中間值、以及輸出值,並在核心之間交換此種值。GeForce 8800從主CPU 414接收輸入資料值並將輸出資料值傳輸至其。例如,可能將浮點資料的壓縮積體入用於資料裝配器之主機-至-GPU及GPU-至-主機通訊控制器中。也可能將浮點壓縮及解壓縮積體入GPU記憶體控制器中(未顯示於圖5中)。
圖6係供浮點資料之壓縮及解壓縮的實施例使用之感測器處理系統的方塊圖。感測器次系統422偵測特定模式的實體訊號,並將代表該實體量測的類比訊號提供至ADC 424。感測器次系統422的範例包括聲轉換器、x-光偵測器、無線電天線、地震感測器、或感測器陣列。ADC 424將類比訊號轉換為提供至應用處理器426的數位訊號樣本。應用處理器426可能將該等訊號樣本表示為浮點數,如圖1所示。應用處理器可能具有用於該應用的定製架構或如圖2至圖5描畫的架構。應用處理器426可能為多種目的壓縮浮點資料,包括儲存在內部記憶體或外部儲存裝置中,在處理器426內的處理單元之間轉移,或轉移至用 於進一步處理、顯示等的外部裝置。在下文中描述浮點壓縮及解壓縮的數個替代實施例。
圖7係依據第一實施例之浮點壓縮的方塊圖。此實施例良好地適用於叢發性浮點資料的應用程式,使得低或無關緊要之值的字串隨較高、重要之值的字串散佈。將浮點資料的指數值與臨界比較,以將彼等區分為類別,或箱,且施用的壓縮種類取決於該類別。例如,若浮點數係如圖1所示地表示,指數14提供輸入指數301。在比較方塊302測試浮點數的輸入指數301以判定其是否大於臨界T0。數字NH保持高於臨界T0之連續輸入指數301之字串的計數,且數字NL保持低於或等於臨界T0之連續輸入指數301之字串的計數。指示器陣列針對各類別儲存連續輸入指數之字串的長度及種類。圖8顯示該指示器陣列的較佳結構。針對大於T0之連續輸入指數的字串,指示器陣列330包括其後跟隨包含NH之值的位元場之設定為1的指示器位元331。針對少於T0之連續輸入指數的字串,指示器陣列332包括其後跟隨包含NL之值的位元場之設定為0的指示器位元333。回到圖7,方塊304及306判定目前輸入指數301是否開始具有高於或低於/等於臨界T0的個別值之連續指數的新字串。若目前輸入指數301未開始新字串,則方塊308及310分別遞增NH或HL的值。
當輸入指數301大於T0時,編碼器312編碼對應浮點數。在低計算複雜度的情形中,編碼器312可能將浮點數以其目前的格式,諸如圖1之格式,提供至封包器 314。在此情形中,壓縮略過其指數低於或等於臨界之浮點資料的編碼及儲存。在需要更多計算的情形中,編碼器312可能如下文所述地更行壓縮浮點數。封包器314將NH個浮點數的字串與指示器陣列330連接。圖8顯示其後跟隨包含已編碼之NH個浮點數之位元場334的指示器陣列330。當輸入指數少於或等於T0時,未編碼該對應低值浮點數。將數字NL儲存在指示器陣列332中,如圖8所示。
回到圖7,當方塊304及306指示目前輸入指數301開始新字串時,方塊316及318設定用於個別指示器陣列330或332之對應於先前字串之NL或NH的最終值。將用於先前字串的指示器陣列提供至封包器314。方塊320及322將用於以目前輸入指數301開始之新字串的新指示器陣列初始化。針對目前字串,將個別指示器位元B0設定為0或1。
參考圖8,封包器314形成具有標頭部338及資料部340的壓縮資料封包336。針對此範例,封包器314將指示器陣列330、位元場334、以及指示器陣列332循序地儲存在資料部340。標頭部338包括用於指示封包336之序列資訊的同步場以及用於儲存臨界值T0的部。較佳地,指示器陣列330及332各者具有一位元的界定長度。此容許字串長度多達127,或用於NL及NH的最大值127。如上文所述,當到達字串的最大長度時,針對次一輸入指數301初始化新的指示器陣列。或者,指示器陣列 330及332的長度可能係位元的整數倍。以位元為單位的長度係較佳的,因為位元級存取可由軟體及韌體指令集支援。
圖9係依據第一實施例之解壓縮器的方塊圖。方塊343從封包336的標頭部338擷取sync值及臨界T0值。方塊341從封包資料部340擷取指示器陣列。方塊349測試來自該指示器陣列之指示器位元B0的值。當B0=0時,方塊342判定來自指示器陣列之NL的值。因為在壓縮期間未將對應浮點數儲存在資料部340中,方塊344將NL個填充值***在資料字串的對應位置中。例如,可能產生等於0.0之NL個浮點數的字串。當低於臨界T0的值在該應用的計算中無效時,此係適當的。其他情形包括***具有低於臨界T0之值的隨機浮點數、低於在壓縮期間或適合該應用的其他函數計算之臨界T0的浮點資料平均值。當B0=1時,方塊346判定來自指示器陣列之NH的值。方塊346針對資料字串中的對應位置,從資料部340解封裝NH個對應浮點數。若編碼器312壓縮NH個浮點數,方塊346將解封裝並解壓縮該壓縮資料。方塊347將浮點數的產生字串與從資料部340重構的先前字串連接,直到到達封包終端。參考圖8,序列339顯示其後跟隨可能設定為0.0之NL個填充值「X.Y」的字串之NH個未封裝浮點數的字串。回到圖9,在到達封包終端之前,擷取次一指示器陣列以重複方塊341的處理。當到達封包336的終端時,方塊348使用從標頭部338擷取的sync值,以將目 前未封裝封包與先前未封裝封包同步。
圖10係浮點壓縮之第二實施例的方塊圖。此實施例在資料具有大比例之非常低或無效的值,但可能不叢發時係較佳的。將浮點資料的指數值與臨界比較,以區分為類別。針對具有與第一實施例之結構不同之結構的指示器陣列設定指示器B0。參考圖11,指示器陣列370包括M個二進位指示器位元B0。回到圖10,在比較方塊302比較第n個浮點指數值301及臨界T0。方塊352及350依據結果將對應指示器位元B0設定為0或1。方塊354將B0的值儲存至指示器陣列370的第n個位置。若第n個浮點指數大於或等於臨界T0,編碼器358編碼第n個浮點數。如下文另行描述的,編碼器358可能壓縮該浮點數。或者,編碼器358可能將該浮點數以其目前格式,諸如圖1的格式,轉移至封包器362。若第n個浮點指數少於或等於臨界T0,則不編碼第n個浮點數。方塊356及360遞增n,直到已處理M個浮點數。封包器362將指示器陣列370的M個指示器位元B0及對應編碼浮點數儲存在封包374的資料部378中。若數字M係8的倍數,指示器陣列370可能更易於由通用CPU及GPU管理,因為彼等的指令集包括直接在8位元之倍數的值上操作的指令。M的此種便利值在每一指示器陣列370包括8、16、32、或64位元。
圖11描繪用於浮點壓縮的第二實施例之封包結構的範例。指示器陣列370包括用於M個浮點數各者的單一指示器位元B0。封包器362將浮點數或對應於跟隨指示器陣 列370之指示器位元B0=1的壓縮浮點數封裝入封包374的資料部378。在此範例中,將對應於n=3、4、5、8、以及M的此等浮點數儲存為編碼浮點資料372。封包器將同步資訊及臨界值T儲存在標頭部376中。封包374的資料部378包含至少一指示器陣列370以及對應浮點資料372。
圖12係依據第二實施例之解壓縮器的方塊圖。方塊343從封包374的標頭部376擷取sync值及臨界T0值。方塊341從封包資料部378擷取指示器陣列。方塊349測試來自該指示器陣列之第n個指示器位元B0的值。當B0=0時,方塊382將浮點填充值提供至重構浮點序列的第n個位置。當B0=1時,方塊384針對重構浮點序列的第n個位置從FP資料372解碼對應浮點數。若編碼方塊358壓縮該浮點數,方塊384將解封裝並解壓縮該壓縮浮點數。方塊386提供用於從由方塊382及384提供的浮點數建立浮點序列的索引及緩衝器。方塊388判定是否已處理M個指示器位元B0。若未處理,在方塊349測試來自指示器陣列的次一指示器位元B0。方塊390判定是否已到達封包資料部378的終端。若未到達,則在方塊341擷取次一指示器陣列370。若已到達終端,則方塊348將在方塊386產生之重構浮點數的目前序列與浮點數的先前重構序列同步。
圖13係根浮點壓縮之第三實施例的方塊圖。在此實施例中,將輸入指數與多個指數臨界比較,且施用的壓縮 種類係基於該等比較的結果。指數臨界提供用於指數值之範圍的邊界。指數值的範圍界定用於輸入浮點數的個別類別。輸入浮點數的類別決定壓縮種類。針對此範例,藉由三個指數臨界限定四個指數值範圍,且最小及最大指數值為浮點格式所支援。2-位元指示器B0與各指數範圍、浮點數的對應類別、以及用於該類別的壓縮種類關聯。如圖14所示,此範例的指示器陣列530包含M個2-位元指示器B0。回到圖13,可能在比較方塊502、504、以及506將第n個輸入指數與臨界T0、T1、以及T2分別比較,以判定對應浮點數的指數範圍及類別。將臨界值設定成使得T0<T1<T2為佳。方塊500、508、510、以及512基於已判定指數範圍將2-位元指示器B0=00、B0=01、B0=10、或B0=11設定至個別類別。如此範例所示,針對最低值類別,當指數低於T0時,可能不壓縮浮點數。或者,可能將最低值類別中的浮點數編碼為N0個位元,如針對編碼器方塊514、516、以及518所描述的。針對較高值類別,當指數高於T0時,個別編碼器方塊514、516、或518編碼使用N1、N2、或N3個位元的對應浮點數。編碼器518對應於具有最高指數值範圍的最高值類別。當N3少於原始位元數NB時,編碼器518將浮點數壓縮至N3個位元。或者,編碼器518可能保持用於浮點數的原始位元數,其中N3等於NB。較佳地,將浮點數的較低至較高值類別編碼成漸大的位元數,其中0N0<N1<N2<N3 NB。在一替代壓縮種類中,編碼器514及516截短尾數,但儲存對應對 應指數位元及正負號位元而不壓縮。該正負號位元、原始指數、以及壓縮尾數形成編碼浮點數。例如,當原始位元數NB=32時,可能將對應於浮點數之個別類別的位元數設定成N1=16、N2=24、以及N3=32。針對此範例,將由N1=16位元表示之樣本的尾數從23個位元截短至7個位元,並將由N2=24位元表示之樣本的尾數從23個位元截短至15個位元,而將該一位元正負號及原始8-位元指數保持不變。較佳地,每一編碼浮點數的位元數N1、N2、或N3係八的整數倍,所以編碼表示的尺寸係位元的整數倍。再次,針對N1、N2、以及N3係8位元之倍數的此優先選擇反映習知地處理具有8、16、32、以及64位元之運算元的CPU及GPU指令的可用性。方塊520將2-位元指示器B0儲存至指示器陣列530(圖14)。封包器522將指示器陣列530的M個2-位元指示器B0及對應編碼浮點數儲存在封包534的資料部538中。方塊524及526遞增n,直到M個浮點數已受處理,以完成指示器陣列530。封包器522封裝指示器陣列530及對應編碼浮點數。
圖14描繪用於浮點壓縮的第三實施例之封包結構的範例。指示器陣列530包括用於M個浮點數各者的2-位元指示器B0。封包器522將跟隨指示器陣列530的編碼浮點數封裝在封包534的資料部538中。在此範例中,2-位元指示器B0=01、B0=10、以及B0=11在陣列530中的位置指示編碼浮點數532對應於位置n=2、3、4、M-1、以及M。2-位元指示器的值對應於施用至浮點數的壓縮。當 指示器B0=01時,對應浮點數使用N1個位元編碼。當指示器B0=10時,對應浮點數使用N2個位元編碼。當指示器B0=11時,對應浮點數使用N3個位元編碼。當指示器B0=00時,對應浮點數未在此範例中編碼。封包器522將同步資訊及臨界值T0、T1、以及T2儲存在標頭部536中。資料部538包含至少一指示器陣列530以及對應浮點資料532。
圖15係依據第三實施例之解壓縮器的方塊圖。方塊542從封包534的標頭部536擷取sync值及臨界值T0、T1、以及T2。方塊544從封包資料部538擷取指示器陣列。方塊546、547、548、以及549測試來自指示器陣列530之第n個2-位元指示器B0的值。針對此說明範例,當B0=00時,方塊550將浮點填充值提供至重構浮點序列的第n個位置。或者,壓縮資料封包可能包含編碼浮點數,各者具有N0個位元,對應於最低值類別且指示器值B0=00。針對此變化,如下文所述地將對應於指示器值B0=00的編碼浮點數解封裝及解碼。當B0=01、B0=10、或B0=11時,方塊551、552、553針對重構浮點序列的第n個位置從FP資料532解封裝並解碼對應浮點數。針對少於原始位元數NB的N1、N2、或N3,方塊551、552、或553解壓縮編碼浮點數以提供使用原始位元數NB的重構浮點數。例如,若編碼器514、516、及518截短尾數位元,解碼器547、548、以及549可能將零填入截短尾數位元的位置以提供重構尾數,並組合正負號位元、指數、以 及重構尾數以形成重構浮點數。若編碼器518儲存所有原始NB個位元(N3=NB),解碼器553將簡單地從封包574的資料部578解封裝對應浮點數。方塊554提供用於從由方塊550、551、552、以及553提供的浮點數建立浮點序列的索引及緩衝。方塊555判定是否已處理M個指示器位元B0。若未處理,測試來自指示器陣列530的次一指示器位元B0。方塊390判定是否已到達封包之資料部538的終端。若未到達,方塊544擷取次一指示器陣列。若已到達資料部538的終端,方塊556將在方塊554產生之重構浮點數的目前序列與重構浮點數的先前序列同步。
可能將相關於圖7、10、以及13描述的指數臨界T0設定成使得少於T0的資料足夠低,以在用於該應用程式的計算中無效。例如,應用程式可能具有脈衝或叢發資料,隨著低振幅或接近零值的運行,呈現較高、有效值的間歇叢集。例如,待共同處理之資料的動態範圍可能包括其最高有效位數少於較高幅度浮點值之最低有效位數的低幅度浮點值。在此種情形中,在有限精準度加法計算中低及高浮點數的和不會具有來自低數的作用。設定指數臨界T0以將可能在應用程式之計算精準度上常具有極少或沒有影響的零、低幅度、或無效的值消除,而保留彼等的位置資訊。上述指示器陣列將已消除低值的位置資訊保留在壓縮資料封包中。然後該位置資訊可能由解壓縮器使用,以將填充值置於重構浮點數序列中的適當位置。
在另一變化中,可能將指數臨界T0設定成初始值, 諸如最小指數值並於隨後迭代地調整。針對期望壓縮率,控制方塊可能監視壓縮資料封包的位元率並將指數臨界T0調整成較高或較低的指數值,直到實現期望壓縮率。
在另一變化中,針對應用程式資料中的一組浮點數分析指數值的直方圖,以判定導致特定壓縮率的臨界值T0。在第二實施例的以下範例中,當浮點指數值高於T0時,將所有NB個位元編碼,且當浮點指數值係或低於T0時,不儲存該浮點數,可將針對給定臨界T0的壓縮率計算如下,1)針對用於該應用程式的N個一組浮點數計算指數值的直方圖,其中numExp(x)係第x個直方圖箱中浮點指數數,其中x代表指數值,2)將少於或等於T0之直方圖箱x(其中將不儲存對應浮點值)中的指數數numExp(x)加總並除以N,以提供指數的分數fracExp(T0),3)計算壓縮率CR,CR=NB/[(NB+OB)-NB×fracExp(T0)] (2)
其中NB係每浮點樣本的原始位元數(亦即,用於單精準浮點的32),且OB係每樣本的消耗位元數。例如,每樣本的消耗位元數可能係每樣本在指示器B0中的位元數。壓縮率CR係浮點數之原始樣本中的位元數對對應壓縮樣本中之位元數的比率。針對相關於圖9至11描述之浮點壓縮的實施例,指示器陣列370在每消耗樣本加入一位元(OB=1),以指示浮點指數值是否高於或低於T0。 藉由其指數落在臨界之下的消除樣本將此等消耗位元移位。例如,一個已消除之32-位元浮點數移位將消耗位元移位32個樣本。
為將臨界T0設定成導致給定的壓縮率CR0,針對指數的分數fracExp(T0)解方程式(2),fracExp(T0)=(NB+OB)/NB-(1/CR0) (3)
因為浮點指數的分佈取決於資料,臨界T0可能不符合準確的期望壓縮率CR0。下列步驟判定至少提供期望壓縮率的臨界T0:1)從最小箱minExp至每個箱x=X將連續直方圖箱值numExp(x)相加,並除以N,以形成指數的累積分佈cumDist(X),cumDist(X)=[從x=minExp至x=X加總numExp(x)]/N
2)為選擇至少導致期望壓縮率CR0的臨界,找尋X0,其中cumDist(X0)fracExp(T0)
3)設定臨界T0=X0
為維持期望壓縮率,可能監視壓縮資料封包的位元率,並調整臨界T0。或者,可能如上文所述地針對後續的輸入樣本集重計算或更新用於後續一組浮點數之指數值的直方圖並週期地調整臨界T0
針對多指數臨界,如相關於第三壓縮實施例所描述的,臨界T0、T1、以及T2判定施用不同壓縮等級的四種浮點數類別。例如,可能將對應於個別浮點數類別的位元 數設定為N1=16、N2=24、以及N3=32,其中原始位元數NB=32。針對N2=24,從尾數移除八個位元,且針對N1=16,從尾數移除十六個位元。針對浮點數群組,指數臨界T0、T1、T2可能相對於最大指數值maxExp設定。用於待編碼浮點資料群組的臨界可能判定如下:
1)針對浮點數群組,判定最大指數值maxExp,
2)設定T2=maxExp-8-移位
3)設定T1=maxExp-16-移位
4)設定T0=maxExp-23-移位
當移位=0時,此方式移除在對應於最高指數值maxExp之尾數範圍外側的尾數位元。圖16描繪當移位=0且原始尾數尺寸為23位元時,相對尾數範圍的範例。尾數A代表對應於maxExp的23-位元二進位位置值範圍。編碼器518儲存對應於從maxExp至(maxExp-7)的指數值之尾數的所有23個位元。針對(maxExp-8)的指數值,尾數B的位置值範圍以相對於尾數A的8個位元右移。尾數B的最低8位元在尾數A之位置值範圍的外側。編碼器516從對應於從(maxExp-8)至(maxExp-15)之指數值的尾數移除最低的8個位元。針對(maxExp-16)的指數值,尾數C的位置值範圍以相對於尾數A的16個位元右移。編碼器514從對應於從(maxExp-16)至(maxExp-22)之指數值的尾數移除最低的16個位元。針對(maxExp-23)的指數值,尾數D的位置值範圍不與尾數A重疊。指數(maxExp-23)對應於指數臨界T0,所以 不儲存對應浮點數。
圖17描繪當移位為非零且尾數尺寸為23位元時,相對尾數範圍的範例。該移位係在相對於maxExp值之指數值中的偏移。非零移位容許以更高的位元數表示更多尾數。在此範例中,編碼器518儲存對應於從maxExp至(maxExp-移位-7)的指數值之尾數的所有23個位元。針對從(maxExp-移位-8)至(maxExp-移位-15)的指數值,編碼器516從對應尾數,諸如,尾數L,移除8個位元。針對從(maxExp-移位-16)至(maxExp-移位-22)的指數值,編碼器514從對應尾數,諸如,尾數M,移除16個位元。針對等於或低於對應於指數臨界T0之(maxExp-移位-23)的指數值,不儲存浮點數。此範例顯示用於該移位的一值,然而,移位可對指數臨界T0、T1、T2不同。移位值可能係正值、零值、或負值。非零移位值可能在應用程式所需的計算中保留更多精準度。
可能針對一組浮點數將指數臨界T0、T1、以及T2調整成不同值。此可支援用於不同處理窗的資料之動態範圍中的改變。
如相關於第三壓縮實施例描述的,可將使用多指數臨界壓縮之浮點資料的壓縮率判定如下。例如,相關於圖13至17所描述的,指數臨界T0、T1、以及T2界定將不同壓縮等級施用至各類別的四種浮點數類別。可從浮點資料集之指數的直方圖計算四種類別中的樣本數。
1)針對用於該應用的N個一組浮點數計算指數值的 直方圖,其中numExp(x)係第x個直方圖箱中浮點指數數,其中x代表指數值,
2)將少於或等於T0之直方圖箱x(將不儲存對應浮點樣本)中的指數數numExp(x)加總並除以N,以提供指數的分數fracExp(T0),
3)將直方圖箱T0<xT1中的指數數numExp(x)加總,其中每浮點樣本將儲存N1個位元,並除以N,以提供指數分數fracExp(T1),
4)將直方圖箱T1<xT2中的指數數numExp(x)加總,其中每浮點樣本將儲存N2個位元,並除以N,以提供指數分數fracExp(T2),
6)針對四種類別中的壓縮浮點樣本,判定位元數中的降低lessBits:lessBits=fracExp(max)[NB-N3]+fracExp(T2)[NB-N2]+fracExp(T1)[NB-N1]+fracExp(T0)×NB (3)
其中NB係每樣本的原始位元數,且在中括號中的項目對應於從尾數移除的位元數。針對N3=NB,沒有位元從尾數移除,且第一項退出。lessBits項係指數臨界T0、T1、以及T2的函數。
7)計算壓縮率CR,CR=NB/[(NB+OB)-lessBits] (4)
其中OB係每樣本的消耗位元數。例如,每樣本的消耗位元數可能係每樣本在指示器B0中的位元數,使得針對第三壓縮實施例OB=2。針對期望壓縮率,可能調整指數臨界T0、T1、以及T2並計算方程式(3)及(4),直到期望壓縮率CR匹配該資料集。
針對多指數臨界T0、T1、T2的上述範例已假設單精準浮點資料,其中每樣本的原始位元數為32且尾數位元數為23。針對高於T0指數臨界,以8位元的倍數降低對應尾數,以位元組漸增的方式產生壓縮資料為佳。針對倍精準浮點資料,其中每樣本的原始位元數為64且尾數位元數為52,可能施用多達六個高於T0的指數臨界,而以8位元的倍數降低對應尾數。針對多於四種指數臨界,指示器陣列會包含用於八個樣本或八個樣本之倍數的3-位元指示器B0。或者,可能施用高於T0的三個指數臨界,而以16位元的倍數降低對應尾數。在其他變化中,可能將指數臨界設定成使得尾數的部分類別以8位元降低,而其他以16位元降低。可使用來自用於CPU及GPU之典型軟體指令集的指令操控具有8、16、32、或64位元的資料種類。在其他實施例中,諸如,硬體實作,可能移除任意的位元數。
下文描述用於分別壓縮浮點數10之正負號12、尾數16、以及指數14的技術。相關於圖7描述的編碼器方塊312、相關於圖10描述的編碼器方塊358、以及相關於圖13描述的編碼器方塊514、516、以及518可能依據此等 技術將壓縮施用至浮點數。或者,可能將以下的壓縮實施例直接施用至浮點數。
圖18係依據第四實施例之浮點壓縮的方塊圖。分別壓縮浮點數10的正負號12、指數14、以及尾數16。方塊604、606、612、以及614實施指數壓縮的實施樣態。可能將不同編碼施用至輸入指數301,其中將指數差值編碼以產生指數符記。差方塊604計算目前輸入指數301與先前輸入指數之間的差,以形成指數差。方塊606針對一組輸入指數301計算指數差的統計量測。指數差的統計量測可包括一或多個直方圖、最小差、最大差、中間差、平均差、標準差、或其他量測。方塊614使用所產生的統計量測選擇用於編碼該集中之指數差的碼表及其關聯表指示器。碼表包含將指數差值相關於對應指數符記的查找表,如下文所述,該指數符記將使用較少位元表示指數差。指數編碼器方塊612從碼表選擇對應於計算指數差的指數符記。可能使用其後跟隨原始指數301的逸出符記「ESC」(圖21)將壓縮資料封包620的第一編碼指數絕對編碼。方塊602及610實施尾數壓縮的實施樣態。方塊602基於對應輸入指數301的值判定待用於壓縮尾數符記的尾數位元數m_bits。如下文另外描述的,方塊602可能使用查找表或實作將指數值相關於尾數位元數之映射函數的功能方塊。尾數編碼器方塊610儲存NM個位元之輸入尾數601的m_bits個最高有效位元(MSB),以形成尾數符記,其中m_bitsNM個位元。正負號編碼器608可能如下文所述 地壓縮正負號群組。或者,可能以非壓縮形式將輸入正負號603封裝為正負號符記。封包器616將用於正負號、尾數、指數之符記封裝至用於浮點資料的對應集之封包的資料部中。該封包可能包括具有同步資訊及表指示器資訊的標頭部。
為壓縮浮點數群組的正負號,正負號編碼器608可能測試相同正負號的運作。如下文所述地壓縮NS個正負號位元群組,其中NS=4:1)針對NS個正負號位元群組「abcd」,測試NS個正負號位元是否均相同,亦即,a=b=c=d,若為否,前進至步驟4;2)若為真,測試NS個正負號位元是否具有與先前NS個正負號位元群組「wxyz」之最後位元相同的值「z」,若為否,前進至步驟4;3)若為真,針對NS個正負號位元的目前群組,設定正負號符記sToken=「0」;4)否則,設定正負號符記sToken=「1 abcd」。
針對此編碼方案,當正負號對NS個樣本的相鄰群組保持相同時,將每群組的單一1-位元正負號符記sToken設定為「0」,以表示用於各群組中的NS個樣本各者的正負號。當相鄰群組不具有相同正負號時,長度(NS+1)的正負號符記包括為原始NS個正負號位元所跟隨的前導之「1」。如下文所述地解碼將壓縮正負號位元群組:1)第一位元是否=1?若為否,則前進至步驟3; 2)若為真,次一NS個位元為原始正負號,亦即,「abcd」;3)否則,目前的NS個位元與先前四個正負號位元群組「wxyz」的最後位元相同,亦即,a=z、b=z、c=z、d=z。
圖19係依據第四實施例之浮點解壓縮的方塊圖。封包620包含在標頭部中的表指示器資訊及在資料部中之用於編碼正負號、指數、以及尾數的符記。方塊630、632、以及638實施指數解壓縮的實施樣態。方塊622從封包標頭擷取表指示器資訊。方塊630選擇對應於表指示器的碼表。碼表包含對應於用於編碼之碼表的查找表或將指數符記相關於指數差值的函數。方塊624從封包620的資料部擷取指數符記。解碼器方塊632判定對應於碼表中之指數符記的解碼指數差。加法器638加總解碼指數差與先前指數,以產生目前指數。若編碼指數受絕對編碼,而非差分編碼,可能略過與先前指數的加法638。方塊634及640實施尾數解壓縮的實施樣態。方塊640基於目前指數值判定對應指數符記中的位元數m_bits。如下文另外描述的,方塊640可能使用查找表或實作將指數值相關於尾數位元數之映射函數的功能方塊。方塊626從封包620的資料部擷取包含目前尾數符記的位元數m_bits。方塊634擴展尾數符記以重構尾數,其中重構尾數的m_bits個MSB包含尾數符記,並將重構尾數的NM-m_bits個最低有效位元(LSB)設定為零。方塊628從封包620的資料部擷取對 應正負號符記。解碼器636如上文所述地解壓縮正負號符記。或者,若正負號未受壓縮,正負號符記係未壓縮正負號位元。重構浮點數以可取的浮點格式包含重構正負號、指數、以及尾數。
圖20描繪作為用於判定用於壓縮尾數的位元數之指數值的函數之用於尾數位元數的數個映射函數。水平軸指示輸入指數301的可能指數值,變數「x」。最小及最大指數值係以minExp及maxExp指示。minExp及maxExp的值可能對應於用於浮點格式的最小及最大指數值,諸如,針對8-位元指數分別係-127及+128,或針對11-位元指數分別為-1023及+1024。或者,minExp及maxExp可能代表藉由一組浮點數中的指數統計所判定的關注指數範圍。此等指數統計可能針對該集計算一次或週期性地更新,因此更新minExp及maxExp。統計可能藉由產生指數直方圖、以時間週期監視及/或平均最小及最大指數、或其他監視指數統計的方法計算。若minExp及maxExp針對一組浮點數週期性地更新,可能將彼等的更新值包括在各封包620的標頭部中。圖20中的垂直軸指示將代表壓縮尾數的尾數位元數m_bits。值minMant係m_bits的最小值且值maxMant係m_bits的最大值。作為指數值函數之用於判定m_bits的映射函數在本文中稱為mapMant(x),其中x代表指數值。圖652描繪判定m_bits的值之指數值的線性函數。圖656描繪階形映射函數。圖654及658描繪非線性映射函數。用於映射函數的參數, 諸如minMant、maxMant、圖656中的階形參數、圖654及658中的形狀參數可能基於用於應用程式之一組浮點數的統計而判定,以實現針對尾數位元的特定壓縮率。例如,計算用於壓縮尾數之尾數位元數的程序如下,1)針對用於該應用程式的一組N個浮點數計算指數值的直方圖,其中numExp(x)係第x個直方圖箱中浮點指數數,其中x代表指數值,2)針對從minExp至maxExp(從指數直方圖決定)的x設定用於映射函數mapMant(x)的參數,針對諸如minMant、maxMant的參數、階梯高度及臨界(圖656)、形狀參數(圖654及658),以實施作為x的函數之提供m_bits的mapMant(x),3)針對從minExp至maxExp的x,將直方圖值numExp(x)乘以mapMant(x)中的對應m_bits值,4)將在步驟3中的乘積加總以提供用於一組N個浮點數的壓縮尾數位元總數。
可能將壓縮尾數位元總數加至用於壓縮指數及正負號的位元數,以判定用於壓縮浮點數的位元數。N個原始浮點數中的位元數(NB*N)可除以所計算的壓縮位元數,以提供壓縮率。
參考圖18,方塊602可能使用查找表或作為指數值之函數的函數方塊以判定尾數位元m_bits。在mapMant(x)的查找表實作中,可能將m_bits的值及關聯指數值(x)儲存在記憶體中。或者,方塊602可能包括實作用於映射 函數mapMant(x)之方程式的函數方塊。多尾數映射函數mapMant(x)可能可藉由各者與不同之mapMant(x)關聯的尾數映射指示器選擇。例如,mapMant(x)可能基於期望壓縮率選擇。針對查找表的實作,可能將多查找表儲存在記憶體中,各表與個別的尾數映射指示器關聯。針對函數方塊的實作,尾數映射指示器可能係控制參數,以將執行控制轉移至用於mapMant(x)的適當函數方塊。針對多尾數映射函數,封包器616可能將尾數映射指示器儲存在封包620的標頭部中。參考圖19,解壓縮操作會另外包括從標頭部擷取尾數映射指示器並將其提供至方塊640。方塊640的操作將另外包括使用尾數映射指示器以選擇關聯mapMant(x)。如上文所述,方塊640可能包括查找表實作或用於mapMant(x)的函數方塊實作。方塊640針對等於指數值的x施用關聯mapMant(x)以判定m_bits的值。
圖21提供用於該等指數差之碼表的範例。碼表包括用於更頻繁之指數差值的指數符記,範圍從-3至+3。針對在此範圍外側的指數差值,使用原始指數位元數NE的實際指數值跟隨在逸出(ESC)符記之後。或者,使用原始指數位元數NE的實際指數差值跟隨在逸出(ESC)符記之後。指數符記可能係基於指數差之發生頻率而產生的霍夫曼碼。各表對應於指數差的不同可能性分佈。表中的指數差係以從最頻繁至最不頻繁的頻率次序配置,並與將其長度從最短配置至最長的符記匹配。因此將更頻繁的指數差映射至較短符記並將較不頻繁的指數差映射至較長符 記。指數差而非指數的此映射可能降低代表浮點指數序列所需的位元數。表1、2、以及3中的範例僅用於說明目的。其他碼表可基於其他指數差值的可能性分佈產生,並提供不同指數符記。或者,碼表可能藉由其他的熵編碼法產生。在較佳實施例中,預先產生個多可選擇性碼表並儲存在可由圖18中的方塊614存取的記憶體中。方塊614針對給定一組浮點指數選擇提供最有效表示方式的碼表。方塊606產生指數差的統計量測以支援方塊614的表選擇。例如,可將使用特定碼表用於呈現N個浮點數之指數差的位元數計算如下:1)針對一組N個浮點數計算指數差值的直方圖,其中numDiff(z)係第z個直方圖箱中的指數差值數,其中z代表指數差值,2)針對對應於碼表中之指數符記的各指數差值z,將numDiff(z)乘於來自碼表的對應符記長度,3)針對對應於碼表中之「其他全部」的指數差值z,將numDiff(z)乘於(ESC符記長度+NE),4)將由步驟2及步驟3產生的乘積加總,以提供使用特定碼表用於編碼N個指數差的總位元數。
可針對各可選擇碼表計算編碼N個指數差的總位元數。方塊614可能選擇對應於如上文計算之最小位元數的碼表。封包器616可能將對應於獲選碼表的表指示器儲存在封包620的標頭部中。參考圖19,在較佳實施例中,將對應於用於編碼之表指示器的可選擇碼表儲存在可為方塊 630存取的記憶體中。方塊630可能使用從接收封包620之標頭擷取的表指示器,以選擇對應碼表。解碼器方塊632可能將接收指數符記與獲選碼表中的指數符記匹配,以判定對應指數差。
在指數壓縮的替代實施例中,將輸入指數301映射至指數符記,而非指數差。參考圖18,省略指數差方塊604並可能將方塊612及606施用至輸入指數301。碼表,諸如相關於圖21描述的碼表,會將指數值相關於對應指數符記。參考圖19,方塊632會解碼指數符記以產生解碼指數並省略加法器638。
圖22係依據第五實施例之浮點壓縮的方塊圖。在此實施例中,n_samp個浮點數的編碼群組共享單一指數符記。針對n_samp個浮點數10,將正負號12、尾數16、以及指數14分別壓縮。方塊704、706、712、714、以及718實施指數壓縮的實施樣態。方塊701從浮點樣本的第j個編碼群組擷取指數,以提供輸入指數exp(i,j),其中1in_samp。方塊718判定第j個編碼群組中的最大指數值max_exp(j)。方塊704從先前指數的編碼群組減去最大指數max_exp(j-1),以形成最大指數差maxexp_diff(j)。方塊706針對輸入一組浮點數中之指數的多編碼群組701計算差maxexp_diff(j)的統計量測。針對該集中的多編碼群組中之maxexp_diff(j)的統計量測可包括一或多個直方圖、最小值、最大值、中間值、平均值、標準差、或其他量測。方塊714使用所產生的統計量測選擇用於編碼最大 指數差maxexp_diff(j)的碼表及其關聯表指示器。指數編碼器方塊712從對應於maxexp_diff(j)之值的碼表選擇指數符記exp_token(j)。exp_token(j)將係僅用於壓縮樣本之第j個編碼群組的指數符記。方塊702及710實施尾數壓縮的實施樣態。方塊700從浮點樣本的第j個編碼群組擷取n_samp個尾數,以提供mant(i,j),其中1in_samp。方塊702判定待用於第j個編碼群組中之各壓縮尾數符記的尾數位元數m_bits(j)。尾數位元數m_bits(j)係基於用於編碼群組的最大指數值max_exp(j)。方塊702可能使用查找表或將最大指數值相關於尾數位元數的函數方塊,如相關於圖20及方塊602(圖18)於上文描述的。然而,方塊702使用max_exp(j)以在逐群組基礎上判定尾數位元數m_bits(j),而非針對方塊602描述之在逐樣本的基礎上。如下文所述,尾數編碼器方塊710編碼第j個編碼群組的尾數,以形成各者具有m_bits之n_samp個尾數符記mant_token(i,j)。方塊703從浮點樣本的第j個編碼群組擷取n_samp個正負號位元。如上文所述,正負號編碼器708可能壓縮正負號群組,以提供用於壓縮樣本之第j個編碼群組的正負號符記sign_token(j)。或者,輸入正負號可能以未壓縮形式封裝。針對第j個編碼群組,封包器716將單一指數符記exp_token(j)、用於壓縮正負號的sign_token(j)、以及n_samp個尾數符記mant_token(i,j),其中1in_samp,封裝在封包的資料部中。較佳地,封包包含用於壓縮樣本之多編碼群組的符記。該封包可能 包括具有同步資訊及表指示器資訊的標頭部。
圖23係用於尾數的第j個編碼群組之尾數編碼器710的方塊圖。尾數編碼器710將第j個編碼群組中的各尾數編碼為m_bits(j)個位元。因為僅有一指數符記exp_token(j)用於第j個編碼群組,編碼包括將各編碼群組中的尾數位元對準,以保留合適的二進位位置值。為適當地對準尾數位元,將隱藏位元「1」,且如有需要,及前導之零***對應於第j個編碼群組中的較低值指數之尾數的最左側位元中。尾數的對準類似於產生「區域」定點尾數群組。針對第j個編碼群組中第i個尾數,方塊720藉由從最大指數max_exp(j)減去對應指數exp(i,j)判定前導零數,以提供m_zero(i)。方塊722將其後跟隨隱藏位元「1」之m_zero(j)個零作為最左側位元***,以對準尾數的二進位位置值,以形成用於第j個編碼群組的n_samp個位置對準尾數。零及「1」位元可能隨LSB的移出而移入。當exp(i,j)等於max_exp(j)時,***隱藏位元「1」,但不***前導之零。方塊724將位置對準尾數截短至m_bits(j),以形成用於第j個編碼群組的尾數符記mant_token(i,j)。例如,為了簡化,輸入尾數群組726具有5個位元。方塊722藉由移入隱藏位元「1」及m_zero個零而形成位置對準尾數728。針對壓縮,方塊724將位置對準尾數728截短為m_bits(j),其在此範例中為4位元,以產生代表壓縮尾數的尾數符記群組730。
圖24係依據第五實施例之浮點解壓縮的方塊圖。封 包740在資料部中包含用於編碼指數、正負號、以及尾數的符記群組。封包740在標頭部中包含表指示器資訊。方塊742從封包標頭擷取表指示器資訊。方塊750、752、758、以及762實施指數解壓縮的實施樣態。方塊750選擇對應於表指示器的碼表。碼表包含將指數符記exp_token相關於最大指數差值maxexp_diff的查找表。方塊744從封包740的資料部擷取用於第j個編碼群組的指數符記exp_token(j)。解碼器方塊752判定對應於碼表中之exp_token(j)的解碼最大指數差maxexp_diff(j)。加法器758將已解碼的maxexp_diff(j)加至用於先前編碼群組的最大指數max_exp(j-1),以產生目前最大指數max_exp(j)。方塊754、760、以及762實施尾數解壓縮的實施樣態。方塊760基於目前最大指數的值max_exp(j),判定用於第j個編碼群組之尾數符記中的位元數m_bits(j)。方塊746可能使用查找表或將最大指數值相關於尾數位元數的方程式,如相關於圖22於上文描述的。方塊746針對第j個編碼群組的各尾數符記mant_token(i,j)擷取m_bits(j)個位元,其中1in_samp。解碼器方塊754擴展第j個編碼群組的尾數符記,以重構各者具有NM個位元的n_samp個重構尾數recon_mant(i,j)。如下文所述,除了擴展尾數,解碼器方塊754重構用於第j個編碼群組的指數值exp(i,j)。方塊748從封包740的資料部擷取用於第j個編碼群組的正負號符記sign_token(j)。如上文所述,正負號解碼器756解壓縮sign_token(j)。或者,若未壓縮正負 號,sign_token(j)包含用於第j個編碼群組的未壓縮正負號位元。方塊762重構第j個編碼群組之各者具有採用可取浮點格式的重構正負號、重構指數、以及重構尾數的n_samp個浮點數。
圖25係用於尾數及指數的第j個群組之解碼器方塊754的方塊圖。在尾數符記mant_token(i,j)中,前導之「1」的位置指示相對於max_exp(j)的二進位位置值。此位置可用於判定相對於max_exp(j)之對應指數exp(i,j)的值。方塊722搜尋前導之「1」在mant_token(i,j)中的位置。因為前導之「1」代表用於相關於圖1描述之浮點格式的隱藏位元,其未受儲存。方塊774將在前導之「1」之後的位元儲存至MSB,並以零填入重構尾數recon_mant(i,j)的(NM-m_bits)個其餘位元。例如,針對m_bits(j)=4且NM=5,從尾數符記群組730形成重構尾數群組780。重構尾數recon_mant(i,j)近似於原始尾數mant(i,j)。針對指數值,方塊776計數在前導之「1」之前的零數m_zero(i)。方塊778從max_exp(j)減去m_zero(i),以將指數exp(i,j)重構為其原始值。
為判定尾數位元數m_bits(j),如相關於第四實施例於上文描述的,作為最大指數值函數的方塊702(圖22)及方塊760(圖24)可能使用查找表或實作映射函數的函數方塊。然而,方塊702及方塊760使用max_exp(j)以在逐群組基礎上判定尾數位元數m_bits(j),而非在逐樣本的基礎上。又,如相關於圖20於上文所述的,多映射函數可 能係可選擇的。用於圖652、654、656、及658中之映射函數的參數可能基於用於應用程式之一組浮點數的統計而判定,以實現針對尾數位元的期望壓縮率。例如,用於計算用於壓縮尾數之尾數位元數的程序如下文所述地使用針對最大指數max_exp(j)及n_samp個樣本之編碼群組的直方圖,1)針對用於應用程式之一組N個浮點數中的n_samp個編碼群組計算最大指數值max_exp(j)的直方圖,其中nmax_exp(x)係max_exp(j)在第x個直方圖箱中的數,其中x代表max_exp(j)值,2)針對從minExp至maxExp(從max_exp(j)直方圖決定)的x設定用於映射函數mapMant(x)的參數,針對諸如minMant、maxMant的參數、階梯高度及臨界(圖656)、形狀參數(圖654及658),以實施作為x的函數之提供m_bits的mapMant(x),3)針對從minExp至maxExp的x,將直方圖值nmax_exp(x)乘以mapMant(x)中的對應m_bits值,4)將在步驟3中的乘積加總並乘以n_samp,以提供用於該組N個浮點數的壓縮尾數位元總數。
圖26提供用於該等最大指數差maxexp_diff(j)之碼表的範例。碼表包括用於不同範圍中之更頻繁值maxexp_diff(j)的指數符記exp_token(j)。針對在此範圍外的maxexp_diff(j)值,逸出(ESC)符記之後跟隨著使用原始指數位元數NE的實際maxexp_diff(j)。指數符記可 能係其符記值係基於最大指數差maxexp_diff(j)之發生頻率而產生的霍夫曼碼。圖26的指數差表與呈現在用於第四實施例之圖21中的表不同,因為最大指數差的逐群組可能性分佈與指數差的逐樣本分佈不同。將表中的最大指數差maxexp_diff(j)以從最頻繁至最不頻繁的頻率次序配置,將更頻繁指數差映射至較短符記。符記數基於不同的可能性分佈而不同。表4、5、以及6中的範例僅用於說明目的。其他碼表可基於其他最大指數差值maxexp_diff(j)的可能性分佈產生,並提供不同指數符記exp_token(j)。或者,碼表可能藉由其他的熵編碼法產生。在較佳實施例中,預先產生個多可選擇性碼表並儲存在可由圖22中的方塊714存取的記憶體中。方塊714可能針對一組浮點數中的編碼群組選擇提供對最大指數值之最有效表示的碼表。方塊706產生最大指數差maxexp_diff(j)的統計量測以支援方塊714的表選擇。例如,可將使用特定碼表用於代表N個浮點數之最大指數差maxexp_diff(j)的位元數計算如下:1)針對一組N個浮點數計算最大指數差值maxexp_diff(j)的直方圖,其中nmaxDiff(z)係第z個直方圖箱中的maxexp_diff(j)數,其中z代表最大指數差值,2)針對對應於碼表中之指數符記的各最大指數差值z,將nmaxDiff(z)乘於來自碼表的對應符記長度,3)針對對應於碼表中之「其他全部」的最大指數差 值z,將nmaxDiff(z)乘於(ESC符記長度+NE),4)將由步驟2及3產生的乘積加總,以提供使用特定碼表用於編碼該組N個一組浮點數中之最大指數差maxexp_diff(j)的總位元數。
針對第五實施例,有用於第j個編碼群組中之每個n_samp尾數的一指數符記exp_token(j)。可針對各可選擇碼表計算編碼最大指數差maxexp_diff(j)的總位元數。方塊714可能選擇對應於如上文計算之最小位元數的碼表。封包器716將對應於獲選碼表的表指示器儲存在封包740的標頭部中。參考圖24,在較佳實施例中,將對應於用於編碼之表指示器的可選擇碼表儲存在可為方塊750存取的記憶體中。方塊750可能使用從接收封包740之標頭擷取的表指示器,以選擇對應碼表。解碼器方塊752將接收指數符記exp_token(j)與獲選碼表中的指數符記匹配,以判定對應最大指數差maxexp_diff(j)。
用於上述實施例的參數,諸如,用於第一、第二、以及第三實施例的臨界,以及用於第四及第五實施例的尾數映射函數參數及碼表參數,可能預先在用於應用程式的代表性資料集上決定。或者,該等參數可能在壓縮處理期間的訓練區間期間使用一組浮點數判定。可能更新該等參數以跟隨資料的改變特徵。例如,該應用程式可能將處理窗施用至資料,其中共同處理在特定空間或時間區間中的資料。可能針對各處理窗更新用於浮點數壓縮及解壓縮的參數。
參考用於第三實施例的圖13,編碼器方塊514、516、以及518可能施用相關於第四及第五實施例描述之浮點壓縮的實施樣態,以分別編碼正負號、尾數、以及指數。針對藉由多指數臨界判定的不同浮點數類別,編碼器方塊514、516、以及518可能施用不同映射函數,以判定尾數位元數m_bits(圖18,方塊602)或m_bits(j)(圖22,方塊702)。或者,編碼器方塊514、516、以及518可能替代地使用用於取決於用於浮點數類別的指示器值之m_bits的值,或m_bits(B0)。在此變化中,方塊602或方塊702可能使用B0判定m_bits=m_bits(B0)或m_bits(j)=m_bits(B0),所以尾數符記具有m_bits(B0)個位元。針對指數編碼,可選擇碼表(圖18,方塊614及圖22,方塊714)可能取決於浮點數的類別或指示器值B0。相似地針對參考圖15的解壓縮,解碼器方塊551、552、以及553可能施用相關於第四及第五實施例描述之浮點解壓縮的實施樣態,以解碼正負號符記、尾數符記、以及指數符記。取決於施用於編碼的尾數壓縮,解碼器方塊551、552、以及553可能取決於指示器B0的值施用不同的映射函數,以判定尾數位元數m_bits(圖19,方塊640)或m_bits(j)(圖24、方塊760)。針對尾數位元數取決於指示器值B0的變化,方塊640及760可能提供用於擷取及擴展尾數符記的m_bits(B0)。針對指數解碼,在方塊714(圖22)或方塊750(圖24)可選擇的碼表可能取決於指示器值B0
壓縮種類可能係可選擇的。例如,針對不同浮點格 式,例如,單精準及倍精準,可能基於浮點格式選擇由上述編碼器施用的壓縮種類。在許多應用程式且特別針對軟體實作中,浮點資料格式已為人所知。基於浮點格式的壓縮種類參數可能根據壓縮控制參數將程式執行控制轉移至適當的壓縮指令。壓縮種類可能基於壓縮操作的複雜性選擇。例如,編碼器可能針對較低計算負載或較低處理時間施用具有較低計算要求的替代壓縮,諸如,第一、第二、或第三實施例。
存在針對浮點壓縮器及解壓縮器之實施例的各種實作變化。實作可包括實施本文描述之處理的邏輯,其中該邏輯可包括專用邏輯電路、可組態邏輯,諸如,組態成實施該等函數的現場可程式閘陣列FPGA方塊、編程為實施該等函數的通用處理器或數位訊號處理器、以及彼等的各種組合。上文參考的'312申請案描述實作在多核心處理系統中之可針對整數或浮點資料組態的可組態壓縮器/解壓縮器。當將描述於'312申請案中的可組態壓縮器及解壓縮器組態成壓縮/解壓縮浮點資料時,可能將本文描述的浮點壓縮及解壓縮技術實作在彼等中。
可將浮點壓縮及解壓縮實作在硬體、軟體、或二者的組合中,並合併入電腦系統中,諸如,如圖2至6中所描述的。硬體實作包括ASIC、FPGA、或智慧財產(IP)模塊。浮點壓縮及解壓縮操作可實作在可程式化處理器,諸如,數位訊號處理器(DSP)、微處理器、微控制器、多核心CPU、或GPU,的軟體或韌體中。壓縮資料封包可能 針對資料處理系統或電腦系統的組件之間的壓縮浮點資料的資料轉移提供,諸如,在資料處理器及記憶體之間、在多處理器核心之間、在資料處理系統的記憶體之間。壓縮資料封包也可能針對壓縮浮點資料在至儲存裝置、電腦可讀媒體、或其他資料處理系統之通訊頻道或網路上的資料轉移提供。
當已說明及描述本發明的較佳實施例時,本發明明顯地並未僅受限於此等實施例。眾多的修改、改變、變化、代換、以及等效實例對對熟悉本發明之人士將係明顯的,而不脫離本發明的精神及範圍,如申請專利範圍所描述的。
10‧‧‧浮點數
12‧‧‧正負號位元
14‧‧‧指數
16‧‧‧尾數
210‧‧‧電腦系統
212‧‧‧匯流排次系統
214‧‧‧處理器
216‧‧‧通訊介面次系統
218‧‧‧通訊頻道或網路
220‧‧‧使用者介面輸出裝置
222‧‧‧使用者介面輸入裝置
224‧‧‧儲存次系統
226‧‧‧記憶體次系統
228‧‧‧檔案儲存次系統
230‧‧‧隨機存取記憶體
232‧‧‧唯讀記憶體
240‧‧‧電腦可讀媒體
242‧‧‧壓縮資料檔
301‧‧‧輸入指數
312、358、514、516、518‧‧‧編碼器
314、362、522、616、716‧‧‧封包器
330、332、370、530‧‧‧指示器陣列
331、333‧‧‧指示器位元
334‧‧‧位元場
336、620‧‧‧壓縮資料封包
338、376、536‧‧‧標頭部
339‧‧‧序列
340、378、538‧‧‧資料部
372‧‧‧編碼浮點資料
374、534、740‧‧‧封包
400‧‧‧Intel Nehalem CPU
400a、400b、400c、400d‧‧‧處理器核心
402‧‧‧快取
404‧‧‧快速通道互連介面
406‧‧‧記憶體
410a、410h‧‧‧多處理器
412‧‧‧分散式1級快取
413‧‧‧分散式2級快取
414‧‧‧主CPU
422‧‧‧感測器次系統
424‧‧‧ADC
426‧‧‧應用處理器
532‧‧‧編碼浮點數
547、548、549、553、636‧‧‧解碼器
601‧‧‧輸入尾數
603‧‧‧輸入正負號
608、708、756‧‧‧正負號編碼器
638、758‧‧‧加法器
652、654、656、658‧‧‧圖
701‧‧‧指數的多編碼群組
710‧‧‧尾數編碼器
726‧‧‧輸入尾數群組
728‧‧‧位置對準尾數
730‧‧‧尾數符記群組
780‧‧‧重構尾數群組
B0‧‧‧指示器位元
N1、N2、N3、NB、NE、NM‧‧‧位元數
NH、NL‧‧‧數字
T0、T1、T2‧‧‧臨界
圖1係描繪使用在計算系統中的浮點資料格式之範例的圖。
圖2係適合供浮點資料之壓縮及解壓縮的實施例使用之電腦系統的方塊圖。
圖3描繪供浮點資料之壓縮及解壓縮的實施例使用之四核心ARM Cortex-A15處理器的方塊圖。
圖4描繪供浮點資料的壓縮及解壓縮之實施例使用的Intel Nehalem CPU架構。
圖5描繪供浮點資料的壓縮及解壓縮之實施例使用的Nvidia GeForce 8800 GPU架構。
圖6係供浮點資料之壓縮及解壓縮的實施例使用之感 測器處理系統的方塊圖。
圖7係依據第一實施例之浮點壓縮的方塊圖。
圖8顯示該指示器陣列的較佳結構。
圖9係依據第一實施例之解壓縮器的方塊圖。
圖10係浮點壓縮之第二實施例的方塊圖。
圖11描繪用於浮點壓縮的第二實施例之封包結構的範例。
圖12係依據第二實施例之解壓縮器的方塊圖。
圖13係根浮點壓縮之第三實施例的方塊圖。
圖14描繪用於浮點壓縮的第三實施例之封包結構的範例。
圖15係依據第三實施例之解壓縮器的方塊圖。
圖16描繪當移位=0且原始尾數尺寸為23位元時,相對尾數範圍的範例。
圖17描繪當移位為非零且尾數尺寸為23位元時,相對尾數範圍的範例。
圖18係依據第四實施例之浮點壓縮的方塊圖。
圖19係依據第四實施例之浮點解壓縮的方塊圖。
圖20描繪作為用於判定用於壓縮尾數的位元數之指數值的函數之用於尾數位元數的數個映射函數。
圖21提供用於該等指數差之碼表的範例。
圖22係依據第五實施例之浮點壓縮的方塊圖。
圖23係用於尾數的第j個編碼群組之尾數編碼器710的方塊圖。
圖24係依據第五實施例之浮點解壓縮的方塊圖。
圖25係用於尾數及指數的第j個群組之解碼器方塊754的方塊圖。
圖26提供用於該等最大指數差maxexp_diff(j)之碼表的範例。
330、332‧‧‧指示器陣列
331、333‧‧‧指示器位元
334‧‧‧位元場
336‧‧‧壓縮資料封包
338‧‧‧標頭部
339‧‧‧序列
340‧‧‧資料部

Claims (107)

  1. 一種用於壓縮浮點數的方法,其中各浮點數包括根據使用在資料處理系統中之浮點格式的原始位元數,該浮點格式界定正負號位元以表示正負號、複數個指數位元以表示指數、以及複數個尾數位元以表示尾數,該方法包含:將複數個指數臨界設定在該資料處理系統的記憶體中,其中該等指數臨界具有漸高的臨界值,以界定與用於該等浮點數之複數個類別對應的指數值之個別範圍的邊界;將記憶體指定給指示器陣列,以儲存用於M個浮點數之群組的複數之M個指示器,其中該指示器在該指示器陣列中的位置對應於該等浮點數之一者,其中指示器值與該浮點數的該類別關聯;提供複數種壓縮種類,其中特定壓縮種類與浮點數的特定類別及特定指示器值關聯;針對該等M個浮點數各者,將該浮點數的該指數與該等指數臨界之至少一者比較,以從該等複數個類別判定對應類別;將該指示器陣列中針對對應位置的該指示器設定為與該對應類別關聯的該指示器值;根據用於該對應類別的該壓縮種類編碼該浮點數,以形成編碼浮點數;且將該指示器陣列的該等M個指示器值及多達M個編 碼浮點數儲存在壓縮資料封包中。
  2. 如申請專利範圍第1項的方法,其中該等壓縮種類之一者針對該等浮點數具有少於或等於該等複數個指數臨界的最低指數臨界之指數值的該關聯類別,指定略過該編碼。
  3. 如申請專利範圍第1項的方法,其中該等壓縮種類之一者針對該關聯類別指定使用該浮點格式,其中該編碼將具有根據該浮點格式之該原始位元數的該浮點數提供為該編碼浮點數。
  4. 如申請專利範圍第1項的方法,其中該等壓縮種類之一者針對該關聯類別指定該尾數的壓縮,該編碼更包含:壓縮該浮點數的該尾數以形成具有減少之尾數位元數的壓縮尾數,其中該編碼浮點數係藉由該正負號位元、該等複數個指數位元、以及該壓縮尾數表示。
  5. 如申請專利範圍第4項的方法,其中該壓縮種類針對該對應類別指定每一壓縮樣本的位元數,其中該減少的尾數位元數、該等複數個指數位元、以及該正負號位元提供每一壓縮樣本的該位元數。
  6. 如申請專利範圍第4項的方法,其中壓縮該尾數的該步驟更包含從該尾數之最低有效位元位置移除多個尾數位元,以形成該壓縮尾數。
  7. 如申請專利範圍第4項的方法,其中該等指數臨界之至少一者係基於用於該關聯類別中的尾數之該減少的 尾數位元數。
  8. 如申請專利範圍第1項的方法,其中該等壓縮種類之一者針對該關聯類別指定該尾數及該指數的壓縮,該編碼更包含:將該尾數壓縮為減少的尾數位元數,以形成尾數符記;壓縮該指數以形成指數符記;以及將該正負號位元用於正負號符記,其中該尾數符記、該指數符記、以及該正負號符記提供用於該壓縮資料封包的該編碼浮點數。
  9. 如申請專利範圍第1項的方法,其中該等壓縮種類之一者針對該關聯類別指定該尾數、該指數、以及該正負號的壓縮,該編碼更包含:將該尾數壓縮為減少的尾數位元數,以形成尾數符記;壓縮該指數以形成指數符記;以及壓縮該等多達M個浮點數的該等正負號,以形成一或多個正負號符記,其中該儲存步驟、該等尾數符記、指數符記、以及正負號符記提供用於該壓縮資料封包之該等多達M個的編碼浮點數。
  10. 如申請專利範圍第1項的方法,其中該等指數臨界的至少一者係基於期望的壓縮率。
  11. 一種用於從對應於原始浮點數之編碼浮點數重構浮點數的方法,該等原始浮點數具有根據使用在資料處理 系統中之浮點格式的原始位元數,該浮點格式界定正負號位元以表示正負號、複數個指數位元以表示指數、以及複數個尾數位元以表示尾數,該方法包含:從壓縮資料封包擷取指示器陣列,其中該指示器陣列包含對應於包含在該壓縮資料封包中之編碼浮點數的複數之M個指示器,其中在該指示器陣列中該等指示器之一者的位置對應於該等編碼浮點數之一者;提供複數種壓縮種類,其中特定壓縮種類關聯於特定指示器值;針對該等M個指示器各者,判定該指示器值;從該壓縮資料封包擷取對應於該指示器的該編碼浮點數;且根據與該指示器值關聯的該壓縮種類解碼該編碼浮點數,以形成具有根據該浮點格式之該原始位元數的對應重構浮點數。
  12. 如申請專利範圍第11項的方法,其中該壓縮資料封包包含少於M個編碼浮點數,且該等壓縮種類之一者指定略過擷取該編碼浮點數的該步驟,該解碼更包含:提供根據該浮點格式的填充值,以形成該對應重構浮點數。
  13. 如申請專利範圍第11項的方法,其中該等壓縮種類之一者指定使用該浮點格式,其中將根據該浮點格式的該原始浮點數儲存在該壓縮資料封包中,該解碼更包 含:將該編碼浮點數提供為該對應重構浮點數。
  14. 如申請專利範圍第11項的方法,其中該等壓縮種類的一者指定該編碼浮點數包含具有減少之尾數位元數的壓縮尾數、該原始浮點數之原始正負號位元以及原始指數位元,該解碼更包含:解壓縮該壓縮尾數,以形成具有原始尾數位元數的重構尾數;以及組合該原始正負號位元、該原始指數位元、以及該重構尾數,以形成具有根據該浮點格式之該原始位元數的該對應重構浮點數。
  15. 如申請專利範圍第14項的方法,其中該解壓縮更包含將該壓縮尾數的位元值***該重構尾數的最高有效位元位置,並將零***其餘位元位置。
  16. 如申請專利範圍第11項的方法,其中該等壓縮種類之一者指定該編碼浮點數包含壓縮指數符記、壓縮尾數符記、以及原始正負號位元,該解碼更包含:解壓縮該壓縮指數符記,以形成具有原始指數位元數的重構指數;解壓縮該壓縮尾數符記,以形成具有原始尾數位元數的重構尾數;且組合該原始正負號位元、該重構指數、以及該重構尾數,以形成具有根據該浮點格式之該原始位元數的該對應重構浮點數。
  17. 如申請專利範圍第11項的方法,其中該等壓縮種類之一者指定該指數、該尾數、以及該正負號的壓縮,其中多達M個編碼浮點數包括多達M個尾數符記、多達M個指數符記、以及至少一個正負號符記,該解碼更包含:解壓縮該指數符記,以形成具有原始指數位元數的重構指數;解壓縮該尾數符記,以形成具有原始尾數位元數的重構尾數;解壓縮該至少一個正負號符記,以產生多達M個解壓縮正負號符記,且組合該解壓縮正負號位元、該重構指數、以及該重構尾數,以形成具有根據該浮點格式之該原始位元數的該對應重構浮點數。
  18. 一種用於壓縮浮點數的方法,其中各浮點數由根據使用在資料處理系統中之浮點格式的原始位元數組成,該浮點格式界定正負號位元以表示正負號、複數個指數位元以表示指數、以及複數個尾數位元以表示尾數,該方法包含:將指數臨界設定在該資料處理系統的記憶體中;將記憶體指定給指示器陣列,以儲存用於M個浮點數的複數之M個指示器,其中該指示器在該指示器陣列中的位置對應於該等M個浮點數之一者;針對該等M個浮點數各者, 比較該浮點數的該指數與該指數臨界;當該指數大於該指數臨界時,將該指示器陣列中針對對應位置的該指示器設定為第一指示器值;編碼該浮點數,以形成編碼浮點數;將該編碼浮點數儲存在壓縮資料封包中;否則當該指數少於或等於該指數臨界時,將該指示器陣列中針對該對應位置的該指示器設定為第二指示器值,其中未將該浮點數編碼;且將該指示器陣列儲存在該壓縮資料封包中。
  19. 如申請專利範圍第18項的方法,其中該編碼將具有根據該浮點格式之該原始位元數的該浮點數提供為該編碼浮點數。
  20. 如申請專利範圍第18項的方法,其中該指數臨界係基於期望的壓縮率。
  21. 如申請專利範圍第18項的方法,更包含解壓縮該壓縮資料封包,該解壓縮更包含:從該壓縮資料封包擷取該指示器陣列;針對該等M個指示器各者,測試該指示器是否等於該第一指示器值或該第二指示器值;當該指示器等於該第一指示器值時,從該壓縮資料封包將對應於該指示器的該編碼浮點數解碼,以形成採用該浮點格式的重構浮點數; 當該指示器等於該第二指示器值時,提供用於該重構浮點數之採用該浮點格式的填充值。
  22. 如申請專利範圍第21項之方法,其中該解碼步驟更包含:當該編碼浮點數以該浮點格式表示時,根據該第一指示器值將該編碼浮點數提供為該重構浮點數。
  23. 一種資料處理系統,包含:處理浮點數的資料處理器,其中浮點數包括根據使用在該資料處理系統中之浮點格式的原始位元數,該浮點格式界定正負號位元以表示正負號、複數個指數位元以表示指數、以及複數個尾數位元以表示尾數,該資料處理器提供M個浮點數的群組;設定在可由該資料處理器存取之記憶體中的複數個指數臨界,其中該等指數臨界具有漸高的臨界值,以界定與浮點數之複數個類別對應的指數值之個別範圍的邊界;設定在該記憶體中的指示器陣列,以包括用於該等M個浮點數的複數之M個指示器,其中在該指示器陣列中該指示器的位置對應於該等M個浮點數之一者,其中指示器值與該浮點數的該類別關聯;壓縮邏輯,可針對複數個壓縮種類組態,施用至該等M個浮點數,其中特定壓縮種類與浮點數的特定類別及特定指示器值關聯,該壓縮邏輯包括:將該等M個浮點數各者的該指數與該等指數臨界之至少一者比較的邏輯,以從該等複數個類別判定對應類別, 並將該指示器陣列中針對對應位置的該指示器設定為與該對應類別關聯的該指示器值;一編碼器,根據用於該對應類別的該壓縮種類施用至該浮點數,以形成編碼浮點數;以及封裝邏輯,將該指示器陣列的該等M個指示器值及多達M個編碼浮點數儲存在壓縮資料封包中。
  24. 如申請專利範圍第23項的資料處理系統,其中該等壓縮種類之一者針對該等浮點數具有少於或等於該等複數個指數臨界的最低指數臨界之指數值的該關聯類別,指定略過該編碼器。
  25. 如申請專利範圍第23項的資料處理系統,其中該等壓縮種類之一者針對該關聯類別指定使用該浮點格式,其中該編碼器將作為該編碼浮點數之具有根據該浮點格式之該原始位元數的該浮點數提供至該封裝邏輯。
  26. 如申請專利範圍第23項的資料處理系統,其中該等壓縮種類之一者針對該關聯類別指定該尾數的壓縮,該編碼器更包含:壓縮該浮點數的該尾數以形成具有減少之尾數位元數的壓縮尾數之邏輯,其中該編碼浮點數係藉由該正負號位元、該等複數個指數位元、以及該壓縮尾數表示。
  27. 如申請專利範圍第26項的資料處理系統,其中該壓縮種類針對該對應類別指定每一壓縮樣本的位元數,其中該減少的尾數位元數、該等複數個指數位元、以及該正負號位元提供每一壓縮樣本的該位元數。
  28. 如申請專利範圍第26項的資料處理系統,其中壓縮該尾數的該邏輯從該尾數的最低有效位元位置移除多個尾數位元,以形成該壓縮尾數。
  29. 如申請專利範圍第26項的資料處理系統,其中該等指數臨界之至少一者係基於用於該關聯類別中的尾數之該減少的尾數位元數。
  30. 如申請專利範圍第23項的資料處理系統,其中該等壓縮種類之一者針對該關聯類別指定該尾數及該指數的壓縮,該編碼器更包含:將該尾數壓縮成減少之尾數位元數的邏輯,以形成尾數符記;以及壓縮該指數以形成指數符記的邏輯,其中該編碼器將作為該編碼浮點數的該正負號位元、該尾數符記、以及該指數符記提供至用於該壓縮資料封包的該封裝邏輯。
  31. 如申請專利範圍第23項的資料處理系統,其中該等壓縮種類之一者針對該關聯類別指定該尾數、該指數、以及該正負號的壓縮,該編碼器更包含:將該尾數壓縮成減少之尾數位元數的邏輯,以形成尾數符記;壓縮該指數以形成指數符記的邏輯;以及壓縮多達M個浮點數之該等正負號的邏輯,以形成一或多個正負號符記,其中該封裝邏輯將用於該等多達M個浮點數的該等尾數符記、該等指數符記、以及該等正負號符記儲存至該壓縮資料封包。
  32. 如申請專利範圍第23項的資料處理系統,其中該等指數臨界的至少一者係基於期望的壓縮率。
  33. 一種資料處理系統,包含:處理浮點數的資料處理器,其中浮點數包括根據使用在該資料處理系統中之浮點格式的原始位元數,該浮點格式界定正負號位元以表示正負號、複數個指數位元以表示指數、以及複數個尾數位元以表示尾數;解壓縮邏輯,施用至壓縮資料封包以將重構浮點數提供至該資料處理器,該壓縮資料封包包含指示器陣列以及多達M個編碼浮點數,其中該指示器陣列包含對應於包含在該壓縮資料封包中之編碼浮點數的複數之M個指示器,其中該等指示器之一者在該指示器陣列中的位置對應於該等編碼浮點數之一者,該解壓縮邏輯提供複數種壓縮種類,其中特定壓縮種類關聯於特定指示器值,該解壓縮邏輯包括:從該壓縮資料封包擷取該指示器陣列的邏輯;判定用於該等M個指示器各者之該指示器值的邏輯;從該壓縮資料封包擷取對應於該指示器之該編碼浮點數的邏輯;以及一解碼器,根據與該指示器值關聯的該壓縮種類解碼該編碼浮點數,以形成具有根據該浮點格式之該原始位元數的對應重構浮點數。
  34. 如申請專利範圍第33項的資料處理系統,其中該壓縮資料封包包含少於M個編碼浮點數,且該等壓縮種 類之一者指定略過擷取該編碼浮點數的該邏輯,該解碼器將根據該浮點格式的填充值提供為該對應重構浮點數。
  35. 如申請專利範圍第33項的資料處理系統,其中該等壓縮種類之一者指定使用該浮點格式,其中將根據該浮點格式的該浮點數儲存在該壓縮資料封包中,該解碼器將該編碼浮點數提供為該對應重構浮點數。
  36. 如申請專利範圍第33項的資料處理系統,其中該等壓縮種類的一者指定該編碼浮點數包含具有減少之尾數位元數的壓縮尾數、該浮點數之原始正負號位元以及原始指數位元,該解碼器更包含:解壓縮該壓縮尾數的邏輯,以形成具有原始尾數位元數的重構尾數;以及組合該原始正負號位元、該原始指數位元、以及該重構尾數的邏輯,以形成具有根據該浮點格式之該原始位元數的該對應重構浮點數。
  37. 如申請專利範圍第36項的資料處理系統,其中解壓縮該壓縮尾數的該邏輯更包含將該壓縮尾數的位元值***該重構尾數的最高有效位元位置,並將零***其餘位元位置。
  38. 如申請專利範圍第33項的資料處理系統,其中該等壓縮種類之一者指定該編碼浮點數包含壓縮指數符記、壓縮尾數符記、以及原始正負號位元,該解碼器更包含:解壓縮該壓縮指數符記的邏輯,以形成具有原始指數 位元數的重構指數;解壓縮該壓縮尾數符記的邏輯,以形成具有原始尾數位元數的重構尾數;以及組合該原始正負號位元、該重構指數、以及該重構尾數的邏輯,以形成具有根據該浮點格式之該原始位元數的該對應重構浮點數。
  39. 如申請專利範圍第33項的資料處理系統,其中該等壓縮種類之一者指定該指數、該尾數、以及該正負號的壓縮,其中多達M個編碼浮點數包括多達M個尾數符記、多達M個指數符記、以及至少一個正負號符記,該解碼更包含:解壓縮該指數符記的邏輯,以形成具有原始指數位元數的重構指數;解壓縮該尾數符記的邏輯,以形成具有原始尾數位元數的重構尾數;解壓縮該至少一個正負號符記的邏輯,以產生多達M個解壓縮正負號位元,以及組合該解壓縮正負號位元、該重構指數、以及該重構尾數的邏輯,以形成具有根據該浮點格式之該原始位元數的該對應重構浮點數。
  40. 一種資料處理系統,包含:處理浮點數的一資料處理器,其中各浮點數由根據使用在該資料處理系統中之浮點格式的原始位元數組成,該浮點格式界定正負號位元以表示正負號、複數個指數位元 以表示指數、以及複數個尾數位元以表示尾數,該資料處理器提供M個浮點數的群組;一指數臨界,設定在可由該資料處理器存取之記憶體中;一指示器陣列,設定在記憶體中,以儲存用於該等M個浮點數的複數之M個指示器,其中該指示器在該指示器陣列中的位置對應於該等M個浮點數之一者;施用至該等M個浮點數的壓縮邏輯,包括:將該等M個浮點數各者的該指數與該指數臨界比較的邏輯,且當該指數大於該指數臨界時,將該指示器陣列中針對對應位置的該指示器設定為一第一指示器值,或當該指數少於或等於該指數臨界時,設定為一第二指示器值;一編碼器,當將該對應指示器設定為該第一指示器值時,施用至該浮點數以形成編碼浮點數;以及封裝邏輯,將該指示器陣列的該等M個指示器值儲存在壓縮資料封包中,並將對應於設定為該第一指示器值的該等指示器之多達M個編碼浮點數儲存在該壓縮資料封包中。
  41. 如申請專利範圍第40項的資料處理系統,該編碼器將作為該編碼浮點數之具有根據該浮點格式之該原始位元數的該浮點數提供至該封裝邏輯。
  42. 如申請專利範圍第40項的資料處理系統,其中該指數臨界係基於期望的壓縮率。
  43. 如申請專利範圍第40項的資料處理系統,更包 含接收該壓縮資料封包並將重構浮點數提供至該資料處理器的解壓縮邏輯,該解壓縮邏輯包含:從該壓縮資料封包擷取該指示器陣列的邏輯;判定該指示器是否等於該第一指示器值或該第二指示器值的邏輯;一解碼器,從該壓縮資料封包解碼對應於具有該第一指示器值之該等指示器的該編碼浮點數,以形成採用該浮點格式的重構浮點數,並提供用於對應於具有該第二指示器值之該等指示器的該重構浮點數之採用該浮點格式的填充值。
  44. 如申請專利範圍第43項的資料處理系統,其中當該編碼浮點數以該浮點格式表示時,該解碼器根據該第一指示器值將該編碼浮點數提供為該重構浮點數。
  45. 一種用於壓縮複數個浮點數的方法,其中各浮點數包括根據使用在資料處理系統中之浮點格式的原始位元數,該浮點格式界定正負號位元以表示正負號、複數個指數位元以表示指數、以及複數個尾數位元以表示尾數,該方法包含:將碼表設定在該資料處理系統的記憶體中,其中該碼表將一組指數差值與一組對應指數符記關聯;壓縮該等浮點數各者的該指數,以產生指數符記,包含:計算該指數與該等浮點數之第二者的第二指數之間的指數差; 藉由從該碼表選擇對應於該指數差的該指數符記,編碼該指數差;壓縮該等浮點數各者的該尾數,以產生尾數符記,包含:基於該浮點數的該指數,判定編碼尾數位元數;編碼該尾數以產生具有該編碼尾數位元數的該尾數符記;編碼該等複數個浮點數的該等正負號,以產生一或多個正負號符記;且將代表複數個編碼浮點數的該等指數符記、該等尾數符記、以及該等正負號符記封裝在壓縮資料封包中。
  46. 如申請專利範圍第45項的方法,其中編碼該等正負號的該步驟更包含壓縮該等複數個浮點數的該等正負號,以產生代表壓縮正負號的該一或多個正負號符記。
  47. 如申請專利範圍第45項之方法,其中編碼該尾數的該步驟更包含:儲存該尾數的最高有效位元,以形成具有該編碼尾數位元數的該尾數符記。
  48. 如申請專利範圍第45項之方法,更包含:將映射函數設定在將指數值組相關於一組編碼尾數位元數的該記憶體中,其中判定編碼尾數位元數的該步驟使用該映射函數,以基於該浮點數的該指數判定該編碼尾數位元數。
  49. 如申請專利範圍第48項的方法,其中設定映射 函數的該步驟提供複數個映射函數,各映射函數與映射函數指示器關聯,更包含:針對該等複數個浮點數的至少一部分計算該等指數的統計;基於該統計選擇該映射函數,其中判定編碼尾數位元數的該步驟使用該獲選映射函數;且將該映射函數指示器儲存在該壓縮資料封包中。
  50. 如申請專利範圍第49項的方法,其中計算統計的該步驟包含計算該等指數的直方圖,選擇該映射函數的該步驟更包含:基於指數的該直方圖,針對該等映射函數各者計算編碼尾數位元總數;且選擇該編碼尾數位元總數為最低的該映射函數。
  51. 一種用於從對應於原始浮點數之編碼浮點數重構浮點數的方法,該等原始浮點數各者具有根據使用在資料處理系統中之浮點格式的原始位元數,該浮點格式界定正負號位元以表示正負號、多個指數位元以表示指數、以及多個尾數位元以表示尾數,該方法包含:將碼表設定在該資料處理系統的記憶體中,其中該碼表將一組指數差值與一組對應指數符記關聯;接收包含藉由正負號符記、指數符記、以及尾數符記表示之複數個編碼浮點數的壓縮資料封包;解壓縮該等複數個編碼浮點數各者的該指數符記,以形成具有根據該浮點格式之該指數位元數的重構指數,包 含:從該壓縮資料封包擷取該指數符記;藉由使用該碼表識別對應於該指數符記的該指數差值而解碼該指數符記,以產生解碼指數差;將該解碼指數差加至先前的重構指數,以產生該重構指數;解壓縮該等複數個編碼浮點數各者的該尾數符記,以形成具有根據該浮點格式之該尾數位元數的重構尾數,包含:使用該重構指數判定編碼尾數位元數;從該壓縮資料封包擷取具有該編碼尾數位元數的該尾數符記;解碼該尾數符記以形成該重構尾數;從該壓縮資料封包擷取該等複數個編碼浮點數的一或多個正負號符記;解碼該等正負號符記以產生重構正負號;且組合該等複數個編碼浮點數各者的該重構正負號、該重構指數、以及該重構尾數,以根據該浮點格式形成重構浮點數,以產生複數個重構浮點數。
  52. 如申請專利範圍第51項的方法,其中該一或多個正負號符記代表該等複數個編碼浮點數的壓縮正負號,解碼該等正負號符記的該步驟更包含解壓縮該一或多個正負號符記,以產生用於該等複數個重構浮點數的該等重構正負號。
  53. 如申請專利範圍第51項之方法,其中解碼該尾數符記的該步驟更包含:將該尾數符記的位元值***該重構尾數的最高有效位元位置中,並將零***其餘位元位置,其中該重構尾數具有該尾數位元數。
  54. 如申請專利範圍第51項之方法,更包含:將映射函數設定在將一組指數值相關於一組編碼尾數位元數的該記憶體中,其中判定編碼尾數位元數的該步驟使用該映射函數,以基於該重構指數判定該編碼尾數位元數。
  55. 一種用於壓縮複數個浮點數的方法,其中各浮點數包括根據使用在資料處理系統中之浮點格式的原始位元數,該浮點格式界定正負號位元以表示正負號、複數個指數位元以表示指數、以及複數個尾數位元以表示尾數,該方法包含:將碼表設定在該資料處理系統的記憶體中,其中該碼表將一組指數差值與一組對應指數符記關聯;將該等複數個浮點數分組為一系列的編碼群組;壓縮該編碼群組的最大指數,以產生用於該編碼群組的指數符記,包含:判定用於指數之該編碼群組的該最大指數;計算該最大指數與先前編碼群組的先前最大指數之間的指數差;藉由使用該碼表識別對應於該指數差的該指數符記, 編碼該指數差;壓縮該編碼群組的該尾數,以產生尾數符記,包含:基於該編碼群組的該最大指數,判定編碼尾數位元數;編碼該尾數以產生具有該編碼尾數位元數的該尾數符記;編碼該編碼群組的該等正負號,以產生一或多個正負號符記;且將用於該系列編碼群組之各編碼群組的該指數符記、該等尾數符記、以及該等正負號符記封裝入壓縮資料封包中。
  56. 如申請專利範圍第55項的方法,其中編碼該等正負號的該步驟更包含壓縮該編碼群組的該等正負號,以產生代表壓縮正負號的該一或多個正負號符記。
  57. 如申請專利範圍第45或55項的方法,其中編碼該等正負號的該步驟更包含將該正負號的該值使用為該正負號符記。
  58. 如申請專利範圍第45或55項的方法,其中該碼表包括逸出符記,編碼該指數差的該步驟更包含:當該指數差與該碼表中的該組指數差值不同時,將該逸出符記與該指數差組合以形成該指數符記。
  59. 如申請專利範圍第45或55項的方法,其中將碼表設定在記憶體中的該步驟提供複數個碼表,其中各碼表與表指示器關聯,壓縮該指數的該步驟更包含: 針對該等複數個浮點數的至少一部分計算該等指數差的統計;基於該統計選擇該碼表,其中編碼該指數差的該步驟從該獲選碼表選擇該指數符記;且將與該獲選碼表關聯的該表指示器儲存在該壓縮資料封包中。
  60. 如申請專利範圍第59項的方法,其中計算統計的該步驟包含計算該等指數差的直方圖,其中選擇該碼表的該步驟更包含:基於指數差的該直方圖,針對該等複數個碼表各者的該等對應指數符記計算位元總數;且選擇該位元總數為最低的該碼表。
  61. 如申請專利範圍第55項之方法,其中編碼該尾數的該步驟更包含:從用於該編碼群組的該最大指數減去對應於該尾數的該指數,以產生偏移數;將其後跟隨「1」之該偏移數個零***該尾數的最高有效位元位置中,以形成對齊尾數;且儲存該對齊尾數的最高有效位元,以形成具有該編碼尾數位元數的該尾數符記。
  62. 如申請專利範圍第55項之方法,更包含:將映射函數設定在將最大指數值組相關於一組編碼尾數位元數的該記憶體中,其中判定編碼尾數位元數的該步驟使用該映射函數,以基於該編碼群組的該最大指數判定 該編碼尾數位元數。
  63. 如申請專利範圍第62項的方法,其中設定映射函數的該步驟提供複數個映射函數,各映射函數與映射函數指示器關聯,更包含:針對該系列編碼群組的至少一部分計算該等最大指數的統計;基於該統計選擇該映射函數,其中判定編碼尾數位元數的該步驟使用該獲選映射函數;且將該映射函數指示器儲存在該壓縮資料封包中。
  64. 如申請專利範圍第63項的方法,其中計算統計的該步驟包含計算該等最大指數的直方圖,選擇該映射函數的該步驟更包含:基於最大指數的該直方圖,針對該等映射函數各者計算編碼尾數位元的總數;且選擇該編碼尾數位元總數為最低的該映射函數。
  65. 一種用於從對應於原始浮點數之編碼浮點數重構浮點數的方法,該等原始浮點數各者具有根據使用在資料處理系統中之浮點格式的原始位元數,該浮點格式界定正負號位元以表示正負號、多個指數位元以表示指數、以及多個尾數位元以表示尾數,該方法包含:將碼表設定在該資料處理系統的記憶體中,其中該碼表將一組指數差值與一組對應指數符記關聯;接收包含藉由配置在編碼群組序列中的正負號符記、指數符記、以及尾數符記表示之複數個編碼浮點數的壓縮 資料封包;解壓縮用於該編碼群組的該指數符記,以形成重構最大指數,包含:從該壓縮資料封包擷取用於該編碼群組的該指數符記;藉由使用該碼表識別對應於該指數符記的該指數差值而解碼該指數符記,以產生解碼指數差;將該解碼指數差加至對應於先前編碼群組的先前重構最大指數,以產生具有根據該浮點格式之該指數位元數的該重構最大指數;解壓縮該編碼群組的各尾數符記,包含:基於該重構最大指數,針對該編碼群組中的各尾數符記判定編碼尾數位元數;從該壓縮資料封包擷取用於該編碼群組的該等尾數符記;解碼各尾數符記以形成具有根據該浮點格式之該尾數位元數的重構尾數;基於該重構最大指數及該等尾數符記重構用於該編碼群組的指數以形成重構指數,該等重構指數各者具有根據該浮點格式的該指數位元數;從該壓縮資料封包擷取用於該編碼群組的一或多個正負號符記;解碼該等正負號符記以產生重構正負號;且組合該系列編碼群組中之該等編碼浮點數各者的該重 構正負號、該重構指數、以及該重構尾數,以根據該浮點格式形成重構浮點數,以產生複數個重構浮點數。
  66. 如申請專利範圍第65項的方法,其中該一或多個正負號符記代表用於該編碼群組的壓縮正負號,解碼該等正負號符記的該步驟更包含解壓縮該一或多個正負號符記,以產生用於該編碼群組的該等重構正負號。
  67. 如申請專利範圍第51或65項的方法,其中該正負號符記複製該原始浮點數的該正負號,其中解碼該等正負號符記的該步驟將該重構正負號設定成等於該正負號符記。
  68. 如申請專利範圍第51或65項的方法,其中該碼表包括逸出符記,當該指數差與該碼表中之該一組指數差值不同時,該指數符記包含該逸出符記,解碼該指數符記的該步驟更包含:識別該指數符記中的該逸出符記;且擷取在該指數符記中跟隨該逸出符記之該指數位元數的位元值,以產生該解碼指數差。
  69. 如申請專利範圍第45、51、55、或65項的方法,其中該碼表將對應指數符記與根據霍夫曼編碼之具有更高發生頻率的指數差值關聯。
  70. 如申請專利範圍第45、51、55、或65項的方法,其中該碼表將對應指數符記與根據熵編碼之具有更高發生頻率的指數差值關聯。
  71. 如申請專利範圍第51或65項的方法,其中將碼 表設定在記憶體中的該步驟提供複數個碼表,其中各碼表與表指示器關聯,其中將該表指示器儲存在該壓縮資料封包中,解壓縮該指數的該步驟更包含:從該壓縮資料封包擷取該表指示器;且選擇與該表指示器關聯的該碼表,其中解碼該指數符記的該步驟使用該獲選碼表。
  72. 如申請專利範圍第65項之方法,其中解壓縮該尾數符記的該步驟更包含:識別該尾數符記中對應於前導之「1」的位元位置;將該尾數符記之對應於跟隨該前導之「1」的位元位置的位元值***該重構尾數的最高有效位元位置;且將零***該重構尾數的其餘位元位置,其中該重構尾數具有該尾數位元數。
  73. 如申請專利範圍第72項的方法,其中重構用於該編碼群組之指數的該步驟更包含:計數該尾數符記中在該前導之「1」之前的位元位置中的零數;且從該最大指數值減去該零數,以產生對應於該重構尾數的該重構指數。
  74. 如申請專利範圍第65項之方法,更包含:將映射函數設定在將最大指數值組相關於一組編碼尾數位元數的該記憶體中,其中判定編碼尾數位元數的該步驟使用該映射函數,以基於該編碼群組的該最大指數判定該編碼尾數位元數。
  75. 如申請專利範圍第74項的方法,其中設定映射函數的該步驟提供複數個映射函數,各映射函數與映射函數指示器關聯,其中將該映射函數指示器儲存在該壓縮資料封包中,解壓縮該尾數的該步驟更包含:從該壓縮資料封包擷取該映射函數指示器;且選擇與該映射函數指示器關聯的該映射函數,其中判定編碼尾數位元數的該步驟使用該獲選映射函數以基於該重構最大指數判定該編碼尾數位元數。
  76. 一種資料處理系統,包含:處理浮點數的一資料處理器,其中浮點數包括根據使用在該資料處理系統中之浮點格式的原始位元數,該浮點格式界定正負號位元以表示正負號、複數個指數位元以表示指數、以及複數個尾數位元以表示尾數,該資料處理器提供複數個浮點數;一碼表,設定在可由該資料處理器存取之記憶體中,其中該碼表將一組指數差值與一組對應指數符記關聯;指數壓縮邏輯,施用至該等浮點數各者的該指數以產生指數符記,包含:一減法器,計算該浮點數的該指數與該等浮點數之第二者的第二指數之間的指數差;一指數編碼器,使用該碼表選擇對應於該指數差的該指數符記;尾數壓縮邏輯,施用至該等浮點數各者的該尾數以產生尾數符記,包含: 基於該浮點數的該指數,判定編碼尾數位元數的邏輯;一尾數編碼器,施用至該尾數以產生具有該編碼尾數位元數的該尾數符記;一正負號編碼器,施用至該等複數個浮點數的該等正負號,以產生一或多個正負號符記;以及封裝邏輯,將代表複數個編碼浮點數的該等指數符記、該等尾數符記、以及該等正負號符記儲存在壓縮資料封包中。
  77. 如申請專利範圍第76項的資料處理系統,其中該正負號編碼器更包含施用至該等複數個浮點數的該等正負號,以產生代表壓縮正負號之該一或多個正負號符記的正負號壓縮邏輯。
  78. 如申請專利範圍第76項的資料處理系統,其中該尾數編碼器儲存該尾數的最高有效位元,以形成具有該編碼尾數位元數的該尾數符記。
  79. 如申請專利範圍第76項的資料處理系統,更包含設定在將一組指數值相關於一組編碼尾數位元數的該記憶體中的映射函數,其中判定編碼尾數位元數的該邏輯使用該映射函數以基於該浮點數的該指數判定該編碼尾數位元數。
  80. 如申請專利範圍第79項的資料處理系統,更包含設定在該記憶體中的複數個映射函數,各映射函數與映射函數指示器關聯,其中該尾數壓縮邏輯更包含: 針對該等複數個浮點數的至少一部分計算該等指數之統計的邏輯;以及基於該統計從該等複數個映射函數選擇該映射函數的邏輯,其中判定編碼尾數位元數的該邏輯使用該獲選映射函數,其中該封裝邏輯將該映射函數指示器儲存在該壓縮資料封包中。
  81. 如申請專利範圍第80項的資料處理系統,其中計算統計的該邏輯計算該等指數的直方圖,選擇該映射函數的該邏輯更包含:基於該等指數的該直方圖,針對該等映射函數各者計算編碼尾數位元總數的邏輯;以及選擇該編碼尾數位元總數為最低之該映射函數的邏輯。
  82. 一種資料處理系統,包含:處理浮點數的一資料處理器,其中浮點數包括根據使用在該資料處理系統中之浮點格式的原始位元數,該浮點格式界定正負號位元以表示正負號、多個指數位元以表示指數、以及多個尾數位元以表示尾數;解壓縮邏輯,施用至對應於原始浮點數的複數個編碼浮點數,以將複數個重構浮點數提供至該資料處理器,該等複數個編碼浮點數藉由包含在壓縮資料封包中的正負號符記、指數符記、以及尾數符記表示,該解壓縮邏輯更包含:一碼表,設定在可由該資料處理器存取之記憶體中, 其中該碼表將一組指數差值與一組對應指數符記關聯;指數解壓縮邏輯,施用至該等複數個編碼浮點數各者的該指數符記,以形成具有根據該浮點格式之該指數位元數的重構指數,包含:從該壓縮資料封包擷取該指數符記的邏輯;一指數解碼器,藉由使用該碼表識別對應於該指數符記的該指數差值而解碼該指數符記,以產生解碼指數差;一加法器,將該解碼指數差加至先前的重構指數,以產生該重構指數;尾數解壓縮邏輯,施用至該等複數個編碼浮點數各者的該尾數符記,以形成具有根據該浮點格式之該尾數位元數的重構尾數,包含:使用該重構指數判定編碼尾數位元數的邏輯;從該壓縮資料封包擷取具有該編碼尾數位元數之該尾數符記的邏輯;一尾數解碼器,施用至該尾數符記以形成該重構尾數;從該壓縮資料封包擷取該等複數個編碼浮點數之一或多個正負號符記的邏輯;一正負號解碼器,解碼該等正負號符記以產生重構正負號;以及組合該等複數個編碼浮點數各者的該重構正負號、該重構指數、以及該重構尾數,以根據該浮點格式形成重構浮點數的邏輯,以產生複數個重構浮點數。
  83. 如申請專利範圍第82項的資料處理系統,其中該一或多個正負號符記代表該等複數個編碼浮點數的壓縮正負號,該正負號解碼器更包括解壓縮該一或多個正負號符記,以產生用於該等複數個重構浮點數之該等重構正負號的邏輯。
  84. 如申請專利範圍第82項的資料處理系統,其中該尾數解碼器將該尾數符記的位元值***該重構尾數的最高有效位元位置,並將零***其餘位元位置,其中該重構尾數具有該尾數位元數。
  85. 如申請專利範圍第82項的資料處理系統,更包含設定在將一組指數值相關於一組編碼尾數位元數的該記憶體中的映射函數,其中判定編碼尾數位元數的該邏輯使用該映射函數以基於該重構指數判定該編碼尾數位元數。
  86. 如申請專利範圍第85項的資料處理系統,更包含設定在該記憶體中的複數個映射函數,各映射函數與映射函數指示器關聯,其中將該映射函數指示器儲存在該壓縮資料封包中,該尾數解壓縮邏輯更包含:從該壓縮資料封包擷取該映射函數指示器的邏輯;以及選擇與該映射函數指示器關聯之該映射函數的邏輯,其中判定編碼尾數位元數的該邏輯使用該獲選映射函數以基於該重構指數判定該編碼尾數位元數。
  87. 一種資料處理系統,包含:處理浮點數的一資料處理器,其中浮點數包括根據使 用在該資料處理系統中之浮點格式的原始位元數,該浮點格式界定正負號位元以表示正負號、複數個指數位元以表示指數、以及複數個尾數位元以表示尾數,該資料處理器提供複數個浮點數;一碼表,設定在可由該資料處理器存取之記憶體中,其中該碼表將一組指數差值與一組對應指數符記關聯;指數壓縮邏輯,施用至該等複數個浮點數的編碼群組序列,以產生用於各編碼群組的指數符記,包含:判定用於指數之該編碼群組之最大指數的邏輯;一減法器,計算該最大指數與先前編碼群組的先前最大指數之間的指數差;一指數編碼器,使用該碼表選擇對應於該最大指數差的該指數符記;尾數壓縮邏輯,施用至該編碼群組的該尾數,以產生尾數符記,包含:基於該編碼群組的該最大指數,判定編碼尾數位元數的邏輯;尾數編碼器,施用至該尾數以產生具有該編碼尾數位元數的該尾數符記;一正負號編碼器,施用至該編碼群組的該等正負號,以產生一或多個正負號符記;以及封裝邏輯,將用於該系列編碼群組之各編碼群組的該指數符記、該等尾數符記、以及該等正負號符記封裝入壓縮資料封包中。
  88. 如申請專利範圍第87項的資料處理系統,其中該正負號編碼器更包含施用至該編碼群組的該等正負號,以產生代表壓縮正負號之該一或多個正負號符記的正負號壓縮邏輯。
  89. 如申請專利範圍第76或87項的資料處理系統,其中該正負號編碼器將該正負號的值使用為該正負號符記。
  90. 如申請專利範圍第76或87項的資料處理系統,其中該碼表包括逸出符記,該指數編碼器更包含當該指數差與該碼表中的該一組指數差值不同時,將該逸出符記與該指數差組合以形成該指數符記的邏輯。
  91. 如申請專利範圍第76或87項的資料處理系統,其中將複數個碼表設定在該記憶體中,其中各碼表與表指示器關聯,該指數壓縮邏輯更包含:針對該等複數個浮點數的至少一部分計算該等指數差之統計的邏輯;以及基於該統計選擇該碼表的邏輯,其中該指數編碼器從該獲選碼表選擇該指數符記,其中該封裝邏輯將與該獲選碼表關聯的該表指示器儲存在該壓縮資料封包中。
  92. 如申請專利範圍第91項的資料處理系統,其中計算統計的該邏輯計算該等指數差的直方圖,其中選擇該碼表的該邏輯基於指數差的該直方圖計算用於該等複數個碼表各者之該等對應指數符記的位元總數,並選擇該位元總數為最低的該碼表。
  93. 如申請專利範圍第87項的資料處理系統,其中該尾數編碼器更包含:一第二減法器,從用於該編碼群組的該最大指數減去對應於該尾數的該指數,以產生偏移數;將其後跟隨「1」之該偏移數個零***該尾數的最高有效位元位置之邏輯,以形成對齊尾數;以及儲存該對齊尾數之最高有效位元的邏輯,以形成具有該編碼尾數位元數的該尾數符記。
  94. 如申請專利範圍第87項的資料處理系統,更包含設定在將一組最大指數值相關於一組編碼尾數位元數的該記憶體中的映射函數,其中判定編碼尾數位元數的該邏輯使用該映射函數以基於該編碼群組的該最大指數判定該編碼尾數位元數。
  95. 如申請專利範圍第94項的資料處理系統,更包含複數個映射函數,各映射函數與映射函數指示器關聯,該尾數壓縮邏輯更包含:針對該系列編碼群組的至少一部分計算該等最大指數之統計的邏輯;以及基於該統計從該等複數個映射函數選擇該映射函數的邏輯,其中判定編碼尾數位元數的該邏輯使用該獲選映射函數,其中該封裝邏輯將該映射函數指示器儲存在該壓縮資料封包中。
  96. 如申請專利範圍第95項的資料處理系統,其中計算統計的該邏輯計算該等最大指數的直方圖,選擇該映 射函數的該邏輯更包含:基於最大指數之該直方圖,針對該等映射函數各者計算編碼尾數位元總數的邏輯;以及選擇該編碼尾數位元總數為最低之該映射函數的邏輯。
  97. 一種資料處理系統,包含:處理浮點數的一資料處理器,其中浮點數包括根據使用在該資料處理系統中之浮點格式的原始位元數,該浮點格式界定正負號位元以表示正負號、多個指數位元以表示指數、以及多個尾數位元以表示尾數;解壓縮邏輯,施用至對應於原始浮點數的複數個編碼浮點數,以將複數個重構浮點數提供至該資料處理器,該等複數個編碼浮點數藉由配置在包含在壓縮資料封包中之一系列編碼群組中的正負號符記、指數符記、以及尾數符記表示,該解壓縮邏輯更包含:一碼表,設定在可由該資料處理器存取之記憶體中,其中該碼表將一組指數差值與一組對應指數符記關聯;指數解壓縮邏輯,施用至該等編碼群組各者的該指數符記,以形成具有根據該浮點格式之該指數位元數的重構最大指數,包含:從該壓縮資料封包擷取用於該編碼群組之該指數符記的邏輯;一指數解碼器,藉由使用該碼表識別對應於該指數符記的該指數差值而解碼該指數符記,以產生解碼指數差; 一加法器,將該解碼指數差加至對應於先前編碼群組的先前重構最大指數,以產生該重構最大指數;尾數解壓縮邏輯,施用至該編碼群組的該各尾數符記,以形成具有根據該浮點格式之該尾數位元數的重構尾數,包含:基於該重構最大指數,判定用於該編碼群組中之各尾數符記的編碼尾數位元數之邏輯;從該壓縮資料封包擷取用於該編碼群組之該等尾數符記的邏輯;一尾數解碼器,施用至各尾數符記以形成該重構尾數;基於該重構最大指數及該等尾數符記重構用於該編碼群組的指數以形成重構指數之邏輯,該等重構指數各者具有根據該浮點格式的該指數位元數;從該壓縮資料封包擷取用於該編碼群組之一或多個正負號符記的邏輯;一正負號解碼器,解碼該等正負號符記以產生重構正負號;以及組合該系列編碼群組中之該等編碼浮點數各者的該重構正負號、該重構指數、以及該重構尾數之邏輯,以根據該浮點格式形成重構浮點數,以產生複數個重構浮點數。
  98. 如申請專利範圍第97項的資料處理系統,其中該一或多個正負號符記代表用於該編碼群組的壓縮正負號,該正負號解碼器更包含解碼該一或多個正負號符記, 以產生用於該編碼群組之該等重構正負號的邏輯。
  99. 如申請專利範圍第82或97項的資料處理系統,其中該正負號符記複製該原始浮點數的該正負號,其中該正負號解碼器將該重構正負號設定成等於該正負號符記。
  100. 如申請專利範圍第82或97項的資料處理系統,其中該碼表包括逸出符記,當該指數差與該碼表中之該一組指數差值不同時,該指數符記包含該逸出符記,該指數解碼器更包含:識別該指數符記中之該逸出符記的邏輯;以及擷取在該指數符記中跟隨該逸出符記之該指數位元數的位元值之邏輯,以產生該解碼指數差。
  101. 如申請專利範圍第76、82、87、或97項的資料處理系統,其中該碼表將對應指數符記與根據霍夫曼編碼之具有更高發生頻率的指數差值關聯。
  102. 如申請專利範圍第76、82、87、或97項的資料處理系統,其中該碼表將對應指數符記與根據熵編碼之具有更高發生頻率的指數差值關聯。
  103. 如申請專利範圍第82或97項的資料處理系統,其中將複數個碼表設定在該記憶體中,其中各碼表關聯於表指示器,其中該將該表指示器儲存在該壓縮資料封包中,該指數解壓縮邏輯更包含:從該壓縮資料封包擷取該表指示器的邏輯;以及選擇與該表指示器關聯之該碼表的邏輯,其中該指數解碼器使用該獲選碼表。
  104. 如申請專利範圍第97項的資料處理系統,其中該尾數解碼器更包含:識別該尾數符記中對應於前導之「1」的位元位置之邏輯;將該尾數符記之對應於跟隨該前導之「1」的位元位置的位元值***該重構尾數的最高有效位元位置之邏輯;以及將零***該重構尾數之其餘位元位置的邏輯,其中該重構尾數具有該尾數位元數。
  105. 如申請專利範圍第104項的資料處理系統,其中重構用於該編碼群組之指數的該邏輯更包含:計數該尾數符記中在該前導之「1」之前的位元位置中之零數的邏輯;以及一減法器,從該最大指數值減去該零數,以產生對應於該重構尾數的該重構指數。
  106. 如申請專利範圍第97項的資料處理系統,更包含設定在將一最大一組指數值相關於一組編碼尾數位元數的該記憶體中的映射函數,其中判定編碼尾數位元數的該邏輯使用該映射函數以基於該編碼群組的該最大指數判定該編碼尾數位元數。
  107. 如申請專利範圍第106項的資料處理系統,更包含設定在該記憶體中的複數個映射函數,各映射函數與一映射函數指示器關聯,其中將該映射函數指示器儲存在該壓縮資料封包中,該尾數解壓縮邏輯更包含: 從該壓縮資料封包擷取該映射函數指示器的邏輯;以及選擇與該映射函數指示器關聯之該映射函數的邏輯,其中判定編碼尾數位元數的該邏輯使用該獲選映射函數以基於該重構最大指數判定該編碼尾數位元數。
TW101123004A 2011-06-30 2012-06-27 浮點資料之壓縮 TWI524265B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161503232P 2011-06-30 2011-06-30
US201161503981P 2011-07-01 2011-07-01

Publications (2)

Publication Number Publication Date
TW201322118A TW201322118A (zh) 2013-06-01
TWI524265B true TWI524265B (zh) 2016-03-01

Family

ID=47391711

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101123004A TWI524265B (zh) 2011-06-30 2012-06-27 浮點資料之壓縮

Country Status (3)

Country Link
US (3) US9047118B2 (zh)
TW (1) TWI524265B (zh)
WO (1) WO2013003479A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11387843B1 (en) 2021-03-23 2022-07-12 Neuchips Corporation Method and apparatus for encoding and decoding of floating-point number

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2309648A1 (en) * 2009-09-14 2011-04-13 Thomson Licensing Method for encoding floating-point data, method for decoding floating-point data, and corresponding encoder and decoder
KR101703207B1 (ko) * 2009-09-30 2017-02-06 알테라 코포레이션 압축 및 압축해제를 이용한 향상된 멀티 프로세서 파형 데이터 교환
US9047118B2 (en) * 2011-06-30 2015-06-02 Altera Corporation Computationally efficient compression of floating-point data
US8819093B2 (en) * 2011-12-30 2014-08-26 International Business Machines Corporation Systems and methods to reduce I/O and/or speed up out-of-core linear solvers
US9158686B2 (en) 2012-03-30 2015-10-13 Altera Corporation Processing system and method including data compression API
US9104473B2 (en) 2012-03-30 2015-08-11 Altera Corporation Conversion and compression of floating-point and integer data
US9026568B2 (en) 2012-03-30 2015-05-05 Altera Corporation Data compression for direct memory access transfers
US9118345B2 (en) 2012-10-04 2015-08-25 Altera Corporation Data compression profiler for configuration of compression
US9298457B2 (en) 2013-01-22 2016-03-29 Altera Corporation SIMD instructions for data compression and decompression
WO2014116712A1 (en) 2013-01-22 2014-07-31 Samplify Systems, Inc. Data compression and decompression using simd instructions
US9274802B2 (en) 2013-01-22 2016-03-01 Altera Corporation Data compression and decompression using SIMD instructions
WO2014150970A1 (en) * 2013-03-15 2014-09-25 Stryker Corporation Patient support apparatus with remote communications
US9274951B2 (en) 2013-05-31 2016-03-01 Altera Corporation Cache memory controller for accelerated data transfer
WO2015047252A1 (en) * 2013-09-25 2015-04-02 Analogic Corporation Hybrid photon counting data acquisition system
US10305980B1 (en) * 2013-11-27 2019-05-28 Intellectual Property Systems, LLC Arrangements for communicating data in a computing system using multiple processors
US9461667B2 (en) * 2013-12-30 2016-10-04 Samsung Electronics Co., Ltd. Rounding injection scheme for floating-point to integer conversion
CN104954336B (zh) * 2014-03-28 2019-05-17 中兴通讯股份有限公司 IPv6网络参数处理方法、装置、***及AAA服务器
US9634689B2 (en) * 2014-08-20 2017-04-25 Sunedison Semiconductor Limited (Uen201334164H) Method and system for arranging numeric data for compression
US10019227B2 (en) 2014-11-19 2018-07-10 International Business Machines Corporation Accuracy-conserving floating-point value aggregation
US9660666B1 (en) * 2014-12-22 2017-05-23 EMC IP Holding Company LLC Content-aware lossless compression and decompression of floating point data
US11042850B2 (en) * 2014-12-31 2021-06-22 Fiserv, Inc. Card account identifiers associated with conditions for temporary use
EP3304746B1 (en) 2015-05-21 2021-04-07 Zeropoint Technologies AB Methods, devices and systems for hybrid data compression and decompression
US10268380B2 (en) 2015-05-21 2019-04-23 Zeropoint Technologies Ab Methods, devices and systems for semantic-value data compression and decompression
US9209833B1 (en) * 2015-06-25 2015-12-08 Emc Corporation Methods and apparatus for rational compression and decompression of numbers
US20170177336A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Hardware cancellation monitor for floating point operations
US10497089B2 (en) 2016-01-29 2019-12-03 Fotonation Limited Convolutional neural network
SE540178C2 (en) 2016-01-29 2018-04-24 Zeropoint Tech Ab Methods, devices and systems for compressing and decompressing data
EP3419238B1 (en) * 2016-03-14 2020-05-06 Huawei Technologies Co., Ltd. Method, apparatus, and system for transmitting data
US10122379B1 (en) * 2016-03-23 2018-11-06 EMC IP Holding Company LLC Content-aware compression of data with reduced number of class codes to be encoded
US10305508B2 (en) * 2018-05-11 2019-05-28 Intel Corporation System for compressing floating point data
US10528641B2 (en) * 2018-05-14 2020-01-07 Redpine Signals, Inc. Encoder and decoder for transmission of coefficients to a neural network
US20190370667A1 (en) * 2018-06-01 2019-12-05 Samsung Electronics Co., Ltd. Lossless compression of sparse activation maps of neural networks
JP7011373B2 (ja) * 2018-07-11 2022-01-26 キヤノン株式会社 複合機及びその制御方法、並びにプログラム
JP7102269B2 (ja) 2018-07-11 2022-07-19 キヤノン株式会社 画像処理装置、画像処理装置の制御方法、およびプログラム
CN110912562A (zh) * 2018-09-18 2020-03-24 深圳市茁壮网络股份有限公司 一种浮点数据处理方法、装置及存储介质
US11010132B2 (en) * 2018-09-28 2021-05-18 Tenstorrent Inc. Processing core with data associative adaptive rounding
US10841595B2 (en) * 2018-11-27 2020-11-17 Semiconductor Components Industries, Llc Methods and apparatus for transform coefficient encoding and decoding
US11182126B2 (en) * 2019-06-25 2021-11-23 Raytheon Company Computationally efficient mixed precision floating point waveform generation
US11875154B2 (en) * 2019-12-13 2024-01-16 Intel Corporation Apparatuses, methods, and systems for instructions to multiply floating-point values of about zero
US11847450B2 (en) 2019-12-13 2023-12-19 Intel Corporation Apparatuses, methods, and systems for instructions to multiply values of zero
US11650819B2 (en) 2019-12-13 2023-05-16 Intel Corporation Apparatuses, methods, and systems for instructions to multiply floating-point values of about one
US11188510B2 (en) 2020-01-30 2021-11-30 PagerDuty, Inc. Analytical platform for distributed data
CN111431539B (zh) * 2020-03-04 2023-12-08 嘉楠明芯(北京)科技有限公司 一种神经网络数据的压缩方法、装置及计算机可读存储介质
US11416248B2 (en) * 2020-03-28 2022-08-16 Intel Corporation Method and system for efficient floating-point compression
US11709225B2 (en) * 2020-06-19 2023-07-25 Nxp B.V. Compression of data employing variable mantissa size
CN112665886B (zh) * 2020-12-11 2023-06-27 浙江中控技术股份有限公司 一种大型旋转机械振动测量高频原始数据的数据转换方法
US11962699B2 (en) 2021-02-01 2024-04-16 Protegrity Corporation Parallel tokenization of decimal information in a distributed network environment
WO2022173572A1 (en) * 2021-02-10 2022-08-18 Microsoft Technology Licensing, Llc Hierarchical and shared exponent floating point data types
US11886833B2 (en) 2021-02-10 2024-01-30 Microsoft Technology Licensing, Llc Hierarchical and shared exponent floating point data types
WO2023147770A1 (zh) * 2022-02-02 2023-08-10 吕仁硕 一种浮点数运算方法以及相关的算术单元
GB202202794D0 (en) * 2022-03-01 2022-04-13 Graphcore Ltd Machine code instruction
TWI837000B (zh) * 2022-05-26 2024-03-21 國立清華大學 一種浮點數壓縮方法、運算裝置及電腦可讀取儲存媒介
KR20240070783A (ko) * 2022-11-14 2024-05-22 주식회사 사피온코리아 부동 소수점 데이터 압축을 위한 방법 및 장치
CN116208170B (zh) * 2023-03-01 2023-10-27 山东华科信息技术有限公司 分布式能源并网监测的数据解压缩***、方法及其设备

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5839100A (en) 1996-04-22 1998-11-17 Wegener; Albert William Lossless and loss-limited compression of sampled data signals
US6240431B1 (en) 1998-10-31 2001-05-29 Hewlett-Packard Company Decompression of limited range floating point numbers
US6253222B1 (en) 1998-10-31 2001-06-26 Hewlett-Packard Company Compression of limited range floating point numbers
US6396420B1 (en) 1999-02-26 2002-05-28 Autodesk, Inc. Delta compression of floating point coordinate data
US6631392B1 (en) 1999-07-30 2003-10-07 Mips Technologies, Inc. Method and apparatus for predicting floating-point exceptions
US6701427B1 (en) 1999-12-22 2004-03-02 Arm Limited Data processing apparatus and method for processing floating point instructions
CN1762099B (zh) 2003-04-28 2010-10-13 日本电信电话株式会社 浮点数字信号的可逆编码方法、解码方法及其装置
EP1638209B8 (en) 2003-06-20 2019-09-11 Nippon Telegraph And Telephone Corporation Lossless coding method for digital signal in floating-point format, decoding method, apparatus therefor and programs therefor
WO2005025072A1 (ja) * 2003-09-02 2005-03-17 Nippon Telegraph And Telephone Corporation 浮動小数点信号可逆符号化方法、復号化方法、及びそれらの装置、プログラム及びその記録媒体
KR20070083652A (ko) 2004-09-13 2007-08-24 이엑스피웨이 부동소수점 수의 수열의 압축 및 복원 방법
US7554464B1 (en) 2004-09-30 2009-06-30 Gear Six, Inc. Method and system for processing data having a pattern of repeating bits
US7698352B2 (en) 2005-09-15 2010-04-13 International Business Machines Corporation System and method for converting from scaled binary coded decimal into decimal floating point
EP2309648A1 (en) 2009-09-14 2011-04-13 Thomson Licensing Method for encoding floating-point data, method for decoding floating-point data, and corresponding encoder and decoder
KR101703207B1 (ko) 2009-09-30 2017-02-06 알테라 코포레이션 압축 및 압축해제를 이용한 향상된 멀티 프로세서 파형 데이터 교환
US8301803B2 (en) * 2009-10-23 2012-10-30 Samplify Systems, Inc. Block floating point compression of signal data
EP2387004B1 (en) * 2010-05-11 2016-12-14 Dassault Systèmes Lossless compression of a structured set of floating point numbers, particularly for CAD systems
US9047118B2 (en) * 2011-06-30 2015-06-02 Altera Corporation Computationally efficient compression of floating-point data
US9026568B2 (en) * 2012-03-30 2015-05-05 Altera Corporation Data compression for direct memory access transfers
US9104473B2 (en) * 2012-03-30 2015-08-11 Altera Corporation Conversion and compression of floating-point and integer data

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11387843B1 (en) 2021-03-23 2022-07-12 Neuchips Corporation Method and apparatus for encoding and decoding of floating-point number
TWI785546B (zh) * 2021-03-23 2022-12-01 創鑫智慧股份有限公司 浮點數的編碼與解碼的方法與裝置

Also Published As

Publication number Publication date
US8959129B2 (en) 2015-02-17
US9047118B2 (en) 2015-06-02
US20130007077A1 (en) 2013-01-03
US8959130B2 (en) 2015-02-17
TW201322118A (zh) 2013-06-01
US20130007078A1 (en) 2013-01-03
WO2013003479A3 (en) 2013-03-07
US20130007076A1 (en) 2013-01-03
WO2013003479A2 (en) 2013-01-03

Similar Documents

Publication Publication Date Title
TWI524265B (zh) 浮點資料之壓縮
US8301803B2 (en) Block floating point compression of signal data
US10810763B2 (en) Data compression using entropy encoding
US9118345B2 (en) Data compression profiler for configuration of compression
US11531469B2 (en) Arrangements for storing more data in memory
WO2013149050A1 (en) Conversion and compression of floating-point and integer data
JP5628317B2 (ja) 浮動小数点データを符号化する方法、浮動小数点データを復号化する方法並びに関連する符号器及び復号器
US11615301B2 (en) Lossless exponent and lossy mantissa weight compression for training deep neural networks
JP2007514973A (ja) Mをnより小さいとしてnビット語をmビット語にトランスコードする方法および装置
US20160112703A1 (en) Remote viewing of large image files
US9143159B2 (en) DPD/BCD to BID converters
CN104412512B (zh) 编码装置、解码装置、编码方法以及解码方法
CN111492369B (zh) 人工神经网络中移位权重的残差量化
WO2015147912A1 (en) Variable bit-length reiterative lossless compression system and method
Sano et al. Segment-parallel predictor for FPGA-based hardware compressor and decompressor of floating-point data streams to enhance memory I/O bandwidth
CN113240761A (zh) 一种适用于遥感卫星的高位深图像无损压缩方法
Wong Towards a Better 16-Bit Number Representation for Training Neural Networks
JPH07160267A (ja) 波形データ符号化装置、波形データ符号化方法、波形データ復号装置、及び波形データ符号化/復号装置
KR20220149281A (ko) 특징 맵을 컴프레싱하는 장치 및 방법
TW202329089A (zh) 編碼裝置、解碼裝置、編碼方法及解碼方法
Ueno Bandwidth Compression Hardware for High-Performance Stream Computing of Real-World Applications
JP2018037891A (ja) 符号化装置、符号化方法、復号装置および復号方法
JP2006243826A (ja) 浮動小数点数値のm乗根を演算する浮動小数点演算装置及びコンピュータプログラム