CN104113344A - 解压缩电路与相关的压缩方法与解压缩方法 - Google Patents
解压缩电路与相关的压缩方法与解压缩方法 Download PDFInfo
- Publication number
- CN104113344A CN104113344A CN201310131463.7A CN201310131463A CN104113344A CN 104113344 A CN104113344 A CN 104113344A CN 201310131463 A CN201310131463 A CN 201310131463A CN 104113344 A CN104113344 A CN 104113344A
- Authority
- CN
- China
- Prior art keywords
- decompression
- word string
- data
- length
- apart
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- 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”提供给前端进行二元算术编码解压缩,因而降低了解压缩效率。此外,目前使用蓝培尔-西弗-马可夫链演算法的压缩/解压缩方式均是使用软体来实作。
发明内容
因此,本发明的目的之一在于提供一种解压缩电路及其相关的压缩方法与解压缩方法,其可以有效率地进行解压缩,以解决已知技术中的问题。
依据本发明一实施例,一种压缩方法,用于对一字串进行压缩,包含:依据该字串中的多个字元产生一距离长度对;以及压缩该些字元后的下一个字元;其中压缩该下一个字元时不使用到与该距离长度对相关的资讯。
依据本发明另一实施例,一用以解压缩一数据的解压缩电路包含有一第一解压缩单元以及一第二解压缩单元,其中该数据依序包含有被压缩的一第一字串、一距离长度对以及一第二字串,该第一解压缩单元用以对该数据进行一第一解压缩操作以依序得到该第一字串、该距离长度对以及该第二字串;该第二解压缩单元用以接收并解压缩该第一字串、该距离长度对以及该第二字串;其中该第一解压缩单元在解压缩到该第二字串时,不需要使用到有关于该距离长度对的数据。
依据本发明另一实施例,一种解压缩方法,用以解压缩一数据,该数据依序包含有被压缩的一第一字串、一距离长度对以及一第二字串,该解压缩方法包含有:对该数据进行一第一解压缩操作以依序得到该第一字串、该距离长度对以及该第二字串;以及接收并解压缩该第一字串、该距离长度对以及该第二字串;其中该数据进行该第一解压缩操作以依序得到该第一字串、该距离长度对以及该第二字串的步骤包含有:在对该第二字串进行该第一解压缩时,不需要使用到有关于该距离长度对的数据。
附图说明
图1为依据本发明一实施例的一种压缩方法的流程图。
图2为依据本发明一实施例的解压缩电路的示意图。
图3为依据本发明一实施例的解压缩方法的流程图。
符号说明
100、102、300、302 步骤
200 解压缩电路
210 改良式BAC解压缩单元
220 先进先出缓冲器
230 LZ77解压缩单元
250 动态随机存取存储器
具体实施方式
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”与“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”是用来表示现在写出了几个位元,“lpMask”则是用来表示要看“processedPos”的几个位元值来作为机率值的输入值的依据;此外,公式(2)第2行的原本的用意是要让prob另外加上dic[]来作为机率的输入值,但在公式(2)中dic[]的描述可以让prob不需要加上dic[]来作为机率的输入值,因此可以使得本发明的压缩方法在压缩距离长度对的下一个字元时不使用与距离长度对相关的数据。
上述的公式仅用来描述核心操作的概念,而压缩方式的其他细节则类似于BAC压缩方法,亦即本发明的压缩方法是针对一个二元(二进位)字串(亦即字串是由“0”、“1”构成的)来进行压缩,并在压缩字串的过程中适应性地更新所使用的机率表,并据以对每个位元值进行算数编码。
由于本发明的压缩方法在压缩距离长度对的下一个字元时不使用与距离长度对相关的数据,因此,在后续的解压缩过程中会更有效率,而本发明的解压缩电路与相关的解压缩方法描述如下。
请参考图2,其为依据本发明一实施例的解压缩电路200的示意图。如图2所示,解压缩电路200耦接于一动态随机存取存储器(Dynamic Random AccessMemory,DRAM)250,且解压缩电路200包含有一第一解压缩单元(于本实施例中,该第一解压缩单元为改良式BAC解压缩单元210)、一先进先出(First In FirstOut,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回传数据便可以持续地进行解压缩操作,因此增进了解压缩效率。
Claims (9)
1.一种压缩方法,用于对一字串进行压缩,包含:
依据该字串中的多个字元产生一距离长度对;以及
压缩该些字元后的下一个字元;
其中压缩该下一个字元时不使用到与该距离长度对相关的资讯。
2.如权利要求1所述的压缩方法,其特征在于,对该下一个字元的压缩方式相同于对该字串的第一个字元的压缩方式。
3.如权利要求1所述的压缩方法,其特征在于,该字串为一二元字串,且在对该字串进行压缩的过程会适应性地更新所使用的机率值。
4.一种解压缩电路,用以解压缩一数据,该数据依序包含有被压缩的一第一字串、一距离长度对以及一第二字串,该解压缩电路包含有:
一第一解压缩单元,用以对该数据进行一第一解压缩操作以依序得到该第一字串、该距离长度对以及该第二字串;以及
一第二解压缩单元,用以接收并解压缩该第一字串、该距离长度对以及该第二字串;
其中该第一解压缩单元在解压缩到该第二字串时,不需要使用到有关于该距离长度对的数据。
5.如权利要求4所述的解压缩电路,其特征在于,该第二解压缩单元为一LZ77解压缩单元。
6.如权利要求4所述的解压缩电路,其特征在于,该第一解压缩单元将该数据中每一个位元值与一参考值比较,并根据比较结果来进行解压缩。
7.一种解压缩方法,用以解压缩一数据,该数据依序包含有被压缩的一第一字串、一距离长度对以及一第二字串,该解压缩方法包含有:
对该数据进行一第一解压缩操作以依序得到该第一字串、该距离长度对以及该第二字串;以及
接收并解压缩该第一字串、该距离长度对以及该第二字串;
其中该数据进行该第一解压缩操作以依序得到该第一字串、该距离长度对以及该第二字串的步骤包含有:
在对该第二字串进行该第一解压缩时,不需要使用到有关于该距离长度对的数据。
8.如权利要求7所述的解压缩方法,其特征在于,该第二解压缩操作为一LZ77解压缩操作。
9.如权利要求7所述的解压缩方法,其特征在于,对该数据进行该第一解压缩操作的步骤包含有:
将该数据中每一个位元值与一参考值比较,并根据比较结果来进行解压缩。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310131463.7A CN104113344B (zh) | 2013-04-16 | 2013-04-16 | 解压缩电路与相关的压缩方法与解压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310131463.7A CN104113344B (zh) | 2013-04-16 | 2013-04-16 | 解压缩电路与相关的压缩方法与解压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104113344A true CN104113344A (zh) | 2014-10-22 |
CN104113344B CN104113344B (zh) | 2017-04-12 |
Family
ID=51709992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310131463.7A Expired - Fee Related CN104113344B (zh) | 2013-04-16 | 2013-04-16 | 解压缩电路与相关的压缩方法与解压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104113344B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1552127A (zh) * | 2002-05-09 | 2004-12-01 | �Ҵ���˾ | 基于lz77算法的数据压缩的方法和装置 |
CN101069354A (zh) * | 2004-12-07 | 2007-11-07 | 日本电信电话株式会社 | 信息压缩编码装置、其解码装置、及其方法和程序以及记录介质 |
WO2009005758A2 (en) * | 2007-06-29 | 2009-01-08 | Rmi Corporation | System and method for compression processing within a compression engine |
US7688233B2 (en) * | 2008-02-07 | 2010-03-30 | Red Hat, Inc. | Compression for deflate algorithm |
CN103023511A (zh) * | 2012-12-05 | 2013-04-03 | 云之朗科技有限公司 | 一种应用的压缩编码方法及装置 |
-
2013
- 2013-04-16 CN CN201310131463.7A patent/CN104113344B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1552127A (zh) * | 2002-05-09 | 2004-12-01 | �Ҵ���˾ | 基于lz77算法的数据压缩的方法和装置 |
CN101069354A (zh) * | 2004-12-07 | 2007-11-07 | 日本电信电话株式会社 | 信息压缩编码装置、其解码装置、及其方法和程序以及记录介质 |
WO2009005758A2 (en) * | 2007-06-29 | 2009-01-08 | Rmi Corporation | System and method for compression processing within a compression engine |
US7688233B2 (en) * | 2008-02-07 | 2010-03-30 | Red Hat, Inc. | Compression for deflate algorithm |
CN103023511A (zh) * | 2012-12-05 | 2013-04-03 | 云之朗科技有限公司 | 一种应用的压缩编码方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104113344B (zh) | 2017-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10116325B2 (en) | Data compression/decompression device | |
US7538696B2 (en) | System and method for Huffman decoding within a compression engine | |
US5140321A (en) | Data compression/decompression method and apparatus | |
JP5498783B2 (ja) | データ圧縮の方法 | |
CN105207678B (zh) | 一种改进型lz4压缩算法的硬件实现系统 | |
US11431351B2 (en) | Selection of data compression technique based on input characteristics | |
CN102457283A (zh) | 一种数据压缩、解压缩方法及设备 | |
CN108122189B (zh) | 硬件中的顶点属性压缩和解压缩 | |
CN106849956B (zh) | 压缩方法、解压缩方法、装置和数据处理系统 | |
US20130176590A1 (en) | Image processing apparatus, image processing method, and image forming apparatus | |
CN111491169A (zh) | 一种数字图像压缩方法、装置、设备、介质 | |
US9015429B2 (en) | Method and apparatus for an efficient hardware implementation of dictionary based lossless compression | |
CN110971904A (zh) | 一种图像压缩的控制方法 | |
CN112332854A (zh) | 霍夫曼编码的硬件实现方法、装置及存储介质 | |
CN103138766A (zh) | 数据压缩与解压缩的方法及装置 | |
CN104113344A (zh) | 解压缩电路与相关的压缩方法与解压缩方法 | |
CN116683914A (zh) | 数据压缩方法、装置和系统 | |
US8854234B1 (en) | Decompression circuit and associated decompression method | |
CN110572664A (zh) | 一种新的bmp图像压缩方法及系统 | |
US7071854B1 (en) | Hardware-implemented LZW data decompression | |
CN114070901B (zh) | 基于多数据对齐的数据发送和接收方法、装置和设备 | |
US20230024148A1 (en) | Data processing methods and systems, and electronic devices | |
WO2022072802A1 (en) | Systems and methods for lossless compression of tabular numeric data | |
US8854235B1 (en) | Decompression circuit and associated compression method and decompression method | |
CN104113345A (zh) | 解压缩电路与相关的解压缩方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170412 Termination date: 20190416 |
|
CF01 | Termination of patent right due to non-payment of annual fee |