CN113630123B - 一种数据压缩系统及方法 - Google Patents

一种数据压缩系统及方法 Download PDF

Info

Publication number
CN113630123B
CN113630123B CN202110742119.6A CN202110742119A CN113630123B CN 113630123 B CN113630123 B CN 113630123B CN 202110742119 A CN202110742119 A CN 202110742119A CN 113630123 B CN113630123 B CN 113630123B
Authority
CN
China
Prior art keywords
hash value
storage area
value
dictionary
determining
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.)
Active
Application number
CN202110742119.6A
Other languages
English (en)
Other versions
CN113630123A (zh
Inventor
刘振军
刘同强
王贤坤
周玉龙
张文明
刘凯
杨萌
李拓
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202110742119.6A priority Critical patent/CN113630123B/zh
Publication of CN113630123A publication Critical patent/CN113630123A/zh
Application granted granted Critical
Publication of CN113630123B publication Critical patent/CN113630123B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请实施例公开了一种数据压缩系统及方法,用于提高LZW压缩算法的压缩速率,该系统包括:字典存储器,用于存储第一数量的子字典,每个子字典包括第二数量的存储区域,每个存储区域对应有哈希值;并行计算模块,用于获取待压缩数据;获取待压缩数据对应的当前字符和前缀字符串,对当前字符与前缀字符串按位进行异或计算,得到第一哈希值;将第一哈希值加上偏移量,得到第二哈希值;并行从第一哈希值、第二哈希值对应的存储区域获取索引内容;编码状态机,用于确定当前字符、前缀字符串与索引内容的匹配情况;选择仲裁器,用于根据匹配情况确定待写入的存储区域以及写入待写入的存储区域的内容,或者,根据匹配情况确定输出的内容。

Description

一种数据压缩系统及方法
技术领域
本申请涉及数据处理领域,具体涉及一种数据压缩系统及方法。
背景技术
LZW压缩算法是通过建立字典用较短的编码来表示较长的字符串来实现压缩。LZW压缩算法作为字典压缩算法的典型代表,具有性能好、复杂度适中且易于硬件设计等特点。但是,现有技术LZW压缩算法的硬件实现存在压缩速率较低的技术问题。
发明内容
有鉴于此,本申请实施例提供一种数据压缩系统及方法,以解决现有技术中数据压缩速率较低的技术问题。
为解决上述问题,本申请实施例提供的技术方案如下:
一种数据压缩系统,所述系统包括:
字典存储器,用于存储第一数量的子字典,每个所述子字典包括第二数量的存储区域,每个所述存储区域对应有哈希值;
并行计算模块,用于获取待压缩数据,所述待压缩数据包括多个字符;获取所述待压缩数据对应的当前字符和前缀字符串,对所述当前字符与所述前缀字符串按位进行异或计算,得到第一哈希值;将所述第一哈希值加上偏移量,得到第二哈希值;并行从所述第一哈希值、所述第二哈希值对应的存储区域获取索引内容;
编码状态机,用于确定所述当前字符、所述前缀字符串与所述索引内容的匹配情况;
选择仲裁器,用于根据所述匹配情况确定待写入的存储区域以及写入所述待写入的存储区域的内容,或者,根据所述匹配情况确定输出的内容。
在一种可能的实现方式中,从所述第一哈希值对应的存储区域获取索引内容为第一索引内容,从所述第二哈希值对应的存储区域获取索引内容为第二索引内容,所述编码状态机具体用于:
读取所述第一索引内容中的第一编码值,如果所述第一编码值为预设值,确定所述第一哈希值对应的存储区域为未存储状态;
读取所述第一索引内容中的第一字典值,如果所述第一字典值与所述当前字符以及所述前缀字符串不匹配,确定所述第一哈希值对应的存储区域为冲突状态;如果所述第一字典值与所述当前字符以及所述前缀字符串匹配,确定所述第一哈希值对应的存储区域为匹配状态;
读取所述第二索引内容中的第二编码值,如果所述第二编码值为预设值,确定所述第二哈希值对应的存储区域为未存储状态;
读取所述第二索引内容中的第二字典值,如果所述第二字典值与所述当前字符以及所述前缀字符串不匹配,确定所述第二哈希值对应的存储区域为冲突状态;如果所述第二字典值与所述当前字符以及所述前缀字符串匹配,确定所述第二哈希值对应的存储区域为匹配状态。
在一种可能的实现方式中,所述选择仲裁器,具体用于:
如果存在未存储状态的存储区域,将所述当前字符、所述前缀字符串以及对应的编码值写入任一该存储区域;
如果存在匹配状态的存储区域,将该存储区域中的编码值确定为输出的内容。
在一种可能的实现方式中,所述并行计算模块还用于:
如果所述第一哈希值对应的存储区域以及所述第二哈希值对应的存储区域均为冲突状态;
将所述第二哈希值加上所述偏移量,重新得到第一哈希值;
将重新得到的第一哈希值加上所述偏移量,重新得到第二哈希值;
重新执行并行从所述第一哈希值、所述第二哈希值对应的存储区域获取索引内容。
在一种可能的实现方式中,所述字典存储器包括:编码值存储器以及字典值存储器;所述编码值存储器的一个存储区域与所述字典值存储器的一个存储区域对应于一个哈希值。
在一种可能的实现方式中,所述第一数量为16,所述第二数量为256。
一种数据压缩方法,存储第一数量的子字典,每个所述子字典包括第二数量的存储区域,每个所述存储区域对应有哈希值;所述方法包括:
获取待压缩数据,所述待压缩数据包括多个字符;
获取所述待压缩数据对应的当前字符和前缀字符串,对所述当前字符与所述前缀字符串按位进行异或计算,得到第一哈希值;
将所述第一哈希值加上偏移量,得到第二哈希值;
并行从所述第一哈希值、所述第二哈希值对应的存储区域获取索引内容;
确定所述当前字符、所述前缀字符串与所述索引内容的匹配情况;
根据所述匹配情况确定待写入的存储区域以及写入所述待写入的存储区域的内容,或者,根据所述匹配情况确定输出的内容。
在一种可能的实现方式中,从所述第一哈希值对应的存储区域获取索引内容为第一索引内容,从所述第二哈希值对应的存储区域获取索引内容为第二索引内容,所述确定所述当前字符、所述前缀字符串与所述索引内容的匹配情况,包括:
读取所述第一索引内容中的第一编码值,如果所述第一编码值为预设值,确定所述第一哈希值对应的存储区域为未存储状态;
读取所述第一索引内容中的第一字典值,如果所述第一字典值与所述当前字符以及所述前缀字符串不匹配,确定所述第一哈希值对应的存储区域为冲突状态;如果所述第一字典值与所述当前字符以及所述前缀字符串匹配,确定所述第一哈希值对应的存储区域为匹配状态;
读取所述第二索引内容中的第二编码值,如果所述第二编码值为预设值,确定所述第二哈希值对应的存储区域为未存储状态;
读取所述第二索引内容中的第二字典值,如果所述第二字典值与所述当前字符以及所述前缀字符串不匹配,确定所述第二哈希值对应的存储区域为冲突状态;如果所述第二字典值与所述当前字符以及所述前缀字符串匹配,确定所述第二哈希值对应的存储区域为匹配状态。
在一种可能的实现方式中,所述根据所述匹配情况确定待写入的存储区域以及写入所述待写入的存储区域的内容,或者,根据所述匹配情况确定输出的内容,包括:
如果存在未存储状态的存储区域,将所述当前字符、所述前缀字符串以及对应的编码值写入任一该存储区域;
如果存在匹配状态的存储区域,将该存储区域中的编码值确定为输出的内容。
在一种可能的实现方式中,所述方法还包括:
如果所述第一哈希值对应的存储区域以及所述第二哈希值对应的存储区域均为冲突状态;
将所述第二哈希值加上所述偏移量,重新得到第一哈希值;
将重新得到的第一哈希值加上所述偏移量,重新得到第二哈希值;
重新执行所述并行从所述第一哈希值、所述第二哈希值对应的存储区域获取索引内容以及后续步骤。
由此可见,本申请实施例具有如下有益效果:
本申请实施例将LZW字典划分为第一数量的子字典,每个子字典包括第二数量的存储区域,即每个子字典的深度为第二数量,负责存储第二数量个索引内容,每个存储区域与相应的哈希值一一对应。在由当前字符和前缀字符串得到第一哈希值后,可以通过偏移量再次计算出第二哈希值,这样可以一次性计算出两个处理哈希冲突时的哈希值。由于第一哈希值与第二哈希值很可能处于不同子字典中的存储区域,从而可以并行从第一哈希值与第二哈希值对应的存储区域中获取索引内容,并根据当前字符、前缀字符串与索引内容的匹配情况,确定写入字典的内容或者输出的内容。由于可以并行比较两组索引内容,因此可以成倍提高哈希查找的匹配效率,大幅提高了待压缩数据的压缩速率。
附图说明
图1为LZW压缩算法的流程示意图;
图2为本申请实施例提供的一种数据压缩系统的结构示意图;
图3为本申请实施例提供的一种哈希查找的示意图;
图4为本申请实施例提供的另一种数据压缩系统的结构示意图;
图5为本申请实施例提供的一种数据压缩方法的流程图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。
为了便于理解和解释本申请实施例提供的技术方案,下面将先对本申请的背景技术进行说明。
LZW压缩算法是Welch在1984年基于LZ78压缩算法提出的一种新的压缩算法,并以Lempel-Ziv-Welch命名。LZW压缩算法根据原始文件中不同字符创建一个编码表(即字典),使用编码表中相应的字符编码来代替原文数据中的字符来缩减数据量,以达到数据压缩的目的。LZW压缩算法使用的这张编码表并不是预先创建好,而是根据原始文件中的数据动态创建,在发送压缩后的数据时,也不需要发送这张动态编码表,这张编码表已经隐含在压缩数据中,解压缩时可以自行恢复。
LZW压缩算法压缩流程如图1所示,步骤一:初始化字典,开始时词典包含所有可能的根,当前前缀字符串P和当前字符C均为空;步骤二:从待压缩数据读入新的字符C,与P合并形成字符串P+C;步骤三:判断P+C是否在字典中,如果是,令P=P+C,并返回步骤二;如果否,输出P对应的编码值,把P+C以及对应的编码值添加到字典,建立映射,并令P=C,现在的P仅包含一个字符C;步骤四:判断待压缩数据中是否还有字符,如果是,返回步骤二,如果否,输出P对应的编码值,完成整个压缩过程。
在对传统的LZW压缩算法进行研究后发现,现有LZW压缩算法硬件实现过程中存在处理哈希冲突导致的压缩速率较低的技术问题。
基于此,本申请实施例提供一种数据压缩系统及方法,提出基于并行子字典的LZW压缩算法硬件加速技术,使得在哈希冲突处理过程中可以并行地进行哈希冲突处理,从而有效提升LZW硬件压缩电路的压缩速率。
为了便于理解本申请,下面结合附图对本申请实施例提供的一种数据压缩系统及方法进行说明。
参见图2所示,该图为本申请实施例提供的一种数据压缩系统的结构示意图,该系统可以包括:
字典存储器201,用于存储第一数量的子字典,每个子字典包括第二数量的存储区域,每个存储区域对应有哈希值。
在本申请实施例中,将LZW压缩算法的字典,划分为第一数量的子字典,每个子字典包括第二数量的存储区域,即每个子字典的深度为第二数量,负责存储第二数量个索引内容,每个存储区域与相应的哈希值一一对应。例如,第一数量为16,第二数量为256。则划分为16个的子字典,每个子字典的深度为256,每个子字典负责存储256个索引内容。每个存储区域与哈希值一一对应,即每个索引内容与哈希值一一对应。本申请实施例对第一数量以及第二数量不进行限定,第一数量以及第二数量可以根据字典中编码值的数量以及字典存储器的容量设置,例如还可以设置第一数量为32、第二数量为128,第一数量为8、第二数量为256等等。
索引内容可以包括字典值以及编码值,字典值可以为LZW算法中前缀字符串P和当前字符C的值,编码值为字典值对应的编码。参见图3所示,一种哈希查找的示意图,其中,每一格代表一个存储区域,存储有索引内容,包括编码值Code和字典值P,C。
并行计算模块202,用于获取待压缩数据,待压缩数据包括多个字符;获取待压缩数据对应的当前字符和前缀字符串,对当前字符与前缀字符串按位进行异或计算,得到第一哈希值;将第一哈希值加上偏移量,得到第二哈希值;并行从第一哈希值、第二哈希值对应的存储区域获取索引内容。
在实际应用中,待压缩数据可以包括多个字符,待压缩数据例如可以为待压缩文本,待压缩文本由字符串组成。根据LZW压缩算法,可以得到当前字符C和前缀字符串P。基于当前字符和前缀字符串进行按位异或逻辑操作,得到第一哈希值,该第一哈希值可以用于查找对应的存储区域,并能从对应的存储区域获取索引内容。
得到第一哈希值后,可以根据偏移量得到第二哈希值,例如,偏移量为256。偏移量的设置最好使第一哈希值和第二哈希值对应的存储区域处于不同的子字典中。类似的,第二哈希值可以用于查找对应的存储区域,并能从对应的存储区域获取索引内容。
可以理解的是,为了提高获取索引内容,即进行哈希查找的速率,可以并行从第一哈希值、第二哈希值对应的存储区域获取索引内容。
编码状态机203,用于确定当前字符、前缀字符串与索引内容的匹配情况。
选择仲裁器204,用于根据匹配情况确定待写入的存储区域以及写入待写入的存储区域的内容,或者,根据匹配情况确定输出的内容。
根据当前字符、前缀字符串与索引内容的匹配情况,可以确定出写入待写入的存储区域的内容,或者,输出的内容,具体实现可以参见后续实施例。
则本申请实施例将LZW字典划分为第一数量的子字典,每个子字典包括第二数量的存储区域,即每个子字典的深度为第二数量,负责存储第二数量个索引内容,每个存储区域与相应的哈希值一一对应。在由当前字符和前缀字符串得到第一哈希值后,可以通过偏移量再次计算出第二哈希值,这样可以一次性计算出两个处理哈希冲突时的哈希值。由于第一哈希值与第二哈希值很可能处于不同子字典中的存储区域,从而可以并行从第一哈希值与第二哈希值对应的存储区域中获取索引内容,并根据当前字符、前缀字符串与索引内容的匹配情况,确定写入字典的内容或者输出的内容。由于可以并行比较两组索引内容,因此可以成倍提高哈希查找的匹配效率,大幅提高了待压缩数据的压缩速率。
为了便于后续理解,参见图3所示,结合具体示例对哈希查找,根据索引内容确定匹配情况,根据匹配情况确定对应处理的过程进行说明。
假设前缀字符串P为0x456,当前字符为0x77,待分配编码为0x567,根据前缀字符串和当前字符计算出的哈希值为0x1234。那么如图3所示,哈希表中0x1234对应存储区域中,P为0x123,C为0x65,说明不匹配,需要将哈希值加上偏移量后继续在哈希表中查找,直到找到匹配的存储区域或相应的存储区域为空为止。
若存储区域中的索引内容与前缀字符串和当前字符一致,则说明找到匹配的存储区域,那么将该存储区域的索引内容中的编码值,如0x532赋值给当前前缀字符串。
若发现相应存储区域为空,则需要将前缀字符串和当前字符组成的字符串加入字典,并为其分配相应的编码值,然后等待下一次哈希查找。
哈希映射势必会出现多对一的情况,若出现多次哈希冲突,则需要花费一定时间进行搜索和判断,为此,在本申请实施例中,可以一次计算出两个哈希值,并行进行哈希查找过程。
基于上述说明,在一种可能的实现方式中,从第一哈希值对应的存储区域获取索引内容为第一索引内容,从第二哈希值对应的存储区域获取索引内容为第二索引内容,则编码状态机具体可以用于:
读取第一索引内容中的第一编码值,如果第一编码值为预设值,确定第一哈希值对应的存储区域为未存储状态;
读取第一索引内容中的第一字典值,如果第一字典值与当前字符以及前缀字符串不匹配,确定第一哈希值对应的存储区域为冲突状态;如果第一字典值与当前字符以及前缀字符串匹配,确定第一哈希值对应的存储区域为匹配状态;
读取第二索引内容中的第二编码值,如果第二编码值为预设值,确定第二哈希值对应的存储区域为未存储状态;
读取第二索引内容中的第二字典值,如果第二字典值与当前字符以及前缀字符串不匹配,确定第二哈希值对应的存储区域为冲突状态;如果第二字典值与当前字符以及前缀字符串匹配,确定第二哈希值对应的存储区域为匹配状态。
在另一种可能的实现方式中,选择仲裁器,具体可以用于:
如果存在未存储状态的存储区域,将当前字符、前缀字符串以及对应的编码值写入任一该存储区域;
如果存在匹配状态的存储区域,将该存储区域中的编码值确定为输出的内容。
另外,在具体实现中,字典存储器可以包括:编码值存储器以及字典值存储器;编码值存储器的一个存储区域与字典值存储器的一个存储区域对应于一个哈希值,两者的存储内容共同构成字典中的一条索引内容。
在哈希值生成后,可以查找对应的存储区域。具体的,可以从对应的编码值存储器中读取编码值,从字典值存储器中读取字典值。如果从编码值存储器中读取的数据为1FFF(预设值,表示初始化值),则表明该地址位置无效,并且该字符也不在字典值存储器中。在这种情况下,将向编码状态机生成not_in_mem信号,即确定该哈希值对应的存储区域为未存储状态,将当前字符、前缀字符串写入字典值存储器指定地址处。第一次产生not_in_mem信号时,写入编码值存储器的编码值为256,随后每当产生not_in_mem信号时,写入编码值存储器的数据将加1。
当从编码值存储器中读取的数据不是1FFF,并且从字典值存储器读取的数据与当前字符、前缀字符串不匹配时,编码状态机产生一个collis(冲突)信号,确定该哈希值对应的存储区域为未存储状态。这表明该哈希值对应的地址已经为其他字典值计算过。如果第一哈希值与第二哈希值均在这种情况下,编码状态机将要求并行计算模块重新计算哈希值。并将新的哈希值提供给编码值存储器和字典值存储器。基于新的哈希值,再次生成匹配、not_in_mem或冲突信号。
即所述并行计算模块还用于:如果所述第一哈希值对应的存储区域以及所述第二哈希值对应的存储区域均为冲突状态;
将所述第二哈希值加上所述偏移量,重新得到第一哈希值;
将重新得到的第一哈希值加上所述偏移量,重新得到第二哈希值;
重新执行并行从所述第一哈希值、所述第二哈希值对应的存储区域获取索引内容。
参见图4所示,以子字典的数量为16为例,待压缩数据经过并行计算模块,通过在16个子字典中进行并行哈希处理,可以得到存储区域对应的匹配情况,如未存储状态、匹配状态或者冲突状态,
通过多路选择器和仲裁器对匹配情况进行读取,选择处理结果确定最终对应的存储区域,从确定的存储区域中读取内容输出或者向确定的存储区域内写入内容。
这样,本申请实施例提供一种基于哈希冲突并行化处理的LZW压缩算法硬件加速实现方法,具体的,设计一种分布式结构,将整个LZW字典划分成多个子字典,这些子字典共同构成整个LZW字典结构,并与相应的哈希值一一对应。考虑到哈希冲突时需要通过偏移量再次计算哈希值,本申请实施例可以一次性计算两次哈希冲突时经过偏移量计算的哈希值,由于将整个索引划分为多个子字典,降低了这两个哈希值出现在同一子字典区域的概率。
若这两个哈希值不在同一子字典区域,那么可以同时比较两组索引内容,成倍提高字符串的比较速率;考虑到最坏情况下,两个哈希值都处在同一子字典区域,比较速率则没有提升。由于采用偏移量计算方法,只有在哈希值处于边界情况时(比如哈希值为0),才会出现两个哈希值处在同一子字典区域的情况,所以综合考虑,使用这种分布式字典结构,可以成倍提升哈希查找的匹配效率,大幅提高数据压缩的速率。
参见图5所示,该图为本申请实施例提供的一种数据压缩方法的流程图,该方法包括步骤S501-S507:
S501:存储第一数量的子字典,每个子字典包括第二数量的存储区域,每个存储区域对应有哈希值。
S502:获取待压缩数据,待压缩数据包括多个字符。
S503:获取待压缩数据对应的当前字符和前缀字符串,对当前字符与前缀字符串按位进行异或计算,得到第一哈希值。
S504:将第一哈希值加上偏移量,得到第二哈希值。
S505:并行从第一哈希值、第二哈希值对应的存储区域获取索引内容。
S506:确定当前字符、前缀字符串与索引内容的匹配情况。
S507:根据匹配情况确定待写入的存储区域以及写入待写入的存储区域的内容,或者,根据匹配情况确定输出的内容。
在一种可能的实现方式中,从第一哈希值对应的存储区域获取索引内容为第一索引内容,从第二哈希值对应的存储区域获取索引内容为第二索引内容,确定当前字符、前缀字符串与索引内容的匹配情况具体可以包括:
读取第一索引内容中的第一编码值,如果第一编码值为预设值,确定第一哈希值对应的存储区域为未存储状态;
读取第一索引内容中的第一字典值,如果第一字典值与当前字符以及前缀字符串不匹配,确定第一哈希值对应的存储区域为冲突状态;如果第一字典值与当前字符以及前缀字符串匹配,确定第一哈希值对应的存储区域为匹配状态;
读取第二索引内容中的第二编码值,如果第二编码值为预设值,确定第二哈希值对应的存储区域为未存储状态;
读取第二索引内容中的第二字典值,如果第二字典值与当前字符以及前缀字符串不匹配,确定第二哈希值对应的存储区域为冲突状态;如果第二字典值与当前字符以及前缀字符串匹配,确定第二哈希值对应的存储区域为匹配状态。
在一种可能的实现方式中,根据匹配情况确定待写入的存储区域以及写入待写入的存储区域的内容,或者,根据匹配情况确定输出的内容的具体可以包括:
如果存在未存储状态的存储区域,将当前字符、前缀字符串以及对应的编码值写入任一该存储区域;
如果存在匹配状态的存储区域,将该存储区域中的编码值确定为输出的内容。
在一种可能的实现方式中,该方法还可以包括:
如果第一哈希值对应的存储区域以及第二哈希值对应的存储区域均为冲突状态;
将第二哈希值加上偏移量,重新得到第一哈希值;
将重新得到的第一哈希值加上偏移量,重新得到第二哈希值;
重新执行并行从第一哈希值、第二哈希值对应的存储区域获取索引内容以及后续步骤。
这样,本申请实施例将LZW字典划分为第一数量的子字典,每个子字典包括第二数量的存储区域,即每个子字典的深度为第二数量,负责存储第二数量个索引内容,每个存储区域与相应的哈希值一一对应。在由当前字符和前缀字符串得到第一哈希值后,可以通过偏移量再次计算出第二哈希值,这样可以一次性计算出两个处理哈希冲突时的哈希值。由于第一哈希值与第二哈希值很可能处于不同子字典中的存储区域,从而可以并行从第一哈希值与第二哈希值对应的存储区域中获取索引内容,并根据当前字符、前缀字符串与索引内容的匹配情况,确定写入字典的内容或者输出的内容。由于可以并行比较两组索引内容,因此可以成倍提高哈希查找的匹配效率,大幅提高了待压缩数据的压缩速率。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的方法而言,由于其与实施例公开的系统相对应,所以描述的比较简单,相关之处参见系统部分说明即可。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种数据压缩系统,其特征在于,所述系统包括:
字典存储器,用于存储第一数量的子字典,每个所述子字典包括第二数量的存储区域,每个所述存储区域对应有哈希值;
并行计算模块,获取待压缩数据,所述待压缩数据包括多个字符;获取所述待压缩数据对应的当前字符和前缀字符串,对所述当前字符与所述前缀字符串按位进行异或计算,得到第一哈希值;将所述第一哈希值加上偏移量,得到第二哈希值;并行从所述第一哈希值、所述第二哈希值对应的存储区域获取索引内容;
编码状态机,用于确定所述当前字符、所述前缀字符串与所述索引内容的匹配情况;
选择仲裁器,用于根据所述匹配情况确定待写入的存储区域以及写入所述待写入的存储区域的内容,或者,根据所述匹配情况确定输出的内容。
2.根据权利要求1所述的系统,其特征在于,从所述第一哈希值对应的存储区域获取索引内容为第一索引内容,从所述第二哈希值对应的存储区域获取索引内容为第二索引内容,所述编码状态机具体用于:
读取所述第一索引内容中的第一编码值,如果所述第一编码值为预设值,确定所述第一哈希值对应的存储区域为未存储状态;
读取所述第一索引内容中的第一字典值,如果所述第一字典值与所述当前字符以及所述前缀字符串不匹配,确定所述第一哈希值对应的存储区域为冲突状态;如果所述第一字典值与所述当前字符以及所述前缀字符串匹配,确定所述第一哈希值对应的存储区域为匹配状态;
读取所述第二索引内容中的第二编码值,如果所述第二编码值为预设值,确定所述第二哈希值对应的存储区域为未存储状态;
读取所述第二索引内容中的第二字典值,如果所述第二字典值与所述当前字符以及所述前缀字符串不匹配,确定所述第二哈希值对应的存储区域为冲突状态;如果所述第二字典值与所述当前字符以及所述前缀字符串匹配,确定所述第二哈希值对应的存储区域为匹配状态。
3.根据权利要求2所述的系统,其特征在于,所述选择仲裁器,具体用于:
如果存在未存储状态的存储区域,将所述当前字符、所述前缀字符串以及对应的编码值写入任一该存储区域;
如果存在匹配状态的存储区域,将该存储区域中的编码值确定为输出的内容。
4.根据权利要求2所述的系统,其特征在于,所述并行计算模块还用于:
如果所述第一哈希值对应的存储区域以及所述第二哈希值对应的存储区域均为冲突状态;
将所述第二哈希值加上所述偏移量,重新得到第一哈希值;
将重新得到的第一哈希值加上所述偏移量,重新得到第二哈希值;
重新执行并行从重新得到的第一哈希值、重新得到的第二哈希值对应的存储区域获取索引内容。
5.根据权利要求1-4任一项所述的系统,其特征在于,所述字典存储器包括:编码值存储器以及字典值存储器;所述编码值存储器的一个存储区域与所述字典值存储器的一个存储区域对应于一个哈希值。
6.根据权利要求1-4任一项所述的系统,其特征在于,所述第一数量为16,所述第二数量为256。
7.一种数据压缩方法,其特征在于,存储第一数量的子字典,每个所述子字典包括第二数量的存储区域,每个所述存储区域对应有哈希值;所述方法包括:
获取待压缩数据,所述待压缩数据包括多个字符;
获取所述待压缩数据对应的当前字符和前缀字符串,对所述当前字符与所述前缀字符串按位进行异或计算,得到第一哈希值;
将所述第一哈希值加上偏移量,得到第二哈希值;
并行从所述第一哈希值、所述第二哈希值对应的存储区域获取索引内容;
确定所述当前字符、所述前缀字符串与所述索引内容的匹配情况;
根据所述匹配情况确定待写入的存储区域以及写入所述待写入的存储区域的内容,或者,根据所述匹配情况确定输出的内容。
8.根据权利要求7所述的方法,其特征在于,从所述第一哈希值对应的存储区域获取索引内容为第一索引内容,从所述第二哈希值对应的存储区域获取索引内容为第二索引内容,所述确定所述当前字符、所述前缀字符串与所述索引内容的匹配情况,包括:
读取所述第一索引内容中的第一编码值,如果所述第一编码值为预设值,确定所述第一哈希值对应的存储区域为未存储状态;
读取所述第一索引内容中的第一字典值,如果所述第一字典值与所述当前字符以及所述前缀字符串不匹配,确定所述第一哈希值对应的存储区域为冲突状态;如果所述第一字典值与所述当前字符以及所述前缀字符串匹配,确定所述第一哈希值对应的存储区域为匹配状态;
读取所述第二索引内容中的第二编码值,如果所述第二编码值为预设值,确定所述第二哈希值对应的存储区域为未存储状态;
读取所述第二索引内容中的第二字典值,如果所述第二字典值与所述当前字符以及所述前缀字符串不匹配,确定所述第二哈希值对应的存储区域为冲突状态;如果所述第二字典值与所述当前字符以及所述前缀字符串匹配,确定所述第二哈希值对应的存储区域为匹配状态。
9.根据权利要求8所述的方法,其特征在于,所述根据所述匹配情况确定待写入的存储区域以及写入所述待写入的存储区域的内容,或者,根据所述匹配情况确定输出的内容,包括:
如果存在未存储状态的存储区域,将所述当前字符、所述前缀字符串以及对应的编码值写入任一该存储区域;
如果存在匹配状态的存储区域,将该存储区域中的编码值确定为输出的内容。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
如果所述第一哈希值对应的存储区域以及所述第二哈希值对应的存储区域均为冲突状态;
将所述第二哈希值加上所述偏移量,重新得到第一哈希值;
将重新得到的第一哈希值加上所述偏移量,重新得到第二哈希值;
重新执行并行从重新得到的第一哈希值、重新得到的第二哈希值对应的存储区域获取索引内容以及后续步骤。
CN202110742119.6A 2021-06-30 2021-06-30 一种数据压缩系统及方法 Active CN113630123B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110742119.6A CN113630123B (zh) 2021-06-30 2021-06-30 一种数据压缩系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110742119.6A CN113630123B (zh) 2021-06-30 2021-06-30 一种数据压缩系统及方法

Publications (2)

Publication Number Publication Date
CN113630123A CN113630123A (zh) 2021-11-09
CN113630123B true CN113630123B (zh) 2023-08-18

Family

ID=78378716

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110742119.6A Active CN113630123B (zh) 2021-06-30 2021-06-30 一种数据压缩系统及方法

Country Status (1)

Country Link
CN (1) CN113630123B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117439616B (zh) * 2023-12-21 2024-03-08 大连凌一科技发展有限公司 基于Linux系统的数据沙盒实现方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101572552A (zh) * 2009-06-11 2009-11-04 哈尔滨工业大学 基于内容可寻址存储器的高速无损数据压缩系统
CN103095305A (zh) * 2013-01-06 2013-05-08 中国科学院计算技术研究所 一种硬件lz77的压缩实现系统及方法
CN103326730A (zh) * 2013-06-06 2013-09-25 清华大学 数据并行压缩方法
CN108494408A (zh) * 2018-03-14 2018-09-04 电子科技大学 基于哈希字典的随钻密度测井仪井下高速实时压缩方法
CN112100455A (zh) * 2020-08-18 2020-12-18 北京理工大学 基于字符串并行搜索的lzw字典搜索方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8131688B2 (en) * 2009-08-26 2012-03-06 Lsi Corporation Storage system data compression enhancement
JP6319740B2 (ja) * 2014-03-25 2018-05-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation データ圧縮を高速化する方法、並びに、データ圧縮を高速化するためのコンピュータ、及びそのコンピュータ・プログラム
US9813079B2 (en) * 2016-02-29 2017-11-07 International Business Machines Corporation High-throughput compression of data
CN109802685B (zh) * 2019-01-30 2022-12-27 上海兆芯集成电路有限公司 加速压缩方法以及加速压缩装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101572552A (zh) * 2009-06-11 2009-11-04 哈尔滨工业大学 基于内容可寻址存储器的高速无损数据压缩系统
CN103095305A (zh) * 2013-01-06 2013-05-08 中国科学院计算技术研究所 一种硬件lz77的压缩实现系统及方法
CN103326730A (zh) * 2013-06-06 2013-09-25 清华大学 数据并行压缩方法
CN108494408A (zh) * 2018-03-14 2018-09-04 电子科技大学 基于哈希字典的随钻密度测井仪井下高速实时压缩方法
CN112100455A (zh) * 2020-08-18 2020-12-18 北京理工大学 基于字符串并行搜索的lzw字典搜索方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Efficient VLSI architecture for the parallel dictionary LZW data compression algorithm;Malek Safieh;《IET Circuits, Devices & Systems》;参见第1-8页 *

Also Published As

Publication number Publication date
CN113630123A (zh) 2021-11-09

Similar Documents

Publication Publication Date Title
JP4717130B2 (ja) オフセット表を使用する完全ハッシュの生成
US6563956B1 (en) Method and apparatus for compressing data string
CN106326475B (zh) 一种高效的静态哈希表实现方法及系统
EP1578020B1 (en) Data compressing method, program and apparatus
JP2502469B2 (ja) 文字デ―タを圧縮し圧縮済みデ―タを展開するための静的辞書構造を提供する方法および手段
US5113516A (en) Data repacker having controlled feedback shifters and registers for changing data format
CN103326732A (zh) 压缩数据的方法、解压数据的方法、编码器和解码器
US20190052284A1 (en) Data compression apparatus, data decompression apparatus, data compression program, data decompression program, data compression method, and data decompression method
CN113630123B (zh) 一种数据压缩系统及方法
CN116594572B (zh) 浮点数流式数据压缩方法、装置、计算机设备及介质
US5815096A (en) Method for compressing sequential data into compression symbols using double-indirect indexing into a dictionary data structure
US7185041B1 (en) Circuit and method for high-speed execution of modulo division
CN107832341B (zh) Agnss用户去重统计方法
US6313767B1 (en) Decoding apparatus and method
US7256715B1 (en) Data compression using dummy codes
US11309909B2 (en) Compression device, decompression device, and method
US20100225508A1 (en) Variable-Length Code Decoding Device and Variable-Length Code Decoding Method
TW201933105A (zh) 記憶體存取方法
US12001339B2 (en) Dictionary compression device and memory system
CN108647289B (zh) 基于布谷哈希和布隆过滤器的Hash建表方法
US20090083267A1 (en) Method and System for Compressing Data
CN107341113B (zh) Cache的压缩方法和装置
CN113612869A (zh) 一种短网址生成方法、终端及存储介质
CN113961568A (zh) 基于区块链的链式数据结构的区块快速查找方法
EP0411691B1 (en) Memory architecture and circuit for hashing

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
GR01 Patent grant
GR01 Patent grant