CN113228653B - 用于高效压缩和解压缩以获得更高吞吐量的方法、设备和系统 - Google Patents
用于高效压缩和解压缩以获得更高吞吐量的方法、设备和系统 Download PDFInfo
- Publication number
- CN113228653B CN113228653B CN201980084811.5A CN201980084811A CN113228653B CN 113228653 B CN113228653 B CN 113228653B CN 201980084811 A CN201980084811 A CN 201980084811A CN 113228653 B CN113228653 B CN 113228653B
- Authority
- CN
- China
- Prior art keywords
- compressed data
- decompression
- compressed
- data block
- compression
- 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
- 230000006837 decompression Effects 0.000 title claims abstract description 195
- 238000007906 compression Methods 0.000 title claims description 121
- 230000006835 compression Effects 0.000 title claims description 121
- 238000000034 method Methods 0.000 title claims description 43
- 238000011084 recovery Methods 0.000 claims description 21
- 238000001514 detection method Methods 0.000 claims description 18
- 238000012856 packing Methods 0.000 description 18
- 238000013144 data compression Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 239000000872 buffer Substances 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000009977 dual effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000001934 delay Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 101001056180 Homo sapiens Induced myeloid leukemia cell differentiation protein Mcl-1 Proteins 0.000 description 2
- 102100026539 Induced myeloid leukemia cell differentiation protein Mcl-1 Human genes 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003362 replicative effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000037351 starvation 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/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/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- 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/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
-
- 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/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
-
- 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/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6023—Parallelization
-
- 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/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6029—Pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
提出了一种用于对包括多个压缩数据值的压缩数据块进行解压缩的解压缩系统(800;1100;1300)。解压缩系统具有呈阵列或链式布局(820a至820m‑1;1120a至1120m‑1;1320a至1320m‑1)的多个解压缩设备(700;1200A至1200B),其用于对压缩数据块的相应的压缩数据值进行解压缩。第一解压缩设备(820a;1120a;1320a)连接到下一解压缩设备(820b;1120b;1320b),且最后的解压缩设备(820m‑1;1120m‑1;1320m‑1)连接到前一解压缩设备(820m‑2;1120m‑2;1320m‑2)。第一解压缩设备(820a;1120a;1320a)对压缩数据块的压缩数据值进行解压缩,并通过如下方式使压缩数据块缩减:提取压缩数据值的码字并从压缩数据块中去除压缩数据值,从所提取的码字中恢复解压缩数据值,以及将缩减的压缩数据块传递到下一解压缩设备(820b;1120b;1320b)。最后的解压缩设备(820m‑1;1120m‑1;1320m‑1)接收由前一解压缩设备(820m‑2;1120m‑2;1320m‑2)缩减的缩减压缩数据块,并通过以下方式对压缩数据块的另一压缩数据值进行解压缩:提取另一压缩数据值的码字,并且从所提取的码字中恢复另一解压缩数据值。
Description
技术领域
本主题总体而言涉及电子计算机中的数据压缩领域。
背景技术
数据压缩是一种成熟的技术,该技术用于缩减数据的大小。数据压缩适用于保存在计算机系统的存储子系统中以增大存储容量的数据。当数据在计算机系统内的不同子系统之间传输时,或者通常在包括通信网络的数据通信系统中的两点之间发生传输时,也使用数据压缩。
数据压缩需要两个基本操作:1)压缩(也称为编码),其将未压缩数据作为输入并通过将数据值替换为相应的码字(也称为编码、译码或代码)来将它们转换为压缩数据;以及2)解压缩(也称为解码),其将压缩数据作为输入并通过用相应的数据值替换码字来将压缩数据转换为未压缩的。压缩和解压缩可以用软件、或硬件、或软件和硬件的结合来实现,从而实现相应的方法、设备和系统。
不同的压缩算法和方法指定如何从未压缩域到压缩域以及从压缩域到未压缩域。无损压缩算法以受控方式执行此操作,使得解压缩后的实际数据值与压缩前的原始数据值相同。另一方面,有损压缩算法操纵压缩下的数据集,因此解压缩后的数据值与原始的不同,并且原始值不能被恢复(有损)。
存在多种不同的算法来实现数据压缩,但通常这些算法可以分为两组:使用固定长度(或固定宽度)码来对待压缩的数据进行编码的算法,以及使用可变长度(或可变宽度)码来对待压缩的数据进行编码的算法。属于第一组的示例性数据压缩算法系列是基于字典的算法(dictionary-based algorithm),该算法在字典中查找给定的数据集(即,压缩下的数据),并且如果匹配,则使用字典索引将其与字典位置和/或匹配的量(如果是部分匹配)进行编码。另一方面,属于第二组的示例性数据压缩算法是统计压缩算法,该算法依赖于数据并且可以提供接近熵的压缩效率,因为它们基于包含在给定数据集中的数据值的统计特性来分配可变长度(也称为可变宽度)码:短码字用于对频繁出现的数据值进行编码,而较长的码字对出现频率较低的数据值进行编码。霍夫曼编码是一种已知的统计压缩算法。
用于加速解压缩的霍夫曼编码的已知变体是规范的霍夫曼编码。基于此,码字具有数列特性,意味着相同长度的码字是连续的整数。
现有技术中提出了基于规范的霍夫曼的压缩和解压缩机制的示例。这样的压缩和解压缩机制可以用来实现基于霍夫曼的压缩和解压缩。
对于每种压缩算法,压缩都需要一些时间将未压缩数据转换为压缩数据;解压缩也需要一些时间将压缩数据转换为未压缩数据。延时(latency)的确切量通常取决于所使用的算法和特定实现方式。此外,吞吐量(分别为压缩数据和解压缩数据的量)也取决于所使用的特定算法和特定实现方式。
可变长度的压缩实现方式通常通过首先将所述未压缩数据划分成块来对未压缩数据进行压缩。块缩减(reduce)了未压缩字的压缩之间的等待时间。首先计划被压缩的数据块被临时储存。所述临时储存块内的每个字将被一个接一个地依序处理,并且用相应的码字替换每个字(如果所述压缩允许,则将其留下不压缩)。顺序工作方法内置于压缩算法本身,因为没有储存关于每个连续字在压缩块内的开始位置的信息。因此,知道将压缩字N储存在压缩块中的位置的唯一方法是知道压缩字N-1结束的位置。通过压缩器的延时(即,等待时间)可以被定义为从未压缩块进入压缩器直到该块的压缩版本退出压缩器为止所增加的时间。
由于与压缩相同的原因,可变长度解压缩也增加了延时。由于解压缩块内的字的边界未知,因此需要按顺序对每个字进行解压缩。解压缩器也逐字对临时储存的块进行工作。
因为可变长度的压缩和解压缩具有固有的顺序工作流,所以可变长度的压缩和解压缩的现有技术实现方式受到吞吐量缩减的影响。因为没有提到字在压缩块内的开始位置,所以吞吐量惩罚源于字的打包。通过对压缩器逐字地工作,用于储存未压缩字的临时字将停止其他块的压缩,直到压缩器已完成当前块为止。解压缩器在储存待解压缩的临时块时也遇到同样的问题。解压缩器会停止其他块的解压缩,直到当前块完全解压缩为止。
除了延时和吞吐量问题的惩罚之外,解压缩器具有在压缩器中不存在的额外复杂性。在压缩器中,针对未压缩块内的每个未压缩字,通常存在一个或多个预定长度。所有未压缩块根据所述预定长度而被划分成确定量的未压缩字。由于预定的字长,来自临时储存器的逐字处理工作流程的馈送机制变得微不足道。另一方面,解压缩器中作为部分或整个压缩块的临时压缩字包括具有未知字长的压缩字,因为这些字是用可变长度的码字压缩的。字长对于块内的每个压缩字都是唯一的。因此,逐字处理变得非常重要,因为检测特定码字n取决于至少知道所述码字的开头,这进一步取决于已计算出所述压缩字内的前一码字n-1的长度。所述计算出的码长度必须用作将检测到的码字移出所述临时字的输入。码检测单元和移位操作字的代价高度依赖于块内的字数和最大码长度。如果压缩和解压缩以软件实现,则所述代价转化为计算的能力需求。在替代实施方式中,如果压缩和解压缩以硬件实现,则所述代价转化为逻辑深度。在所述基于硬件的压缩器和解压缩器中,逻辑深度影响每个操作的最大时钟频率。如果所述逻辑深度对于目标时钟频率来说变得太大,则现有技术使用流水线化来缩减逻辑深度。然而,利用对临时压缩字的移位器的反馈来使码检测流水线化会增加多个停顿周期;总停顿周期数等于压缩块的压缩字数乘以通过码字检测处理的时钟周期数。
现有技术试图通过使压缩和解压缩并行化来解决吞吐量问题,即,如果它是硬件实现方式,则通过增加多个压缩和解压缩实例来解决吞吐量问题。特别是对于解压缩,解压缩器的数量通常等于一个解压缩器的停顿周期数,但是可以增加更多的解压缩器来对多个压缩块进行解压缩。引入的并行化带来了两个惩罚。1)当增加多个解压缩器时,将如何向解压缩器中的每个解压缩器和一个解压缩器馈送压缩块并不明显。需要资源调度器来跟踪可用于对新压缩块进行解压缩的解压缩器。如果解压缩器的数量等于一个解压缩器的停顿周期数,这将导致解压缩器的总集合没有停顿周期,需要大量的解压缩器,从而导致面积惩罚(area penalty)。这可能会导致没有吞吐量惩罚,而调度器机制可能变得微不足道,因为不需要来自解压缩器集合的背压。可以使用循环机制以实现调度程序。2)当增加多个解压缩器时,需要控制器来收集解压缩后的输出,并将压缩块记下来(bookkeep),以便将收集到的输出与未压缩块相关联。
本公开通过在可变长度的压缩和解压缩本身内以及在并行化的压缩和解压缩中布置多个压缩器和解压缩器时实现吞吐量的特定提高来解决这些问题。
发明内容
本发明的第一方面是根据本发明的实施方式的一种用于对压缩数据块进行解压缩的解压缩系统。本发明的第二方面是根据本发明的实施方式的一种用于对压缩数据块进行解压缩的方法。本发明的第三方面是根据本发明的实施方式的一种用于对数据块进行压缩的压缩系统。本发明的第四方面是根据本发明的实施方式的一种用于对数据块进行压缩的方法。本发明的这些方面及其一些示例性实施方式的目的、特征和优点在所附从属权利要求中进行限定。
附图说明
图1在左侧示出了数据值的未压缩块,而在右侧示出了使用可变长度的压缩形式的同一块。未压缩块的所有数据值都被相应的可变长度码字替换。
图2示出了用于使用可变长度霍夫曼编码来对块进行压缩(或编码)的现有技术压缩器,如图1所示。
图3示出了用于对使用规范的霍夫曼编码压缩的块进行解码(或解压缩)的现有技术解压缩器。
图4示出了被修改和扩展以确定数据值块中的可压缩和不可压缩数据值的图2的压缩器,通过用可变长度码字替换可压缩数据值而对可压缩数据值进行编码并将唯一码字分配给不可压缩数据值。
图5示出了被修改和扩展以对压缩值和未压缩值的混合进行解压缩的图3的解压缩器,其中该混合用图4的压缩器压缩,其中压缩值用可变长度编码压缩并且未压缩值附加有唯一码字。
图6示出了具有多个解压缩器的系统,该多个解压缩器被并行使用以对多个压缩块进行解压缩。
图7示出了被重新设计以适合本公开的解压缩器阵列的解压缩器内核(core)。
图8示出了本公开的解压缩器阵列的第一实施方式,其中每个解压缩器具有一个解压缩块作为解压缩字与解压缩块一起的输出和输入。压缩输出块的字数大小与压缩输入块中的字数相比少一个。假设压缩输入块中的字数为mCL,则压缩输出块的大小将为mCL-1。
图9示出了包括其索引为0到n-1的多个值的未压缩块。
图10示出了以包括两半的方式布置的压缩块:第一半包括偶数索引的压缩字,而第二半包括奇数索引的、但是处于反转位序列(reversed bit sequence)的压缩字。
图11A和图11B包括双端解压缩器阵列,该双端解压缩器阵列包括两个解压缩器阵列:一个在图11A中而第二个在图11B中,每个解压缩器阵列对压缩块的逻辑的一半进行解压缩。图11A示出了用于对压缩字的集合(例如,偶数字的集合)进行解压缩的解压缩器阵列,而图11B示出了用位反转预解压缩单元增强以能够对压缩字的反转位集合(例如,奇数字的位反转集合)进行解压缩的解压缩器阵列。
图12示出了重新定义的解压缩器内核,使得一对内核可以共享也在图中描绘的一个双端口值恢复单元。
图13示出了被配置为使得一对解压缩器内核共享同一值恢复单元的解压缩器阵列。
图14示出了一次仅对一个字进行码字检测的简化压缩器内核。这种压缩器内核允许压缩操作的并行化。
图15示出了被布置成阵列的n个重复的压缩器内核(如图14中图示的)。数字n被设置为与输入未压缩块匹配。
图16示出了反转树打包器(inverse-tree packer)的级。
图17示出了反转树打包器的通用实现方式,其中树结构的深度是具有n个输入和打包因子2的n/2。
图18示出了所提出的阵列压缩器。包含n个字的未压缩块以字为单位分布到相同数量的压缩器内核。倒树打包器通过对每个压缩器内核的输出进行打包来创建最终的压缩块输出。
图19示出了形成最终提出的支持双端压缩的阵列压缩器的附加逻辑。
具体实施方式
因为可变长度压缩算法基于给定数据集中包含的数据值的统计特性来分配可变长度(也称为可变宽度)码,所以可变长度压缩算法提供接近于熵的压缩效率。然而,因为压缩数据的边界由于用于对特定数据值(也称为数据符号)进行编码的可变长度的码字而是未知的,所以可变长度的压缩和解压缩由于可变长度的压缩和解压缩本质上是连续的而受到高延时和缩减的吞吐量的影响。图1的左侧示出了处于未压缩形式的数据值的示例块,其中每个未压缩值具有32位的宽度,而图1的右侧以压缩形式示出同一块,其中所有块数据值都用可变长度编码(例如霍夫曼编码)进行压缩。示例性数据值块可以是处理器高速缓存行、存储页、数据流、网络中的一个或多个数据包的内容,以及通常使用可变长度编码进行压缩的任何数据序列。
在图2中示出实现霍夫曼编码(例如,规范的霍夫曼编码)的压缩器200的示例性实施方式。它以未压缩块作为输入,该未压缩块是数据值的流,并且包括通常被表示为v1、v2、……、vn的一个或多个数据值。可以是出自未压缩块的数据值的储存单元或提取器的单元210,将数据值提供给可变长度编码单元220。可变长度编码单元220包括码表(CT)222和码字(CW)选择器228。CT 222是可以被实现为查找表(LUT)或(任何任意关联性的)计算机高速缓冲存储器的表格并包含一个或多个条目;每个条目包括可以使用码字、CW 225和码字长度(cL)227压缩的值223。因为由统计压缩算法使用的各种码字的集是可变长度的,所以当它们被保存在每个条目具有固定大小的宽度(码字225)的CT 222中时,它们必须用0填补。码字长度227保持可变长度编码的实际长度(例如,以位为单位)。CW选择器228使用cL以便识别实际CW并丢弃填补的0。然后所选择的CW和相关联的cL被输出到如下单元:所述单元将所述CW连接到一起形成压缩块的其余压缩值。完成该操作的单元被称为顺序打包器单元(230)。该单元将先前输出的CW的cL依次累加,以便在第009段描述的过程中找到用于储存下一个匹配的CW的位置。累加的cL和CW、cLa和CWa分别被储存在寄存器233和234中。当未压缩块210的所有值用完时,顺序打包器单元输出最终的cLa和CWa。
在图3中示出了来自现有技术的解压缩器300的示例。规范的霍夫曼解压缩可以被划分为两个步骤:码字检测和值恢复。这些步骤中的每个步骤都由如下单元实现:(1)码字检测单元(CDU)320和(2)值恢复单元(VRU)330。CDU 320的目标是在压缩序列(即,压缩数据值的码字的序列)内找到有效的码字。CDU 320包括一组比较器322和优先编码器324。每个比较器322a、322b、322c将每个潜在位序列与已知码字进行比较,已知码字在该示例中是特定长度的第一分配的(在码生成的时刻)规范霍夫曼码字(FCW)。在替代实现方式中,也可以使用最后分配的规范霍夫曼码字,但是在那种情况下,进行的确切比较会有所不同。要比较的上述位序列的最大尺寸可以被保存在储存单元310(例如,实现为FIFO或触发器)中并且确定比较器的数量和它们中最宽的最大宽度,这取决于在码生成时决定的有效霍夫曼码字(mCL)的最大长度。然而,这个最大长度可以根据此类解压缩器的所选实现方式(例如,以软件或硬件)而在设计、编译、配置或运行时被限制为特定值。比较器322的输出被插入到优先编码器类似结构324中,该结构324输出匹配码字的长度(在图3中被称为“匹配长度”)。基于此,从储存单元310中保存的位序列中提取检测到的有效码字(“匹配码字”);位序列被移位与“匹配长度”定义的一样多的位置,并且空的部分加载接下来的压缩序列位,使得CDU 320可以确定下一个有效码字。
另一方面,值恢复单元(VRU)330包括偏移表334、减法器单元336和解压缩查找表(DeLUT)338。来自前一步骤的“匹配长度”用于确定必须从匹配码字的算术值中减去(336)的、也是在前一步骤中确定的偏移值(被保存在偏移表334中),以获得DeLUT 338中的与检测到的码字相对应的原始数据值可以从中恢复并被附加到保持在解压缩块340中的其余解压缩值的地址。重复解压缩器的操作,直到被保存的、在输入压缩序列中压缩的所有值(被称为图3中的压缩块)被恢复为未压缩的数据值v1、v2、……、vn。
图4中描绘了压缩器的替代实施方式。所述压缩器用压缩指示单元430修改并扩展了图2的压缩器,以确定可压缩值和不可压缩值、用可变长度编码420对可压缩值进行压缩并用唯一码字440储存不可压缩值,使得压缩块包括用多路复用器450选择的压缩值和未压缩值的混合。
在图5中描绘了解压缩器的替代实施方式。所述解压缩器用在可变长度码检测单元520的顶部的唯一的码字检测单元540修改并扩展了图3的解压缩器,以能够对包括压缩值和未压缩值的混合的压缩块内的压缩值和未压缩值进行解压缩。
如图6所描绘,现有技术方法解决了解压缩器使用完整解压缩器的多个实例的低吞吐量问题。在第一实施方式中,解压缩器的数量可以与压缩块内的字的数量一样多。在解压缩吞吐量的目标被保证为每个周期一个解压缩字的另外的实施方式中,解压缩器的数量必须至少等于单个解压缩器使通过其自身的流动停顿的实例的周期数。在停顿周期数与达到高吞吐量所需的实例数之间的依赖性不是一个理想的特性,因为引入的并行性带来了可以用额外的资源解决的两个问题:1)为多个解压缩器之中的并行运行的每个解压缩器馈送压缩块,使得它们不会在任何时间点经受饥饿状态(starvation),也不会使对压缩块的解压缩停顿。这可以使用资源调度器610来跟踪可用于对各种块进行并行解压缩的解压缩器620a、620b、630c等来解决。2)当添加多个解压缩器时,需要被称为解压缩块重排单元630的另外的机制来跟踪和收集属于并行解压缩的各个块的解压缩数据。解压缩块重排单元630必须能够处理来自所有解压缩器的输出并以资源调度器所期望的顺序呈现最终解压缩输出。
解压缩器
本公开通过仅利用足够数量的解压缩器来降低复杂性(不需要调度器)和面积开销而解决了在单个解压缩器中以及在并行使用多个解压缩器的系统中遇到的有限吞吐量的问题。
在本公开的第一实施方式中,由图3和图5的解压缩器实现的解压缩方法必须被重新定义,使得1)与现有技术相反,每个解压缩方法或设备仅负责对一个字进行解压缩而不是对压缩块内的所有字解压缩;以及2)多个所述重新定义的解压缩器被布置成阵列(或链)以对完整块进行解压缩。
因此,重新定义的解压缩器的输出现在是一个解压缩字和一个压缩块,其中与馈送到所述解压缩器的压缩字的数量相比,压缩块输出不包括相同量的压缩字。图7示出了以允许解压缩器成为本公开的解压缩器阵列的解压缩器内核的方式修改的图5的解压缩器。从码字检测单元520通过移位器510返回到临时压缩块570的码字长度的反馈被修改,使得解压缩器改为将码字检测单元(720、750)的输出与原始压缩块705一起使用以使所述块705移位并将更新的压缩块(715)转发到大小为N-1的随后的解压缩器(例如,阵列中的下一解压缩器,如下所示),假设压缩块的大小为N。重要的是,新的解压缩器内核不具有对于同一内核中的原始压缩块705的码长反馈。
让我们假设进入解压缩器的压缩块中的压缩字数是mCL,那么在解压缩器的输出处的压缩块中的压缩字数将为mCL-1,因为解压缩器仅对一个字进行解压缩。阵列解压缩器具有并行性,但具有不同的尺寸:与如前所述的并行增加完整的解压缩器单元的现有技术相反,现在,多个解压缩器内核形成阵列(或链)。在图8中描绘的阵列解压缩器的实施方式包括多个图7的解压缩器内核的m个实例。假设在解压缩器的链中使用了“mCL”的数量的解压缩器,其中的每个解压缩器都对特定字进行解压缩,那么在链中最后一个解压缩器处输出的压缩块中的压缩字数将为mCL-mCL=0,其中原始压缩块中的所有字都将被完全解压缩。
因此本公开的重新定义的解压缩器对压缩块的一部分进行解压缩并将缩减压缩块转发到链中的下一解压缩器。这具有以下优点:1)通过每个解压缩器内核使压缩块缩减并将所述缩减的问题转发到下一解压缩器,可以继续对下一个压缩块的字进行解压缩。此后,新的解压缩器打破了解压缩器的数量与一个解压缩器的实际吞吐量之间的重要依赖性,以决定必须使用多少个解压缩器。2)全吞吐量所需的解压缩器的数量现在仅取决于压缩块中的字数mCL。3)此外,将解压缩器置于链中解决了调度问题,因为链中的第一解压缩器是用于馈送全吞吐量的单个单元。4)在解压缩器之后也不需要额外的块以用于跟踪哪个解压缩块是哪个。5)不具有内部反馈回路的新解压缩器内核的码字检测单元可以潜在地更好地流水线化,从而在硬件实现方式中产生更高的时钟频率。6)该解决方案使用较少的逻辑和路由资源作为每个连续级内所需的移位锥度。7)去除数据的内部反馈简化了阵列布局,因为移位的数据总是被转发到下一个块。
本公开的阵列解压缩器具有另外的优点。由于对于解压缩器阵列中的每次跳转问题都会减少,因此可以在阵列的后面部分使用较少的逻辑。例如,因为到达每个解压缩器内核的压缩块已被前一个缩减了与由所述解压缩器实现的可变长度算法的最小可能码字长度所确定的一样大,所以与阵列中较早的解压缩器内核相比,每个解压缩器内核810a、810b、810c的临时缓冲区的大小逐渐变小。此外,由于没有后续的解压缩器内核,因此阵列的最后的解压缩器内核可以具有大大减小的移位器。与以前的设计相比,特别是对于用多个值对大块进行解压缩时,这些会潜在地导致节省面积。其次,即使使用连续较小的移位器,移位和优先码检测仍然是解压缩器内核中逻辑要求最高(最大逻辑深度)的操作,即,码检测和移位操作限制了内核可实现的操作频率。然而,因为解压缩器阵列是严格前馈的,所以流水线化的寄存器可以被插入以缩减逻辑深度而不降低解压缩器阵列的吞吐量。在现有技术(图3)中的解压缩器300中插入流水线化的寄存器将在解压缩器可以开始对压缩块内的下一个压缩字进行解码之前不可避免地增加一个计算周期,即,降低了解压缩器的吞吐量。
本公开的阵列解压缩器通过对计算顺序进行重新排列来减轻现有技术可变长度解压缩器的有限吞吐量和复杂性,但是它没有解决由于可变长度解码的顺序性质而导致的固有的延时问题。本公开的第二实施方式,称为双端解压缩器,可以通过从两端对压缩块进行解压缩而潜在地提高可变长度解压缩的性能。
图9示出了包括索引为0到n-1的多个值的未压缩块。图10示出了图9的块的压缩版本,其中压缩块以包括两半的方式布置:第一半包括偶数索引(0、2、4、……、n-2)的压缩字,而第二半包括奇数索引(1、3、5、……、n-1)的、但处于反转位序列(因此为n-1、n-3、……、5、3、1)的压缩字。这种布置可以允许同时从两端对压缩块进行解压缩。
使用阵列解压缩器的两个实例,例如图8中的一个,可以使用一个阵列来对偶数的压缩字集合进行解压缩,而使用另一个解压缩器阵列通过向该阵列馈送压缩块的位反转版本来对奇数的压缩字集合进行解压缩。图11A和图11B示出了解压缩器阵列的两个实施方式:图11A示出了用于对压缩块的包括偶数的压缩字集合的第一逻辑半部进行解压缩的解压缩器阵列,而图11B示出了用于对压缩块的包括奇数的压缩字集合的第二逻辑半部进行解压缩的解压缩器阵列。因为所述第二逻辑半部是比位反转的,所以需要由位反转单元1130(也参见图13中的对应单元1330)执行的位重新反转预解压缩步骤。第二逻辑半部由相应的可变长度压缩器以反转位序列储存,稍后将在第0071段中解释。如果压缩块在同一压缩块内被划分为两部分,其中一个部分仅有奇数值,而另一部分仅有偶数值,则每个解压缩器阵列所需的解压缩器数量减少到mCL/2。解压缩器的总数仍然是mCL,但通过将阵列划分成两个具有一半长度的阵列,对压缩块进行解压缩的延时也被削减了一半。
双端解压缩器的替代实施方式可以被实现为使得压缩块可以由多端并行解压缩。值恢复单元(图5中的530)通常可以是可变长度解压缩器中的最高面积开销的单元,因为它包括码字与数据值之间的映射。在阵列解压缩器的另外的实施方式中,如图13所示,解压缩器内核可以配对,使得每对利用一个公共双端口值恢复单元,该单元在配对的解压缩器内核之间被多路复用(如果值恢复单元可以有两个完全独立的端口,则在两个解压缩器内核之间分时共享或完全共享)。在图12中描绘了改进的解压缩器内核,其中专用的值恢复单元(1230)已经从内核中移出。现在共享的双端口值恢复单元具有端口仲裁器(1270),以便选择哪个解压缩器内核可以访问值恢复单元。当值恢复单元是分时共享时,阵列解压缩器的这个实施方式的优点是降低了用于稍微更大的解压缩延时的面积开销。另一种可能性是创建真实的双端口值恢复单元,其中无法共享的资源被复制。相反,如果双端口寄存器组或SRAM被使用,则可以共享诸如De-LUT(图3的338)之类的资源,该De-LUT以寄存器或SRAM被实现并因此负责值恢复单元的大部分面积要求。此解决方案的优点是节省的面积略小(由于资源复制),但不会引入附加的延时。
如上面参考图7至图13详细解释的那样,本发明的一个方面是用于对包括多个压缩数据值(例如,字)的压缩数据块进行解压缩的解压缩系统800、1100、1300。解压缩系统800、1100、1300包括被布置为阵列或链式布局的多个解压缩设备700、1200A至1200B(也称为解压缩内核),如图8、图11A和图11B以及图13中的820a至820m-1、1120a至1120m-1、1320a至1320m-1所示。解压缩设备(或内核)被配置为对压缩数据块的各个压缩数据值进行解压缩。更具体地,多个解压缩设备中的第一解压缩设备820a、1120a、1320a连接到阵列或链式布局中的下一解压缩设备820b、1120b、1320b。此外,多个解压缩设备中的最后的解压缩设备820m-1、1120m-1、1320m-1连接到阵列或链式布局中的前一个解压缩设备820m-2、1120m-2、1320m-2。
第一解压缩设备820a、1120a、1320a被配置为对压缩数据块的压缩数据值进行解压缩,并且通过以下方式使压缩数据块缩减:提取压缩数据值的码字并从压缩数据块中去除该压缩数据值,以及此外从所提取的码字恢复解压缩数据值,并将缩减压缩数据块传递给下一解压缩设备(820b;1120b;1320b)。最后的解压缩设备820m-1、1120m-1、1320m-1被配置为接收由前一个解压缩设备820m-2、1120m-2、1320m-2缩减的缩减压缩数据块,并通过以下方式对该压缩数据块的另一压缩数据值进行解压缩:提取所述另一压缩数据值的码字以及从所提取的码字恢复另一解压缩数据值。
从所公开的实施方式中可以看出,多个解压缩设备中的每个解压缩设备700、1200A至1200B、820a至820m-1、1120a至1120m-1、1320a至1320m-1有利地被配置为对压缩数据块的一个相应的特定压缩数据值进行解压缩。此外,除了最后的解压缩设备820m-1、1120m-1、1320m-1之外,每个单独的解压缩设备700、1200A至1200B、820a至820m-2、1120a至1120m-2、1320a至1320m-2被配置为在将因此缩减的压缩数据块传递到在阵列或链式布局中跟随在各个解压缩设备之后的解压缩设备之前,从压缩数据块中去除所述一个相应的特定压缩数据值。
在图8中公开的第一实施方式中,第一解压缩设备820a被配置为接收待解压缩的完整压缩数据块810a,并将缩减压缩数据块810b传递到在阵列或链式布局中跟随在第一解压缩设备820a之后的下一解压缩设备820b,该缩减压缩数据块810b包括完整压缩数据块的所有压缩数据值,除了被第一解压缩设备820a去除的一个压缩数据值之外。最后的解压缩设备820m-1、1120m-1、1320m-1被配置为从阵列或链式布局中的先前的解压缩设备820m-2、1120m-2、1320m-2接收缩减压缩数据块810m-1,该压缩数据块810m-1包括仅单个压缩数据值—所有其他压缩数据值已被解压缩设备820a至820m-2连续去除。
在图11和图11B以及图13中公开的替代实施方式中,阵列或链式布局包括被布置成第一阵列1101、1301的多个解压缩设备的第一子组1111、1311。阵列或链式布局还包括被布置成第二阵列1102、1302的多个解压缩设备的第二子组1112、1312。解压缩系统1100、1300适用于从压缩数据块的两端对该压缩数据块进行解压缩,使得压缩数据块的多个压缩数据值中的一些压缩数据值由解压缩设备的第一子组1111、1311来解压缩,并且压缩数据块的多个压缩数据值中的其他压缩数据值由解压缩设备的第二子组1112、1312来解压缩。
解压缩系统1100、1300可以有利地包括位反转预解压缩单元1130、1330,位反转预解压缩单元1130、1330被配置为将要由解压缩设备的第二子组1112、1312处理的压缩数据值组成的位序列的位进行反转。为此,第一子组1111、1311的解压缩设备被配置为对压缩数据块中的偶数位置索引处的压缩数据值进行解压缩,而第二子组1112、1312的解压缩设备被配置为对压缩数据块中的奇数位置索引处的压缩数据值进行解压缩,反之亦然。
特别是如从图13中公开的实施方式可以看出,解压缩系统1300还可以包括值恢复单元1241、1340A,值恢复单元1241、1340A在每对解压缩设备中的解压缩设备1200A、1320a、1200B、1320a之间共享,其中一对包括一个解压缩设备1200A、第一子组1311中的1320a以及一个解压缩设备1200B、第二子组1312中的1320a。
成对解压缩设备中的每个解压缩设备1200A、1320a;1200B、1320a可以包括码检测单元1220,码检测单元1220被配置为对待解压缩的压缩数据值的码字进行检测,并将检测到的码字提交给共享的值恢复单元1241、1340A。共享的值恢复单元1241、1340A可以被配置为从来自成对解压缩设备中的两个解压缩设备1200A、1320a、1200B、1320a的检测到的码字恢复解压缩数据值。共享的值恢复单元1241、1340A通常可以通过分时共享的方式或借助于仲裁器1270进行操作,该端口仲裁器1270对在每种情况下要将检测到的码字中的哪些码字输入到值恢复单元1241、1340A进行控制。
本发明的相关方面是一种用于对包括多个压缩数据值的压缩数据块进行解压缩的方法。该方法包括通过解压缩设备700、1200A、1200B的阵列或链式布局中的第一解压缩设备820a、1120a、1320a对压缩数据块的压缩数据值进行解压缩,并通过以下方式来使压缩数据块缩减:提取压缩数据值的码字并从压缩数据块中去除该压缩数据值,进一步从所提取的码字恢复解压缩数据值,以及将缩减压缩数据块传递给阵列或链式布局中的下一解压缩设备820b、1120b、1320b。
该方法还包括由阵列或链式布局中的最后的解压缩设备820m-1、1120m-1、1320m-1接收由阵列或链式布局中的先前的解压缩设备820m-2、1120m-2、1320m-2缩减的缩减压缩数据块,并通过以下方式来对该压缩数据块的另一压缩数据值进行解压缩:提取所述另一压缩数据值的码字以及从所提取的码字恢复另一解压缩数据值。
该方法可以具有由如上所述的解压缩系统800、1100、1300执行或提供的任一或所有功能步骤。
上面讨论的解压缩系统和方法的一些非穷尽性和非限制性的增益是:解决有限吞吐量的问题,降低复杂性,不需要调度器,全吞吐量所需的解压缩器的数量现在仅取决于字数,没有内部反馈回路可以潜在地更好地流水线化,该解决方案使用更少的逻辑和路由资源,并且对于双端解压缩器,解压缩的延时削减了一半。
压缩器
现有技术的统计可变长度压缩器(诸如图2中描绘的压缩器)的主要弱点是他们固有的顺序工作流。所描绘的压缩器必须在后续未压缩块的开始之前一次一个地完全耗尽附属于未压缩块210的值。因此,未压缩块所经受的压缩延时与未压缩块内的字数成线性关系。例如,包含n个字的未压缩块将经受n*可变长度编码延时。吞吐量同样限于每n*可变长度编码延时一个未压缩块。通过在类似于解压缩的解决方案中复制完整压缩单元足够次数,可以隐藏这种延时。然而,该解决方案存在类似的缺点,即,大面积开销和复杂调度。本公开中提出了一种更好的解决方案,其通过有效地将压缩的延时与未压缩块中的字数解耦来解决现有技术实现方式所面临的两种延时问题。此外,通过允许一次处理几个未压缩块来解决吞吐量问题。
在本公开的第一实施方式中,由图2和图4的压缩器实现的压缩器方法必须被重新定义,使得1)将每个码字打包到压缩块中的固有顺序过程与压缩器设备解耦,并降级到单独的单元,该单元将所有压缩器设备的码字输出打包;2)与现有技术相反,每种压缩方法或设备只负责对一个字进行压缩,而不是对未压缩块内的所有字进行压缩;以及3)所述重新定义的压缩器中的几个压缩器以阵列(或链)布置,以根据性能要求而对块进行部分压缩或完全压缩。
在图14(1400)中描绘了重新定义的压缩器设备。打包功能(图2的230)已从设备中去除,这实际上将设备减少到仅可变长度编码。这是压缩器内核,其被进一步重新定义为一次仅处理一个未压缩字。因此,压缩器内核的输出仅是一个码字和相关的码字长度,它们一起形成了CW/CL对(1429)。利用去除打包功能,一个未压缩块可以被馈送给几个压缩器内核,所述压缩器内核的数量取决于性能要求。图15示出了压缩块包含n个字(1530)的示例。如果压缩器内核的数量也为n(1510a至1510n-1),则可以实现最大性能。于是,未压缩块将在与一个压缩器内核延时相对应的延时之后清除压缩器内核。此外,与复制图2中的完整压缩器相比,复制重新定义的压缩器内核的面积开销更低。
创建被称为打包器单元的新单元以便处置由压缩器内核输出的所有码字的打包。打包器单元的输入是CW/CL对,其编号与系统中使用的压缩器内核的数量相同。由于每个码字的长度可变,因此打包是具有大逻辑深度的复杂操作。因此,需要多路复用树来执行打包,其深度取决于要在一个周期中打包的码字数。逻辑深度反过来确定打包器(因此是压缩器系统)可以操作的频率。为了缩减逻辑深度和增大操作频率,打包器被布置在一个倒树结构中,其中树中的每个级别(级)由寄存器(隐含于每个级)分开。
图16中描绘了打包器级,其中两个CW/CL对,CW0/CL0和CW1/CL1,分别为(1660a、1660b),是其输入。码字被临时储存在两个具有合适宽度的临时缓冲器1630a、1630b中。缓冲器1630a的最左位中的CW0和CW1向右移位CL0并储存在缓冲器1630b中。随后通过合并操作(1640)将两个临时缓冲器连接起来以形成累加压缩块CWa01,该累加压缩块被储存在输出寄存器1650中。累加块的长度也在累加长度计算器(1610)中通过将CL0与CL1相加来计算以形成CLa01(累加块长度)。然后最终输出对CWa01/CLa01(1660)被发送到打包器单元中的下一级。
完整的打包器单元1700是通过复制几个打包器级并将它们布置在倒树结构中获得的,如图17所示。每个级的输入CW/CL对的数量被称为打包因子。在图17中假定打包因子为2,但是可以将其设置为任何数字,在硬件特定实现方式中优选为2的幂(例如2、4、8、……)。增大打包因子会减少级数,并因此缩减通过打包器的延时。然而,这是以每个级中更深的逻辑深度为代价的,这降低了可实现的目标频率。树内的每个级都依次变宽(1710、1720、1730)。更具体地,内部缓冲器(图16中的1630a、1630b)增长了最大允许码字长度。因此,所需的移位操作变得越来越受时间限制,并且为了减轻这种担忧,树中向下更深的级内的内部流水线化可能是必要的。由于打包器单元中的每个级都由寄存器分开(即,打包器被流水线化),因此打包器中可以共存几个受压缩的块。
在图18中描绘了本公开中提出的压缩器系统的实施方式。未压缩块(1810)以字为基础被并行馈送到以阵列布置的压缩器内核(1820a至1820n-1)中的每个压缩器内核中。每个压缩器内核在设定的延时之后输出具有附属的码字长度的匹配码字。打包器单元(1830)采用CW/CL对并产生最终的压缩块和长度(1840)。未压缩块将在与一个压缩器内核延时(可变长度编码延时)和n/2个打包器级延时相对应的延时之后清除重新定义的压缩器,其中n是未压缩块中的字数。利用本公开中提出的树打包器单元极大地提高了该系统的吞吐量,其中每个打包器级由寄存器分开(即,流水线化),这允许在任何一个时刻处理几个压缩块。相比之下,现有技术的解决方案经受n*压缩器内核延时。
虽然在解压缩器中添加双端支持是大大缩减通过解压缩器的延时的手段,但在压缩器中添加双端支持没有类似的效果。然而,必须改变压缩方法和设备以便适应双端支持的解压缩方法和设备的变化。图19描述了压缩器所需的变化。位反转单元1950已添加到所有奇数的压缩器内核输出。码长度保持不受影响,并且打包器单元也不需要任何进一步的修改。
本公开的直接益处是通过开发压缩算法的可变长度编码中的固有并行性,将压缩延时与未压缩块中的字数解耦。要开发的并行程度也可以适用于性能需求和面积限制。此外,压缩算法的固有顺序部分,压缩码字的打包,已在树打包器中重新构想,该树打包器有效地使打包流水线化以增大吞吐量。树打包器中的级的数量以及由此的附属于打包的延时可以被调整,以满足目标系统的延时、面积和频率需求。
如上面参考图14到图19详细解释的那样,本发明的另一方面是用于对包括多个数据值(例如,字)的数据块1530、1810、1910进行压缩的压缩系统1500、1800、1900。压缩系统可以有利地但不是必须地与上述解压缩系统一起使用。压缩系统1500、1800、1900包括多个压缩设备1510a至1510n-1、1820a至1820n-1、1920a至1920n-1(也称为压缩内核)。压缩设备(或内核)被布置成阵列或链式布局。压缩系统1500、1800、1900另外包括打包器1700、1930,所述打包器是与多个压缩设备分离/独立于多个压缩设备的独立单元(standalone unit)。
多个压缩设备1510a至1510n-1、1820a至1820n-1、1920a至1920n-1中的每个压缩设备1400被配置为对压缩数据块1530、1810、1910的相应一个数据值进行压缩,并将相应的一个数据值的压缩表示输出到打包器1700、1930。打包器1700、1930被配置为接收由多个压缩设备1510a至1510n-1、1820a至1820n-1、1920a至1920n-1压缩的相应数据值的压缩表示CW、CL,并从压缩表示CW、CL生成压缩数据块1740、1840、1940。
在压缩系统1500、1800、1900的实施方式中,由多个压缩设备1510a至1510n-1、1820a至1820n-1、1920a至1920n-1压缩的相应数据值的压缩表示包括码字CW和相关联的码长CL。打包器1700、1930被配置为通过将压缩表示的码字CW结合到压缩数据块中来生成压缩数据块1740、1840、1940。
如技术人员从文件中的公开内容将容易地认识到的,多个压缩设备1510a至1510n-1、1820a至1820n-1、1920a至1920n-1在对压缩数据块1530、1810、1910的各个数据值进行压缩并输出相应的数据值的压缩表示CW、CL时并行操作。
此外,打包器1700、1930可以有利地被流水线化,使得打包器1700、1930包括在流水线化配置中由寄存器分开的多个打包器级1600、1710a至1710d、1720a至1720b、1730。
如上面特别参考图19所解释的,压缩系统1900可以有利地是双端的,以便利用图11和图11B以及图13的解压缩系统1100、1300的实施方式促进操作。因此,压缩系统1900还可以包括位反转单元1950b、1950n-1,以用于多个压缩设备1920a至1920n-1中的每个第二压缩设备1920b、1920n-1,每个位反转单元1950b、1950n-1被配置为将由相关联的压缩设备提供的码字CW的位进行反转并将由此反转的码字CW'提交给打包器1950。
本发明的相关方面是一种用于对包括多个数据值的数据块1530、1810、1910进行压缩的方法。该方法包括提供被配置成阵列或链式布局的多个压缩设备1510a至1510n-1、1820a至1820n-1、1920a至1920n-1。
该方法提供作为与多个压缩设备分离的独立单元的打包器1700、1930。然后该方法涉及由多个压缩设备1510a至1510n-1、1820a至1820n-1、1920a至1920n-1中的每个压缩设备1400对数据块1530、1810、1910的相应的一个数据值进行压缩。
该方法还涉及将相应的一个数据值的压缩表示输出到打包器1700、1930,并由打包器1700、1930接收由多个压缩设备1510a至1510n-1、1820a至1820n-1、1920a至1920n-1压缩的相应数据值的压缩表示CW、CL。
该方法最终涉及由打包器1700、1930从压缩表示CW、CL生成压缩数据块1740、1840、1940。该方法可以具有由如上所述的压缩系统1500、1800、1900可执行或提供的任何或所有功能步骤。
上面讨论的压缩系统和方法的一些另外的非穷尽性和非限制性的增益是:可变码长编码,即,码字CW和附属的码字长度CL的检测,固有地并行但受顺序打包限制。顺序打包,即,一次处理一个字,这会导致高延时和低吞吐量,从而导致性能低下。延时与未压缩块中的字数解耦。由于任一时刻有几个受压缩的块,因此吞吐量大大提高。面积和性能(延时)可以根据设计要求进行调整。
在以下编号的条目中描述了本公开的另外的替代方面。
条目1:一种用于对压缩数据块进行解压缩的解压缩系统,包括被布置成阵列式布局(或链)的一个或多个解压缩设备(解压缩内核);其中
a.压缩数据块包括一个或多个压缩数据值;
b.每个解压缩设备对一个压缩数据值进行解压缩;
c.解压缩设备被布置成阵列,使得第一解压缩设备连接到第二解压缩设备,其中:
i.第一解压缩设备对所述压缩数据块的压缩数据值进行解压缩并因此通过以下方式缩减所述压缩数据块:提取由所述第一解压缩设备解压缩的相关联的压缩数据值的码字并将其从所述压缩数据块中去除,以及因此从所述提取的码字恢复解压缩数据值并将将缩减的所述压缩数据块传递给第二解压缩设备;
ii.第二解压缩设备对所述压缩数据块的压缩数据值进行解压缩并因此通过以下方式缩减所述压缩数据块:提取由所述第一解压缩设备解压缩的相关联的压缩数据值的码字并将其从所述压缩数据块中去除,以及因此从所述提取的码字恢复解压缩数据值。
关于上面的项目ii,注意到第二解压缩设备可以连接到第三解压缩设备等等,但最后一个解压缩设备不具有下一解压缩设备,因此其仅对解压缩值进行恢复。因此,第二解压缩器具有这里的范围的两个解压缩器的阵列旨在涵盖所有可能的情况。
条目2:条目1的系统的每个解压缩器设备都对压缩块中的特定值进行解压缩,其可以直接连线到解压缩块中的特定值,而无需另外的逻辑。
条目3:解压缩设备没有内部反馈回路,因为它将更新的块转发到另一设备。
条目4:条目1的阵列解压缩器的每个解压缩设备在将块传递给下一解压缩设备之前使压缩块缩减一个压缩值。
条目5:双端解压缩系统,其从两端同时对压缩数据块进行解压缩,其中第二阵列实例对压缩数据块中的以反转位顺序储存的部分进行解压缩。
d.只要以某种方法知道压缩块中每个端的起始点,就可以推广到多端解压缩系统(注意,这与例如转换的元数据问题有关,而不是解压缩。然而,多端解压缩是本公开的一部分)。
e.双端解压缩设备的一个解压阵列实例对特定组A的压缩值和另一特定组B的压缩值进行解压缩
i.例如,双端解压缩设备的一个解压阵列实例对奇数索引的压缩值和偶数索引的另一压缩值进行解压缩
f.资源共享实施方式
条目6:每个解压缩设备都可以被流水线化,以进一步实现更好的时钟频率。
条目7:条目1的整个解压缩系统进一步流水线化。
条目8:一种包括由上面提到的结构元件执行的功能的方法。
条目9:
1.一种用于对数据块进行压缩的压缩系统,包括被布置成阵列式布局(或链)的一个或多个压缩设备(压缩内核);其中
a.数据块包括一个或多个数据值;
b.每个压缩设备对一个数据值进行压缩;
i.在所述压缩设备中,压缩数据值的打包单元与值压缩单元和是解耦的(注意,在本公开中,打包单元成为整个压缩系统的独立单元)
c.压缩设备被布置成阵列,使得第一压缩设备和第二压缩设备连接到打包器;其中
i.第一压缩设备对数据块的第一数据值进行压缩,并且第二压缩设备对所述数据块的第二数据值进行压缩
1.第一压缩设备和第二压缩设备是彼此独立的;
2.所述第一设备和第二设备的压缩可以(优选地)并行发生或循序地发生
ii.所述打包器收集第一数据值(CW和CL)的压缩版本和第二数据值(CW和CL)的压缩版本,并将它们组合成包括第一码字和第二码字的压紧和压缩数据序列。
1.打包器可以被流水线化;
2.所述打包器可以是树打包器;
a.树的深度取决于未压缩块中的字数和打包因子(树中的每个级的输入数)。
b.树可以被实现为二叉树(binary tree),但是可以是任何树
c.通过使用寄存器将打包器级分开来使树打包器流水线化
条目10:双端压缩系统
条目11:一种包括由上面提到的结构元件执行的功能的方法。
Claims (17)
1.一种用于对包括多个压缩数据值的压缩数据块进行解压缩的解压缩系统(800;1100;1300),所述解压缩系统包括:
多个解压缩设备(700;1200A至1200B),所述多个解压缩设备被布置成阵列或链式布局(820a至820m-1;1120a至1120m-1;1320a至1320m-1),所述解压缩设备被配置为对所述压缩数据块的相应的压缩数据值进行解压缩,其中:
所述多个解压缩设备中的第一解压缩设备(820a;1120a;1320a)连接到所述阵列或链式布局中的下一解压缩设备(820b;1120b;
1320b);
所述多个解压缩设备中的最后的解压缩设备(820m-1;1120m-1;
1320m-1)连接到所述阵列或链式布局中的前一解压缩设备(820m-2;
1120m-2;1320m-2);
所述第一解压缩设备(820a;1120a;1320a)被配置为对所述压缩数据块的压缩数据值进行解压缩,并通过以下方式使所述压缩数据块缩减:
·提取所述压缩数据值的码字并从所述压缩数据块中去除所述压缩数据值,
·从所提取的所述码字中恢复解压缩数据值,以及
·将缩减压缩数据块传递到所述下一解压缩设备(820b;
1120b;1320b);以及
所述最后的解压缩设备(820m-1;1120m-1;1320m-1)被配置为接收由所述前一解压缩设备(820m-2;1120m-2;1320m-2)缩减的缩减压缩数据块,并通过以下方式对所述压缩数据块的另一压缩数据值进行解压缩:
·提取所述另一压缩数据值的码字,以及
·从所提取的所述码字中恢复另一解压缩数据值。
2.根据权利要求1所述的解压缩系统(800;1100;1300),其中,所述多个解压缩设备中的每个解压缩设备(700;1200A至1200B;820a至820m-1;1120a至1120m-1;1320a至1320m-1)被配置为对所述压缩数据块的一个相应的特定压缩数据值进行解压缩。
3.根据权利要求2所述的解压缩系统(800;1100;1300),其中,除了所述最后的解压缩设备(820m-1;1120m-1;1320m-1)之外的每个单独的解压缩设备(700;1200A至1200B;820a至820m-2;1120a至1120m-2;1320a至1320m-2)被配置为:在将经缩减的所述压缩数据块传递到所述阵列或链式布局中的跟随在所述单独的解压缩设备之后的解压缩设备之前,从所述压缩数据块中去除所述一个相应的特定压缩数据值。
4.根据权利要求1至3中的任一项所述的解压缩系统(800),其中:
所述第一解压缩设备(820a)被配置为接收待解压缩的完整压缩数据块,并且将缩减压缩数据块传递到所述阵列或链式布局中的跟随在所述第一解压缩设备之后的所述下一解压缩设备(820b),所述缩减压缩数据块包括所述完整压缩数据块的除了一个压缩数据值之外的所有压缩数据值;以及
所述最后的解压缩设备(820m-1;1120m-1;1320m-1)被配置为从所述阵列或链式布局中的所述前一解压缩设备(820m-2;
1120m-2;1320m-2)接收包括仅单个压缩数据值的缩减压缩数据块。
5.根据权利要求1至3中的任一项所述的解压缩系统(1100;1300),其中,所述阵列或链式布局包括被布置成第一阵列(1101;1301)的所述多个解压缩设备的第一子组(1111;1311)和被布置成第二阵列(1102;1302)的所述多个解压缩设备的第二子组(1112;1312),所述解压缩系统适于从所述压缩数据块的两端对所述压缩数据块进行解压缩,使得所述压缩数据块的所述多个压缩数据值中的一些压缩数据值由解压缩设备的所述第一子组(1111;1311)来解压缩,并且所述压缩数据块的所述多个压缩数据值中的其他压缩数据值由解压缩设备的所述第二子组(1112;1312)来解压缩。
6.根据权利要求5所述的解压缩系统(1100;1300),还包括位反转预解压缩单元(1130;1330),所述位反转预解压缩单元被配置为将待由解压缩设备的所述第二子组(1112;1312)处理的所述压缩数据值组成的位序列的位进行反转。
7.根据权利要求5所述的解压缩系统(1100;1300),其中,所述第一子组(1111;1311)的所述解压缩设备被配置为对在所述压缩数据块中的偶数位置索引处的压缩数据值进行解压缩,并且所述第二子组(1112;1312)的所述解压缩设备被配置为对在所述压缩数据块中的奇数位置索引处的压缩数据值进行解压缩,或者,所述第一子组(1111;1311)的所述解压缩设备被配置为对在所述压缩数据块中的奇数位置索引处的压缩数据值进行解压缩,并且所述第二子组(1112;
1312)的所述解压缩设备被配置为对在所述压缩数据块中的偶数位置索引处的压缩数据值进行解压缩。
8.根据权利要求5所述的解压缩系统(1300),还包括用于每对解压缩设备的值恢复单元(1241;1340A),每对解压缩设备包括所述第一子组(1311)中的一个解压缩设备(1200A;1320a)和所述第二子组(1312)中的一个解压缩设备(1200B;1320a),所述值恢复单元在成对解压缩设备(1200A;1320a;1200B;1320a)之间是共享的。
9.根据权利要求8所述的解压缩系统(1100;1300),
其中,成对解压缩设备中的每个解压缩设备(1200A;1320a;
1200B;1320a)包括码检测单元(1220),所述码检测单元(1220)被配置为:
对待解压缩的压缩数据值的码字进行检测,以及
将所检测到的所述码字提交给所共享的值恢复单元(1241;
1340A);以及
其中,所共享的值恢复单元(1241;1340A)被配置为:
从来自成对解压缩设备中的两个解压缩设备(1200A;1320a;
1200B;1320a)的检测到的码字中恢复解压缩数据值。
10.根据权利要求9所述的解压缩系统(1100;1300),其中,所共享的值恢复单元(1241;1340A)通过分时共享的方式或借助于端口仲裁器(1270)进行操作,所述端口仲裁器(1270)对在每种情况下将所检测到的码字中的哪些码字输入到所述值恢复单元(1241;1340A)进行控制。
11.一种用于对包括多个压缩数据值的压缩数据块进行解压缩的方法,所述方法包括:
通过在解压缩设备(700;1200A至1200B)的阵列或链式布局中的第一解压缩设备(820a;1120a;1320a)对所述压缩数据块的压缩数据值进行解压缩,并通过以下方式缩减所述压缩数据块:
·提取所述压缩数据值的码字并从所述压缩数据块中去除所述压缩数据值,
·从所提取的所述码字中恢复解压缩数据值,以及
·将缩减压缩数据块传递到所述阵列或链式布局中的下一解压缩设备(820b;1120b;1320b);以及
通过所述阵列或链式布局中的最后的解压缩设备(820m-1;
1120m-1;1320m-1)接收由所述阵列或链式布局中的前一解压缩设备(820m-2;1120m-2;1320m-2)缩减的缩减压缩数据块,并通过以下方式对所述压缩数据块的另一个压缩数据值进行解压缩:
·提取所述另一压缩数据值的码字,以及
·从所提取的所述码字中恢复另一解压缩数据值。
12.一种用于对包括多个数据值的数据块(1530;1810;1910)进行压缩的压缩系统(1500;1800;1900),所述压缩系统包括:
多个压缩设备(1510a至1510n-1;1820a至1820n-1;1920a至1920n-1),所述多个压缩设备被布置成阵列或链式布局;以及
打包器(1700;1930),所述打包器是与所述多个压缩设备分开的独立单元,
其中,所述多个压缩设备(1510a至1510n-1;1820a至1820n-1;
1920a至1920n-1)中的每个压缩设备(1400)被配置为:
对所述数据块(1530;1810;1910)的相应的一个数据值进行压缩,以及
将所述相应的一个数据值的压缩表示输出到所述打包器(1700;1930),以及
其中,所述打包器(1700;1930)被配置为:
接收由所述多个压缩设备(1510a至1510n-1;1820a至1820n-1;1920a至1920n-1)压缩的相应的数据值的所述压缩表示(CW,CL),以及
根据所述压缩表示(CW,CL)生成压缩数据块(1740;1840;1940)。
13.根据权利要求12所述的压缩系统(1500;1800;1900),
其中,由所述多个压缩设备(1510a至1510n-1;1820a至1820n-1;
1920a至1920n-1)压缩的所述相应的数据值的所述压缩表示包括码字(CW)和相关联的码长(CL),以及
其中,所述打包器(1700;1930)被配置为通过将所述压缩表示的所述码字(CW)结合到所述压缩数据块中来生成所述压缩数据块(1740;1840;1940)。
14.根据权利要求12或13所述的压缩系统(1500;1800;1900),其中,所述多个压缩设备(1510a至1510n-1;1820a至1820n-1;1920a至1920n-1)在对所述数据块(1530;1810;1910)的所述相应的数据值进行压缩并输出所述相应的数据值的所述压缩表示(CW,CL)时并行地进行操作。
15.根据权利要求12所述的压缩系统(1500;1800;1900),其中,所述打包器(1700;1930)包括由处于流水线化配置的寄存器分开的多个打包器级(1600;1710a至1710d、1720a至1720b、1730)。
16.根据权利要求13所述的压缩系统(1900),还包括用于所述多个压缩设备(1920a至1920n-1)中的每个第二压缩设备(1920b、1920n-1)的位反转单元(1950b、1950n-1),每个位反转单元(1950b、1950n-1)被配置为对由相关联的压缩设备提供的所述码字(CW)的位进行反转并将经反转的所述码字(CW')提交给所述打包器(1950)。
17.一种用于对包括多个数据值的数据块(1530;1810;1910)进行压缩的方法,所述方法包括:
提供被布置成阵列或链式布局的多个压缩设备(1510a至1510n-1;1820a至1820n-1;1920a至1920n-1);
提供打包器(1700;1930),所述打包器是与所述多个压缩设备分开的独立单元;
通过所述多个压缩设备(1510a至1510n-1;1820a至1820n-1;1920a至1920n-1)中的每个压缩设备(1400)对所述数据块(1530;1810;1910)的相应的一个数据值进行压缩;
将所述相应的一个数据值的压缩表示输出到所述打包器(1700;1930);
通过所述打包器(1700;1930)接收由所述多个压缩设备(1510a至1510n-1;1820a至1820n-1;1920a至1920n-1)压缩的相应的数据值的压缩表示(CW,CL);以及
通过所述打包器(1700;1930)根据所述压缩表示(CW,CL)生成压缩数据块(1740;1840;1940)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE1851649 | 2018-12-21 | ||
SE1851649-2 | 2018-12-21 | ||
PCT/SE2019/051342 WO2020130929A1 (en) | 2018-12-21 | 2019-12-23 | Methods, devices and systems for efficient compression and decompression for higher throughput |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113228653A CN113228653A (zh) | 2021-08-06 |
CN113228653B true CN113228653B (zh) | 2024-03-15 |
Family
ID=71100609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980084811.5A Active CN113228653B (zh) | 2018-12-21 | 2019-12-23 | 用于高效压缩和解压缩以获得更高吞吐量的方法、设备和系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11658679B2 (zh) |
EP (1) | EP3900340A4 (zh) |
CN (1) | CN113228653B (zh) |
WO (1) | WO2020130929A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SE544557C2 (en) * | 2020-12-01 | 2022-07-12 | Zeropoint Tech Ab | Systems, methods and devices for exploiting value similarity in computer memories |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103891150A (zh) * | 2011-10-01 | 2014-06-25 | 英特尔公司 | 用于高带宽字典压缩的压缩格式 |
CN105451026A (zh) * | 2014-09-19 | 2016-03-30 | 想象技术有限公司 | 数据压缩 |
CN108702160A (zh) * | 2016-01-29 | 2018-10-23 | 零点科技公司 | 用于压缩和解压缩数据的方法、设备和系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6141017A (en) * | 1998-01-23 | 2000-10-31 | Iterated Systems, Inc. | Method and apparatus for scaling an array of digital data using fractal transform |
US7538694B2 (en) * | 1999-01-29 | 2009-05-26 | Mossman Holdings Llc | Network device with improved storage density and access speed using compression techniques |
DE10301362B4 (de) | 2003-01-16 | 2005-06-09 | GEMAC-Gesellschaft für Mikroelektronikanwendung Chemnitz mbH | Blockdatenkompressionssystem, bestehend aus einer Kompressionseinrichtung und einer Dekompressionseinrichtung, und Verfahren zur schnellen Blockdatenkompression mit Multi-Byte-Suche |
US7872598B2 (en) * | 2008-12-10 | 2011-01-18 | Intel Corporation | Accelerated decompression |
EP2801055B1 (en) * | 2012-01-02 | 2016-04-20 | Telecom Italia S.p.A. | Method and system for image analysis |
CN113810057B (zh) * | 2015-05-21 | 2024-05-14 | 零点科技公司 | 用于语义值数据压缩和解压缩的方法、设备和系统 |
US10476520B2 (en) * | 2015-05-21 | 2019-11-12 | Zeropoint Technologies Ab | Methods, devices and systems for hybrid data compression and decompression |
GB2567427B (en) * | 2017-10-06 | 2020-10-07 | Imagination Tech Ltd | Data compression |
-
2019
- 2019-12-23 CN CN201980084811.5A patent/CN113228653B/zh active Active
- 2019-12-23 EP EP19898478.3A patent/EP3900340A4/en active Pending
- 2019-12-23 US US17/415,047 patent/US11658679B2/en active Active
- 2019-12-23 WO PCT/SE2019/051342 patent/WO2020130929A1/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103891150A (zh) * | 2011-10-01 | 2014-06-25 | 英特尔公司 | 用于高带宽字典压缩的压缩格式 |
CN105451026A (zh) * | 2014-09-19 | 2016-03-30 | 想象技术有限公司 | 数据压缩 |
CN108702160A (zh) * | 2016-01-29 | 2018-10-23 | 零点科技公司 | 用于压缩和解压缩数据的方法、设备和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113228653A (zh) | 2021-08-06 |
EP3900340A4 (en) | 2022-08-17 |
US20220069840A1 (en) | 2022-03-03 |
EP3900340A1 (en) | 2021-10-27 |
US11658679B2 (en) | 2023-05-23 |
WO2020130929A1 (en) | 2020-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113810057B (zh) | 用于语义值数据压缩和解压缩的方法、设备和系统 | |
JP4905562B2 (ja) | データ圧縮装置、及びデータ復元装置 | |
Lemire et al. | Stream VByte: Faster byte-oriented integer compression | |
JP3009727B2 (ja) | 改良形データ圧縮装置 | |
CN108886367B (zh) | 用于压缩和解压缩数据的方法、设备和系统 | |
Plaisance et al. | Vectorized vbyte decoding | |
JP2006211621A (ja) | データ圧縮装置、及びデータ復元装置 | |
Weißenberger et al. | Massively parallel Huffman decoding on GPUs | |
Ledwon et al. | High-throughput FPGA-based hardware accelerators for deflate compression and decompression using high-level synthesis | |
CN108141225B (zh) | 使用simd引擎的通用数据压缩 | |
CN113228653B (zh) | 用于高效压缩和解压缩以获得更高吞吐量的方法、设备和系统 | |
EP2055007B1 (en) | Data encoder | |
Ledwon et al. | Design and evaluation of an FPGA-based hardware accelerator for deflate data decompression | |
Kim et al. | Data dependency reduction for high-performance FPGA implementation of DEFLATE compression algorithm | |
Najmabadi et al. | An architecture for asymmetric numeral systems entropy decoder-a comparison with a canonical Huffman decoder | |
Dandalis et al. | Configuration compression for FPGA-based embedded systems | |
Moussalli et al. | A high throughput no-stall golomb-rice hardware decoder | |
Habboush et al. | DE-ZFP: An FPGA implementation of a modified ZFP compression/decompression algorithm | |
Burtscher et al. | pFPC: A parallel compressor for floating-point data | |
Najmabadi et al. | Hardware-based architecture for asymmetric numeral systems entropy decoder | |
Bharathi et al. | A plain-text incremental compression (pic) technique with fast lookup ability | |
Ledwon | Design of FPGA-based accelerators for Deflate compression and decompression using high-level synthesis | |
Shravana et al. | Review on lossless data compression using x-matchpro algorithm | |
Mesut et al. | ISSDC: Digram coding based lossless data compression algorithm | |
Höglund | Lightweight Real-Time Lossless Software Compression of Trace 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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40051574 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |