TW201440046A - 解壓縮電路與相關的壓縮方法與解壓縮方法 - Google Patents
解壓縮電路與相關的壓縮方法與解壓縮方法 Download PDFInfo
- Publication number
- TW201440046A TW201440046A TW102111971A TW102111971A TW201440046A TW 201440046 A TW201440046 A TW 201440046A TW 102111971 A TW102111971 A TW 102111971A TW 102111971 A TW102111971 A TW 102111971A TW 201440046 A TW201440046 A TW 201440046A
- Authority
- TW
- Taiwan
- Prior art keywords
- string
- decompression
- data
- length pair
- distance
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6011—Encoder aspects
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一用以解壓縮一資料的解壓縮電路包含有一第一解壓縮單元以及一第二解壓縮單元,其中該資料依序包含有被壓縮的一第一字串、一距離長度對以及一第二字串,該第一解壓縮單元用以對該資料進行一第一解壓縮操作以依序得到該第一字串、該距離長度對以及該第二字串;該第二解壓縮單元用以接收並解壓縮該第一字串、該距離長度對以及該第二字串;其中該第一解壓縮單元在解壓縮到該第二字串時,不需要使用到有關於該距離長度對的資料。
Description
本發明係有關於一種解壓縮電路,尤指一種採用藍培爾-西弗-馬可夫鏈演算法(Lempel-Ziv-Markov chain-Algorithm,LZMA)的解壓縮電路及其相關的解壓縮方法。
在使用藍培爾-西弗-馬可夫鏈演算法(Lempel-Ziv-Markov chain-Algorithm,LZMA)的壓縮操作中,會將重複的字元壓縮為一距離長度對(distance-length pair),舉例來說,字串“ABCDABCE”可以被壓縮為“A、B、C、D、(4,3)、E”,其中(4,3)被稱為距離長度對,且用來表示往前四個字元後的三個字元(亦即“ABC”),之後再進行另一壓縮操作以產生一壓縮後資料。另一方面,在解壓縮的過程中,會先使用二元算術編碼(Binary Arithmetic Coding,BAC)先將壓縮資料解壓縮為“A、B、C、D、(4,3)、E”,之後再使用LZ77解壓縮操作來將“A、B、C、D、(4,3)、E”解壓縮還原為“ABCDABCE”。然而,使用二元算術編碼方式對距離長度對的後一個字元(亦即俗稱的“delta literal”,本例中的“E”)解壓縮時會使用到前一個字元(本例中的第7個字元“C”)以及距離長度對所對應之字串的後一個字元(本例中的第4個字元“D”)的資料,因此,當使用二元算術編碼解壓縮到“E”時,需要等到使用LZ77將距離長度對(4,3)解壓縮結束之後才能將“C”、“D”提供給前端進行二元算術編碼解壓縮,因而降低了解壓縮效率。此外,目前使用藍培爾-西弗-馬可夫鏈演算法的壓縮/解壓縮方式均是使用軟體來實作。
因此,本發明的目的之一在於提供一種解壓縮電路及其相關的壓縮方法與解壓縮方法,其可以有效率地進行解壓縮,以解決習知技術中的問題。
依據本發明一實施例,一種壓縮方法,用於對一字串進行壓縮,包含:依據該字串中的複數個字元產生一距離長度對;以及壓縮該些字元後的下一個字元;其中壓縮該下一個字元時不使用到與該距離長度對相關的資訊。
依據本發明另一實施例,一用以解壓縮一資料的解壓縮電路包含有一第一解壓縮單元以及一第二解壓縮單元,其中該資料依序包含有被壓縮的一第一字串、一距離長度對以及一第二字串,該第一解壓縮單元用以對該資料進行一第一解壓縮操作以依序得到該第一字串、該距離長度對以及該第二字串;該第二解壓縮單元用以接收並解壓縮該第一字串、該距離長度對以及該第二字串;其中該第一解壓縮單元在解壓縮到該第二字串時,不需要使用到有關於該距離長度對的資料。
依據本發明另一實施例,一種解壓縮方法,用以解壓縮一資料,該資料依序包含有被壓縮的一第一字串、一距離長度對以及一第二字串,該解壓縮方法包含有:對該資料進行一第一解壓縮操作以依序得到該第一字串、該距離長度對以及該第二字串;以及接收並解壓縮該第一字串、該距離長度對以及該第二字串;其中該資料進行該第一解壓縮操作以依序得到該第一字串、該距離長度對以及該第二字串的步驟包含有:在對該第二字串進行該第一解壓縮時,不需要使用到有關於該距離長度對的資料。
100、102、300、302‧‧‧步驟
200‧‧‧解壓縮電路
210‧‧‧改良式BAC解壓縮單元
220‧‧‧先進先出緩衝器
230‧‧‧LZ77解壓縮單元
250‧‧‧動態隨機存取記憶體
第1圖為依據本發明一實施例之一種壓縮方法的流程圖。
第2圖為依據本發明一實施例之解壓縮電路的示意圖。
第3圖為依據本發明一實施例之解壓縮方法的流程圖。
BAC壓縮是針對二元(二進位)字串進行壓縮,而在BAC壓縮過程中,針對每一個位元,BAC壓縮會先對此位元作分類,例如目前要壓縮的這個位元是距離(distance)或是字元(literal),或是這個位元是字元的第一個位元...等等,而每一個分類會有一個獨立的機率值,此機率值是可以隨著壓縮過程而更新的。在對此位元進行壓縮的過程中,會先去看這個位元所對應的機率值,再根據這個位元的值是“1”或“0”來更新機率值。在傳統的BAC壓縮過程中,對於一距離長度對的下一個字元進行壓縮的過程中,會需要使用到與該距離長度對相關的字元,舉例來說,當字串“ABCDABCE”被壓縮為“A、B、C、D、(4,3)、E”時,壓縮“E”的過程會需要使用到距離長度對(4,3)的相關的資料,而使得後續在對“A、B、C、D、(4,3)、E”中的“E”進行解壓縮的過程中會需要使用到與距離長度對(4,3)相關的字元“C”與“D”,因而降低了解壓縮效率。
請參考第1圖,其為依據本發明一實施例之一種壓縮方法的流程圖:步驟100:流程開始。
步驟102:對一字串中的每個字元循序進行壓縮,以產生一壓縮後字串,其中當該字串中的複數個字元在進行壓縮的過程中被壓縮產生一距離長度對時,對緊接該複數個字元後的一下一個字元進行壓縮的過程中不需要使用到該字串中與該距離長度對相關的字元。
舉一例來說明上述的壓縮流程,假設欲壓縮的字串為“ABCDABCE”,則A、B、C、D、A、B、C會循序進行壓縮操作,並壓縮為ABCD(4,3),其中(4,3)代表這個位置開始的三個字元,相同於向前數4個字
元開始的三個字元,也就是A、B、C,而當壓縮到距離長度對(4,3)的下一個字元“E”時,壓縮“E”的過程中不需要使用到與距離長度對(4,3)相關的字元,於一實施例中,壓縮“E”的方式與壓縮字串的第一個字元“A”的方式相同。
實作上來說,請參見以下所示依據本發明之壓縮方法:(1).offs=0x100;symbol |=0x100;do{matchByte<<=1;EncodeBit(Probs+(offs+(matchByte & offs)+(symbol>>8)),(symbol>>7)& 1);symbol<<=1;offs &=~(matchByte ^ symbol);}while(symbol<0x10000);(2).prob=prob+(LZMA_LIT_SIZE *(((processedPos & 1pMask))+(dic[(dicPos==0?dicBufSize:dicPos)-1]>>8)));=prob+(LZMA_LIT_SIZE *(((processedPos & 1pMask))
在上述的公式(1)中,“offs”可以有兩種值“0x100”與“0”,其用來表示位元值比較結果是正確或是錯誤;symbol與matchByte分別為一八位元的值;公式(1)第2行表示將symbol的最高位元(MSB)設為“1”;公式(1)第6行中的EncodeBit(P,S)表示編碼出S,並以P作為機率值的輸入值(entry);公式(1)第7~8行表示將symbol往左位移一個位元後再跟matchByte比較兩者的最高位元;而公式(1)的最後一行則是描述步驟要一直進行到symbol的八個位元都比較完為止。
在上述的公式(2)中,“LZMA_LIT_SIZE”是一個固定值(於本例中為768),“processedPos”是用來表示現在寫出了幾個位元,“1pMask”則是用來表示要看“processedPos”的幾個位元值來作為機率值之輸入值的依據;此外,
公式(2)第2行的原本的用意是要讓prob另外加上dic[]來作為機率的輸入值,但在公式(2)中dic[]的描述可以讓prob不需要加上dic[]來作為機率的輸入值,因此可以使得本發明之壓縮方法在壓縮距離長度對的下一個字元時不使用與距離長度對相關的資料。
上述的公式僅用來描述核心操作的概念,而壓縮方式的其他細節則類似於BAC壓縮方法,亦即本發明之壓縮方法是針對一個二元(二進位)字串(亦即字串是由“0”、“1”構成的)來進行壓縮,並在壓縮字串的過程中適應性地更新所使用的機率表,並據以對每個位元值進行算數編碼。
由於本發明之壓縮方法在壓縮距離長度對的下一個字元時不使用與距離長度對相關的資料,因此,在後續的解壓縮過程中會更有效率,而本發明之解壓縮電路與相關的解壓縮方法描述如下。
請參考第2圖,其為依據本發明一實施例之解壓縮電路200的示意圖。如第2圖所示,解壓縮電路200係耦接於一動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)250,且解壓縮電路200包含有一第一解壓縮單元(於本實施例中,該第一解壓縮單元為改良式BAC解壓縮單元210)、一先進先出(First In First Out,FIFO)緩衝器220、一第二解壓縮單元(於本實施例中,該第二解壓縮單元為LZ77解壓縮單元230)。此外,於本實施例中,解壓縮電路200為使用藍培爾-西弗-馬可夫鏈演算法的解壓縮電路。
在解壓縮電路200的操作上,改良式BAC解壓縮單元210首先自動態隨機存取記憶體250中接收一資料串流,並對該資料串流進行解壓縮操作以得到一第一解壓縮後資料,其中該第一解壓縮後資料包含有複數個字元(literal)以及距離長度對(distance-length pair),接著,該第一解壓縮後資料循序經由先進先出緩衝器220傳送至LZ77解壓縮單元230,且LZ77解壓縮單元230對該第一解壓縮後資料進行解壓縮操作以得到一第二解壓縮後資料,並將該第二解壓縮後資料傳送至其他的電路中。特別地,於本實施例中,
該資料串流為使用第1圖所示之壓縮方法所壓縮完成的壓縮後資料,因此,改良式BAC解壓縮單元210在解壓縮到一距離長度對的下一個字元時,不需要使用到有關於該距離長度對的資料,因此,改良式BAC解壓縮單元210不需要等待LZ77解壓縮單元230回傳資料便可以持續地進行解壓縮操作,因此增進了解壓縮效率。
此外,改良式BAC解壓縮單元210對於解壓縮的概念類似於BAC解壓縮操作,亦即是將該資料中每一個位元值與參考值比較,並根據比較結果來決定使用哪一個機率表來進行解壓縮;舉例來說,若是第一個位元與一參考值相同,則採用第一個機率表的值,而若是第一個位元與該參考值不同,則採用第二個機率表的值。
舉例詳細來說,假設改良式BAC解壓縮單元210自動態隨機存取記憶體250中所接收的資料串流為“ABCDABCE”的壓縮資料,則改良式BAC解壓縮單元210會將資料串流逐步進行解壓縮操作以得到“A、B、C、D、(4,3)、E”,其中(4,3)是一個距離長度對,且用來表示往前四個字元後的三個字元(亦即“ABC”)。在改良式BAC解壓縮單元210對前四個字元“A、B、C、D”進行解壓縮的過程中,對後三個字元的解壓縮過程需要分別使用到前一個字元的資料,亦即解壓縮“B”時需要使用到“A”的資料,解壓縮“C”需要使用到“B”的資料,因此,改良式BAC解壓縮單元210內部會設有一個小的緩衝器以暫時儲存前一個字元的資料,以供後續進行解壓縮之用。而改良式BAC解壓縮單元210會循序將解壓縮完的四個字元“A、B、C、D”依序傳送到先進先出緩衝器220之後,再傳送到LZ77解壓縮單元230,而LZ77解壓縮單元230接著再直接將“A、B、C、D”傳送到動態隨機存取記憶體250以及/或是其他需要這些資料的電路中。
接著,改良式BAC解壓縮單元210在解壓縮完距離長度對(4,3)之後,將距離長度對(4,3)傳送至先進先出緩衝器220,再由先進先出緩衝器220傳送到LZ77解壓縮單元230進行解壓縮,以得到距離長度對(4,3)代表的
A、B、C,同時,再改良式BAC解壓縮單元210繼續對資料串流解壓縮以得到“E”的過程中,改良式BAC解壓縮單元210不需要使用距離長度對(4,3)的相關資料便可以直接對資料串流進行解壓縮以得到字元“E”,亦即改良式BAC解壓縮單元210不需要使用到LZ77解壓縮單元230所回傳的資料,亦或是LZ77解壓縮單元230可以不回傳距離長度對(4,3)的相關資料至BAC解壓縮單元210。如上所述,由於改良式BAC解壓縮單元210在解壓縮出“E”的過程中不需要等待其他資料便可直接進行,因此,整體的解壓縮時間可縮短,而增加了解壓縮效率。
另外,雖然在第1圖的實施例中是以改良式BAC解壓縮單元210與LZ77解壓縮單元230為例,但此並非作為本發明的限制。本發明之解壓縮電路可以適用於任何採用與BAC與LZ77解壓縮方式類似的解壓縮操作。
請參考第3圖,第3圖為依據本發明一實施例之解壓縮方法的流程圖。參考第2、3圖以及以上針對解壓縮電路200的操作說明,流程敘述如下:步驟300:對一資料串流進行一第一解壓縮操作以得到一第一解壓縮後資料,其中該第一解壓縮後資料包含有複數個字元以及至少一距離長度對,且在對該距離長度對的下一個字元進行解壓縮時,不需要使用到有關於該距離長度對的資料;步驟302:接收該第一解壓縮後資料,並循序對該第一解壓縮後資料進行一第二解壓縮操作以得到一第二解壓縮後資料。
簡要歸納本發明,於本發明之解壓縮電路及其相關的解壓縮方法中,改良式BAC解壓縮單元210在解壓縮到一距離長度對的下一個字元時,不需要使用到有關於該距離長度對的資料,因此,改良式BAC解壓縮單元210不需要等待LZ77解壓縮單元230回傳資料便可以持續地進行解壓縮操作,因此增進了解壓縮效率。
200‧‧‧解壓縮電路
210‧‧‧改良式BAC解壓縮單元
220‧‧‧先進先出緩衝器
230‧‧‧LZ77解壓縮單元
250‧‧‧動態隨機存取記憶體
Claims (9)
- 一種壓縮方法,用於對一字串進行壓縮,包含:依據該字串中的複數個字元產生一距離長度對;以及壓縮該些字元後的下一個字元;其中壓縮該下一個字元時不使用到與該距離長度對相關的資訊。
- 如申請專利範圍第1項中所述的壓縮方法,其中對該下一個字元的壓縮方式相同於對該字串之第一個字元的壓縮方式。
- 如申請專利範圍第1項中所述的壓縮方法,其中該字串為一二元字串,且在對該字串進行壓縮的過程會適應性地更新所使用的機率值。
- 一種解壓縮電路,用以解壓縮一資料,該資料依序包含有被壓縮的一第一字串、一距離長度對以及一第二字串,該解壓縮電路包含有:一第一解壓縮單元,用以對該資料進行一第一解壓縮操作以依序得到該第一字串、該距離長度對以及該第二字串;以及一第二解壓縮單元,用以接收並解壓縮該第一字串、該距離長度對以及該第二字串;其中該第一解壓縮單元在解壓縮到該第二字串時,不需要使用到有關於該距離長度對的資料。
- 如申請專利範圍第4項所述之解壓縮電路,其中該第二解壓縮單元為一LZ77解壓縮單元。
- 如申請專利範圍第4項所述之解壓縮電路,其中該第一解壓縮單元將該資料中每一個位元值與一參考值比較,並根據比較結果來進行解壓縮。
- 一種解壓縮方法,用以解壓縮一資料,該資料依序包含有被壓縮的一第一字串、一距離長度對以及一第二字串,該解壓縮方法包含有:對該資料進行一第一解壓縮操作以依序得到該第一字串、該距離長度對以及該第二字串;以及 接收並解壓縮該第一字串、該距離長度對以及該第二字串;其中該資料進行該第一解壓縮操作以依序得到該第一字串、該距離長度對以及該第二字串的步驟包含有:在對該第二字串進行該第一解壓縮時,不需要使用到有關於該距離長度對的資料。
- 如申請專利範圍第7項所述之解壓縮方法,其中該第二解壓縮操作為一LZ77解壓縮操作。
- 如申請專利範圍第7項所述之解壓縮方法,其中對該資料進行該第一解壓縮操作的步驟包含有:將該資料中每一個位元值與一參考值比較,並根據比較結果來進行解壓縮。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102111971A TWI498891B (zh) | 2013-04-02 | 2013-04-02 | 解壓縮電路與相關的壓縮方法與解壓縮方法 |
US14/018,539 US8854235B1 (en) | 2013-04-02 | 2013-09-05 | Decompression circuit and associated compression method and decompression method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102111971A TWI498891B (zh) | 2013-04-02 | 2013-04-02 | 解壓縮電路與相關的壓縮方法與解壓縮方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201440046A true TW201440046A (zh) | 2014-10-16 |
TWI498891B TWI498891B (zh) | 2015-09-01 |
Family
ID=51620242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102111971A TWI498891B (zh) | 2013-04-02 | 2013-04-02 | 解壓縮電路與相關的壓縮方法與解壓縮方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8854235B1 (zh) |
TW (1) | TWI498891B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9287893B1 (en) | 2015-05-01 | 2016-03-15 | Google Inc. | ASIC block for high bandwidth LZ77 decompression |
CN106788447B (zh) * | 2016-11-29 | 2020-07-28 | 苏州浪潮智能科技有限公司 | 一种lz77压缩算法的匹配长度输出方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5627534A (en) * | 1995-03-23 | 1997-05-06 | International Business Machines Corporation | Dual stage compression of bit mapped image data using refined run length and LZ compression |
AU2005248949B2 (en) * | 2005-12-23 | 2010-04-01 | Canon Kabushiki Kaisha | Efficient Halftone Image Compression |
US7538696B2 (en) * | 2007-08-31 | 2009-05-26 | Rmi Corporation | System and method for Huffman decoding within a compression engine |
US7623047B2 (en) * | 2007-10-30 | 2009-11-24 | Hewlett-Packard Development Company, L.P. | Data sequence compression |
US7688233B2 (en) * | 2008-02-07 | 2010-03-30 | Red Hat, Inc. | Compression for deflate algorithm |
US8694474B2 (en) * | 2011-07-06 | 2014-04-08 | Microsoft Corporation | Block entropy encoding for word compression |
-
2013
- 2013-04-02 TW TW102111971A patent/TWI498891B/zh not_active IP Right Cessation
- 2013-09-05 US US14/018,539 patent/US8854235B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
TWI498891B (zh) | 2015-09-01 |
US20140292547A1 (en) | 2014-10-02 |
US8854235B1 (en) | 2014-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9390099B1 (en) | Method and apparatus for improving a compression ratio of multiple documents by using templates | |
US9454552B2 (en) | Entropy coding and decoding using polar codes | |
US7538696B2 (en) | System and method for Huffman decoding within a compression engine | |
US7538695B2 (en) | System and method for deflate processing within a compression engine | |
KR101841103B1 (ko) | Vlsi 효율적인 허프만 인코딩 장치 및 방법 | |
WO2019153700A1 (zh) | 编解码方法、装置及编解码设备 | |
KR20030040567A (ko) | 허프만 디코딩을 수행하는 방법 | |
JP2003218703A (ja) | データ符号化装置及びデータ復号装置 | |
US10230392B2 (en) | Techniques for parallel data decompression | |
CN106656198B (zh) | 一种基于lz77的编码方法 | |
US7109895B1 (en) | High performance Lempel Ziv compression architecture | |
TWI498891B (zh) | 解壓縮電路與相關的壓縮方法與解壓縮方法 | |
TWI490855B (zh) | 解壓縮電路與相關的解壓縮方法 | |
CN104682966B (zh) | 列表数据的无损压缩方法 | |
US8018359B2 (en) | Conversion of bit lengths into codes | |
WO2020186535A1 (zh) | 点云属性编码方法和装置以及点云属性解码方法和装置 | |
KR20180067956A (ko) | 데이터 압축 장치 및 방법 | |
JP2016052046A (ja) | 圧縮装置、伸長装置およびストレージ装置 | |
JP2005521324A (ja) | 損失のないデータの圧縮および圧縮解除方法および装置 | |
US8190584B1 (en) | Utilizing recursive application of a reversible transform which involves lexicographic ordering | |
KR102296153B1 (ko) | 전용 산술 인코딩 명령 | |
US11967975B1 (en) | Method and apparatus for recursive data compression using seed bits | |
Singh et al. | Improved adaptive huffman compression algorithm | |
Wang et al. | Transformed HCT for parallel Huffman decoding | |
Doshi et al. | “Quad-Byte Transformation as a Pre-processing to Arithmetic Coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |