CN116707532A - 一种压缩文本的解压方法、装置、存储介质及电子设备 - Google Patents
一种压缩文本的解压方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN116707532A CN116707532A CN202310533080.6A CN202310533080A CN116707532A CN 116707532 A CN116707532 A CN 116707532A CN 202310533080 A CN202310533080 A CN 202310533080A CN 116707532 A CN116707532 A CN 116707532A
- Authority
- CN
- China
- Prior art keywords
- compression unit
- unit group
- compression
- text
- type
- 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.)
- Pending
Links
- 230000006837 decompression Effects 0.000 title claims abstract description 73
- 238000000034 method Methods 0.000 title claims abstract description 62
- 230000006835 compression Effects 0.000 claims abstract description 498
- 238000007906 compression Methods 0.000 claims abstract description 498
- 238000004891 communication Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本说明书公开了一种压缩文本的解压方法、装置、存储介质及电子设备。首先,基于各压缩单元的压缩类型以及各压缩单元在压缩文本中的顺序,对各压缩单元进行组合,得到至少一个压缩单元组。其次,按照各个压缩单元组在压缩文本中的顺序,依次针对各个压缩单元组执行解压操作,解压操作包括:如果该压缩单元组不为首个压缩单元组,则读取与上一个压缩单元组对应的历史缓冲区中的字符串,对该压缩单元组进行解压,得到与该压缩单元组对应的字符串,并写入与该压缩单元组对应的历史缓冲区以及写入输出缓冲区。最后,将输出缓冲区中的与各压缩单元组对应的字符串进行拼接,得到目标解压数据。本方法可以提高单个硬件引擎对压缩文本进行解压的效率。
Description
技术领域
本说明书涉及计算机技术领域,尤其涉及一种压缩文本的解压方法、装置、存储介质及电子设备。
背景技术
LZ77算法是一种常见的压缩算法。LZ77算法将重复的字符串编码成压缩编码,通过用压缩编码代替数据中重复出现的字符串,对文本数据进行压缩,得到压缩文本。压缩文本中的最小单位为压缩单元。严格意义上来说,LZ77不是一种算法,而是一种编码理论。它只定义了原理,并没有定义如何实现。基于这种理论来实现的压缩算法有很多,例如,LZ4、LZO、LZW等。
基于LZ77算法原理实现的压缩算法中的压缩单元具有两种类型,分别为第一类压缩单元以及第二类压缩单元。第一类压缩单元由不存在重复的若干连续的字符串构成。第二类压缩单元由重复字符串进行无损压缩编码后得到的压缩编码构成。在对压缩文本进行解压的过程中,若压缩单元为第一类压缩单元,硬件引擎需要将第一类压缩单元的字符串分别写入到历史缓冲区以及输出缓冲区。若压缩单元为第二类压缩单元,硬件引擎需要先读取历史缓冲区中的字符串,再将第二类压缩单元的字符串分别写入到历史缓冲区以及输出缓冲区。
可以看出,上述方法需要依次对每个压缩单元分别进行解压。
而在这一基础之上,为了提高解压过程中的数据吞吐量,则只能采用增加硬件引擎的方式。但是,增加硬件引擎的数量是通过增加芯片面积的方法达成的,这会增加硬件成本。并且,这种方法没有对压缩文本的解压方法进行改进,不能提高单个硬件引擎对压缩文本进行解压的效率。
因此,如何提高单个硬件引擎对压缩文本进行解压的效率,则是一个亟待解决的问题。
发明内容
本说明书提供一种压缩文本的解压方法、装置、电子设备及机器可读存储介质,以提高单个硬件引擎对压缩文本进行解压的效率。
本说明书采用下述技术方案:
本说明书提供了一种压缩文本的解压方法,其中所述压缩文本为将文本中包含的重复字符串进行无损压缩后得到的文本;所述重复字符串为所述文本包含的字符串相对于该字符串在所述文本中的位置之前的滑动窗口中的字符串的重复字符串;所述压缩文本包括多个压缩单元;所述压缩单元包括由与所述滑动窗口中的字符串不存在重复的若干连续的字符构成的第一类压缩单元;以及,针对包含的重复字符串进行无损压缩编码后得到的压缩编码构成的第二类压缩单元;包括:
基于各压缩单元的压缩类型以及各压缩单元在所述压缩文本中的顺序,对各压缩单元进行组合,得到至少一个压缩单元组,所述压缩单元组包括一个第一类压缩单元以及一个第二类压缩单元;
按照各个压缩单元组在所述压缩文本中的顺序,依次针对各个压缩单元组执行解压操作,所述解压操作包括:如果该压缩单元组不为首个压缩单元组,则读取与上一个压缩单元组对应的历史缓冲区中的字符串,对该压缩单元组进行解压,得到与该压缩单元组对应的字符串,并将所述与该压缩单元组对应的字符串,写入与该压缩单元组对应的历史缓冲区,作为与下一压缩单元组对应的历史缓冲区,以及将所述与该压缩单元组对应的字符串,写入输出缓冲区,所述历史缓冲区存储了与其对应的压缩单元组的滑动窗口中包含的字符串;
将所述输出缓冲区中的与各压缩单元组对应的字符串进行拼接,得到目标解压数据。
可选地,确定各压缩单元的压缩类型,包括:
获取压缩文本;
对所述压缩文本进行解析,确定与所述压缩文本中的各压缩单元对应的压缩文本格式;
将与所述压缩文本中的各压缩单元对应的压缩文本格式转换为指定压缩文本格式,确定各压缩单元的压缩类型。
可选地,所述指定压缩文本格式包括:第一类压缩单元格式和第二类压缩单元格式,所述第一类压缩单元格式由第一类压缩单元标记、字符串长度、字符串组成,所述第二类压缩单元格式由第二类压缩单元标记、重复长度、偏移值组成,所述重复长度用于表示重复字符串的长度,所述偏移值用于表示所述滑动窗口中的重复字符串中的首字符与文本包含的重复字符串中的首字符之间的距离。
可选地,所述压缩单元组中包含的所述第一类压缩单元位于所述第二类压缩单元之前。
可选地,所述方法还包括:
若该压缩单元组为首个压缩单元组,对该压缩单元组进行解压,得到与该压缩单元组对应的字符串,并将所述与该压缩单元组对应的字符串,写入与该压缩单元组对应的历史缓冲区,作为与下一压缩单元组对应的历史缓冲区。
可选地,在按照各个压缩单元组在所述压缩文本中的顺序,依次针对各个压缩单元组执行解压操作之前,所述方法还包括:
获取随机存取存储器的位宽;
若所述压缩单元组的数据量大于所述随机存取存储器的位宽,则按照所述随机存取存储器的位宽,对所述压缩单元组进行切割,得到切割后的压缩单元组;
按照各个压缩单元组在所述压缩文本中的顺序,依次针对各个压缩单元组执行解压操作,包括:
按照各个切割后的压缩单元组在所述压缩文本中的顺序,依次针对各个切割后的压缩单元组执行解压操作。
可选地,所述压缩文本为按照设定压缩算法进行无损压缩后得到的文本,所述设定压缩算法包括:基于LZ77算法原理实现的压缩算法。
本说明书提供了一种压缩文本的解压装置,其中所述压缩文本为将文本中包含的重复字符串进行无损压缩后得到的文本;所述重复字符串为所述文本包含的字符串相对于该字符串在所述文本中的位置之前的滑动窗口中的字符串的重复字符串;所述压缩文本包括多个压缩单元;所述压缩单元包括由与所述滑动窗口中的字符串不存在重复的若干连续的字符构成的第一类压缩单元;以及,针对包含的重复字符串进行无损压缩编码后得到的压缩编码构成的第二类压缩单元;包括:
组合模块,用于基于各压缩单元的压缩类型以及各压缩单元在所述压缩文本中的顺序,对各压缩单元进行组合,得到至少一个压缩单元组,所述压缩单元组包括一个第一类压缩单元以及一个第二类压缩单元;
解压模块,用于按照各个压缩单元组在所述压缩文本中的顺序,依次针对各个压缩单元组执行解压操作,所述解压操作包括:如果该压缩单元组不为首个压缩单元组,则读取与上一个压缩单元组对应的历史缓冲区中的字符串,对该压缩单元组进行解压,得到与该压缩单元组对应的字符串,并将所述与该压缩单元组对应的字符串,写入与该压缩单元组对应的历史缓冲区,作为与下一压缩单元组对应的历史缓冲区,以及将所述与该压缩单元组对应的字符串,写入输出缓冲区,所述历史缓冲区存储了与其对应的压缩单元组的滑动窗口中包含的字符串;
拼接模块,用于将所述输出缓冲区中的与各压缩单元组对应的字符串进行拼接,得到目标解压数据。
本说明书提供了一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述压缩文本的解压方法。
本说明书提供了一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述压缩文本的解压方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
在本说明书提供的压缩文本的解压方法中,由于基于各压缩单元的压缩类型以及各压缩单元在压缩文本中的顺序,对各压缩单元进行组合,得到压缩单元组。通过压缩单元组,将压缩单元组内的第一类压缩单元写入一次历史缓冲区以及写入一次输出缓冲区的操作,与第二类压缩单元写入一次历史缓冲区以及写入一次输出缓冲区的操作进行合并。因此在对压缩单元组执行解压操作时,仅需读取一次历史缓冲区中的字符串,写入一次历史缓冲区以及写入一次输出缓冲区,就可以完成解压操作,从而可以提高单个硬件引擎对压缩文本进行解压的效率。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1是一示例性的实施例示出的一种压缩文本的解压方法的流程图;
图2是一示例性的实施例示出的一种各压缩单元的顺序的流程图;
图3是一示例性的实施例示出的一种压缩单元组的组合方法的流程图;
图4是一示例性的实施例示出的另一种各压缩单元的顺序的流程图;
图5是一示例性的实施例示出的另一种压缩单元组的组合方法的流程图;
图6是一示例性的实施例示出的压缩文本的解压装置所在电子设备的结构示意图;
图7是一示例性的实施例示出的一种压缩文本的解压装置的框图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
为了使本技术领域的人员更好地理解本说明书实施例中的技术方案,下面先对本说明书实施例涉及的相关技术,进行简要说明。
LZ77是一种编码理论,将滑动窗口中的重复的字符串编码成压缩编码,通过用压缩编码代替数据中重复出现的字符串,对文本数据进行压缩,得到压缩文本。LZ77算法的第一类压缩单元格式为(0,0,下一个待压缩的字符),LZ77算法的第二类压缩单元格式为(偏移值,匹配长度,当前匹配字符串的下一个待压缩的字符)。LZ77的压缩文本的具体过程如下。
若字符串为“ABABCDBCE”,滑动窗口的长度为5,待压缩区域的长度为5。第一步,待压缩区域有五个字符“ABABC”,滑动窗口中不存在字符。由于,滑动窗口中不存在字符,待压缩区域内的字符没有出现重复字符串,输出(0,0,A),滑动窗口右移一个字符。
第二步,待压缩区域有五个字符“BABCD”,滑动窗口中有一个字符“A”。由于,待压缩区域内的字符没有出现重复字符串,输出(0,0,B),滑动窗口右移一个字符。
第三步,待压缩区域有五个字符“ABCDB”,滑动窗口中有两个字符“AB”。由于,待压缩区域内的字符出现重复字符串“AB”,输出(2,2,C),滑动窗口右移三个字符。
第四步,待压缩区域有四个字符“DBCE”,滑动窗口中有五个字符“ABABC”。由于,待压缩区域内的字符没有出现重复字符串,输出(0,0,D),滑动窗口右移一个字符。
第五步,待压缩区域有三个字符“BCE”,滑动窗口中有五个字符“BABCD”。由于,待压缩区域内的字符出现重复字符串“BC”,输出(3,2,E),滑动窗口右移三个字符。待压缩区域不存在字符,完成文本压缩,得到字符串“ABABCDBCE”的压缩文本“(0,0,A),(0,0,B),(2,2,C),(0,0,D),(3,2,E)”。
压缩单元可以用于表示压缩文本中的最小单位。
滑动窗口可以用于表示一个固定长度的窗口。滑动窗口可以是基于双指针的一种思想,两个指针指向的元素之间形成一个窗口。这两个指针标记了窗口的左右边界,然后,这两个指针的移动形成了窗口的滑动。其中,滑动窗口的长度可以是技术人员按照专家经验确定出的。
在实际应用中,硬件引擎在对压缩文本进行解压的过程中,需要依次对每个压缩单元进行解压。这会导致硬件引擎将与压缩单元对应的解压数据写入滑动窗口以及输出缓冲区的操作较为频繁,从而,使得单个硬件引擎对压缩文本进行解压的效率较低。
基于此,本说明书提出了一种基于各压缩单元的压缩类型进行组合,得到压缩单元组,并对压缩单元组执行解压操作的技术方案。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1是一示例性的实施例示出的一种压缩文本的解压方法的流程图,具体包括以下步骤:
S100:基于各压缩单元的压缩类型以及各压缩单元在所述压缩文本中的顺序,对各压缩单元进行组合,得到至少一个压缩单元组,所述压缩单元组包括一个第一类压缩单元以及一个第二类压缩单元。
在本说明书实施例中,压缩文本的解压方法的执行主体可以是指搭载在服务器上的硬件引擎、台式电脑等电子设备。硬件引擎可以是纯硬件模块的方式,通过标准的总线协议(例如AMBA总线)与系统的其它部分进行通讯和数据交换,例如,现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)。当然,硬件引擎也可以与CPU耦合在一起,部分工作由运行在CPU之上的软件实现,例如,硬件引擎被实现为CPU的协处理器。为了便于描述,下面仅以硬件引擎为执行主体,对本说明书提供的压缩文本的解压方法进行说明。
在本说明书实施例中,压缩文本包括多个压缩单元。压缩文本为按照设定压缩算法进行压缩的文本。这里提到的设定压缩算法包括:基于LZ77算法原理实现的压缩算法。
需要说明的是,本说明书中的压缩算法是无损压缩,即,用数据的统计冗余进行压缩,可完全恢复原始数据而不引起任何失真。
由于,LZ77算法的主要思想是将重复的字符串编码成短语标记,通过用短语标记代替数据中重复出现的字符串,对文本数据进行压缩,得到压缩文本。也就是说,基于LZ77算法原理实现的压缩算法中的压缩单元包括由与滑动窗口中的字符串不存在重复的若干连续的字符串构成的第一类压缩单元,以及针对包含的重复字符串进行无损压缩编码后得到的压缩编码构成的第二类压缩单元。
在实际应用中,基于LZ77算法原理实现的压缩算法有多种,不同的基于LZ77算法原理实现的压缩算法中的压缩单元对应的压缩文本格式并不相同。由于压缩文本可能是不同的基于LZ77算法原理实现的压缩算法进行压缩得到的,因此,硬件引擎需要对压缩文本进行解析,确定与压缩文本中的各压缩单元对应的压缩文本格式,并将该压缩文本格式转换为指定压缩文本格式,以对压缩文本进行解压。
在本说明书实施例中,硬件引擎可以获取压缩文本。
其次,硬件引擎可以对压缩文本进行解析,确定与压缩文本中的各压缩单元对应的压缩文本格式。
然后,硬件引擎可以将与压缩文本中的各压缩单元对应的压缩文本格式转换为指定压缩文本格式,确定各压缩单元的压缩类型。
其中,指定压缩文本格式包括:第一类压缩单元格式和第二类压缩单元格式。第一类压缩单元格式由第一类压缩单元标记、字符串长度、字符串组成。例如,(第一类压缩单元标记,字符串长度,字符串)。第一类压缩单元标记用于表示压缩单元由与滑动窗口中的字符串不存在重复的若干连续的字符构成。字符串长度用于表示压缩单元中的字符串的长度。字符串用于表示压缩单元中的字符串的内容。
第二类压缩单元格式由第二类压缩单元标记、重复长度、偏移值组成。例如,(第二类压缩单元标记,重复长度,偏移值)。第二类压缩单元标记用于表示压缩单元由针对包含的重复字符串进行无损压缩编码后得到的压缩编码构成。重复长度用于表示重复字符串的长度,也就是有多少个字符与滑动窗口中的字符串相重复。重复字符串用于表示与滑动窗口中的字符串相重复的字符串。偏移值用于表示滑动窗口中的重复字符串中的首字符与文本包含的重复字符串中的首字符之间的距离。
例如,若基于LZ77算法原理实现的压缩算法为LZ77算法,当前的文本为“ABABCDBCE”,滑动窗口的长度为5,待压缩区域的长度为5,则LZ77算法的压缩文本为“(0,0,A),(0,0,B),(2,2,C),(0,0,D),(3,2,E)”。
硬件引擎可以将基于LZ77算法的压缩文本中的各压缩单元对应的压缩文本格式转换为指定压缩文本格式。指定压缩文本格式的第一类压缩单元标记与第二类压缩单元标记可以用指定数值表示。例如,第一类压缩单元标记可以用0表示,第二类压缩单元标记可以用1表示。指定压缩文本格式的压缩文本为“(0,2,AB),(1,2,2),(0,2,CD),(1,2,3),(0,1,E)”。
再例如,若基于LZ77算法原理实现的压缩算法为LZSS算法,则LZSS算法的第一类压缩单元格式为(0,下一个待压缩的字符),LZSS算法的第二类压缩单元格式为(偏移值,匹配长度)。若当前的文本为“ABABCDBCE”,滑动窗口的长度为5,待压缩区域的长度为5,则LZ77算法的压缩文本为“(0,A),(0,B),(2,2),(0,C),(0,D),(3,2),(0,E)”。
同样的,硬件引擎可以将基于LZSS算法的压缩文本中的各压缩单元对应的压缩文本格式转换为指定压缩文本格式。指定压缩文本格式的压缩文本为“(0,2,AB),(1,2,2),(0,2,CD),(1,2,3),(0,1,E)”。
需要说明的是,本说明书不对指定压缩文本格式的具体表示形式进行限定,并且,不对第一类压缩单元标记与第二类压缩单元标记的具体数值进行限定。技术人员可以根据具体的需求,确定指定压缩文本格式的具体表示形式,以及,确定第一类压缩单元标记与第二类压缩单元标记的具体数值。
在实际应用中,硬件引擎在对压缩文本进行解压的过程中,需要依次对每个压缩单元进行解压。若压缩单元为第一类压缩单元,硬件引擎需要写入一次历史缓冲区,以及写入一次输出缓冲区。若压缩单元为第二类压缩单元,硬件引擎需要读取一次历史缓冲区中的字符串,写入一次历史缓冲区,以及写入一次输出缓冲区。
也就是说,硬件引擎解压一个第一类压缩单元以及一个第二类压缩单元,需要读取一次历史缓冲区中的字符串,写入两次历史缓冲区,以及写入两次输出缓冲区。可以看出,这种方法在解压过程中的读写操作较为频繁,对压缩文本进行解压的效率较低。
基于此,硬件引擎可以基于各压缩单元的压缩类型进行组合,得到压缩单元组,通过对压缩单元组进行解压,降低在解压过程中的读写操作的次数,从而提高对压缩文本进行解压的效率。
在本说明书实施例中,硬件引擎可以基于各压缩单元的压缩类型,按照各压缩单元在压缩文本中的顺序,对各压缩单元进行组合,得到至少一个压缩单元组。其中,压缩单元组包括一个第一类压缩单元以及一个第二类压缩单元。
在实际应用中,将与压缩文本中的各压缩单元对应的压缩文本格式转换为指定压缩文本格式之后,各压缩单元在压缩文本中的顺序可以为首个压缩单元为第一类压缩单元,第二个压缩单元为第二类压缩单元,第三个压缩单元为第一类压缩单元,第四个压缩单元为第二类压缩单元,以此类推。具体如图2所示。
图2是一示例性的实施例示出的一种各压缩单元的顺序的流程图。
由于,第二类压缩单元在解压的过程中需要读取历史缓冲区中的字符串,若在压缩单元组中,第一类压缩单元位于第二类压缩单元之前,那么,第二类压缩单元需要读取的历史缓冲区中的字符串可能来自于当前的压缩单元组中的第一类压缩单元,也可能来自于上一压缩单元组,这会增加解压过程的复杂程度。
基于此,硬件引擎可以按照压缩单元组中包含的第一类压缩单元位于第二类压缩单元之前的组合方式,对各压缩单元进行组合,得到压缩单元组。具体如图3所示。
图3是一示例性的实施例示出的一种压缩单元组的组合方法的流程图。
在图3中,首个第一类压缩单元不与其他压缩单元进行组合,视作首个压缩单元组。硬件引擎将首个第一类压缩单元写入历史缓冲区,以用于后续的压缩单元组进行解压。然后,硬件引擎可以第二类压缩单元位于第一类压缩单元之前的组合方式,对各压缩单元进行组合,得到各压缩单元组。
当然,硬件引擎也可以在首个第一类压缩单元之前视作存在一个字符串长度为0的第二类压缩单元,将字符串长度为0的第二类压缩单元与首个第一类压缩单元进行组合,得到首个压缩单元组。
进一步的,在两个第二类压缩单元之间,可以不存在第一类压缩单元。例如,各压缩单元在压缩文本中的顺序可以为首个压缩单元为第一类压缩单元,第二个压缩单元为第二类压缩单元,第三个压缩单元为第二类压缩单元,第四个压缩单元为第一类压缩单元,以此类推。具体如图4所示。
图4是一示例性的实施例示出的另一种各压缩单元的顺序的流程图。
可以看出,在两个第二类压缩单元之间,可以不存在第一类压缩单元。而第一类压缩单元由若干个连续的字符构成,不会存在连续的两个第一类压缩单元。
由于,硬件引擎可以按照压缩单元组中包含的第二类压缩单元位于第一类压缩单元之前的组合方式,对各压缩单元进行组合,得到压缩单元组。
基于此,硬件引擎可以在两个第二类压缩单元之间,视作存在一个字符串长度为0的第一类压缩单元,以对各压缩单元进行组合,得到压缩单元组。具体如图5所示。
图5是一示例性的实施例示出的另一种压缩单元组的组合方法的流程图。
在图5中,虚线框为字符串长度为0的第一类压缩单元。然后,硬件引擎可以以第二类压缩单元位于第一类压缩单元之前的组合方式,对字符串长度为0的第一类压缩单元与第二类压缩单元进行组合,得到压缩单元组。
其中,首个第一类压缩单元不与其他压缩单元进行组合,硬件引擎可以将首个第一类压缩单元视作首个压缩单元组。当然,硬件引擎也可以在首个第一类压缩单元之前视作存在一个字符串长度为0的第二类压缩单元,将字符串长度为0的第二类压缩单元与首个第一类压缩单元进行组合,得到首个压缩单元组。
S102:按照各个压缩单元组在所述压缩文本中的顺序,依次针对各个压缩单元组执行解压操作,所述解压操作包括:如果该压缩单元组不为首个压缩单元组,则读取与上一个压缩单元组对应的历史缓冲区中的字符串,对该压缩单元组进行解压,得到与该压缩单元组对应的字符串,并将所述与该压缩单元组对应的字符串,写入与该压缩单元组对应的历史缓冲区,作为与下一压缩单元组对应的历史缓冲区,以及将所述与该压缩单元组对应的字符串,写入输出缓冲区,所述历史缓冲区存储了与其对应的压缩单元组的滑动窗口中包含的字符串。
在实际应用中,一个第二类压缩单元需要依赖于上一个压缩单元写入后的历史缓冲区进行解压。同样的,一个压缩单元组也需要依赖于上一个压缩单元组写入后的历史缓冲区进行解压。因此,硬件引擎需要按照各个压缩单元组在压缩文本中的顺序,依次执行解压操作。
在本说明书实施例中,硬件引擎可以按照各个压缩单元组在压缩文本中的顺序,依次针对各个压缩单元组执行解压操作。
解压操作包括:如果该压缩单元组不为首个压缩单元组,则读取与上一个压缩单元组对应的历史缓冲区中的字符串,对该压缩单元组进行解压,得到与该压缩单元组对应的字符串,并将与该压缩单元组对应的字符串,写入与该压缩单元组对应的历史缓冲区,作为与下一压缩单元组对应的历史缓冲区,以及将与该压缩单元组对应的字符串,写入输出缓冲区。这里提到的历史缓冲区存储了与其对应的压缩单元组的滑动窗口中包含的字符串。
若该压缩单元组为首个压缩单元组,对该压缩单元组进行解压,得到与该压缩单元组对应的字符串,并将与该压缩单元组对应的字符串,写入与该压缩单元组对应的历史缓冲区,作为与下一压缩单元组对应的历史缓冲区。在上述提到首个压缩单元组由一个字符串长度为0的第二类压缩单元与首个第一类压缩单元组成,因此,无需读取历史缓冲区中的字符串。
可以看出,硬件引擎将各压缩单元进行组合,得到压缩单元组,通过对压缩单元组进行处理,可以一次并发处理两个压缩单元,从而,提高了对压缩文本进行解压的效率。
在实际应用中,硬件引擎需要将压缩单元组解压后的解压数据写入历史缓冲区,而历史缓冲区中的字符串存储在随机存取存储器(Random Access Memory,RAM)。由于,随机存取存储器的位宽有限,若压缩单元组的数据量大于随机存取存储器的位宽,可能会导致硬件引擎无法一次处理一个压缩单元组,基于此,硬件引擎可以将压缩单元组进行切割,避免压缩单元组的数据量大于随机存取存储器的位宽,造成的解压数据的损失。
在本说明书实施例中,获取随机存取存储器的位宽。这里提到的位宽可以是指内存或显存在一个时钟周期内所能传送数据的位数,位数越大则瞬间所能传输的数据量越大。
若压缩单元组的数据量大于随机存取存储器的位宽,则按照随机存取存储器的位宽,对压缩单元组进行切割,得到切割后的压缩单元组。例如,若随机存取存储器的位宽为128位,压缩单元组的数据量为256位,则硬件引擎可以将对256位的压缩单元组进行切割,得到两个128位的压缩单元组。
然后,硬件引擎可以按照各个切割后的压缩单元组在压缩文本中的顺序,依次针对各个切割后的压缩单元组执行解压操作。
其中,若该切割后的压缩单元组不为首个压缩单元组,则读取与上一个压缩单元组对应的历史缓冲区中的字符串,对该切割后的压缩单元组进行解压,得到与该切割后的压缩单元组对应的字符串,并将与该切割后的压缩单元组对应的字符串,写入与该切割后的压缩单元组对应的历史缓冲区,作为与下一压缩单元组对应的历史缓冲区,以及将与该切割后的压缩单元组对应的字符串,写入输出缓冲区。
S104:将所述输出缓冲区中的与各压缩单元组对应的字符串进行拼接,得到目标解压数据。
在本说明书实施例中,硬件引擎可以将输出缓冲区中的与各压缩单元组对应的字符串进行拼接,得到目标解压数据。
从上述方法中可以看出,本方法由于基于各压缩单元的压缩类型以及各压缩单元在压缩文本中的顺序,对各压缩单元进行组合,得到压缩单元组。通过压缩单元组,将压缩单元组内的第一类压缩单元写入一次历史缓冲区以及写入一次输出缓冲区的操作,与第二类压缩单元写入一次历史缓冲区以及写入一次输出缓冲区的操作进行合并。因此在对压缩单元组执行解压操作时,仅需读取一次历史缓冲区中的字符串,写入一次历史缓冲区以及写入一次输出缓冲区,就可以完成解压操作,从而可以提高单个硬件引擎对压缩文本进行解压的效率。
与上述压缩文本的解压方法的实施例对应的,本说明书还提供了一种压缩文本的解压装置的实施例。
请参见图6,图6是一示例性的实施例示出的一种压缩文本的解压装置所在电子设备的结构结构图。在硬件层面,该设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器602从非易失性存储器610中读取对应的计算机程序到内存408中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参见图7,图7是一示例性的实施例示出的一种压缩文本的解压装置的框图。该压缩文本的解压装置可以应用于如图6所示的电子设备中,以实现本说明书的技术方案。其中,所述压缩文本的解压装置可以包括:
组合模块700,用于基于各压缩单元的压缩类型以及各压缩单元在所述压缩文本中的顺序,对各压缩单元进行组合,得到至少一个压缩单元组,所述压缩单元组包括一个第一类压缩单元以及一个第二类压缩单元;
解压模块702,用于按照各个压缩单元组在所述压缩文本中的顺序,依次针对各个压缩单元组执行解压操作,所述解压操作包括:如果该压缩单元组不为首个压缩单元组,则读取与上一个压缩单元组对应的历史缓冲区中的字符串,对该压缩单元组进行解压,得到与该压缩单元组对应的字符串,并将所述与该压缩单元组对应的字符串,写入与该压缩单元组对应的历史缓冲区,作为与下一压缩单元组对应的历史缓冲区,以及将所述与该压缩单元组对应的字符串,写入输出缓冲区,所述历史缓冲区存储了与其对应的压缩单元组的滑动窗口中包含的字符串;
拼接模块704,用于将所述输出缓冲区中的与各压缩单元组对应的字符串进行拼接,得到目标解压数据。
可选的,所述组合模块700,具体用于获取压缩文本,对所述压缩文本进行解析,确定与所述压缩文本中的各压缩单元对应的压缩文本格式,将与所述压缩文本中的各压缩单元对应的压缩文本格式转换为指定压缩文本格式,确定各压缩单元的压缩类型。
可选的,所述指定压缩文本格式包括:第一类压缩单元格式和第二类压缩单元格式,所述第一类压缩单元格式由第一类压缩单元标记、字符串长度、字符串组成,所述第二类压缩单元格式由第二类压缩单元标记、重复长度、偏移值组成,所述重复长度用于表示重复字符串的长度,所述偏移值用于表示所述滑动窗口中的重复字符串中的首字符与文本包含的重复字符串中的首字符之间的距离。
可选的,所述压缩单元组中包含的所述第一类压缩单元位于所述第二类压缩单元之前。
可选的,所述解压模块702,具体还用于若该压缩单元组为首个压缩单元组,对该压缩单元组进行解压,得到与该压缩单元组对应的字符串,并将所述与该压缩单元组对应的字符串,写入与该压缩单元组对应的历史缓冲区,作为与下一压缩单元组对应的历史缓冲区。
可选的,所述解压模块702,具体还用于获取随机存取存储器的位宽,若所述压缩单元组的数据量大于所述随机存取存储器的位宽,则按照所述随机存取存储器的位宽,对所述压缩单元组进行切割,得到切割后的压缩单元组,按照各个切割后的压缩单元组在所述压缩文本中的顺序,依次针对各个切割后的压缩单元组执行解压操作。
可选的,所述压缩文本为按照设定压缩算法进行无损压缩后得到的文本,所述设定压缩算法包括:基于LZ77算法原理实现的压缩算法。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例只是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (10)
1.一种压缩文本的解压方法,其中所述压缩文本为将文本中包含的重复字符串进行无损压缩后得到的文本;所述重复字符串为所述文本包含的字符串相对于该字符串在所述文本中的位置之前的滑动窗口中的字符串的重复字符串;所述压缩文本包括多个压缩单元;所述压缩单元包括由与所述滑动窗口中的字符串不存在重复的若干连续的字符构成的第一类压缩单元;以及,针对包含的重复字符串进行无损压缩编码后得到的压缩编码构成的第二类压缩单元;包括:
基于各压缩单元的压缩类型以及各压缩单元在所述压缩文本中的顺序,对各压缩单元进行组合,得到至少一个压缩单元组,所述压缩单元组包括一个第一类压缩单元以及一个第二类压缩单元;
按照各个压缩单元组在所述压缩文本中的顺序,依次针对各个压缩单元组执行解压操作,所述解压操作包括:如果该压缩单元组不为首个压缩单元组,则读取与上一个压缩单元组对应的历史缓冲区中的字符串,对该压缩单元组进行解压,得到与该压缩单元组对应的字符串,并将所述与该压缩单元组对应的字符串,写入与该压缩单元组对应的历史缓冲区,作为与下一压缩单元组对应的历史缓冲区,以及将所述与该压缩单元组对应的字符串,写入输出缓冲区,所述历史缓冲区存储了与其对应的压缩单元组的滑动窗口中包含的字符串;
将所述输出缓冲区中的与各压缩单元组对应的字符串进行拼接,得到目标解压数据。
2.如权利要求1所述的方法,确定各压缩单元的压缩类型,包括:
获取压缩文本;
对所述压缩文本进行解析,确定与所述压缩文本中的各压缩单元对应的压缩文本格式;
将与所述压缩文本中的各压缩单元对应的压缩文本格式转换为指定压缩文本格式,确定各压缩单元的压缩类型。
3.如权利要求2所述的方法,所述指定压缩文本格式包括:第一类压缩单元格式和第二类压缩单元格式,所述第一类压缩单元格式由第一类压缩单元标记、字符串长度、字符串组成,所述第二类压缩单元格式由第二类压缩单元标记、重复长度、偏移值组成,所述重复长度用于表示重复字符串的长度,所述偏移值用于表示所述滑动窗口中的重复字符串中的首字符与文本包含的重复字符串中的首字符之间的距离。
4.如权利要求1所述的方法,所述压缩单元组中包含的所述第一类压缩单元位于所述第二类压缩单元之前。
5.如权利要求1所述的方法,所述方法还包括:
若该压缩单元组为首个压缩单元组,对该压缩单元组进行解压,得到与该压缩单元组对应的字符串,并将所述与该压缩单元组对应的字符串,写入与该压缩单元组对应的历史缓冲区,作为与下一压缩单元组对应的历史缓冲区。
6.如权利要求1所述的方法,在按照各个压缩单元组在所述压缩文本中的顺序,依次针对各个压缩单元组执行解压操作之前,所述方法还包括:
获取随机存取存储器的位宽;
若所述压缩单元组的数据量大于所述随机存取存储器的位宽,则按照所述随机存取存储器的位宽,对所述压缩单元组进行切割,得到切割后的压缩单元组;
按照各个压缩单元组在所述压缩文本中的顺序,依次针对各个压缩单元组执行解压操作,包括:
按照各个切割后的压缩单元组在所述压缩文本中的顺序,依次针对各个切割后的压缩单元组执行解压操作。
7.如权利要求1所述的方法,所述压缩文本为按照设定压缩算法进行无损压缩后得到的文本,所述设定压缩算法包括:基于LZ77算法原理实现的压缩算法。
8.一种压缩文本的解压装置,其中所述压缩文本为将文本中包含的重复字符串进行无损压缩后得到的文本;所述重复字符串为所述文本包含的字符串相对于该字符串在所述文本中的位置之前的滑动窗口中的字符串的重复字符串;所述压缩文本包括多个压缩单元;所述压缩单元包括由与所述滑动窗口中的字符串不存在重复的若干连续的字符构成的第一类压缩单元;以及,针对包含的重复字符串进行无损压缩编码后得到的压缩编码构成的第二类压缩单元;包括:
组合模块,用于基于各压缩单元的压缩类型以及各压缩单元在所述压缩文本中的顺序,对各压缩单元进行组合,得到至少一个压缩单元组,所述压缩单元组包括一个第一类压缩单元以及一个第二类压缩单元;
解压模块,用于按照各个压缩单元组在所述压缩文本中的顺序,依次针对各个压缩单元组执行解压操作,所述解压操作包括:如果该压缩单元组不为首个压缩单元组,则读取与上一个压缩单元组对应的历史缓冲区中的字符串,对该压缩单元组进行解压,得到与该压缩单元组对应的字符串,并将所述与该压缩单元组对应的字符串,写入与该压缩单元组对应的历史缓冲区,作为与下一压缩单元组对应的历史缓冲区,以及将所述与该压缩单元组对应的字符串,写入输出缓冲区,所述历史缓冲区存储了与其对应的压缩单元组的滑动窗口中包含的字符串;
拼接模块,用于将所述输出缓冲区中的与各压缩单元组对应的字符串进行拼接,得到目标解压数据。
9.一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行权利要求1至7任一项所述的方法。
10.一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310533080.6A CN116707532A (zh) | 2023-05-09 | 2023-05-09 | 一种压缩文本的解压方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310533080.6A CN116707532A (zh) | 2023-05-09 | 2023-05-09 | 一种压缩文本的解压方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116707532A true CN116707532A (zh) | 2023-09-05 |
Family
ID=87840109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310533080.6A Pending CN116707532A (zh) | 2023-05-09 | 2023-05-09 | 一种压缩文本的解压方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116707532A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117097346A (zh) * | 2023-10-19 | 2023-11-21 | 深圳大普微电子股份有限公司 | 一种解压器及数据解压方法、系统、设备、计算机介质 |
-
2023
- 2023-05-09 CN CN202310533080.6A patent/CN116707532A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117097346A (zh) * | 2023-10-19 | 2023-11-21 | 深圳大普微电子股份有限公司 | 一种解压器及数据解压方法、系统、设备、计算机介质 |
CN117097346B (zh) * | 2023-10-19 | 2024-03-19 | 深圳大普微电子股份有限公司 | 一种解压器及数据解压方法、系统、设备、计算机介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106852185B (zh) | 基于字典的并行压缩编码器 | |
AU2016200550B2 (en) | Encoding program, decompression program, compression method, decompression method, compression device and decompression device | |
US5870036A (en) | Adaptive multiple dictionary data compression | |
CN112953550B (zh) | 数据压缩的方法、电子设备及存储介质 | |
US20200294629A1 (en) | Gene sequencing data compression method and decompression method, system and computer-readable medium | |
CN116707532A (zh) | 一种压缩文本的解压方法、装置、存储介质及电子设备 | |
US11675768B2 (en) | Compression/decompression using index correlating uncompressed/compressed content | |
CN111274454B (zh) | 时空数据的处理方法、装置、电子设备和存储介质 | |
CN110554878A (zh) | 数据转换方法、游戏数据的处理方法、装置和服务器 | |
CN108880559B (zh) | 数据压缩方法、数据解压缩方法、压缩设备及解压缩设备 | |
CN113312325A (zh) | 轨迹数据传输方法、装置、设备及存储介质 | |
US9479195B2 (en) | Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device | |
CN114466082B (zh) | 数据压缩、数据解压方法、系统及人工智能ai芯片 | |
US20150188565A1 (en) | Compression device, compression method, and recording medium | |
CN111190896A (zh) | 数据处理方法、装置、存储介质和计算机设备 | |
CN115765754A (zh) | 一种数据编码方法及一种编码数据比较方法 | |
US20230005474A1 (en) | Method and device for compressing finite-state transducers data | |
US10318483B2 (en) | Control method and control device | |
Ghuge | Map and Trie based Compression Algorithm for Data Transmission | |
CN111049836A (zh) | 数据处理方法、电子设备及计算机可读存储介质 | |
CN115001628B (zh) | 数据编码的方法及装置、数据解码的方法及装置和数据结构 | |
CN115934730B (zh) | 数据处理方法和装置、介质和计算机设备 | |
CN111697973B (zh) | 压缩方法及压缩系统 | |
CN116126996A (zh) | 一种数据压缩方法、解压方法及装置 | |
Anand | SA128: A Smart Data Compression Technique for Columnar Databases Based on Characteristics of Data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |