CN117113106B - 一种数据压缩方法、装置及电子设备和存储介质 - Google Patents

一种数据压缩方法、装置及电子设备和存储介质 Download PDF

Info

Publication number
CN117113106B
CN117113106B CN202311358412.8A CN202311358412A CN117113106B CN 117113106 B CN117113106 B CN 117113106B CN 202311358412 A CN202311358412 A CN 202311358412A CN 117113106 B CN117113106 B CN 117113106B
Authority
CN
China
Prior art keywords
data
processed
matching
content
data content
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
CN202311358412.8A
Other languages
English (en)
Other versions
CN117113106A (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.)
Shenzhen Dapu Microelectronics Co Ltd
Original Assignee
Shenzhen Dapu Microelectronics 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 Shenzhen Dapu Microelectronics Co Ltd filed Critical Shenzhen Dapu Microelectronics Co Ltd
Priority to CN202311358412.8A priority Critical patent/CN117113106B/zh
Publication of CN117113106A publication Critical patent/CN117113106A/zh
Application granted granted Critical
Publication of CN117113106B publication Critical patent/CN117113106B/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/3086Compression; 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据压缩方法、装置及一种电子设备和计算机可读存储介质,该方法包括:对当前待处理数据对应的多个待处理数据单元进行哈希匹配得到哈希匹配结果;根据哈希匹配结果从待压缩数据中读取第一数据内容,从待压缩数据中读取第二数据内容,对第一数据内容和第二数据内容进行数据匹配得到数据匹配结果;计算待处理数据单元的第一个字节在对应的待处理数据中的位置与匹配长度的和作为目标位置值;根据目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对第一数据内容和第二数据内容进行数据匹配得到数据匹配结果的步骤,直至所有待处理数据均处理完成。本申请提高了数据压缩效率。

Description

一种数据压缩方法、装置及电子设备和存储介质
技术领域
本申请涉及计算机技术领域,更具体地说,涉及一种数据压缩方法、装置及一种电子设备和一种计算机可读存储介质。
背景技术
数据压缩可以潜在地减小数据的存储空间,提高存储设备的逻辑容量,从而降低数据的存储和传输成本,因此具有很高的技术吸引力。数据压缩是一项计算密集的操作,需要消耗较多的主机CPU(中央处理器,central processing unit)计算资源。在固态硬盘(Solid State Disk,SSD)内部实现数据压缩的硬件电路,以可计算存储的架构来支持数据压缩是近年来的一个技术趋势。
LZ77算法通过将重复出现的数据片段替换为对未压缩数据流中较早存在的数据片段的单个副本的引用来实现压缩。一个匹配的片段由一对称为“长度-距离”的数字来表示。在相关技术中,哈希匹配只能获得匹配的位置信息,而真正的匹配是通过数据内容比较来实现的,而这两部分是分离的,当寻找的哈希匹配是个假匹配时,需要重新返回该位置去进行哈希匹配,从而导致整个压缩流程是不连续的,效率较低,在硬件上反应出来就是带宽波动性很大,难以满足吞吐率的要求。
因此,如何提高LZ77算法的压缩效率是本领域技术人员需要解决的技术问题。
发明内容
本申请的目的在于提供一种数据压缩方法、装置及一种电子设备和一种计算机可读存储介质,提高了LZ77算法的压缩效率。
为实现上述目的,本申请提供了一种数据压缩方法,包括:
获取待压缩数据,在所述待压缩数据中确定待处理数据,并将所述待处理数据扩展为多个待处理数据单元;
将第一个待处理数据作为当前待处理数据,对所述当前待处理数据对应的多个所述待处理数据单元进行哈希匹配得到哈希匹配结果;其中,所述哈希匹配结果包括所述待处理数据单元的哈希值对应的候选匹配位置;
根据所述哈希匹配结果从所述待压缩数据中读取第一数据内容,从所述待压缩数据中读取第二数据内容,对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果;其中,所述第一数据内容为从所述待压缩数据中的所述候选匹配位置开始读取的数据内容,所述第二数据内容为从所述待压缩数据中的所述待处理数据单元开始读取的数据内容,所述数据匹配结果包括匹配位置和匹配长度,所述匹配位置为所述第一数据内容中包含匹配成功的目标数据内容的第一个字节在所述待压缩数据的位置,所述匹配长度为所述目标数据内容的长度;
计算所述待处理数据单元的第一个字节在对应的待处理数据中的位置与所述匹配长度的和作为目标位置值;
根据所述目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤,直至所有所述待处理数据均处理完成;
将所述第二数据内容中的目标数据内容替换为所述数据匹配结果中的匹配位置和匹配长度。
其中,在所述待压缩数据中确定待处理数据,包括:
依次在所述待压缩数据中提取第一预设数量个字节作为待处理数据。
其中,将所述待处理数据扩展为多个待处理数据单元,包括:
分别以所述待处理数据中的每个字节作为首字节在所述待压缩数据中提取第二预设数量个字节作为待处理数据单元。
其中,对所述当前待处理数据对应的多个所述待处理数据单元进行哈希匹配得到哈希匹配结果,包括:
计算所述当前待处理数据对应的多个所述待处理数据单元的目标哈希值,分别以多个所述目标哈希值为索引在哈希表中确定对应的目标哈希条目,基于多个所述目标哈希条目中的候选匹配位置确定多个所述待处理数据单元的哈希匹配结果;其中,所述哈希表用于存储数据内容的哈希值与在所述待压缩数据中的位置之间的对应关系。
其中,所述根据所述目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤,包括:
若所述目标位置值小于第一预设值,则将当前待处理数据后的第一个待处理数据重新确定为当前待处理数据,根据所述当前待处理数据对应的多个所述待处理数据单元的哈希匹配结果从所述待压缩数据中读取第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤;其中,所述第一预设值为第一预设数量的二倍,所述第一预设数量为所述待处理数据包含的字节数量。
其中,所述根据所述目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤,包括:
若所述目标位置值大于或等于第一预设值且小于第二预设值,则将当前待处理数据后的第二个待处理单元重新确定为当前待处理数据,对所述第一数据内容向后移位所述第一预设值个字节以重新确定所述第一数据内容,根据所述当前待处理数据对应的多个所述待处理数据单元的哈希匹配结果从所述待压缩数据中重新读取所述第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤;其中,所述第一预设值为第一预设数量的二倍,所述第一预设数量为所述待处理数据包含的字节数量,所述第二预设值为所述第一预设数量的n倍,n大于2。
其中,所述根据所述目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤,包括:
若所述目标位置值大于或等于所述第二预设值,则将当前待处理数据后的所述第二预设值个字节后的待处理数据重新确定为当前待处理数据,根据所述当前待处理数据对应的多个所述待处理数据单元的哈希匹配结果从所述待压缩数据中读取第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤;其中,所述第二预设值为第一预设数量的n倍,n大于2,所述第一预设数量为所述待处理数据包含的字节数量,对所述第一数据内容和所述第二数据内容进行数据匹配得到新的数据匹配结果之后,合并上一个数据匹配结果和所述新的数据匹配结果,合并后的数据匹配结果中的匹配位置为所述上一个数据匹配结果中包含的匹配位置,所述合并后的数据匹配结果中的匹配长度为所述上一个数据匹配结果中包含的匹配长度与所述新的数据匹配结果中包含的匹配长度之和。
为实现上述目的,本申请提供了一种数据压缩装置,包括:
扩展模块,用于获取待压缩数据,在所述待压缩数据中确定待处理数据,并将所述待处理数据扩展为多个待处理数据单元;
哈希匹配模块,用于将第一个待处理数据作为当前待处理数据,对所述当前待处理数据对应的多个所述待处理数据单元进行哈希匹配得到哈希匹配结果;其中,所述哈希匹配结果包括所述待处理数据单元的哈希值对应的候选匹配位置;
数据匹配模块,用于根据所述哈希匹配结果从所述待压缩数据中读取第一数据内容,从所述待压缩数据中读取第二数据内容,对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果;其中,所述第一数据内容为从所述待压缩数据中的所述候选匹配位置开始读取的数据内容,所述第二数据内容为从所述待压缩数据中的所述待处理数据单元开始读取的数据内容,所述数据匹配结果包括匹配位置和匹配长度,所述匹配位置为所述第一数据内容中包含匹配成功的目标数据内容的第一个字节在所述待压缩数据的位置,所述匹配长度为所述目标数据内容的长度;
计算模块,用于计算所述待处理数据单元的第一个字节在对应的待处理数据中的位置与所述匹配长度的和作为目标位置值;
确定模块,用于根据所述目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤,直至所有所述待处理数据均处理完成;
替换模块,用于将所述第二数据内容中的目标数据内容替换为所述数据匹配结果中的匹配位置和匹配长度。
为实现上述目的,本申请提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述数据压缩方法的步骤。
为实现上述目的,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述数据压缩方法的步骤。
通过以上方案可知,本申请提供的一种数据压缩方法,包括:获取待压缩数据,在所述待压缩数据中确定待处理数据,并将所述待处理数据扩展为多个待处理数据单元;将第一个待处理数据作为当前待处理数据,对所述当前待处理数据对应的多个所述待处理数据单元进行哈希匹配得到哈希匹配结果;其中,所述哈希匹配结果包括所述待处理数据单元的哈希值对应的候选匹配位置;根据所述哈希匹配结果从所述待压缩数据中读取第一数据内容,从所述待压缩数据中读取第二数据内容,对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果;其中,所述第一数据内容为从所述待压缩数据中的所述候选匹配位置开始读取的数据内容,所述第二数据内容为从所述待压缩数据中的所述待处理数据单元开始读取的数据内容,所述数据匹配结果包括匹配位置和匹配长度,所述匹配位置为所述第一数据内容中包含匹配成功的目标数据内容的第一个字节在所述待压缩数据的位置,所述匹配长度为所述目标数据内容的长度;计算所述待处理数据单元的第一个字节在对应的待处理数据中的位置与所述匹配长度的和作为目标位置值;根据所述目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤,直至所有所述待处理数据均处理完成;将所述第二数据内容中的目标数据内容替换为所述数据匹配结果中的匹配位置和匹配长度。
本申请提供的数据压缩方法,对当前待处理数据对应的待处理数据单元进行哈希匹配得到哈希匹配结果,根据哈希匹配结果从待压缩数据中读取第一数据内容和第二数据内容进行数据匹配,哈希匹配和数据匹配可以并行处理,提高了数据压缩效率。在数据匹配之后,计算待处理数据单元的第一个字节在对应的待处理数据中的位置与匹配长度的和作为目标位置值,也即匹配结束字节在待处理数据中的位置,根据匹配结束字节在待处理数据中的位置重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,提高了数据压缩效率。本申请还公开了一种数据压缩装置及一种电子设备和一种计算机可读存储介质,同样能实现上述技术效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1为相关技术中的LZ77算法中重复数据识别技术的算法流程图;
图2为相关技术中的LZ77算法整体架构图;
图3为相关技术中的LZ77算法中一次完整的匹配流程图;
图4为根据一示例性实施例示出的一种数据压缩方法的流程图;
图5为根据一示例性实施例示出的另一种数据压缩方法的流程图;
图6为本实施例提供的LZ77算法整体架构图;
图7为本实施例提供的一种第二数据内容的匹配结果示意图;
图8为本实施例提供的一种第二数据内容的匹配结果示意图;
图9为本实施例提供的一种第三数据内容的匹配结果示意图;
图10为根据一示例性实施例示出的一种数据压缩装置的结构图;
图11为根据一示例性实施例示出的一种电子设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。另外,在本申请实施例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
在相关技术中,LZ77算法中重复数据识别技术的算法流程如图1所示,如果最后字节距离当前数据单元的起始位置大于4字节,那么当前数据流中至少有一个4字节的数据单元,可以继续进行匹配;否则,匹配结束。匹配的逻辑如下:
步骤1:位置指针初始化为0;
步骤2:判断当前字节距离结束是否大于等于4;若是,则进入步骤3;若否,则结束流程;
步骤3:计算当前4字节的哈希值,以哈希值为索引查询hash表,判断hash表是否命中;若是,则进入步骤4;若否,则进入步骤5;
步骤4:数据内容比较,获取匹配位置和匹配长度,位置指针递增匹配长度个字节,返回步骤2。
步骤5:更新哈希表,位置指针递增1个字节,返回步骤2。
在相关技术中,LZ77算法整体架构图如图2所示,包括数据扩展模块(data_extend)、哈希计算模块(hash_cal)、哈希匹配模块(hash_match)、数据存储模块(data_mem)、数据匹配模块(his_match),data_extend用于对数据进行并行拓展,以提升处理的并行度,hash_cal用于计算hash值,hash_match用于进行哈希匹配,以获得潜在的匹配,data_mem用于存储数据,his_match用于进行数据匹配。
一次完整的匹配流程示意图如图3所示,输入数据din通过哈希计算模块(hash_cal)计算哈希值,哈希匹配模块(hash_match)根据哈希值查表获得匹配位置,根据匹配位置访问候选数据(data_mem)中获得匹配数据(his_data),匹配数据和当前输入数据滑动比较,判断是否是一次成功的匹配,如果是则输出匹配结果,否则返回进行下一笔输入的计算。由于hash_match和his_match在相关技术中是存在先后顺序的,在算法迭代过程中,如果出现假匹配会导致输入出现反压,从而导致带宽下降。
因此,在本申请中,对当前待处理数据对应的待处理数据单元进行哈希匹配得到哈希匹配结果,根据哈希匹配结果从待压缩数据中读取第一数据内容和第二数据内容进行数据匹配,哈希匹配和数据匹配可以并行处理,提高了数据压缩效率。在数据匹配之后,计算待处理数据单元的第一个字节在对应的待处理数据中的位置与匹配长度的和作为目标位置值,也即匹配结束字节在待处理数据中的位置,根据匹配结束字节在待处理数据中的位置重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,提高了数据压缩效率。
本申请实施例公开了一种数据压缩方法,提高了LZ77算法的压缩效率。
参见图4,根据一示例性实施例示出的一种数据压缩方法的流程图,如图4所示,包括:
S101:获取待压缩数据,在所述待压缩数据中确定待处理数据,并将所述待处理数据扩展为多个待处理数据单元;
本实施例的目的在于利用改进的LZ77算法对待压缩数据进行压缩。在具体实施中,获取待压缩数据,并在其中确定待处理数据。作为一种可行的实施方式,在所述待压缩数据中确定待处理数据,包括:依次在所述待压缩数据中提取第一预设数量个字节作为待处理数据。例如,待处理数据的起始位置为i,第一预设数量为4时,待处理数据为[i,i+1,i+2,i+3]。又如,第一预设数量为8时,待处理数据为[i,i+1,i+2,i+3,i+4,i+5,i+6,i+7]。
进一步的,将待处理数据扩展为多个待处理数据单元,对于待压缩数据中的多个待处理数据,可以并行扩展为多个待处理数据单元。作为一种可行的实施方式,将所述待处理数据扩展为多个待处理数据单元,包括:分别以所述待处理数据中的每个字节作为首字节在所述待压缩数据中提取第二预设数量个字节作为待处理数据单元。在具体实施中,以待处理数据中的每个字节作为首字节在待压缩数据中提取包含第二预设数量个字节的待处理数据单元。例如,如果待处理数据为[i,i+1,i+2,i+3],第二预设数量为4,则待处理数据单元分别为[i,i+1,i+2,i+3]、[i+1,i+2,i+3,i+4]、[i+2,i+3,i+4,i+5]、[i+3,i+4,i+5,i+6]。又如,如果待处理数据为[i,i+1,i+2,i+3,i+4,i+5,i+6,i+7],第二预设数量为4,则待处理数据单元分别为[i,i+1,i+2,i+3]、[i+1,i+2,i+3,i+4]、[i+2,i+3,i+4,i+5]、[i+3,i+4,i+5,i+6]、[i+4,i+5,i+6,i+7]、[i+5,i+6,i+7,i+8]、[i+6,i+7,i+8,i+9]、[i+7,i+8,i+9,i+10]。
S102:将第一个待处理数据作为当前待处理数据,对所述当前待处理数据对应的多个所述待处理数据单元进行哈希匹配得到哈希匹配结果;其中,所述哈希匹配结果包括所述待处理数据单元的哈希值对应的候选匹配位置;
在本步骤中,将第一个待处理数据作为当前待处理数据,对当前待处理数据对应的多个待处理数据单元进行哈希匹配,以确定每个待处理数据单元对应的候选匹配位置。
作为一种可行的实施方式,对所述当前待处理数据对应的多个所述待处理数据单元进行哈希匹配得到哈希匹配结果,包括:计算所述当前待处理数据对应的多个所述待处理数据单元的目标哈希值,分别以多个所述目标哈希值为索引在哈希表中确定对应的目标哈希条目,基于多个所述目标哈希条目中的候选匹配位置确定多个所述待处理数据单元的哈希匹配结果;其中,所述哈希表用于存储数据内容的哈希值与在所述待压缩数据中的位置之间的对应关系。
在具体实施中,利用哈希表存储数据内容的哈希值与其在待压缩数据中的位置之间的对应关系,哈希表包括多个哈希条目,每个哈希条目的索引为数据内容的哈希值,每个哈希条目存储的内容为该数据内容在待压缩数据的位置,具体而言,为该数据内容的首字节在待压缩数据的位置。
将当前待处理数据扩展为多个待处理数据单元之后,利用多个哈希计算模块分别计算多个待处理数据单元的目标哈希值,利用多个哈希匹配模块分别以多个待处理数据单元的目标哈希值为索引在哈希表中确定对应的目标哈希条目,判断目标哈希条目中是否存在有效的候选匹配位置,若不存在,则匹配失败,基于待处理数据单元中首字节在待压缩数据中的位置更新哈希表中的目标哈希条目。若存在,则确定哈希匹配结果。
S103:根据所述哈希匹配结果从所述待压缩数据中读取第一数据内容,从所述待压缩数据中读取第二数据内容,对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果;其中,所述第一数据内容为从所述待压缩数据中的所述候选匹配位置开始读取的数据内容,所述第二数据内容为从所述待压缩数据中的所述待处理数据单元开始读取的数据内容,所述数据匹配结果包括匹配位置和匹配长度,所述匹配位置为所述第一数据内容中包含匹配成功的目标数据内容的第一个字节在所述待压缩数据的位置,所述匹配长度为所述目标数据内容的长度;
在具体实施中,从待压缩数据中的候选匹配位置开始读取第一数据内容,从待压缩数据中的待处理数据单元开始读取第二数据内容,具体而言,从待压缩数据中待处理数据单元的首字节开始读取第二数据内容,对第一数据内容和第二数据内容进行匹配,若第一数据内容和第二数据内容匹配成功,则确定匹配位置和匹配长度,得到数据匹配结果。进一步的,基于第二数据内容中包含匹配成功的目标数据内容的第一个字节在待压缩数据的位置,更新哈希表中目标数据内容所属的待处理数据单元的哈希值对应的哈希条目。
举例说明,待处理数据中首字节在待压缩数据中的位置为1000,待处理数据具体为ABCD,其对应的哈希值为8888,那么以8888为索引查找哈希表中第8888个条目,判断其中是否存储有效值,若否,则匹配失败,将1000存储至第8888个条目中。若是,则从第8888个条目读取该有效值为600,从待压缩数据中的位置600和1000处分别开始读取数据内容进行匹配。例如,从位置600处读取的数据内容为ABCDEF…,从位置600处读取的数据内容为ABCDEG…,那么匹配位置为600,匹配长度为5,将第8888个条目中的600替换为1000。
S104:计算所述待处理数据单元的第一个字节在对应的待处理数据中的位置与所述匹配长度的和作为目标位置值;
在本步骤中,计算待处理数据单元的第一个字节在对应的待处理数据中的位置与匹配长度的和作为目标位置值,该目标位置值可以理解为匹配结束字节在待处理数据中的位置。
S105:根据所述目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤,直至所有所述待处理数据均处理完成;
在本步骤中,根据目标位置值重新确定当前待处理数据,若目标位置值小于第一预设数量的二倍,则下一个待处理数据也可能存在其他的数据匹配,也即将当前待处理数据后的第一个待处理数据重新确定为当前待处理数据,根据下一个待处理数据对应的多个待处理数据单元的哈希匹配结果从待压缩数据中读取第一数据内容和第二数据内容。若目标位置值大于或等于第一预设数量的二倍,则下一个待处理数据已在当前待处理数据的匹配过程中处理完成,可以跳过下一个待处理数据,直接处理当前待处理数据后的第二个待处理数据,也即将当前待处理数据后的第二个待处理数据重新确定为当前待处理数据,重新根据当前待处理数据对应的多个待处理数据单元的哈希匹配结果从待压缩数据中读取第一数据内容和第二数据内容。
S106:将所述第二数据内容中的目标数据内容替换为所述数据匹配结果中的匹配位置和匹配长度。
在本步骤中,将待压缩数据中除第一个目标数据内容之外的后续的目标数据内容替换为数据匹配结果中的匹配位置和匹配长度,其中,第一个目标数据内容与后续的目标数据内容是相同的数据,将后面出现的相同的数据用前面第一次出现的相同数据的匹配位置和匹配长度来替换,也即将所述第二数据内容中的目标数据内容替换为所述数据匹配结果中的匹配位置和匹配长度,实现数据压缩。
本申请实施例提供的数据压缩方法,对当前待处理数据对应的待处理数据单元进行哈希匹配得到哈希匹配结果,根据哈希匹配结果从待压缩数据中读取第一数据内容和第二数据内容进行数据匹配,哈希匹配和数据匹配可以并行处理,提高了数据压缩效率。在数据匹配之后,计算待处理数据单元的第一个字节在对应的待处理数据中的位置与匹配长度的和作为目标位置值,也即匹配结束字节在待处理数据中的位置,根据匹配结束字节在待处理数据中的位置重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,提高了数据压缩效率。
本申请实施例公开了一种数据压缩方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。具体的:
参见图5,根据一示例性实施例示出的另一种数据压缩方法的流程图,如图5所示,包括:
S201:获取待压缩数据,在所述待压缩数据中确定待处理数据,并将所述待处理数据扩展为多个待处理数据单元;
S202:将第一个待处理数据作为当前待处理数据,对所述当前待处理数据对应的多个所述待处理数据单元进行哈希匹配得到哈希匹配结果;其中,所述哈希匹配结果包括所述待处理数据单元的哈希值对应的候选匹配位置;
S203:根据所述哈希匹配结果从所述待压缩数据中读取第一数据内容和第二数据内容;其中,所述第一数据内容为从所述待压缩数据中的所述候选匹配位置开始读取的数据内容,所述第二数据内容为从所述待压缩数据中的所述待处理数据单元开始读取的数据内容;
S204:对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果;其中,所述数据匹配结果包括匹配位置和匹配长度,所述匹配位置为所述第一数据内容中包含匹配成功的目标数据内容的第一个字节在所述待压缩数据的位置,所述匹配长度为所述目标数据内容的长度;
S205:将所述第二数据内容中的目标数据内容替换为所述数据匹配结果中的匹配位置和匹配长度;
S206:判断上一个计算得到的目标位置值是否大于或等于所述第二预设值;若是,则进入S207;若否,则进入S208;
S207:合并上一个数据匹配结果和所述新的数据匹配结果,并进入S207;其中,合并后的数据匹配结果中的匹配位置为所述上一个数据匹配结果中包含的匹配位置,所述合并后的数据匹配结果中的匹配长度为所述上一个数据匹配结果中包含的匹配长度与所述新的数据匹配结果中包含的匹配长度之和;
S208:计算所述待处理数据单元的第一个字节在对应的待处理数据中的位置与所述匹配长度的和作为目标位置值;
S209:若所述目标位置值小于第一预设值,则将除第一个所述目标数据内容之外的后续的目标数据内容替换为数据匹配结果中的匹配位置和匹配长度,将当前待处理数据后的第一个待处理数据重新确定为当前待处理数据,根据所述当前待处理数据对应的多个所述待处理数据单元的哈希匹配结果从所述待压缩数据中读取第一数据内容和第二数据内容,并重新进入S204;其中,所述第一预设值为第一预设数量的二倍,所述第一预设数量为所述待处理数据包含的字节数量;
在具体实施中,若目标位置值小于第一预设值,也即第一预设数量的二倍,则将待压缩数据中除第一个目标数据内容之外的后续的目标数据内容替换为数据匹配结果中的匹配位置和匹配长度。此时,下一个待处理数据也可能存在其他的数据匹配,也即将当前待处理数据后的第一个待处理数据重新确定为当前待处理数据,根据下一个待处理数据对应的多个待处理数据单元的哈希匹配结果从待压缩数据中读取第一数据内容和第二数据内容。
S210:若所述目标位置值大于或等于所述第一预设值且小于第二预设值,则将除第一个所述目标数据内容之外的后续的目标数据内容替换为数据匹配结果中的匹配位置和所述匹配长度,将当前待处理数据后的第二个待处理单元重新确定为当前待处理数据,对所述第一数据内容向后移位所述第一预设值个字节以重新确定所述第一数据内容,根据所述当前待处理数据对应的多个所述待处理数据单元的哈希匹配结果从所述待压缩数据中重新读取所述第二数据内容,并重新进入S204;其中,所述第二预设值为所述第一预设数量的n倍,n大于2;
在具体实施中,若目标位置值大于或等于第一预设值且小于第二预设值,第二预设值为第一预设数量的n倍,第二预设值大于第一预设值,则将待压缩数据中除第一个目标数据内容之外的后续的目标数据内容替换为数据匹配结果中的匹配位置和匹配长度。此时,下一个待处理数据已在当前待处理数据的匹配过程中处理完成,可以跳过下一个待处理数据,直接处理当前待处理数据后的第二个待处理数据,也即将当前待处理数据后的第二个待处理数据重新确定为当前待处理数据,对当前的第一数据内容向后移位第一预设值个字节得到下一个数据匹配的第一数据内容,根据当前待处理数据对应的多个待处理数据单元的哈希匹配结果从待压缩数据中重新读取第二数据内容。
S211:若所述目标位置值大于或等于所述第二预设值,则将当前待处理数据后的所述第二预设值个字节后的待处理数据重新确定为当前待处理数据,根据所述当前待处理数据对应的多个所述待处理数据单元的哈希匹配结果从所述待压缩数据中读取第一数据内容和第二数据内容,并重新进入S204。
在具体实施中,若目标位置值大于或等于第二预设值,则说明当前匹配未完成,需要继续匹配,将当前待处理数据后的第二预设值个字节后的待处理数据重新确定为当前待处理数据。例如,第一预设数量为4,第一预设值为8,第二预设值为16,则将当前待处理数据后的第4个待处理数据重新确定为当前待处理数据,根据当前待处理数据对应的多个待处理数据单元的哈希匹配结果从待压缩数据中重新读取第一数据内容和第二数据内容。在下一次数据匹配之后,对两次数据匹配结果进程合并,其中,合并后的数据匹配结果中的匹配位置为上一个数据匹配结果中包含的匹配位置,匹配长度为上一个数据匹配结果中包含的匹配长度与下一次数据匹配结果中包含的匹配长度之和。
由此可见,本实施例通过对数据匹配结果进行分类,同时利用数据的提前预取和判断可以实现哈希匹配和数据匹配完全并行的处理,而不会引入任何带宽上的波动。
下面介绍本申请提供的一种应用实施例,本实施例提供的LZ77算法整体架构图如图6所示,包括数据扩展模块(data_extend)、哈希匹配模块(hash_match)、数据匹配模块(his_match)。
LZ77算法的具体流程包括以下步骤:
步骤1:数据扩展模块(data_extend)在待压缩数据中提取待处理数据,将待处理数据扩展为4个待处理数据单元,也即并行度为4,输出第二数据内容Din_ext_i[127:0]、结尾标志Din_ext_eof_i、有效标志Din_ext_strb_i到寄存器register;
步骤2:哈希匹配模块(hash_match)进行哈希匹配,以获得哈希匹配结果,包括匹配标志match_i(用于描述是否发生匹配)以及相应的匹配位置match_pst_i,根据这些信息从数据存储模块(data memory)中获取该匹配位置对应的256bit的第一数据内容dout[255:0];
步骤3:数据匹配模块(his_match)比较dout[255:0]和din_ext_i[127:0]以及发生匹配时在din_ext_i中的idx信息,idx定义为din_ext_i中当前输入发生匹配的位置,由于处理的并行度为4,故而取值为0-3,可以判断出来是否真的发生匹配以及匹配的实际长度match_len和匹配的结束点match_end,match_end=match_len+idx,用于判断匹配结束的位置。根据match_end的大小把匹配分为三类,第一类one_match(match_end<8,短匹配),第二类multi_match(8<=match_end<16,中匹配),第三类long_match(match_end>=16,长匹配)。图6中mux为多路复用器,Post_proc为后处理单元,用于根据数据匹配结果进行数据压缩。
如图7所示,阴影表示匹配数据,不同的阴影表示不同的匹配数据。对于one_match而言,当cycle0在字符S1发现了一个5字符匹配,此时idx为1,match_len=5,match_end=6,结束字符为S5,很显然该匹配没有覆盖完cycle1处的全部数据,那么在cycle1处可能会存在新的匹配,匹配输出单元(match_dout)这时候需要更新从hash_match读取data_mem获得的dout数据,进而判断是否有新的匹配发生,而实际上也的确在cycle1处发现了另外一个5字符匹配;
如图8所示,对于multi_match而言,在cycle0发现了一个7字符的匹配,此时idx为1,match_len=7,match_end=8,结束字符为S7,而其结束位置覆盖了2个cycle,那么对于cycle1的hash_match读取data_mem获得的dout数据需要进行mask(丢弃),match_dout此时不更新dout值,而需要从自身的数据进行移位获取下一笔的数据;
如图9所示,对于long_match而言,在cycle0发现了一个15字符的匹配,其结束位置覆盖了4个cycle,那么大概率这个匹配并没有全部完成,而这4个cycle内的数据已经全部获取,可以利用这个时间段去获取下一个long_match所需要的全部信息(need_updata_addr),进而更新match_dout,当long_match的判断条件不成立时,会跳到one_match或者multi_match进行处理。
可见,通过对his_match进行分类,同时利用数据的提前预取和判断可以达到hash_match和his_match完全并行的处理,而不会引入任何带宽上的波动。本实施例可以满足1GHZ的时钟,带宽可以达到4GB/s,且无任何带宽上的抖动,可以满足高速压缩的需求。
下面对本申请实施例提供的一种数据压缩装置进行介绍,下文描述的一种数据压缩装置与上文描述的一种数据压缩方法可以相互参照。
参见图10,根据一示例性实施例示出的一种数据压缩装置的结构图,如图10所示,包括:
扩展模块100,用于获取待压缩数据,在所述待压缩数据中确定待处理数据,并将所述待处理数据扩展为多个待处理数据单元;
哈希匹配模块200,用于将第一个待处理数据作为当前待处理数据,对所述当前待处理数据对应的多个所述待处理数据单元进行哈希匹配得到哈希匹配结果;其中,所述哈希匹配结果包括所述待处理数据单元的哈希值对应的候选匹配位置;
数据匹配模块300,用于根据所述哈希匹配结果从所述待压缩数据中读取第一数据内容,从所述待压缩数据中读取第二数据内容,对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果;其中,所述第一数据内容为从所述待压缩数据中的所述候选匹配位置开始读取的数据内容,所述第二数据内容为从所述待压缩数据中的所述待处理数据单元开始读取的数据内容,所述数据匹配结果包括匹配位置和匹配长度,所述匹配位置为所述第一数据内容中包含匹配成功的目标数据内容的第一个字节在所述待压缩数据的位置,所述匹配长度为所述目标数据内容的长度;
计算模块400,用于计算所述待处理数据单元的第一个字节在对应的待处理数据中的位置与所述匹配长度的和作为目标位置值;
确定模块500,用于根据所述目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤,直至所有所述待处理数据均处理完成;
替换模块600,用于将所述第二数据内容中的目标数据内容替换为所述数据匹配结果中的匹配位置和匹配长度。
本申请实施例提供的数据压缩装置,对当前待处理数据对应的待处理数据单元进行哈希匹配得到哈希匹配结果,根据哈希匹配结果从待压缩数据中读取第一数据内容和第二数据内容进行数据匹配,哈希匹配和数据匹配可以并行处理,提高了数据压缩效率。在数据匹配之后,计算待处理数据单元的第一个字节在对应的待处理数据中的位置与匹配长度的和作为目标位置值,也即匹配结束字节在待处理数据中的位置,根据匹配结束字节在待处理数据中的位置重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,提高了数据压缩效率。
在上述实施例的基础上,作为一种优选实施方式,所述扩展模块具体用于:获取待压缩数据,依次在所述待压缩数据中提取第一预设数量个字节作为待处理数据,分别以所述待处理数据中的每个字节作为首字节在所述待压缩数据中提取第二预设数量个字节作为待处理数据单元。
在上述实施例的基础上,作为一种优选实施方式,所述哈希匹配模块具体用于:计算所述当前待处理数据对应的多个所述待处理数据单元的目标哈希值,分别以多个所述目标哈希值为索引在哈希表中确定对应的目标哈希条目,基于多个所述目标哈希条目中的候选匹配位置确定多个所述待处理数据单元的哈希匹配结果;其中,所述哈希表用于存储数据内容的哈希值与在所述待压缩数据中的位置之间的对应关系。
在上述实施例的基础上,作为一种优选实施方式,还包括:
第一更新模块,用于当所述目标哈希条目中不存在候选匹配位置时,基于所述待处理数据单元中首字节在所述待压缩数据中的位置更新所述哈希表中的所述目标哈希条目。
在上述实施例的基础上,作为一种优选实施方式,还包括:
第二更新模块,用于对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果之后,基于所述第二数据内容中包含匹配成功的目标数据内容的第一个字节在所述待压缩数据的位置,更新所述哈希表中所述目标数据内容所属的待处理数据单元的哈希值对应的哈希条目。
在上述实施例的基础上,作为一种优选实施方式,所述确定模块具体用于:若所述目标位置值小于第一预设值,则将当前待处理数据后的第一个待处理数据重新确定为当前待处理数据,根据所述当前待处理数据对应的多个所述待处理数据单元的哈希匹配结果从所述待压缩数据中读取第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤;其中,所述第一预设值为第一预设数量的二倍,所述第一预设数量为所述待处理数据包含的字节数量;若所述目标位置值大于或等于所述第一预设值且小于第二预设值,则将当前待处理数据后的第二个待处理单元重新确定为当前待处理数据,对所述第一数据内容向后移位所述第一预设值个字节以重新确定所述第一数据内容,根据所述当前待处理数据对应的多个所述待处理数据单元的哈希匹配结果从所述待压缩数据中重新读取所述第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤;其中,所述第二预设值为所述第一预设数量的n倍,n大于2;若所述目标位置值大于或等于所述第二预设值,则将当前待处理数据后的所述第二预设值个字节后的待处理数据重新确定为当前待处理数据,根据所述当前待处理数据对应的多个所述待处理数据单元的哈希匹配结果从所述待压缩数据中读取第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤;其中,对所述第一数据内容和所述第二数据内容进行数据匹配得到新的数据匹配结果之后,合并上一个数据匹配结果和所述新的数据匹配结果,合并后的数据匹配结果中的匹配位置为所述上一个数据匹配结果中包含的匹配位置,所述合并后的数据匹配结果中的匹配长度为所述上一个数据匹配结果中包含的匹配长度与所述新的数据匹配结果中包含的匹配长度之和。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
基于上述程序模块的硬件实现,且为了实现本申请实施例的方法,本申请实施例还提供了一种电子设备,图11为根据一示例性实施例示出的一种电子设备的结构图,如图11所示,电子设备包括:
通信接口1,能够与其它设备比如网络设备等进行信息交互;
处理器2,与通信接口1连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的数据压缩方法。而所述计算机程序存储在存储器3上。
当然,实际应用时,电子设备中的各个组件通过总线系统4耦合在一起。可理解,总线系统4用于实现这些组件之间的连接通信。总线系统4除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图11中将各种总线都标为总线系统4。
本申请实施例中的存储器3用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。
可以理解,存储器3可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器3旨在包括但不限于这些和任意其它适合类型的存储器。
上述本申请实施例揭示的方法可以应用于处理器2中,或者由处理器2实现。处理器2可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器2中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器2可以是通用处理器、DSP,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器2可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器3,处理器2读取存储器3中的程序,结合其硬件完成前述方法的步骤。
处理器2执行所述程序时实现本申请实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
在示例性实施例中,本申请实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器3,上述计算机程序可由处理器2执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、CD-ROM等存储器。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种数据压缩方法,其特征在于,应用于数据存储领域,所述方法包括:
获取待压缩数据,在所述待压缩数据中确定待处理数据,并将所述待处理数据扩展为多个待处理数据单元;
将第一个待处理数据作为当前待处理数据,对所述当前待处理数据对应的多个所述待处理数据单元进行哈希匹配得到哈希匹配结果;其中,所述哈希匹配结果包括所述待处理数据单元的哈希值对应的候选匹配位置;
根据所述哈希匹配结果从所述待压缩数据中读取第一数据内容,从所述待压缩数据中读取第二数据内容,对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果;其中,所述第一数据内容为从所述待压缩数据中的所述候选匹配位置开始读取的数据内容,所述第二数据内容为从所述待压缩数据中的所述待处理数据单元开始读取的数据内容,所述数据匹配结果包括匹配位置和匹配长度,所述匹配位置为所述第一数据内容中包含匹配成功的目标数据内容的第一个字节在所述待压缩数据的位置,所述匹配长度为所述目标数据内容的长度;
计算所述待处理数据单元的第一个字节在对应的待处理数据中的位置与所述匹配长度的和作为目标位置值;
根据所述目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤,直至所有所述待处理数据均处理完成;
将所述第二数据内容中的目标数据内容替换为所述数据匹配结果中的匹配位置和匹配长度,实现数据压缩并存储。
2.根据权利要求1所述数据压缩方法,其特征在于,在所述待压缩数据中确定待处理数据,包括:
依次在所述待压缩数据中提取第一预设数量个字节作为待处理数据。
3.根据权利要求1所述数据压缩方法,其特征在于,将所述待处理数据扩展为多个待处理数据单元,包括:
分别以所述待处理数据中的每个字节作为首字节在所述待压缩数据中提取第二预设数量个字节作为待处理数据单元。
4.根据权利要求1所述数据压缩方法,其特征在于,对所述当前待处理数据对应的多个所述待处理数据单元进行哈希匹配得到哈希匹配结果,包括:
计算所述当前待处理数据对应的多个所述待处理数据单元的目标哈希值,分别以多个所述目标哈希值为索引在哈希表中确定对应的目标哈希条目,基于多个所述目标哈希条目中的候选匹配位置确定多个所述待处理数据单元的哈希匹配结果;其中,所述哈希表用于存储数据内容的哈希值与在所述待压缩数据中的位置之间的对应关系。
5.根据权利要求2至4任一项所述数据压缩方法,其特征在于,所述根据所述目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤,包括:
若所述目标位置值小于第一预设值,则将当前待处理数据后的第一个待处理数据重新确定为当前待处理数据,根据所述当前待处理数据对应的多个所述待处理数据单元的哈希匹配结果从所述待压缩数据中读取第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤;其中,所述第一预设值为第一预设数量的二倍,所述第一预设数量为所述待处理数据包含的字节数量。
6.根据权利要求2至4任一项所述数据压缩方法,其特征在于,所述根据所述目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤,包括:
若所述目标位置值大于或等于第一预设值且小于第二预设值,则将当前待处理数据后的第二个待处理数据重新确定为当前待处理数据,对所述第一数据内容向后移位所述第一预设值个字节以重新确定所述第一数据内容,根据所述当前待处理数据对应的多个所述待处理数据单元的哈希匹配结果从所述待压缩数据中重新读取所述第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤;其中,所述第一预设值为第一预设数量的二倍,所述第一预设数量为所述待处理数据包含的字节数量,所述第二预设值为所述第一预设数量的n倍,n大于2。
7.根据权利要求2至4任一项所述数据压缩方法,其特征在于,所述根据所述目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤,包括:
若所述目标位置值大于或等于第二预设值,则将当前待处理数据后的所述第二预设值个字节后的待处理数据重新确定为当前待处理数据,根据所述当前待处理数据对应的多个所述待处理数据单元的哈希匹配结果从所述待压缩数据中读取第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤;其中,所述第二预设值为第一预设数量的n倍,n大于2,所述第一预设数量为所述待处理数据包含的字节数量,对所述第一数据内容和所述第二数据内容进行数据匹配得到新的数据匹配结果之后,合并上一个数据匹配结果和所述新的数据匹配结果,合并后的数据匹配结果中的匹配位置为所述上一个数据匹配结果中包含的匹配位置,所述合并后的数据匹配结果中的匹配长度为所述上一个数据匹配结果中包含的匹配长度与所述新的数据匹配结果中包含的匹配长度之和。
8.一种数据压缩装置,其特征在于,应用于数据存储领域,所述装置包括:
扩展模块,用于获取待压缩数据,在所述待压缩数据中确定待处理数据,并将所述待处理数据扩展为多个待处理数据单元;
哈希匹配模块,用于将第一个待处理数据作为当前待处理数据,对所述当前待处理数据对应的多个所述待处理数据单元进行哈希匹配得到哈希匹配结果;其中,所述哈希匹配结果包括所述待处理数据单元的哈希值对应的候选匹配位置;
数据匹配模块,用于根据所述哈希匹配结果从所述待压缩数据中读取第一数据内容,从所述待压缩数据中读取第二数据内容,对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果;其中,所述第一数据内容为从所述待压缩数据中的所述候选匹配位置开始读取的数据内容,所述第二数据内容为从所述待压缩数据中的所述待处理数据单元开始读取的数据内容,所述数据匹配结果包括匹配位置和匹配长度,所述匹配位置为所述第一数据内容中包含匹配成功的目标数据内容的第一个字节在所述待压缩数据的位置,所述匹配长度为所述目标数据内容的长度;
计算模块,用于计算所述待处理数据单元的第一个字节在对应的待处理数据中的位置与所述匹配长度的和作为目标位置值;
确定模块,用于根据所述目标位置值重新确定当前待处理数据、下一次数据匹配的第一数据内容和第二数据内容,并重新进入对所述第一数据内容和所述第二数据内容进行数据匹配得到数据匹配结果的步骤,直至所有所述待处理数据均处理完成;
替换模块,用于将所述第二数据内容中的目标数据内容替换为所述数据匹配结果中的匹配位置和匹配长度,实现数据压缩并存储。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述数据压缩方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述数据压缩方法的步骤。
CN202311358412.8A 2023-10-19 2023-10-19 一种数据压缩方法、装置及电子设备和存储介质 Active CN117113106B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311358412.8A CN117113106B (zh) 2023-10-19 2023-10-19 一种数据压缩方法、装置及电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311358412.8A CN117113106B (zh) 2023-10-19 2023-10-19 一种数据压缩方法、装置及电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN117113106A CN117113106A (zh) 2023-11-24
CN117113106B true CN117113106B (zh) 2024-03-19

Family

ID=88809406

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311358412.8A Active CN117113106B (zh) 2023-10-19 2023-10-19 一种数据压缩方法、装置及电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN117113106B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103236847A (zh) * 2013-05-06 2013-08-07 西安电子科技大学 基于多层哈希结构与游程编码的数据无损压缩方法
CN114567331A (zh) * 2022-01-29 2022-05-31 山东云海国创云计算装备产业创新中心有限公司 一种基于lz77的压缩方法、装置及其介质
WO2022198483A1 (zh) * 2021-03-24 2022-09-29 深圳市大疆创新科技有限公司 数据压缩方法、装置、可移动平台及存储介质
WO2023279964A1 (zh) * 2021-07-08 2023-01-12 华为技术有限公司 数据压缩方法、装置、计算设备及存储系统
CN115955248A (zh) * 2022-12-28 2023-04-11 深圳大普微电子科技有限公司 一种数据压缩方法、装置及电子设备和存储介质
CN116418348A (zh) * 2021-12-30 2023-07-11 中国电信股份有限公司 一种数据压缩方法、装置、设备及存储介质
CN116683914A (zh) * 2023-04-26 2023-09-01 上海傲显科技有限公司 数据压缩方法、装置和系统
CN117093881A (zh) * 2023-10-19 2023-11-21 深圳大普微电子股份有限公司 一种数据压缩方法、装置及电子设备和存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103236847A (zh) * 2013-05-06 2013-08-07 西安电子科技大学 基于多层哈希结构与游程编码的数据无损压缩方法
WO2022198483A1 (zh) * 2021-03-24 2022-09-29 深圳市大疆创新科技有限公司 数据压缩方法、装置、可移动平台及存储介质
WO2023279964A1 (zh) * 2021-07-08 2023-01-12 华为技术有限公司 数据压缩方法、装置、计算设备及存储系统
CN116418348A (zh) * 2021-12-30 2023-07-11 中国电信股份有限公司 一种数据压缩方法、装置、设备及存储介质
CN114567331A (zh) * 2022-01-29 2022-05-31 山东云海国创云计算装备产业创新中心有限公司 一种基于lz77的压缩方法、装置及其介质
CN115955248A (zh) * 2022-12-28 2023-04-11 深圳大普微电子科技有限公司 一种数据压缩方法、装置及电子设备和存储介质
CN116683914A (zh) * 2023-04-26 2023-09-01 上海傲显科技有限公司 数据压缩方法、装置和系统
CN117093881A (zh) * 2023-10-19 2023-11-21 深圳大普微电子股份有限公司 一种数据压缩方法、装置及电子设备和存储介质

Also Published As

Publication number Publication date
CN117113106A (zh) 2023-11-24

Similar Documents

Publication Publication Date Title
RU2629440C2 (ru) Устройство и способ для ускорения операций сжатия и распаковки
US7661102B2 (en) Method for reducing binary image update package sizes
JP6742692B2 (ja) 符号化プログラムおよび伸長プログラム
JP3084201B2 (ja) パターン一致を探索するための方法およびシステム
JPWO2004062110A1 (ja) データ圧縮方法、プログラム及び装置
JP6686639B2 (ja) 符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法
WO2017128763A1 (zh) 数据压缩装置及方法
CN117093881B (zh) 一种数据压缩方法、装置及电子设备和存储介质
CN115955248A (zh) 一种数据压缩方法、装置及电子设备和存储介质
CN111402959A (zh) 一种序列比对的方法、系统、设备及可读存储介质
CN115756964A (zh) 一种协处理器固件解析方法及装置
EP3119002B1 (en) Encoding program, encoding method, information processsing device, replacement program, and replacement method
CN117113106B (zh) 一种数据压缩方法、装置及电子设备和存储介质
EP1590732A2 (en) Method and apparatus for instruction compression
CN112800779B (zh) 文本处理方法及装置、模型训练方法及装置
US9697899B1 (en) Parallel deflate decoding method and apparatus
CN114518841A (zh) 存储器中处理器和使用存储器中处理器输出指令的方法
CN114327252A (zh) 使用基于内容的块对齐实现基于块的存储系统中的数据简化
JP3533339B2 (ja) 復号化装置および復号化方法、並びに、プログラム記録媒体
CN115470737B (zh) 生成数据流图的方法、电子设备及存储介质
US20230291418A1 (en) Data decompression device, memory system, and data decompression method
CN111199156B (zh) 命名实体识别方法、装置、存储介质及处理器
CN116505959A (zh) 基于bch码的译码方法及相关设备
US20180081596A1 (en) Data processing apparatus and data processing method
CN114036927A (zh) 文本摘要的抽取方法、装置、计算机设备及存储介质

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