TWI655580B - 基於散列的加速壓縮方法以及使用此方法的裝置 - Google Patents
基於散列的加速壓縮方法以及使用此方法的裝置 Download PDFInfo
- Publication number
- TWI655580B TWI655580B TW106144377A TW106144377A TWI655580B TW I655580 B TWI655580 B TW I655580B TW 106144377 A TW106144377 A TW 106144377A TW 106144377 A TW106144377 A TW 106144377A TW I655580 B TWI655580 B TW I655580B
- Authority
- TW
- Taiwan
- Prior art keywords
- hash
- entity
- matching
- length
- string
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/065—Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3091—Data deduplication
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6023—Parallelization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4498—Finite state machines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Software Systems (AREA)
Abstract
本發明的實施例提出一種基於散列的加速壓縮方法,實施於微處理器之壓縮加速器中,至少包含以下步驟:從資料緩存器提取待壓縮字符串;儲存相應於待壓縮字符串的多個實體於中介緩存器,其中,每一實體關聯於子字符串;為每一實體發送散列請求給散列匹配器,並且依據散列匹配器傳來的第一回覆發送資料請求給最長字串匹配器,並且依據最長字串匹配器傳來的第二回覆更新實體的狀態、匹配長度及匹配偏移量;以及按照實體關聯的子字符串在待壓縮字符串中的原始順序,並依據每一實體的狀態、匹配長度及匹配偏移量輸出結果給格式化器。
Description
本發明關連於一種微處理器技術,特別是一種基於散列的加速壓縮方法以及使用此方法的裝置。
對於壓縮加速器(compression accelerator)來說,最複雜的部分在於進行最長前綴字符串匹配(longest-prefix string matching),而最長前綴字符串匹配方法通常可歸類為:基於內容可尋址內存(CAM-,Content Addressable Memory-based);及基於散列(hash-based)二種。基於散列的字符串匹配通常都藉由降低散列鏈長度以及/或使用低衝突函數來進行優化,而上述優化均為軟件算法上的優化。然而,軟件的執行效能往往劣於專屬硬件的執行效能。因此,需要一種基於散列的加速壓縮方法以及使用此方法的裝置,用以克服上述缺陷。
本發明的實施例提出一種基於散列的加速壓縮方法,實施於微處理器之壓縮加速器中,至少包含以下步驟:從資料緩存器提取待壓縮字符串;儲存相應於待壓縮字符串的多個實體於中介緩存器,其中,每一實體關聯於子字符串,包含關聯的子字符串的狀態、匹配長度及匹配偏移量;為每一實體
發送散列請求給散列匹配器,依據散列匹配器傳來的第一回覆發送資料請求給最長字串匹配器,並且依據最長字串匹配器傳來的第二回覆更新實體的狀態、匹配長度及匹配偏移量;以及按照實體關聯的子字符串在待壓縮字符串中的原始順序,並依據每一實體的狀態、匹配長度及匹配偏移量輸出結果給格式化器,使得格式化器據以壓縮待壓縮字符串。
本發明的實施例提出一種基於散列的加速壓縮裝置,至少包含:中介緩存器;及有限狀態機。中介緩存器儲存相應於資料緩存器中的待壓縮字符串的多個實體,其中,每一實體關聯於子字符串,包含關聯的子字符串的狀態、匹配長度及匹配偏移量。有限狀態機耦接於中介緩存器,為每一實體發送散列請求給散列匹配器,並且依據散列匹配器傳來的第一回覆發送資料請求給最長字串匹配器,並且依據最長字串匹配器傳來的第二回覆更新實體的狀態、匹配長度及匹配偏移量;以及按照實體關聯的子字符串在待壓縮字符串中的原始順序,並依據每一實體的狀態、匹配長度及匹配偏移量輸出結果給格式化器,使得格式化器據以壓縮待壓縮字符串。
本發明的實施例提出一種基於散列的加速壓縮裝置,至少包含:有限狀態機;及散列匹配器。散列匹配器耦接於有限狀態機,包含:多個散列函數;選擇器,耦接於散列函數;以及對應於多個散列函數的多個匹配路徑,耦接至選擇器。多個散列函數並行接收有限狀態機傳來的多個子字符串,並將每一子字符串映射成散列索引,及依據散列索引驅動選擇器以連接至匹配路徑中之一者。當連接的匹配路徑判定散列表
不包含子字符串時,傳送不匹配的信息給有限狀態機。當連接的匹配路徑判定散列表包含子字符串時,傳送匹配的信息及散列表中相應於子字符串的匹配偏移量給有限狀態機。
本發明的前述有限狀態機可以在同一時鐘週期同時輸出多個散列請求分別給多個散列函數並行進行散列匹配,並且藉由本發明之中介緩存器記錄各實體的狀態、匹配長度及匹配偏移量,使得亂序執行散列匹配和最長匹配后的實體能夠按照待壓縮字符串中的原始順序退卻以進行壓縮。
10‧‧‧微處理器
110‧‧‧末級快取
130‧‧‧加速器接口
150_1~150_i‧‧‧壓縮加速器
170_1~170_j‧‧‧處理器核心
20‧‧‧壓縮加速器
210‧‧‧資料緩存器
220‧‧‧提取單元
230‧‧‧中介緩存器
240‧‧‧有限狀態機
250‧‧‧散列匹配器
260‧‧‧最長字串匹配器
270‧‧‧格式化器
280‧‧‧預取緩存器
S31‧‧‧空閒狀態
S32‧‧‧散列請求狀態
S33‧‧‧資料請求狀態
S34‧‧‧不匹配狀態
S36‧‧‧完全匹配狀態
S37‧‧‧部分匹配狀態
S410~S470‧‧‧方法步驟
S510~S577‧‧‧方法步驟
S610~S695‧‧‧方法步驟
S710~S770‧‧‧方法步驟
810_1~810_4‧‧‧散列函數
830‧‧‧選擇器
850_1~850_4‧‧‧先進先出佇列
870_1~870_4‧‧‧匹配器
890_1~890_4‧‧‧記憶庫
910_1~910_3‧‧‧比較器
930‧‧‧仲裁器
S1010~S1077‧‧‧方法步驟
第1圖係依據本發明實施例之微處理器的系統架構圖。
第2圖係依據本發明實施例之壓縮加速器的方塊圖。
第3圖係依據本發明實施例之狀態圖。
第4圖係依據本發明實施例之散列請求程序的流程圖。
第5圖係依據本發明實施例之散列回覆處理程序的流程圖。
第6圖係依據本發明實施例之資料回覆處理程序的流程圖。
第7圖係依據本發明實施例之退卻處理程序的流程圖。
第8圖係依據本發明實施例之散列匹配器的方塊圖。
第9圖係依據本發明實施例之匹配器的方塊圖。
第10圖係依據本發明實施例之散列匹配方法的流程圖。
以下說明係為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,係用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、"第二"、"第三"等詞係用來修飾權利要求中的元件,並非用來表示之間具有優先權順序,先行關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
第1圖係依據本發明實施例之微處理器的系統架構圖。微處理器10可包含多個處理器核心170_1至170_j及多個加速器(Accelerator)150_1至150_i,i、j為整數,隨著不同設計需求而有不同。加速器150_1至150_i舉例而言可以是加速功能單元(AFU,Accelerator Functional Units)。處理器核心170_1至170_j中之任一者包含的組件都涉及電腦指令的執行,包括算術邏輯單元(ALU,Arithmetic Logic Unit)、浮點運算單元(FPU,Floating Point Unit)、一級快取(L1 Cache)及二級快取(L2 Cache)。每一處理器核心採用指令周期(有時亦稱提取-解碼-執行周期),作為基本操作流程。此流程用以讓處理器核心從記憶體取得程式指令,判定此指令指示進行何種操作,並且執行這些操作。加速器150_1至150_n可執行不同功能,並透過加速器接口(Accelerator Interface)130連接至末級快取(Last-level Cache)110,用以與處理器核心170_1至170_j通過虛擬位址
(virtual address)進行數據交換。加速器150_1至150_i中之任一者可協助處理器核心170_1至170_j以更有效率地方式執行特定功能,上述特定功能包括例如壓縮,加解密或正則匹配等運算量較大的功能,從而減輕處理器核心170_1至170_j的工作負擔。加速器150_1至150_i中之一者可為壓縮加速器(compression accelerator),用以完成字符串壓縮功能。
第2圖係依據本發明實施例之壓縮加速器的方塊圖。壓縮加速器20包含資料緩存器210,長度可為1024M字節(bytes),用以儲存原始字符串(raw string)及壓縮後字符串(compressed string),值得注意的是,在其它實施例中,資料緩存器210可以位於例如圖1的末級快取110中,即位於壓縮加速器20外部。提取單元220每次向資料緩存器210發出預取請求(lookahead request),用以從資料緩存器210提取固定長度的待壓縮的原始字符串,例如16字節,並儲存至預取緩存器(look ahead buffer)280中,作為進行字符串壓縮的對象。該待壓縮字符串更按序存儲至中介緩存器(intermediary buffer)230中,中介緩存器230儲存關聯於每一個字符的散列及最長字串匹配的相關運算信息。詳細來說,中介緩存器230劃分出多段記憶空間,每段可用來儲存一個實體(instance)的信息。每個實體包含數個欄位,用以紀錄索引、字符、狀態、匹配偏移量(matched offset)及匹配長度(matched length)等。由於壓縮加速器20包含許多並行運算,使得相應於每一個實體的運算時間(或稱時鐘周期數目)無法預測,也就是說,相應於較後實體的運算結果可能早於相應於較前實體的運算結果。因此,本發明透過中介
緩存器230讓所有實體的計算結果的輸出順序相符於待壓縮的原始字符的原始順序,據以完成最終的最長字串匹配。中介緩存器230更包含發布指針(issuance pointer)及退卻指針(retirement pointer),分別指向下一個需要發出散列請求及退卻的實體。於初始時,提取單元220從資料緩存器210的待壓縮的原始字符串提取多個字符並依序寫入中介緩存器230的實體。有限狀態機(FSM,Finite-State Machine)240可發出散列請求(hash request)給散列匹配器(hash matcher)250,用以取得相應於一個實體且長度為n的字符串是否可匹配散列表(hash table)中的一個散列鍵的信息。於一些實施例中,n為3或以上。有限狀態機240另可針對一個實體發出資料請求(data request)給最長字串匹配器(longest string matcher)260,用以取得相應於一個實體的字符串以後可匹配到資料緩存器210的滑動窗框(sliding window)中的原始字符串的長度。應注意的是,滑動窗框中的原始字符串位於中介緩存器230中的待壓縮的原始字符串之前,即滑動窗框中的原始字符串是已經被壓縮過的字符串。有限狀態機240可於可程式邏輯裝置(PLD,Programmable Logic Device)、可程式序控制器(PLC,Programmable Logic Controller)、場域可程式化閘陣列(FPGA,Field Programmable Gate Array)或特殊應用積體電路(ASIC,application-specific integrated circuit)中實現固定功能(fixed functions)來完成本發明實施例中描述的控制。
第3圖係依據本發明實施例之狀態圖。初始時,提取單元220從資料緩存器210的原始字符串提取固定長度的待
壓縮的字符串並依序儲存其中的字符至中介緩存器230的實體。舉例來說,提取單元220從資料緩存器210提取字符串”abcdxyzefgaf”並依序儲存其中的字符至中介緩存器230。初始時,每個實體的狀態為空閒狀態(idle state)S31,可表示為虛無值(null value)。表1顯示實體的初始結果:
其中,符號“/”代表虛無值。
基於散列的加速壓縮方法包含數個程序:散列請求;散列回覆處理;資料回覆處理;及退卻處理。散列請求及退卻處理為並行處理程序,並且擁有較高的優先級。第4圖係
依據本發明實施例之散列請求程序的流程圖。於每一個時鐘周期,有限狀態機240取得發布指針指向的實體(步驟S410),為取得的實體發出散列請求給散列匹配器250(步驟S430),更新此實體的狀態為”HASH_ISSUED”以指出此實體進入散列請求狀態S32(步驟S450),以及更新發布指針以指向下一個實體(步驟S470)。散列請求包含從此實體開始且長度為n的連續實體的字符,例如,參考表1,相應於實體0的散列請求包含字符串”abc”,相應於實體1的散列請求包含字符串”bcd”,依此類推。字符串”abc”及”bcd”可稱為字符串”abcdxyzefgaf”的子字符串(substring)。
第5圖係依據本發明實施例之散列回覆處理程序的流程圖。當有限狀態機240從散列匹配器250接收到相應於一個實體的回覆後(步驟S510),判斷回覆中是否包含匹配的信息(步驟S530)。當回覆中包含不匹配的信息時(步驟S530中”否”的路徑),更新此實體的狀態為”NM”以指出此實體進入不匹配狀態S34(步驟S550)。從散列匹配器250接收到的回覆中包含先前請求的字符串,用以讓有限狀態機240辨認此回覆相應於哪個實體。當一個實體進入不匹配狀態S34時,有限狀態機240便可於將來的時鐘周期回收此實體的記憶空間給將來產生的實體使用。當回覆中包含匹配的信息時(步驟S530中”是”的路徑),有限狀態機240從回覆中取得匹配偏移量(步驟S571),發出相應於此實體的資料請求給最長字串匹配器260,其中,資料請求包含上述匹配偏移量,用以讓最長字串匹配器260搜尋中介緩存器230中相應於此實體的字符串開始的字符串及資料
緩存器210的滑動窗框(sliding window)中從該匹配偏移量開始的字符串兩者之間的最大匹配長度(步驟S573),更新此實體的匹配長度為n(步驟S575),以及更新此實體的狀態為”DATA_ISSUED”以指出此實體進入資料請求狀態S33(步驟S577)。舉例來說,經過7個時鐘周期後,有限狀態機240依據散列匹配器250及最長字串匹配器260的回覆結果將中介緩存器230的實體狀態更新為表2:
表2顯示相應於實體0至6的散列請求已經發出給散列匹配器250。有限狀態機240已經從散列匹配器250接收到相應於實體
0、2至3及5至6的回覆,其中包含沒有匹配的信息,即均為NM(No Match),即是說實體0、2至3及5至6對應的字符串”abc””cdx””dxy””yze””zef”均未在散列匹配器250中匹配,即均未在資料緩存器210的滑動窗框(sliding window)中的原始字符串出現過。有限狀態機240已經從散列匹配器250接收到相應於實體4的回覆,其中包含匹配的信息,以及已經發出資料請求給最長字串匹配器260但尚未接收到任何回覆,即實體4對應的字符串”xyz”在散列匹配器250中匹配,即字符串”xyz”在資料緩存器210的滑動窗框中的原始字符串出現過;有限狀態機240取得實體4對應的字符串”xyz”在滑動窗框中的匹配偏移量offset,並發出包含該匹配偏移量offset的資料請求給最長字串匹配器260,用以搜尋中介緩存器230中相應於實體4的字符串”xyz”開始的字符串及資料緩存器210的滑動窗框中從偏移量1000開始的字符串兩者之間的最大匹配長度。此外,有限狀態機240尚未從散列匹配器250接收到相應於實體1的任何回覆。值得注意的是,在其它實施中,有限狀態機240從回覆中取得匹配偏移量(步驟S571)後直接發出相應於此實體的資料請求給最長字串匹配器260,並不會更新中介緩存器230中此實體的內容,即不會執行步驟S575和步驟S577。
第6圖係依據本發明實施例之資料回覆處理程序的流程圖。當有限狀態機240從最長字串匹配器260接收到相應於一個實體的回覆後(步驟S610),從回覆中取得最長字串匹配器260計算出的長度l(步驟S630),以及判斷長度l是否小於最大匹配長度max_match(步驟S650)。當長度l小於最大匹配長度
max_match時(步驟S650中”是”的路徑),更新此實體的狀態為”PM”以指出此實體進入部分匹配狀態S37(步驟S671),以及更新此實體的匹配長度len=len+l(步驟S673)。當一個實體進入部分匹配狀態S37時,有限狀態機240便可於將來的時鐘周期回收此實體的記憶空間給將來產生的實體使用。當長度l不小於(通常為等於)最大匹配長度max_match時(步驟S650中”否”的路徑),更新此實體的狀態為”FM”以指出此實體進入完全匹配狀態S36(步驟S691),更新此實體的匹配長度為len=len+max_match(步驟S693),以及發出相應於此實體的另一資料請求給最長字串匹配器260,用以繼續後續的字串比對(步驟S695)。值得注意的是,在第5圖如果不執行更新中介緩存器230中實體的內容的步驟,則第6圖中更新匹配長度時len還要加上實體所對應的子字符串的長度n(例如n=3)。
於一個時鐘周期中,有限狀態機240除了執行散列請求程序,更執行退卻處理程序。第7圖係依據本發明實施例之退卻處理程序的流程圖。於每一個時鐘周期,有限狀態機240取得退卻指針指向的實體的狀態(步驟S710),判斷中介緩存器230中此實體的狀態是否為不匹配狀態(步驟S731)。當此實體的狀態是不匹配狀態時(步驟S731中”是”的路徑),輸出此實體的字符給格式化器270,使得格式化器270可據以壓縮預取緩存器280中的待壓縮字符串(步驟S733),更新此實體的狀態為虛無值並更新退卻指針以指向下一個實體,用以退卻此實體,使得此記憶空間可提供給將來推入的實體(步驟S770)。當此實體的狀態不是不匹配狀態時(步驟S731中”否”的路徑),判斷中介
緩存器230中此實體的狀態是否為部分匹配狀態(步驟S751)。當此實體的狀態是部分匹配狀態時(步驟S751中”是”的路徑),輸出此實體的匹配偏移量及匹配長度給格式化器270,使得格式化器270可據以壓縮預取緩存器280中的待壓縮字符串(步驟S753),更新此實體的狀態為虛無值並更新退卻指針以指向下一個實體,用以退卻此實體,使得此記憶空間可提供給將來推入的實體(步驟S770)。格式化器270可使用LZ4、LZO(Lempel-Ziv-Oberhumer)、DEFLATE等演算法來壓縮待壓縮的原始字符串。當此實體的狀態為匹配但不是部分匹配狀態時(步驟S751中”否”的路徑),即為完全匹配時,則如第6圖S691所述,有限狀態機240會發出相應於此實體的另一資料請求給最長字串匹配器260用以繼續後續的字串比對,而並不會執行該實體的退卻程序,在第7圖中步驟S751中”否”的路徑會返回步驟S710繼續等待該實體狀態的變化。概括之,有限狀態機240在第7圖之執行退卻處理程序時,是按照中介緩存器230中各個實體關聯的子字符串在待壓縮字符串中的原始順序(例如退卻指針依照的順序),並依據每一實體在中介緩存器230中對應狀態、匹配長度及匹配偏移量(如後續表2至表5所示)輸出結果給格式化器270,使得格式化器270據以壓縮待壓縮的原始字符串。後面會配合表2至表5詳述之。
接續表2的範例。假設於時鐘周期c7,發布指針指向實體7,退卻指針指向實體0,最大匹配長度max_match預設為16,且有限狀態機240從最長字串匹配器260接收到相應於實體4的回覆:參考第4圖。於此時鐘周期,有限狀態機240取得
發布指針指向的實體7(步驟S410),為實體7發出散列請求給散列匹配器250,其中包含字符串”efg”(步驟S430),更新實體7的狀態為”HASH_ISSUED”以指出實體7進入散列請求狀態S32(步驟S450),以及更新發布指針以指向實體8(步驟S470)。參考第7圖。有限狀態機240取得退卻指針指向的實體0的狀態(步驟S710)。因為實體0的狀態為不匹配狀態,有限狀態機240輸出實體0的字符”a”給格式化器270,使得格式化器270可據以壓縮預取緩存器280中的待壓縮的原始字符串(步驟S733),因為實體0的狀態為不匹配狀態,這裡字符”a”保留不做壓縮動作;並且讓資料緩存器210的中滑動窗框向前移動一個字符,即讓資料緩存器210的中的字符”a”滑動進入其滑動窗框中成為新字典的一部分,更新實體0的狀態為虛無值”/”並更新退卻指針以指向實體1(步驟S770)。參考第6圖。於此時鐘周期,有限狀態機240從相應於實體4的回覆中取得最長字串匹配器260計算出的長度l=2(步驟S630)。因為l<max_match,更新實體4的狀態為”PM”以指出實體4進入部分匹配狀態S37(步驟S671),以及更新實體4的匹配長度len=3+2=5(步驟S673)。中介緩存器230的實體狀態更新為表3:
接續表3的範例。假設於時鐘周期c8,有限狀態機240從散列匹配器250接收到相應於實體1的回覆:參考第4圖。於此時鐘周期,有限狀態機240取得發布指針指向的實體8(步驟S410),為實體8發出散列請求給散列匹配器250,其中包含字符串”fga”(步驟S430),更新實體8的狀態為”HASH_ISSUED”以指出實體8進入散列請求狀態S32(步驟S450),以及更新發布指針以指向實體9(步驟S470)。參考第7圖。有限狀態機240取得退卻指針指向的實體1的狀態(步驟S710)。因為實體1的狀態為散列請求狀態,有限狀態機240不做任何處理。參考第5圖。於此時鐘周期,有限狀態機240從散列匹配器250接收到相應於實體1的回覆(步驟S510)。因為回覆中包含不匹配的信息,更新實體1的狀態為”NM”以指出實體1進入不匹配狀態S34(步驟S550)。中介緩存器230的實體狀態更新為表4:
接續表4的範例。假設於時鐘周期c9,有限狀態機240從散列匹配器250接收到相應於實體7的回覆:參考第4圖。於此時鐘周期,有限狀態機240取得發布指針指向的實體9(步驟S410),為實體9發出散列請求給散列匹配器250,其中包含字符串”gaf”(步驟S430),更新實體9的狀態為”HASH_ISSUED”以指出實體9進入散列請求狀態S32(步驟S450),以及更新發布指針以指向實體10(步驟S470)。參考第7圖。有限狀態機240取得退卻指針指向的實體1的狀態(步驟S710)。因為實體1的狀態為不匹配狀態,有限狀態機240輸出實體1的字符”b”給格式化器270,使得格式化器270可據以壓縮預取緩存器280中的待壓縮的原始字符串(步驟S733),因為實體1的狀態為不匹配狀
態,這裡字符”b”保留不做壓縮動作;並且讓資料緩存器210的中滑動窗框向前移動一個字符,即讓資料緩存器210的中的字符”b”滑動進入其滑動窗框中成為新字典的一部分,更新實體1的狀態為虛無值”/”並更新退卻指針以指向實體2(步驟S770)。參考第5圖。於此時鐘周期,有限狀態機240從散列匹配器250接收到相應於實體7的回覆(步驟S510)。因為回覆中包含不匹配的信息,更新實體7的狀態為”NM”以指出實體7進入不匹配狀態S34(步驟S550)。中介緩存器230的實體狀態更新為表5:
參考第7圖。經過一段時間,當有限狀態機240取得退卻指針指
向的實體4的狀態(步驟S710)。值得注意的是,在此之前,預取緩存器280中的待壓縮的原始字符串中的字符”c”和”d”均为不匹配,因此保留不做壓縮動作;並且資料緩存器210的中的字符”c”和”d”也已经滑動進入其滑動窗框中成為新字典的一部分。在本時鐘週期,因為實體4的狀態為部分匹配狀態,有限狀態機240輸出實體4的匹配偏移量offset=1000及匹配長度len=5給格式化器270,使得格式化器270可據以壓縮預取緩存器280中的待壓縮的原始字符串(步驟S753),因為實體4的狀態為部分匹配狀態且匹配長度len=5,因此預取緩存器280中的字符”xyzef”以(offset,len)代替,即以(1000,5)代替;並且讓資料緩存器210的中滑動窗框向前移動5個字符,即讓資料緩存器210的中的字符”xyzef”滑動進入其滑動窗框中成為新字典的一部分。
如以上範例所示,雖然有限狀態機240依實體的先後順序發出相應的散列請求來啟動壓縮程序,應注意的是,但因為散列匹配器250及最長字串匹配器260的運算時間無法預期,使得每個實體無法依原來的順序進入不匹配狀態S340或部分匹配狀態S370。儘管每個實體無法依原來的順序進入不匹配狀態S340或部分匹配狀態S370,透過以上所述的實施例,有限狀態機240還是可根據退卻指針依原來順序輸出相應於每個實體的散列匹配器250及最長字串匹配器260的運算結果給格式化器270。
第8圖係依據本發明實施例之散列匹配器的方塊圖。為加速散列匹配,散列匹配器可包含多個可平行處理的匹
配路徑,每一個路徑包含先進先出佇列、匹配器及記憶庫(memory bank)。例如,第一匹配路徑包含先進先出佇列850_1、匹配器870_1及記憶庫890_1,第二匹配路徑包含先進先出佇列850_2、匹配器870_2及記憶庫890_2,依此類推。散列函數(hash functions)810_1至810_4中之任一者將有限狀態機240傳來的子字符串映射成散列索引(hash index),依據上述散列索引驅動選擇器830以連接至匹配路徑中之一者,用以傳送此子字符串至連接上的匹配路徑。當連接的匹配路徑判定散列表(hash table)不包含此子字符串時,傳送不匹配的信息給有限狀態機240。當連接的匹配路徑判定散列表包含此子字符串(即該子字符串在資料緩存器210的中的滑動窗框中存在,例如散列表中包含實體4對應的子字符串”xyz”,即說明子字符串”xyz”在資料緩存器210的中的滑動窗框中存在)時,傳送匹配的信息及散列表中相應於此子字符串的匹配偏移量給有限狀態機240。雖然本發明實施例使用四套的匹配路徑說明,熟習此技藝人士可依據設計需求於散列匹配器250中配置較多或較少的匹配路徑,本發明並不因此受限。散列表分散儲存於四個記憶庫(memory banks)890_1至890_4。記憶庫890_1至890_4可以快取記憶體(cache)實現。散列表包含N筆條目(entries)。記憶庫890_1儲存第0筆至第(N/4-1)筆條目,記憶庫890_2儲存第(N/4)筆至第(N/2-1)筆條目,記憶庫890_3儲存第(N/2)筆至第(3N/4-1)筆條目,及記憶庫890_4儲存第(3N/4)筆至第(N-1)筆條目,即散列表按照散列表地址高兩位來分佈。在其它實施中,散列表也可以按照散列表位址的低兩位或者散列表位址的其他位來分
佈。在本實施例中,每筆條目可包含多個,例如三個散列鍵(hash keys)的相關信息,而這三個散列鍵擁有相同的散列索引而形成散列鏈結(hash chain)。舉例來說,n為3且使用16字節儲存每筆條目的數據,資料結構如表6所示:
每筆條目的第0字節儲存標籤”Tag”,使用固定位置的3比特分別表示此條目中的三個散列鍵是否有效。例如,3比特”100”代表此筆條目中的第一散列鍵有效而第二及第三散列鍵無效,3比特”110”代表此筆條目中的第一及第二散列鍵有效而第三散列鍵無效,依此類推。每筆條目的第1至3字節儲存關聯於一個散列索引的第一散列鍵”Hash_Key_1”,表示滑動窗框的原始字符串中包含第一散列鍵”Hash_Key_1”對應的子字符串;第4至5字節儲存關聯於第一散列鍵的第一散列偏移量”Hash_Offset_1”,其代表滑動窗框的原始字符串中所包含的第一散列鍵對應的子字符串的偏移量。此條目的第6至8字節儲存關聯於相同散列索引的第二散列鍵”Hash_Key_2”,表示滑動
窗框的原始字符串中包含第二散列鍵”Hash_Key_2”對應的子字符串;第9至10字節儲存關聯於第二散列鍵的第二散列偏移量”Hash_Offset_2”,其代表滑動窗框的原始字符串中所包含的第二散列鍵對應的子字符串的偏移量。此條目的第11至13字節儲存關聯於相同散列索引的第三散列鍵”Hash_Key_3”,表示滑動窗框的原始字符串中包含第三散列鍵”Hash_Key_3”對應的子字符串;第14至15字節儲存關聯於第三散列鍵的第三散列偏移量”Hash_Offset_3”,其代表滑動窗框的原始字符串中所包含的第三散列鍵對應的子字符串的偏移量。熟習此技藝人士可依據設計需求改變每筆條目的內容,用以儲存更多或更少的散列鍵及關連的散列偏移量,本發明並不因此受限。
為了加速散列匹配,散列匹配器250可包含四個散列函數810_1至810_4,散列函數810_1至810_4執行相同的演算法,用以將任意的子字符串映射成固定長度的散列索引(hash index)。散列索引的長度少於子字符串的長度。有限狀態機240可以以四發射(4-issue)的方式在同一時鐘週期同時輸出四個散列請求分別給散列函數810_1至810_4中之一者。散列函數810_1至810_4中之任一者依據映射出的散列索引驅動選擇器830連接自己至先進先出佇列850_1至850_4中之一者,用以將散列請求推入連接的先進先出佇列。例如,當散列函數810_1將字符串”abc”(亦即是子字串符)映射出散列索引”0”時,驅動選擇器830連接散列函數810_1至先進先出佇列850_1,用以將散列請求推入先進先出佇列850_1。於此須注意的是,散列請求包含有限狀態機240產生的字符串及相應散列函數產生的散
列索引。
散列匹配器250可包含四個平行處理的匹配器(matchers)870_1至870_4分別連接於先進先出佇列850_1及記憶庫890_1之間、先進先出佇列850_2及記憶庫890_2之間、先進先出佇列850_3及記憶庫890_3之間及先進先出佇列850_4及記憶庫890_4之間。匹配器870_1至870_4中之任一者從連接的先進先出佇列取出一個最早進入的散列請求,從其連接的記憶庫找尋符合散列請求中的散列索引的條目,並且藉檢查找尋到的條目的標籤判斷是否存在有效的散列鍵。當不存在有效的散列鍵時,匹配器判定找尋不到符合散列請求中的散列索引的條目,並且回覆有限狀態機240關於散列請求中的字符串不匹配的信息。當存在有效的散列鍵時,匹配器更判斷是否存在任何有效的散列鍵與散列請求中的字符串相同。當所有有效的散列鍵與散列請求中的字符串不同時,匹配器回覆有限狀態機240關於散列請求中的字符串不匹配的信息。當存在一個有效的散列鍵與散列請求中的字符串相同時,此匹配器回覆有限狀態機240關於散列請求中的字符串已匹配的信息及此散列鍵關聯的散列偏移量。
第9圖係依據本發明實施例之匹配器的方塊圖。雖然本發明實施例以匹配器870_1舉例說明,熟習此技藝人士可據以類推出匹配器870_2至870_4的技術細節。匹配器870_1包含比較器910_1至910_3及仲裁器930。比較器910_1從先進先出佇列850_1取得散列請求中的字符串以及從記憶庫890_1中相應條目的第一散列鍵及第一散列偏移量,以及判斷字符串與第
一散列鍵是否相同。當字符串與第一散列鍵相同時,比較器910_1輸出第一散列偏移量給仲裁器930。比較器910_2從先進先出佇列850_1取得散列請求中的字符串以及從記憶庫890_1中相應條目的第二散列鍵及第二散列偏移量,以及判斷字符串與第二散列鍵是否相同。當字符串與第二散列鍵相同時,比較器910_2輸出第二散列偏移量給仲裁器930。比較器910_3從先進先出佇列850_1取得散列請求中的字符串以及從記憶庫890_1中相應條目的第三散列鍵及第三散列偏移量,以及判斷字符串與第三散列鍵是否相同。當字符串與第三散列鍵相同時,比較器910_3輸出第三散列偏移量給仲裁器930。當仲裁器930從比較器910_1至910_3沒有接收到任何散列偏移量時,回覆有限狀態機240關於散列請求中的字符串不匹配的信息。當仲裁器930從比較器910_1至910_3接收到一個散列偏移量時,回覆有限狀態機240關於散列請求中的字符串已匹配的信息及接收到的散列偏移量。當仲裁器930從比較器910_1至910_3接收到二個以上散列偏移量時,回覆有限狀態機240關於散列請求中的字符串已匹配的信息及接收到的散列偏移量中之最小值。舉例而言,散列請求中的字符串”abc”,其通過散列函數810_1映射(或計算)出散列索引”0”時,對應的記憶庫890_1中相應散列索引”0”的條目包括3個散列鍵及其散列偏移量:第一散列鍵”abc”(散列偏移量為50),第二散列鍵”xyz”(散列偏移量為100)及第三散列鍵”abc”(散列偏移量為200),值得注意的是,雖然散列鍵”abc”和”xyz”的鍵值不同,但有可能經過散列函數810_1映射(或計算)出的散列索引卻相同,這跟散
列函數的運算規則有關,例如這裡的散列鍵”abc”和”xyz”的散列索引均為”0”;此外,2個相同的散列鍵”abc”表示在滑動窗框的原始字符串中的不同偏移位置出現了2次子字符串”abc”,但其散列偏移量不同。因為第一散列鍵”abc”和第三散列鍵”abc”均與散列請求中的字符串”abc”相同,因此比較器910_1和比較器910_3會分別輸出第一散列偏移量(50)和第三散列偏移量(200)給仲裁器930,此時仲裁器930會將字符串”abc”已匹配的信息及較小的散列偏移量50回覆有限狀態機240。值得注意的是,在其它實施方式中,當記憶庫中的每個散列表條目有前述多個匹配(即多個散列鍵均為”abc”)時,仲裁器930會回覆有限狀態機240關於散列請求中的字符串已匹配的信息,並且將所有匹配的散列偏移量均推送給有限狀態機240。
本發明的前述有限狀態機可以在同一時鐘週期同時輸出多個散列請求分別給多個散列函數並行進行散列匹配,並且藉由本發明之中介緩存器記錄各實體的狀態、匹配長度及匹配偏移量,使得亂序執行散列匹配和最長匹配后的實體能夠按照待壓縮字符串中的原始順序退卻以進行壓縮。
第10圖係依據本發明實施例之散列匹配方法的流程圖。散列函數810_1至810_4並行接收從有限狀態機240傳來的多個子字符串(步驟S1010)。接著,散列函數810_1將接收的子字符串映射成散列索引及依據散列索引驅動選擇器830連接至多個匹配路徑中之一者(步驟S1031),散列函數810_2將接收的子字符串映射成散列索引及依據散列索引驅動選擇器830連接至多個匹配路徑中之一者(步驟S1033),依此類推。於此須
注意的是,於步驟S1031、S1033、S1035、S1037中,散列函數810_1至810_4中之至少二者可連接到相同的匹配路徑,並且將包含這些子字符串的散列請求推入此匹配路徑中的先進先出佇列。接著,當散列函數810_1連接的匹配路徑中的匹配器(如匹配器870_1、870_2、870_3或870_4)判定散列表不包含散列函數810_1接收的子字符串時,傳送不匹配的信息給有限狀態機240(步驟S1051),以及當散列函數810_1連接的匹配路徑中的匹配器判定散列表包含散列函數810_1接收的子字符串時,傳送匹配的信息及散列表中相應於子字符串的匹配偏移量給有限狀態機240(步驟S1071)。當散列函數810_2連接的匹配路徑中的匹配器(如匹配器870_1、870_2、870_3或870_4)判定散列表不包含散列函數810_2接收的子字符串時,傳送不匹配的信息給有限狀態機240(步驟S1053),以及當散列函數810_2連接的匹配路徑中的匹配器判定散列表包含散列函數810_2接收的子字符串時,傳送匹配的信息及散列表中相應於子字符串的匹配偏移量給有限狀態機240(步驟S1073)。步驟S1055、S1075、S1057及S1077的細節可從如上所述的步驟推論而得,不再贅述。於此須注意的是,當一個匹配路徑的先進先出佇列包含二個以上的散列請求時,此匹配路徑的匹配器依據散列請求到達的先後順序執行如上所述的判斷。例如,當一個匹配路徑的先進先出佇列包含散列函數810_1及810_2的散列請求且散列函數810_1的散列請求較早時,步驟S1031、S1051及S1071的執行早於步驟S1033、S1053及S1073的執行。
雖然第1、2、8、9圖中包含了以上描述的元件,
但不排除在不違反發明的精神下,使用更多其他的附加元件,以達成更佳的技術效果。此外,雖然第4至7及10圖的方法流程圖採用特定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
Claims (17)
- 一種基於散列的加速壓縮方法,實施於一壓縮加速器中,其中上述壓縮加速器包含一有限狀態機、一中介緩存器、一散列匹配器,一最長字串匹配器及一格式化器,上述方法包含:從一資料緩存器提取一待壓縮字符串;儲存相應於上述待壓縮字符串的多個實體於上述中介緩存器,其中,每一上述實體關聯於上述待壓縮字符串中之一子字符串,包含上述關聯的子字符串的一狀態、一匹配長度及一匹配偏移量;經由上述有限狀態機為每一上述實體發送一散列請求給上述散列匹配器,當上述散列匹配器傳來的一第一回覆中包含匹配的信息時,經由上述有限狀態機發送一資料請求給上述最長字串匹配器,並且依據上述最長字串匹配器傳來的一第二回覆包含的長度是否小於最大匹配長度的判斷,更新上述實體的上述狀態、上述匹配長度及上述匹配偏移量;以及經由上述有限狀態機按照上述實體關聯的上述子字符串在上述待壓縮字符串中的原始順序,並依據每一上述實體的上述狀態、上述匹配長度及上述匹配偏移量輸出一結果給上述格式化器,使得上述格式化器據以壓縮上述待壓縮字符串。
- 如申請專利範圍第1項所述的基於散列的加速壓縮方法,其中更包含:當上述第一回覆包含不匹配的信息時,將上述實體的上述狀態更新為一不匹配狀態;以及當上述第一回覆包含上述匹配的信息時,還將上述實體的上述狀態更新為一資料請求狀態,更新上述實體的上述匹配長度為上述子字符串的長度,以及更新上述實體的上述匹配偏移量為上述第一回覆中的一偏移量。
- 如申請專利範圍第1項所述的基於散列的加速壓縮方法,其中,當上述第二回覆包含的上述長度小於上述最大匹配長度時,更新上述實體的上述狀態為一部分匹配狀態,以及以上述長度更新上述實體的上述匹配長度;以及當上述第二回覆包含的上述長度不小於上述最大匹配長度時,更新上述實體的上述狀態為一完全匹配狀態,以上述最大匹配長度更新上述實體的上述匹配長度,發出相應於上述實體的另一資料請求給上述最長字串匹配器,用以繼續後續的字串比對。
- 如申請專利範圍第1項所述的基於散列的加速壓縮方法,於按照上述實體關聯的上述子字符串在上述待壓縮字符串中的原始順序,並依據每一上述實體的上述狀態、上述匹配長度及上述匹配偏移量輸出一結果給一格式化器的步驟,更包含:當上述實體的上述狀態為一不匹配狀態時,上述結果包含上述實體中的一字符;以及當上述實體的上述狀態為一部分匹配狀態或者一完全匹配狀態時,上述結果包含上述實體中的上述匹配長度及上述匹配偏移量。
- 如申請專利範圍第1項所述的基於散列的加速壓縮方法,其中,上述壓縮加速器包括一有限狀態機,上述有限狀態機包含一散列請求程序、一散列回覆處理程序、一資料回覆處理程序及一退卻處理程序,其中,上述散列請求程序為每一上述實體發送上述散列請求給上述散列匹配器,其中,上述散列回覆處理程序依據上述散列匹配器傳來的上述第一回覆發送上述資料請求給上述最長字串匹配器,其中,上述資料回覆處理程序依據上述最長字串匹配器傳來的上述第二回覆更新上述實體的上述狀態、上述匹配長度及上述匹配偏移量,其中,上述退卻處理程序按照上述實體關聯的上述子字符串在上述待壓縮字符串中的原始順序,並依據每一上述實體的上述狀態、上述匹配長度及上述匹配偏移量輸出上述結果給上述格式化器。
- 如申請專利範圍第5項所述的基於散列的加速壓縮方法,其中,上述散列請求程序及上述退卻處理程序為並行處理程序,並且擁有較高的優先級。
- 如申請專利範圍第1項所述的基於散列的加速壓縮方法,其中,上述實體關聯的上述子字符串在上述待壓縮字符串中的原始順序由一退卻指針控制。
- 如申請專利範圍第1項所述的基於散列的加速壓縮方法,其中,上述子字符串的長度為3。
- 一種基於散列的加速壓縮裝置,包含一有限狀態機、一中介緩存器、一散列匹配器,一最長字串匹配器及一格式化器,其中:上述中介緩存器儲存相應於一資料緩存器中的一待壓縮字符串的多個實體,其中,每一上述實體關聯於上述待壓縮字符串中之一子字符串,包含上述關聯的子字符串的一狀態、一匹配長度及一匹配偏移量;以及上述有限狀態機耦接於上述中介緩存器,為每一上述實體發送一散列請求給上述散列匹配器,並且當上述散列匹配器傳來的一第一回覆中包含匹配的信息時,上述有限狀態機發送一資料請求給上述最長字串匹配器,並且依據上述最長字串匹配器傳來的一第二回覆包含的長度是否小於最大匹配長度的判斷,更新上述實體的上述狀態、上述匹配長度及上述匹配偏移量;以及按照上述實體關聯的上述子字符串在上述待壓縮字符串中的原始順序,並依據每一上述實體的上述狀態、上述匹配長度及上述匹配偏移量輸出一結果給上述格式化器,使得上述格式化器據以壓縮上述待壓縮字符串。
- 如申請專利範圍第9項所述的基於散列的加速壓縮裝置,其中,上述有限狀態機當上述第一回覆包含不匹配的信息時,將上述實體的上述狀態更新為一不匹配狀態;以及當上述第一回覆包含上述匹配的信息時,還將上述實體的上述狀態更新為一資料請求狀態,更新上述實體的上述匹配長度為上述子字符串的長度,以及更新上述實體的上述匹配偏移量為上述第一回覆中的一偏移量。
- 如申請專利範圍第9項所述的基於散列的加速壓縮裝置,其中,當上述第二回覆包含的上述長度小於上述最大匹配長度時,更新上述實體的上述狀態為一部分匹配狀態,以及以上述長度更新上述實體的上述匹配長度;以及當上述第二回覆包含的上述長度不小於上述最大匹配長度時,更新上述實體的上述狀態為一完全匹配狀態,以上述最大匹配長度更新上述實體的上述匹配長度,發出相應於上述實體的另一資料請求給上述最長字串匹配器,用以繼續後續的字串比對。
- 如申請專利範圍第9項所述的基於散列的加速壓縮裝置,其中,上述有限狀態機當上述實體的上述狀態為一不匹配狀態時,上述結果包含上述實體中的一字符;以及當上述實體的上述狀態為一部分匹配狀態或者一完全匹配狀態時,上述結果包含上述實體中的上述匹配長度及上述匹配偏移量。
- 申請專利範圍第9項所述的基於散列的加速壓縮裝置,其中,上述有限狀態機包含一散列請求程序、一散列回覆處理程序、一資料回覆處理程序及一退卻處理程序,其中,上述散列請求程序為每一上述實體發送上述散列請求給上述散列匹配器,其中,上述散列回覆處理程序依據上述散列匹配器傳來的上述第一回覆發送上述資料請求給上述最長字串匹配器,其中,上述資料回覆處理程序依據上述最長字串匹配器傳來的上述第二回覆更新上述實體的上述狀態、上述匹配長度及上述匹配偏移量,其中,上述退卻處理程序按照上述實體關聯的上述子字符串在上述待壓縮字符串中的原始順序,並依據每一上述實體的上述狀態、上述匹配長度及上述匹配偏移量輸出上述結果給上述格式化器。
- 如申請專利範圍第13項所述的基於散列的加速壓縮裝置,其中,上述散列請求程序及上述退卻處理程序為並行處理程序,並且擁有較高的優先級。
- 如申請專利範圍第9項所述的基於散列的加速壓縮裝置,其中,上述中介緩存器及上述有限狀態機設置於一壓縮加速器中,以及上述壓縮加速器設置於一處理器核心之外。
- 如申請專利範圍第9項所述的基於散列的加速壓縮裝置,其中,上述實體關聯的上述子字符串在上述待壓縮字符串中的原始順序由一退卻指針控制。
- 如申請專利範圍第9項所述的基於散列的加速壓縮裝置,其中,上述子字符串的長度為3。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
??201710347209.9 | 2017-05-17 | ||
CN201710347209.9A CN107180018B (zh) | 2017-05-17 | 2017-05-17 | 基于散列的加速压缩方法以及使用此方法的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201901413A TW201901413A (zh) | 2019-01-01 |
TWI655580B true TWI655580B (zh) | 2019-04-01 |
Family
ID=59831860
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106144377A TWI655580B (zh) | 2017-05-17 | 2017-12-18 | 基於散列的加速壓縮方法以及使用此方法的裝置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9979414B1 (zh) |
EP (1) | EP3404838A1 (zh) |
CN (1) | CN107180018B (zh) |
TW (1) | TWI655580B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107317584B (zh) * | 2017-06-28 | 2020-11-06 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN107612891B (zh) * | 2017-08-25 | 2020-09-11 | 国网辽宁省电力有限公司 | 一种数据压缩加密电路 |
CN109802685B (zh) * | 2019-01-30 | 2022-12-27 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN109828789B (zh) * | 2019-01-30 | 2020-11-27 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN109802686B (zh) * | 2019-01-30 | 2022-12-06 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN109857463B (zh) * | 2019-01-30 | 2020-12-01 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN110674364B (zh) * | 2019-08-30 | 2021-11-23 | 北京浩瀚深度信息技术股份有限公司 | 一种利用fpga实现的滑动字符串匹配的方法 |
US11593311B2 (en) * | 2019-09-24 | 2023-02-28 | Ati Technologies Ulc | Compression system with longest match processing for generating compressed data |
CN111259203B (zh) * | 2020-01-08 | 2023-08-25 | 上海兆芯集成电路股份有限公司 | 数据压缩器以及数据压缩方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020196166A1 (en) * | 1998-07-09 | 2002-12-26 | Fujitsu Limited | Data compression method and data compression apparatus |
US20140223029A1 (en) * | 2011-07-12 | 2014-08-07 | Hughes Network Systems, Llc | Staged data compression, including block level long range compression, for data streams in a communications system |
JP2015186077A (ja) * | 2014-03-25 | 2015-10-22 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データ圧縮を高速化する方法、並びに、データ圧縮を高速化するためのコンピュータ、及びそのコンピュータ・プログラム |
US9584155B1 (en) * | 2015-09-24 | 2017-02-28 | Intel Corporation | Look-ahead hash chain matching for data compression |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4558302A (en) * | 1983-06-20 | 1985-12-10 | Sperry Corporation | High speed data compression and decompression apparatus and method |
US6202090B1 (en) * | 1997-12-11 | 2001-03-13 | Cisco Technology, Inc. | Apparatus and method for downloading core file in a network device |
US7681018B2 (en) * | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
AU2005304759B2 (en) * | 2004-11-05 | 2012-05-17 | Drobo, Inc. | Dynamically expandable and contractible fault-tolerant storage system permitting variously sized storage devices and method |
US7873782B2 (en) * | 2004-11-05 | 2011-01-18 | Data Robotics, Inc. | Filesystem-aware block storage system, apparatus, and method |
US20060248095A1 (en) * | 2005-04-29 | 2006-11-02 | Cisco Technology, Inc. (A California Corporation) | Efficient RAM lookups by means of compressed keys |
GB2524516A (en) * | 2014-03-25 | 2015-09-30 | Ibm | Hardware compression method finding backward references with multi-level hashes |
US9112525B1 (en) * | 2014-03-28 | 2015-08-18 | Comtech Ef Data Corp. | System and method for parallel hash-based data compression |
US9509337B1 (en) * | 2015-05-11 | 2016-11-29 | Via Alliance Semiconductor Co., Ltd. | Hardware data compressor using dynamic hash algorithm based on input block type |
-
2017
- 2017-05-17 CN CN201710347209.9A patent/CN107180018B/zh active Active
- 2017-08-10 US US15/673,736 patent/US9979414B1/en active Active
- 2017-12-15 EP EP17207638.2A patent/EP3404838A1/en active Pending
- 2017-12-18 TW TW106144377A patent/TWI655580B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020196166A1 (en) * | 1998-07-09 | 2002-12-26 | Fujitsu Limited | Data compression method and data compression apparatus |
US20140223029A1 (en) * | 2011-07-12 | 2014-08-07 | Hughes Network Systems, Llc | Staged data compression, including block level long range compression, for data streams in a communications system |
JP2015186077A (ja) * | 2014-03-25 | 2015-10-22 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データ圧縮を高速化する方法、並びに、データ圧縮を高速化するためのコンピュータ、及びそのコンピュータ・プログラム |
US9584155B1 (en) * | 2015-09-24 | 2017-02-28 | Intel Corporation | Look-ahead hash chain matching for data compression |
Also Published As
Publication number | Publication date |
---|---|
TW201901413A (zh) | 2019-01-01 |
CN107180018A (zh) | 2017-09-19 |
EP3404838A1 (en) | 2018-11-21 |
CN107180018B (zh) | 2018-11-20 |
US9979414B1 (en) | 2018-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI655580B (zh) | 基於散列的加速壓縮方法以及使用此方法的裝置 | |
TWI656480B (zh) | 基於散列的加速壓縮方法以及使用此方法的裝置 | |
Drew et al. | Polymorphic malware detection using sequence classification methods | |
Garfinkel et al. | Using purpose-built functions and block hashes to enable small block and sub-file forensics | |
EP2757521B1 (en) | Image search apparatus, image search method, program, and computer-readable recording medium | |
US20140344195A1 (en) | System and method for machine learning and classifying data | |
CN110879854A (zh) | 使用超集树数据结构搜索数据 | |
CN105844210B (zh) | 硬件有效的指纹识别 | |
TWI709047B (zh) | 對其已使用主要資料篩而被無損減少的資料履行多維搜尋、內容相關擷取、及關鍵字為基的搜尋和擷取 | |
Abali et al. | Data compression accelerator on IBM POWER9 and z15 processors: Industrial product | |
US10637498B1 (en) | Accelerated compression method and accelerated compression apparatus | |
US10879926B2 (en) | Accelerated compression method and accelerated compression apparatus | |
US20130268484A1 (en) | Database management device and database management method | |
CN109802686B (zh) | 加速压缩方法以及加速压缩装置 | |
CN109857463B (zh) | 加速压缩方法以及加速压缩装置 | |
Abali et al. | Data compression accelerator on ibm power9 and z15 processors | |
WO2022141860A1 (zh) | 文本去重方法、装置、电子设备及计算机可读存储介质 | |
US10707897B1 (en) | Command processor with multiple string copy engines for a decompression system | |
JPH08329112A (ja) | フリーテキスト検索システム | |
Mahmoodi et al. | A parallel architecture for high speed BLAST using FPGA | |
JP2022522464A (ja) | 分散データソースに存在するデータストリームの連続処理のためのコンピュータ実装方法 | |
KR20220073776A (ko) | 압축된 데이터를 생성하기 위한 최장 일치 처리를 이용하는 압축 시스템 | |
EP3014482A1 (en) | Method and system for searching and storing data | |
JPH0550024B2 (zh) | ||
JPH043251A (ja) | 文書検索方法および文書検索処理装置 |