两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種硬件lz77壓縮實現(xiàn)系統(tǒng)及其實現(xiàn)方法

文檔序號:7523438閱讀:392來源:國知局
專利名稱:一種硬件lz77壓縮實現(xiàn)系統(tǒng)及其實現(xiàn)方法
技術領域
本發(fā)明涉及數(shù)據(jù)壓縮,特別是采用乒乓操作的硬件LZ77壓縮實現(xiàn)系統(tǒng)及其實現(xiàn)方法。
背景技術
隨著信息和通信技術的迅猛發(fā)展,數(shù)據(jù)交換量日益增大,大規(guī)模的數(shù)據(jù)處理也變的更加的繁雜。對于如此龐大的數(shù)據(jù)必須進行有效的壓縮,才能夠有效的減少數(shù)據(jù)的存儲量,最大限度的合理利用有限的數(shù)據(jù)傳輸帶寬。除此之外,壓縮后的數(shù)據(jù)在一定程度上是對原始數(shù)據(jù)的加密,能夠更好的保護數(shù)據(jù)。數(shù)據(jù)壓縮可分成兩種類型,一種叫做無損壓縮,另一種叫做有損壓縮。無損壓縮是指使用壓縮后的數(shù)據(jù)進行重構(或者叫做還原,解壓縮),重構后的數(shù)據(jù)與原來的數(shù)據(jù)完全相同;無損壓縮用于要求重構的信號與原始信號完全一致的場合。一個很常見的例子是磁盤文件的壓縮。根據(jù)目前的技術水平,無損壓縮算法一般可以把普通文件的數(shù)據(jù)壓縮到原來的1/2 1/4。大多數(shù)壓縮程序使用基于自適應字典的LZ算法來縮小文件。“LZ”指的是此算法的發(fā)明者Lempel和Ziv,“字典”指的是對數(shù)據(jù)塊進行歸類的方法。目前,絕大部分的壓縮還是有軟件實現(xiàn),對數(shù)據(jù)的壓縮處理操作仍然是由中央處理器(CPU)來完成的,當面對海量數(shù)據(jù)處理時,必然會占用大量的CPU資源,使得在進行數(shù)據(jù)壓縮的同時進行其他操作變成了難題。除此之外,軟件壓縮是一種順序進行的操作,無法取得高效率的并行運算。因此,如何有效的提高壓縮算法的效率,減輕海量數(shù)據(jù)壓縮給CPU帶來的壓力成為了現(xiàn)有的軟件壓縮解壓縮技術的主要問題。

發(fā)明內(nèi)容
本發(fā)明要解決的一個技術問題是提供一種硬件LZ77壓縮實現(xiàn)系統(tǒng)和方法,能夠有效的提高LZ77壓縮算法的效率,將CPU從海量數(shù)據(jù)壓縮中解脫出來。本發(fā)明為實現(xiàn)上述目的,采用如下技術方案
一種硬件LZ77壓縮實現(xiàn)系統(tǒng),其特征在于,該系統(tǒng)包括
PCIE接口模塊,用于實現(xiàn)與上位機的通信;
數(shù)據(jù)直接訪問模塊DMA,用于實現(xiàn)數(shù)據(jù)的直接訪問;
數(shù)據(jù)打包解包模塊,用于實現(xiàn)數(shù)據(jù)通信時對數(shù)據(jù)的組包和解包操作;
數(shù)據(jù)寫入緩存模塊,用于緩存待壓縮的數(shù)據(jù);
壓縮算法模塊,用于實現(xiàn)重復字符串的查找,計算重復字符串的匹配長度,進行LZ77編碼;
字典模塊,用于存儲歷史字符串;
非定長碼元拼接模塊,用于將非定長的編碼高速拼接成定長的數(shù)據(jù)塊; 數(shù)據(jù)讀出緩存模塊,用于緩存壓縮后的數(shù)據(jù)。其進一步特征在于,所述的數(shù)據(jù)寫入緩存模塊包括
兩個如隨機存取存儲器RAM或者先入先出存儲器FIFO的數(shù)據(jù)存儲裝置,用于存儲待壓縮的數(shù)據(jù);
多路選擇器,用于選擇將待壓縮的數(shù)據(jù)存儲在兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置;
通過多路選擇器和兩個數(shù)據(jù)存儲裝置實現(xiàn)數(shù)據(jù)寫入的乒乓操作。所述的壓縮算法模塊包括
數(shù)據(jù)暫存模塊,用于臨時暫存一定量的數(shù)據(jù);
字典讀取模塊,用于產(chǎn)生字典的讀控制信號和讀取字典中的數(shù)據(jù);
最大長度匹配模塊,用于計算出現(xiàn)重復字符串時的最大重復長度;
LZ77編碼模塊,用于對待壓縮數(shù)據(jù)進行相應的編碼;
字典更新模塊,用于產(chǎn)生字典的寫控制信號和更新字典中的數(shù)據(jù)。根據(jù)權利要求1所述的硬件LZ77壓縮實現(xiàn)系統(tǒng),其特征在于,所述的字典模塊包括
哈希表模塊,用于存儲最新的歷史字典信息;
字典鏈表模塊,用于存儲其他的歷史字典信息;
索引初始化模塊,用于初始化哈希表模塊;
鏈表初始化模塊,用于初始化字典鏈表模塊。所述的非定長碼元拼接模塊包括
非定長碼元到定長碼元轉換模塊,用于將非定長的數(shù)據(jù)編碼拼接成定長的數(shù)據(jù);
文件大小計算模塊,用于計算文件壓縮后的數(shù)據(jù)個數(shù),并與壓縮前的文件數(shù)據(jù)個數(shù)比
較;
壓縮模式選擇模塊,根據(jù)文件壓縮前和壓縮后的數(shù)據(jù)個數(shù)的多少選取壓縮模式;
數(shù)據(jù)直接存儲模塊,用于當數(shù)據(jù)選擇直接存儲壓縮模式時對數(shù)據(jù)的操作。所述的數(shù)據(jù)讀出緩存模塊包括
兩個如隨機存取存儲器RAM或者先入先出存儲器FIFO的數(shù)據(jù)存儲裝置,用于存儲壓縮后的數(shù)據(jù);
寫入數(shù)據(jù)多路選擇器,用于選擇將壓縮后的數(shù)據(jù)寫入兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置;
讀出數(shù)據(jù)多路選擇器,用于選擇讀出兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置中的數(shù)據(jù)。進一步的,上述字典模塊的哈希表模塊包括
兩個如隨機存取存儲器RAM或者內(nèi)容可尋址存儲器CAM的數(shù)據(jù)存儲裝置,用于存儲最新的歷史字典信息;
寫入多路選擇器,用于選擇使用兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置存儲最新的歷史字典信息;
讀出多路選擇器,用于選擇讀取兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置中的字典信息; 初始化多路選擇器,用于選擇初始化兩個數(shù)據(jù)存儲裝置中的一個數(shù)據(jù)存儲裝置,交替初始化兩個數(shù)據(jù)存儲裝置,提高壓縮的效率。上述字典模塊的字典鏈表模塊包括
兩個如隨機存取存儲器RAM或者內(nèi)容可尋址存儲器CAM的數(shù)據(jù)存儲裝置,用于存儲其他的歷史字典信息;
寫入多路選擇器,用于選擇使用兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置存儲最新的歷史字典信息;
讀出多路選擇器,用于選擇讀取兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置中的字典信息;
初始化多路選擇器,用于選擇初始化兩個數(shù)據(jù)存儲裝置中的一個數(shù)據(jù)存儲裝置,交替初始化兩個數(shù)據(jù)存儲裝置,提高壓縮的效率。上述非定長碼元拼接模塊的非定長碼元到定長碼元轉換模塊包括
非定長碼元拼接成較短定長數(shù)據(jù)模塊,用于將壓縮算法模塊輸出的非定長編碼拼接成較短的定長數(shù)據(jù);
較短數(shù)據(jù)拼接成較長數(shù)據(jù)模塊,用于將非定長碼元拼接成較短定長數(shù)據(jù)模塊輸出的較短數(shù)據(jù)拼接成較長的數(shù)據(jù),與非定長碼元拼接成較短定長數(shù)據(jù)模塊并行運行,加速了拼接的過程。一種硬件LZ77壓縮實現(xiàn)方法,包括下述步驟
(1)緩存待壓縮的數(shù)據(jù);
(2)對字符串數(shù)據(jù)進行壓縮編碼;
(3)拼接非定長的數(shù)據(jù);
(4)緩存壓縮后的數(shù)據(jù)。其進一步特征在于,所述步驟(I)緩存待壓縮的數(shù)據(jù)使用多路選擇器控制待壓縮的數(shù)據(jù)存儲到兩個數(shù)據(jù)存儲裝置中。所述步驟(2)對字符串數(shù)據(jù)進行壓縮編碼過程包括
壓縮數(shù)據(jù)時,取一定量的數(shù)據(jù)進行哈希變換,在哈希表中查找,若未找到,則所取的一定量的數(shù)據(jù)是新字符,以新字符編碼輸出非定長編碼,若找到,則所取的一定量的數(shù)據(jù)是重復字符串,以此為數(shù)據(jù)頭尋找最大的匹配長度,以重復字符串編碼輸出非定長編碼;
壓縮過程中,根據(jù)哈希表和字典鏈表反饋的信號,對待壓縮的數(shù)據(jù)進行相應的讀取操作,對哈希表和字典鏈表中的數(shù)據(jù)進行相應的更新;
壓縮過程中交替初始化和使用兩個哈希表和兩個字典鏈表。所述步驟(3)的拼接非定長的數(shù)據(jù)過程包括
利用移位寄存器將非定長的數(shù)據(jù)拼接成定長數(shù)據(jù);
計算壓縮后的數(shù)據(jù)個數(shù),與壓縮前數(shù)據(jù)個數(shù)比較,選取適當?shù)膲嚎s模式,若壓縮后的數(shù)據(jù)個數(shù)多于壓縮前的數(shù)據(jù)個數(shù),選取直接存儲的方式,從緩存待壓縮的數(shù)據(jù)中讀取,若壓縮后的數(shù)據(jù)個數(shù)不多于壓縮前的數(shù)據(jù)個數(shù),選取壓縮存儲的方式;
添加壓縮后的數(shù)據(jù)塊頭;
對壓縮后的數(shù)據(jù)尾部進行字節(jié)對齊處理;
與壓縮數(shù)據(jù)并行操作處理,提高了壓縮的效率。
所述步驟(4)緩存壓縮后的數(shù)據(jù)過程包括
使用寫入數(shù)據(jù)多路選擇器,選擇將壓縮后的數(shù)據(jù)寫入兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置;
若一個數(shù)據(jù)塊已經(jīng)完成壓縮,則利用讀出數(shù)據(jù)多路選擇器,選擇讀出對應的數(shù)據(jù)存儲裝置中的數(shù)據(jù)。本發(fā)明通過一種硬件來實現(xiàn)LZ77壓縮,能夠有效的提高LZ77壓縮算法的效率,將CPU從海量數(shù)據(jù)壓縮中解脫出來。


圖1為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的結構示意 圖2為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施方式
的結構示意 圖3為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中數(shù)據(jù)寫入緩存模塊的具體實施方式
的結構示意 圖4為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的另一個具體實施方式
的結構示意圖;圖5為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中壓縮算法模塊的具體實施方式
的結構示意 圖6為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的另一個具體實施方式
的結構示意圖;圖7為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中字典模塊的具體實施方式
的結構示意 圖8為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的另一個具體實施方式
的結構示意圖;圖9是本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中非定長碼元拼接模塊的具體實施方式
的結構示意 圖10為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的另一個具體實施方式
的結構示意圖;圖11為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中數(shù)據(jù)讀出緩存模塊的具體實施方式
結構示意 圖12為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的另一個具體實施方式
的結構示意圖;圖13為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中哈希表模塊或者字典鏈表模塊的具體實施方式
的結構示意 圖14為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的另一個具體實施方式
的結構示意圖;圖15為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中非定長碼元到定長碼元轉換模塊的具體實施方式
的結構示意 圖16為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)方法的流程 圖17為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)方法的另一個實施實例的流程 圖18為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)方法的另一個實施實例的流程 圖19為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)方法的另一個實施實例的流程 圖20為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)方法的另一個實施實例的流程 圖21為奔放名提供的硬件LZ77壓縮實現(xiàn)方法的一個具體應用實例的流程圖,
具體實施方式
下面參照附圖用本發(fā)明的一個示例性實施實例對本發(fā)明進行全面細致的描述和說明。圖1為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的結構示意圖。如圖1所示,硬件LZ77壓縮實現(xiàn)系統(tǒng)100包括PCIE接口模塊101、數(shù)據(jù)直接訪問模塊DMA102、數(shù)據(jù)打包解包模塊103、數(shù)據(jù)寫入緩存模塊104、壓縮算法模塊105、字典模塊106、非定長碼元拼接模塊107、數(shù)據(jù)讀出緩存模塊108。其中,PCIE接口模塊101,用于實現(xiàn)與上位機的通信。例如,上位機配置PCIE對應的寄存器,實現(xiàn)上位機與硬件LZ77壓縮實現(xiàn)系統(tǒng)間數(shù)據(jù)的通信。數(shù)據(jù)直接訪問模塊DMA102,用于實現(xiàn)數(shù)據(jù)的直接訪問。例如,根據(jù)上位機配置的地址和數(shù)據(jù)長度,從磁盤或者數(shù)據(jù)存儲裝置中從指定的地址讀取指定長度的數(shù)據(jù),或者想指定的地址中寫入指定長度的數(shù)據(jù)。 數(shù)據(jù)打包解包模塊103,用于實現(xiàn)數(shù)據(jù)通信時對數(shù)據(jù)包的組包和解包操作。例如,從上位機讀取數(shù)據(jù)時,解析傳輸至數(shù)據(jù)寫入緩存模塊的數(shù)據(jù)包,去除數(shù)據(jù)包頭、數(shù)據(jù)包尾和數(shù)據(jù)校驗信息;向上位機寫入數(shù)據(jù)時,將從數(shù)據(jù)讀出緩存模塊中讀取的數(shù)據(jù)添加數(shù)據(jù)包頭、數(shù)據(jù)包尾和校驗信息。數(shù)據(jù)寫入緩存模塊104,用于緩存待壓縮的數(shù)據(jù)。例如,從模塊的接口寫入待壓縮的數(shù)據(jù),經(jīng)過數(shù)據(jù)寫入緩存模塊104,可以以乒乓方式讀取待壓縮的數(shù)據(jù),減少待壓縮數(shù)據(jù)的讀取時間。壓縮算法模塊105,用于將實現(xiàn)重復字符串的查找,計算重復字符串的匹配長度,進行LZ77編碼。例如,從數(shù)據(jù)緩存模塊104中讀取一定量得字符串數(shù)據(jù),對字符串進行哈希變換,從字典模塊106中查找,根據(jù)字典模塊106的反饋信號判斷索取字符串數(shù)據(jù)是否為重復字符串,若是則尋找最大的匹配長度并編碼輸出,若不是,則以新字符編碼輸出;同時,根據(jù)字典模塊106的反饋信號,從字典模塊106中讀取數(shù)據(jù)以獲得最大的匹配長度,或者向字典模塊106中寫入最新的字典信息,完成字典模塊106中數(shù)據(jù)的更新。字典模塊106,用于存儲歷史字符串。例如,一定量的字符串數(shù)據(jù)經(jīng)過壓縮算法模塊105之后,會產(chǎn)生相應的控制信號,與字典模塊106之間進行數(shù)據(jù)通信,將最新的字典信息存儲在字典模塊106中。非定長碼元拼接模塊107,用于將非定長的編碼高速拼接程定長的數(shù)據(jù)塊。例如,一定量的字符串數(shù)據(jù)經(jīng)過壓縮算法模塊105后變成了非定長的LZ77編碼,非定長碼元拼接模塊107會將這些非定長的LZ77編碼高速拼接成定長的數(shù)據(jù)。數(shù)據(jù)讀出緩存模塊108,用于緩存壓縮后的數(shù)據(jù)。例如,一個數(shù)據(jù)塊已經(jīng)完成數(shù)據(jù)壓縮,利用讀出數(shù)據(jù)多路選擇器,選擇讀出對應的數(shù)據(jù)存儲裝置中的數(shù)據(jù),同時,利用寫入數(shù)據(jù)多路選擇器,選擇將壓縮后的數(shù)據(jù)寫入到另外一個數(shù)據(jù)存儲裝置中,利用兩個存儲裝置的交替讀寫實現(xiàn)了讀出壓縮數(shù)據(jù)的乒乓操作。圖2為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施方式
的結構示意圖。如圖2所示,硬件LZ77壓縮實現(xiàn)系統(tǒng)200包括士(^接口模塊201、數(shù)據(jù)直接訪問模塊(DMA) 202、數(shù)據(jù)打包解包模塊203、數(shù)據(jù)寫入緩存模塊204、壓縮算法模塊205、字典模塊206、非定長碼元拼接模塊207、數(shù)據(jù)讀出緩存模塊208 ;其中PCIE接口模塊201、數(shù)據(jù)直接訪問模塊(DMA) 202、數(shù)據(jù)打包解包模塊203、壓縮算法模塊205、字典模塊206、非定長碼元拼接模塊207、數(shù)據(jù)讀出緩存模塊208可以分別和圖1中所示的PCIE接口模塊101、數(shù)據(jù)直接訪問模塊(DMA) 102、數(shù)據(jù)打包解包模塊103、壓縮算法模塊105、字典模塊106、非定長碼元拼接模塊107、數(shù)據(jù)讀出緩存模塊108具有相同的結構,這里不再過多的闡述其具體的技術內(nèi)容。如圖2所示,數(shù)據(jù)寫入緩存模塊204進一步的包括數(shù)據(jù)存儲裝置2041、數(shù)據(jù)存儲裝置2042和多路選擇器2043。其中,數(shù)據(jù)存儲裝置2041和數(shù)據(jù)存儲裝置2042,用于存儲待壓縮的數(shù)據(jù)。例如,可以采用隨機存取存儲器(RAM)或先入先出存儲器(FIFO)等本專業(yè)認識所熟知的數(shù)據(jù)存儲裝置實現(xiàn),數(shù)據(jù)存儲裝置的數(shù)據(jù)寬度(Width)和數(shù)據(jù)深度(D印th)可根據(jù)數(shù)據(jù)要求配置。多路選擇器2043,用于選擇將壓縮后的數(shù)據(jù)寫入兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置。例如,通過多路選擇器2043將數(shù)據(jù)交替的寫入數(shù)據(jù)存儲裝置2041和數(shù)據(jù)存儲裝置2042中,以實現(xiàn)數(shù)據(jù)寫入的乒乓操作。圖3為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中數(shù)據(jù)寫入緩存模塊的具體實施方式
結構示意圖。 如圖3所示,數(shù)據(jù)寫入緩存300模塊包括數(shù)據(jù)存儲裝置301、數(shù)據(jù)存儲裝置302和多路選擇器303。在實施實例中具體的操作為,當硬件LZ77壓縮系統(tǒng)初始化后,系統(tǒng)將開始向數(shù)據(jù)寫入緩存模塊300接口處寫入待壓縮數(shù)據(jù),通過多路選擇器(MUX)303選擇將待壓縮數(shù)據(jù)寫入到兩個數(shù)據(jù)存儲裝置中的一個,當一個數(shù)據(jù)存儲裝置已經(jīng)數(shù)據(jù)寫滿,同時另一個數(shù)據(jù)存儲裝置已經(jīng)數(shù)據(jù)讀空時,向另一個數(shù)據(jù)存儲裝置中寫入新的待壓縮數(shù)據(jù),如此的交替循環(huán)向兩個數(shù)據(jù)存儲裝置中寫入數(shù)據(jù),以實現(xiàn)數(shù)據(jù)寫入的乒乓操作,這個過程將持續(xù)到所有的數(shù)據(jù)塊全部傳輸完畢為止。從上述敘述中可見,通過數(shù)據(jù)寫入緩存300可以實現(xiàn)數(shù)據(jù)寫入的高度連續(xù)性,提高了在數(shù)據(jù)壓縮時針對數(shù)據(jù)讀操作的效率。圖4為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的另一個具體實施方式
的結構示意圖。如圖4所示,硬件LZ77壓縮實現(xiàn)系統(tǒng)400包括PCIE接口模塊401、數(shù)據(jù)直接訪問模塊(DMA) 402、數(shù)據(jù)打包解包模塊403、數(shù)據(jù)寫入緩存模塊404、壓縮算法模塊405、字典模塊406、非定長碼元拼接模塊407、數(shù)據(jù)讀出緩存模塊408 ;其中PCIE接口模塊401、數(shù)據(jù)直接訪問模塊(DMA) 402、數(shù)據(jù)打包解包模塊403、數(shù)據(jù)寫入緩存模塊404、字典模塊406、非定長碼元拼接模塊407、數(shù)據(jù)讀出緩存模塊408可以分別和圖1中所示的PCIE接口模塊101、數(shù)據(jù)直接訪問模塊(DMA) 102、數(shù)據(jù)打包解包模塊103、數(shù)據(jù)寫入緩存模塊104、字典模塊106、非定長碼元拼接模塊107、數(shù)據(jù)讀出緩存模塊108具有相同的結構,這里不再過多的闡述其具體的技術內(nèi)容。如圖4所示,壓縮算法模塊405進一步包括數(shù)據(jù)暫存模塊4051、字典讀取模塊4052、最大長度匹配模塊4053、LZ77編碼模塊4054和字典更新模塊4055。其中,數(shù)據(jù)暫存模塊4051,用于臨時暫存一定量的數(shù)據(jù)。例如,讀取m Byte的數(shù)據(jù)暫存在數(shù)據(jù)暫存模塊4051中,便于壓縮算法模塊405的高效哈希變換。字典讀取模塊4052,用于產(chǎn)生字典的讀控制信號和讀取字典中的數(shù)據(jù)。例如,對數(shù)據(jù)暫存模塊4051中的數(shù)據(jù)進行哈希變換后,產(chǎn)生對應的控制信號和地址信號,讀取字典中指定位置的信息,根據(jù)字典的反饋信息判斷數(shù)據(jù)暫存模塊4051中的數(shù)據(jù)是否為重復字符串,若是,則進行壓縮處理;若不是,則進行不壓縮處理。最大長度匹配模塊4053,用于計算出現(xiàn)字符串時的最大重復長度。例如,已經(jīng)壓縮過的數(shù)據(jù)中有“ab”和“abcde”,待壓縮的數(shù)據(jù)為“abcde”,則通過最大長度匹配模塊可以計算出重復字符串的最大重復長度,一定程度上提高了壓縮的性能。LZ77編碼模塊4054,用于對待壓縮的數(shù)據(jù)進行相應的編碼。例如,當字典讀取模塊4052反饋信號判定數(shù)據(jù)為重復字符串,同時由最大長度匹配模塊4053計算出了最大匹配長度,則LZ77編碼模塊4054用重復字符串對應的編碼方式進行編碼替代原來的數(shù)據(jù);當字典讀取模塊4052反饋信號判定數(shù)據(jù)為新字符時,則LZ77編碼模塊4054用新字符對應的編碼代替原來的數(shù)據(jù)。 字典更新模塊4055,用于產(chǎn)生字典的寫控制信號和更新字典中的數(shù)據(jù)。例如,當確定字符為新字符或者字符串為重復字符串后,需要將字符或字符串的信息更新到字典中,字典更新模塊產(chǎn)生字典的寫控制信號,將字符或者字符串的信息寫到相應字典的指定位置中。圖5為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中壓縮算法模塊的具體實施方式
的結構示意圖。如圖5所示,壓縮算法模塊500包括數(shù)據(jù)暫存模塊501、字典讀取模塊502、最大長度匹配模塊503、LZ77編碼模塊504和字典更新模塊505。數(shù)據(jù)暫存模塊501中存儲一定量的數(shù)據(jù),由字典讀取模塊502針對其中的數(shù)據(jù)進行哈希變換后,產(chǎn)生相應的控制信號從字典中讀取數(shù)據(jù),根據(jù)字典反饋的信號判定數(shù)據(jù)是否為重復字符串,若是,則啟動最大長度匹配模塊503,計算重復字符串的最大重復長度,啟動LZ77編碼模塊504進行重復字符串編碼,若不是,則啟動LZ77編碼模塊504進行新字符編碼,同時,根據(jù)字典反饋的信號向字典中寫入所需數(shù)量的更新數(shù)據(jù)。由上述可見在壓縮算法模塊500中,對數(shù)據(jù)的讀寫操作及其的頻繁,數(shù)據(jù)暫存模塊501在一定的程度上減少了部分數(shù)據(jù)的讀寫操作,提高了哈希變換的效率,同時壓縮算法模塊500是一個相對較為獨立的模塊可以與其他的模塊并行運行,因此將寫入數(shù)據(jù)緩存300的功能發(fā)揮到了一個比較理想的狀態(tài)。圖6為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的另一個具體實施方式
的結構示意圖。如圖6所示,硬件LZ77壓縮實現(xiàn)系統(tǒng)600包括士(^接口模塊601、數(shù)據(jù)直接訪問模塊(DMA) 602、數(shù)據(jù)打包解包模塊603、數(shù)據(jù)寫入緩存模塊604、壓縮算法模塊605、字典模塊606、非定長碼元拼接模塊607、數(shù)據(jù)讀出緩存模塊608 ;其中PCIE接口模塊601、數(shù)據(jù)直接訪問模塊(DMA) 602、數(shù)據(jù)打包解包模塊603、數(shù)據(jù)寫入緩存模塊604、壓縮算法模塊605、非定長碼元拼接模塊607、數(shù)據(jù)讀出緩存模塊608可以分別和圖1中所示的PCIE接口模塊101、數(shù)據(jù)直接訪問模塊(DMA) 102、數(shù)據(jù)打包解包模塊103、數(shù)據(jù)寫入緩存模塊104、壓縮算法模塊105、非定長碼元拼接模塊107、數(shù)據(jù)讀出緩存模塊108具有相同的結構,這里不再過多的闡述其具體的技術內(nèi)容。如圖6所示,字典模塊606進一步包括哈希表模塊6061、字典鏈表模塊6062、索引初始化模塊6063和鏈表初始化模塊6064。
其中,哈希表模塊6061,用于存儲最新的歷史字典信息。例如,“ab”[l]是之前壓縮過的數(shù)據(jù),而“ab” [2]是剛壓縮好的數(shù)據(jù),則哈希表模塊6061會將最新的ab的信息即“ab” [2]的信息更新到哈希表模塊6061中指定存儲裝置的指定位置。字典鏈表模塊6062,用于存儲其他的歷史字典信息。例如,“ab” [I]是之前壓縮過的數(shù)據(jù),而“ab” [2]是剛壓縮好的數(shù)據(jù),則哈希表模塊6061會丟棄較舊的ab的信息即“ab”[I]的信息,此時字典鏈表模塊6062接收哈希表模塊6061丟棄的ab的信息即“ab”[I]的信息,將其存儲到字典鏈表模塊6062中指定存儲裝置的指定位置。索引初始化模塊6063,用于初始化哈希表模塊6061。例如,當完成一個數(shù)據(jù)塊的壓縮,需要壓縮另一個數(shù)據(jù)塊時,需要對哈希表進行清空操作,此時索引初始化模塊6063相應的對哈希表模塊6061進行清空初始化操作。鏈表初始化模塊6064,用于初始化字典鏈表模塊6062。例如,當完成一個數(shù)據(jù)塊 的壓縮,需要壓縮另一個數(shù)據(jù)塊時,需要對字典鏈表進行清空操作,此時鏈表初始化模塊6064相應的對字典鏈表模塊6062進行清空初始化操作。圖7為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中字典模塊的具體實施方式
的結構示意圖。如圖7所示,字典模塊700包括哈希表模塊701、字典鏈表模塊702、索引初始化模塊703和鏈表初始化模塊704。壓縮數(shù)據(jù)時,哈希表模塊701反饋數(shù)據(jù),用以判斷待壓縮的數(shù)據(jù)時新字符還是重復字符串,一旦確定后,哈希表模塊701接收最新的字典信息,將較舊的字典信息丟棄;字典鏈表模塊702接收哈希表模塊701丟棄的數(shù)據(jù),并將其存儲作為其他的歷史字典信息;當硬件LZ77壓縮系統(tǒng)初始化或者當完成一個數(shù)據(jù)塊壓縮時,索引初始化模塊703和鏈表初始化模塊704啟動,將哈希表模塊701和字典鏈表模塊702中的數(shù)據(jù)清空。圖8為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的另一個具體實施方式
的結構示意圖。如圖8所示,硬件LZ77壓縮實現(xiàn)系統(tǒng)800包括士(^接口模塊801、數(shù)據(jù)直接訪問模塊(DMA) 802、數(shù)據(jù)打包解包模塊803、數(shù)據(jù)寫入緩存模塊804、壓縮算法模塊805、字典模塊806、非定長碼元拼接模塊807、數(shù)據(jù)讀出緩存模塊808 ;其中PCIE接口模塊801、數(shù)據(jù)直接訪問模塊(DMA) 802、數(shù)據(jù)打包解包模塊803、數(shù)據(jù)寫入緩存模塊804、壓縮算法模塊805、字典模塊806、數(shù)據(jù)讀出緩存模塊808可以分別和圖1中所示的PCIE接口模塊101、數(shù)據(jù)直接訪問模塊(DMA) 102、數(shù)據(jù)打包解包模塊103、數(shù)據(jù)寫入緩存模塊104、壓縮算法模塊105、字典模塊106、數(shù)據(jù)讀出緩存模塊108具有相同的結構,這里不再過多的闡述其具體的技術內(nèi)容。如圖8所示,非定長碼元拼接模塊800進一步包括非定長碼元到定長碼元轉換模塊8071、文件大小計算模塊8072、壓縮模式選擇模塊8073和數(shù)據(jù)直接存儲模塊8074。其中,非定長碼元到定長碼元轉換模塊8071,用于將非定長的數(shù)據(jù)編碼拼接程定長的數(shù)據(jù)。例如,有非定長的數(shù)據(jù)編碼A和B,其中A編碼長度為16,B編碼長度為20,則經(jīng)過非定長碼元到定長碼元轉換模塊8071可變成定長的數(shù)據(jù)和剩余的編碼,定長的數(shù)據(jù)可以是8位、32位或者64位等,同時在壓縮后的數(shù)據(jù)塊前添加數(shù)據(jù)塊頭,并且當數(shù)據(jù)塊尾字節(jié)不對齊時補齊,使數(shù)據(jù)字節(jié)對齊。
文件大小計算模塊8072,用于計算文件壓縮后的數(shù)據(jù)個數(shù),并與壓縮前的文件數(shù)據(jù)個數(shù)比較。例如,文件數(shù)據(jù)壓縮前的數(shù)據(jù)個數(shù)為32K,而壓縮后的數(shù)據(jù)個數(shù)為20K。對以上的兩個信息進行比較,反饋相應的狀態(tài)和信號給壓縮模式選擇模塊8073.
壓縮模式選擇模塊8073,用于根據(jù)文件壓縮前和壓縮后的數(shù)據(jù)個數(shù)的多少選取壓縮模式。例如,如果數(shù)據(jù)壓縮前的數(shù)據(jù)個數(shù)為32K,壓縮后的數(shù)據(jù)個數(shù)為20K,則選取壓縮存儲模式;如果壓縮前的數(shù)據(jù)個數(shù)為1K,壓縮后的數(shù)據(jù)個數(shù)為2K,則選取直接存儲模式。數(shù)據(jù)直接存儲模塊8074,用于選擇直接存儲壓縮模式壓縮數(shù)據(jù)時對數(shù)據(jù)的操作。例如,如果壓縮前得數(shù)據(jù)個數(shù)為1K,壓縮后的數(shù)據(jù)個數(shù)為2K,壓縮模式選擇模塊8073選擇 直接存儲模式,數(shù)據(jù)直接存儲模塊8074啟動,直接從數(shù)據(jù)寫入緩存模塊中讀取對應的數(shù)據(jù),并添加相應的數(shù)據(jù)塊頭。圖9為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中非定長碼元拼接模塊的具體實施方式
的結構示意圖。如圖9所示,非定長碼元拼接模塊900包括非定長碼元到定長碼元轉換模塊901、文件大小計算模塊902、壓縮模式選擇模塊903和數(shù)據(jù)直接存儲模塊904。當有非定長碼元從非定長碼元拼接模塊900的接口輸入時,非定長碼元到定長碼元轉換模塊901將非定長碼元進行暫存和拼接操作直至能夠組成定長碼元時輸出,同時文件大小計算模塊902計算出經(jīng)過非定長碼元到定長碼元轉換模塊901處理后的數(shù)據(jù)的個數(shù),并與壓縮前的數(shù)據(jù)個數(shù)進行比較,把結果告訴壓縮模式選擇模塊903,選取合適的壓縮模式,如果壓縮模式選擇模塊903選取的是直接存儲模式,啟動數(shù)據(jù)直接存儲模塊904。通過上述的內(nèi)容可見,非定長碼元拼接模塊900與壓縮算法模塊之間完全是一個并行運行的流水線結構,這樣大大的加快了數(shù)據(jù)壓縮的效率。圖10為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的另一個具體實施方式
的結構示意圖。如圖10所示,硬件LZ77壓縮實現(xiàn)系統(tǒng)1000包括士(^接口模塊1001、數(shù)據(jù)直接訪問模塊(DMA) 1002、數(shù)據(jù)打包解包模塊1003、數(shù)據(jù)寫入緩存模塊1004、壓縮算法模塊1005、字典模塊1006、非定長碼元拼接模塊1007、數(shù)據(jù)讀出緩存模塊1008 ;其中PCIE接口模塊1001、數(shù)據(jù)直接訪問模塊(DMA) 1002、數(shù)據(jù)打包解包模塊1003、數(shù)據(jù)寫入緩存模塊1004、壓縮算法模塊1005、字典模塊1006、非定長碼元拼接模塊1007可以分別和圖1中所示的PCIE接口模塊101、數(shù)據(jù)直接訪問模塊(DMA) 102、數(shù)據(jù)打包解包模塊103、數(shù)據(jù)寫入緩存模塊104、壓縮算法模塊105、字典模塊106、非定長碼元拼接模塊107具有相同的結構,這里不再過多的闡述其具體的技術內(nèi)容。如圖10所示,數(shù)據(jù)讀出緩存模塊1008包括數(shù)據(jù)存儲裝置10081、數(shù)據(jù)存儲裝置10082、寫入數(shù)據(jù)多路選擇器10083和讀出數(shù)據(jù)多路選擇器10084。其中,數(shù)據(jù)存儲裝置10081和數(shù)據(jù)存儲裝置10082,用于存儲壓縮后的數(shù)據(jù),可以采用隨機存取存儲器(RAM)或者先入先出存儲器(FIFO)等本專業(yè)人士所熟知的存儲裝置實現(xiàn)。寫入數(shù)據(jù)多路選擇器10083,用于選擇將壓縮后的數(shù)據(jù)寫入兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置。例如,要將壓縮后數(shù)據(jù)存入數(shù)據(jù)存儲裝置10081,則寫入數(shù)據(jù)多路選擇器10083選通數(shù)據(jù)接口和數(shù)據(jù)存儲裝置10081之間的信號和數(shù)據(jù)通路,從而可向數(shù)據(jù)存儲裝置10081中寫入壓縮后的數(shù)據(jù)。讀出數(shù)據(jù)多路選擇器10084,用于選擇讀出兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置中的數(shù)據(jù)。例如,當前正在向數(shù)據(jù)存儲裝置10081中寫入壓縮后的數(shù)據(jù),同時,有數(shù)據(jù)讀出信號產(chǎn)生,則將數(shù)據(jù)存儲裝置10082中的數(shù)據(jù)讀出;同樣如果正在向數(shù)據(jù)存儲裝置10082中寫入壓縮后的數(shù)據(jù),同時,有數(shù)據(jù)讀出信號產(chǎn)生,則將數(shù)據(jù)存儲裝置10081中的數(shù)據(jù)讀出。圖11為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中數(shù)據(jù)讀出緩存模塊的具體實施方式
的結構示意圖。如圖11所示,數(shù)據(jù)讀出緩存模塊1100包括數(shù)據(jù)存儲裝置1101、數(shù)據(jù)存儲裝置1102、寫入多路選擇器1103和讀出多路選擇器1104。當正在執(zhí)行數(shù)據(jù)壓縮時,由寫入多路選擇器1103選擇數(shù)據(jù)存儲裝置1101或數(shù)據(jù)存儲裝置1102用來存儲壓縮后的數(shù)據(jù),同時若有數(shù)據(jù)讀出信號產(chǎn)生,則由讀出多路選擇器1104選擇另外一個數(shù)據(jù)存儲裝置,并讀取該數(shù)據(jù)存儲裝置中的數(shù)據(jù)。例如,寫入多路選擇器1103選擇數(shù)據(jù)存儲裝置1101用于存儲壓縮后的數(shù)據(jù),若此時有讀出信號產(chǎn)生,則由讀出多路選擇器1104選擇數(shù)據(jù)存儲裝置1102,并將其中的數(shù)據(jù)讀出,當數(shù)據(jù)存儲裝置1102中的數(shù)據(jù)全部讀出,等待完成一個數(shù)據(jù)塊得壓縮,即數(shù)據(jù)存儲裝置中1101中的數(shù)據(jù)已準備好可以讀出時,寫入多路選擇器1103轉而選擇數(shù)據(jù)存儲器1102用于存儲壓縮后的數(shù)據(jù),如此反復,實現(xiàn)了數(shù)據(jù)讀出的乒乓,提高了數(shù)據(jù)讀出時的效率。由上述過程可見,數(shù)據(jù)讀出緩存模塊1100與壓縮算法模塊和非定長碼元拼接模塊也是并行運行的,這也從一定程度上加速了壓縮的效率。圖12為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的另一個具體實施方式
的結構示意圖。如圖12所示,硬件LZ77壓縮實現(xiàn)系統(tǒng)1200包括PCIE接口模塊1201、數(shù)據(jù)直接訪問模塊(DMA) 1202、數(shù)據(jù)打包解包模塊1203、數(shù)據(jù)寫入緩存模塊1204、壓縮算法模塊1205、哈希表模塊12061、字典鏈表模塊12062、索引初始化模塊12063、鏈表初始化模塊12064、非定長碼元拼接模塊1207、數(shù)據(jù)讀出緩存模塊1208 ;其中PCIE接口模塊1201、數(shù)據(jù)直接訪問模塊(DMA) 1202、數(shù)據(jù)打包解包模塊1203、數(shù)據(jù)寫入緩存模塊1204、壓縮算法模塊1205、索引初始化模塊12063、鏈表初始化模塊12064、非定長碼元拼接模塊1207、數(shù)據(jù)讀出緩存模塊1208可以分別和圖6中所示的PCIE接口模塊601、數(shù)據(jù)直接訪問模塊(DMA)602、數(shù)據(jù)打包解包模塊603、數(shù)據(jù)寫入緩存模塊604、壓縮算法模塊605、索引初始化模塊6063、鏈表初始化模塊6064、非定長碼元拼接模塊607、數(shù)據(jù)讀出緩存模塊608具有相同的結構,這里不再過多的闡述其具體的技術內(nèi)容。如圖12所示,哈希表模塊12061進一步包括數(shù)據(jù)存儲裝置120611、數(shù)據(jù)存儲裝置120612、多路選擇器120613和初始化多路選擇器120614 ;字典鏈表模塊12062進一步包括數(shù)據(jù)存儲裝置120621、數(shù)據(jù)存儲裝置120622、多路選擇器120623和初始化多路選擇器120624。其中數(shù)據(jù)存儲裝置120611和數(shù)據(jù)存儲裝置120612,用于存儲最新的歷史字典信息。數(shù)據(jù)存儲裝置120621和數(shù)據(jù)存儲裝置120622,用于存儲字典的其他歷史字典信息。多路選擇器120613,用于選擇使用兩個數(shù)據(jù)存儲裝置中的其中的一個數(shù)據(jù)存儲裝置存儲最新的歷史字典信息;多路選擇器120623,用于選擇使用兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置存儲其他的歷史字典信息。初始化多選擇器120614,用于選擇初始換兩個數(shù)據(jù)存儲裝置中的一個數(shù)據(jù)存儲裝置,交替初始化兩個數(shù)據(jù)存儲裝置,提高壓縮的效率;同樣初始化多路選擇器120624也是起到這個作用。圖13為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中哈希表模塊或者字典鏈表模塊的具體實施方式
的結構示意圖。如圖13所示,哈希表模塊或者字典鏈表模塊1300包括數(shù)據(jù)存儲裝置1301、數(shù)據(jù)存儲裝置1302、多路選擇器1303和初始化所路選擇器1304。 壓縮數(shù)據(jù)時,多路選擇器1303選擇需要使用的數(shù)據(jù)存儲裝置1301或數(shù)據(jù)存儲裝置1302,用選擇的數(shù)據(jù)存儲裝置存儲字典信息,同時初始化多路選擇器1304選擇另一個數(shù)據(jù)存儲裝置對數(shù)據(jù)存儲裝置中的字典信息進行清空操作。由上述的過程可見,在壓縮的過程中通過兩對字典數(shù)據(jù)的交替使用和初始化,力口塊了壓縮的效率。圖14為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的另一個具體實施方式
的結構示意圖。如圖14所示,硬件LZ77壓縮實現(xiàn)系統(tǒng)1400包括士(^接口模塊14()1、數(shù)據(jù)直接訪問模塊(DMA) 1402、數(shù)據(jù)打包解包模塊1403、數(shù)據(jù)寫入緩存模塊1404、壓縮算法模塊1405、字典模塊1406、非定長碼元到定長碼元轉換模塊14071、文件大小計算模塊14072、壓縮模式選擇模塊14073、數(shù)據(jù)直接存儲模塊14074、數(shù)據(jù)讀出緩存模塊1408 ;其中PCIE接口模塊1401、數(shù)據(jù)直接訪問模塊(DMA) 1402、數(shù)據(jù)打包解包模塊1403、數(shù)據(jù)寫入緩存模塊1404、壓縮算法模塊1405、字典模塊1406、文件大小計算模塊14072、壓縮模式選擇模塊14073、數(shù)據(jù)直接存儲模塊14074、數(shù)據(jù)讀出緩存模塊1408可以分別和圖8中所示的PCIE接口模塊801、數(shù)據(jù)直接訪問模塊(DMA) 802、數(shù)據(jù)打包解包模塊803、數(shù)據(jù)寫入緩存模塊804、壓縮算法模塊805、字典模塊806、文件大小計算模塊8072、壓縮模式選擇模塊8073、數(shù)據(jù)直接存儲模塊8074、、數(shù)據(jù)讀出緩存模塊808具有相同的結構,這里不再過多的闡述其具體的技術內(nèi)容。如圖14所示,非定長碼元到定長碼元轉換模塊14071進一步包括非定長碼元拼接成較短定長數(shù)據(jù)模塊140711和較短數(shù)據(jù)拼接成較長數(shù)據(jù)模塊140712。其中,非定長碼元拼接成較短定長數(shù)據(jù)模塊140711,用于將壓縮算法模塊輸出的非定長編碼拼接成較短的定長數(shù)據(jù)。例如,壓縮算法模塊輸出編碼中分別有1比特、3比特、5比特、7比特、16bit,需要將這些數(shù)據(jù)拼接成8比特的整字型數(shù)據(jù)。較短數(shù)據(jù)拼接成較長數(shù)據(jù)模塊140712,用于將非定長碼元拼接成較短定長數(shù)據(jù)模塊140711輸出的較短定長數(shù)據(jù)拼接成較長的數(shù)據(jù)。例如,將8比特的數(shù)據(jù)拼接成32比特或者64比特的數(shù)據(jù)。圖15為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)系統(tǒng)的一個具體實施實例中非定長碼元到定長碼元轉換模塊的具體實施方式
的結構示意圖。如圖15所示,非定長碼元到定長碼元轉換模塊1500包括非定長碼元拼接成較短定長數(shù)據(jù)模塊1501和較短數(shù)據(jù)拼接成較長數(shù)據(jù)模塊1502。進行非定長碼元到定長碼元的拼接時,非定長數(shù)據(jù)傳至非定長碼元到定長碼元轉換模塊1500的數(shù)據(jù)輸入接口,先由非定長碼元拼接成較短定長數(shù)據(jù)模塊1501將非定長的編碼拼接成較短的定長數(shù)據(jù),再有較短數(shù)據(jù)拼接成較長數(shù)據(jù)模塊1502將較短的定長數(shù)據(jù)拼接成較長的符合數(shù)據(jù)傳輸格式要求的定長數(shù)據(jù)輸出,這個過程中,數(shù)據(jù)的拼接是流水化的,具有高速拼接的功能,與此同時也大大的減少了硬件資源的消耗。圖16為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)方法的流程圖。如圖16所示硬件LZ77壓縮實現(xiàn)方法的流程1600包括步驟1601、步驟1602、步驟1603和步驟1604。其中,步驟1601,緩存待壓縮的數(shù)據(jù)。例如,利用多路選擇器303、數(shù)據(jù)存儲裝置301和數(shù)據(jù)存儲裝置302實現(xiàn)數(shù)據(jù)乒乓寫入的操作。步驟1602,對字符串數(shù)據(jù)進行編碼。例如,從暫存數(shù)據(jù)模塊501中取數(shù)據(jù)送入字典讀取模502中進行哈希變換,根據(jù)哈希表模塊701的反饋信號判斷所取數(shù)據(jù)是新字符還是重復字符串,結合最大長度匹配模塊503和字典鏈表模塊702計算得出最大的匹配長度和最大匹配字符串的指針后,送入LZ77編碼模塊504中進行LZ77非定長編碼輸出;同時,字典更新模塊505將壓縮了的數(shù)據(jù)信息,更新到哈希表模塊701和字典鏈表數(shù)據(jù)模塊702中。步驟1603,拼接非定長的數(shù)據(jù)。例如,非定長數(shù)據(jù)送至非定長碼元拼接成較短定長數(shù)據(jù)模塊1501輸出較短定長數(shù)據(jù),再由較短數(shù)據(jù)拼接成較長數(shù)據(jù)模塊1502輸出傳輸數(shù)據(jù)指定的數(shù)據(jù)長度,結合文件大小計算模塊902、壓縮模式選擇模塊903和數(shù)據(jù)直接存儲模塊904選擇適當?shù)膲嚎s模式輸出壓縮后的數(shù)據(jù),同時,由文件大小計算模塊902向壓縮后的數(shù)據(jù)中添加數(shù)據(jù)塊頭信息,由壓縮模式選擇模塊903將數(shù)據(jù)塊尾進行字節(jié)對齊處理。步驟1604,緩存壓縮后的數(shù)據(jù)。例如,壓縮后的數(shù)據(jù)送至讀出數(shù)據(jù)緩存模塊,由寫入多路選擇器1103選擇將壓縮后的數(shù)據(jù)存儲在數(shù)據(jù)存儲裝置1101或者數(shù)據(jù)存儲裝置1102中;同時,由讀出多路選擇器1104選擇將數(shù)據(jù)存儲裝置1101或者數(shù)據(jù)存儲裝置1102中壓縮后的數(shù)據(jù)讀出。圖17為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)方法的另一個實施例的流程圖。如圖17所示,硬件LZ77壓縮實現(xiàn)方法的流程包括步驟17011、步驟1702、步驟1703和步驟1704,其中步驟1702、步驟1703和步驟1704分別與圖16所示的步驟1602、步驟1603和步驟1604進行相同或者相似的操作,在此不再進行過多的敘述。步驟17011,使用數(shù)據(jù)多路選擇器選擇將待壓縮的數(shù)據(jù)寫入到兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置中。例如,數(shù)據(jù)剛開始壓縮,數(shù)據(jù)多路選擇器303將待壓縮的數(shù)據(jù)寫入到數(shù)據(jù)存儲裝置301中,等到數(shù)據(jù)存儲裝置301中的數(shù)據(jù)寫入完成時,數(shù)據(jù)多路選擇器303將下個待壓縮數(shù)據(jù)塊寫入到數(shù)據(jù)存儲裝置302中,等到數(shù)據(jù)存儲裝置302中的數(shù)據(jù)寫入完成和數(shù)據(jù)存儲裝置301中的數(shù)據(jù)壓縮完成,則多路選擇器將數(shù)據(jù)寫入到數(shù)據(jù)存儲裝置301中;或者在壓縮過程中,正在壓縮數(shù)據(jù)存儲裝置301中的待壓縮數(shù)據(jù)時,多路選擇器303將下一個待壓縮的數(shù)據(jù)塊寫入到數(shù)據(jù)存儲裝置302中,等到數(shù)據(jù)存儲裝置302中的數(shù)據(jù)寫入完成和數(shù)據(jù)存儲裝置301中的數(shù)據(jù)壓縮完成,則多路選擇器將數(shù)據(jù)寫入到數(shù)據(jù)存儲裝置301中。如此的反復循環(huán)知道待壓縮的數(shù)據(jù)全部傳輸完成,這一過程實現(xiàn)了數(shù)據(jù)傳輸?shù)钠古也僮?,提高了壓縮的效率。圖18為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)方法的另一個實施實例的流程圖。如圖18所示,硬件LZ77壓縮實現(xiàn)方法的流程1800包括步驟1801、步驟18021、步驟18022、步驟18023、步驟1803和步驟1804,其中步驟1801、步驟1803和步驟1804分 別圖16中的步驟1601、步驟1603和步驟1604進行相同或者相似的操作,在此不再進行過 多的敘述。
步驟18021,壓縮數(shù)據(jù)時,取一定量的數(shù)據(jù)進行哈希變換,在哈希表中查找,若找 至IJ,則所取的一定量的數(shù)據(jù)是新字符,以新字符編碼輸出非定長編碼,若找到,則所取的一 定量的數(shù)據(jù)時重復字符串,以此為數(shù)據(jù)頭尋找最大的匹配長度,以重復字符串編碼輸出非 定長編碼。例如,從暫存數(shù)據(jù)模塊501中取數(shù)據(jù)送入字典讀取模502中進行哈希變換,根 據(jù)哈希表模塊701的反饋信號判斷所取數(shù)據(jù)是新字符還是重復字符串,結合最大長度匹配 模塊503和字典鏈表模塊702計算得出最大的匹配長度和最大匹配字符串的指針后,送入 LZ77編碼模塊504中進行LZ77非定長編碼輸出。
步驟18022,壓縮過程中,根據(jù)哈希表和字典鏈表的反饋信號,對待壓縮的數(shù)據(jù)進 行相應的讀取操作,對哈希表和字典鏈表中的數(shù)據(jù)進行相應的更新。例如,當經(jīng)過哈希變換 后確定字符是新字符時,字典更新模塊505控制向哈希表模塊701和字典鏈表模塊702中 更新字典信息;同時結合數(shù)據(jù)暫存模塊501從數(shù)據(jù)存儲模塊301或者數(shù)據(jù)存儲模塊302中 再次讀取一定量的數(shù)據(jù)。
步驟18023,壓縮過程中,交替初始化和使用兩個哈希表和字典鏈表。例如,當哈希 表模塊701或者字典鏈表模塊702中的多路選擇器1303選擇使用數(shù)據(jù)存儲裝置1301存儲 字典數(shù)據(jù),則索引初始化模塊703和鏈表初始化模塊704分別對哈希表模塊701和字典鏈 表模塊702中的數(shù)據(jù)存儲裝置1302進行清空或者初始化操作;當數(shù)據(jù)塊壓縮完成,要進行 下一個數(shù)據(jù)塊的壓縮時,則初始化數(shù)據(jù)存儲裝置1301,選取數(shù)據(jù)存儲裝置1302用于字典存 儲。
由上述過程見,通過交替初始化和使用兩個哈希表和字典鏈表可以實現(xiàn)字典的乒 乓操作使用,提高了壓縮的效率。
圖19為本發(fā)明提供的一種硬件LZ77壓縮實現(xiàn)方法的另一個實施實例的流程圖。
如圖19所示硬件LZ77壓縮實現(xiàn)方法的流程1900包括步驟1901、步驟1902、步 驟19031、步驟19032、步驟19033、步驟19034和步驟1904,其中步驟1901、步驟1902和步 驟1904分別與圖16中的步驟1601、步驟1602和步驟1604進行相同或者相似的操作,在此 不再進行過多的敘述。
步驟19031,利用移位寄存器將非定長的數(shù)據(jù)拼接成定長的數(shù)據(jù)。例如,非定長的 數(shù)據(jù)送入非定長碼元拼接成較短定長數(shù)據(jù)模塊1501中拼接成8比特或者16比特的數(shù)據(jù)輸 出,再經(jīng)過較短數(shù)據(jù)拼接成較長數(shù)據(jù)模塊1502將較短的數(shù)據(jù)拼接成滿足數(shù)據(jù)傳輸要求長 度的較長定長數(shù)據(jù)。
步驟19032,計算壓縮后的數(shù)據(jù)個數(shù),與壓縮前數(shù)據(jù)個數(shù)比較,選取適當?shù)膲嚎s模 式,若壓縮后的數(shù)據(jù)個數(shù)多于壓縮前的數(shù)據(jù)個數(shù),選取直接存儲方式,從緩存待壓縮的數(shù)據(jù) 中讀取,若壓縮后的數(shù)據(jù)個數(shù)不多于壓縮前的數(shù)據(jù)格式,選取壓縮存儲的方式。例如,經(jīng)過 文件大小計算模塊902的計算后,壓縮前的數(shù)據(jù)為1K,而壓縮后的數(shù)據(jù)變?yōu)?K,則壓縮模式 選擇模塊903選擇啟動數(shù)據(jù)直接存儲模塊904從數(shù)據(jù)寫入緩存模塊中的數(shù)據(jù)存儲裝置301 或者數(shù)據(jù)存儲裝置302中直接讀取數(shù)據(jù);但如果壓縮前的數(shù)據(jù)為32K,壓縮后的數(shù)據(jù)為20K, 則壓縮模式選擇模塊903選擇壓縮存儲模式。
步驟19033,添加壓縮后的數(shù)據(jù)塊頭。由文件大小計算模塊902將數(shù)據(jù)頭信息添加 在壓縮后的數(shù)據(jù)塊的最前面。
步驟19034,對壓縮后的數(shù)據(jù)尾部進行字節(jié)對齊處理。例如,假設壓縮后的數(shù)據(jù)最 后一個數(shù)據(jù)不滿一個字節(jié)為“ 11 ”,則由壓縮模式選擇模塊903對數(shù)據(jù)尾部進行字節(jié)對齊操 作,將 “ 11 ” 補齊為 “ 11001100 ”。
上述的過程與圖16中的步驟1602是并行執(zhí)行的,可見,這樣的結構可以大大的提高壓縮的效率。
圖20為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)方法的另一個實施實例的流程圖。
如圖20所示,硬件LZ77壓縮實現(xiàn)方法的流程2000包括步驟2001、步驟2002、步 驟2003、步驟20041和步驟20042,其中步驟2001、步驟2002和步驟2003分別和圖16中的 步驟1601、步驟1602和步驟1603進行相同或者相似的操作,在此不再進行過多的闡述。
步驟20041,使用寫入數(shù)據(jù)多路選擇器,選擇壓縮后的數(shù)據(jù)寫入兩個數(shù)據(jù)存儲裝置 中的其中一個數(shù)據(jù)存儲裝置。例如,數(shù)據(jù)壓縮時,寫入數(shù)據(jù)多路選擇器1103將壓縮后的數(shù) 據(jù)寫入到數(shù)據(jù)存儲裝置1101中,等到該數(shù)據(jù)塊中的數(shù)據(jù)全部壓縮完成時,寫入數(shù)據(jù)多路選 擇器1103將選擇數(shù)據(jù)存儲裝置1102用于壓縮后的數(shù)據(jù)的存儲,同時如果有讀出信號產(chǎn)生 則讀出數(shù)據(jù)存儲器1101中的數(shù)據(jù),等到數(shù)據(jù)存儲裝置1101中的數(shù)據(jù)讀出完成和數(shù)據(jù)塊壓 縮再次完成,則多路選擇器將壓縮后的數(shù)據(jù)寫入到數(shù)據(jù)存儲裝置1101中。如此的反復循環(huán) 知道待壓縮的數(shù)據(jù)全部傳輸完成,這一過程實現(xiàn)了數(shù)據(jù)傳輸?shù)钠古也僮?,提高了壓縮的效 率。
步驟20042,當一個數(shù)據(jù)塊已經(jīng)完成壓縮,則利用讀出多路選擇器,選擇讀出對應 的數(shù)據(jù)存儲裝置中的數(shù)據(jù)。例如,數(shù)據(jù)壓縮時,當有讀出信號產(chǎn)生時,數(shù)據(jù)存儲裝置1101在 被寫入多路選擇器1103使用時,讀出數(shù)據(jù)多路選擇器1104選擇讀取數(shù)據(jù)存儲裝置1102中 的數(shù)據(jù)。如此的反復循環(huán)知道待壓縮的數(shù)據(jù)全部傳輸完成,這一過程實現(xiàn)了數(shù)據(jù)傳輸?shù)钠?乓操作,提高了壓縮的效率。
圖21為本發(fā)明提供的硬件LZ77壓縮實現(xiàn)方法的一個具體應用實例的流程圖。
如圖21所示,硬件LZ77壓縮實現(xiàn)方法的流程2100包括步驟2101、步驟2102、步 驟2103、步驟2104、步驟2105、步驟2106、步驟2107、步驟2108、步驟2109和步驟2010。
步驟2101,使用數(shù)據(jù)多路選擇器選擇將待壓縮的數(shù)據(jù)寫入到兩個數(shù)據(jù)存儲裝置中 的其中一個數(shù)據(jù)存儲裝置中。例如,數(shù)據(jù)剛開始壓縮,數(shù)據(jù)多路選擇器303將待壓縮的數(shù)據(jù) 寫入到數(shù)據(jù)存儲裝置301中,等到數(shù)據(jù)存儲裝置301中的數(shù)據(jù)寫入完成時,數(shù)據(jù)多路選擇器 303將下個待壓縮數(shù)據(jù)塊寫入到數(shù)據(jù)存儲裝置302中,等到數(shù)據(jù)存儲裝置302中的數(shù)據(jù)寫 入完成和數(shù)據(jù)存儲裝置301中的數(shù)據(jù)壓縮完成,則多路選擇器將數(shù)據(jù)寫入到數(shù)據(jù)存儲裝置 301中;或者在壓縮過程中,正在壓縮數(shù)據(jù)存儲裝置301中的待壓縮數(shù)據(jù)時,多路選擇器303 將下一個待壓縮的數(shù)據(jù)塊寫入到數(shù)據(jù)存儲裝置302中,等到數(shù)據(jù)存儲裝置302中的數(shù)據(jù)寫 入完成和數(shù)據(jù)存儲裝置301中的數(shù)據(jù)壓縮完成,則多路選擇器將數(shù)據(jù)寫入到數(shù)據(jù)存儲裝置 301中。如此的反復循環(huán)知道待壓縮的數(shù)據(jù)全部傳輸完成,這一過程實現(xiàn)了數(shù)據(jù)傳輸?shù)钠古?操作,提高了壓縮的效率。
步驟2102,壓縮數(shù)據(jù)時,取一定量的數(shù)據(jù)進行哈希變換,在哈希表中查找,若找到, 則所取的一定量的數(shù)據(jù)是新字符,以新字符編碼輸出非定長編碼,若找到,則所取的一定量的數(shù)據(jù)時重復字符串,以此為數(shù)據(jù)頭尋找最大的匹配長度,以重復字符串編碼輸出非定長 編碼。例如,從暫存數(shù)據(jù)模塊501中取數(shù)據(jù)送入字典讀取模502中進行哈希變換,根據(jù)哈 希表模塊701的反饋信號判斷所取數(shù)據(jù)是新字符還是重復字符串,結合最大長度匹配模塊 503和字典鏈表模塊702計算得出最大的匹配長度和最大匹配字符串的指針后,送入LZ77 編碼模塊504中進行LZ77非定長編碼輸出。
步驟2103,壓縮過程中,根據(jù)哈希表和字典鏈表的反饋信號,對待壓縮的數(shù)據(jù)進行 相應的讀取操作,對哈希表和字典鏈表中的數(shù)據(jù)進行相應的更新。例如,當經(jīng)過哈希變換后 確定字符是新字符時,字典更新模塊505控制向哈希表模塊701和字典鏈表模塊702中更 新字典信息;同時結合數(shù)據(jù)暫存模塊501從數(shù)據(jù)存儲模塊301或者數(shù)據(jù)存儲模塊302中再 次讀取一定量的數(shù)據(jù)。
步驟2104,壓縮過程中,交替初始化和使用兩個哈希表和字典鏈表。例如,當哈希 表模塊701或者字典鏈表模塊702中的多路選擇器1303選擇使用數(shù)據(jù)存儲裝置1301存儲 字典數(shù)據(jù),則索引初始化模塊703和鏈表初始化模塊704分別對哈希表模塊701和字典鏈 表模塊702中的數(shù)據(jù)存儲裝置1302進行清空或者初始化操作;當數(shù)據(jù)塊壓縮完成,要進行 下一個數(shù)據(jù)塊的壓縮時,則初始化數(shù)據(jù)存儲裝置1301,選取數(shù)據(jù)存儲裝置1302用于字典存 儲。
步驟2105,利用移位寄存器將非定長的數(shù)據(jù)拼接成定長的數(shù)據(jù)。例如,非定長的 數(shù)據(jù)送入非定長碼元拼接成較短定長數(shù)據(jù)模塊1501中拼接成8比特或者16比特的數(shù)據(jù)輸 出,再經(jīng)過較短數(shù)據(jù)拼接成較長數(shù)據(jù)模塊1502將較短的數(shù)據(jù)拼接成滿足數(shù)據(jù)傳輸要求長 度的較長定長數(shù)據(jù)。
步驟2106,計算壓縮后的數(shù)據(jù)個數(shù),與壓縮前數(shù)據(jù)個數(shù)比較,選取適當?shù)膲嚎s模 式,若壓縮后的數(shù)據(jù)個數(shù)多于壓縮前的數(shù)據(jù)個數(shù),選取直接存儲方式,從緩存待壓縮的數(shù)據(jù) 中讀取,若壓縮后的數(shù)據(jù)個數(shù)不多于壓縮前的數(shù)據(jù)格式,選取壓縮存儲的方式。例如,經(jīng)過 文件大小計算模塊902的計算后,壓縮前的數(shù)據(jù)為1K,而壓縮后的數(shù)據(jù)變?yōu)?K,則壓縮模式 選擇模塊903選擇啟動數(shù)據(jù)直接存儲模塊904從數(shù)據(jù)寫入緩存模塊中的數(shù)據(jù)存儲裝置301 或者數(shù)據(jù)存儲裝置302中直接讀取數(shù)據(jù);但如果壓縮前的數(shù)據(jù)為32K,壓縮后的數(shù)據(jù)為20K, 則壓縮模式選擇模塊903選擇壓縮存儲模式。
步驟2107,添加壓縮后的數(shù)據(jù)塊頭。由文件大小計算模塊902將數(shù)據(jù)頭信息添加 在壓縮后的數(shù)據(jù)塊的最前面。
步驟2108,對壓縮后的數(shù)據(jù)尾部進行字節(jié)對齊處理。例如,假設壓縮后的數(shù)據(jù)最 后一個數(shù)據(jù)不滿一個字節(jié)為“ 11 ”,則由壓縮模式選擇模塊903對數(shù)據(jù)尾部進行字節(jié)對齊操 作,將 “ 11 ” 補齊為 “ 11001100 ”。
步驟2109,使用寫入數(shù)據(jù)多路選擇器,選擇壓縮后的數(shù)據(jù)寫入兩個數(shù)據(jù)存儲裝置 中的其中一個數(shù)據(jù)存儲裝置。例如,數(shù)據(jù)壓縮時,寫入數(shù)據(jù)多路選擇器1103將壓縮后的數(shù) 據(jù)寫入到數(shù)據(jù)存儲裝置1101中,等到該數(shù)據(jù)塊中的數(shù)據(jù)全部壓縮完成時,寫入數(shù)據(jù)多路選 擇器1103將選擇數(shù)據(jù)存儲裝置1102用于壓縮后的數(shù)據(jù)的存儲,同時如果有讀出信號產(chǎn)生 則讀出數(shù)據(jù)存儲器1101中的數(shù)據(jù),等到數(shù)據(jù)存儲裝置1101中的數(shù)據(jù)讀出完成和數(shù)據(jù)塊壓 縮再次完成,則多路選擇器將壓縮后的數(shù)據(jù)寫入到數(shù)據(jù)存儲裝置1101中。如此的反復循環(huán) 知道待壓縮的數(shù)據(jù)全部傳輸完成,這一過程實現(xiàn)了數(shù)據(jù)傳輸?shù)钠古也僮?,提高了壓縮的效率。
步驟2110,當一個數(shù)據(jù)塊已經(jīng)完成壓縮,則利用讀出多路選擇器,選擇讀出對應的 數(shù)據(jù)存儲裝置中的數(shù)據(jù)。例如,數(shù)據(jù)壓縮時,當有讀出信號產(chǎn)生時,數(shù)據(jù)存儲裝置1101在被 寫入多路選擇器1103使用時,讀出數(shù)據(jù)多路選擇器1104選擇讀取數(shù)據(jù)存儲裝置1102中的 數(shù)據(jù)。如此的反復循環(huán)知道待壓縮的數(shù)據(jù)全部傳輸完成,這一過程實現(xiàn)了數(shù)據(jù)傳輸?shù)钠古?操作,提高了壓縮的效率。
參考上述本發(fā)明示例性的描述,本領域技術人員可以了解本發(fā)明具有如下的幾個 優(yōu)越性本發(fā)明提供了硬件LZ77壓縮實現(xiàn)系統(tǒng)及方法,采用FPGA (Field Programmable Gate Arry)實現(xiàn)LZ77壓縮功能,通過采用數(shù)據(jù)寫入緩存模塊、數(shù)據(jù)讀出緩存模塊的方法實現(xiàn)數(shù) 去寫入和讀出的乒乓操作,提高了 LZ77壓縮的效率。
本發(fā)明提供了硬件LZ77壓縮實現(xiàn)系統(tǒng)及方法,采用交替使用和初始化哈希表模 塊和字典鏈表模塊,實現(xiàn)了字典初始化與壓縮的并行操作,從一定程度上提高了 LZ77壓縮 的效率。
本發(fā)明提供了硬件LZ77壓縮實現(xiàn)系統(tǒng)及方法,采用LZ77編碼模塊和非定長碼元 拼接模塊實現(xiàn)了 LZ77壓縮編碼和非定長碼元高速拼接的并行操作,進一步提升了 LZ77壓 縮的效率。
本發(fā)明提供了硬件LZ77壓縮實現(xiàn)系統(tǒng)及方法,采用壓縮模式選擇模塊和數(shù)據(jù)直 接存儲模塊實現(xiàn)了,數(shù)據(jù)直接存儲和壓縮存儲兩種模式,保證了 LZ77壓縮的壓縮比,確保 了壓縮的性能。
盡管本發(fā)明此處具體化一些特定的例子示出和描述,然而本發(fā)明不限制于所實處 的細節(jié),因為在不偏離本發(fā)明的精神以及在權利要求的范圍和等同范圍內(nèi),可以做出多種 改進和結構變化。因此,寬范圍的并且如權利要求中所闡明的再某種意義上與本發(fā)明的范 圍一致的解釋附加的權利要求是適當?shù)摹?br> 權利要求
1.一種硬件LZ77壓縮實現(xiàn)系統(tǒng),其特征在于,該系統(tǒng)包括 PCIE接口模塊,用于實現(xiàn)與上位機的通信; 數(shù)據(jù)直接訪問模塊DMA,用于實現(xiàn)數(shù)據(jù)的直接訪問; 數(shù)據(jù)打包解包模塊,用于實現(xiàn)數(shù)據(jù)通信時對數(shù)據(jù)的組包和解包操作; 數(shù)據(jù)寫入緩存模塊,用于緩存待壓縮的數(shù)據(jù); 壓縮算法模塊,用于實現(xiàn)重復字符串的查找,計算重復字符串的匹配長度,進行LZ77編碼; 字典模塊,用于存儲歷史字符串; 非定長碼元拼接模塊,用于將非定長的編碼高速拼接成定長的數(shù)據(jù)塊; 數(shù)據(jù)讀出緩存模塊,用于緩存壓縮后的數(shù)據(jù)。
2.根據(jù)權利要求1所述的硬件LZ77壓縮實現(xiàn)系統(tǒng),其特征在于,所述的數(shù)據(jù)寫入緩存模塊包括 兩個如隨機存取存儲器RAM或者先入先出存儲器FIFO的數(shù)據(jù)存儲裝置,用于存儲待壓縮的數(shù)據(jù); 多路選擇器,用于選擇將待壓縮的數(shù)據(jù)存儲在兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置; 通過多路選擇器和兩個數(shù)據(jù)存儲裝置實現(xiàn)數(shù)據(jù)寫入的乒乓操作。
3.根據(jù)權利要求1所述的硬件LZ77壓縮實現(xiàn)系統(tǒng),其特征在于,所述的壓縮算法模塊包括 數(shù)據(jù)暫存模塊,用于臨時暫存一定量的數(shù)據(jù); 字典讀取模塊,用于產(chǎn)生字典的讀控制信號和讀取字典中的數(shù)據(jù); 最大長度匹配模塊,用于計算出現(xiàn)重復字符串時的最大重復長度; LZ77編碼模塊,用于對待壓縮數(shù)據(jù)進行相應的編碼; 字典更新模塊,用于產(chǎn)生字典的寫控制信號和更新字典中的數(shù)據(jù)。
4.根據(jù)權利要求1所述的硬件LZ77壓縮實現(xiàn)系統(tǒng),其特征在于,所述的字典模塊包括 哈希表模塊,用于存儲最新的歷史字典信息; 字典鏈表模塊,用于存儲其他的歷史字典信息; 索引初始化模塊,用于初始化哈希表模塊; 鏈表初始化模塊,用于初始化字典鏈表模塊。
5.根據(jù)權利要求1所述的硬件LZ77壓縮實現(xiàn)系統(tǒng),其特征在于,所述的非定長碼元拼接模塊包括 非定長碼元到定長碼元轉換模塊,用于將非定長的數(shù)據(jù)編碼拼接成定長的數(shù)據(jù); 文件大小計算模塊,用于計算文件壓縮后的數(shù)據(jù)個數(shù),并與壓縮前的文件數(shù)據(jù)個數(shù)比較; 壓縮模式選擇模塊,根據(jù)文件壓縮前和壓縮后的數(shù)據(jù)個數(shù)的多少選取壓縮模式; 數(shù)據(jù)直接存儲模塊,用于當數(shù)據(jù)選擇直接存儲壓縮模式時對數(shù)據(jù)的操作。
6.根據(jù)權利要求1所述的硬件LZ77壓縮實現(xiàn)系統(tǒng),其特征在于,所述的數(shù)據(jù)讀出緩存模塊包括兩個如隨機存取存儲器RAM或者先入先出存儲器FIFO的數(shù)據(jù)存儲裝置,用于存儲壓縮后的數(shù)據(jù); 寫入數(shù)據(jù)多路選擇器,用于選擇將壓縮后的數(shù)據(jù)寫入兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置; 讀出數(shù)據(jù)多路選擇器,用于選擇讀出兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置中的數(shù)據(jù)。
7.根據(jù)權利要求4所述的硬件LZ77壓縮實現(xiàn)系統(tǒng),其特征在于,所述的哈希表模塊包括 兩個如隨機存取存儲器RAM或者內(nèi)容可尋址存儲器CAM的數(shù)據(jù)存儲裝置,用于存儲最新的歷史字典信息; 寫入多路選擇器,用于選擇使用兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置存儲最新的歷史字典信息; 讀出多路選擇器,用于選擇讀取兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置中的字典信息; 初始化多路選擇器,用于選擇初始化兩個數(shù)據(jù)存儲裝置中的一個數(shù)據(jù)存儲裝置,交替初始化兩個數(shù)據(jù)存儲裝置,提高壓縮的效率; 所述的字典鏈表模塊包括 兩個如隨機存取存儲器RAM或者內(nèi)容可尋址存儲器CAM的數(shù)據(jù)存儲裝置,用于存儲其他的歷史字典信息; 寫入多路選擇器,用于選擇使用兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置存儲最新的歷史字典信息; 讀出多路選擇器,用于選擇讀取兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置中的字典信息; 初始化多路選擇器,用于選擇初始化兩個數(shù)據(jù)存儲裝置中的一個數(shù)據(jù)存儲裝置,交替初始化兩個數(shù)據(jù)存儲裝置,提高壓縮的效率。
8.根據(jù)權利要求5所述的硬件LZ77壓縮實現(xiàn)系統(tǒng),其特征在于,所述的非定長碼元到定長碼元轉換模塊包括 非定長碼元拼接成較短定長數(shù)據(jù)模塊,用于將壓縮算法模塊輸出的非定長編碼拼接成較短的定長數(shù)據(jù); 較短數(shù)據(jù)拼接成較長數(shù)據(jù)模塊,用于將非定長碼元拼接成較短定長數(shù)據(jù)模塊輸出的較短數(shù)據(jù)拼接成較長的數(shù)據(jù),與非定長碼元拼接成較短定長數(shù)據(jù)模塊并行運行,加速了拼接的過程。
9.一種硬件LZ77壓縮實現(xiàn)方法,包括下述步驟 (1)緩存待壓縮的數(shù)據(jù); (2)對字符串數(shù)據(jù)進行壓縮編碼; (3)拼接非定長的數(shù)據(jù); (4)緩存壓縮后的數(shù)據(jù)。
10.根據(jù)權利要求9所述的硬件LZ77壓縮實現(xiàn)方法,其特征在于,所述步驟(I)緩存待壓縮的數(shù)據(jù)使用多路選擇器控制待壓縮的數(shù)據(jù)存儲到兩個數(shù)據(jù)存儲裝置中。
11.根據(jù)權利要求9所述的硬件LZ77壓縮實現(xiàn)方法,其特征在于,所述步驟(2)對字符串數(shù)據(jù)進行壓縮編碼過程包括 壓縮數(shù)據(jù)時,取一定量的數(shù)據(jù)進行哈希變換,在哈希表中查找,若未找到,則所取的一定量的數(shù)據(jù)是新字符,以新字符編碼輸出非定長編碼,若找到,則所取的一定量的數(shù)據(jù)是重復字符串,以此為數(shù)據(jù)頭尋找最大的匹配長度,以重復字符串編碼輸出非定長編碼; 壓縮過程中,根據(jù)哈希表和字典鏈表反饋的信號,對待壓縮的數(shù)據(jù)進行相應的讀取操作,對哈希表和字典鏈表中的數(shù)據(jù)進行相應的更新; 壓縮過程中交替初始化和使用兩個哈希表和兩個字典鏈表。
12.根據(jù)權利要求9所述的硬件LZ77壓縮實現(xiàn)方法,其特征在于,所述步驟(3)的拼接非定長的數(shù)據(jù)過程包括 利用移位寄存器將非定長的數(shù)據(jù)拼接成定長數(shù)據(jù); 計算壓縮后的數(shù)據(jù)個數(shù),與壓縮前數(shù)據(jù)個數(shù)比較,選取適當?shù)膲嚎s模式,若壓縮后的數(shù)據(jù)個數(shù)多于壓縮前的數(shù)據(jù)個數(shù),選取直接存儲的方式,從緩存待壓縮的數(shù)據(jù)中讀取,若壓縮后的數(shù)據(jù)個數(shù)不多于壓縮前的數(shù)據(jù)個數(shù),選取壓縮存儲的方式; 添加壓縮后的數(shù)據(jù)塊頭; 對壓縮后的數(shù)據(jù)尾部進行字節(jié)對齊處理; 與壓縮數(shù)據(jù)并行操作處理,提高了壓縮的效率。
13.根據(jù)權利要求9所述的硬件LZ77壓縮實現(xiàn)方法,其特征在于,所述步驟(4)緩存壓縮后的數(shù)據(jù)過程包括 使用寫入數(shù)據(jù)多路選擇器,選擇將壓縮后的數(shù)據(jù)寫入兩個數(shù)據(jù)存儲裝置中的其中一個數(shù)據(jù)存儲裝置; 若一個數(shù)據(jù)塊已經(jīng)完成壓縮,則利用讀出數(shù)據(jù)多路選擇器,選擇讀出對應的數(shù)據(jù)存儲裝置中的數(shù)據(jù)。
全文摘要
本發(fā)明公布了一種硬件LZ77壓縮實現(xiàn)系統(tǒng),包括PCIE接口模塊、數(shù)據(jù)直接訪問模塊、數(shù)據(jù)打包解包模塊、數(shù)據(jù)寫入緩存模塊、壓縮算法模塊、字典模塊、非定長碼元拼接模塊、數(shù)據(jù)讀出緩存模塊。一種硬件LZ77壓縮實現(xiàn)方法,包括步驟1、緩存待壓縮的數(shù)據(jù);2、對字符串數(shù)據(jù)進行壓縮編碼;3、拼接非定長的數(shù)據(jù);4、緩存壓縮后的數(shù)據(jù)。本發(fā)明通過一種硬件來實現(xiàn)LZ77壓縮,能夠有效的提高LZ77壓縮算法的效率,將CPU從海量數(shù)據(jù)壓縮中解脫出來。
文檔編號H03M7/30GK103023509SQ20121045532
公開日2013年4月3日 申請日期2012年11月14日 優(yōu)先權日2012年11月14日
發(fā)明者張 林, 李瑋, 李冰 申請人:無錫芯響電子科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
拉萨市| 扶风县| 北海市| 五河县| 达州市| 塔河县| 潜江市| 沈丘县| 常山县| 大安市| 吉隆县| 靖安县| 邹城市| 罗山县| 喀喇沁旗| 麦盖提县| 平和县| 万全县| 马关县| 云霄县| 南充市| 子长县| 辽宁省| 喜德县| 成安县| 周宁县| 湖北省| 麻栗坡县| 岐山县| 平武县| 山丹县| 女性| 义乌市| 元谋县| 大丰市| 抚松县| 项城市| 贡山| 梅州市| 宝丰县| 和田市|