The invention discloses a method and device for matching line based on the data, the method comprises: matching the original source file compression block sequence of successive memory read in a dictionary, a dictionary update the data in the memory according to the matching compressed schedule; improved hashing sequence of 3 consecutive character dictionary memory, according to the the hash value of the pre sentence may match the string, matching character string can store the address to the address chain chain; at the same time values in the address, in turn from the dictionary storage and comparison value, the optimal matching result output. The above 3 steps are simultaneous, pipelined, and the data dependency of the pipelining is very small due to the fast read and hash computations.
【技術(shù)實(shí)現(xiàn)步驟摘要】
一種基于流水線的數(shù)據(jù)匹配方法和裝置
本專利技術(shù)實(shí)施例涉及數(shù)據(jù)壓縮
,尤其涉及一種基于流水線的數(shù)據(jù)匹配方法和裝置。
技術(shù)介紹
目前,為了節(jié)省數(shù)據(jù)存儲(chǔ)空間,減少存儲(chǔ)介質(zhì)需求,同時(shí)提高數(shù)據(jù)傳輸效率,數(shù)據(jù)壓縮技術(shù)在物聯(lián)網(wǎng)、數(shù)據(jù)庫(kù)、云存儲(chǔ)等領(lǐng)域有著廣泛的應(yīng)用。其中,Gzip壓縮算法是目前應(yīng)用最廣泛的一種高效且開源壓縮算法,例如,使用Gzip壓縮算法在Web服務(wù)器上將網(wǎng)頁(yè)進(jìn)行壓縮,可以提高訪問(wèn)響應(yīng)速度。Gzip壓縮算法具體包括兩部分:LZ77算法和哈夫曼(Huffman)編碼。其中哈夫曼編碼不在本專利討論范圍之內(nèi)。LZ77算法通過(guò)匹配替換將原始源文件進(jìn)行去冗余,以達(dá)到壓縮的目的。LZ77算法的軟件實(shí)現(xiàn)方法是:先使用哈希算法,將可能匹配的字符串的地址構(gòu)成鏈表;然后在匹配范圍內(nèi)(也被稱為滑動(dòng)窗口,大小為32768,32KB),將當(dāng)前處理字符串與上述鏈表中字符串,不斷迭代尋找最佳匹配;最后將匹配串替換來(lái)去冗余。目前LZ77算法軟件實(shí)現(xiàn)時(shí),會(huì)使用哈希算法構(gòu)造鏈表;從文件頭開始,為原始源文件中每3個(gè)連續(xù)字節(jié)(3Byte:24bit)計(jì)算得出一個(gè)15比特(15bit)哈希值(根據(jù)哈希算法,哈希值相同,即有可能存在匹配),然后會(huì)用一個(gè)鏈表數(shù)據(jù)結(jié)構(gòu)保存所有哈希相同的字符索引;對(duì)每個(gè)進(jìn)行匹配的字符,首先計(jì)算其和其后2個(gè)字節(jié)(Byte),一共連續(xù)3個(gè)字節(jié)(Byte),的哈希值;然后維護(hù)哈希鏈表的同時(shí),使用哈希鏈表循環(huán)取出匹配范圍內(nèi)可能匹配的字符串地址,根據(jù)地址依次將字符串取出進(jìn)行匹配比較;匹配成功部分字符串也需要通過(guò)哈希計(jì)算并插入鏈表,供后面字符匹配查找時(shí)使用。在實(shí)現(xiàn)本專利技術(shù)過(guò)程 ...
【技術(shù)保護(hù)點(diǎn)】
一種基于流水線的數(shù)據(jù)匹配方法,其特征在于,包括:隨著匹配比較單元對(duì)文件進(jìn)行匹配壓縮操作,字典存儲(chǔ)器將相應(yīng)地循環(huán)從參與匹配壓縮原始源文件中讀入并更新內(nèi)容,直至整個(gè)文件匹配壓縮完畢,其中,字典存儲(chǔ)器是一組隨機(jī)存儲(chǔ)器,存儲(chǔ)著將要被匹配壓縮的文件;哈希單元計(jì)算當(dāng)前處理字符段的哈希值,其中,所述當(dāng)前處理字符段指當(dāng)前處理的1個(gè)字節(jié)(Byte)的字符及隨后的2個(gè)字節(jié)(Byte)的字符,共3個(gè)字節(jié)(Byte)的字符;并以此哈希值為地址,將當(dāng)前處理字符在字典存儲(chǔ)器中的位置信息為內(nèi)容,存儲(chǔ)到的鏈頭存儲(chǔ)器中;根據(jù)上述地址中鏈頭存儲(chǔ)器中內(nèi)容的情況,對(duì)鏈頭存儲(chǔ)器、回溯存儲(chǔ)器和相關(guān)鏈頭匹配先入先出存儲(chǔ)器進(jìn)行維護(hù);匹配比較單元從鏈頭匹配先入先出存儲(chǔ)器和回溯存儲(chǔ)器中順序取得可能匹配的字符串索引,并依次使用改進(jìn)匹配比較方法取值比較,同時(shí)維護(hù)回溯存儲(chǔ)器,直至匹配比較結(jié)束。
【技術(shù)特征摘要】
1.一種基于流水線的數(shù)據(jù)匹配方法,其特征在于,包括:隨著匹配比較單元對(duì)文件進(jìn)行匹配壓縮操作,字典存儲(chǔ)器將相應(yīng)地循環(huán)從參與匹配壓縮原始源文件中讀入并更新內(nèi)容,直至整個(gè)文件匹配壓縮完畢,其中,字典存儲(chǔ)器是一組隨機(jī)存儲(chǔ)器,存儲(chǔ)著將要被匹配壓縮的文件;哈希單元計(jì)算當(dāng)前處理字符段的哈希值,其中,所述當(dāng)前處理字符段指當(dāng)前處理的1個(gè)字節(jié)(Byte)的字符及隨后的2個(gè)字節(jié)(Byte)的字符,共3個(gè)字節(jié)(Byte)的字符;并以此哈希值為地址,將當(dāng)前處理字符在字典存儲(chǔ)器中的位置信息為內(nèi)容,存儲(chǔ)到的鏈頭存儲(chǔ)器中;根據(jù)上述地址中鏈頭存儲(chǔ)器中內(nèi)容的情況,對(duì)鏈頭存儲(chǔ)器、回溯存儲(chǔ)器和相關(guān)鏈頭匹配先入先出存儲(chǔ)器進(jìn)行維護(hù);匹配比較單元從鏈頭匹配先入先出存儲(chǔ)器和回溯存儲(chǔ)器中順序取得可能匹配的字符串索引,并依次使用改進(jìn)匹配比較方法取值比較,同時(shí)維護(hù)回溯存儲(chǔ)器,直至匹配比較結(jié)束。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,字典存儲(chǔ)器是一組多塊32千字節(jié)(32KB:8Byte*4K或4Byte*8K)的塊隨機(jī)存儲(chǔ)器(blockRAM),參與匹配壓縮原始源文件被順序存儲(chǔ)在字典存儲(chǔ)器中,并且根據(jù)匹配壓縮情況更新,每組字典存儲(chǔ)器由多塊隨機(jī)存儲(chǔ)器組成;參與匹配壓縮原始源文件被順序存儲(chǔ)在字典存儲(chǔ)器中,隨著匹配壓縮的進(jìn)行,當(dāng)某一塊字典存儲(chǔ)器中的內(nèi)容完全脫離被匹配比較范圍(32768,32K)時(shí),其中的數(shù)據(jù)將被清空,隨后填入新的后續(xù)的參與壓縮匹配的數(shù)據(jù);一組多塊字典存儲(chǔ)器輪流更新,直至匹配壓縮完成。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述哈希單元提供地址將所述當(dāng)前處理字符在字典存儲(chǔ)器中的位置信息存儲(chǔ)在所述鏈頭存儲(chǔ)器中包括:哈希單元使用改進(jìn)哈希算法計(jì)算當(dāng)前處理字符段的哈希值,使用3字節(jié)(3Byte:24bit)長(zhǎng)的字符串計(jì)算得到16位(bit)長(zhǎng)的哈希值,可有效避免哈希值臨近連續(xù)位的偽匹配;以上述哈希值為地址,將當(dāng)前處理字符在字典存儲(chǔ)器中的位置信息存入鏈頭存儲(chǔ)器;如果在所述鏈頭存儲(chǔ)器中,已經(jīng)存儲(chǔ)以所述哈希值為地址的舊位置信息,則使用新位置信息替代所述舊位置信息。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述匹配比較單元獲取所述鏈頭存儲(chǔ)器中的字符索引之前,所述方法還包括:所述哈希單元在使用新位置信息替代所述舊位置信息時(shí),將所述新位置信息和所述舊位置信息拼接后,放入鏈頭匹配先入先出存儲(chǔ)器中;所述匹配比較單元在匹配比較開始時(shí),從鏈頭匹配先入先出存儲(chǔ)器中取出所述新位置信息和所述舊位置信息拼接后的數(shù)據(jù);計(jì)算舊位置信息和新位置信息間距離,若該距離已經(jīng)大于匹配比較范圍(32768,32K),則只使用新位置信息替代所述舊位置信息,不放入鏈頭匹配先入先出存儲(chǔ)器中。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述哈希單元在使用新位置信息替代所述舊位置信息時(shí),將所述新位置信息和所述舊位置信息拼接后,放入鏈頭匹配先入先出存儲(chǔ)器中之后,所述方法還包括:以新位置信息為索引地址,將舊位置信息存入到回溯存儲(chǔ)器中,當(dāng)與回溯存儲(chǔ)器對(duì)應(yīng)的某塊字典存儲(chǔ)中的內(nèi)容完全脫離被匹配比較范圍時(shí),該回溯存儲(chǔ)器中的數(shù)據(jù)將被清空。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述匹配比較單元根據(jù)所述鏈頭匹配先入先出存儲(chǔ)器和回溯存儲(chǔ)器中的數(shù)據(jù)進(jìn)行匹配包括:所述匹配比較單元,從鏈頭匹配先入先出存儲(chǔ)器中讀取出與鏈頭可能匹配的地址對(duì),并在使用改進(jìn)比較方法進(jìn)行匹配比較;通過(guò)從字典存儲(chǔ)器取值、拼接,使每次匹配比較8個(gè)字節(jié),匹配比較后輸出匹配失敗或匹配成功字節(jié)數(shù);若匹配成功字節(jié)數(shù)為8,則繼續(xù)匹配后8個(gè)字節(jié),直至得到最長(zhǎng)匹配長(zhǎng)度為止。7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述改進(jìn)匹配比較方法從鏈頭匹配先入先出存儲(chǔ)器中取得鏈頭可能匹配對(duì)的地址對(duì),并在使用改進(jìn)比較方法進(jìn)行匹配比較,同時(shí)以鏈頭可能匹配對(duì)的后半部分為地址,在回溯存儲(chǔ)器中取值;再以該值為地址在回溯存儲(chǔ)器中取值,如此循環(huán)得到回溯存儲(chǔ)器中所有可能匹配的地址;取值的同時(shí)使用改進(jìn)比較方法進(jìn)行匹配比較;所有匹配結(jié)束后,輸出未匹配成功或匹配長(zhǎng)度最優(yōu)的匹配結(jié)果。8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述回溯存儲(chǔ)器、字典存儲(chǔ)器中的內(nèi)容將隨著匹配比較模塊和哈希單元的工作清空和重置;當(dāng)哈希單元計(jì)算完字典存儲(chǔ)器某一塊中所有的哈希值時(shí),會(huì)對(duì)該塊字典存儲(chǔ)器設(shè)一個(gè)標(biāo)志位;哈希單元對(duì)字典存儲(chǔ)器三塊順序循環(huán)計(jì)算哈希值,當(dāng)計(jì)算到字典存儲(chǔ)器某一新塊,先檢查與其對(duì)應(yīng)的標(biāo)志位,若標(biāo)志位已設(shè),哈希單元暫停計(jì)算,直至標(biāo)志位被清除后再開始計(jì)算;匹配比較模塊,順序進(jìn)行比較匹配工作,當(dāng)發(fā)現(xiàn)字典存儲(chǔ)器某一塊中的內(nèi)容已經(jīng)完全脫離被匹配比較范圍,并且參與匹配壓縮原始源文件尚未被處理結(jié)束時(shí),則將該字典存儲(chǔ)器以及相應(yīng)的回溯存儲(chǔ)器中的內(nèi)容清空,并且將新的內(nèi)容填入字典存儲(chǔ)器中,然后將標(biāo)志位清除。9.根據(jù)權(quán)利要求8所述的方法,其特征在于:所述鏈頭存儲(chǔ)器,是一塊136千字節(jié)(136KB:17bit*64K)的塊隨機(jī)存儲(chǔ)器(blockRAM);所述鏈頭匹配先入先出存儲(chǔ)器是一種雙端口先入先出存儲(chǔ)器,其深度和數(shù)據(jù)寬度,由字典存儲(chǔ)器的塊數(shù)決定;其中,所述鏈頭匹配先入先出存儲(chǔ)器深度至少...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:董乾,劉勇,李冰,趙霞,王剛,
申請(qǐng)(專利權(quán))人:東南大學(xué),
類型:發(fā)明
國(guó)別省市:江蘇,32
還沒(méi)有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。