国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

      文檔序號:7530290閱讀:257來源:國知局
      專利名稱:一種lz77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)及方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及數(shù)據(jù)解壓縮技術(shù),尤其涉及一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)及方法。
      背景技術(shù)
      在數(shù)據(jù)壓縮領(lǐng)域,LZ77算法是眾所周知的,該算法是由Abraham Lempel與JacobZiv在1977年發(fā)表的,采用“滑動窗口”的原理實現(xiàn)數(shù)據(jù)的壓縮。近年來,LZ77算法出現(xiàn)了許多變型,同時出現(xiàn)了一些LZ77算法和其它壓縮算法結(jié)合的壓縮方法,這些壓縮方法表現(xiàn)出更優(yōu)越的壓縮效果。其中,比較著名的是LZ77算法與Huffman算法結(jié)合實現(xiàn)的Gzip壓縮算法,該算法先利用LZ77算法將數(shù)據(jù)進行一級壓縮(字典模式壓縮),然后利用Huffman算法將壓縮后的數(shù)據(jù)進行二級壓縮(統(tǒng)計模式壓縮),無疑,經(jīng)結(jié)合后的算法在壓縮效果上將更為優(yōu)越。正是由于Gzip壓縮算法的這種優(yōu)勢,使得該算法大量運用在大數(shù)據(jù)處理中,諸如互聯(lián)網(wǎng)數(shù)據(jù)處理和近年興起的云計算方面。數(shù)據(jù)經(jīng)Gzip壓縮算法處理之后,一方面,可以大幅度提高磁盤的有效容量,提高讀寫操作時的輸入輸出(I/O)有效帶寬,從而有效的降低互聯(lián)網(wǎng)和云計算數(shù)據(jù)處理的成本;另一方面,壓縮后的數(shù)據(jù)起到加密的作用,在一定程度上保護了數(shù)據(jù)的安全性。然而,調(diào)查發(fā)現(xiàn),通過軟件實現(xiàn)Gzip壓縮解壓縮算法的方式進行數(shù)據(jù)處理時的效率較低,同時Gzip解壓縮的算法一般都采用軟件實現(xiàn)。分析發(fā)現(xiàn),作為Gzip壓縮算法核心組成部分的LZ77算法對壓縮解壓縮效果影響明顯,尤其是在解壓縮過程中,LZ77算法的解碼效率直接影響Gzip解壓縮效率。測試發(fā)現(xiàn),以主頻約2. 7GHz的CPU為例,其進行壓縮的帶寬約為6MB/s,而解壓縮的帶寬約為25MB/S。因而,在互聯(lián)網(wǎng)或者近年熱門的云計算當中,當面對大規(guī)模數(shù)據(jù)處理時,待壓縮解壓縮的數(shù)據(jù)流將巨增,采用CPU進行壓縮解壓縮處理數(shù)據(jù)必然會占用大量的CPU資源,而在進行解壓縮過程時,CPU資源被大量占用的問題更為明顯。因此,如何大幅度提高Gzip解壓縮的處理效率,成為現(xiàn)有Gzip解壓縮技術(shù)所亟待解決的技術(shù)問題,尤其是針對性的提出提高Gzip算法核心組成部分LZ77算法的解碼方案。

      發(fā)明內(nèi)容
      本發(fā)明的發(fā)明目的是提供一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)及方法,能夠有效的提高現(xiàn)有Gzip解壓縮算法核心組成部分LZ77算法的解碼效率。為實現(xiàn)上述目的,本發(fā)明提供了一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng),包括字符類別判決模塊,用于判斷待解碼數(shù)據(jù)的屬性;字符類別判決結(jié)果反饋模塊,用于根據(jù)待解碼數(shù)據(jù)的屬性進行解碼操作;緩存模塊,用于緩存解碼后的字符,并統(tǒng)計緩存的字符數(shù)目;緩存字符數(shù)結(jié)果反饋模塊,用于根據(jù)所述字符數(shù)目從緩存模塊中移位相應(yīng)字符到字典模塊中進行存儲,并返回字符類別判決模塊繼續(xù)解碼直至解碼結(jié)束,
      其中字典模塊用于存儲緩存模塊中的字符以備后續(xù)解碼使用。進一步的,所述字符類別判決結(jié)果反饋模塊中若是新字符,則直接緩存該新字符;若是重復(fù)字符,則從待解碼數(shù)據(jù)中獲取重復(fù)字符長度,從待解碼數(shù)據(jù)中獲取所述重復(fù)字符的指回距離,并判斷所述重復(fù)字符所處的位置;根據(jù)所述重復(fù)長度和所述指回距離到所述位置處拷貝并緩存所述重復(fù)字符。進一步的,所述字符類別判決結(jié)果反饋模塊中若是結(jié)束字符標志,則解碼結(jié)束。進一步的,所述硬件解碼實現(xiàn)系統(tǒng)還包括數(shù)據(jù)存儲模塊,用于存儲解碼后的字符;移位模塊,用于丟棄所述數(shù)據(jù)存儲模塊中已經(jīng)移位到字典模塊中的字符。為實現(xiàn)上述目的,本發(fā)明還提供了一種LZ77壓縮算法的硬件解碼實現(xiàn)方法,包括步驟1,字符類別判決模塊判斷待解碼數(shù)據(jù)的屬性;步驟2,字符類別判決結(jié)果反饋模塊根據(jù)待解碼數(shù)據(jù)的屬性進行解碼操作;步驟3,緩存模塊緩存解碼后的字符,并統(tǒng)計緩存的字符數(shù)目;步驟4,緩存字符數(shù)結(jié)果反饋模塊根據(jù)所述字符數(shù)目從緩存模塊中移位相應(yīng)字符到字典模塊中進行存儲,并返回步驟I繼續(xù)解碼直至解碼結(jié)束,其中字典模塊用于存儲緩存模塊中的字符以備后續(xù)解碼使用。進一步的,所述步驟2中若是新字符,則直接緩存該新字符;若是重復(fù)字符,則從待解碼數(shù)據(jù)中獲取重復(fù)字符長度,從待解碼數(shù)據(jù)中獲取所述重復(fù)字符的指回距離,并判斷所述重復(fù)字符所處的位置;根據(jù)所述重復(fù)長度和所述指回距離到所述位置處拷貝并緩存所述重復(fù)字符。進一步的,所述步驟2中若是結(jié)束字符則解碼結(jié)束。進一步的,所述硬件解碼實現(xiàn)方法還包括步驟5,數(shù)據(jù)存儲模塊存儲解碼后的字符;步驟6,移位模塊根據(jù)所述字符數(shù)目丟棄數(shù)據(jù)存儲模塊中已經(jīng)移位到字典模塊中的字符。本發(fā)明的有益功效在于,1.該系統(tǒng)及方法可應(yīng)用于Gzip解壓縮算法核心組成部分LZ77解碼算法中,采用可編程邏輯器件(FPGA)實現(xiàn)LZ77解碼功能,通過采用緩存模塊和字典模塊實現(xiàn)一次解碼多個字符的功能,從而提高了現(xiàn)有Gzip解壓縮算法的處理效率。2.通過適當?shù)母倪M和結(jié)構(gòu)變化,該系統(tǒng)和方法也可用于其它含有LZ77相同或相似算法的應(yīng)用中。以下結(jié)合附圖和具體實施例對本發(fā)明進行詳細描述,但不作為對本發(fā)明的限定。


      圖1A為本發(fā)明的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)示意圖;圖1B為本發(fā)明的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)流程圖1C為本發(fā)明的第一實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)的結(jié)構(gòu)示意圖;圖2為本發(fā)明的第二實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)示意圖;圖3為本發(fā)明的第一實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)的解碼模塊示意圖;圖4為本發(fā)明的第三實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)示意圖;圖5為本發(fā)明的一實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)的緩存豐旲塊不意圖;圖6為本發(fā)明的第一實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)方法流程圖;圖7為本發(fā)明的第二實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)方法流程圖;圖8為本發(fā)明的第三實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)方法流程圖;圖9為本發(fā)明的第四實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)方法流程圖。
      具體實施例方式下面參照附圖用本發(fā)明的示例性實施例對本發(fā)明進行更全面的描述和說明。圖1A為本發(fā)明的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)示意圖。如圖1A所示,該系統(tǒng)包括字符類別判決模塊100,用于判斷待解碼數(shù)據(jù)的屬性;字符類別判決結(jié)果反饋模塊200,用于根據(jù)待解碼數(shù)據(jù)的屬性進行解碼操作;緩存模塊300,用于緩存解碼后的字符,并統(tǒng)計緩存的字符數(shù)目;緩存字符數(shù)結(jié)果反饋模塊400,用于根據(jù)所述字符數(shù)目從緩存模塊中移位相應(yīng)字符到字典模塊中進行存儲,并返回字符類別判決模塊繼續(xù)解碼直至解碼結(jié)束,其中字典模塊用于存儲緩存模塊中的字符以備后續(xù)解碼使用。進一步的,所述字符類別判決結(jié)果反饋模塊200中若是新字符,則直接緩存該新字符;若是重復(fù)字符,則從待解碼數(shù)據(jù)中獲取重復(fù)字符長度,從待解碼數(shù)據(jù)中獲取所述重復(fù)字符的指回距離,并判斷所述重復(fù)字符所處的位置;根據(jù)所述重復(fù)長度和所述指回距離到所述位置處拷貝并緩存所述重復(fù)字符。進一步的,所述字符類別判決結(jié)果反饋模塊200中若是結(jié)束字符,則解碼結(jié)束。進一步的,所述硬件解碼實現(xiàn)系統(tǒng)還包括數(shù)據(jù)存儲模塊,用于存儲解碼后的字符;移位模塊,用于丟棄所述數(shù)據(jù)存儲模塊中已經(jīng)移位到字典模塊中的字符。圖1B為本發(fā)明的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)流程圖。如圖1B所示,該方法包括步驟1,字符類別判決模塊判斷待解碼數(shù)據(jù)的屬性;步驟2,字符類別判決結(jié)果反饋模塊根據(jù)待解碼數(shù)據(jù)的屬性進行解碼操作;步驟3,緩存模塊緩存解碼后的字符,并統(tǒng)計緩存的字符數(shù)目;步驟4,緩存字符數(shù)結(jié)果反饋模塊根據(jù)所述字符數(shù)目從緩存模塊中移位相應(yīng)字符到字典模塊中進行存儲,并返回步驟I繼續(xù)解碼直至解碼結(jié)束,其中字典模塊用于存儲緩存模塊中的字符以備后續(xù)解碼使用。進一步的,所述步驟2中若是新字符,則直接緩存該新字符;若是重復(fù)字符,則從待解碼數(shù)據(jù)中獲取重復(fù)字符長度,從待解碼數(shù)據(jù)中獲取所述重復(fù)字符的指回距離,并判斷所述重復(fù)字符所處的位置;根據(jù)所述重復(fù)長度和所述指回距離到所述位置處拷貝并緩存所述重復(fù)字符。進一步的,所述步驟2中若是結(jié)束字符,則解碼結(jié)束。進一步的,所述硬件解碼實現(xiàn)方法還包括步驟5,數(shù)據(jù)存儲模塊存儲解碼后的字符;步驟6,移位模塊根據(jù)所述字符數(shù)目丟棄數(shù)據(jù)存儲模塊中已經(jīng)移位到字典模塊中的字符。圖1C為本發(fā)明的第一實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)的結(jié)構(gòu)示意圖。如圖1C所示,一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)100包括字符類別判決模塊102、字符類別判決結(jié)果反饋模塊104、解碼模塊106、緩存模塊108,緩存字符數(shù)結(jié)果反饋模塊110和字典模塊112。其中,字符類別判決模塊102,用于判斷待解碼數(shù)據(jù)屬性,是新字符或者是重復(fù)字符或者是結(jié)束字符。例如,根據(jù)Gzip壓縮解壓縮規(guī)則分析知,經(jīng)Huffman譯碼后的9bits二進制表示的值在0-255之間表示新字符;值為256表示塊結(jié)束字符;值在257-285之間表示重復(fù)字符。若某次待解碼數(shù)據(jù)為100000011=259,則表示重復(fù)字符。字符類別判決結(jié)果反饋模塊104,用于根據(jù)字符類別判決模塊102結(jié)果做出相應(yīng)操作,即解碼新字符或者解碼重復(fù)字符或者解碼結(jié)束。例如,判斷結(jié)果是重復(fù)字符,則進行解碼重復(fù)字符操作。解碼模塊106,用于解碼新字符或解碼重復(fù)字符。例如,解碼重復(fù)字符,從待解碼數(shù)據(jù)中獲取重復(fù)字符長度,即獲取歷史緩沖區(qū)中重復(fù)字符的長度14 ;再從從待解碼數(shù)據(jù)中獲取指回距離,即獲取重復(fù)字符在歷史緩沖區(qū)中所處的位置1024處;最后根據(jù)所要拷貝的字符所處的位置(假定在字典模塊112),到字典模塊112中拷貝相應(yīng)重復(fù)長度的字符。緩存模塊108,用于緩存解碼后的字符。例如,解碼后的字符存入緩存模塊108,同時統(tǒng)計字符個數(shù),當一部分字符被寫入字典模塊時,將寫入字典模塊112的字符移位丟棄。緩存字符數(shù)結(jié)果反饋模塊110,用于根據(jù)緩存模塊中統(tǒng)計的字符數(shù)做出相應(yīng)操作,即存儲緩存模塊中的部分字符到字典,備后續(xù)解碼使用或者判斷待解碼數(shù)據(jù)屬性,是新字符或者是重復(fù)字符或者是結(jié)束字符。例如,統(tǒng)計結(jié)果> N=S時,將其中的8個字符寫入字典模塊112。
      字典模塊112,用于存儲緩存模塊108中的字符,備后續(xù)解碼使用。例如,字典模塊112采用隨機存取存儲器(RAM)實現(xiàn),深度8192 (8K),寬度64bits (8Bytes)。若某次重復(fù)長度是14個字符(Byte),要拷貝的字符在字典中,則可以分兩次(兩個RAM周期)將14個字符拷貝出即先拷貝8個字符存入緩存模塊,再拷貝8個字符,并將多余的2個字符丟棄后存入緩存模塊。不難發(fā)現(xiàn),采用這種方式可以一次拷貝多個字符。圖2為本發(fā)明的第二實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)示意圖。如圖2所示,一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)200包括字符類別判決模塊202、字符類別判決結(jié)果反饋模塊204、解碼模塊206、緩存模塊208,緩存字符數(shù)結(jié)果反饋模塊210和字典模塊212 ;其中字符類別判決模塊202、字符類別判決結(jié)果反饋模塊204、緩存模塊208,緩存字符數(shù)結(jié)果反饋模塊210和字典模塊212可以分別與圖1C所示的字符類別判決模塊102、字符類別判決結(jié)果反饋模塊104、緩存模塊108,緩存字符數(shù)結(jié)果反饋模塊110和字典模塊112具有相同或相似的結(jié)構(gòu),為簡潔起見,這里不再贅述其技術(shù)內(nèi)容。如圖2所示,解碼模塊206進一步包括重復(fù)長度計算模塊2060、指回距離計算模塊2062、位置判決模塊2064。其中,2060重復(fù)長度計算模塊,用于從待解碼數(shù)據(jù)中獲取重復(fù)字符長度,即獲取歷史緩沖區(qū)中重復(fù)字符的長度。例如,獲取重復(fù)字符長度為14。指回距離計算模塊2062,用于從待解碼數(shù)據(jù)中獲取指回距離,即獲取重復(fù)字符在歷史緩沖區(qū)中所處的位置。例如,獲取指回距離為1024。位置判決模塊2064,用于判斷所要拷貝的重復(fù)字符所處的位置,即在緩存模塊208中或者字典模塊212中或者緩存模塊208和字典模塊212中。例如,判斷結(jié)果為在字典模塊212中。圖3為本發(fā)明的第一實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)的解碼模塊示意圖。如圖3所示,解碼模塊300包括重復(fù)長度計算模塊302、指回距離計算模塊304、位置判決模塊306。具體來說,根據(jù)字符類別判決結(jié)果反饋模塊204可知若待解碼數(shù)據(jù)是新字符,則將新字符寫入緩存模塊208 ;若待解碼數(shù)據(jù)是重復(fù)字符編碼,則利用重復(fù)長度計算模塊2060從待解碼數(shù)據(jù)中獲取重復(fù)字符長度,利用指回距離計算模塊2062從待解碼數(shù)據(jù)中獲取指回距離,根據(jù)指回距離利用位置判決模塊2064判斷要拷貝的字符所處位置,再根據(jù)重復(fù)長度和位置信息到相應(yīng)的位置處拷貝字符。圖4為本發(fā)明的第三實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)示意圖。如圖4所示,一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)400包括字符類別判決模塊402、字符類別判決結(jié)果反饋模塊404、解碼模塊406、緩存模塊408,緩存字符數(shù)結(jié)果反饋模塊410和字典模塊412 ;其中字符類別判決模塊402、字符類別判決結(jié)果反饋模塊404、解碼模塊406、緩存字符數(shù)結(jié)果反饋模塊410和字典模塊412可以分別與圖1C所示的字符類別判決模塊102、字符類別判決結(jié)果反饋模塊104、解碼模塊106緩存字符數(shù)結(jié)果反饋模塊110和字典模塊112具有相同或相似的結(jié)構(gòu),為簡潔起見,這里不再贅述其技術(shù)內(nèi)容。如圖4所示,緩存模塊408進一步包括數(shù)據(jù)存儲模塊4080、字符數(shù)統(tǒng)計模塊4082、移位模塊4084。其中,數(shù)據(jù)存儲模塊4080,用于存儲解碼后的字符和存儲經(jīng)移位后的字符。例如,在可編程邏輯器件(FPGA)設(shè)計中,可采用定義register (寄存器)類型實現(xiàn),大小可以定義為15字符(Byte),用于存儲字符。字符數(shù)統(tǒng)計模塊4082,用于統(tǒng)計數(shù)據(jù)存儲模塊中的存入的字符數(shù)目。例如,統(tǒng)計結(jié)果為9字符(Byte)。移位模塊4084,用于移位丟棄數(shù)據(jù)存儲模塊中已經(jīng)寫入到字典模塊的字符。例如,統(tǒng)計結(jié)果為9字符,大于等于N=8,則將數(shù)據(jù)存儲模塊中其中的8個字符寫入到字典中(假設(shè)字典深度8192 (8K),寬度64bits(8Bytes)),則移位模塊將寫入字典中的8個字符移位丟棄。圖5為本發(fā)明的一實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)的緩存模塊示意圖。如圖5所示,緩存模塊500包括數(shù)據(jù)存儲模塊502、字符數(shù)統(tǒng)計模塊504、移位模塊506。具體來說,解碼后的字符存入數(shù)據(jù)存儲模塊502,同時利用字符數(shù)統(tǒng)計模塊504統(tǒng)計字符數(shù),利用移位模塊506移位丟棄寫入字典模塊412中的字符,并且移位后的字符存入數(shù)據(jù)存儲模塊502中。圖6為本發(fā)明的第一實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)方法流程圖。如圖6所示,一種LZ77壓縮算法的硬件解碼實現(xiàn)方法的流程600包括步驟602,判斷待解碼數(shù)據(jù)屬性,是新字符或者是重復(fù)字符或者是結(jié)束字符。例如,判斷結(jié)果為重復(fù)字符。步驟604,根據(jù)字符類別判決模塊結(jié)果做出相應(yīng)操作,即解碼新字符或者解碼重復(fù)字符或者解碼結(jié)束。例如,解碼重復(fù)字符。步驟606,解碼新字符或解碼重復(fù)字符。例如,根據(jù)重復(fù)長度和指回距離到相應(yīng)位置處拷貝重復(fù)字符。步驟608,緩存解碼后的字符。例如,緩存解碼出來的重復(fù)字符。步驟610,根據(jù)緩存模塊中統(tǒng)計108的字符數(shù)做出相應(yīng)操作,即存儲緩存模塊108中的部分字符到字典,備后續(xù)解碼使用或者判斷待解碼數(shù)據(jù)屬性,是新字符或者是重復(fù)字符或者是結(jié)束字符。例如,N=8,最終判斷結(jié)果為字符數(shù)大于等于8,則緩存部分字符到字典。步驟612,存儲緩存模塊108中的部分字符,備后續(xù)解碼使用。例如,存儲緩存模塊108中的8個字符。圖7為本發(fā)明的第二實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)方法流程圖。如圖7所示,一種LZ77壓縮算法的硬件解碼實現(xiàn)方法的流程700包括步驟702、704,7060 7064、708、710、712,其中步驟 702、704、708、710、712 可以分別執(zhí)行與圖 602、604、608、610、612所示的步驟相同或相似的技術(shù)內(nèi)容,為簡潔起見,這里不再贅述其技術(shù)內(nèi)容。步驟7060,若是新字符,將新字符寫入緩存模塊;步驟7061,若是重復(fù)字符,利用重復(fù)長度計算模塊,從待解碼數(shù)據(jù)中獲取重復(fù)字符長度,即獲取歷史緩沖區(qū)中重復(fù)字符的長度。例如,重復(fù)字符長度為14。步驟7062,利用指回距離計算模塊,從待解碼數(shù)據(jù)中獲取指回距離,即獲取重復(fù)字符在歷史緩沖區(qū)中所處的位置。例如,指回距離為1024。步驟7063,利用位置判決模塊,判斷所要拷貝的重復(fù)字符所處的位置,即在緩存模塊中或者字典模塊中或者緩存模塊和字典模塊中。例如,判斷結(jié)果為在字典模塊112中。步驟7064,根據(jù)重復(fù)長度和指回距離到相應(yīng)的位置處循環(huán)拷貝重復(fù)字符并寫入緩存模塊中。例如,到字典模塊112中將重復(fù)字符拷貝出來。另外,需指出的是若要拷貝的字符在緩存模塊408(數(shù)據(jù)存儲模塊4082大小為15字符)中時,則重復(fù)長度必小于等于7字符(因為數(shù)據(jù)存儲模塊4082中字符數(shù)大于等于8時,就將其中的8個字符寫入字典模塊412中了),則可一次性拷貝出,然后再存入數(shù)據(jù)存儲模塊4082中,此時再判斷字符數(shù)是否大于等于8,決定是否將8字符寫入字典模塊412中;若要拷貝的字符即在緩存模塊408中又在字典模塊412 (假定用RAM實現(xiàn),位寬8字符)中時,則先到緩存模塊408中拷貝字符,并將拷貝的字符存入數(shù)據(jù)存儲模塊4082中(并判斷是否需要將8字符寫入字典模塊412中),緩存模塊408中的重復(fù)字符處理完畢后,到字典模塊412中拷貝剩余重復(fù)字符,并將拷貝的字符存入數(shù)據(jù)存儲模塊4082中(并判斷是否需要將8字符寫入字典模塊412中)。可見,通過采用緩存模塊和字典模塊實現(xiàn)一次解碼多個字符的功能,從而提高了現(xiàn)有Gzip解壓縮算法的處理效率。圖8為本發(fā)明的第三實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)方法流程圖。如圖8所示,一種LZ77壓縮算法的硬件解碼實現(xiàn)方法的流程800包括步驟802、804,806,8080 8082、810、812,其中步驟 802、804、806、810、812 可以分別執(zhí)行與圖 602、604、606、610、612所示的步驟相同或相似的技術(shù)內(nèi)容,為簡潔起見,這里不再贅述其技術(shù)內(nèi)容。步驟8080,利用數(shù)據(jù)存儲模塊4082緩存解碼后的字符和移位后的字符。例如,在可編程邏輯器件(FPGA)設(shè)計中,可采用定義register (寄存器)類型實現(xiàn),大小可以定義為15字符(Byte),用于存儲字符。步驟8081,利用字符數(shù)統(tǒng)計模塊4080統(tǒng)計數(shù)據(jù)存儲模塊4082中的存入的字符數(shù)目。例如,統(tǒng)計結(jié)果為9字符(Byte)。步驟8082,利用移位模塊4084移位丟棄數(shù)據(jù)存儲模塊中已經(jīng)寫入到字典模塊412的字符。例如,統(tǒng)計結(jié)果為9字符,大于等于N=8,則將數(shù)據(jù)存儲模塊中其中的8個字符寫入到字典中(假設(shè)字典深度8192 (8K),寬度64bits (8Bytes)),則移位模塊將寫入字典中的8個字符移位丟棄。
      圖9為本發(fā)明的第四實施例提供的一種LZ77壓縮算法的硬件解碼實現(xiàn)方法流程圖。如圖9所示,一種LZ77壓縮算法的硬件解碼實現(xiàn)方法的一個具體應(yīng)用例的流程步驟包括步驟902,判斷待解碼數(shù)據(jù)屬性,是新字符或者是重復(fù)字符或者是結(jié)束字符。例如,判斷結(jié)果為重復(fù)字符。步驟904,根據(jù)字符類別判決模塊結(jié)果做出相應(yīng)操作,即解碼新字符或者解碼重復(fù)字符或者解碼結(jié)束。例如,解碼重復(fù)字符。步驟906,若是新字符,將新字符寫入緩存模塊;步驟908,若是重復(fù)字符,利用重復(fù)長度計算模塊,從待解碼數(shù)據(jù)中獲取重復(fù)字符長度,即獲取歷史緩沖區(qū)中重復(fù)字符的長度。例如,重復(fù)字符長度為14。步驟910,利用指回距離計算模塊,從待解碼數(shù)據(jù)中獲取指回距離,即獲取重復(fù)字符在歷史緩沖區(qū)中所處的位置。例如,指回距離為1024。步驟912,利用位置判決模塊,判斷所要拷貝的重復(fù)字符所處的位置,即在緩存模塊中或者字典模塊中或者緩存模塊和字典模塊中。例如,判斷結(jié)果為在字典模塊112中。步驟914,根據(jù)重復(fù)長度和指回距離到相應(yīng)的位置處循環(huán)拷貝重復(fù)字符并寫入緩存模塊中。例如,到字典模塊112中將重復(fù)字符拷貝出來。另外,需指出的是若要拷貝的字符在緩存模塊408(數(shù)據(jù)存儲模塊4082大小為15字符)中時,則重復(fù)長度必小于等于7字符(因為數(shù)據(jù)存儲模塊4082中字符數(shù)大于等于8時,就將其中的8個字符寫入字典模塊412中了),則可一次性拷貝出,然后再存入數(shù)據(jù)存儲模塊4082中,此時再判斷字符數(shù)是否大于等于8,決定是否將8字符寫入字典模塊412中;若要拷貝的字符即在緩存模塊408中又在字典模塊412 (假定用RAM實現(xiàn),位寬8字符)中時,則先到緩存模塊408中拷貝字符,并將拷貝的字符存入數(shù)據(jù)存儲模塊4082中(并判斷是否需要將8字符寫入字典模塊412中),緩存模塊408中的重復(fù)字符處理完畢后,到字典模塊412中拷貝剩余重復(fù)字符,并將拷貝的字符存入數(shù)據(jù)存儲模塊4082中(并判斷是否需要將8字符寫入字典模塊412中)。步驟916,利用數(shù)據(jù)存儲模塊4082緩存解碼后的字符和移位后的字符。例如,在可編程邏輯器件(FPGA)設(shè)計中,可采用定義register (寄存器)類型實現(xiàn),大小可以定義為15字符(Byte),用于存儲字符。步驟918,利用字符數(shù)統(tǒng)計模塊4080統(tǒng)計數(shù)據(jù)存儲模塊4082中的存入的字符數(shù)目。例如,統(tǒng)計結(jié)果為9字符(Byte)。步驟920,利用移位模塊4084移位丟棄數(shù)據(jù)存儲模塊中已經(jīng)寫入到字典模塊412的字符。例如,統(tǒng)計結(jié)果為9字符,大于等于N=8,則將數(shù)據(jù)存儲模塊中其中的8個字符寫入到字典中(假設(shè)字典深度8192 (8K),寬度64bits (8Bytes)),則移位模塊將寫入字典中的8個字符移位丟棄。步驟922,根據(jù)緩存模塊中統(tǒng)計108的字符數(shù)做出相應(yīng)操作,即存儲緩存模塊108中的
      部分字符到字典,備后續(xù)解碼使用或者判斷待解碼數(shù)據(jù)屬性,是新字符或者是重復(fù)字符或者是結(jié)束字符。例如,N=8,最終判斷結(jié)果為字符數(shù)大于等于8,則緩存部分字符到字典步驟924,存儲緩存模塊108中的部分字符,備后續(xù)解碼使用。例如,存儲緩存模塊108中的8個字符。當然,本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護范圍。
      權(quán)利要求
      1.一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng),其特征在于,包括: 字符類別判決模塊,用于判斷待解碼數(shù)據(jù)的屬性; 字符類別判決結(jié)果反饋模塊,用于根據(jù)待解碼數(shù)據(jù)的屬性進行解碼操作; 緩存模塊,用于緩存解碼后的字符,并統(tǒng)計緩存的字符數(shù)目; 緩存字符數(shù)結(jié)果反饋模塊,用于根據(jù)所述字符數(shù)目從緩存模塊中移位相應(yīng)字符到字典模塊中進行存儲,并返回字符類別判決模塊繼續(xù)解碼直至解碼結(jié)束, 其中字典模塊用于存儲緩存模塊中的字符以備后續(xù)解碼使用。
      2.如權(quán)利要求1所述的硬件解碼實現(xiàn)系統(tǒng),其特征在于,所述字符類別判決結(jié)果反饋模塊中: 若是新字符,則直接緩存該新字符; 若是重復(fù)字符,則從待解碼數(shù)據(jù)中獲取重復(fù)字符長度,從待解碼數(shù)據(jù)中獲取所述重復(fù)字符的指回距離,并判斷所述重復(fù)字符所處的位置;根據(jù)所述重復(fù)長度和所述指回距離到所述位置處拷貝并緩存所述重復(fù)字符。
      3.如權(quán)利要求1所述的硬件解碼實現(xiàn)系統(tǒng),其特征在于,所述字符類別判決結(jié)果反饋模塊中若是結(jié)束字符,則解碼結(jié)束。
      4.如權(quán)利要求1所述的硬件解碼實現(xiàn)系統(tǒng),其特征在于,所述硬件解碼實現(xiàn)系統(tǒng)還包 括: 數(shù)據(jù)存儲模塊,用于存儲解碼后的字符; 移位模塊,用于丟棄所述數(shù)據(jù)存儲模塊中已經(jīng)移位到字典模塊中的字符。
      5.一種LZ77壓縮算法的硬件解碼實現(xiàn)方法,其特征在于,包括: 步驟1,字符類別判決模塊判斷待解碼數(shù)據(jù)的屬性; 步驟2,字符類別判決結(jié)果反饋模塊根據(jù)待解碼數(shù)據(jù)的屬性進行解碼操作; 步驟3,緩存模塊緩存解碼后的字符,并統(tǒng)計緩存的字符數(shù)目; 步驟4,緩存字符數(shù)結(jié)果反饋模塊根據(jù)所述字符數(shù)目從緩存模塊中移位相應(yīng)字符到字典模塊中進行存儲,并返回步驟I繼續(xù)解碼直至解碼結(jié)束, 其中字典模塊用于存儲緩存模塊中的字符以備后續(xù)解碼使用。
      6.如權(quán)利要求5所述的硬件解碼實現(xiàn)方法,其特征在于,所述步驟2中: 若是新字符,則直接緩存該新字符; 若是重復(fù)字符,則從待解碼數(shù)據(jù)中獲取重復(fù)字符長度,從待解碼數(shù)據(jù)中獲取所述重復(fù)字符的指回距離,并判斷所述重復(fù)字符所處的位置;根據(jù)所述重復(fù)長度和所述指回距離到所述位置處拷貝并緩存所述重復(fù)字符。
      7.如權(quán)利要求5所述的硬件解碼實現(xiàn)方法,其特征在于,所述步驟2中若是結(jié)束字符,則解碼結(jié)束。
      8.如權(quán)利要求5所述的硬件解碼實現(xiàn)方法,其特征在于,所述硬件解碼實現(xiàn)方法還包括: 步驟5,數(shù)據(jù)存儲模塊存儲解碼后的字符; 步驟6,移位模塊根據(jù)所述字符數(shù)目丟棄數(shù)據(jù)存儲模塊中已經(jīng)移位到字典模塊中的字符。
      全文摘要
      本發(fā)明提供了一種LZ77壓縮算法的硬件解碼實現(xiàn)系統(tǒng)及方法,該系統(tǒng)包括字符類別判決模塊,用于判斷待解碼數(shù)據(jù)的屬性;字符類別判決結(jié)果反饋模塊,用于根據(jù)待解碼數(shù)據(jù)的屬性進行解碼操作;緩存模塊,用于緩存解碼后的字符,并統(tǒng)計緩存的字符數(shù)目;緩存字符數(shù)結(jié)果反饋模塊,用于根據(jù)所述字符數(shù)目從緩存模塊中移位相應(yīng)字符到字典模塊中進行存儲,并返回字符類別判決模塊繼續(xù)解碼直至解碼結(jié)束,其中字典模塊用于存儲緩存模塊中的字符以備后續(xù)解碼使用。本發(fā)明能夠有效的提高現(xiàn)有Gzip解壓縮算法核心組成部分LZ77算法的解碼效率。
      文檔編號H03M7/30GK103078647SQ20131001361
      公開日2013年5月1日 申請日期2013年1月15日 優(yōu)先權(quán)日2013年1月15日
      發(fā)明者尚壯壯, 隋秀峰, 郭彥鋒, 李冰 申請人:中國科學(xué)院計算技術(shù)研究所
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1