CN109075798B - 可变大小符号基于熵的数据压缩 - Google Patents
可变大小符号基于熵的数据压缩 Download PDFInfo
- Publication number
- CN109075798B CN109075798B CN201780024207.4A CN201780024207A CN109075798B CN 109075798 B CN109075798 B CN 109075798B CN 201780024207 A CN201780024207 A CN 201780024207A CN 109075798 B CN109075798 B CN 109075798B
- Authority
- CN
- China
- Prior art keywords
- symbol
- symbols
- data
- size
- codeword
- 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
Links
Images
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
-
- 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/3091—Data deduplication
- H03M7/3095—Data deduplication using variable length segments
-
- 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/4093—Variable length to variable length coding
-
- 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
-
- 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
-
- 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/4031—Fixed length to variable length coding
-
- 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
-
- 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/3091—Data deduplication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
公开了用于数据压缩和解压缩的方法、设备和系统。获得(1510)数据集合。采样(1520)数据集合,以为多个不同的符号大小(S1‑Sn),建立数据集合中相应大小的符号(1606)的相对频率(1615);通过基于反映采样符号的相对频率(1615)以及它们的大小的度量(1616)对数据集合中的采样符号熵编码,生成包括可变长度码字的代码(1625)。使用所生成的代码将数据集合中的符号压缩(1540)为压缩表示中,其中符号(SY)的压缩表示(1635)包括表示符号的码字(CW)以及用于解压缩压缩表示的元数据(MD)。
Description
技术领域
本发明大体上涉及数据压缩领域,并且更特别地涉及电子计算机中的数据存储器和数据通信设备中的数据压缩。甚至更具体地,本发明涉及被配置为使用基于熵的数据压缩原理分别对可变大小的符号进行采样、编码、压缩和解压缩的方法、设备和系统。
背景技术
数据压缩是一种更有效地存储和传输数据的通用技术,通过比不频繁的数据集合更有效地编码频繁的数据集合。由于多个原因,通常更有效地存储和传输数据是感兴趣的。在通信系统中,比如建立互联网的那些,其潜在地可以连接所有感兴趣的全球可访问的物理设备,感兴趣的是更有效地传输数据,比如K倍,因为其然后可以潜在地以K倍被传输,使用潜在地1/K的通信容量,并且具有潜在地1/K的能量消耗。在计算机存储器中,例如保持处理设备操作的数据和计算机指令的存储器,例如主存储器或高速缓冲存储器,感兴趣的是更有效地存储所述数据,比如K倍,因为其然后可以潜在地减小所述存储器的大小至1/K,使用潜在地1/K的通信容量以在一个存储器与另一个存储器之间传输数据,并且能量消耗潜在地变为1/K,以在计算机系统内或之间和/或存储器之间存储和传输所述数据。可替代地,与没有数据压缩相比,人们可以潜在地在可用计算机存储器中存储K倍数据。这可能是感兴趣的,实现计算机的潜在地K倍的性能而不必添加更多的存储器,其可能是昂贵的或者由于资源限制而可能简单地不太理想。例如,在微处理器芯片上存在有限数量的晶体管,并且集成在所述芯片上的高速缓冲存储器的大小受到这种资源限制的约束。如另一个实例,智能电话、平板电脑、膝上型电脑/台式机或机顶盒的大小和重量都是有限的,因为对最终用户来说更大或更重的智能电话、平板电脑、膝上型电脑/台式机或机顶盒可能具有更少的价值;因此潜在地降低这种产品的市场价值。然而,更多的存储器容量可以潜在地增加产品的市场价值,因为更多的存储器容量可以带来更高的性能,以及从而产品的实用性更好。
总而言之,在计算机化产品的一般情况下,包括隔离设备或互连设备,数据压缩可以潜在地提高性能,增加通信容量,降低能量消耗或降低存储器消耗的成本和面积。因此,数据压缩在除此处提到的那些之外的计算机化产品的广泛范围中具有广泛的用途。
数据压缩是一个充分研究的领域。从现有技术中已知的方法属于无损和有损数据压缩方法。鉴于无损数据压缩方法在不丢失信息的情况下压缩数据,有损数据压缩方法以较低的数据准确性换取较高的压缩。这在某些应用领域是可接受的,诸如媒体压缩;例如,个人用户可以接受例如图像和音频中的信息的某些丢失。因为通常,有损数据压缩方法不能精确地恢复数据,它们通常比无损压缩方法更有效地压缩数据。但是,在某些数据压缩使用的情况下,有损压缩方法是不合适的。例如,通常必须精确捕获计算机存储器中的数据内容。如另一个实例,在互联网上传输的某些数据,诸如银行信息,必须通常准确地被捕获。在其他情况下,也期望数据压缩必须是无损的。
一种类型的无损数据压缩,有时也用于有损数据压缩方法中,使用基于熵的编码。基于熵的编码背后的一般思想是按照它们的相对频率的顺序对数据集合中的固定大小的符号进行排序。例如,假设符号集是字母表中的字母集,例如,“A”、“B”和“C”,并且它们在数据集合中的相对频率是已知的,比如分别为75%、20%和5%,在基于熵的编码下,在现有技术中已知如何使用可变大小的代码长度有利地对它们进行编码,使用例如香农的源编码理论,具有由–logbP确定的长度,其中b是符号的数量(在实例中为3),而P是符号出现的频率(或概率)。通常,符号越频繁,其代码的长度越短。
现有技术中已知存在许多基于熵的数据压缩方法,其中包括一元、算术、哥伦布和霍夫曼等。无论具体特定的方法如何,它们所有都产生其长度最佳的编码,即,根据香农的源编码理论引起最大压缩,即,基于各个符号的概率分配编码。在众所周知的霍夫曼方法中,存在用于如何建立各个符号的相对频率的已知方法。还存在用于如何将霍夫曼码分配给其长度最佳的各个符号的已知的方法。例如,人们可以根据具体的二叉树将代码分配给符号,该二叉树根据符号的出现频率或它们的概率从下到上和从左到右构造。树可以是二叉的,意味着每个父节点有两个节点,四叉或通常为N-叉,取决于每个父节点有多少个子节点。
本发明人已经如下进行了创造性的理解。然而,最佳地假设待压缩的符号具有相同的大小。如以下实例所显示的,通过基于熵的数据压缩方法不能最佳地处理可变大小的符号。作为实例,假设符号是英语字母表中的大写字母的组合,即,用7位ASCII码编码的“A”、“B”、“C”、......、“Z”。如果符号是单个字母,基于这些符号中的每个的相对频率,众所周知如何建立基于熵的代码,其长度将最佳地匹配相对频率。然而,如果我们在一串文本中考虑每四个字符的组(在这种情况下由大写字母组成),例如“GIRLGIRLGIRLGIRLLRIG”,最好考虑包括四个字母的大小而不是单个字母的符号,并且使用四字符符号而不是单字符符号形成基于熵的代码。考虑一个字母的符号,“G”、“I”、“R”和“L”各以25%的概率呈现,考虑四个字母的符号,符号“GIRL”各以80%的概率呈现。
在一般情况下,本发明人已经意识到将优选地能够处理可变大小的符号。现有技术中基于熵的编码方法假设所有符号具有相同的大小,并且因此不能最佳地编码具有不同大小的符号。总之,所公开的发明允许基于熵的编码方法创建使用可变大小的符号的编码。
发明内容
因此,本发明的目的是提供上面提及的技术领域中的改进。
本发明的第一方面是一种数据压缩方法,包括:
获取数据集合;
采样所述数据集合,以为多个不同的符号大小,建立相应大小的符号在所述数据集合中的相对频率;
通过基于反映采样符号的相对频率以及它们的大小的度量对所述数据集合中的采样符号进行熵编码,生成包括可变长度码字的代码;以及
使用所生成的代码将所述数据集合中的符号压缩为压缩表示,其中符号的压缩表示包括表示符号的码字以及用于解压缩压缩表示的元数据。
本发明的第二方面是一种数据压缩设备,包括:
采样器,被配置为采样数据集合,以为多个不同的符号大小,建立相应大小的符号在所述数据集合中的相对频率;
编码器,被配置为通过基于反映采样符号的相对频率及其它们的大小的度量对采样符号进行熵编码,生成包括可变长度码字的代码;以及
压缩器,被配置为使用所生成的代码将所述数据集合中的符号压缩为压缩表示,其中符号的压缩表示包括表示符号的码字以及用于解压缩压缩表示的元数据。
本发明的第三方面是一种数据解压缩方法,包括:
获得包括可变大小符号的压缩表示的压缩块;
检索包括在所述压缩块中的压缩表示;
检索包括在所述压缩表示中的元数据;
检索包括在所述压缩表示中的码字;以及
使用所检索的元数据和包括可变长度、熵编码的码字的代码将所述检索的码字解压缩为具有多个不同大小中的一个的符号,所述码字的熵编码基于反映符号的相对频率以及它们的大小的度量。
本发明的第四方面是一种包括解压缩器的数据解压缩设备,
解压缩器被配置为获得包括可变大小符号的压缩表示的压缩块;
解压缩器被配置为检索所述在所述压缩块中的压缩表示;
解压缩器被配置为检索包括在所述压缩表示中的元数据;
解压缩器被配置为检索包括在所述压缩表示中的码字;以及
解压缩器被配置为使用所检索的元数据和包括可变长度、熵编码的码字的代码将所述检索的码字解压缩为具有多个不同大小中的一个的符号,所述码字的熵编码基于反映符号的相对频率以及它们的大小的度量。
本发明的第五方面是一种系统,包括一个或多个存储器,根据以上第二方面的数据压缩设备和根据以上第四方面的数据解压缩设备。
本发明的第六方面是一种包括代码指令的计算机程序产品,其当由处理设备加载和执行时,引起执行根据以上第一方面的方法。
本发明的第七方面是一种包括代码指令的计算机程序产品,当由处理设备加载和执行时,引起执行根据以上第三方面的方法。
所公开的实施方式的其他方面、目的、特征和优点将从以下详细公开、所附从属权利要求以及附图中显现。通常,权利要求中使用的所有术语将根据它们在技术领域中的普通含义来解释,除非本文另有明确定义。
所有对“一/一个/该[元件、设备、部件、装置、步骤等]”的引用都应开放地解释为引用元件、设备、部件、装置、步骤等的至少一个例子,除非另有明确说明。本文公开的任何方法的步骤不必以所公开的确切顺序执行,除非明确说明。
附图说明
图1描绘了计算机系统,包括微处理器芯片具有一个或多个处理单元,三层的示例性高速缓冲存储器层级,以及连接到一个或多个芯片外存储器的一个或多个存储器控制器。
图2描绘了包括数据缓冲器的通信设备,该数据缓冲器存储待传输到对等通信设备的数据集合,该对等通信设备包括数据缓冲器以存储所传输的数据集合。
图3描绘了示例性数据集合以及如何在考虑固定大小的符号的情况下建立值频率。
图4描绘了示例性数据集合以及如何在考虑可变大小的符号的情况下建立值频率。
图5描绘了源自图1的计算机系统,被配置为1)建立存储在存储器中的符号的频率,2)压缩以及3)解压缩符号。
图6描绘了源自图2的通信设备,被配置为1)建立存储在数据缓冲器中的符号的频率,2)压缩以及3)解压缩跨通信链路高效传输的符号。
图7描绘了值频率表(VFT),以建立固定大小的符号的频率,用于形成固定大小的符号的基于熵的编码。
图8描绘了值频率表的集合,以建立可变大小符号的频率,以形成这种符号的基于熵的编码。
图9描绘了被配置为用于可变大小的符号建立基于熵的编码的过程的系统和描述该过程的流程图。
图10描绘了用于压缩固定大小符号的霍夫曼压缩器(HuC)。
图11描绘了用于压缩可变大小符号的霍夫曼压缩器(mHuC)。
图12描绘了用于控制可变大小符号的示例性霍夫曼压缩过程的状态机的流程图。
图13描绘了用于压缩固定大小符号的霍夫曼压缩器(HuD)。
图14描绘了用于解压缩可变大小符号的霍夫曼解压缩器 (mHuD)。
图15描绘了根据本发明的用于可变大小符号、基于熵的数据压缩的通用方法。
图16描绘了根据本发明的通用数据压缩设备。
图17描绘了根据本发明的通用数据解压缩设备。
图18描绘了根据本发明的通用数据解压缩设备。
图19描绘了包括根据本发明的数据压缩设备和数据解压缩设备的通用系统。
具体实施方式
图1中描绘了计算机系统100的实例。该系统包括微处理器芯片110 和表示为M1151、M2152至MK153的一个或多个存储器模块。微处理器芯片可以是分立系统,或者以任何可用技术集成在片上系统(SoC)上。微处理器110包括一个或数个处理单元,表示为P1131、P2132至PN133,有时称为CPU或核,以及存储器层级。另一方面,存储器层级包括数个高速缓存层,例如,如图1中示例性示出并表示为C1、C2和C3的三层。这些层可以以相同或不同的存储器技术实现,例如,SRAM、DRAM或任何类型的非易失性技术,包括例如相变存储器(PCM)。高速缓存层的数量可以在不同实例中变化,并且实例100描绘了三层其中最后高速缓存层是C3 120。使用某种互连装置(例如总线或任何其他互连网络)连接这些层。在该实例中,层C1和C2是私有的,并且仅可由表示为Pi的相应处理单元i(例如图1中的P1)访问。本领域技术人员众所周知的是,替代性实例可以具有任意数量的私有高速缓存层,或者作为替代,所有高速缓存层被共享,如图1中的第三层C3 120所示。关于将数据包括在高速缓存层级中,任何替代方案都是可能的,其可以被本领域技术人员所理解。例如,C1可以包括在C2中,而C2相对于C3级可以不包括在内。本领域技术人员可以理解替代性实例。图1的计算机系统100包括一个或多个存储器控制器,表示为MCTRL1141、MCTRL2142至MCTRLK143。最后的高速缓存层(图1 中的C3)连接到存储器控制器,其继而连接到一个或多个存储器模块M1151、M2152、....Mk153,其可以以相同或不同的存储器技术实现,例如,SRAM、 DRAM或任何类型的非易失性技术,包括例如相变存储器(PCM)。存储器控制器可以集成在微处理器芯片110上,或者可以在微处理器芯片外面实现。最后,计算机系统运行一个或多个任务。任务可以是可以在特定系统上运行的任何软件应用程序或其部分。
计算机系统,如图1中的实例所例示的,可能遭受表示为M1151至 MK153的存储器模块和高速缓冲存储器无论层如何(例如图1中的C1、C2 和C3)的有限容量。有限的高速缓存容量可以表现其自身为必须在存储器层级中的下一层服务的更高部分的存储器请求,导致性能损失或更高的能量消耗。为了缓解这个问题,人们可以考虑增加高速缓存容量,从而减少需要由存储器层级的下一层服务的请求数。增加微处理器芯片上的高速缓存层的容量将导致许多问题。首先,高速缓存访问请求时间可能会增加,导致性能损失。其次,对较大高速缓存的访问请求所消耗的能量可能潜在地更高。第三,在微处理器芯片上使用更多的硅或等效材料以实现更大的高速缓存层可能必须换取更少的处理能力。因此,希望在没有上述所确认的问题的情况下实现更多的高速缓存容量。有限的存储器容量具有类似的问题,并且可以在更多的存储器请求中表现其自身,其必须在存储器层级的下一层处被服务,通常被实现为存储器层级的存储层。这种存储层访问较慢并且可能导致性能和能量消耗的显著损失。增加存储器容量可以缓解这些缺点。然而,更多的存储器容量可能在部件级和能量消耗方面增加计算机系统的成本。此外,更多的存储器消耗更多的空间,其可能限制计算机系统的实用性,特别是在形状因素受约束的产品中,包括例如移动计算机(例如,平板电脑、智能电话、可穿戴装置和连接到互联网的小型计算机化设备(又名物联网(IoT)设备))。
现在让我们将注意力转向如图2所描绘的替代性实例。图2示出了两个计算机化子系统201、202中的通信设备221和212的示例性数据通信系统200,具有通过通信链路230通信的能力。两个通信设备221和212中的每个可以与一个或多个这样的通信设备通信,尽管在示例性系统中仅示出了两个通信设备。通信设备可以遵守通信协议,例如TCP/IP,其通常具有许多标准化协议层。通常,通信设备的任务是将数据集合从一个点传输到另一个点。例如,并且如图2所示,该任务可以涉及从通信设备221向通信设备212传输数据集合。待传输的数据集合通常存储在可由通信设备212 访问的数据缓冲器211中,并且类似地,接收通信设备221通常将所接收的数据集合存放在相应的数据缓冲器222中。
众所周知,数据通信系统可能遭受有限的通信容量。这可以表现其自身为将数据集合从一个通信设备传输到另一个的更长时间。人们可以通过增加通信链路230的容量来缓解有限的通信容量。然而,这可能增加数据通信系统的成本,涉及部件和基础设施成本和能量消耗两者。
数据压缩可以减轻图1和图2中的实例中的每个的,并且,更通用地,在本领域技术人员所理解的替代性实例中的,有限存储器和通信容量的问题。通过实例,返回参考图1,人们可以压缩存储在表示为M1151至MK153 的存储器模块中的数据。增加的存储器容量的第一个效果是能够在可用存储器中存储更多数据。第二个效果是允许数据更有效地从存储器传输到图1 中的微处理器芯片110上的高速缓存层级,通过释放存储器模块M1至MK与存储器控制器MCTRL1141至MCTRLK143之间的互连上的通信容量。第三个效果是还允许数据以压缩格式存储在高速缓存层级中。例如,如果允许数据以压缩格式存储在图1中的芯片上高速缓存C3 120中,其将增加有效的高速缓存容量,这潜在地可能引起必须由芯片外访问服务的更少的存储器请求,因此引起更高的性能和/或更少的能量消耗。
基于熵的数据压缩是现有技术中本身众所周知的一类无损数据压缩方法。作为输入,其考虑包括一定先验定义大小的符号集的数据集合。举例来说,符号可以包括英文字母表中的大写字母集,即“A”、“B”、“C”、...、“Z”。可替代地,符号可以包括32位整数集,即十六进制表示的0000000016... FFFFFFFF16。在图3中,在存储矩阵310中存储示例性数据集合,对应于每行八个存储位置的五行,其中每个位置占据固定大小符号,例如32位,示例性地解释为十进制数。不失通用性,但为了便于说明,让我们假设位置映射到存储地址,从顶部处的地址0开始逐行排列。也就是说,第一行的位置被映射到存储地址0、1、...、7;第二行的位置被映射到存储地址8、 9、...、15等。在实例存储矩阵310中,一些值显然比其他值更常见。例如,具有十进制值67的符号,例如在位置311,以及具有十进制值68的符号,例如在位置312分别出现11和6次,而例如具有十进制值02的符号仅出现一次。
基于熵的数据压缩背后的想法是用比较不频繁的符号更少的位来编码更频繁的符号。为了生成这样的编码,人们必须建立数据集合中每个符号的出现频率。图3的示例性频率表320部分地示出了存储矩阵310中的两个最频繁符号的频率信息。该频率表示出符号67和68分别出现11和6次。为了便于说明,让我们假设可以消除符号67和68的压缩值。由于存储矩阵包括45个位置,并且这些位置中的17个被符号67或68占据,因此然后人们通过因子45/(45-17)=1.6能够扩展存储容量。
然而,如现有技术所建议的,跟踪先验和固定大小的符号的频率可能导致错过的压缩机会,如图4所示,其示出了具有与图3的存储矩阵310 相同的内容的示例性存储矩阵410。让我们考虑跨越多个连续存储位置的符号,而不是限制我们自己考虑由单个存储位置(例如32位)的大小决定的符号大小。例如,让我们考虑与图4的存储矩阵中的行相同大小的符号。我们可以看到对应于第二行413的符号,即“54 00 67 68 00 01 67 68”与第四行中的符号相同。现在考虑跨越半行的符号,第三行414的第二半行具有与第二行和第四行的第一半行相同的符号。现在考虑改为行的四分之一,将行的第一个四分之一表示为第一四分之一行,行第二个四分之一表示为第二四分之一行等,我们注意到第一行412的第一四分之一行具有与第三行413和第五行415的第二和第四四分之一行分别相同的符号。频率表420示出了存储矩阵410中每个符号的出现次数,没有考虑大小为Si的符号i 是否包括在大小为Sj的符号j中,其中Si<Sj。例如,符号413“54 00 67 68 00 01 67 68”出现两次,而符号412“67 68”和符号411“67”分别出现六次和九次。
如果人们只考虑相同大小的符号,如在现有技术中那样,按照出现的降序排序符号,如频率表420中所做的,将决定如何将基于熵的代码分配给符号。具体地,具有较高频率的符号比具有较低频率的符号将被分配具有更短长度的代码。然而,当考虑大小不同的符号时,简单地考虑符号的频率似乎不够。首先,分别具有大小Si和Sj和相同频率f的两个符号i和j,其中Si<Sj,对压缩率将不会产生相同的影响;而符号i,如果被消除,消除对应于fxSi的存储量,符号j,当被消除时,将消除对应于fxSj>fxSi的存储量。因此,一个创新的方面可以被视为通过基于符号的大小和频率之间的乘积对符号进行排序来创建基于熵的编码的过程,在图4中表示为“移除的槽位”,如频率表420中所示。为了说明目的,如果频率表中列出的所有符号都将被移除,人们可以享有45/15=3的压缩比,对照图3中的实例的 1.6。
本发明涉及被配置为使用基于熵的数据压缩原理分别对可变大小的符号进行采样、编码、压缩和解压缩的方法、设备和系统,该压缩原理在现有技术中可能本身是已知的。在描述本发明的公开实施方式如何在采样、编码、压缩和解压缩数据集合的过程中处理可变大小的符号之前,首先将参考图15-19在总体水平上描述本发明。然后,参考图5-6,我们将描述如何可以将图1和图2的实例扩展到实施方式,其允许基于熵的数据压缩和解压缩方法来分别压缩和解压缩图1中的示例性计算机系统的存储器和高速缓存中的和图2的通信系统中的数据缓冲器中的数据。最后,将参考图 7-14描述数据压缩和解压缩方法和设备的不同部分和阶段的详细示例性实施方式。
图15示出了根据本发明的用于可变大小符号的基于熵的数据压缩的通用方法。相应地,图16示出了能够执行图15的数据压缩方法的通用数据压缩设备1600。现在将同时描述图15和图16。如在图15中的步骤1510 处所见,数据压缩设备1600获得数据集合1605(图16)。如箭头1505示意性地指示的,这通常可以涉及从计算机存储器读取数据集合。例如,这种计算机存储器可以是芯片上高速缓冲存储器,芯片外随机存取存储器,数据缓冲器或辅助数据存储装置。在本文献中这种计算机存储器的一些非限制性实例被称为C1-C3;M1-MK;610-650。
所获得的数据集合1605包括可变大小的符号1606,即不同符号大小 S1-Sn的符号。例如,如图16中所见,符号SY具有大小S2。
如在步骤1520处所见,由采样器1610对所获得的数据集合1605进行采样,以针对多个(即全部或至少一些)不同符号大小S1-Sn建立数据集合1605中的相应大小的符号1606的相对频率1615。
然后,如步骤1530处所见,编码器1620对数据集合1605中的采样符号进行操作,以生成包括可变长度码字的代码1625。例如,采样符号SY 在代码1625中由码字CW表示,如图16中所见。编码器1620生成代码1625,通过熵编码数据集合1605中的采样符号,基于反映采样符号的相对频率1615以及它们的大小的度量1616。在有利的实施方式中,度量1616可以被计算为符号出现的概率x符号权重,其中符号出现的概率=符号的相对频率/不同符号的数量,以及符号权重=符号的大小/最大符号大小。取决于应用,度量可以由采样器1610或编码器1620计算。
如下一步骤1540,压缩器1630使用所生成的代码1625将数据集合1605 中的符号压缩为压缩表示。如在图16中所见,每个压缩符号的压缩表示1635 包括表示符号(即符号SY)的码字(例如码字CW)以及用于解压缩压缩表示1635的元数据MD。在一些实施方式中,其稍后将参考图7-14更详细地描述,元数据MD可以包括第一部分1151;V以指示符号SY的压缩表示1635包括码字CW,和第二部分1152;级别以指示由码字CW表示的符号SY的大小。
如图15中的箭头1545示例性指示的,压缩表示通常可以存储在计算机存储器中,诸如例如芯片上高速缓冲存储器、芯片外随机存取存储器、数据缓冲器或辅助数据存储装置。再次,在本文献中这种计算机存储器的一些非限制性实例被称为C1-C3;M1-MK;610-650。取决于应用,该计算机存储器可以与根据如上所述的箭头1505从其读取数据集合1605的计算机存储器相同或不同。
图16中的数据压缩设备1600可以实现在硬件中,例如作为集成电路中的数字电路,作为可编程处理设备(例如中央处理单元(CPU)或数字信号处理器(DSP),作为现场可编程门阵列(FPGA)等。图15中的数据压缩方法的功能可以由适当配置的数据压缩设备1600执行,或者作为包括代码指令的计算机程序产品,其在由通用处理设备诸如CPU或DSP加载和执行时使该方法被执行。
尽管上面已经参考图16公开了采样器1610、编码器1620和压缩器1630,作为数据压缩设备1600的部件,应注意,在可替代实施方式中,采样器1610、编码器1620和压缩器1630可以构成单独的设备。而且,采样器1610、编码器1620和压缩器1630中的两个可以一起构成组合设备,例如采样器1610 和编码器1620,或编码器1620和压缩器1630。
图17示出了根据本发明的通用数据解压缩方法。相应地,图18示出了能够执行图17的数据解压缩方法的通用数据解压缩设备1800。数据解压缩设备1800包括解压缩器1820。现在将同时描述图17和图18。
如图17中的步骤1710处所见,解压缩器1820获得包括可变大小符号 1832的压缩表示1804、1805、1806的压缩块1810,其中压缩表示将由数据压缩方法和设备1600生成,如上面图15和图16所描述的那样。获得步骤1710通常可以涉及从上面针对图15和图16所提及的任何类型的计算机存储器中读取1705压缩块。
解压缩器1820检索(步骤1720)包括在压缩块1810中的压缩表示1805,检索(步骤1730)包括在压缩表示1805中的元数据MD,并检索(步骤1740) 包括在压缩表示1805中的码字CW。
然后,在步骤1750中,解压缩器1820将所检索的码字CW解压缩为具有多个不同大小S1-Sn中的一个的符号SY。在做这件事时,解压缩器1820 使用所检索的元数据MD和代码1824包括可变长度、熵编码的码字。代码 1824将由编码器1620生成(如代码1625),如上面参考图16所述。因此,如图18中示意性地指示,代码1824的码字的熵编码已基于度量1826(即图16中的度量1616),其反映(原始的,未压缩的)符号的相对频率1828 以及它们的大小。元数据MD将允许解压缩器1820解压缩压缩表示1805,或者更具体地解压缩包括在其中的码字CW。如上面针对图15和图16所述,在一些实施方式中,其稍后将参考图7-14更详细地描述,元数据MD可以包括第一部分1151;V以指示符号SY的压缩表示1635包括码字CW,和第二部分1152;级别以指示由码字CW表示的符号SY的大小。
如在1755处所见,解压缩符号SY通常可以存储在上面针对图15和图16提及的任何类型的计算机存储器中。
图18中的数据解压缩设备1800可以实现在硬件中,例如作为集成电路中的数字电路,作为可编程处理设备(例如中央处理单元(CPU)或数字信号处理器(DSP),作为现场可编程门阵列(FPGA)等。图17中的数据解压缩方法的功能可以由适当配置的数据解压缩设备1800执行,或者作为包括代码指令的计算机程序产品,其在由通用处理设备诸如CPU或DSP加载和执行时使该方法被执行。
图19示出了根据本发明的通用系统1900。该系统包括一个或多个存储器1910、数据压缩设备1920和数据解压缩设备1930。有利地,系统1900 是计算机系统(诸如下面将参考图5描述为计算机系统500的系统),并且所述一个或多个存储器1910是高速缓冲存储器/多个高速缓冲存储器(诸如在本文献的其他部分中提及的高速缓冲存储器C1-C3),随机存取存储器/ 多个随机存取存储器(诸如在本文献的其他部分中提及的存储器M1-Mk),或辅助存储装置/多个辅助存储装置。可替代地,系统1900是数据通信系统(诸如下面将参考图6描述为数据通信系统600的系统),并且所述一个或多个存储器1910是数据缓冲器(一个或多个)(诸如被称为610、650的数据缓冲器)。
参考图5-6,我们现在将描述图1和图2的实例如何可以扩展成实施方式,其允许基于熵的数据压缩方法分别压缩图1中的示例性计算机系统的存储器和高速缓存中的和图2的通信系统中的数据缓冲器中的数据。在图5 中,重新访问图1的计算机系统并且已经扩展为具有三个新的设备:一个或多个熵采样器511,一个或多个熵压缩器512以及一个或多个熵解压缩器 513。本领域技术人员将理解如先前在图1的环境中解释的可替代实施方式。熵采样器511的目的是实现图16的采样器1610,即建立位于一个或多个存储器模块M1至MK中或一个或多个高速缓存层C1至C3中的存储器区域中的符号的频率,并且如下所述。熵压缩器512的目的是实现图16的压缩器1630,即以基于熵的编码为基础压缩存储在任何上述存储场所中的数据集合,如将在后面详细描述的。基于熵的编码可以由熵编码器建立,其将实现图16中的编码器1620,但是其在图5中未示出。因此,熵采样器511、熵编码器和熵压缩器512可以联合实现图16中的数据压缩设备1600。
熵解压缩器513的目的是实现图18中的解压缩器1820(或整个数据解压缩设备1800),即,使用基于熵的编码解压缩存储在任何上述存储场所,例如高速缓存或主存储器设备中的数据集合,如将在后面详细描述的。
在图6中,我们重新访问通信系统的示例性组织,该通信系统包括两个计算机化系统,具有通过根据图2的通信链路230通信的能力。通信设备620和640已经扩展为具有熵采样器(621和641)、熵压缩器(622和 642)以及熵解压缩器(623和643)。本领域技术人员可以理解如先前在图 2的环境中解释的可替代实施方式。与图5中的实施方式类似,熵采样器(分别为621和641)的目的是实现图16的采样器1610,即建立数据缓冲器(分别为610和650)中的符号的出现频率,如将在后面详细描述的。熵压缩器 (分别为622和642)的目的是实现图16的压缩器1630,即基于熵编码压缩数据缓冲器(分别为610和650)中的数据集合,如将在后面详细描述的。基于熵的编码可以由熵编码器建立,其将实现图16中的编码器1620,但是其然而在图6中未示出。因此,熵采样器621/641、熵编码器和熵压缩器 622/642可以联合实现图16中的数据压缩设备1600。
熵解压缩器(分别为623和643)的目的是实现图18中的解压缩器1820 (或整个数据解压缩设备1800),即使用基于熵的编码解压缩存储在数据缓冲器(分别为610和650)中的数据集合,如稍后将详细描述的。
参考图7-14,现在将描述本创新的数据压缩和解压缩方法和设备的不同部分和阶段的详细示例性实施方式。
现在让我们描述如在图5的环境中由熵采样器实现的采样器1610的工作。回想一下,采样器的目的是建立存储器或高速缓存区域中的固定大小的符号的频率。为了说明起见,假设符号是比如存储在计算机存储器中的区域中的32位值,比如,在图5的任何存储器模块M1至MK中,或者可替代地,在一个或多个高速缓冲存储器层中,比如C3,采样器将访问所述区域的所有32位值以计算它们的出现频率,以便建立所有符号的绝对频率。为此目的,图7示出了值-频率表700(缩写为VFT)。VFT被组织为具有一个或多个条目的普通高速缓存(例如721a和721b)。与包括标记存储和值存储的普通高速缓存不同,VFT包括标记存储722和计数器存储723,并且标记存储由符号(或其值)索引。与普通高速缓存一样,VFT可以采用多个地址映射策略,诸如直接映射,组关联或完全关联。如本领域技术人员可以理解的,VFT还可以考虑多个替换策略,诸如LRU(最近最少使用), LFU(最不常使用)或来自现有技术的其他已知策略。VFT的操作如下。对于所考虑的存储器区域中的每个固定大小的符号,使用对应于该符号的值710索引VFT进行VFT查找。在VFT查找中,并且取决于所采用的地址映射机制,考虑一个或数个条目,并将值与所选条目的标记进行匹配。在标记匹配时,称为命中,相应的计数器递增,除非其已达到其最大数量。如果没有标记匹配,称为未命中,则插入新符号并将相应的计数器设置为1。为了插入新符号,人们可能必须逐出另一个符号。被选择以逐出的符号可以基于如早前所述的现有技术中的任何已知替换策略来决定。重复计数存储器区域中所有符号的频率的过程,直到遇到所有符号。注意图7的VFT 假设在设计时确定固定大小的符号。稍后我们将描述具有VFT被扩展以处理可变大小的符号的采样器。
如前段中所解释的,在采样过程中建立的符号频率可以由基于熵的数据压缩方法使用以确定符号代码,根据香农的源编码理论其长度最佳。作为实例,我们接下来考虑规范的霍夫曼方法来说明这一点。假设八个固定大小的符号“A”、“B”、“C”、“D”、“E”、“F”、“G”和“H”分别具有概率(即频率/符号的数量)0.05、0.05、0.05、0.1、0.15、0.15、0.2、0.25,霍夫曼算法可以生成与这些值相关联的码字长度:分别为4、4、4、4、3、 3、2和2。代码构造算法将从最频繁的一个开始,从实例中的右侧以及到左侧。因此,示例性符号“H”将被分配给规范码字“00”,其数值为0,由2位表示,因为其码字长度是2。然后将符号“G”分配给“01”。符号“F”将被3位的码字代替。由于最后分配的码字值是“01”到符号“G”,因此符号“F”将被分配给下一个数值,即码字“10”向左移位一位成“100”,以便用3位表示,如代码长度所确定的。以类似的方式,构造用于上述值的规范霍夫曼码字,并分别为“1111”、“1110”、“1101”、“1100”、“101”、“100”、“01”、“00”。虽然这是生成规范霍夫曼码字的一种方式,但是如本领域技术人员将理解的,存在生成规范霍夫曼码字的可替代方式,取决于代码生成算法开始的码字长度。注意,如人们概述的过程假设所有符号都具有固定大小,并且不能处理可变大小的符号。
我们现在描述熵采样器800的工作(实现图16中的采样器1610作为其一个可能的实施方式),其捕获可变大小符号的值频率,如图8所示。为了说明,我们假设基于连续位置的存储器区域中的数据集合来执行采样,其中每个位置可以存储单个字节。采样器800包括多个并行采样器单元 812-852。每个采样器单元被配置为建立上述多个不同符号大小S1-Sn中的相应一个的符号的出现的相对频率。在不失通用性的情况下,并且为了便于解释,我们示例性地假设符号可以采用五种不同符号大小S1-S5中的一种:4字节、8字节、16字节、32字节和64字节。图8的示例性可变大小符号采样器800因此包括五个并行的采样器单元812-852,其具有根据图7 的组织,其中每个被配置为对相应固定符号大小的符号的出现频率进行计数。因此,图8的采样器800包括五个采样器单元812-852,它们还表示为 VFT4、VFT8、VFT16、VFT32和VFT64,分别对应于大小为4字节、8字节、 16字节、32字节和64字节的符号。确定可变大小符号的出现频率的过程开始于将来自所选存储器区域的64字节数据块复制到所有缓冲器811、821、831、841和851中。返回参考图7的VFT并且假设,在不失通用性的情况下,完全关联的VFT组织,VFT64的标记存储用于匹配64字节符号,而 VFT4的标记存储用于匹配4字节符号。因此,尽管在VFT64的情况下仅需要单次匹配操作,但在VFT4的情况下需要多达16次匹配操作。评估64字节存储器块的过程涉及VFT4中的16次匹配操作,VFT8中的8次匹配操作, VFT16中的4次匹配操作,VFT32中的两次匹配操作和VFT64中的一次匹配操作。对整个选定的存储器区域重复该过程。为了进一步处理VFT的内容,为了确定编码,可以对VFT中的计数器进行存储器映射,以便可以通过软件例程检查它们的内容。在可替代实施方式中,硬件加速器可以被配置为处理计数器的内容以便建立基于熵的编码。
在采样过程中建立的符号频率可以由基于熵的数据压缩方法使用以生成代码。作为实例,我们接下来考虑规范的霍夫曼方法来说明这一点。假设四个符号“GHIJKLMN”、“CDEF”、“BC”和“A”分别以0.15、0.15、 0.2、0.25的概率(即符号的数量/频率)出现,则规范的霍夫曼算法将生成与以下这些值相关联的码字的长度:分别为3、3、2和2。然而,现有技术中基于熵的编码方法假设所有符号具有相同大小。与如果考虑可变大小的符号相比,这可以产生基本上更低的压缩率。如实例,最长符号即“GHIJKLMN”的编码对压缩率的影响要高于最短符号即“A”的编码。所公开发明的一个实施方式首先按升序对符号进行排序,基于被定义为符号出现的概率和符号权重的乘积产生的移除的槽位的度量,其中符号权重被定义为符号的大小除以符号的最大值大小。在该实例中,前述示例性符号列表的移除的槽位的度量是0.15x8/8、0.15x4/8、0.2x2/8、0.25x1/8,分别引导至0.15、0.075、0.05和0.03。因此,与假设所有符号具有相同大小的现有技术的基于熵的编码方案相比,在实例中代码到符号的分配将被反转。
上述以上过程假设一个大小的符号不包括在另一个较大大小的符号中。为了考虑包括,建议上述过程首先移除包括在较大大小的第二符号中的一个大小的第一符号,以计算第一符号的出现的度量。在该过程中,调整第一符号的符号频率以考虑在较大大小的第二符号中其的出现的次数。配置成实现该过程的示例性系统和完成这种过程的结果的示例性逻辑在图9中描述。
图9示出了系统9100,被配置为将可变大小的符号作为输入,称为“原始符号”-表示为OSym,示例性地存储在存储器9110中,每个包括它们的大小的属性,表示为“S”,以及出现的概率,表示为“P”,在上述采样过程中确定。示例性系统9100被配置为生成“结果符号”-表示为Rsym的存储器的内容,示例性地存储在存储器9160中,其中每个条目包括“移除的槽位”-表示为RS的属性,如上面详细定义的。如下面将详细描述的,示例性系统9100另外包括状态机9150,其可以分析存储器9110中的每个条目,该存储器包括OSym的,以将其对应的RS输出到存储器9160。状态机9150可以被配置为访问存储器9110和9160中的任何条目。具体地,其可以将存储器9110中的条目的内容移动到寄存器9120或寄存器9140,表示为符号R1,通过包括访问存储器9110的相关信号,例如图9中的读取信号R,其包括存储器9110的地址和前述寄存器9120或9140中的任何一个的引用。此外,并且其在随后的描述中将变得明显,状态机9150还可以将寄存器9140的内容移位与所检查的符号的该寄存器的大小“S”相对应的量,如上面具体所述。最后,示例性系统9100包括比较器9130,其将存储在寄存器R1 9120中的符号和由状态机9150提供的由大小属性“S”指示的部分作为输入。比较的结果由表示为“M”用于匹配的信号反映。例如,如果匹配,则设置“M”。相反,如果不匹配,则清除“M”。
假设示例性系统9100,让我们将我们的注意力转向由状态机9150实现的过程的示例性逻辑。该逻辑在过程图9200中描述。第一步是按照大小(表示为“S”)的顺序对存储器9110中的原始符号(表示为OSym)进行排序,在该实例性实施方式中,在顶部对应于条目N=1处出现最大大小的符号。本领域技术人员可以认识到如何配置系统以完成这样的任务。出于下面要解释的原因,逻辑还可以考虑在条目Pos处的其他符号,最初设置为Pos=1。在处理流程之后,状态机9150分别将条目Pos和N中出现的符号移动到寄存器R1和R2。然后,状态机9150的比较器9130比较寄存器R1和R2的内容,基于与寄存器R2相关联的大小属性并且如由系统9100的信号“S”指示的那样。如果存在匹配,考虑到当前从寄存器R1中可用的符号的概率“P”,调整寄存器R2中当前可用的符号的概率“P”。该操作由表示为“为 OSym(N)调整P”的框表示。如果没有匹配,即“M”被清除,则跳过该操作。无论结果如何,下一步是将R2的内容移位通过对应于存储在R2中的符号的大小“S”的量。
在示例性系统9100中,比较的目的在于确定一个大小S1的第一符号的部分与另一个较小的大小S2的第二符号之间是否存在匹配。执行该比较的示例性过程将使第二符号与第一符号的与第二符号的大小匹配的所有部分进行匹配。为此,状态机9150可以移位R2中的大小S2的符号的内容以匹配R1中的大小S1的符号的所有部分。这是通过将R2的内容移位由状态机9150输出的“S”指示的量来实现的,并在9200中表示为“移位R2”的框中执行。然后,决定框“完成”可以决定寄存器9120的所有部分是否已经匹配,表示为“是”,或者如果必须比较附加部分,表示为“否”。如果结果是后者,进行R1和R2之间的新的比较,直到已经比较了所有部分。
当已经比较R1的所有部分时,将寄存器R2 9140的内容与下一个较大的符号进行比较,如表示为“完成”的决定框中的“是”之后的流程所表示的。这由逻辑变量“Pos”关联的条目定义,最初设置为1。如在表示为“完成”的决定框中的“是”箭头之后的流程中所示,Pos递减。决定框“Pos=0”确定存储在寄存器9140中的当前符号是否已经与寄存器R1 9120的所有部分进行比较。如果是,表示为“是”,将符号及其调整后的“移除的槽位” (表示为RS)输出到存储器9160。然后,决定框“N=M?”确定是否已经检查了存储器9160中的所有符号。如果是,表示为“是”,该过程终止。如果不是,表示为“否”,该过程以框“N=N+1;Pos=N-1”继续,目的在于考虑存储器9110中的条目N处的下一个符号,并且以将其与存储在存储器9110中的位置Pos=N-1的下一个较大大小的符号进行比较开始。
本领域技术人员可以认识到,系统9100和控制该系统的逻辑9200也可以由普通计算机实现,该计算机被程序配置以执行过程9200所例示的过程,该过程配置所述计算机中的存储器和寄存器以实现执行过程9200所需要的系统9100。本领域技术人员所理解的其他实施方式可以考虑一些部件以硬件实现来获得效率,而一些部件以软件实现,借助于可能对执行任务的效率不是关键的程序。
图9的示例性系统和过程可以建立可变大小符号的编码,即实现图16 中的编码器1620,作为其一个可能的实施方式。如上面所解释的,编码器 1620因此被配置为补偿被包括在较大符号大小Sy的第二符号中的较小符号大小Sx的第一符号,其中Sx<Sy,使得在为较大符号大小建立的相对频率中考虑所述第一符号的出现,而为较小符号大小建立的相对频率中不考虑。
一旦已经建立编码,我们现在将我们的注意力转向熵压缩器的工作,首先假设人们处理固定大小的符号。图10描绘了用于固定大小符号的示例性霍夫曼压缩机制的实施方式1000。示例性压缩器1000包括值表(VT) 1020。VT1020保存待压缩的符号的值1022以及使用计数器1024保存它们出现的频率。压缩器1000还包括代码表(CT)1030,其存储构成上述代码1625的所生成的码字。实际上,VT是压缩机制1000的部分,因为VT1020 和CT1030两者都使用地址关联机制1010索引,其将对应于符号的输入值与码字匹配,并且VT1020验证存在于值表中的特定符号,并且因此,代码表中存在有效的码字。压缩机制1010中的关联功能可以实现为哈希函数,但是本领域技术人员可以考虑可替代实现。
我们现在使用前一段中描述的示例性压缩机制来描述熵压缩机制的工作,在不丧失通用性的情况下,以基于霍夫曼的压缩器为例,其可以操作可变大小的符号。图11中示出了这种熵压缩器的一个实施方式。示例性压缩器1100,其实现图16中的压缩器1630,作为其一个可能的实施方式,包括多个霍夫曼压缩器单元1111-1115,每个通常被设计为图10中的压缩器1000。通常,压缩器1100包括多个并行压缩器单元1111-1115,适于从前述数据集合1510接收公共数据块1111a-1115a。每个压缩器单元1111-1115 被配置为在所述公共数据块中识别所述多个不同符号大小S1-Sn中的相应一个的匹配符号。压缩器1100被配置为输出与由压缩器单元1111-1115识别的匹配符号中的具有最大符号大小的符号对应的码字。
在图11中所公开的实施方式中,考虑五个符号大小:4字节、8字节、 16字节、32字节和64字节,并且相应地具有五个压缩器单元,分别表示为HuC4 1115、HuC8 1114、HuC161113、HuC32 1112和HuC64 1111。存在与每个压缩器单元1111-1115相关联的64字节寄存器1111a、1112a、...、1115a。压缩64字节数据块的过程开始于将公共数据块加载到馈送至压缩器单元的所有五个64字节寄存器中。从概念上讲,并且如稍后将详细描述的,压缩 64字节块的整个过程总是考虑可变大小符号,以最大符号开始,以及然后如果没有找到较大大小符号的匹配则考虑较小符号。不同大小的符号的比较是并行进行的。为此,每个压缩器单元输出表示匹配的信号和码字。所有匹配信号构成输入到5至3优先级编码器1120,其输出在其检测到匹配的最高编码级别。例如,假设在级别0(HuC4)和级别2(HuC16)处存在匹配,优先级编码器1120将输出对应于级别2的010。匹配级别的码字被馈送到多个三态缓冲器1140中;在示例性压缩器中有五个。在任何级别的匹配上,3-5多路分解器分离器,其输入是编码级别,将激活相应的三态缓冲器以输出该级别的码字。在匹配时,相应的码字以及元数据也被馈送到寄存器1150,该寄存器包括三个部分:有效(V)位1151、级别1152和码字1153,其中有效位1151和级别1152构成元数据MD,如在图15-18的上面描述中所提到的那样。V位指定随后的信息是压缩符号。级别指定(未压缩)符号的大小,并且码字是根据选择的基于熵的数据压缩方法的压缩符号。如果没有匹配,清除有效位。这意味着在任何级别处都没有匹配,因此输出未压缩的最小大小的符号,并且级别信息不相关。在无法压缩64 字节数据块中的所有4字节符号的情况下,人们可以将整个块编码为未在 64字节级别压缩,作为优化。本领域技术人员可以理解如何可以扩展可变大小符号压缩器的工作以结合这种和其他优化。
到目前为止,我们已经对在每个级别处理符号匹配或不匹配的方法进行了全面描述。示例性状态机1160被配置为控制压缩过程,并且其工作的基础过程在图12中描述的流程图中描述。再次参考图11,状态机将标记在任何级别是否存在匹配的有效信号和匹配级别的编码作为输入。状态机输出包括一组移位信号(移位),其可以控制作为五个压缩器的输入连接的五个输入寄存器中的每个,该压缩器包括:HuC4 1115、HuC8 1114、HuC16 1113、HuC32 1112和HuC64 1111。例如,在级别0处且连接到HuC4的输入寄存器可以移位4字节,而级别3处的输入寄存器可以移位32字节。最后,状态机还可以通过屏蔽高于预设值的级别来控制应该测试哪些级别以匹配。例如,如果设置最大级别设置为3,仅考虑与级别0、1、2和3相关联的压缩器以匹配。
现在让我们将我们的注意力转向图12的示例性流程图1200。该过程开始于将级别设置为MAXL,测试的最大级别,其在图11的示例性压缩器中为5。在决定框1211中,状态机输出设置最大级别=5,其使得能够进行包括所有压缩器的测试。如果在任何级别存在匹配,选择最大级别ML(L=ML 1212)并输出码字(CODEW 1214)。另一方面,如果在任何级别都没有匹配,将级别设置为最小的一个(L=MINL 1213)并输出相应的(未压缩的) 符号(CODEW1214)。接下来,在匹配或更低的级别的输入寄存器,并且在限制MINL内,移位与出现匹配的级别相对应的量,或者如果没有出现匹配,移位MINL。决定框1216决定是否已经测试了64字节块中的所有符号,在这种情况下,该过程终止。如果不是,根据上述过程在预设级别(1218) 及以下执行新测试,生成码字(1219),并且移位输入寄存器(1220)。例如,如果匹配出现在当前级别,输出该级别的代码。另一方面,如果没有出现匹配,级别将保持在MINL并输出未压缩的符号。再次,决定框1221 决定是否已经测试了64字节块中的所有符号,在这种情况下,该过程终止。如果不是,在决定框1211中执行新的匹配操作之前,将级别加倍1223并且将输入寄存器移位加倍量1224。因此,压缩器1630;1100被配置为将给定大小的符号作为输入,并将该符号解释为一半给定大小的符号多达两倍和四分之一给定大小的符号的多达四倍等,并且将符号的所有组合与所考虑的所有大小的编码符号进行比较。加倍源于选择示例性符号大小以遵循二次幂级数的事实。如果遵循另一个幂级数,本领域技术人员应该认识到如何使上述过程适用于该幂级数或符号大小的其他级数。
我们现在考虑解压缩基于熵的编码符号的过程,通过首先由示例性规范霍夫曼解压缩器引入固定大小符号解压缩的工作,通过示例性规范霍夫曼解压缩器,并且然后将其扩展以处理可变大小符号。图13示出了示例性固定大小符号的规范霍夫曼解压缩器的工作。如图13中所描绘的,在解压缩机制1300的实施方式中,如图13所描述的,解压缩在桶形移位器1310 处开始,其宽度为至少d位(最大码字长度),并输入压缩块。压缩块也可以保持在缓冲器中,以基于移位量向桶形移位器提供位序列。然后,将所有可能的编码序列与相应的比较器1320a、1320b和1320c中的第一码字 (FCW)进行比较,以便检测有效码字。以这种方式,比较器1320a比较1 位,比较器1320b两位,以及比较器1320c三位等。由于可能不为特定长度生成码字,因此有效位被使用并被发送到比较器1320(1320a、1320b、 1320c等)以取消比较,当不存在针对特定长度的码字时,但是本领域技术人员可以认识到其他替代方案。另外,根据数字序列属性,人们可以假设有效码字在数值上将大于较小长度的码字的任何数值。因此,检测到的最大码字是唯一有效码字,这就是使用优先级编码器1330的原因。
当已经匹配有效码字时,开始第二操作(值检索(retrieval,恢复、取得、取回))。匹配的码字的长度用于访问DIT1350以获得适当的“偏移”,而匹配码字的位由桶形移位器1310提供并在单元1340中连结。通过从匹配的码字中减去“偏移”找到De-LUT1370的索引,并且采用与需要一样多的最低有效位来访问De-LUT1370。在可替代实施方式中,其中偏移是正的,其将被添加而不是被减去。
现在让我们通过如图14所示的熵可变大小符号的示例性解压缩器1400 的示例性实施方式来考虑解压缩可变大小符号的过程。作为一个可能的实施方式,解压缩器1400实现图18中的解压缩器1800。已经关于图11的示例性熵可变大小符号压缩器连同图12的压缩过程的前述描述,描述了假设的压缩格式1410,并且包括三个字段:有效位1411、级别1412和码字1413。示例性解压缩器假设五个符号大小:4字节、8字节、16字节、32字节和 64字节。如果遇到压缩符号,则该级别指定符号的大小,并且将该符号将馈送到五个解压缩器单元中指定的一个,该五个解压缩器单元表示为HuD4 1431e、HuD81431d、HuD161431c、HuD321431b和HuD641431a,其中HuDi解压缩大小i字节的符号。根据图12的示例性实施方式,这些解压缩器单元内的值表的内容可以在编码过程期间建立并在解压缩过程开始之前加载到所述值表中。由3-5多路分离器1420通过启用信号EN1 1421e、EN2 1421d、...、EN5 1421a选择相应的解压缩器单元。例如,EN3 1421c启用 HuD161431c。同样地,由于所有解压缩器单元并行工作,尽管每次只需要激活一个以节省功率,但是可以可选地使用一组五个三态缓冲器1440来从五个解压缩符号中选择一个符号1451。从解压缩过程检索的代码长度信息可用于选择待解压缩的下一个符号的位置(长度1450)。可替代地,如果符号未被压缩,检索未压缩的4字节字,并且可以确定下一个可能压缩的符号的位置。
以上参考几个实施方式主要描述了本发明。然而,如本领域技术人员容易理解的,除了上面公开的实施方式之外的其他实施方式同样可以在由所附专利权利要求限定的本发明的范围内。
另外,回想一下,本发明大体上涉及可变大小符号基于熵的压缩,并且包括对存储在存储器中的数据集合的采样、编码、压缩和解压缩。一个可替代的创新的方面是基于计算机的设备,在存储器中存储包括可变大小符号的数据集合,提供用于对所述数据集合进行采样、编码、压缩和解压缩的装置。该可替代的创新的方面包括用于采样的装置,即,建立所述可变大小符号的相对频率。此外,该可替代的创新的方面包括装置,以编码所述可变长度符号,相对于可变大小符号的代码长度,该可变大小符号涉及从符号构建的编码数据集合的结果大小。该可替代的创新的方面此外包括将所述可变大小符号压缩为包括如何解压缩所述数据集合的信息的格式的装置。最后,该可替代的创新的方面包括如何使用所公开的原理,解压缩由基于熵的压缩方法压缩的数据集合,以处理可变大小的符号,以恢复使用所公开的方法编码和压缩的包括可变大小符号的数据集合的原始未压缩数据的装置。
另一可替代的创新的方面是一种使用可变大小的符号对存储在存储器 (例如,数据缓冲器、计算机存储器、计算机高速缓冲存储器或辅助存储器)中的数据集合进行采样、编码、压缩和解压缩的方法。该可替代的创新的方面包括采样的步骤,即,如何建立所述可变大小符号的相对频率。此外,该可替代的创新的方面包括相对于可变大小符号的代码长度编码所述可变大小符号的步骤,该代码长度涉及存储在存储器中从可变大小符号构建的编码数据集合的结果大小。该可替代的创新的方面此外包括将存储在存储器中的所述可变大小符号压缩为包括如何解压缩所述数据集合的信息的格式的步骤。最后,该可替代的创新的方面此外包括如何解压缩原始包括可变大小符号并使用所公开的原理通过基于熵的压缩而压缩的数据集合,以恢复原始未压缩的数据。
又另一个可替代的创新方面是一种在计算机存储器上运行的系统,该计算机存储器存储包括可变大小的符号的数据集合,被配置为采样、编码、压缩和解压缩所述数据集合。所述系统被配置为对存储器中的符号进行采样以建立所述可变大小符号的相对频率。此外,所述系统被配置为相对于可变大小符号的代码长度进行编码,所述该可变大小符号的代码长度涉及从符号构建的编码数据集合的结果大小。所述系统此外被配置为将所述可变大小符号压缩为包括如何解压缩所述数据集合的信息的格式。最后,所述系统被配置为使用所公开的原理,解压缩由基于熵的压缩所压缩的数据集合,以恢复使用所公开的方法编码和压缩的包括可变大小符号的数据集合的原始未压缩数据。
还另一个可替代的创新的方面是控制计算机存储器的设备,该存储器存储在存储器中存储的包括可变大小符号的数据集合,包括:
-采样器,被配置为建立所述符号的频率;
-编码器,被配置为生成用于所述符号的基于熵的代码;
-压缩器,其基于用于所述数据集合的所述代码,被配置为生成压缩代码和用于对其进行解压缩的指令;以及
-解压缩器,其基于所述指令,被配置为将所述数据集合解压缩为原始未压缩格式。
又一可替代的创新的方面是控制计算机存储器的设备,该存储器存储在存储器中存储的包括可变大小符号的数据集合,包括:
-采样器,被配置为建立所述符号的频率;
-编码器,被配置为生成用于所述符号的基于熵的代码;
-压缩器,其基于用于所述数据集合的所述代码,被配置为生成压缩代码和用于对其进行解压缩的指令;以及
-解压缩器,其基于所述指令,被配置为将所述数据集合解压缩为原始未压缩格式。
Claims (21)
1.一种数据压缩方法,包括:
获取(1510)数据集合(1605);
采样(1520)所述数据集合,以为多个不同符号大小(S1-Sn),建立所述数据集合中相应大小的符号(1606)的出现的相对频率(1615);
通过基于反映采样符号的相对频率(1615)以及它们的大小的度量(1616)对所述数据集合中的所述采样符号进行熵编码,生成(1530)包括可变长度码字的代码(1625);以及
使用所生成的代码将所述数据集合中的符号压缩(1540)为压缩表示,其中符号(SY)的所述压缩表示(1635)包括表示所述符号的码字(CW)以及用于解压缩所述压缩表示的元数据(MD)。
2.根据权利要求1所述的压缩方法,其中,用于生成所述代码(1625)的所述度量(1616)计算为符号出现的概率×符号权重,其中,
符号出现的概率=符号的相对频率/不同符号的数量,以及
符号权重=符号的大小/最大符号大小。
3.根据权利要求1或2所述的数据压缩方法,其中,所述元数据(MD)包括第一部分(1151),以指示符号(SY)的所述压缩表示(1635)包括所述码字(CW),以及第二部分(1152)以指示由所述码字(CW)表示的符号(SY)的大小。
4.根据权利要求1所述的数据压缩方法,
其中,获得(1510)所述数据集合(1605)涉及从计算机存储器读取(1505)所述数据集合;以及
其中,所述方法还涉及将所述压缩表示(1635)存储(1545)在计算机存储器中。
5.一种数据压缩设备(1600),包括:
采样器(1610),被配置为采样数据集合(1605),以为多个不同符号大小,建立所述数据集合中相应大小的符号的出现的相对频率;
编码器(1620),被配置为通过基于反映采样符号的相对频率以及它们的大小的度量(1616)对所述采样符号进行熵编码,生成包括可变长度码字的代码(1625);以及
压缩器(1630),被配置为使用所生成的代码将所述数据集合中的符号压缩为压缩表示,其中符号(SY)的所述压缩表示(1635)包括表示所述符号的码字(CW)以及用于解压缩所述压缩表示的元数据(MD)。
6.根据权利要求5所述的数据压缩设备(1600),其中,所述编码器(1620)被配置为将用于生成所述代码(1625)的所述度量(1616)计算为符号出现的概率×符号权重,其中
符号出现的概率=符号的相对频率/不同符号的数量,以及
符号权重=符号的大小/最大符号大小。
7.根据权利要求5或6所述的数据压缩设备(1600),其中,所述压缩器(1630)被配置为生成所述元数据(MD),使得其包括第一部分(1151)以指示符号(SY)的所述压缩表示(1635)包括所述码字(CW),以及第二部分(1152)以指示由所述码字(CW)表示的所述符号(SY)的大小。
8.根据权利要求5所述的数据压缩设备(1600),其中,所述采样器(1610)包括多个并行采样器单元(812-852),并且其中每个采样器单元被配置为建立所述多个不同符号大小(S1-Sn)中的相应一个的符号的出现的所述相对频率。
9.根据权利要求5所述的数据压缩设备(1600),其中,所述编码器(1620)被配置为补偿包括在较大符号大小的第二符号中的较小符号大小的第一符号,使得在针对较大符号大小建立的相对频率中考虑所述第一符号的出现,而不是针对较小符号大小建立的相对频率中。
10.根据权利要求5所述的数据压缩设备(1600),其中,所述压缩器(1630)包括多个并行压缩器单元(1111-1115),适于接收来自所述数据集合的公共数据块(1111a-1115a),其中每个压缩器单元被配置为在所述公共数据块中识别所述多个不同符号大小(S1-Sn)中的相应一个的匹配符号,并且其中所述压缩器(1630)被配置为输出与由所述压缩器单元(1111-1115)识别的匹配符号中的具有最大符号大小的符号相对应的码字。
11.根据权利要求5所述的数据压缩设备(1600),其中,所述压缩器(1630)被配置为将给定大小的符号作为输入,并将所述符号解释为一半给定大小的符号的多达两倍和四分之一给定大小的符号的多达四倍,并且将符号的所有组合与所考虑的所有大小的编码符号进行比较。
12.一种数据解压缩方法,包括:
获得(1710)包括可变大小符号(1832)的压缩表示的压缩块(1810);
检索(1720)包括在所述压缩块中的压缩表示(1805);
检索(1730)包括在所述压缩表示(1805)中的元数据(MD);
检索(1740)包括在所述压缩表示(1805)中的码字(CW);以及
使用检索的元数据和包括可变长度、熵编码的码字的代码(1824)将所述检索的码字(CW)解压缩为具有多个不同符号大小(S1-Sn)中的一个的符号(SY)中,所述码字的所述熵编码基于反映符号的出现的相对频率以及它们的大小的度量。
13.根据权利要求12所述的数据解压缩方法,其中,所述检索的元数据(MD)包括第一部分(1151),指示符号(SY)的检索的压缩表示(1805)包括所述码字(CW),以及第二部分(1152)以指示由所述码字(CW)表示的所述符号(SY)的大小。
14.根据权利要求12或13所述的数据解压缩方法,
其中,获得(1710)所述压缩块(1810)涉及从计算机存储器读取(1705)所述压缩块;以及
其中,所述方法还涉及将解压缩符号(SY)存储(1755)在计算机存储器中。
15.一种数据解压缩设备(1800),包括解压缩器(1820),
所述解压缩器被配置为获得包括可变大小符号(1832)的压缩表示的压缩块(1810);
所述解压缩器被配置为检索所述压缩块中的压缩表示(1805);
所述解压缩器被配置为检索(1720)包括在所述压缩表示(1805)中的元数据;
所述解压缩器被配置为检索(1730)包括在所述压缩表示(1805)中的码字(CW);以及
所述解压缩器被配置为使用检索的元数据和包括可变长度、熵编码的码字的代码(1824)将所述检索的码字(CW)解压缩到具有多个不同符号大小(S1-Sn)中的一个的符号(SY)中,所述码字的所述熵编码基于反映符号的出现的相对频率(1828)以及它们的大小的度量(1826)。
16.根据权利要求15所述的数据解压缩设备,其中,检索的元数据(MD)包括第一部分(1151),指示符号(SY)的检索的压缩表示(1805)包括所述码字(CW),以及第二部分(1152)以指示由所述码字(CW)表示的所述符号(SY)的大小。
17.一种数据压缩和解压缩系统(1900),包括一个或多个存储器(1910),根据权利要求5-11中任一项所述的数据压缩设备(1600)和根据权利要求15-16中任一项所述的数据解压缩设备(1800)。
18.根据权利要求17所述的数据压缩和解压缩系统(1900),其中,所述系统是计算机系统(500),并且其中所述一个或多个存储器(1910)来自包括以下的组:
高速缓冲存储器(C1-C3),
随机存取存储器(M1-Mk),以及
辅助存储装置。
19.根据权利要求17所述的数据压缩和解压缩系统(1900),其中,所述系统是数据通信系统(600),并且其中所述一个或多个存储器(1910)是数据缓冲器(610,650)。
20.一种计算机可读介质,包括代码指令,当由处理设备加载和执行时,所述代码指令使得执行根据权利要求1-4中任一项所述的方法。
21.一种计算机可读介质,包括代码指令,当由处理设备加载和执行时,所述代码指令使得执行根据权利要求12-14中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE1650426-8 | 2016-03-31 | ||
SE1650426A SE542507C2 (en) | 2016-03-31 | 2016-03-31 | Variable-sized symbol entropy-based data compression |
PCT/SE2017/050265 WO2017171611A1 (en) | 2016-03-31 | 2017-03-20 | Variable-sized symbol entropy-based data compression |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109075798A CN109075798A (zh) | 2018-12-21 |
CN109075798B true CN109075798B (zh) | 2022-12-23 |
Family
ID=59966198
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780024207.4A Active CN109075798B (zh) | 2016-03-31 | 2017-03-20 | 可变大小符号基于熵的数据压缩 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10862507B2 (zh) |
CN (1) | CN109075798B (zh) |
SE (1) | SE542507C2 (zh) |
WO (1) | WO2017171611A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111384968B (zh) * | 2018-12-28 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 数据压缩解压装置和数据解压方法 |
CN112181919A (zh) * | 2019-07-05 | 2021-01-05 | 深信服科技股份有限公司 | 一种压缩方法、系统及电子设备和存储介质 |
US11226740B2 (en) * | 2019-10-30 | 2022-01-18 | EMC IP Holding Company LLC | Selectively performing inline compression based on data entropy |
US11095311B2 (en) * | 2019-11-27 | 2021-08-17 | Qualcomm Incorporated | Quantization codeword selection for low cost parity checking |
CN112527752B (zh) * | 2020-12-08 | 2024-04-05 | 北京地平线信息技术有限公司 | 数据压缩方法、装置、计算机可读存储介质及电子设备 |
CN114614829A (zh) * | 2020-12-09 | 2022-06-10 | 千寻位置网络有限公司 | 卫星数据帧的处理方法、装置、电子设备和可读存储介质 |
CN114915295B (zh) * | 2022-05-09 | 2024-06-11 | 重庆邮电大学 | 一种特定条件下超越熵极限的符号编码方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6404931B1 (en) * | 1998-12-14 | 2002-06-11 | Microsoft Corporation | Code book construction for variable to variable length entropy encoding |
KR20120084180A (ko) * | 2011-01-19 | 2012-07-27 | 삼성전자주식회사 | 데이터 압축 장치, 이의 동작 방법, 및 이를 포함하는 데이터 처리 장치 |
US20160254824A1 (en) * | 2013-11-26 | 2016-09-01 | Longsand Limited | Determining compression techniques to apply to documents |
US9385751B2 (en) * | 2014-10-07 | 2016-07-05 | Protein Metrics Inc. | Enhanced data compression for sparse multidimensional ordered series data |
US10770983B2 (en) * | 2018-12-06 | 2020-09-08 | Infineon Technologies Austria Ag | Circuits and methods for secondary-side rectified voltage sensing in isolated switched-mode power converters |
-
2016
- 2016-03-31 SE SE1650426A patent/SE542507C2/en unknown
-
2017
- 2017-03-20 WO PCT/SE2017/050265 patent/WO2017171611A1/en active Application Filing
- 2017-03-20 US US16/087,630 patent/US10862507B2/en active Active
- 2017-03-20 CN CN201780024207.4A patent/CN109075798B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
SE1650426A1 (en) | 2017-10-01 |
WO2017171611A1 (en) | 2017-10-05 |
SE542507C2 (en) | 2020-05-26 |
CN109075798A (zh) | 2018-12-21 |
US10862507B2 (en) | 2020-12-08 |
US20200304146A1 (en) | 2020-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109075798B (zh) | 可变大小符号基于熵的数据压缩 | |
US10819369B2 (en) | Methods, devices and systems for hybrid data compression and decompression | |
US10268380B2 (en) | Methods, devices and systems for semantic-value data compression and decompression | |
US10846218B2 (en) | Methods, devices and systems for compressing and decompressing data | |
US10187081B1 (en) | Dictionary preload for data compression | |
US9172771B1 (en) | System and methods for compressing data based on data link characteristics | |
US20060106870A1 (en) | Data compression using a nested hierarchy of fixed phrase length dictionaries | |
CN108702160B (zh) | 用于压缩和解压缩数据的方法、设备和系统 | |
EP3295568B1 (en) | Improved compressed caching in a virtual memory system | |
US20190379393A1 (en) | Dynamic dictionary-based data symbol encoding | |
US20240028510A1 (en) | Systems, methods and devices for exploiting value similarity in computer memories |
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 |