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