一種基于硬件的可配置的數據壓縮系統的制作方法
【技術領域】
[0001]本發明涉及數據壓縮技術,尤其涉及一種基于硬件的可配置的數據壓縮系統。
【背景技術】
[0002]在網絡通信技術高速發展的時代,數據無損壓縮技術逐漸體現出其獨特的重要性,使其廣泛應用在云存儲、互聯網通信中,如壓縮文件系統、數據備份、網頁前端服務等。數據無損壓縮技術能夠在不影響數據重構質量的前提下降低數據冗余度、減少信息在存儲中占用的資源,客觀上提高數據傳輸效率。
[0003]無損數據壓縮技術主要分為兩類,分別是基于字典的無損數據壓縮技術以及基于統計的無損數據壓縮技術;基于字典的無損數據壓縮的代表為LZ77壓縮算法,因為該算法不僅有著適中的壓縮率同時與基于統計的無損壓縮算法相比有著更快的壓縮速率;另外LZ77算法作為基于字典的無損壓縮算法的基礎,有著不錯的靈活性,如經過LZ77壓縮算法處理過的數據,再次經過Huffman編碼可以實現Gzip壓縮,經過區間編碼可以得到LZMA壓縮,經過特定格式輸出可以實現LZO壓縮等等,而且這些壓縮算法性能的好壞很大程度上收到LZ77壓縮效果的影響。
[0004]當前,數據壓縮一般通過軟件算法的實現方式進行數據的壓縮處理,但是軟件算法進行壓縮處理的效率較低,而且會占用大量的CPU資源,那么在處理大量數據時,軟件算法的劣勢將更加明顯。
[0005]為了減少信息存儲所消耗的資源以及處理壓縮時所消耗的CPU資源,提高數據傳輸效率,使用硬件電路來實現數據的壓縮有著極大的優勢。一方面硬件電路在工作時有著高度并行性,能夠極大的提升壓縮速率;另一方面能夠大量減少CPU資源的消耗,只需要在傳輸數據時使用占用CPU資源;加之,通過配置相應的參數來調整壓縮率和壓縮速率之間的平衡點,同軟件實現相比壓縮性能有著極大的提升。
[0006]綜上所述,實現一種基于硬件的可配置的數據壓縮系統在提高數據傳輸效率,減少存儲資源、CPU資源消耗上面有著廣泛的應用前景。并且該系統今后可以和Huffman編碼系統,區間編碼系統等級聯,作為專用的硬件壓縮系統,實現硬件與軟件的兼容。
【發明內容】
[0007]本發明要解決的一個技術問題是提供一種基于硬件的可配置的數據壓縮系統,能夠有效地解決執行無損數據壓縮時的效率問題,提高壓縮性能。
[0008]為了實現上述目的,本發明提供一種基于硬件的可配置的數據壓縮系統,包括:
[0009]字典維護模塊,包括若干個Ram,構成字典以及字典緩沖區;所述字典緩沖區用于存放待壓縮文件的數據塊;
[0010]數據請求模塊,向待壓縮文件請求新的待壓縮文件的數據塊并將新的數據塊寫入字典維護模塊的字典緩沖區中;
[0011 ] 壓縮配置模塊,根據不同的壓縮級別配置壓縮偏好;能夠根據不同的壓縮偏好選擇相應的Hash(哈希)函數,調整壓縮率與壓縮速率之間的平衡點;
[0012]Hash計算模塊,從字典維護模塊的字典緩沖區中獲取待壓縮文件的數據塊,將待壓縮文件的數據塊每3個字符的字符串作為當前字符串;根據壓縮配置模塊配置的壓縮偏好計算當前字符串對應的Hash值并產生該Hash值在字典維護模塊的字典緩沖區中的地址;并根據該Hash值判斷字典維護模塊的字典中是否存在與之具有相同Hash值的匹配串并輸出相應的匹配結果;
[0013]匹配計算模塊,接收Hash計算模塊輸出的匹配結果;若存在匹配字符串,從字典維護模塊的字典緩沖區中獲取相互匹配的當前字符串與匹配字符串并進行匹配比較;若匹配,則發送匹配信息給數據輸出模塊;若未匹配,則發送未匹配字符串給數據輸出模塊;若不存在未匹配字符串,從字典維護模塊的字典緩沖區中獲取未匹配字符串并發送給數據輸出模塊;在輸出字符串時,可以同時執行匹配計算工作,兩項工作可以并行執行。
[0014]數據輸出模塊,接收匹配計算模塊的匹配信息以及未匹配字符串數據并輸出到指定的緩沖FIFO中。
[0015]所述的字典維護模塊進一步包括:
[0016]Ram狀態檢測模塊,用于檢測每個Ram的使用狀態;
[0017]字典緩沖模塊,采用4個16KB的Block Ram構成字典緩沖區,用于存放待壓縮文件的數據;當LZ77的字典窗口不再占用使用過的Ram時,向該Ram寫入新數據,保證文件連續地輸入系統;
[0018]讀寫仲裁模塊,規定匹配計算模塊在讀取數據時match讀信號、literal讀信號、hash讀信號的優先級,并按照讀寫優先級順序發送對應的讀寫信號。
[0019]所述字典緩沖模塊最多占用3個Ram,最少占用I個Ram。所以能夠保證剩余一個Ram在獲取新的數據,這樣使得文件連續讀入字典緩沖區內,有利于壓縮率的提升,避免了文件切塊這種方法在重新構建字典時壓縮率的損失。
[0020]所述的數據請求模塊進一步包括:
[0021]請求信號控制模塊,根據每個Ram的使用狀態,為已使用過的Ram發送獲得新數據的請求信號,并將新數據塊寫入該Ram中;在當前數據塊處理的同時,通過不斷為已使用過的Ram請求新的數據塊,避免了等待新數據塊所帶來的時間消耗;
[0022]數據塊計數模塊,用于計算已輸入的數據塊個數并判斷最后一個數據塊存放于哪個Ram當中。
[0023]所述的壓縮配置模塊配置的壓縮偏好為5種:壓縮率最優、壓縮率較好、默認、速率較好、速率最優。不同的壓縮級別對應不同的參數配置,不同的參數配置又會影響壓縮處理時對壓縮率和壓縮速率的偏好。
[0024]所述的Hash計算模塊進一步包括:hash讀數據模塊、地址產生模塊、hash模塊以及hash鏈更新模塊;
[0025]hash讀數據模塊,從字典維護模塊的字典緩沖區中獲取新的數據,以每3個字符一組作為當前字符串輸出給hash模塊計算其hash值;
[0026]地址產生模塊,產生每組當前字符串輸出時對應的字典內的地址;
[0027]hash模塊,接收hash讀數據模塊讀取的當前字符串并計算每組當前字符串的hash 值;
[0028]hash鏈更新模塊,以當前字符串的hash值為地址從字典維護模塊的字典中的head ram中獲取數據,若head ram中有數據則說明字典中存在匹配串并輸出匹配結果。
[0029]所述hash模塊計算每組字符的Hash值根據不同的壓縮偏好選擇雙hash函數或者單hash函數進行計算,產生兩個15位的hash值或者一個15位的hash值。Hash計算模塊提供的雙hash函數可以極大的消除偽匹配信息。
[0030]所述的匹配計算模塊進一步包括:
[0031]match讀數據模塊,用于根據Hash計算模塊中相互匹配的當前串地址和匹配串地址發送讀信號,從字典維護模塊的字典緩沖區中獲取當前字符串以及匹配字符串;
[0032]match接收數據模塊,用于接收match讀數據模塊獲取的當前字符串或者匹配字符串數據,并根據起始地址進行微調,使得當前字符串和匹配字符串數據頭對齊;
[0033]匹配模塊,用于計算當前字符串和匹配字符串的匹配長度和匹配距離并發送;匹配信息發送模塊,用于存儲匹配模塊計算出的最大匹配長度和其對應的匹配距離,待所有匹配工作完成后發送匹配信息;
[0034]literal讀數據模塊,用于根據Hash計算模塊中產生的未匹配字符串的起始地址和結束地址發送讀信號,從字典緩沖區中獲取待輸出的未匹配字符串;
[0035]literal發送模塊,用于發送literal讀數據模塊獲取的未匹配的字符串以及所有數據處理完成后的EOB標志位。
[0036]本發明提供一種基于硬件的可配置的數據壓縮系統與現有技術相比具有如下優占.V.
[0037]1、本發明使用可編程邏輯器件(FPGA)來實現數據壓縮功能,附加相關與PC機通信的模塊來實現該數據壓縮系統,通過采用LZ77無損壓縮算法,并根據該算法設計合理的硬件電路結構,從而有