TW201506785A - 用以加速壓縮及解壓縮操作之設備與方法 - Google Patents

用以加速壓縮及解壓縮操作之設備與方法 Download PDF

Info

Publication number
TW201506785A
TW201506785A TW103121589A TW103121589A TW201506785A TW 201506785 A TW201506785 A TW 201506785A TW 103121589 A TW103121589 A TW 103121589A TW 103121589 A TW103121589 A TW 103121589A TW 201506785 A TW201506785 A TW 201506785A
Authority
TW
Taiwan
Prior art keywords
instruction
information
deflate
length
decoding
Prior art date
Application number
TW103121589A
Other languages
English (en)
Other versions
TWI531971B (zh
Inventor
Vinodh Gopal
James D Guilford
Gilbert M Wolrich
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of TW201506785A publication Critical patent/TW201506785A/zh
Application granted granted Critical
Publication of TWI531971B publication Critical patent/TWI531971B/zh

Links

Classifications

    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3086Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

描述一處理器其包括一指令執行管線具有一指令提取單元以提取及解碼一指令。該處理器也具有一執行單元以執行指令。該執行單元具有一狀態機及內容可定址記憶體(CAM)電路。該狀態機將接收指向DEFLATE編碼資訊之一串流的一指標,提取該DEFLATE編碼資訊之一區段,以及將該DEFLATE編碼資訊之該區段應用至該CAM以獲得解碼的DEFLATE資訊。

Description

用以加速壓縮及解壓縮操作之設備與方法
本發明係有關於用以加速壓縮及解壓縮操作之設備與方法。
發明背景
LZ77壓縮演算法。壓縮演算法力求減少資料量而不犧牲該資料內部的資訊。一型壓縮演算法稱作為LZ77演算法,藉由以先前存在於輸入(未經壓縮)資料串流中的該資料之單一複本的元件符號置換該資料之重複出現而達成壓縮。匹配係藉一對稱作為長度-距離對的數字編碼(取而代之,「距離」偶爾稱作「偏位」)。
為了找出匹配,該編碼器追蹤某個量之最晚近資料,諸如最末2kB、4kB、或32kB。保有此資料的結構稱作為「滑動窗」(如此LZ77偶爾稱作滑動窗壓縮)。編碼器將最晚近資料保有於滑動窗內部以尋找匹配(及解碼器同樣地保有此資料以解譯編碼器所指稱的匹配)。
圖1顯示一LZ77編碼方案之一簡單實施例。如於圖1中觀察,一位元串流100之先前(更早或更舊)部分101之位元型樣係對該位元串流之一目前部分102作比較。若一序 列位元出現在目前部分102其匹配在先前部分101中之一位元序列,則於該目前部分102中之位元序列係以稍早部分101中之相同位元序列的元件符號置換。舉例言之,於該目前部分102中之位元序列將以稍早部分101中之位元序列103的元件符號置換。
針對位元序列102插入的元件符號識別位元序列102之長度104(也與位元序列103之長度相同)及位元序列103之位置。此處,位元序列103之位置係表示為從目前部分102至該匹配位元序列103之一「距離」105。如此,LZ77壓縮方案編碼一位元序列102為「長度-距離對」其插入位元串流中替代序列102。當解碼該壓縮串流時,當該解碼器達內嵌於該位元串流替代位元序列102的該長度-距離對時,其單純使用該長度-距離對之距離部分以回指位元序列103之起點,藉複製等於該長度-距離對之長度成分的從位元序列103起點算起的多個位元而複製該解碼串流之部分102的正確位元序列。
DEFLATE壓縮演算法。用以壓縮gzip、Zlib、PKZip及WinZip檔案的該LZ77壓縮方案使用DEFLATE壓縮演算法連同其它壓縮方案以執行綜合總體壓縮方案。
圖2顯示DEFLATE壓縮演算法之一綜覽。如於圖2中觀察,在LZ77壓縮之後,該經壓縮的位元串流200可被視為一串列之長度/距離對201_1、201_2、...201_M交混文字202_1、202_2、...202_N。文字相對應於原先位元串流內部之位元型樣,對此在適用窗內部並無更早期相同型樣可 識別用以轉換成一長度/距離對。
然後DEFLATE壓縮演算法前進結合在LZ77壓縮串流200上的其次壓縮程度203。其次壓縮程度203導入兩個不同型霍夫曼編碼,其一起使用較小碼204置換長度/距離對201及文字202的較常見位元型樣,及使用較大碼205置換長度/距離對201及文字202的較不常見位元型樣。第一型霍夫曼編碼用以編碼文字及長度。第二型霍夫曼編碼用以編碼距離。藉由使用較少位元表示LZ77壓縮串流200的較常見位元型樣,須減少在最終DEFLATE壓縮串流206中表示的資訊之總體大小。
用於文字及長度的第一型霍夫曼編碼之一表示型態係呈示於圖3。如於圖3中觀察,文字資訊係以逐一位元組基準分解。至於相對應於8位元資訊之一位元組,有2^8=256不同文字位元組值(以十進制項表示由0至255)。各個文字位元組值相對應於霍夫曼樹中之一節點,於該處,節點本身身分相對應於1:1文字值(亦即00000000之一文字位元組相對應於一霍夫曼樹節點身分0,00000001之一文字位元組相對應於一霍夫曼樹節點身分1,...,11111111之一文字位元組相對應於一霍夫曼樹節點身分255)。
各個霍夫曼樹節點具有一相聯結的編碼值,其係直接插入該位元串流作為該樹節點相對應於文字位元組的一編碼符號。如此,舉例言之,霍夫曼樹節點0具有00110000之一霍夫曼編碼,及霍夫曼樹節點255具有111111111之一霍夫曼編碼。因此,於串流203中之00000000文字位元組將於 DEFLATE壓縮位元串流206中編碼為00110000,及於串流203中之11111111文字位元組將於DEFLATE壓縮位元串流206中編碼為111111111。值得注意者,00000000之文字位元組具有比11111111之文字位元組更高的出現機率,因此於串流200中之00000000之文字位元組的編碼在最終編碼位元串流206中耗用比於串流200中11111111一文字位元組的編碼(111111111具有9位元)較少位元空間(00110000具有8位元)。
該霍夫曼樹也具有身分256的一節點。該節點相對應於在串流200中出現一區塊結束(EOB)符號。於DEFLATE壓縮方案中,總體資料分解成較小區塊,及鄰近區塊間之畫界係以一EOB符號標示。為求簡明,一EOB符號不顯示於串流200,其編碼值也不顯示於串流206。
霍夫曼樹包括額外29節點,具有身分257至285,其係用以編碼一長度-距離對的長度資訊(窗大小)。該長度資訊可為3至258位元組。此處,樹身分257至264及285相對應於特定(及更常見)長度(特別,身分257相對應於3位元組之一長度,身分258相對應於4位元組之一長度,...等,...身分264相對應於10位元組之一長度,及身分285相對應於258位元組之一長度)。身分257至264及258各自以6位元或以下編碼(更常見長度耗用少於6位元,而更不常見長度耗用高達6位元)。
霍夫曼樹之身分265至284用以載明長度範圍而非特定長度。此處,於11位元組至257位元組範圍內之長度 係載明於身分265至284。各個霍夫曼樹節點相對應於一不同長度範圍。舉例言之,身分265相對應於11或12位元組之一長度範圍。相反地,身分284相對應於227位元組至257位元組之一長度範圍。為了從相對應於一長度範圍的一霍夫曼碼節點身分載明一特定長度,「額外位元」加至一霍夫曼碼節點身分之該編碼。舉例言之,一個額外位元加至霍夫曼碼節點身分265之該編碼,故可載明兩個長度(11或12位元組)。相反地,5個額外位元加至霍夫曼碼節點身分284之該編碼,故可個別地載明31個不同長度(亦即長度227至257(含)中之任一者)。
值得注意地,霍夫曼節點身分0至285中之任一者的編碼為「不重疊」,表示其位元序列為獨一。舉例言之,若最短編碼中之一者為1010,則無其它編碼始於位元序列1010,無論最短者或其它。如此,當完整編碼位元串流經解碼時,各個個別編碼符號容易辨識,且若為一文字或長度則只能相對應於一個8位元型樣。如前文討論,若干編碼長度具有相聯結的額外位元。如於串流205中觀察,任何額外位元係附接該編碼長度。如此例如,若一特定位元序列在串流205中由一解碼器辨識為相對應於節點身分265,則即刻辨識在該特定位元序列後方的下個位元須為該節點身分的額外位元。至於另一實施例,若一特定位元序列在串流205中由一解碼器辨識為相對應於節點身分284,則即刻辨識在該特定位元序列後方的其次五個位元須為該節點身分的額外位元。
距離係根據長度之相似技術編碼,但運用不同霍夫曼樹(第二型霍夫曼樹,圖中未顯示)。用於距離的第二型霍夫曼樹具有30節點而非286(如同文字/長度編碼)且係用以編碼從1位元組至32,768位元組之任何距離。再度,較常見距離相對應於較低樹節點身分及編碼符號中的較少位元,而,較不常見距離相對應於較高樹節點身分,於額外位元之編碼符號及使用中有較多位元。例如,該第二型霍夫曼樹中之第30個節點係用以載明在16,385位元組至32,768位元組範圍內部之任何距離,及13額外位元結合編碼位元型樣用於第30個節點以載明在此範圍內部之該等距離中之特定一者。
DEFLATE編碼資料串流之解碼的一項問題為解碼處理程序之全然複雜,其當在具有通用指令之軟體內執行時耗用大量CPU指令。
依據本發明之一實施例,係特地提出一種處理器包含一指令執行管線。該指令執行管線具有:一指令提取單元,用以提取及解碼一指令;一執行單元,用以執行指令,該執行單元包含一狀態機及內容可定址記憶體(CAM)電路,該狀態機用以接收一指標至DEFLATE編碼資訊之一串流、提取該DEFLATE編碼資訊之一區段、以及將該DEFLATE編碼資訊之該區段應用至該CAM以獲得解碼的DEFLATE資訊。
0-285‧‧‧分錄
100‧‧‧位元串流
101‧‧‧早期部分
102‧‧‧目前部分
103‧‧‧位元序列
104‧‧‧長度
105‧‧‧距離
201_1~M‧‧‧長度/距離對
202_1-N‧‧‧文字
203‧‧‧壓縮程度
204‧‧‧較小碼
205‧‧‧較大碼
206‧‧‧串流
401-405、601-612‧‧‧方塊
501‧‧‧文字/長度(LL)表
502‧‧‧距離(D)表
511-516‧‧‧欄位
520‧‧‧分錄
530‧‧‧型式值
531‧‧‧距離欄位
533‧‧‧額外位元欄位
700‧‧‧執行單元、邏輯設計
701‧‧‧狀態機
702‧‧‧記憶體請求邏輯
703、704‧‧‧內容可定址記憶體(CAM)電路
705、706‧‧‧唯讀記憶體(ROM)電路
707‧‧‧指標更新邏輯電路
800、901_1~N‧‧‧處理核心
801‧‧‧管線
802‧‧‧暫存器儲存空間
803_1~N‧‧‧執行單元、功能單元
900‧‧‧多核心處理器
902‧‧‧互連網路
903‧‧‧最末層級快取(LLC)系統
904‧‧‧記憶體控制器
905‧‧‧I/O集線器
906‧‧‧埠
907‧‧‧圖形處理器
908‧‧‧系統記憶體
950‧‧‧暫存器檔案
1000‧‧‧暫存器架構
1010‧‧‧向量暫存器
1015‧‧‧寫遮罩暫存器
1025‧‧‧通用暫存器
1045‧‧‧純量浮點(FP)堆疊暫存器檔案
1100‧‧‧管線
1102‧‧‧提取
1104‧‧‧長度解碼
1106‧‧‧解碼
1108‧‧‧配置
1110‧‧‧重新命名
1112‧‧‧排程
1114‧‧‧暫存器讀取/記憶體讀取
1116‧‧‧執行階段
1118‧‧‧回寫/記憶體寫入
1122‧‧‧異常處置
1124‧‧‧委付
1130‧‧‧前端單元
1132‧‧‧分支預測單元
1134‧‧‧指令快取單元
1136‧‧‧指令轉譯後備緩衝器(TLB)單元
1138‧‧‧指令提取
1140‧‧‧解碼單元
1150‧‧‧執行引擎單元
1152‧‧‧重新命名/配置器單元
1154‧‧‧止用單元
1156‧‧‧排程器單元
1158‧‧‧實體暫存器檔案單元
1160‧‧‧執行叢集
1162‧‧‧執行單元
1164‧‧‧記憶體存取單元
1170‧‧‧記憶體單元
1172‧‧‧資料TLB單元
1174‧‧‧資料快取單元
1176‧‧‧L2快取單元
1190‧‧‧核心
1200‧‧‧指令編碼
1202‧‧‧環網路
1204‧‧‧L2快取之本地子集
1206‧‧‧L1快取
1206A‧‧‧L1資料快取
1208‧‧‧純量單元
1210‧‧‧向量單元
1212‧‧‧純量暫存器
1214‧‧‧向量暫存器
1220‧‧‧調和
1222A-B‧‧‧數值轉換
1224‧‧‧複製
1226‧‧‧寫入遮罩暫存器
1228‧‧‧16-寬向量ALU
1300‧‧‧處理器
1302A-N‧‧‧核心
1304A-N‧‧‧快取單元
1306‧‧‧共享快取單元
1308‧‧‧特用邏輯
1310‧‧‧系統代理器單元
1212‧‧‧環
1314‧‧‧整合式記憶體控制器單元
1316‧‧‧匯流排控制器單元
1400、1500、1600‧‧‧系統
1410、1415、1515、1570、1580‧‧‧處理器
1420‧‧‧控制器集線器
1440、1532、1534‧‧‧記憶體
1445、1538、1580‧‧‧共處理器
1450‧‧‧輸入/輸出集線器(IOH)
1460‧‧‧輸入/輸出(I/O)
1490‧‧‧圖形及記憶體控制集線器(GMCH)
1514、1614‧‧‧I/O裝置
1518‧‧‧匯流排橋接器
1522‧‧‧鍵盤/滑鼠
1524‧‧‧音訊I/O
1527‧‧‧通訊裝置
1528‧‧‧資料儲存裝置
1530‧‧‧碼及資料
1572、1582‧‧‧整合式記憶體控制器單元(IMC)
1576、1578、1586、1588、1594、1598‧‧‧點對點(P-P)介面、P2P
1592、1596‧‧‧介面
1590、1090‧‧‧晶片組
1032、1034‧‧‧記憶體
1070、1080‧‧‧處理器
1072、1082‧‧‧控制邏輯(CL)
1076、1078、1086、1088、1094、1098‧‧‧點對點(P-P)介面、P2P
1096‧‧‧介面
1615‧‧‧舊式I/O
802A-N‧‧‧核心
804A-N‧‧‧快取單元
806‧‧‧共享快取單元
810‧‧‧系統代理器單元
814‧‧‧整合式記憶體控制器單元
816‧‧‧匯流排控制器單元
1700‧‧‧單晶片系統
1702‧‧‧互連單元
1710‧‧‧應用處理器
1720‧‧‧共處理器
1730‧‧‧靜態隨機存取記憶體(SRAM)單元
1732‧‧‧直接記憶體存取(DMA)單元
1740‧‧‧顯示單元
1802‧‧‧高階語言
1804‧‧‧X86編譯器
1806‧‧‧X86二進制碼
1808‧‧‧交錯指令集編譯器
1810‧‧‧交錯指令集二進制碼
1812‧‧‧指令轉換器
1814‧‧‧沒有一X86指令集核心之處理器
1816‧‧‧有至少一個X86指令集核心之處理器
本發明係藉附圖之圖式舉例說明但非限制性,附圖中類似的元件符號指示相似的元件及附圖中:圖1例示顯示LZ77編碼方案之一實施例;圖2例示一DEFLATE壓縮演算法之一個實施例;圖3例示用於文字及長度之一第一型霍夫曼編碼之一表示型態;圖4例示依據本發明之一個實施例之一方法;圖5A例示一文字/長度(LL)表;圖5B例示一距離(D)表;圖6例示依據本發明之一個實施例之一方法;圖7例示一執行單元之一架構的一個實施例;圖8例示使用在一半導體晶片上之邏輯電路具現的一處理核心;圖9例示一多核心處理器之一實施例之架構;圖10為依據本發明之一個實施例一暫存器架構之一方塊圖;圖11A為一方塊圖例示依據本發明之實施例有序管線之一實施例及暫存器重新命名亂序議題/執行管線之一實施例兩者之一方塊圖;圖11B為一方塊圖例示依據本發明之實施例欲含括於一處理器內的有序架構核心之一實施例及暫存器重新命名亂序議題/執行架構核心之一實施例兩者之一方塊圖; 圖12A-B例示有序核心架構之一更特定實施例之一方塊圖,該核心將為一晶片中之數個邏輯區塊中之一者(包括同型及/或不同型之其它核心);圖13為依據本發明之實施例一處理器之一方塊圖,該處理器可具有多於一個核心,可具有一整合式記憶體控制器,及可具有積體圖形;圖14為依據本發明之一實施例一範例系統之一方塊圖;圖15為依據本發明之一實施例一第一更特定範例系統之一方塊圖;圖16為依據本發明之一實施例一第二更特定範例系統之一方塊圖;圖17為依據本發明之一實施例一SoC之一方塊圖;圖18為依據本發明之實施例對比一軟體指令轉換器的使用以將於一來源指令集中之二進制指令轉換成於一目標指令集中之二進制指令之一方塊圖;
較佳實施例之詳細說明
為了縮小DEFLATE解碼器之軟體腳印,提出一指令其可在單一指令內完全解碼一DEFLATE編碼符號。為了具現此項技術,設計指令以針對全部DEFLATE編碼符號述及含有轉譯/解碼的表列資訊。於一實施例中,參考圖4,指令:1)接收401指向一DEFLATE編碼位元串流中之特定位 置的一指標;2)從該被指向位置提取402該DEFLATE編碼位元串流之一區段(例如其次16位元);以及3)將該DEFLATE編碼位元串流之該區段應用作為至該表列資訊的一輸入參數403。
表列資訊回送原先資訊之一符號,其係在所接收的編碼位元串流資料之輸入區段內部編碼,及該指令提供此先資訊作為其所得404。於一實施例中,該指令基本上提出由LZ77壓縮階段所產生的資訊串流(亦即交混文字及長度-距離對之一串流)作為其所得。
該指令也遞增該指標以指向在該編碼位元串流內部之未經解碼資料的新穎前導緣,及回送該經更新之指標作為其所得405。然後下個指令接收新指標值作為一輸入運算元以重複處理程序,因而可回送在該串流內部編碼原先資訊之下個符號。最終將解碼整個編碼輸入串流。
圖5A及5B顯示表列資訊之實施例。表列資訊包括如圖5A呈示之一文字/長度(LL)表501及如圖5B呈示之一距離(D)表502。於一實施例中,二表501、502係維持於系統記憶體內。於另一實施例中,兩個表501、502係保持於例如對該指令執行單元的邏輯電路而言為本地且專用的特殊內容可定址記憶體電路,或更通用地為處理器中之其它電路所可用。為求方便,本案其餘部分主要係指一實施例於該處該等CAM電路對該指令執行單元的邏輯電路而言為本地且專用者。
該指令執行單元係經設計以使用該DEFLATE編 碼輸入資訊之該區段作為該查詢參數,而簽發一讀取請求給該LL表501(及然後若查詢LL表「命中」一長度,則為該D表)。該LL表501提供該編碼位元串流之解碼文字及長度成分。該D表502提供該編碼位元串流之解碼距離成分。
LL表501不僅提供解碼資訊,同時也提供一指示:該解碼資訊是否相對應於一文字或一長度。若該解碼資訊為一長度,一旦該長度及其全部額外長度(若有)已經處理,則該指令自動地執行查詢該D表502。此處當解碼一DEFLATE壓縮串流時,一距離自動地接在一長度後方。如此,硬體知曉一旦長度的位元(含其全部額外位元,若有)已經處理,距離位元須即刻接在其後。D表將連同解碼長度回送該指令將回送作為第二結果的解碼距離值。
於一實施例中,於任一表501、502中的各個分錄係與該相對應霍夫曼樹內部的一特定樹節點相對應。記住文字及長度(第一型)霍夫曼樹含有285節點,於一實施例中,因而LL表501含有285分錄。同理,記住該距離霍夫曼樹含有30節點,於一個實施例中,該D表502含有30分錄。兩表之各個分錄左手端含有針對相對應霍夫曼樹節點的編碼值。CAM電路試圖將此資訊匹配由該指令處理的DEFLATE編碼輸入資訊之該區段,及用作為查詢CAM之查詢參數。
於一實施例中,比較較大編碼值(相對應於較不頻繁的原先資料值),較小編碼值(相對應於較頻繁的原先資料值)係列舉於表中較高位置。當該編碼位元串流之一節段(其相對應於呈現給執行單元之輸入資料)係呈現給一表時, 其係與沿該等表之左手端列舉的編碼值作比較。特定分錄上的匹配識別該節段內部的第一編碼值相對應於哪個霍夫曼樹節點。該分錄右端含有含有針對該DEFLATE編碼輸入資訊之該區段之原先未經編碼資料,及提供作為該指令的結果。
該分錄也包括額外資訊,指令硬體用以瞭解文字、長度或距離是否經解碼,以及辨識已解碼資訊與尚待解碼資訊間之邊界駐在該編碼位元串流之位置。
圖5A顯示於LL表501中之一分錄520之一實施例。如圖5觀察,該分錄520包括:1)一第一(左手)欄位511其含有DEFLATE編碼資訊之一特定區段的編碼位元序列(此乃CAM分錄之匹配資訊);2)一第二(右手)欄位512其含有針對一文字之該編碼位元序列之解碼(原先)資訊(若編碼輸入相對應於一文字);3)一第三欄位513其載明編碼位元序列之大小(亦即DEFLATE編碼輸入資訊之該區段中有多少係藉此分錄解碼);4)一第四欄位514指示編碼位元序列相對應於區塊符號之一端一文字或一長度,以及若編碼輸入相對應於一長度,是否適用額外位元;5)一第五欄位515其提供解碼長度(若編碼輸入相對應於一長度);6)一第六欄位516其指示可施用之額外位元數目(若編碼輸入相對應於一長度)。
依據使用圖5之分錄結構之一個實施例,LL表含有只用於長度及文字之一分錄。由於在DEFLATE編碼串流中長度經常係在距離前方,該指令執行「知曉」在LL表中是否出現匹配長度,編碼串流中之下個資訊集合須為一距 離。如此,在從圖5A的表501接收長度之分錄後,指令執行單元接著跳至圖5B中的該D表502以解碼距離資訊。
於該圖5之實施例中,4位元保留用於欄位513(故可載明高達16位元的解碼輸出大小,注意分錄520之欄位513值提供一8值以指示分錄520之編碼輸入511之大小為8位元)及2位元保留用於欄位514(00=EOB;01=文字;10=長度及不施用額外位元;11=長度及施用額外位元);6位元保留用於欄位515其含有一長度之「基本」解碼(亦即無額外位元之一長度的解碼);及4位元保留用於欄位516其載明施用多少額外位元(若欄位514=11)。於一實施例中,組成實際分錄,使得欄位512之內容實體上重疊欄位515及516之內容(例如以文字為例,該分錄中之相同10位元提供解碼文字或以長度為例,6位元基本及4位元額外位元資訊)。
如此,以解碼符號相對應於一長度為例,指令硬體被告知額外位元是否在長度基本後方,及是否有多少額外位元。應答之,若無額外位元,則保有於欄位515的基本長度值相對應於回送作為結果的解碼長度值。若有額外位元,則硬體將從資料串流提取正確數目的額外位元(當其即刻接在編碼資料串流之基本長度後方),及使用額外位元組合從LL表回送的基本長度以決定在結果中回送一最終完整長度。如前文提及,一旦決定一特定長度欲執行第二查詢D表502,欲藉硬體執行如下操作。此處,因一距離接在DEFLATE壓縮中的長度後方,指令邏輯將提取原先呈示給該指令執行單元作為一輸入運算元的在DEFLATE編碼輸入 資訊之該區段中之該位元串流的下個節段。指令執行硬體施用輸入DEFLATE編碼資訊之下個節段給D表502。
於一實施例中,如圖5B可知,D表502中之分錄經格式化為與LL表501中之長度分錄相同/相似。特別,因距離具有基本值,及也可具有額外位元,故D表502中之分錄類似圖5A中分錄257至284。一型式值530指示是否施用額外位元(0=無額外位元;1=額外位元)。若無施用額外位元,則基本解碼距離欄位531提供解碼距離作為結果。若施用額外位元,欄位533通知硬體有關可施用的額外位元數目。然後指令硬體從編碼資料串流提取額外位元,及組合基本值提供作為解碼所得距離。
圖6顯示藉指令執行單元硬體執行前述第一方法。如圖6中所觀察,在接收指向DEFLATE編碼串流之該起始區段的一指標601以作為一輸入運算元(及例如,編碼串流可出現於系統記憶體之一位址)之後,該指令執行單元提取DEFLATE編碼串流之該區段602,及呈示給具有一LL表603的第一CAM電路作為輸入參數。該LL表回送一分錄,其指示該區段之前緣含有一文字或一長度604。
若該前緣含有一文字,則該LL表也回送解碼值用於文字及由該編碼文字所消耗的位元數。指標藉位元數遞增,因而有效地指向在該串流中的尚待解碼資訊之新穎前緣605。已解碼文字及新指標然後回送作為結果606。
若前緣含有一長度,則該LL表回送基本解碼長度及施用多少額外位元(若有)。執行單元遞增指標607以說 明解碼長度基本(6位元)及額外位元(若有)兩者,使得新指標值指向未經編碼資訊的前緣,其如前文討論,指向一距離值。注意額外位元的存在,不僅剛解碼的長度,同時也可能尚待解碼的距離,DEFLATE編碼資訊量可超過原先由指令執行單元提取的DEFLATE資訊之該區段。基本上,若新指標指向需提取的資訊,該指令執行單元將簽發一讀取請求給系統記憶體額外資訊。於一實施例中,由於已知一距離值接在一長度值後方,該執行單元將提取超過該長度的額外位元之資訊進入隨後距離的至少基本值,及據此調整該指標。
在已經從編碼DEFLATE串流提取針對一編碼長度的全部資訊後,是否提取額外DEFLATE編碼資訊,於一第一ROM執行查詢以將藉霍夫曼編碼導入的基本長度及額外位元(若有)轉換成LZ77編碼長度608。
也自動執行查詢D表609(回憶作為長度解碼程序之一部分,指標遞增至距離值的起點607,且可甚至提取編碼DEFLATE資訊超過該長度及其額外位元(若有)以捕捉至少下列編碼距離值的基本成分及據此更新該指標)。DEFLATE編碼距離資訊之該區段然後呈示給D表,其回送解碼距離基本及額外位元數(若有)609。然後,該指令執行單元提取額外DEFLATE編碼資訊以至少涵蓋該額外位元(若有)及據此更新該指標。當獲得編碼基本及額外位元及指標已經更新而指向在距離編碼資訊後方在DEFLATE串流中的下個編碼符號起點時610,執行單元執行查詢板上ROM 以將霍夫曼距離解碼成LZ77距離611。
一旦已得知LZ77長度及距離,執行單元可回送此等值作為結果,連同回送一已更新之指標值其指向在該距離資訊後方的下個符號起點612。
於一實施例中,該指令意圖結合於軟體,該軟體「迴圈」通過該指令之多次迭代重複,於該處該指令係在由緊接前一指令產生作為結果的指標值上操作。於又一實施例中,該迴圈之各次迭代重複含有此處描述的指令之一次執行,接著為記憶體寫入指令以將解碼所得(LZ77資訊)寫入系統記憶體內。下次迴圈使用由前次迴圈產生的指標作為其輸入運算元。一編譯器藉將指令導入在符合此種辦法之建構下的該碼可建構碼。
於又一實施例中,執行單元係設計將旗標寫入控制暫存器空間以指示:1)已回送一長度/距離對作為結果;2)已經遭遇一EOB;3)該指令之任何部分是否需要重播。後述旗標相對應於該指令執行單元之一「部分前進」能力。更明確言之,可能藉指令執行單元進行的記憶體存取可能導致某種錯誤。於此種情況下,該指令執行單元將回送該解碼程序須重新開始的該點之指標值作為其結果。於一實施例中,當指令能夠成功地解碼該長度時,此一指標值可為距離值的起點。
圖7顯示用於執行單元700之邏輯設計之一實施例。如圖7觀察,該邏輯包括狀態機邏輯電路701,其監督/引發前述各種方法之效能。狀態機701接收該輸入指標作為 得自暫存器空間的一輸入運算元。該指令執行單元包括記憶體請求邏輯702以針對系統記憶體中之編碼DEFLATE資訊之其次區段簽發記憶體讀取請求。該指令執行單元也包括第一及第二CAM電路703、704以具現前述LL表及D表。該指令執行單元也包括第一及第二ROM電路705、706以具現前述霍夫曼至LZ77轉換。該執行單元也包括指標更新邏輯電路707以更新符合前文討論之指標值。該執行單元之結果回寫至暫存器空間。狀態機可植入為專用邏輯電路、微碼或其若干組合。
圖8顯示使用半導體晶片上的邏輯電路具現之一處理核心800之一高階略圖。該處理核心包括一管線801。該管線係由多個階段組成,各自設計成在完整執行一程式碼指令所需多步驟方法中執行特定步驟。此等典型地包括至少:1)指令提取及解碼;2)資料提取;3)執行;4)回寫。執行階段執行由一指令所識別的特定操作,該指令係在藉相同指令識別的且在一個先前階段(例如如上步驟2))提取的資料而在先前階段(例如如上步驟1))提取及解碼。所操作的資料典型地係提取自(通用目的)暫存器儲存空間802。在操作完成時產生的新資料也典型地「回寫」至暫存器儲存空間(例如如上步驟4))。
與執行階段相聯結的邏輯電路典型地係由多個「執行單元」或「功能單元」803_1至803_N,其各自設計以執行其本身的獨特操作子集(例如第一功能單元執行整數數學運算,第二功能單元執行浮點指令,第三功能單元 執行載入自/儲存至快取記憶體/記憶體之操作等)。藉全部功能單元執行的全部操作集合相對應於由處理核心800所支援的該「指令集」。圖7之邏輯設計700可結合於執行階段的多個功能單元中之一者以便實現具有前述指令執行能力的一核心。
圖9顯示多核心處理器900之一實施例的架構。如於圖9觀察,該處理器包括:1)多個處理核心901_1至901_N;2)一互連網路902;3)一最末層級快取系統903;4)一記憶體控制器904及一I/O集線器905。該等處理核心各自含有用以執行程式碼指令的一或多個指令執行管線。此等指令執行管線中之任一者或全部可包括如上討論的用以執行DEFLATE解碼之一執行單元。該互連網路902用以將核心901_1至901_N各自彼此互連以及互連其它組件903、904、905。最末層級快取系統903用作為在指令及/或資料被逐出至系統記憶體908之前在該處理器中之一最末層快取。
記憶體控制器904讀/寫資料及指令自/至系統記憶體908。I/O集線器905管理處理器與「I/O」裝置(例如非依電性儲存裝置及/或網路介面)間之通訊。埠906植基於互連網路902以鏈接多個處理器,因而可實現具有多於N個核心的系統。圖形處理器907執行圖形運算。電力管理電路(圖中未顯示)管理處理器整體(「封裝體層面」)的效能及電力態以及於該處理器諸如核心901_1至901_N、圖形處理器907等內部的個別單元之效能及電力態。為求方便其它有意義的功能區塊(例如鎖相迴路(PLL)電路)並未描繪於圖9。
前文討論教示之方法可使用程式碼進行,諸如機器可執行指令其造成一機器(諸如「虛擬機器」、配置於半導體晶片上之通用CPU處理器或配置於半導體晶片上之特用CPU處理器)以發揮某些功能。另外,此等功能可藉含有有線邏輯用以發揮功能的特定硬體組件執行,或藉規劃電腦組件及客製硬體組件之任一項組合執行。
一儲存媒體可用以儲存程式碼。儲存程式碼的一儲存媒體可實施但非限制性,一或多個記憶體(例如一或多個快閃記憶體、隨機存取記憶體(靜態、動態或其它))、光碟、CD-ROM、DVD ROM、EPROM、EEPROM、磁卡或光卡或適用以儲存電子指令之其它型式的機器可讀取媒體。程式碼也可藉於一傳播媒體內實施的資料信號(例如透過一通訊鏈路(例如網路連結))而從一遠端電腦(例如伺服器)下載至請求電腦(例如客端裝置)。
於前文說明書中,已經參考其特定具體實施例描述本發明。但顯然不背離如隨附之申請專利範圍各項陳述的本發明之廣義精髓及範圍可對其做出各種修改及變化。據此,說明書及圖式須視為例示性而非限制性意義。
401-405‧‧‧方塊

Claims (21)

  1. 一種處理器,其包含:一指令執行管線,其具有:一指令提取單元,用以提取及解碼一指令;一執行單元,用以執行指令,該執行單元包含一狀態機及內容可定址記憶體(CAM)電路,該狀態機用以接收指向DEFLATE編碼資訊之一串流的一指標、提取該DEFLATE編碼資訊之一區段、以及將該DEFLATE編碼資訊之該區段應用至該CAM以獲得解碼的DEFLATE資訊。
  2. 如請求項1之處理器,其中該CAM含有用以解碼文字及長度的資訊。
  3. 如請求項2之處理器,其中該資訊指示出對於一特定DEFLATE編碼長度係施用多少額外位元。
  4. 如請求項2之處理器,其中該CAM中之分錄指示其等是否含有針對一文字之資訊。
  5. 如請求項2之處理器,其中該CAM中之分錄指示其等是否含有針對一長度之資訊。
  6. 如請求項1之處理器,其中該執行單元含有一第二CAM,其含有用以解碼一距離的資訊。
  7. 如請求項6之處理器,其中該第二CAM之分錄指示額外位元是否施用。
  8. 如請求項1之處理器,其中該執行單元回送一更新指標 值。
  9. 如請求項1之處理器,其中若該指令僅部分地完成該指令的執行,則該執行單元將寫至控制暫存器空間以指示部分的完成。
  10. 如請求項9之處理器,其中即便該執行僅部分地完成該指令的執行,該執行單元將回送一更新指標。
  11. 一種方法,其包含:提取一指令;解碼一指令;執行該指令,其中該指令之該執行包括:接收指向DEFLATE編碼資訊之一串流的一指標;提取該DEFLATE編碼資訊之一區段;及將該DEFLATE編碼資訊之該區段應用至該CAM以獲得一解碼的DEFLATE資訊。
  12. 如請求項11之方法,其中該CAM含有用以解碼文字及長度的資訊。
  13. 如請求項12之方法,其中該資訊指示出對於一特定DEFLATE編碼長度係施用多少額外位元。
  14. 如請求項12之方法,其中於該CAM中之分錄指示其等是否含有針對一文字之資訊。
  15. 如請求項12之方法,其中於該CAM中之分錄指示其等是否含有針對一長度之資訊。
  16. 如請求項11之方法,其中該執行單元含有一第二CAM,其含有用以解碼一距離之資訊。
  17. 一種具有指令之機器可讀取媒體,該等指令當藉由一計算系統處理時導致一方法被執行,該方法包含:藉下列方式建構軟體碼:導入一第一指令,其接受指向DEFLATE編碼資訊之一指標、及解碼該DEFLATE編碼資訊之一區段以產生DEFLATE資訊之一解碼區段以及一更新指標,該更新指標說明該解碼區段的大小;及導入一迴圈操作以使用該更新指標作為一輸入運算元來重新執行該指令。
  18. 如請求項16之機器可讀取媒體,其中該建構進一步包含在該指令及該迴圈操作之間導入一記憶體寫入指令以將該解碼區段寫至系統記憶體。
  19. 如請求項16之機器可讀取媒體,其中該建構進一步包含導入碼以處理該指令之一部分的完成。
  20. 一種具有指令之機器可讀取媒體,該等指令當藉由一計算系統處理時導致一方法被執行,該方法包含:執行一第一指令,其接受指向DEFLATE編碼資訊之一指標、及解碼該DEFLATE編碼資訊之一區段以產生DEFLATE資訊之一解碼區段以及一更新指標,該更新指標說明該解碼區段的大小;及執行一迴圈操作以重新執行與該指令相同型式之一第二指令,其使用得自該同型式的一先前指令之個別的更新指標作為一輸入運算元。
  21. 如請求項19之機器可讀取媒體,其進一步包含在該第一 指令的執行之後執行一記憶體寫入指令以將DEFLATE資料的該解碼區段寫至系統記憶體。
TW103121589A 2013-06-29 2014-06-23 用以加速壓縮及解壓縮操作之設備與方法 TWI531971B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/931,877 US8947270B2 (en) 2013-06-29 2013-06-29 Apparatus and method to accelerate compression and decompression operations

Publications (2)

Publication Number Publication Date
TW201506785A true TW201506785A (zh) 2015-02-16
TWI531971B TWI531971B (zh) 2016-05-01

Family

ID=52116847

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103121589A TWI531971B (zh) 2013-06-29 2014-06-23 用以加速壓縮及解壓縮操作之設備與方法

Country Status (8)

Country Link
US (2) US8947270B2 (zh)
EP (1) EP3014421B1 (zh)
KR (1) KR101764627B1 (zh)
CN (1) CN105264490B (zh)
BR (1) BR112015030122A2 (zh)
RU (1) RU2629440C2 (zh)
TW (1) TWI531971B (zh)
WO (1) WO2014209641A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI586113B (zh) * 2015-05-11 2017-06-01 上海兆芯集成電路有限公司 利用預先霍夫曼編碼決定對匹配字串或背向指標執行霍夫曼編碼程序之硬體資料壓縮器

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9489199B2 (en) 2012-12-28 2016-11-08 Intel Corporation Vector compare instructions for sliding window encoding
US8947270B2 (en) * 2013-06-29 2015-02-03 Intel Corporation Apparatus and method to accelerate compression and decompression operations
US9287893B1 (en) 2015-05-01 2016-03-15 Google Inc. ASIC block for high bandwidth LZ77 decompression
US9697899B1 (en) * 2015-12-21 2017-07-04 Intel Corporation Parallel deflate decoding method and apparatus
US10177782B2 (en) 2015-12-26 2019-01-08 Intel Corporation Hardware apparatuses and methods for data decompression
US10977221B2 (en) 2017-10-20 2021-04-13 Hewlett Packard Enterprise Development Lp Encoding of data formatted in human-readable text according to schema into binary
CN109116146A (zh) * 2018-07-27 2019-01-01 南京瑞贻电子科技有限公司 一种具有自动化删除无价值数据的录波分析仪
CN111381877B (zh) * 2018-12-28 2022-12-02 上海寒武纪信息科技有限公司 Decompress指令译码方法、数据处理方法、译码器及数据处理装置
US10630312B1 (en) * 2019-01-31 2020-04-21 International Business Machines Corporation General-purpose processor instruction to perform compression/decompression operations
US10831497B2 (en) * 2019-01-31 2020-11-10 International Business Machines Corporation Compression/decompression instruction specifying a history buffer to be used in the compression/decompression of data
US11108406B2 (en) 2019-06-19 2021-08-31 Intel Corporation System, apparatus and method for dynamic priority-aware compression for interconnect fabrics
CN110545107B (zh) * 2019-09-09 2022-12-20 飞天诚信科技股份有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN115801019B (zh) * 2023-02-08 2023-05-12 广州匠芯创科技有限公司 并行加速lz77解码方法及其装置、电子设备

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298367B1 (en) 1998-04-06 2001-10-02 Advanced Micro Devices, Inc. Floating point addition pipeline including extreme value, comparison and accumulate functions
US6691305B1 (en) * 1999-11-10 2004-02-10 Nec Corporation Object code compression using different schemes for different instruction types
GB0001707D0 (en) 2000-01-25 2000-03-15 Btg Int Ltd Data compression having more effective compression
GB0001711D0 (en) 2000-01-25 2000-03-15 Btg Int Ltd Data compression having improved compression speed
US7020766B1 (en) 2000-05-30 2006-03-28 Intel Corporation Processing essential and non-essential code separately
US6650261B2 (en) * 2001-09-06 2003-11-18 Xerox Corporation Sliding window compression method utilizing defined match locations
US7532358B2 (en) * 2002-02-27 2009-05-12 Hewlett-Packard Development Company, L.P. Hardware implemented loss-less page data compressor/decompressor
CA2375815A1 (en) 2002-03-11 2003-09-11 Catena Networks Canada Inc. A system for performing a-law and u-law encoding and decoding
US7353233B1 (en) * 2004-04-16 2008-04-01 Majesco Entertainment Company Apparatus and method for real-time decompression of data streams on limited-resource embedded devices
US7730282B2 (en) 2004-08-11 2010-06-01 International Business Machines Corporation Method and apparatus for avoiding data dependency hazards in a microprocessor pipeline architecture using a multi-bit age vector
US7307552B2 (en) * 2005-11-16 2007-12-11 Cisco Technology, Inc. Method and apparatus for efficient hardware based deflate
JP4874162B2 (ja) 2007-04-27 2012-02-15 ルネサスエレクトロニクス株式会社 データ展開装置及びデータ展開方法
WO2009005758A2 (en) * 2007-06-29 2009-01-08 Rmi Corporation System and method for compression processing within a compression engine
US7538695B2 (en) * 2007-06-29 2009-05-26 Rmi Corporation System and method for deflate processing within a compression engine
US9362948B2 (en) * 2008-02-14 2016-06-07 Broadcom Corporation System, method, and computer program product for saving and restoring a compression/decompression state
JP2009012324A (ja) * 2007-07-05 2009-01-22 Konica Minolta Business Technologies Inc 光書込装置及び画像形成装置
US8046532B2 (en) * 2007-08-27 2011-10-25 Comtech Ef Data Corp. Content-addressable memories and state machines for performing three-byte matches and secondary matches, and for providing error protection
US7872598B2 (en) * 2008-12-10 2011-01-18 Intel Corporation Accelerated decompression
US8131976B2 (en) 2009-04-13 2012-03-06 International Business Machines Corporation Tracking effective addresses in an out-of-order processor
US8125357B1 (en) * 2010-03-23 2012-02-28 Sandia Corporation Deflate decompressor
US8456331B2 (en) * 2011-04-15 2013-06-04 Cavium, Inc. System and method of compression and decompression
RU2488960C2 (ru) * 2011-06-17 2013-07-27 Государственное образовательное учреждение высшего профессионального образования Самарский государственный технический университет Способ компрессии-декомпрессии данных и устройство для его осуществления
US8947270B2 (en) * 2013-06-29 2015-02-03 Intel Corporation Apparatus and method to accelerate compression and decompression operations

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI586113B (zh) * 2015-05-11 2017-06-01 上海兆芯集成電路有限公司 利用預先霍夫曼編碼決定對匹配字串或背向指標執行霍夫曼編碼程序之硬體資料壓縮器

Also Published As

Publication number Publication date
EP3014421B1 (en) 2020-12-16
KR20160003732A (ko) 2016-01-11
EP3014421A4 (en) 2017-05-03
RU2629440C2 (ru) 2017-08-29
US9294123B2 (en) 2016-03-22
EP3014421A1 (en) 2016-05-04
CN105264490B (zh) 2018-07-24
WO2014209641A1 (en) 2014-12-31
US20150006853A1 (en) 2015-01-01
CN105264490A (zh) 2016-01-20
US20150256195A1 (en) 2015-09-10
KR101764627B1 (ko) 2017-08-03
TWI531971B (zh) 2016-05-01
US8947270B2 (en) 2015-02-03
BR112015030122A2 (pt) 2017-07-25
RU2015151114A (ru) 2017-06-01

Similar Documents

Publication Publication Date Title
TWI531971B (zh) 用以加速壓縮及解壓縮操作之設備與方法
CN108292222B (zh) 用于数据解压缩的硬件装置和方法
US6691305B1 (en) Object code compression using different schemes for different instruction types
JP6381546B2 (ja) 多バイト・フレームのパイプライン化圧縮のための方法、符号化データ・ストリームへの高帯域圧縮のための装置、およびコンピュータ・プログラム製品
CN108028665B (zh) 用于使用硬件和软件进行压缩的系统、方法和装置
JP2015505432A (ja) データ処理システムにおいて、可変長符号化データ・ストリームを復号するための方法、コンピュータ・プログラム、および、装置
US8847797B1 (en) Byte-aligned dictionary-based compression and decompression
US10666288B2 (en) Systems, methods, and apparatuses for decompression using hardware and software
JP2017538213A (ja) アウトオブオーダーハードウェアソフトウェア協調設計プロセッサにおいてスタック同期命令を用いてプレディケート値のスタックを実装し維持する方法および装置
Weißenberger et al. Massively parallel Huffman decoding on GPUs
US10083034B1 (en) Method and apparatus for prefix decoding acceleration
JP2019208203A (ja) 浮動小数点データを圧縮するためのシステム
US10230392B2 (en) Techniques for parallel data decompression
CN104811209A (zh) 一种抗最长匹配检测的压缩文件数据嵌入方法及装置
US9287893B1 (en) ASIC block for high bandwidth LZ77 decompression
US10069512B2 (en) Systems, methods, and apparatuses for decompression using hardware and software
KR20220091361A (ko) 내용 어드레싱 가능 데이터 구조들을 사용한 효율적인 디플레이트 압축 해제 방법 및 장치
US9558109B2 (en) Method and apparatus for flash memory arithmetic encoding and decoding