CN108886367A - 用于压缩和解压缩数据的方法、设备和*** - Google Patents
用于压缩和解压缩数据的方法、设备和*** Download PDFInfo
- Publication number
- CN108886367A CN108886367A CN201780015236.4A CN201780015236A CN108886367A CN 108886367 A CN108886367 A CN 108886367A CN 201780015236 A CN201780015236 A CN 201780015236A CN 108886367 A CN108886367 A CN 108886367A
- Authority
- CN
- China
- Prior art keywords
- data
- mask
- value
- data value
- data block
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
- H03M7/48—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind alternating with other codes during the code conversion process, e.g. run-length coding being performed only as long as sufficientlylong runs of digits of the same kind are present
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
方法、设备和***使压缩器和解压缩器扩展以用于对计算机***的缓存/存储器/数据传输子***中的或通信网络中的数据进行编码和解码。示例可变长度压缩器和解压缩器被扩展为具有新的特征以:当特定值在数据块中的特定位置中出现时进行更密集地压缩;当数据块中存在频繁出现的特定值时改善压缩和解压缩延迟;还通过记录经压缩的数据块的可变长度编码的值的长度来改善解压缩延迟。所述压缩器和解压缩器被扩展成支持与可变长度压缩结合使用的常见压缩情形的压缩和解压缩,以改善在计算机***的缓存/存储器/数据传输子***中的或通信网络中的压缩性。
Description
技术领域
本公开内容总体上涉及数据压缩和解压缩的领域,例如在计算机***的缓存/存储器子***中和/或数据传输子***中的或者在数据通信***中的数据压缩和解压缩。
背景技术
数据压缩是用于减小数据大小的一种较为成熟的技术。其应用于保存在计算机***的存储器子***中的数据以增加存储能力。当数据在计算机***内的不同子***之间传输时,或者通常当在包括通信网络的数据通信***中的两个点之间进行所述传输时,数据压缩也被使用。
数据压缩需要两个基本的操作:1)压缩(也称为编码),压缩是将未压缩的数据作为输入,并通过用相应的码字(在文献中也称为编码、字码或代码)替换数据值来将未压缩的数据转换为经压缩的数据;以及2)解压缩(也称为解码),解压缩是将经压缩的数据作为输入并通过用相应的数据值替换码字来将该经压缩的数据转换为未压缩的。数据压缩可以是无损式的或者有损式的,这取决于是否解压缩后的实际数据值与压缩前的原始数据值完全相同(无损式),或者取决于是否解压缩后的数据值不同于原始数据值且原始值无法取得(有损式)。可以用软件、或硬件、或软件和硬件的组合来实施压缩和解压缩,以实现相应的方法、设备和***。
图1描绘了计算机***100的实例。计算机***100包括使用通信装置例如互连网络连接到存储器层次结构(memory hierarchy,存储器分级体系)110的一个或数个处理单元P1…Pn。每个处理单元都包括处理器(或核),并且每个处理单元都可以是CPU(中央处理单元)、GPU(图形处理单元)、或者通常是执行计算的块。另一方面,存储器层次结构110构成计算机***100的存储子***,并且包括可以以一个或数个级别(level,层级、等级)L1-L3进行组织的缓存存储器120,以及存储器130(又名初级存储器)。存储器130还可以连接到次级存储装置(例如,硬盘驱动器、固态驱动器或闪存)。存储器130可以被组织成数个级别,例如,快速主存储器(例如,DDR)和闪存。当前实例中的缓存存储器120包括三个级别,其中,L1和L2是专用缓存,因为每个处理单元P1-Pn都连接至指定的L1/L2缓存,而L3是在所有处理单元P1-Pn之间共享。在具有不同数量的处理单元以及通常地具有处理单元和存储器子***之间的不同组合的情况下,可替代的实例可以实现具有更多、更少或甚至不具有缓存级别的并且具有或不具有专用或共享的指定缓存的不同缓存层次结构,实现各种存储器级别,这一切都是由技术人员容易实现的。
可以以不同的方式将数据压缩应用于计算机***。图2描绘了计算机***例如图1的***100的实例200,其中,在这种计算机***的存储器例如主存储器中数据是经压缩的。这意味着通过如上所述的相应压缩操作,数据在被保存于存储器之前经压缩,并且数据在离开存储器时被解压缩。
在图3所示的计算机***的替代实例300中,数据压缩可以应用于缓存***的L3缓存。类似于先前的实例,需要在数据被存储于缓存之前进行压缩,并且需要在数据离开缓存(例如,去往其中数据为未压缩的其他缓存级别(L2)或存储器330)之前进行解压缩。在替代实例中,可以将数据以压缩形式保存在缓存层次结构的任何级别中。
还可以仅当数据在计算机***中的不同子***之间进行传输时对其进行压缩。在图4所示的计算机***的替代实例400中,当使用相应的通信装置在L3缓存与存储器430之间传输数据时,对数据进行压缩。类似于先前的实例,在通信装置的末端需要存在压缩和解压缩,以便在传输数据之前对数据进行压缩,并且在于另一端处接收数据时对数据进行解压缩。
在计算机***的替代实例500中,数据压缩可以应用于如图5所描绘的子***的组合中。在这个实例中,当数据保存在存储器530中时并且当数据在存储器530与缓存层次结构520之间传输时,数据是经压缩的。这样,当数据从缓存层次结构520移动到存储器530时,可以仅需要在数据从L3缓存转移之前对其进行压缩。或者,离开存储器530去往缓存层次结构520的经压缩的数据可以仅需要在将其被接收到将存储器530与缓存层次结构520连接的通信装置的另一端时被解压缩。关于将压缩应用于计算机***中的不同子***的组合,任何实例都是可行的,并且可以由本领域技术人员实现。
还可以在通信网络内的两个任意点之间进行数据传输。图6描绘了包括两点之间的通信网络605的数据通信***600的实例,其中,数据由发射器610传输并由接收器620接收。在这样的实例中,这些点可以是网络中的两个中间节点或者通信链路的源节点和目的地节点或者这些情况的组合。数据压缩可以应用于如图7所描绘的示例***700这样的数据通信***。在数据通过发射器710被发射到通信网络705上之前需要应用压缩,而在数据被接收器720接收之后需要应用解压缩。
实现数据压缩有各种不同的算法。数据压缩算法中的一族是统计压缩算法,该统计压缩算法是数据依赖的并且可以提供接近于熵的压缩效率,因为该统计压缩算法基于数据值的统计特性来分配可变长度(也称为可变宽度)代码:短码字用于对频繁出现的数据值进行编码,而较长的码字对不那么频繁出现的数据值进行编码。霍夫曼编码是已知的统计压缩算法。
用于加速解压缩的霍夫曼编码的已知变型是规范霍夫曼编码。基于此,码字具有数字序列属性,这意味着相同长度的码字是连续的整数。
在现有技术中提出了基于规范霍夫曼的压缩和解压缩机制的实例。这种压缩和解压缩机制可以用在前述的实例中以实现基于霍夫曼的压缩和解压缩。
图9示出了实施霍夫曼编码例如规范霍夫曼编码的来自现有技术的压缩器900的实例。该压缩器将未压缩的块作为输入,所述未压缩的块是一串数据值并且包括在整个本公开内容中通常表示为v1、v2、...、vn的一个或多个数据值。单元910——其可以是存储单元或用于从未压缩的块提取出数据值的提取器——向可变长度编码单元920提供数据值。可变长度编码单元920包括码表(CT)922和码字(CW)选择器928。CT 922是可以实施为查找表(LUT)或计算机缓存存储器(具有任何任意的相关性)的表,并且包含一个或多个条目;每个条目包括可以使用码字来压缩的值923、CW 925和码字长度(cL)927。由于统计压缩算法所使用的各种码字集是可变长度的,所以当将其保存在每个条目具有固定大小的宽度(码字925)的CT 922中时,必须用零对这些码字集进行补填。码字长度927保持可变长度编码的实际长度(例如,以位为单位)。CW选择器928使用cL以便识别实际的CW并舍弃所补填的零。然后将编码的值连结至经压缩的值的其余部分,一起形成经压缩的块。在图27中描绘了遵照先前描述的压缩步骤的压缩方法的示例性流程图。
图10中示出了现有技术中的解压缩器1000的实例。规范霍夫曼解压缩可以分为两个步骤:码字检测和值检索(retrieve,取得、恢复、取回)。这些步骤中的每一个都通过下述单元中之一来实施:(1)码字检测单元(CDU)1020和(2)值检索单元(VRU)1030。CDU 1020的目的是在经压缩的序列(即,经压缩的数据值的码字的序列)内找到有效的码字。CDU 1020包括一组比较器1022和优先级编码器1024。每个比较器1022a、1022b、1022c将每个潜在的位序列(bit-sequence,比特序列)与已知码字进行比较,在本实例中该已知码字是特定长度的首次分配的(在码生成时)规范霍夫曼码字(FCW)。在替代实施中,也可以使用最后分配的规范霍夫曼码字,但是在这种情况下,所做的确切比较将会不同。上述待比较的位序列可以保存在存储单元1010(例如实施为FIFO或触发器)中并且决定了比较器的数量以及位序列中最宽者的最大宽度,待比较的位序列的最大大小取决于在码生成时所决定的有效霍夫曼码字的最大长度(mCL)。然而,取决于这种解压缩器的所选择的实施(例如,以软件或以硬件),可以在设计、编译、配置或运行时间上将该最大长度限制到特定值。将比较器1022的输出***到如结构1024的优先级编码器中,该优先级编码器输出该匹配的码字的长度(在图10中称为“匹配的长度”)。基于此,从保存于存储单元1010的位序列中提取所检测到的有效码字(匹配的码字);将位序列移位与“匹配的长度”所限定的一样多的位置,并且将空余部分加载成经压缩的序列的后续位,使得CDU 1020可以确定下一有效码字。
另一方面,值检索单元(VRU)1030包括偏移表1034、减法器单元1036和解压缩查找表(DeLUT)1038。使用来自前一步骤的“匹配的长度”来确定必须从也于前一步骤中确定的该匹配的码字的算术值中减去(1036)的偏移值(保存在偏移表1034中),以获得DeLUT 1038的地址,其中,对应于检测到的码字的原始数据值可以从DeLUT中取得并附接至保存在解压缩块1040中的其余解压缩值。重复解压缩器的操作,直到以压缩形式保存在所输入的经压缩的序列(在图10中称为经压缩的块)中的所有值被恢复成未压缩的数据值v1、v2、…、vn。
图28描绘了遵照先前描述的解压缩步骤的解压缩方法的示例性流程图。
前面所提到的压缩器和解压缩器可以利用可变长度规范霍夫曼编码快速且有效地压缩数据块并且解压缩利用可变长度规范霍夫曼编码压缩的数据块。然而,在解压缩期间的码字检测阶段是固有地有序的,使得解压缩很慢;尽管现有技术教导如何将其并行化,但是实现方案是复杂的并且添加了很多的面积开销或者需要大量的计算资源。当将统计压缩应用于前述实例的计算机***或通信网络时,这是一种挑战。此外,尽管前述具有统计压缩算法的压缩器可以有效地压缩最频繁的值,但是解压缩器都以同一速度工作而不管经压缩的数据是频繁的还是不频繁的。另外,当所述频繁的值出现在值的流的标准位置中时,压缩器是不太有效的。本发明人已经意识到在数据压缩和解压缩的技术领域中存在改进的空间。
发明内容
本发明的目的在于在数据压缩和解压缩的技术领域中提供改进。
本公开内容总体上公开了当将压缩应用于例如数据通信***和/或计算机***中的缓存子***和/或存储器子***和/或数据传输子***时,用于压缩数据值块以及解压缩经压缩的数据值块的方法、设备和***。存在各种方式来在所述子***中使用基于熵的可变长度编码有效地压缩数据,并且一种这样的方式是通过使用霍夫曼编码。现有的压缩器可以用于使用霍夫曼编码压缩数据值块,同时现有的解压缩器可以用于解压缩使用霍夫曼编码压缩的所述数据的块。然而,可变长度编码的序列的解压缩是固有地有序的并且在这样的经压缩的块中确定霍夫曼编码的数据值是很慢的,因为霍夫曼编码的值是可变长度码字;因此,它们的边界是未知的。此外,现有的解压缩器的速度是相同的,与经压缩的块是否包括频繁的或不频繁的经压缩的值无关,而且当最频繁的值出现在块中的标准定位/位置中时,现有的压缩器也不那么有效。在本公开内容中所公开的方法、设备和***利用以下的新特征增强了现有的利用可变长度编码的压缩器和解压缩器:当特定值出现在数据块中的特定位置中时,更密集地压缩;当频繁出现的特定值出现在数据块中时,改善压缩和解压缩延时;还通过记录经压缩的数据块的可变长度编码的值的长度改善解压缩延时。此外,所提出的方法、设备和***甚至进一步通过将所述压缩器和解压缩器分别与针对所述计算机***和通信***中的常见压缩情形的其他积极型压缩器和解压缩器相结合来使其增强。
本发明的第一个方面是一种数据压缩设备,用于将包括n个数据值的未压缩的数据块压缩为经压缩的数据块,该数据压缩设备包括:
压缩器,该压缩器被配置成将未压缩的数据块的数据值压缩为对应的可变长度码字;
检测器,该检测器被配置成检测至少一个特定数据值在未压缩的数据块中的存在;以及
经压缩的数据块生成器,该经压缩的数据块生成器与压缩器和检测器耦合并且被配置成通过将下述相组合来生成经压缩的数据块:
·数据值掩码,该数据值掩码包含n个掩码位置,其中,每个掩码位置指示未压缩的数据块中的相应的数据值是否与由所述检测器检测到的所述至少一个特定数据值中的任一个特定数据值相等;以及
·对于未压缩的数据块中的与所述至少一个特定数据值不相等的数据值,由压缩器进行压缩所得的对应的可变长度码字,
其中,经压缩的数据块包括数据值掩码和m个可变长度码字,其中,m≤n,并且其中,在经压缩的数据块中不包括用于未压缩的数据块中的与所述至少一个特定数据值中的任一个特定数据值相等的数据值的可变长度码字。
在一些实施方式中,检测器被配置成检测一个特定数据值在未压缩的数据块中的存在,其中,数据值掩码的n个掩码位置中的每个掩码位置都包含单个位。在其他的实施方式中,检测器被配置成检测多个不同的特定数据值在未压缩的数据块中的存在,其中,数据值掩码的n个掩码位置中的每个掩码位置都包含能够对多个特定数据值中的任一个特定数据值进行编码的固定大小的位组合。
在一些实施方式中,该或者每个特定数据值都是频繁出现的数据值,如果取代地使用可变长度编码,则所述频繁出现的数据值可以利用最小的位被编码。有利地,这样的特定数据值是0(零)。可替代地,该或者每个特定数据值都可以是当出现时要求非常快速的解压缩的数据值。
参考图16和图18对根据本发明的第一个方面的数据压缩设备的优选实施方式的另外特征进行描述,并且此外,将其定义在与此一同提交的所附的从属权利要求7-11中。本发明的第二个方面是一种对应的数据压缩方法,用于将包括预定的n个数据值的未压缩的数据块压缩为经压缩的数据块,该数据压缩方法包括:
将未压缩的数据块的数据值压缩为对应的可变长度码字;
检测至少一个特定数据值在未压缩的数据块中的存在;以及
通过将下述相组合来生成经压缩的数据块:
·数据值掩码,该数据值掩码包含n个掩码位置,其中,每个掩码位置指示未压缩的数据块中的相应的数据值是否与所述至少一个特定数据值中的任一个特定数据值相等;以及
·对于未压缩的数据块中的与所述至少一个特定数据值中的任一个特定数据值都不相等的数据值,对应的可变长度码字,
其中,经压缩的数据块包括数据值掩码和m个可变长度码字,其中,m≤n,并且其中,在经压缩的数据块中不包括用于未压缩的数据块中的与所述至少一个特定数据值中的任一个特定数据值相等的数据值的可变长度码字。
根据本发明的第二个方面的数据压缩方法可以包括根据本发明的第一个方面的数据压缩设备包括其实施方式的任何或所有的功能特征。
本发明的第三个方面是数据解压缩设备,用于将经压缩的数据块解压缩为经解压缩的数据块,所述经解压缩的数据块包括在相应的数据值位置处的n个数据值,数据解压缩设备包括:
解压缩器,被配置成将经压缩的数据块的可变长度码字解压缩为对应的经解压缩的数据值;以及
经解压缩的数据块生成器,被配置成:
从经压缩的数据块读取包含n个掩码位置的数据值掩码,其中,每个掩码位置指示未压缩的数据块中的相应的数据值在产生经压缩的数据块的数据压缩之前是否与至少一个特定数据值中的任一个特定数据值相等;以及
基于数据值掩码,通过将来自解压缩器的经解压缩的数据值与由数据值掩码的相应的掩码位置指示的所述至少一个特定数据值组合,来生成经解压缩的数据块,
其中,所生成的经解压缩的数据块的数据值的次序与所述数据值在数据压缩之前在未压缩的数据块中出现的次序相同。
在一些实施方式中,数据值掩码的n个掩码位置中的每个掩码位置都包含指示或不指示一个特定数据值的单个位。在其他的实施方式中,数据值掩码的n个掩码位置中的每个掩码位置都包含能够解码多个特定数据值中的任一个特定数据值的固定大小的位组合。有利地,这样的特定数据值是0(零)。
参考图17和图19对根据本发明的第三个方面的数据压缩设备的优选实施方式的另外特征进行描述,并且此外,将其限定在与此一同提交的所附的从属权利要求17中。
本发明的第四个方面是一种对应的数据解压缩方法,用于将经压缩的数据块解压缩为经解压缩的数据块,所述经解压缩的数据块包括在相应的数据值位置处的n个数据值,数据解压缩方法包括:
将经压缩的数据块的可变长度码字解压缩为对应的经解压缩的数据值;
从经压缩的数据块读取包含n个掩码位置的数据值掩码,其中,每个掩码位置指示未压缩的数据块中的相应的数据值在产生经压缩的数据块的数据压缩之前是否与至少一个特定数据值中的任一个特定数据值相等;以及
基于数据值掩码,通过将经解压缩的数据值与由数据值掩码的相应的掩码位置指示的所述至少一个特定数据值相组合,来生成经解压缩的数据块,
其中,所生成的经解压缩的数据块的数据值的次序与所述数据值在数据压缩之前在未压缩的数据块中出现的次序相同。
根据本发明的第四个方面的数据解压缩方法可以包括根据本发明的第三个方面的数据解压缩设备包括其实施方式的任何或所有的功能特征。
本发明的第五个方面是一种数据压缩设备,用于将包括n个数据值的未压缩的数据块压缩为经压缩的数据块,该数据压缩设备包括:
压缩器,被配置成将未压缩的数据块的数据值压缩为对应的可变长度码字;
检测器,被配置成检测至少一个特定数据值在未压缩的数据块中的存在;以及
经压缩的数据块生成器,与压缩器和检测器耦合,并被配置成生成包含n个掩码位置的数据值掩码,其中,每个掩码位置指示未压缩的数据块中的相应的数据值是否与由所述检测器检测到的所述至少一个特定数据值中的任一个特定数据值相等,
其中,经压缩的数据块生成器包括掩码编码生成器,该掩码编码生成器被配置成:
分析所生成的数据值掩码,包括确定其是否与多种掩码模式中的任一个掩码模式匹配;以及
生成掩码编码以代表分析的结果;
其中,经压缩的数据块生成器还被配置成通过将至少下述相组合来生成经压缩的数据块:
·所生成的掩码编码;以及
·对于未压缩的数据块中的与至少一个特定数据值中的任一个特
定数据值都不相等的数据值,由压缩器进行压缩所得的对应的可变长
度码字,
其中,经压缩的数据块包括所生成的掩码编码和m个可变长度码字,其中,m≤n,并且其中,在经压缩的数据块中不包括用于未压缩的数据块中的与所述至少一个特定数据值中的任一个特定数据值相等的数据值的可变长度码字,并且
其中,经压缩的数据块还包括数据值掩码,除非由掩码编码生成器进行的所述分析的结果是所生成的数据值掩码指示未压缩的数据块中的特定数据值的预定重复模式。
参考图18对根据本发明的第五个方面的数据压缩设备的优选实施方式的另外特征进行描述,并且此外,将其限定在与此一同提交的所附的从属权利要求21-24中。
本发明的第六个方面是一种数据压缩方法,用于将包括预定的n个数据值的未压缩的数据块压缩为经压缩的数据块,数据压缩方法包括:
将未压缩的数据块的数据值压缩为对应的可变长度码字;
检测至少一个特定数据值在未压缩的数据块中的存在;
生成包含n个掩码位置的数据值掩码,其中,每个掩码位置指示未压缩的数据块中的相应的数据值是否与所述至少一个特定数据值中的任一个特定数据值相等;
分析所生成的数据值掩码,包括确定其是否与多种掩码模式中的任一种掩码模式匹配;
生成掩码编码以代表分析的结果;以及
通过将至少下述相组合来生成经压缩的数据块:
·所生成的掩码编码;以及
·对于未压缩的数据块中的与所述至少一个特定数据值中的任一个特定数据值都不相等的数据值,由压缩器进行压缩所得的对应的可变长度码字,
其中,经压缩的数据块包括所生成的掩码编码和m个可变长度码字,其中,0≤m≤n,并且其中,在经压缩的数据块中不包括用于未压缩的数据块中的与所述至少一个特定数据值中的任一个特定数据值相等的数据值的可变长度码字,并且
其中,经压缩的数据块还包括数据值掩码,除非分析步骤的结果是所生成的数据值掩码指示未压缩的数据块中的特定数据值的预定重复模式。
根据本发明的第六个方面的数据压缩方法可以包括根据本发明的第五个方面的数据压缩设备包括其实施方式的任何或所有的功能特征。
本发明的第七个方面是一种数据解压缩设备,用于将经压缩的数据块解压缩为经解压缩的数据块,所述经解压缩的数据块包括在相应的数据值位置处的n个数据值,数据解压缩设备包括:
解压缩器,被配置成将经压缩的数据块的可变长度码字解压缩为对应的经解压缩的数据值;以及
经解压缩的数据块生成器,被配置成:
从经压缩的数据块读取掩码编码,该掩码编码代表多种掩码模式中的任一个掩码模式;
当由所读取的掩码编码代表的掩码模式不指示在产生经压缩的数据块的数据压缩之前在未压缩的数据块中至少一个特定数据值中的任何特定数据值的预定重复模式时,从经压缩的数据块读取包含n个掩码位置的数据值掩码,其中,每个掩码位置指示未压缩的数据块中的相应的数据值在数据压缩之前是否与所述至少一个特定数据值中的任一个特定数据值相等;以及
基于掩码编码及在适用情况下的数据值掩码,通过将下述两者相组合来生成所述经解压缩的数据块,所述两者中的一者是来自所述解压缩器的经解压缩的数据值,所述两者的中的另一者是通过由掩码编码代表的预定重复模式指示的或者通过在适用情况下的数据值掩码的相应的掩码位置指示的所述至少一个特定数据值,
其中,所生成的经解压缩的数据块的数据值的次序与所述数据值在数据压缩之前在未压缩的数据块中出现的次序相同。
参考图19对根据本发明的第七个方面的数据压缩设备的优选实施方式的另外特征进行描述,并且此外,将其限定在与此一同提交的所附的从属权利要求27-30中。
本发明的第八个方面是一种对应的数据解压缩方法,用于将经压缩的数据块解压缩为经解压缩的数据块,所述经解压缩的数据块包括在相应的数据值位置处的n个数据值,数据解压缩方法包括:
将经压缩的数据块的可变长度码字解压缩为对应的经解压缩的数据值;
从经压缩的数据块读取掩码编码,该掩码编码代表多种掩码模式中的任一个掩码模式;
当由所读取的掩码编码代表的掩码模式不指示在产生经压缩的数据块的数据压缩之前在未压缩的数据块中至少一个特定数据值中的任何特定数据值的预定重复模式时,从经压缩的数据块读取包含n个掩码位置的数据值掩码,其中,每个掩码位置指示未压缩的数据块中的相应的数据值在数据压缩之前是否与所述至少一个特定数据值中的任一个特定数据值相等;以及
基于掩码编码及在适用情况下的数据值掩码,通过将下述两者相组合来生成经解压缩的数据块,所述两者中的一者是经解压缩的数据值,所述两者中的另一者是通过由掩码编码代表的预定重复模式指示的或者通过在适用情况下的数据值掩码的相应的掩码位置指示的所述至少一个特定数据值,
其中,所生成的经解压缩的数据块的数据值的次序与所述数据值在数据压缩之前在未压缩的数据块中出现的次序相同。
根据本发明的第八个方面的数据解压缩方法可以包括根据本发明的第七个方面的数据压缩设备包括其实施方式的任何或所有的功能特征。
本发明的第九个方面是一种数据压缩设备,用于将包括n个数据值的未压缩的数据块压缩为经压缩的数据块的,数据压缩设备包括:
压缩器,被配置成将未压缩的数据块的数据值压缩为对应的可变长度码字,并且输出所述可变长度码字以及其相应的码长度;
经压缩的数据块生成器,与压缩器耦合并且包括具有n个存储位置的长度掩码寄存器,每个存储位置用于未压缩的数据块的n个数据值中的一个数据值,长度掩码寄存器被配置成用于存储n个位置的长度掩码,
其中,经压缩的数据块生成器被配置成在长度掩码的相应位置处存储由压缩器提供的可变长度码字的相应码长度,以及
其中,经压缩的数据块生成器被配置成通过将下述相组合来生成经压缩的数据块:
·存储在长度掩码寄存器中的长度掩码;以及
·由压缩器提供的可变长度码字形式的经压缩的数据值。
在有利的实施方式中,数据压缩设备还包括检测器,该检测器与压缩器耦合并且被配置成检测未压缩的数据块中的不能被所述压缩器压缩的数据值,其中,经压缩的数据块生成器被配置成:当检测器已经检测到未压缩的数据块的数据值不能被压缩时将具有特殊值的码长度存储在长度掩码中的相应位置处,并将该未压缩的数据值存储在经压缩的数据块中。有利地,码长度的特殊值是0。
参考图23对根据本发明的第九个方面的数据压缩设备的优选实施方式的另外特征进行描述,并且此外,将其限定在与此一同提交的所附的从属权利要求33-39中。
本发明的第十个方面是一种对应的数据压缩方法,用于将包括n个数据值的未压缩的数据块压缩为经压缩的数据块,该数据压缩方法包括:
将未压缩的数据块的数据值压缩为对应的可变长度码字,并且输出所述可变长度码字以及其相应的码长度;
将n个位置的长度掩码存储在具有n个存储位置的长度掩码寄存器中,每个存储位置用于未压缩的数据块的n个数据值中的一个数据值,
将可变长度码字的相应码长度存储在长度掩码的相应位置处,以及
通过将下述相组合来生成经压缩的数据块:
·存储在长度掩码寄存器中的长度掩码;以及
·可变长度码字形式的经压缩的数据值。
根据本发明的第十个方面的数据压缩方法可以包括根据本发明的第九个方面的数据压缩设备包括其实施方式的任何或所有的功能特征。
本发明的第十一个方面是一种数据解压缩设备,用于将经压缩的数据块解压缩为经解压缩的数据块,所述经解压缩的数据块包括在相应的数据值位置处的n个数据值,数据解压缩设备包括:
解压缩器,被配置成将经压缩的数据块的可变长度码字解压缩为对应的经解压缩的数据值;
提取器机构,该提取器机构用于:从经压缩的数据块读取n个位置的长度掩码,根据长度掩码确定经压缩的数据块中的可变长度码字的相应的码长度,基于所确定的相应的码长度从经压缩的数据块提取相应的可变长度码字,并且将所提取的相应的可变长度码字提供给解压缩器;以及
经解压缩的数据块生成器,被配置成根据来自解压缩器的经解压缩的数据值生成经解压缩的数据块,
其中,所生成的经解压缩的数据块的数据值的次序与所述数据值在数据压缩之前在未压缩的数据块中出现的次序相同。
在有利的实施方式中,经解压缩的数据块生成器被配置成:
针对长度掩码中的一个或多个位置,检测指示一个或多个对应的数据值以未压缩的形式包括在经压缩的数据块中的一个或多个具有特殊值的码长度;以及
基于所检测到的一个或多个具有特殊值的码长度,通过将来自解压缩器的经解压缩的数据值与来自经压缩的数据块的未压缩形式的一个或多个对应的数据值相组合来生成经解压缩的数据块。有利地,码长度的特殊值是0。
本发明的第十二个方面是一种数据解压缩方法,用于将经压缩的数据块解压缩为经解压缩的数据块,所述经解压缩的数据块包括在相应的数据值位置处的n个数据值,该数据解压缩方法包括:
从经压缩的数据块读取n个位置的长度掩码;
根据长度掩码确定经压缩的数据块中的可变长度码字的相应的码长度;
基于所确定的相应的码长度从经压缩的数据块提取相应的可变长度码字;
将所提取的可变长度码字解压缩为对应的经解压缩的数据值;以及
根据经解压缩的数据值生成经解压缩的数据块,
其中,所生成的经解压缩的数据块的数据值的次序与所述数据值在数据压缩之前在未压缩的数据块中出现的次序相同。
根据本发明的第十二个方面的数据解压缩方法可以包括根据本发明的第十一个方面的数据解压缩设备包括其实施方式的任何或所有的功能特征。
本发明的另一个方面是一种***,所述***包括一个或多个存储器、根据上述第一个方面、第五个方面或第九个方面的数据压缩设备、以及根据上述第三个方面、第七个方面或第十一个方面的数据解压缩设备。
本发明的又一个方面是一种计算机程序产品,所述计算机程序产品包括代码指令,所述代码指令在由处理设备加载并执行时引起根据上述第二个方面、第六个方面或第十个方面的方法的执行。
本发明的又一个方面是一种计算机程序产品,所述计算机程序产品包括代码指令,所述代码指令在由处理设备加载并执行时引起根据上述第四个方面、第八个方面或第十二个方面的方法的执行。
根据以下详细的公开内容、所附从属权利要求以及附图,所公开的实施方式的其他方面、目标、特征和优点将显现。一般地,除非在此另有明确的定义,否则在权利要求中所使用的所有术语应当根据它们在技术领域中的普通含义得以解释。
除非另有明确的声明,否则对“一(a)/一(an)/该(the)[元件、设备、部件、装置、步骤等等]”的所有参照都应被开放地解读为对元件、设备、部件、装置、步骤等等的至少一个实例的参照。除非明确地声明,否则在此公开的任何方法的步骤不必以所公开的确切的次序执行。
附图说明
参考以下附图对背景技术中的实例以及本发明方面的实施方式进行了描述:
图1例示了包括n个处理核的计算机***的框图,每个处理核都与具有三个级别的缓存层次结构和主存储器连接。
图2例示了图1的框图,其中,主存储器保存经压缩的形式的数据。
图3例示了图1的框图,其中,L3缓存保存经压缩的形式的数据。其他的缓存级别也可以存储经压缩的形式的数据。
图4例示了图1的框图,其中数据在通信装中被压缩,例如当在存储器和缓存层次结构之间传输时。
图5例示了图1的框图,其中,压缩可应用于主存储器和将存储器连接到缓存层次结构的链路。通常,可以将压缩应用于类似缓存层次结构、传输装置(例如,将存储器连接到缓存子***的链路)和主存储器的部分的任何组合。
图6例示了连接通信网络中的两个点的数据传送链路的框图。这些点可以是网络中的两个中间节点或者通信链路中的源节点和目的地节点或者是这些情形的组合。
图7例示了图6的数据传送链路的框图,其中,被传输的数据是经压缩的形式,所以它们可能需要在发射器中被压缩并且在接收器中被解压缩。
图8在左边例示了未压缩的数据值块,并且在右边例示了使用已利用霍夫曼编码生成的可变长度编码的经压缩的形式的相同块。未压缩的块的所有数据值被相应的霍夫曼码字取代。
图9例示了被用于使用霍夫曼编码压缩(或编码)如图8所例示的块的压缩器。
图10例示了被用于解码(或解压缩)使用规范霍夫曼编码压缩的块的解压缩器。
图11在左边例示了未压缩的数据值块(即未压缩的数据块),并且在右边例示了利用使用霍夫曼编码所生成的可变长度编码的经压缩的形式的相同块(即经压缩的数据块)。未压缩的数据块的所有数据值被经压缩的数据块中的相应的霍夫曼码字取代。
图12在左边例示了未压缩的数据块,并且在右边以可替代的方式例示了包括位掩码和可变长度编码(即由可变长度编码所编码的位序列)的经压缩的形式的相同块,该位掩码指示哪些数据值是零值和非零值,该可变长度编码包括经压缩的非零数据值的混合。
图13在左边例示了未压缩的数据值块,并且在右边例示了使用已利用霍夫曼编码生成的可变长度编码的经压缩的形式的相同块。未压缩的数据块的所有数据值被经压缩的数据块中的相应的霍夫曼码字取代。
图14在左边例示了未压缩的数据块,并且在右边以可替代的方式例示了包括掩码编码和可变长度编码(即由可变长度编码所编码的位序列)的经压缩的形式的相同块,该掩码编码指示位掩码是否被包括在所述经压缩的块中或者指示零数据值和非零数据值是否以特定的次序出现或者是否遵照特定的模式,该可变长度编码包括经压缩的非零数据值的混合。
图15在左边例示了未压缩的数据块,并且在右边以可替代的方式例示了包括掩码编码、位掩码和可变长度编码(即由可变长度编码所编码的位序列)的经压缩的形式的同样的块,该掩码编码指示位掩码是否跟随其后,该位掩码指示哪些值是零值和非零值,该可变长度编码包括经压缩的非零数据值的混合。
图16例示了基于图9的压缩器但被修改并扩展成能够压缩图12的未压缩的数据块的数据压缩设备。
图17例示了基于图10的解压缩器但被修改并扩展成能够解压缩图12的经压缩的数据块的数据解压缩设备。
图18例示了基于图16的压缩设备但被修改并扩展成能够压缩图14和图15的未压缩的数据块的数据压缩设备。
图19例示了基于图17的解压缩设备但被修改并扩展成能够解压缩图14和图15的经压缩的数据块的数据解压缩设备。
图20在左边例示了未压缩的数据值块(即未压缩的数据块),并且在右边例示了利用使用霍夫曼编码生成的可变长度编码的经压缩的形式的相同块(即经压缩的数据块)。
图21在左边例示了未压缩的数据块,并且在右边以可替代的方式例示了包括位掩码和可变长度编码(即由可变长度编码所编码的位序列)的经压缩的形式的相同块,该位掩码保持经压缩的数据值的可变长度编码的长度,该可变长度编码包括经压缩的数据值和未压缩的数据值的混合。
图22在左边例示了未压缩的数据块,并且在右边以可替代的方式例示了包括位掩码和可变长度编码(即由可变长度编码所编码的位序列)的经压缩的形式的相同块,该位掩码保持经压缩的值的可变长度编码的长度,该可变长度编码包括经压缩的数据值和未压缩的数据值的混合,但是其中,未压缩的数据值以与在原始的未压缩的数据块中出现的次序相反的次序存储在经压缩的数据块的末端。
图23例示了基于图9的压缩器但被修改并扩展成能够压缩图21的未压缩的数据块的数据压缩设备。
图24例示了基于图10的解压缩器但被修改并扩展成能够解压缩图21的经压缩的数据块的数据解压缩设备。
图25例示了基于图10的解压缩器但被修改并扩展至能够解压缩图22的经压缩的数据块的数据解压缩设备。
图26例示了基于图24的解压缩设备但被修改并扩展成能够并行地解压缩2个经压缩的数据的解压缩设备。
图27例示了用于使用可变长度编码(例如,霍夫曼)压缩未压缩的数据块的压缩方法的示例流程图。
图28例示了用于解压缩被使用可变长度编码(例如,规范霍夫曼)压缩的经压缩的数据块的解压缩方法的示例流程图。
图29例示了建立在图27的压缩方法之上并且遵照与图18的压缩设备相似的步骤使得能够压缩图14和图15的未压缩的数据块的新方法的示例流程图。
图30例示了建立在图28的方法之上并且遵照与图19的解压缩设备相似的步骤使得能够解压缩图14和图15的经压缩的数据块的新方法的示例流程图。
图31例示了建立在图27的压缩方法之上并且遵照与图23的压缩设备相似的步骤(跳过确定未压缩的值以及将经压缩的值和未压缩的值混合所需要的步骤)使得能够压缩图21的未压缩的数据块的新方法的示例流程图。
图32例示了建立在图28的解压缩方法之上并且遵照与图24的解压缩设备相似的步骤(跳过确定未压缩的值以及将经压缩的值和未压缩的值混合所需要的步骤)使得能够解压缩图21的经压缩的数据块的新方法的示例流程图。
具体实施方式
本公开内容公开了用于当将压缩应用于通信网络和/或计算机***中的缓存子***和/或存储器子***和/或数据传输子***时,压缩一个或多个数据值块以及解压缩一个或多个经压缩的数据值块的方法、设备和***。所公开的方法、设备和***扩展并优化基线压缩方法、设备和***以及解压缩方法、设备和***,以便能以更好的压缩性和更高的压缩/解压缩速度应用于前述的所应用的***中常见的数据压缩情形。
数据块包括一个或多个数据值并且可以是任意大小。在如图1所绘制的计算机***的实施方式中,数据值块可替代地可以被称为1)缓存线、缓存组或缓存扇区,当数据块被保存在这样的计算机***内的缓存层次结构中时;2)缓存线、存储器页或存储器扇区,当数据块被保存在这样的计算机***内的存储器中或者在这样的计算机***内的通信装置中传输时。另一方面,在如图6所绘制的通信网络内的传送链路的实施方式中,数据块也可以指包(packet,数据包、信息包)、微片(flit)、有效负载、数据头(header,首部、标头)等。
基于熵的可变长度压缩,诸如霍夫曼压缩,可以在如图2、图3、图4、图5所绘制的示例计算机***的缓存/存储器/数据传输子***或如图7所绘制的示例通信链路的情境中应用于如图8的左边所示的数据值块。所述块包括8个数据值,然而如前所述,其可以是任意大小。使用一组示例规范霍夫曼码字和现有技术的霍夫曼压缩器诸如图9的示例实施方式,对所述块中的所有数据值进行压缩(或编码)形成经压缩的块,如图8的右边所绘制的。此外,绘制在图8的右边的示例可变长度经压缩的数据值块可以通过现有技术的规范霍夫曼解压缩器诸如图10的示例实施方式解压缩。
当数据压缩应用于缓存/存储器子***或传输网络子***或点对点通信网络中时,常见的场景是特定数据值0在数据块内非常频繁地出现,但是数据块并没有被该特定数据值0完全填满。假设数据值0用1位码字编码(最佳情形),这样的未压缩的数据块和使用可变长度编码(例如,霍夫曼编码)进行压缩后的相应数据块的常规表示绘制在图11中。根据本发明的实施方式,图11的未压缩的数据块的可替代表示呈现在图12中,其中经压缩的数据块包括具有X位宽度的掩码,其中,X与在可变长度编码之前块中包含的数据值的数量(这里为8)一样大。被称为Z值掩码(Z-Value Mask)的掩码对经压缩的块中存在的所述频繁出现的特定数据值诸如数据值0进行编码,由此在这样的零数据值存在于未压缩的数据块时省略可变长度编码中的示例霍夫曼码字。这样,经压缩的数据块比图21的实施方式(总共12位)大2位(总共14位),然而,利用这样的编码,经压缩的块的解压缩可以变得更快。
能够形成图12的所述经压缩的数据块的示例数据压缩设备1600的框图绘制在图16中。该示例数据压缩设备包括可变长度编码单元1620形式的压缩器、比较器形式的检测器1630、以及经压缩的数据块生成器1640-1670,这些经压缩的数据块生成器包括用于存储Z值掩码的Z值掩码寄存器1640、用于存储从可变长度编码单元(压缩器)1620接收的可变长度码字1625的存储单元1650、以及连结器1670。如在图9的压缩器实施方式中那样,数据压缩设备1600将未压缩的数据块1610作为输入,该未压缩的数据块是数据值流并且包括一个或多个数据值v1、v2、…、vn,并且该未压缩的数据块可以从存储单元1605取得或者从具有出自未压缩的数据块的数据值的提取器取得。然而,未压缩的数据块1610的数据值不仅被供应给可变长度编码单元1620,还被供应给比较该值是否是零值(即特定数据值)的比较器(检测器)1630。如果该值非零,则使用单元1620对其进行编码并且经编码的该值将被放置在累积的可变长度编码1635中,而比较器1630的结果(“0”表示不匹配)将被存储在Z值掩码1640中的相应位置中(Z值掩码中的第一个位置对应块中的第一个值,等等)。如果该值是零,那么比较器1630的结果(“1”表示匹配)将禁用存储单元1650,使得从可变长度编码1635中省略经编码的该值。此外,“1”被写在Z值掩码1640中的相应位置中以指示零值。当整个块被压缩时(这可以由本领域技术人员使用计数器并且与包括在未压缩的块中的值的最大数量作比较而实现),从Z值掩码寄存器1640读取Z值掩码并且使用连结器1670将Z值掩码连接在可变长度编码1635之前,形成经压缩的块1690。存储单元1650可以由本领域技术人员以不同的方式实现,例如,使用一组三态缓冲器。
因此,在图16中的数据压缩设备1600中,前述检测器包括比较器1630,其具有被配置成接收在未压缩的数据块1610中的相应的数据值位置处的数据值v1-vn的第一输入1631a、被配置成接收特定数据值1632的第二输入1631b、以及被配置成输出特定数据值1632与在未压缩的数据块1610中的相应的数据值位置处的数据值v1-vn之间的比较结果的输出1633。
此外,在图16中的数据压缩设备1600中,前述经压缩的数据块生成器1640-1670包括具有n个一位存储位置的掩码寄存器1640,每个一位存储位置用于数据值掩码的n个掩码位置中的一个掩码位置。比较器1630的输出1633被耦合到掩码寄存器1640,使得利用特定数据值1632与在未压缩的数据块1610中的相应的数据值位置处的数据值v1-vn之间的比较的结果使掩码寄存器1640在其n个存储位置中的相应的一个存储位置处被更新。
还有,在图16中的数据压缩设备1600中,前述经压缩的数据块生成器1640-1670包括存储单元1650,该存储单元具有第一输入1651a,第一输入被配置成从压缩器1620接收对应于在未压缩的数据块1610中的相应的数据值位置处的数据值v1-vn的可变长度码字1625并且将其存储在存储单元1650中。存储单元1650还具有被配置成将所存储的可变长度码字1625输出到累积的可变长度编码1655中的输出1653,以及被配置成接收依赖于比较器1630的输出1633的控制信号的第二输入1631b。存储单元1650被配置成:当比较器1630的比较结果指示特定数据值1632与在未压缩的数据块1610中的相应的数据值位置处的数据值v1-vn之间的匹配时,禁止所存储的可变长度码字1625输出到可变长度编码1655中。
另外,在图16中的数据压缩设备1600中,前述经压缩的数据块生成器1640-1670包括连结器1670,该连结器被配置成:当未压缩的数据块1610的所有n个数据值v1-vn都已经被处理时,通过将来自掩码寄存器1640的数据值掩码Z值掩码与累积的可变长度编码1655连结来生成经压缩的数据块1690。
在所公开的根据图16的数据压缩设备1600的实施方式中,在经压缩的数据块1690中,数据值掩码Z值掩码置于累积的可变长度编码1655之前。在其他实施方式中,在经压缩的数据块1690中,数据值掩码Z值掩码可以替代地附接在累积的可变长度编码1655的末端。
图16的以上公开内容可以可替代地被视为将包括一个或多个数据值的未压缩的数据块压缩为经压缩的块的设备(即,数据压缩设备);其中,所述经压缩的数据块包括位掩码和可变长度位序列,该可变长度位序列还包括利用可变长度编码进行编码所得的一个或多个经压缩的数据值,其中,经压缩的数据值的数量小于或等于未压缩的数据值的数量;其中,所述设备包括:压缩器,用于利用对应于数据值的可变长度字码压缩所述数据值;第一机构,检测不会被用于利用可变长度字码压缩数据值的所述压缩器压缩的一个或多个特定数据值;第二机构,使用第一机构的检测信息来更新指示所述特定值的位掩码。
能够解压缩图12的所述经压缩的块的示例数据解压缩设备1700的框图绘制在图17中。数据解压缩设备1700基于图10的解压缩器1000构建并且包括保存经压缩的数据块1710的一部分的存储单元1705(存储单元1710的大小至少是未压缩的值长度和最大的码字长度中的最大者)、码字检测单元1720(与图10的解压缩器1000的码字检测单元1020相似)、值检索单元1730(与图10的解压缩器1000的值检索单元1030相似)、以及形成经压缩的数据块生成器的额外逻辑(extra logic,扩展逻辑)1740-1780。码字检测单元1720和值检索单元1730因此形成解压缩器。
经解压缩的数据块生成器包括用于存储从经压缩的数据块1710的附接部分取得的Z值掩码的寄存器1750、可变长度(VL)值位置生成器1740、可变长度(VL)值位置分配器1760以及选择器1780。以两种方式使用Z值掩码:1)使用每个Z值掩码位来生成选择器1780的控制信号,使得如果数据值已经被编码为零值(即特定数据值),则替代地选择将零写在经解压缩的块1790中;2)所有的Z值掩码位被VL值位置生成器1740使用。VL值位置生成器生成用于所有非零值的掩码索引(由Z值掩码中的零位指示)。例如,在图12的实施方式中,非零值被标记在Z值掩码索引5和6中。VL值位置分配器1760使用这一信息来决定将由解压缩器解码的各个(非零)值(图12的实施方式的v5和v6)放在何处。
因此,当经压缩的数据块所包括的经压缩的数据值的一部分是数据值0(或另一最频繁的数据值)时,图17的数据解压缩设备1700加速了对经压缩的数据块的解压缩,因为该数据解压缩设备仅需要对利用了可变长度编码对其进行编码的非零数据值解压缩。
如根据以上所能理解的,在图17的数据解压缩设备1700中,前述经解压缩的数据块生成器1740-1780包括值位置生成器1740、值位置分配器1760以及多个选择器1780,每个选择器用于经解压缩的数据块1790的n个数据值位置中的一个数据值位置。值位置生成器1740被配置成控制值位置分配器1760和多个选择器1780,使得当数据值掩码Z值掩码的相应的掩码位置指示特定数据值1782时,从相应的选择器接收特定数据值1782并且将该特定数据值包括在经解压缩的数据块1790中位于相应的数据值位置处,并且使得当数据值掩码Z值掩码的相应的掩码位置不指示特定数据值1782时,从解压缩器1720-1730接收对应的经解压缩的数据值并且将该经解压缩的数据值包括在经解压缩的数据块1790中位于相应的数据值位置处。
以上图17的公开内容可以可替代地被视为将经压缩的数据块解压缩为一个或多个数据值的设备(即,数据解压缩设备);其中,所述经压缩的数据块包括位掩码和可变长度位序列,其进一步包括利用可变长度编码进行编码所得的一个或多个经压缩的数据值和以位掩码编码的一个或多个特定值;其中,所述设备包括:解压缩器,用于解压缩可变长度字码以重建对应于所述可变长度字码的数据值;第一机构,读取位掩码以确定在压缩期间在未压缩的块中是否出现特定值并且生成未压缩的块中的值位置;以及第二机构,使用来自第一机构的指示再创建所述特定数据值,使得在经解压缩的数据块中的值的次序与压缩之前的原始数据块中的值的次序相同。
在可替代的实施方式中,技术人员可以将另一非常频繁的特定数据值像数据值0那样编码。在又一替代实施方式中,可以利用使用固定大小编码的掩码对更频繁的数据值进行编码。例如,3个最频繁的数据值可以被编码成00、01、10,留下11来代表利用可变长度编码对其进行编码的非频繁的(或较不频繁的)数据值。多个所述特定数据值可以由替代实施方式检测,其中,数据压缩设备1600和1800的比较器1630或1830分别被含有多个所述特定值的小型字典替换。替代实施方式能够由本领域技术人员实现。
图13示出了未压缩的数据块(在图13左边)和使用可变长度霍夫曼编码的相应经压缩的块(在图13右边)的表示。图13的未压缩的块是常见的情形,其中特定数据值0出现在块的偶数索引位置中(假设第一个值的索引是0,第二个值的索引是1,等等)。这种情况在块的数据值是被声明为大整数的小整数值时可能发生。相似地,特定数据值0可以一致地出现在块的奇数索引位置中。根据本发明的实施方式,图14示出了压缩图13的未压缩的块的可替代方式,其中,使用2位(10)对每两个数据值具有一0值的场景(其中,块的第一个数据值是0)进行编码,并且如前面所描述的那样压缩其余的非零数据值。以这种方式,与图13的经压缩的块的表示(总共18位)作比较时,压缩被改进2位(总共16位)。为了能够对这样的不同的压缩情景以及图12的实施方式的未压缩的块进行编码,要求在掩码(如果有的话)之前设置掩码编码。例如,利用2位掩码编码,我们可以对下述模式情景进行编码:00→没有掩码跟随(数据块中没有零值);01→每两个数据值出现一值0,并且数据块不以值0开头(零值处于奇数位置中);10→每两个数据值出现一值0,并且数据块以值0开头(零值处于偶数位置中);11→值0出现一次或多次并且不能使用模式被同样地描述。因此,该2位编码可以将更多的位添加到经压缩的数据块或者可以引起更好的压缩(01和10模式),但是总之,它可以通过添加少量的源来加速解压缩。
能够形成图14和图15的所述经压缩的块的示例数据压缩设备1800的框图绘制在图18中。就像图16的压缩设备,它包括可变长度编码单元1820形式的压缩器、用于存储Z值掩码的Z值掩码寄存器1840、其他逻辑1830和1850、经压缩的数据块生成器1870以及掩码编码生成器1860。以与图16的数据压缩设备1600相同的方式执行对零数据值(即使它们呈现出遵照诸如图14中的模式)和非零数据值的压缩,直到块压缩完成。至此,Z值掩码寄存器1840将Z值掩码供应给掩码编码生成器1860。在这一示例实施方式中,所述生成器1860包括布尔逻辑,布尔逻辑试图识别关于零值的特定模式(Z-偶数和Z-奇数)是否出现,或者任意零值(任意-Z)是否已经出现。掩码编码器1867使用这些信号来生成相应的掩码编码1868。注意,如果数据块中的所有数据值(如,8个值,即n=8)都是零值,则这一数据块被压缩为“1111111111”,其中,前2位是掩码编码并且其余的8位是Z值掩码。如果是这一情形,则逻辑1864-1866将Z-奇数和Z-偶数转为“0”,否则它们基于逻辑1861和1862保持置位/复位。如果没有零值被包括在数据块中,则Z-偶数、Z-奇数和任意-Z将是“0”,以这一方式生成“00”掩码编码1868。此外,连结器1870检查掩码编码1868:如果它是“00”、“01”或“10”,则在可变长度编码1835之前附接掩码编码1868,否则将掩码1868置于Z值掩码之前,Z值掩码又置于可变长度编码1835之前。除了掩码编码生成器1860及其子组件,以及到连结器1870的额外输入及其如以上所描述的附加功能之外,图18中的数据压缩设备1800的组件18nn可以与图16中的数据压缩设备1600的对应的组件16nn相同,在它们的附图标记中共用同样的最后两个数字nn。
如根据以上能够理解的,在图18中的数据压缩设备1800中,前述掩码编码生成器1860可以被配置成:当所生成的数据值掩码Z值掩码指示在未压缩的数据块1810中特定数据值(如零数据值)位于每隔一个数据值位置处的预定重复模式时,生成具有第一掩码编码值的掩码编码1868,其中,在所生成的经压缩的数据块1890中仅包括掩码编码1868而不包括数据值掩码Z值掩码。
掩码编码生成器1860也可以被配置成:当所生成的数据值掩码Z值掩码指示在未压缩的数据块1810中特定数据值(如零数据值)位于每隔一个数据值位置处的预定重复模式(然而相对于第一掩码编码值的预定重复模式偏移一个位置)时,生成具有第二掩码编码值的掩码编码1868,其中在所生成的经压缩的数据块1890中仅包括掩码编码1868而不包括数据值掩码Z值掩码。
掩码编码生成器1860还可以被配置成:当所生成的数据值掩码指示在未压缩的数据块中的至少一个数据值位置处存在特定数据值时,生成具有第三掩码编码值的掩码编码1868,其中掩码编码1868以及数据值掩码Z值掩码被包括在所生成的经压缩的数据块1890中。可替代地,掩码编码生成器1860可以被配置成:当所生成的数据值掩码Z值掩码指示在未压缩的数据块1810中特定数据值(如零数据值)位于每个数据值位置处的预定重复模式时,生成具有第三掩码编码值的掩码编码1868,其中在所生成的经压缩的数据块1890中仅包括掩码编码1868而不包括数据值掩码Z值掩码。
掩码编码生成器1860还可以被配置成:当所生成的数据值掩码Z值掩码指示在未压缩的数据块1810中的所有数据值位置中都不存在特定数据值时,生成具有第四掩码编码值的掩码编码1868,其中在所生成的经压缩的数据块1890中仅包括掩码编码1868而不包括数据值掩码Z值掩码,可替代地,掩码编码生成器1860可以被配置成:当所生成的数据值掩码Z值掩码不指示第一、第二或第三掩码编码值的预定重复模式中的任何一种时,生成具有第四掩码编码值的掩码编码1868,其中掩码编码1868以及数据值掩码Z值掩码被包括在所生成的经压缩的数据块1890中。
有利地,在经压缩的数据块1890中,掩码编码1868可以置于m个可变长度码字之前,其中在经压缩的数据块1890中,可以在掩码编码1868之后并且在m个可变长度码字之前提供数据值掩码Z值掩码(如果存在的话)。然而,在经压缩的数据块1890中,掩码编码1868与m个可变长度码字以及数据值掩码Z值掩码(如果存在的话)之间的其他的相对的次序也是可能的。
以上图18的公开内容可以可替代地被视为将包括一个或多个数据值的未压缩的数据块压缩为经压缩的块的设备(即,数据压缩设备);其中,所述经压缩的数据块包括掩码编码、位掩码和可变长度位序列,该可变长度位序列进一步包括利用可变长度编码进行编码所得的一个或多个经压缩的数据值,其中,经压缩的数据值的数量小于或等于未压缩的数据值的数量;其中,所述设备包括:压缩器,用于利用对应于数据值的可变长度字码压缩所述数据值;第一机构,检测不会被用于利用可变长度字码压缩数据值的所述压缩器压缩的一个或多个特定数据值;第二机构,使用第一机构的检测信息来更新指示所述特定值的位掩码;第三机构,查找关于所述特定数据值的特定模式并且生成所述掩码编码;以及第四机构,使用来自第二机构和第三机构的信息以生成使用掩码编码、位掩码和可变长度编码的经压缩的块。
能够解压缩图14和图15的所述经压缩的数据块的示例数据解压缩设备1900的框图绘制在图19中。数据解压缩设备1900基于图10的解压缩器1000构建,与图17的数据解压缩设备1700类似。就像数据解压缩设备1700,数据解压缩设备1900包括保存经压缩的数据块1910的一部分的存储单元1905(存储单元1910的大小至少是未压缩的值长度和最大的码字长度中的最大者)、码字检测单元1920、值检索单元1930、被包括在还包括掩码编码解码器1970的经解压缩的数据块生成器1940-1980中的额外逻辑1940-1960和1980。码字检测单元1720和值检索单元1730因此形成解压缩器。
解码器1970包括比较器1974和选择器1978,并且基于掩码编码1915生成选择器1980的控制信号。不像数据解压缩设备1700,数据解压缩设备1900开始于检查块的前两位(即掩码编码1915)。如果是“11”,则从存储单元1905提取经压缩的块的接下来的8位并且将其复制到Z值掩码1950。掩码的内容被用于VL值位置生成器1940(如在图17的设备中)并且被用于馈送给解码单元1970的选择器1978。分配器1960和选择器1980工作如下:
·如果掩码编码1915是“00”(Z值掩码不存在),则从解压缩器的单元1930输出的经解码的值1935馈送给其控制信号ctrl0’、ctrl1’等被设置成“0”的选择器1980。发生这一点是因为在这一情形中,在解码单元1970中的useZ-mask(使用Z掩码)、isEven(为偶数)和isOdd(为奇数)被设置成“0”。结果,选择器1978将选择第一输入(isEven或isOdd),其为“0”。
·如果掩码编码1915是“01”(Z-奇数,Z值掩码不存在),则从解压缩器的单元1930输出的经解码的值1935馈送给偶数位置(v1、v3、v5等)中的选择器1980,而奇数位置中的选择器1980(具有控制信号ctrl1’、ctrl3’等)选择值0(即特定数据值1982)。这意味着ctrl0’、ctrl2’等被设置成“0”并且ctrl1’、ctrl3’等被设置成“1”。发生这一点是因为在这一情形中,在解码单元1970中,useZ-mask是“0”,isEven是“0”并且isOdd是“1”。结果,选择器1978将选择第一输入(isEven或isOdd),导致“0”用于ctrl0’、ctrl2’等并且“1”用于ctrl1’、ctrl3’等。
·如果掩码编码1915是“10”(Z-偶数,Z值掩码不存在),则从解压缩器的单元1930输出的经解码的值1935馈送给奇数位置(v2、v4、v6等)中的选择器1980,而偶数位置中的选择器1980(具有控制信号ctrl0’、ctrl2’等)选择值0(即特定数据值1982)。这意味着ctrl0’、ctrl2’等被设置成“1”并且ctrl1’、ctrl3’等被设置成“0”。发生这一点是因为在这一情形中,在解码单元1970中,useZ-mask是“0”,isEven是“1”并且isOdd是“0”。结果,选择器1978将选择第一输入(isEven或isOdd),导致“1”用于ctrl0’、ctrl2’等并且“0”用于ctrl1’、ctrl3’等。
·如果掩码编码1915是“11”(Z值掩码存在),则从解压缩器的单元1930输出的经解码的值1935馈送给由单元1940确定的位置中的选择器1980,如在解压缩设备1700中那样,其中,选择器1980的控制信号ctrl0’、ctrl1’等与控制信号ctrl0、ctrl1等相等。发生这一点是因为在这一情形中,在解码单元1970中,useZ-mask是“1”,isEven是“0”以及isOdd是“0”。结果,所有的选择器1978将选择第二输入(ctrl0、ctrl1等),其是Z值掩码的输出。
如根据以上能够理解的,在图19中的数据解压缩设备1900中,前述经解压缩的数据块生成器1940可以被配置成:当读取的掩码编码1915具有第一掩码编码值时,通过将来自解压缩器1920-1930的经解压缩的数据值1935与处于下述预定重复模式的所述至少一个特定数据值1982(如零数据值)相组合来生成经解压缩的数据块1990,所述预定重复模式为特定数据值在经解压缩的数据块1990中的每隔一个数据值位置处。
此外,经解压缩的数据块生成器1940可以被配置成:当读取的掩码编码1915具有第二掩码编码值时,通过将来自解压缩器1920-1930的经解压缩的数据值1935与处于下述预定重复模式的所述至少一个特定数据值1982(如零数据值)组合来生成经解压缩的数据块1990,所述第二掩码编码值的预定重复模式为特定数据值在经解压缩的数据块(1990)中的每隔一个数据值位置处,然而相对于第一掩码编码值的预定重复模式偏移一个位置。
还有,经解压缩的数据块生成器1940-1980可以被配置成:当读取的掩码编码1915具有第三掩码编码值时,生成经解压缩的数据块1990,在该经解压缩的数据块1990中的每个数据值位置处都包含所述至少一个特定数据值1982(如零数据值)。
另外,经解压缩的数据块生成器1940-1980可以被配置成:当读取的掩码编码1915具有第四掩码编码值时,通过将来自解压缩器1920-1930的经解压缩的数据值1935与如由数据值掩码Z值掩码的相应掩码位置所指示的所述至少一个特定数据值1982(如零数据值)相组合来生成经解压缩的数据块1990。
这一新的解压缩器实施方式的可替代的实施方案能够由本领域技术人员实现。如果比值0更频繁地出现的另一值被使用取代值0,则可替代的实施方案也可以由本领域技术人员实现。
以上图19的公开内容可以可替代地被视为将经压缩的数据块解压缩为一个或多个数据值的设备(即,数据解压缩设备);其中,所述经压缩的数据块包括掩码编码、位掩码和可变长度位序列,其进一步包括利用可变长度编码进行编码所得的一个或多个经压缩的数据值和以位掩码编码的一个或多个特定值;其中,所述设备包括:解压缩器,用于解压缩可变长度编码以重建对应于所述可变长度字码的数据值;解码掩码编码的第一机构;第二机构,读取位掩码以确定在压缩期间在未压缩的块中是否出现特定值并且生成未压缩的块中的值位置;第三机构,使用来自第一机构和第二机构的指示以再创建所述特定数据值,使得经解压缩的数据块中的值的次序与压缩之前的原始数据块中的值的次序相同。
数据压缩设备的前述实施方式(1000、1700和1900)具有的共同之处是,需要在构成经压缩的数据块的可变长度位序列中找到长度未知的码字并将其从中提取。这是由码字检测单元1020、1720和1920完成的。码字检测是固有地有序的过程,因为解码位序列(其构成了经压缩的数据块)中的一个经压缩的数据值需要解压缩(解码)所述序列中的所有在先出现的经压缩的数据值。示例解压缩器通过下述来解决这一问题:构建码字检测单元的层次结构,该码字检测单元的层次结构对准在传入的经压缩的位序列或其一部分的不同的位位置中,使得基于在先级别的码字检测单元的结果在许多所预测的码字中选择之后的码字。由于多组比较器和优先级编码器增加了面积成本和功率消耗,这样的实施方式增添了大量资源。
另一方面,如果每个可变长度码字是提前已知的,则可以完全地避免码字检测步骤。利用可变长度霍夫曼编码进行压缩所得的数据块的表示绘制在图20中。根据本发明的实施方式的可替代表示绘制在图21中,其中,在可变长度码字的序列(可变长度编码)之前存储可变长度码字的长度值的掩码(L-掩码)。每个长度值具有取决于码字的最大大小的固定大小。如先前在本文件的背景技术部分中所提到的,这可以在设计、汇编、配置或运行时中界定特定的长度。长度0也指示数据值未压缩。在图21的经压缩的块的示例实施方式中,可变长度位序列中的第一个经压缩的数据值具有长度1(相应的码字是“0”),可变长度位序列中的第二个经压缩的数据值具有长度2(相应的码字是“11”),以此类推。以这种方式,可以通过简化解压缩器将多个经压缩的数据值的值检索并行化,但是要以增加经压缩的数据块的大小为代价,因此可能降低压缩效率。
能够形成图21的经压缩的数据块的示例数据压缩设备2300的框图绘制在图23中。数据压缩设备2300包括可变长度编码单元2320形式的压缩器、用于存储L-掩码(“L”代表码长度)的寄存器2350、以及形成经压缩的数据块生成器的逻辑2340、2360、2370。不同于图9的设备,单元2320不仅输出经编码的数据值1625还输出cL(码长度),cL被记录在L-掩码中。在设计、汇编、配置或运行时(依赖于实施方案)中基于块大小及其数据值的数量决定被包括在L-掩码中的条目的数量。例如,如果未压缩形式的数据块包括8个数据值(即,n=8),则L-掩码寄存器2350包括8个条目。条目宽度由最大码字长度确定,其可以如在先前段落中所描述的那样被界定,因此其是log2(max_cw_length)。对于在被压缩的每个值,(未在图23中示出,但是本领域技术人员可以实现计数器以监测哪个值在被压缩),cL存储在L-掩码寄存器2350的相应位置中。当数据块的所有值都已经被压缩时,使用连结器单元2370将L-掩码连结在可变长度编码2355之前,形成经压缩的块2390。因此,在所公开的实施方式的经压缩的数据块2390中,长度掩码L-掩码置于可变长度码字2325之前;然而,在其他的实施方式中,相反的次序也是可以的。
此外,如果可变长度编码单元2320不能压缩所有的可能的数据值,则需要比较器2330以及选择器2340和2360,使得该可变长度编码单元可以确定数据值是否将保持未压缩并且在L-掩码中将其大小记录为0。因此,在所有的数值都被压缩的替代实施方式中,可以省略这一逻辑,因此将cL连接到L-掩码寄存器2350。
因此,图23中的数据压缩设备2300还包括比较器2330形式的检测器,该检测器耦合到压缩器2320并且被配置成检测未压缩的数据块2310中的不能被压缩器2320压缩的数据值。经压缩的数据块生成器2340-2370被配置成:当检测器(比较器)2330已经检测到未压缩的数据块2310的数据值不能被压缩时,将具有特殊值的码长度cL存储在长度掩码L-掩码中的相应位置处,并且将这一未压缩的数据值存储在经压缩的数据块2390中。在所公开的实施方式中,码长度的特殊值是0。
此外,在图23的数据压缩设备2300中,检测器2330被配置成将未压缩的数据块2310中的不能被压缩器2320压缩的数据值检测为下述中的一种或多种:
不存在于压缩器2320的码表2322中的数据值,
存在于码表中但在压缩器的码表中缺少码字2325的数据值,
存在于码表中、在该码表中具***字2325但在压缩器的码表中被指示为无效的数据值。
还有,在图23的数据压缩设备2300中,经压缩的数据块生成器2340-2370被配置成:通过包括按未压缩的数据块2310的数据值v1-vn的次序的由压缩器2320提供的可变长度码字2325形式的经压缩的数据值和由检测器2330检测到的未压缩的数据值,来生成经压缩的数据块2390。
在数据压缩设备2300的替代实施方式中,在一些数据值保持未压缩的情况下,其可以选择不将未压缩的数据值与经压缩的数据值的码字混合到一起。替代地,所有的未压缩的数据值被保存在不同的缓冲器中,其被以相反的次序放置在末端并且被连结器2370附接到经压缩的数据块2390的末端。尽管经压缩的数据块中的经压缩的数据值和未压缩的数据值的次序与未压缩的数据块相比被打乱,但是原始的次序被维护在L-掩码中。未压缩的数据值被存储在其末端的这样的经压缩的数据块的示例实施方式例示在图22中。未压缩的数据值“500”出现在未压缩的数据块的第6个位置中。通过将0码长度放置在L-掩码的第6个位置中并且将未压缩的数据值“500”放置在经压缩的数据块的末端来对其进行记录。所述可替代的数据压缩设备的示例实施方式可以由本领域技术人员实现。
相应地,在数据压缩设备2300的替代实施方式中,经压缩的数据块生成器2340-2370被配置成:通过首先包括按未压缩的数据块2310中的数据值v1-vn的次序的、由压缩器2320提供的可变长度码字2325形式的经压缩的数据值,然后包括由检测器2330检测到的未压缩的数据值,来生成经压缩的数据块2390,或者反之亦然。有利地,对比所述未压缩的数据值在未压缩的数据块2310中的次序,将未压缩的数据值以相反的次序存储在所生成的经压缩的数据块2390中。因为长度掩码L-掩码中的所有相应的码长度cL的次序遵照未压缩的数据块2310的所有数据值v1-vn的次序,所以在经压缩的数据块2390的解压缩期间将仍然允许重建未压缩的数据块2310的按原始次序的所有数据值。
以上图23的公开内容可以可替代地被视为将包括一个或多个数据值的未压缩的数据块压缩为经压缩的块的设备(即,数据压缩设备);其中,所述经压缩的数据块包括位掩码和可变长度位序列,可变长度位序列进一步包括利用可变长度编码进行编码所得的一个或多个经压缩的数据值;其中,所述设备包括:压缩器,用于利用对应于数据值的可变长度编码压缩所述数据值的压缩器;机构,以所述位掩码记录利用可变长度编码进行编码所得的经压缩的一个或多个数据值的编码长度。
能够解压缩图21的所述经压缩的数据块的示例数据解压缩设备2400的框图绘制在图24中。数据解压缩设备2400包括被称为压缩缓冲器2405的保存经压缩的数据块2410的一部分的存储单元(所述存储单元2405的大小至少是未压缩值长度和最大的码字长度中的最大者)、码字提取器2420、L-掩码存储单元2430、值检索单元2440(与图10的解压缩器1000的值检索单元1030相似)、以及形成经解压缩的数据块生成器2450-2470的额外逻辑2450-2470。L-掩码存储单元2430保存经压缩的数据块2410的前N位并且与数据压缩设备2300的L-掩码完全兼容。例如,对于8个数据值的数据块和15位的最大码字长度而言,N是4*8=32位,同时L-掩码存储单元2430包括8个条目。经解压缩的数据块生成器2450-2470包括检查在被解压缩的经压缩的数据值实际上是经压缩的还是未压缩的(因此不需要解压缩)的比较器2450、基于比较器2450的结果在经解码的数据值2445与未压缩的数据值之间进行选择的选择器2460、以及保持所形成的具有数据值v1…vn的经解压缩的数据块2490的经解压缩的数据块存储装置2470。
将块解压缩划分为执行步骤。在每个执行步骤开始处,指示特定码字的长度的L-掩码条目被用于丢弃将在该执行步骤中经解压缩的码字,因此该码字不应该是下一执行步骤中存储在压缩缓冲器2405中的位序列的部分。所述丢弃量在图14中被称为“移位量”。如果特定L-掩码条目的长度是0,则移位量是未压缩的值的大小(同样取决于实施方式在设计、汇编、配置或运行时中被决定),例如,32位。在同一执行步骤中,CW(码字)提取器2420将存储在压缩缓冲器2405中的经压缩的序列和由L-掩码存储单元2430提供的码字长度作为输入并且从经压缩的序列提取出码字。在这一实施方式中,码字提取器2420包括从缓冲器宽度减去码字长度值的减法器以及使到单元2420的输入右移由减法器所计算的量的移位器。如果缓冲器的最左部分包含经压缩的序列的开头,则移位器右移。然后,被提取的码字被供给到使用码字确定关联的未压缩的数据值的值检索单元2440。L-掩码存储单元2430的码字长度也被用于定位值检索单元2440中的偏移2444之间的适当偏移。
例如,如绘制在图21中的经压缩的数据块01111110101110…的可变长度编码包括码字0、11、111101等,如由被保存在所述经压缩的数据块的开头中的L-掩码“1、2、6、1、4…”所指示的。因此,为了取得与码字0关联的数据值,我们需要首先丢弃位序列1111110101110…(这由CW提取器2420执行)。在同一步骤中,我们也需要从压缩缓冲器2405丢弃码字0,以便能够在第二执行步骤中取得与第二码字11关联的第二数据值。
通过将图24的示例数据解压缩设备2400与图10的解压缩设备1000作比较,前者可以更快于后者,因为包括比较器、优先编码器和移位的(解压缩设备1020的)码字检测单元1020的逻辑深度比包括算法和移位操作的(数据解压缩设备2400的)CW提取器2420的逻辑深度大。
如根据以上明显的是,在图24中的数据解压缩设备2400中,经解压缩的数据块生成器2450-2470被配置成:
·针对长度掩码L-掩码中的一个或多个位置,检测指示一个或多个对应的数据值以未压缩的形式包括在经压缩的数据块2410中的一个或多个具有特殊值的码长度;以及
·基于所检测到的一个或多个具有特殊值的码长度,通过将来自解压缩器2440的经解压缩的数据值与来自经压缩的数据块2410的未压缩形式的一个或多个对应的数据值相组合,来生成经解压缩的数据块2490。再次,码长度的特殊值有利地可以是0。
如以上对于数据压缩设备2300所解释的,在压缩器侧,未压缩的数据值不需要与处于可变长度编码2355中的经压缩的数据值相混合。可以对已这样压缩的数据块进行解压缩的数据解压缩设备2400的替代实施方式例示在图25中。与数据解压缩设备2400不同,数据解压缩设备2500还包括未压缩的值提取单元2580。设备2400与2500之间的不同之处在于,前者将从压缩缓冲器2405提取未压缩的值,而后者从包含按相反次序(即,按相反次序的第一未压缩的数据值、第二未压缩的数据值、…、最后的未压缩的数据值、可变长度编码)的经压缩的数据块2510的存储单元2584提取未压缩的值。当L-掩码条目含有长度0时,将保持未压缩的数据值的数量的计数器增量并且使用选择器2588从存储单元2584读取相应的未压缩的数据值。在这一数据解压缩设备2500中,当L-掩码条目是0时,压缩缓冲器2505的“移位量”内容是0,不同于“移位量”等于未压缩的数据值的宽度的设备2400。由此,压缩缓冲器2505可以具有更窄的宽度(即,等于最大码字长度),甚至将所公开的数据解压缩设备的逻辑深度更加最小化。
与解压缩设备1000相比,前述数据解压缩设备2400和2500已经改进了性能,然而,经压缩的数据块仍然被顺序地解压缩。可以在同一执行步骤中解压缩2个值的数据解压缩设备2400的替代实施方式例示在图26中,其中,数据解压缩设备2600从同一经压缩的数据块的两个流并行地解压缩(对于每个执行步骤)。这通过几乎复制2400的单元来完成,除了:1)值检索单元2640是一个(偏移2644和DeLUT 2648被映射到2端口存储器);以及2)L-掩码被划分为两片,2630a和2630b:2630a包含L-掩码的第一半,而2630b包含其第二半。这些单元现在被表示为“a”和“b”,例如,CW提取器2620a和CW提取器2620b,同时数据解压缩设备2600本质上包括两个解压缩器:一个解压缩器包括所有的“a”单元,另一个解压缩器包括所有的“b”单元。还存在额外的单元,加法器2690。在替代实施方式中,可以取代地复制值检索单元。
在数据解压缩设备2600中,解压缩工作如下:L-掩码的一半被放置在存储单元2630a中并且另一半被放置在2630b中。然后,累加L-掩码的第一半的长度值(2690)以计算在将被解压缩器“b”解压缩所得的经压缩的数据块内的第二部分的开头位置(以从经压缩的数据块的可变长度编码的开头跳过的位的数量测量的)。两个解压缩器各自将经解压缩的值子块保持在当所有的经压缩的数据值都被解压缩时被连结的2670a和2670b中。
在2个值在同一执行步骤中被解压缩的替代实施方式中,如果取代地在同一执行步骤中被解压缩的2个值是连续的,则L-掩码可以维持为一个并且不需要加法器2690。在这样的示例实施方式中,在CW提取器“b”之前需要额外的移位器以丢弃将由CW提取器“a”提取的码字。
在以硬件实现时,由于所述数据解压缩设备中的并行化而增加的额外面积/逻辑与用于并行化解压缩设备1000所需要的额外的逻辑相比是较小的,因为码字检测单元1020具有比相应的码字提取器2620复杂的设计。
在多个经压缩的数据值被并行地解压缩的替代实施方式中,需要由本领域技术人员对解压缩器设计进行相应的修改。
以上图24至图26的公开内容可以可替代地被视为将经压缩的数据块解压缩为一个或多个数据值的设备(即,数据解压缩设备);其中,所述经压缩的数据块包括位掩码和可变长度位序列,其进一步包括利用可变长度编码进行编码所得的一个或多个经压缩的数据值和以位掩码编码的一个或多个编码长度值;其中,所述设备包括:解压缩器,用于解压缩可变长度编码以重建对应于所述可变长度编码的数据值;第一机构,读取位掩码以确定可变长度位序列内的字码的长度;以及第二机构,使用来自第一机制的指示以从可变长度位序列提取字码并且供给解压缩器;以及形成经解压缩的块的第三机构。
在数据压缩设备和/或数据解压缩设备的前述实施方式中,可以由本领域技术人员***诸如触发器的延迟单元,使得一个块的数据值的压缩和/或一个经压缩的块的值的解压缩可以管线化为多个阶段以减少时钟周期并增加处理(压缩或/和解压缩)吞吐量。
此外,由本领域技术人员并根据本身公知的教导,通过同时压缩多个块的数据值或/和解压缩多个经压缩的块的数据值,可以将公开在本公开内容中的数据压缩设备和/或数据解压缩设备的替代实施方式并行化。在这样的情形中,需要由本领域技术人员对解压缩器设计进行相应的修改。
在图16、图18和图23中的相应的数据压缩设备1600、1800、2300可以例如以硬件实现,例如,实现为集成电路中的数字电路、专用设备(例如存储器控制器)、可编程处理设备(例如中央处理单元(CPU)或数字信号处理器(DSP)、现场可编程门阵列(FPGA),等等。描述在本公开内容中的相应的数据压缩方法的功能可以例如由被适当地配置的相应的数据压缩设备1600、1800、2300执行,或者作为包括下述代码指令的相应的计算机程序产品,所述代码指令在由通用处理设备诸如CPU或DSP加载并执行时引起相应方法的执行。
图17、图19、图24、图25和图26中的相应的数据解压缩设备1700、1900、2400、2500、2600可以例如以硬件实现,例如,实现为集成电路中的数字电路、专用设备(例如存储器控制器)、可编程处理设备(例如中央处理单元(CPU)或数字信号处理器(DSP)、现场可编程门阵列(FPGA),等等。描述在本公开内容中的相应的数据解压缩方法的功能可以例如由被适当地配置的相应的数据解压缩设备1700、1900、2400、2500、2600执行,或者作为包括下述代码指令的相应的计算机程序产品,所述代码指令在由通用处理设备诸如CPU或DSP(例如图1至图5的任何的处理单元P1…Pn)加载并执行时引起相应方法的执行。
公开于此的示例实施方式提出了用于下述数据块压缩和解压缩的方法、设备和***,以便更紧凑地存储或传输信息,所述数据块压缩和解压缩即:在计算机***的缓存/存储器子***中的或用于该缓存/存储器子***的数据块压缩和解压缩、在计算机***的数据传输子***中的或用于该数据传输子***的数据块压缩和解压缩、或者在通信网络中的或用于该通信网络的数据块压缩和解压缩。
图33例示了根据本发明的通用***3300。该***包括一个或多个存储器3310、数据压缩设备3320(诸如,例如,任何的数据压缩设备1600、1800、2300)以及数据解压缩设备3330(诸如,例如,任何的数据解压缩设备1700、1900、2400、2500、2600)。有利地,***3300是计算机***(诸如图1至图5的任何计算机***100-500),并且所述一个或多个存储器3310是一个或多个缓存存储器(诸如图1至图5的任何缓存存储器L1-L3)、一个或多个随机存取存储器(诸如图1至图5的任何存储器130-530)、或一个或多个辅助存储器。有利地,***3300是数据通信***(诸如图6至图7的通信网络600、700),其中,所述一个或多个存储器3310可以是与数据通信***中的发射节点和接收节点关联的数据缓冲器(诸如图6至图7的发射器610、710和接收器620、720)。
尽管使用示例实施方式对本发明的方面进行了描述,但是它们不限于所公开的实施方式,并覆盖由本领域技术人员能够实现的可替代的实施方式。
Claims (49)
1.一种数据压缩设备(1600;1800),用于将包括n个数据值(v1-vn)的未压缩的数据块(1610;1810)压缩为经压缩的数据块(1690;1890),所述数据压缩设备包括:
压缩器(1620;1820),所述压缩器被配置成将所述未压缩的数据块的数据值压缩为对应的可变长度码字(1625;1825);
检测器(1630;1830),所述检测器被配置成检测至少一个特定数据值(1632;1832)在所述未压缩的数据块(1610;1810)中的存在;以及
经压缩的数据块生成器(1640-1670;1840-1870),所述经压缩的数据块生成器与所述压缩器和所述检测器耦合并且被配置成通过将下述相组合来生成所述经压缩的数据块(1690;1890):
·数据值掩码(Z值掩码),所述数据值掩码包含n个掩码位置,其中,每个掩码位置指示所述未压缩的数据块(1610;1810)中的相应的数据值是否与由所述检测器(1630;1830)检测到的所述至少一个特定数据值(1632;1832)中的任一个特定数据值相等;以及
·对于所述未压缩的数据块(1610;1810)中的与所述至少一个特定数据值(1632;1832)不相等的数据值,由所述压缩器进行压缩所得的对应的可变长度码字,
其中,所述经压缩的数据块(1690;1890)包括所述数据值掩码(Z值掩码)和m个可变长度码字,其中,m≤n,并且其中,在所述经压缩的数据块(1690;1890)中不包括用于所述未压缩的数据块(1610;1810)中的与所述至少一个特定数据值(1632;1832)中的任一个特定数据值相等的数据值的可变长度码字。
2.根据权利要求1所述的数据压缩设备,其中,所述检测器(1630;1830被配置成检测一个特定数据值(1632;1832)在所述未压缩的数据块(1610;1810)中的存在,并且其中,所述数据值掩码(Z值掩码)的n个掩码位置中的每个掩码位置都包含单个位。
3.根据权利要求1所述的数据压缩设备,其中,所述检测器(1630;1830)被配置成检测多个不同的特定数据值(1632;1832)在所述未压缩的数据块(1610;1810)中的存在,并且其中,所述数据值掩码(Z值掩码)的n个掩码位置中的每个掩码位置都包含能够对多个特定数据值(1632;1832)中的任一个特定数据值进行编码的固定大小的位组合。
4.根据任一项前述权利要求所述的数据压缩设备,其中,所述至少一个特定数据值(1632;1832)中的特定数据值或每个特定数据值都是频繁出现的数据值,如果取代地使用可变长度编码,所述频繁出现的数据值可能被利用最少的位进行编码。
5.根据权利要求1-3中任一项所述的数据压缩设备,其中,所述至少一个特定数据值(1632;1832)中的特定数据值或每个特定数据值是当出现时要求非常快速的解压缩的数据值。
6.根据任一项前述权利要求所述的数据压缩设备,其中,所述至少一个特定数据值(1632;1832)中的特定数据值或一个特定数据值是0。
7.根据从属于权利要求2时的任一项前述权利要求所述的数据压缩设备,其中,所述检测器(1630;1830)包括比较器(1630;1830),所述比较器具有:
第一输入(1631a,1831a),所述第一输入被配置成接收在所述未压缩的数据块(1610;1810)中的相应的数据值位置处的数据值(v1-vn);
第二输入(1631b,1831b),所述第二输入被配置成接收所述特定数据值(1632;1832);以及
输出(1633;1833),所述输出被配置成输出所述特定数据值(1632;1832)与在所述未压缩的数据块(1610;1810)中的相应的数据值位置处的所述数据值(v1-vn)之间的比较的结果。
8.根据权利要求7所述的数据压缩设备,
其中,所述经压缩的数据块生成器(1640-1670;1840-1870)包括具有n个一位存储位置的掩码寄存器(1640;1840),每个所述一位存储位置用于所述数据值掩码(Z值掩码)的n个掩码位置中的一个掩码位置,并且
其中,所述比较器(1630;1830)的输出(1633;1833)被耦合至所述掩码寄存器(1640;1840),使得利用所述特定数据值(1632;1832)与在所述未压缩的数据块(1610;1810)中的相应的数据值位置处的所述数据值(v1-vn)之间的所述比较的结果使所述掩码寄存器(1640;1840)在其n个存储位置中的相应的一个存储位置处被更新。
9.根据权利要求7或8所述的数据压缩设备,其中,所述经压缩的数据块生成器(1640-1670;1840-1870)包括存储单元(1650;1850),所述存储单元具有:
第一输入(1651a,1851a),所述存储单元的第一输入被配置成从所述压缩器(1620;1820)接收与在所述未压缩的数据块(1610;1810)中的相应的数据值位置处的所述数据值(v1-vn)对应的可变长度码字(1625;1825)并将所接收的可变长度码字存储在所述存储单元(1650;1850)中;
输出(1653;1853),所述存储单元的输出被配置成将所存储的可变长度码字(1625;1825)输出到累积的可变长度编码(1655;1855)中;以及
第二输入(1631b,1831b),所述存储单元的第二输入被配置成接收取决于所述比较器(1630;1830)的输出(1633;1833)的控制信号,
其中,所述存储单元(1650;1850)被配置成:当由所述比较器(1630;1830)进行的所述比较的结果指示所述特定数据值(1632;1832)与在所述未压缩的数据块(1610;1810)中的相应的数据值位置处的所述数据值(v1-vn)之间匹配时,禁止所存储的可变长度码字(1625;1825)输出到所述可变长度编码(1655;1855)中。
10.根据权利要求8和9所述的数据压缩设备,其中,所述经压缩的数据块生成器(1640-1670;1840-1870)包括连结器(1670;1870),所述连结器被配置成:当所述未压缩的数据块(1610;1810)的所有n个数据值(v1-vn)都已经被处理时,通过将来自所述掩码寄存器(1640;1840)的所述数据值掩码(Z值掩码)与所述累积的可变长度编码(1655;1855)连结来生成所述经压缩的数据块(1690;1890)。
11.根据权利要求10所述的数据压缩设备,其中,在所述经压缩的数据块(1690;1890)中,所述数据值掩码(Z值掩码)置于所述累积的可变长度编码(1655;1855)之前。
12.一种数据压缩方法,用于将包括预定的n个数据值(v1-vn)的未压缩的数据块(1610;1810)压缩为经压缩的数据块(1690;1890),所述数据压缩方法包括:
将所述未压缩的数据块的数据值压缩为对应的可变长度码字(1625;1825);
检测至少一个特定数据值(1632;1832)在所述未压缩的数据块(1610;1810)中的存在;以及
通过将下述相组合来生成所述经压缩的数据块(1690;1890):
·数据值掩码(Z值掩码),所述数据值掩码包含n个掩码位置,其中,每个掩码位置指示所述未压缩的数据块(1610;1810)中的相应的数据值是否与所述至少一个特定数据值(1632;1832)中的任一个特定数据值相等;以及
·对于所述未压缩的数据块(1610;1810)中的与所述至少一个特定数据值(1632;1832)中的任一个特定数据值都不相等的数据值,对应的可变长度码字,
其中,所述经压缩的数据块(1690;1890)包括所述数据值掩码(Z值掩码)和m个可变长度码字,其中,m≤n,并且其中,在所述经压缩的数据块(1690;1890)中不包括用于所述未压缩的数据块(1610;1810)中的与所述至少一个特定数据值(1632;1832)中的任一个特定数据值相等的数据值的可变长度码字。
13.一种数据解压缩设备(1700;1900),用于将经压缩的数据块(1710;1910)解压缩为经解压缩的数据块(1790;1990),所述经解压缩的数据块包括在相应的数据值位置处的n个数据值(v1-vn),所述数据解压缩设备包括:
解压缩器(1720-1730;1920-1930),所述解压缩器被配置成将所述经压缩的数据块的可变长度码字(1625;1825)解压缩为对应的经解压缩的数据值(1735;1935);以及
经解压缩的数据块生成器(1740-1780;1940-1980),所述经解压缩的数据块生成器被配置成:
从所述经压缩的数据块(1710;1910)读取包含n个掩码位置的数据值掩码(Z值掩码),其中,每个掩码位置指示未压缩的数据块(1610;1810)中的相应的数据值在产生所述经压缩的数据块(1690/1710;1890/1910)的数据压缩之前是否与至少一个特定数据值(1632;1832)中的任一个特定数据值相等;并且
基于所述数据值掩码(Z值掩码),通过将来自所述解压缩器(1720-1730;1920-1930)的经解压缩的数据值与由所述数据值掩码(Z值掩码)的相应的掩码位置指示的所述至少一个特定数据值(1782;1982)相组合,来生成所述经解压缩的数据块(1790;1990),
其中,所生成的经解压缩的数据块(1790;1990)的数据值的次序与所述数据值在所述数据压缩之前在所述未压缩的数据块(1610;1810)中出现的次序相同。
14.根据权利要求13所述的数据解压缩设备,其中,所述数据值掩码(Z值掩码)的n个掩码位置中的每个掩码位置都包含指示或不指示一个特定数据值(1782;1982)的单个位。
15.根据权利要求13所述的数据解压缩设备,其中,所述数据值掩码(Z值掩码)的n个掩码位置中的每个掩码位置都包含能够解码多个特定数据值(1782;1982)中的任一个特定数据值的固定大小的位组合。
16.根据权利要求13-15中任一项所述的数据解压缩设备,其中,所述至少一个特定数据值(1782;1982)中的特定数据值或一个特定数据值是0。
17.根据权利要求14或从属于权利要求14时的权利要求16中任一项所述的数据解压缩设备,其中,所述经解压缩的数据块生成器(1740-1780;1940-1980)包括:
值位置生成器(1740;1940);
值位置分配器(1760;1960);以及
多个选择器(1780;1980),每个选择器用于所述经解压缩的数据块(1790;1990)的n个数据值位置中的一个数据值位置,
其中,所述值位置生成器(1740;1940)被配置成控制所述值位置分配器(1760;1960)和所述多个选择器(1780;1980),使得当所述数据值掩码(Z值掩码)的相应的掩码位置指示所述特定数据值(1782;1982)时,从相应的选择器接收所述特定数据值(1782;1982)并使所述特定数据值包括在所述经解压缩的数据块(1790;1990)中位于相应的数据值位置处,并且使得当所述数据值掩码(Z值掩码)的相应的掩码位置不指示所述特定数据值(1782;1982)时,从所述解压缩器(1720-1730;1920-1930)接收对应的经解压缩的数据值并使所述经解压缩的数据值包括在所述经解压缩的数据块(1790;1990)中位于相应的数据值位置处。
18.一种数据解压缩方法,用于将经压缩的数据块(1710;1910)解压缩为经解压缩的数据块(1790;1990),所述经解压缩的数据块包括在相应的数据值位置处的n个数据值(v1-vn),所述数据解压缩方法包括:
将所述经压缩的数据块的可变长度码字(1625;1825)解压缩为对应的经解压缩的数据值(1735;1935);
从所述经压缩的数据块(1710;1910)读取包含n个掩码位置的数据值掩码(Z值掩码),其中,每个掩码位置指示未压缩的数据块(1610;1810)中的相应的数据值在产生所述经压缩的数据块(1690/1710;1890/1910)的数据压缩之前是否与至少一个特定数据值(1632;1832)中的任一个特定数据值相等;以及
基于所述数据值掩码(Z值掩码),通过将经解压缩的数据值与由所述数据值掩码(Z值掩码)的相应的掩码位置指示的所述至少一个特定数据值(1782;1982)相组合,来生成所述经解压缩的数据块(1790;1990),
其中,所生成的经解压缩的数据块(1790;1990)的数据值的次序与所述数据值在所述数据压缩之前在所述未压缩的数据块(1610;1810)中出现的次序相同。
19.一种数据压缩设备(1800),用于将包括n个数据值(v1-vn)的未压缩的数据块(1810)压缩为经压缩的数据块(1890),所述数据压缩设备包括:
压缩器(1820),所述压缩器被配置成将所述未压缩的数据块的数据值压缩为对应的可变长度码字(1825);
检测器(1830),所述检测器被配置成检测至少一个特定数据值(1832)在所述未压缩的数据块(1810)中的存在;以及
经压缩的数据块生成器(1840-1870),所述经压缩的数据块生成器与所述压缩器和所述检测器耦合,并且被配置成生成包含n个掩码位置的数据值掩码(Z值掩码),其中,每个掩码位置指示所述未压缩的数据块(1810)中的相应的数据值是否与由所述检测器(1830)检测到的所述至少一个特定数据值(1832)中的任一个特定数据值相等,
其中,所述经压缩的数据块生成器(1840-1870)包括掩码编码生成器(1860),所述掩码编码生成器被配置成:
分析所生成的数据值掩码(Z值掩码),包括确定所述数据值掩码是否与多种掩码模式中的任一种掩码模式匹配;以及
生成掩码编码(1868)以代表所述分析的结果;
其中,所述经压缩的数据块生成器(1840-1870)还被配置成通过将至少下述相组合来生成所述经压缩的数据块(1890):
·所生成的掩码编码(1868);以及
·对于所述未压缩的数据块(1810)中的与所述至少一个特定数据值(1832)中的任一个特定数据值都不相等的数据值,由所述压缩器进行压缩所得的对应的可变长度码字,
其中,所述经压缩的数据块(1890)包括所生成的掩码编码(1868)和m个可变长度码字,其中,m≤n,并且其中,在所述经压缩的数据块(1890)中不包括用于所述未压缩的数据块(1810)中的与所述至少一个特定数据值(1832)中的任一个特定数据值相等的数据值的可变长度码字,并且
其中,所述经压缩的数据块(1890)还包括所述数据值掩码(Z值掩码),除非由所述掩码编码生成器(1860)进行的所述分析的结果是所生成的数据值掩码(Z值掩码)指示所述未压缩的数据块(1810)中的特定数据值的预定重复模式。
20.根据权利要求19所述的数据压缩设备,其中,所述掩码编码生成器(1860)被配置成:当所生成的数据值掩码(Z值掩码)指示在所述未压缩的数据块(1810)中特定数据值位于每隔一个数据值位置处的预定重复模式时,生成具有第一掩码编码值的所述掩码编码(1868),并且其中,在所生成的经压缩的数据块(1890)中仅包括所述掩码编码(1868)而不包括所述数据值掩码(Z值掩码)。
21.根据权利要求20所述的数据压缩设备,其中,所述掩码编码生成器(1860)被配置成:当所生成的数据值掩码(Z值掩码)指示在所述未压缩的数据块(1810)中特定数据值位于每隔一个数据值位置处、然而相对于所述第一掩码编码值的预定重复模式偏移一个位置的预定重复模式时,生成具有第二掩码编码值的所述掩码编码(1868),并且其中,在所生成的经压缩的数据块(1890)中仅包括所述掩码编码(1868)而不包括所述数据值掩码(Z值掩码)。
22.根据权利要求21所述的数据压缩设备,其中,所述掩码编码生成器(1860)被配置成:当所生成的数据值掩码(Z值掩码)指示在所述未压缩的数据块(1810)中的至少一个数据值位置中存在特定数据值时,生成具有第三掩码编码值的所述掩码编码(1868),并且其中,在所生成的经压缩的数据块(1890)中包括所述掩码编码(1868)以及所述数据值掩码(Z值掩码)。
23.根据权利要求22所述的数据压缩设备,其中,所述掩码编码生成器(1860)被配置成:当所生成的数据值掩码(Z值掩码)指示在所述未压缩的数据块(1810)中的所有数据值位置中都不存在特定数据值时,生成具有第四掩码编码值的所述掩码编码(1868),并且其中,在所生成的经压缩的数据块(1890)中仅包括所述掩码编码(1868)而不包括所述数据值掩码(Z值掩码)。
24.根据权利要求19-23中任一项所述的数据压缩设备,其中,在所述经压缩的数据块(1890)中,所述掩码编码(1868)置于所述m个可变长度码字之前,并且其中,在所述经压缩的数据块(1890)中,如果有所述数据值掩码(Z值掩码),则所述数据值掩码设置在所述掩码编码(1868)之后并且在所述m个可变长度码字之前。
25.一种数据压缩方法,用于将包括n个数据值(v1-vn)的未压缩的数据块(1810)压缩为经压缩的数据块(1890),所述数据压缩方法包括:
将所述未压缩的数据块的数据值压缩为对应的可变长度码字(1825);
检测至少一个特定数据值(1832)在所述未压缩的数据块(1810)中的存在;
生成包含n个掩码位置的数据值掩码(Z值掩码),其中,每个掩码位置指示所述未压缩的数据块(1810)中的相应的数据值是否与所述至少一个特定数据值(1832)中的任一个特定数据值相等;
分析所生成的数据值掩码(Z值掩码),包括确定所述数据值掩码是否与多种掩码模式中的任一种掩码模式匹配;
生成掩码编码(1868)以代表所述分析的结果;以及
通过将至少下述相组合来生成所述经压缩的数据块(1890):
·所生成的掩码编码(1868);以及
·对于所述未压缩的数据块(1810)中的与所述至少一个特定数据值(1832)中的任一个特定数据值都不相等的数据值,由所述压缩器进行压缩所得的对应的可变长度码字,
其中,所述经压缩的数据块(1890)包括所生成的掩码编码(1868)和m个可变长度码字,其中,0≤m≤n,并且其中,在所述经压缩的数据块(1890)中不包括用于所述未压缩的数据块(1810)中的与所述至少一个特定数据值(1832)中的任一个特定数据值相等的数据值的可变长度码字,并且
其中,所述经压缩的数据块(1890)还包括所述数据值掩码(Z值掩码),除非所述分析步骤的结果是所生成的数据值掩码(Z值掩码)指示所述未压缩的数据块(1810)中的特定数据值的预定重复模式。
26.一种数据解压缩设备(1900),用于将经压缩的数据块(1910)解压缩为经解压缩的数据块(1990),所述经解压缩的数据块包括在相应的数据值位置处的n个数据值(v1-vn),所述数据解压缩设备包括:
解压缩器(1920-1930),所述解压缩器被配置成将所述经压缩的数据块的可变长度码字(1825)解压缩为对应的经解压缩的数据值(1935);以及
经解压缩的数据块生成器(1940-1980),所述经解压缩的数据块生成器被配置成:
从所述经压缩的数据块(1910)读取掩码编码(1915),所述掩码编码(1915)代表多种掩码模式中的任一种掩码模式;
当由所读取的掩码编码(1915)代表的所述掩码模式不指示在产生所述经压缩的数据块(1890/1910)的数据压缩之前至少一个特定数据值中的任何特定数据值在所述未压缩的数据块(1810)中的预定重复模式时,从所述经压缩的数据块(1910)读取包含n个掩码位置的数据值掩码(Z值掩码),其中,每个掩码位置指示所述未压缩的数据块(1810)中的相应的数据值在数据压缩之前是否等于所述至少一个特定数据值(1832)中的任一个特定数据值;以及
基于所述掩码编码(1915)及在适用情况下的所述数据值掩码(Z值掩码),通过将下述两者相组合来生成所述经解压缩的数据块(1990),所述两者中的一者是来自所述解压缩器(1920-1930)的经解压缩的数据值,所述两者中的另一者是通过由所述掩码编码(1915)代表的所述预定重复模式指示的或者通过在适用情况下的所述数据值掩码(Z值掩码)的相应的掩码位置指示的所述至少一个特定数据值(1982),
其中,所生成的经解压缩的数据块(1990)的数据值的次序与所述数据值在所述数据压缩之前在所述未压缩的数据块(1810)中出现的次序相同。
27.根据权利要求26所述的数据解压缩设备,其中,所述经解压缩的数据块生成器(1940-1980)被配置成当所读取的掩码编码(1915)具有第一掩码编码值时,通过下述方式来生成所述经解压缩的数据块(1990):所述方式即将来自所述解压缩器(1920-1930)的经解压缩的数据值与处于下述预定重复模式的所述至少一个特定数据值(1982)相组合,所述预定重复模式为特定数据值在所述未压缩的数据块(1990)中的每隔一个数据值位置处。
28.根据权利要求27所述的数据解压缩设备,其中,所述经解压缩的数据块生成器(1940-1980)被配置成当所读取的掩码编码(1915)具有第二掩码编码值时,通过下述方式来生成所述经解压缩的数据块(1990):所述方式即将来自所述解压缩器(1920-1930)的经解压缩的数据值与处于下述预定重复模式的所述至少一个特定数据值(1982)相组合,所述第二掩码编码值的预定重复模式为特定数据值在所述经解压缩的数据块(1990)中的每隔一个数据值位置处,然而相对于所述第一掩码编码值的预定重复模式偏移一个位置。
29.根据权利要求28所述的数据解压缩设备,其中,所述经解压缩的数据块生成器(1940-1980)被配置成:当所读取的掩码编码(1915)具有第三掩码编码值时,通过将来自所述解压缩器(1920-1930)的经解压缩的数据值与由所述数据值掩码(Z值掩码)的相应的掩码位置指示的所述至少一个特定数据值(1982)相组合,来生成所述经解压缩的数据块(1990)。
30.根据权利要求29所述的数据解压缩设备,其中,所述经解压缩的数据块生成器(1940-1980)被配置成:当所读取的掩码编码(1915)具有第四掩码编码值时,生成包含来自所述解压缩器(1920-1930)的所有的经解压缩的数据值的所述经解压缩的数据块(1990)。
31.一种数据解压缩方法,用于将经压缩的数据块(1910)解压缩为经解压缩的数据块(1990),所述经解压缩的数据块包括在相应的数据值位置处的n个数据值(v1-vn),所述数据解压缩方法包括:
将所述经压缩的数据块的可变长度码字(1825)解压缩为对应的经解压缩的数据值(1935);
从所述经压缩的数据块(1910)读取掩码编码(1915),所述掩码编码(1915)代表多种掩码模式中的任一种掩码模式;
当由所读取的掩码编码(1915)代表的所述掩码模式不指示在产生所述经压缩的数据块(1890/1910)的数据压缩之前至少一个特定数据值中的任何特定数据值在未压缩的数据块(1810)中的预定重复模式时,从所述经压缩的数据块(1910)读取包含n个掩码位置的数据值掩码(Z值掩码),其中,每个掩码位置指示所述未压缩的数据块(1810)中的相应的数据值在数据压缩之前是否等于所述至少一个特定数据值(1832)中的任一个特定数据值;以及
基于所述掩码编码(1915)及在适用情况下的所述数据值掩码(Z值掩码),通过将下述两者相组合来生成所述经解压缩的数据块(1990),所述两者中的一者是经解压缩的数据值,所述两者中的另一者是通过由所述掩码编码(1915)代表的所述预定重复模式指示的或者通过在适用情况下的所述数据值掩码(Z值掩码)的相应的掩码位置指示的所述至少一个特定数据值(1982),
其中,所生成的经解压缩的数据块(1990)的数据值的次序与所述数据值在所述数据压缩之前在所述未压缩的数据块(1810)中出现的次序相同。
32.一种数据压缩设备(2300),用于将包括n个数据值(v1-vn)的未压缩的数据块(2310)压缩为经压缩的数据块(2390),所述数据压缩设备包括:
压缩器(2320),所述压缩器被配置成将所述未压缩的数据块的数据值压缩为对应的可变长度码字(2325),并且输出所述可变长度码字(2325)以及其相应的码长度(cL);
经压缩的数据块生成器(2340-2370),所述经压缩的数据块生成器与所述压缩器耦合并且包括具有n个存储位置的长度掩码寄存器(2350),每个所述存储位置用于所述未压缩的数据块(2310)的n个数据值(v1-vn)中的一个数据值,所述长度掩码寄存器(2350)被配置用于存储n个位置的长度掩码(L-掩码),
其中,所述经压缩的数据块生成器(2340-2370)被配置成在所述长度掩码(L-掩码)的相应位置处存储由所述压缩器(2320)提供的可变长度码字(2325)的相应码长度(cL),以及
其中,所述经压缩的数据块生成器(2340-2370)被配置成通过将下述相组合来生成所述经压缩的数据块(2390):
·存储在所述长度掩码寄存器(2350)中的所述长度掩码(L-掩码);以及
·由所述压缩器(2320)提供的可变长度码字(2325)形式的经压缩的数据值。
33.根据权利要求32所述的数据压缩设备,其中,在所述经压缩的数据块(2390)中,所述长度掩码(L-掩码)置于所述可变长度码字(2325)之前。
34.根据权利要求32或33所述的数据压缩设备,还包括检测器(2330),所述检测器与所述压缩器(2320)耦合并且被配置成检测所述未压缩的数据块(2310)中的不能被所述压缩器(2320)压缩的数据值,
其中,所述经压缩的数据块生成器(2340-2370)被配置成:当所述检测器(2330)已经检测到所述未压缩的数据块(2310)的数据值不能被压缩时将具有特殊值的码长度(cL)存储在所述长度掩码(L-掩码)中的相应位置处,并将该未压缩的数据值存储在所述经压缩的数据块(2390)中。
35.根据权利要求34所述的数据压缩设备,其中,所述码长度的特殊值是0。
36.根据权利要求34或35所述的数据压缩设备,其中,所述检测器(2330)被配置成将所述未压缩的数据块(2310)中的不能被所述压缩器(2320)压缩的数据值检测为下述中的一种或多种:
不存在于所述压缩器(2320)的码表(2322)中的数据值,
存在于所述码表中但在所述压缩器的所述码表中缺少码字(2325)的数据值,
存在于所述码表中、在所述码表中具***字(2325)但在所述压缩器的所述码表中被指示为无效的数据值。
37.根据权利要求34-36中任一项所述的数据压缩设备,其中,所述经压缩的数据块生成器(2340-2370)被配置成:通过包括按所述未压缩的数据块(2310)中的所述数据值(v1-vn)的次序的由所述压缩器(2320)提供的可变长度码字(2325)形式的经压缩的数据值和由所述检测器(2330)检测到的未压缩的数据值,来生成所述经压缩的数据块(2390)。
38.根据权利要求34-36中任一项所述的数据压缩设备,其中,所述经压缩的数据块生成器(2340-2370)被配置成通过下述方式来生成所述经压缩的数据块(2390):所述方式即通过首先包括按所述未压缩的数据块(2310)中的所述数据值(v1-vn)的次序的、由所述压缩器(2320)提供的可变长度码字(2325)形式的经压缩的数据值,然后包括由所述检测器(2330)检测到的未压缩的数据值,或者反之亦然,其中,所述长度掩码(L-掩码)中的所有相应的码长度(cL)的次序遵照所述未压缩的数据块(2310)的所有数据值(v1-vn)的次序,由此允许在所述经压缩的数据块(2390)的解压缩期间重建所述未压缩的数据块(2310)的按原始次序的所有数据值。
39.根据权利要求38所述的数据压缩设备,其中,所述未压缩的数据值以与其在所述未压缩的数据块(2310)中的次序相比相反的次序存储在所生成的经压缩的数据块(2390)中。
40.一种数据压缩方法,用于将包括n个数据值(v1-vn)的未压缩的数据块(2310)压缩为经压缩的数据块(2390),所述数据压缩方法包括:
将所述未压缩的数据块的数据值压缩为对应的可变长度码字(2325),并且输出所述可变长度码字(2325)以及其相应的码长度(cL);
将n个位置的长度掩码(L-掩码)存储在具有n个存储位置的长度掩码寄存器(2350)中,每个所述存储位置用于所述未压缩的数据块(2310)的n个数据值(v1-vn)中的一个数据值,
将可变长度码字(2325)的相应码长度(cL)存储在所述长度掩码(L-掩码)中的相应位置处,以及
通过将下述相组合来生成所述经压缩的数据块(2390):
·存储在所述长度掩码寄存器(2350)中的所述长度掩码(L-掩码);以及
·所述可变长度码字(2325)形式的经压缩的数据值。
41.一种数据解压缩设备(2400;2500;2600),用于将经压缩的数据块(2410;2510;2610)解压缩为经解压缩的数据块(2490;2590;2690),所述经解压缩的数据块包括在相应的数据值位置处的n个数据值(v1-vn),所述数据解压缩设备包括:
解压缩器(2440;2540;2640),所述解压缩器被配置成将所述经压缩的数据块的可变长度码字解压缩为对应的经解压缩的数据值(2445;2545;2645);
提取器机构(2420-2435;2520-2535;2620-2635),所述提取器机构用于:从所述经压缩的数据块(2410;2510;2610)读取n个位置的长度掩码(L-掩码),根据所述长度掩码(L-掩码)确定所述经压缩的数据块(2410;2510;2610)中的可变长度码字的相应的码长度,基于所确定的相应的码长度从所述经压缩的数据块(2410;2510;2610)提取相应的可变长度码字,并且将所提取的相应的可变长度码字提供给所述解压缩器(2440;2540;2640);以及
经解压缩的数据块生成器(2450-2470;2550-2570;2650-2670),所述经解压缩的数据块生成器被配置成根据来自所述解压缩器(2440;2540;2640)的所述经解压缩的数据值生成所述经解压缩的数据块(2490;2590;2690),
其中,所生成的经解压缩的数据块(2490;2590;2690)的数据值的次序与所述数据值在数据压缩之前在所述未压缩的数据块(2310)中出现的次序相同。
42.根据权利要求41所述的数据解压缩设备,其中,所述经解压缩的数据块生成器(2450-2470;2550-2570;2650-2670)被配置成:
针对所述长度掩码(L-掩码)中的一个或多个位置,检测具有特殊值的一个或多个码长度,所述特殊值指示一个或多个对应的数据值以未压缩的形式包括在所述经压缩的数据块(2410;2510,2584;2610)中;以及
基于所检测到的具有所述特殊值的一个或多个码长度,通过将来自所述解压缩器(2440;2540;2640)的经解压缩的数据值与来自所述经压缩的数据块(2410;2510;2610)的未压缩形式的所述一个或多个对应的数据值相组合来生成所述经解压缩的数据块(2490;2590;2690)。
43.根据权利要求42所述的数据解压缩设备,其中,码长度的所述特殊值是0。
44.一种数据解压缩方法,用于将经压缩的数据块(2410;2510;2610)解压缩为经解压缩的数据块(2490;2590;2690),所述经解压缩的数据块包括在相应的数据值位置处的n个数据值(v1-vn),所述数据解压缩方法包括:
从所述经压缩的数据块(2410;2510;2610)读取n个位置的长度掩码(L-掩码);
根据所述长度掩码(L-掩码)确定所述经压缩的数据块(2410;2510;2610)中的可变长度码字的相应的码长度;
基于所确定的相应的码长度从所述经压缩的数据块(2410;2510;2610)提取相应的可变长度码字;
将所提取的可变长度码字解压缩为对应的经解压缩的数据值(2445;2545;2645);以及
根据所述经解压缩的数据值生成所述经解压缩的数据块(2490;2590;2690),
其中,所生成的经解压缩的数据块(2490;2590;2690)的数据值的次序与所述数据值在数据压缩之前在所述未压缩的数据块(2310)中出现的次序相同。
45.一种***(3300),所述***包括一个或多个存储器(3310)、根据权利要求1-11、19-24或32-39中任一项所述的数据压缩设备(3320;1600;1800)、以及根据权利要求13-17、26-30或41-43中任一项所述的数据解压缩设备(3330;1700,1900)。
46.根据权利要求45所述的***(3300),其中,所述***是计算机***(100;200;300;400;500),并且其中,所述一个或多个存储器(3310)来自由下述构成的组:
缓存存储器(L1-L3),
随机存取存储器(130;230;330;430;530),以及
辅助存储器。
47.根据权利要求45所述的***(1900),其中,所述***是数据通信***(600;700),并且其中,所述一个或多个存储器(3310)是数据缓冲器。
48.一种计算机程序产品,所述计算机程序产品包括代码指令,所述代码指令在由处理设备加载并执行时引起根据权利要求12、25或40所述的方法的执行。
49.一种计算机程序产品,所述计算机程序产品包括代码指令,所述代码指令在由处理设备加载并执行时引起根据权利要求18、31或44所述的方法的执行。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE1650119 | 2016-01-29 | ||
SE1650119-9 | 2016-01-29 | ||
SE1650767A SE540178C2 (en) | 2016-01-29 | 2016-06-01 | Methods, devices and systems for compressing and decompressing data |
SE1650767-5 | 2016-06-01 | ||
PCT/SE2017/050078 WO2017131579A1 (en) | 2016-01-29 | 2017-01-30 | Methods, devices and systems for compressing and decompressing data |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108886367A true CN108886367A (zh) | 2018-11-23 |
CN108886367B CN108886367B (zh) | 2022-01-11 |
Family
ID=59398468
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780015262.7A Active CN108702160B (zh) | 2016-01-29 | 2017-01-27 | 用于压缩和解压缩数据的方法、设备和*** |
CN201780015236.4A Active CN108886367B (zh) | 2016-01-29 | 2017-01-30 | 用于压缩和解压缩数据的方法、设备和*** |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780015262.7A Active CN108702160B (zh) | 2016-01-29 | 2017-01-27 | 用于压缩和解压缩数据的方法、设备和*** |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN108702160B (zh) |
WO (2) | WO2017131578A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111814009A (zh) * | 2020-06-28 | 2020-10-23 | 四川长虹电器股份有限公司 | 一种基于搜索引擎检索信息模式匹配的bf改进算法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7010548B2 (ja) | 2015-05-21 | 2022-01-26 | ゼロポイント テクノロジーズ アーベー | ハイブリッドデータ圧縮および解凍のための方法、デバイス、およびシステム |
SE540178C2 (en) | 2016-01-29 | 2018-04-24 | Zeropoint Tech Ab | Methods, devices and systems for compressing and decompressing data |
US11658679B2 (en) | 2018-12-21 | 2023-05-23 | Zeropoint Technologies Ab | Methods, devices and systems for efficient compression and decompression for higher throughput |
RU2729509C1 (ru) * | 2019-12-23 | 2020-08-07 | федеральное государственное автономное образовательное учреждение высшего образования "Национальный исследовательский ядерный университет МИФИ" (НИЯУ МИФИ) | Устройство для распаковки данных |
US10911267B1 (en) * | 2020-04-10 | 2021-02-02 | Apple Inc. | Data-enable mask compression on a communication bus |
US11362672B2 (en) * | 2020-05-08 | 2022-06-14 | Qualcomm Incorporated | Inline decompression |
SE544557C2 (en) * | 2020-12-01 | 2022-07-12 | Zeropoint Tech Ab | Systems, methods and devices for exploiting value similarity in computer memories |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020066007A1 (en) * | 1992-06-30 | 2002-05-30 | Wise Adrian P. | Multistandard video decoder and decompression system for processing encoded bit streams including pipeline processing and methods relating thereto |
US20030090398A1 (en) * | 2001-11-07 | 2003-05-15 | International Business Machines Corporation | System and method for efficient data compression |
US20030090709A1 (en) * | 2001-11-07 | 2003-05-15 | International Business Machines Corporation | System and method for efficient compression of raster image data |
US20040178933A1 (en) * | 2003-03-11 | 2004-09-16 | Canon Kabushiki Kaisha | Encoding method and encoding apparatus, and computer program and computer readable stroage medium |
CN1599258A (zh) * | 2004-06-25 | 2005-03-23 | 浙江大学 | 一种适用于各种格式红外控制信号的编码方式 |
CN1606038A (zh) * | 2003-10-29 | 2005-04-13 | 威盛电子股份有限公司 | 将位样型或比特流中数据压缩的装置 |
US20080317299A1 (en) * | 2007-06-21 | 2008-12-25 | Canon Kabushiki Kaisha | Image processing apparatus and control method thereof |
US20130170556A1 (en) * | 2011-12-29 | 2013-07-04 | Microsoft Corporation | Variable length coding and decoding using counters |
CN103563255A (zh) * | 2011-04-11 | 2014-02-05 | 马维尔国际贸易有限公司 | 用于可执行代码的压缩与实时解压缩的方法 |
US9031852B2 (en) * | 2012-08-01 | 2015-05-12 | Nintendo Co., Ltd. | Data compression apparatus, computer-readable storage medium having stored therein data compression program, data compression system, data compression method, data decompression apparatus, data compression/decompression apparatus, and data structure of compressed data |
CN105264779A (zh) * | 2013-01-22 | 2016-01-20 | 阿尔特拉公司 | 使用simd指令的数据压缩和解压 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805932A (en) * | 1994-04-22 | 1998-09-08 | Sony Corporation | System for transmitting compressed data if compression ratio is at least preset ratio and pre-compressed data if compression ratio is less than preset ratio |
US6272453B1 (en) * | 1998-01-05 | 2001-08-07 | Trw Inc. | Concurrent legacy and native code execution techniques |
US6492991B1 (en) * | 1998-08-28 | 2002-12-10 | Ati International Srl | Method and apparatus for controlling compressed Z information in a video graphics system |
JP4479530B2 (ja) * | 2004-12-28 | 2010-06-09 | カシオ電子工業株式会社 | データ圧縮装置、及びデータ復元装置 |
JP4801778B2 (ja) * | 2007-10-18 | 2011-10-26 | 富士通株式会社 | 映像圧縮符号化装置、映像復元装置、映像圧縮プログラム、及び、映像復元プログラム |
JP5051087B2 (ja) * | 2008-09-30 | 2012-10-17 | ヤマハ株式会社 | 可逆圧縮符号化装置および可逆復号化装置 |
WO2013048531A1 (en) * | 2011-10-01 | 2013-04-04 | Intel Corporation | Compression format for high bandwidth dictionary compression |
US8497788B1 (en) * | 2012-04-25 | 2013-07-30 | Pure Storage Inc. | Efficient techniques for aligned fixed-length compression |
-
2017
- 2017-01-27 CN CN201780015262.7A patent/CN108702160B/zh active Active
- 2017-01-27 WO PCT/SE2017/050074 patent/WO2017131578A1/en active Application Filing
- 2017-01-30 CN CN201780015236.4A patent/CN108886367B/zh active Active
- 2017-01-30 WO PCT/SE2017/050078 patent/WO2017131579A1/en active Application Filing
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020066007A1 (en) * | 1992-06-30 | 2002-05-30 | Wise Adrian P. | Multistandard video decoder and decompression system for processing encoded bit streams including pipeline processing and methods relating thereto |
US20030090398A1 (en) * | 2001-11-07 | 2003-05-15 | International Business Machines Corporation | System and method for efficient data compression |
US20030090709A1 (en) * | 2001-11-07 | 2003-05-15 | International Business Machines Corporation | System and method for efficient compression of raster image data |
US20040178933A1 (en) * | 2003-03-11 | 2004-09-16 | Canon Kabushiki Kaisha | Encoding method and encoding apparatus, and computer program and computer readable stroage medium |
CN1606038A (zh) * | 2003-10-29 | 2005-04-13 | 威盛电子股份有限公司 | 将位样型或比特流中数据压缩的装置 |
CN1599258A (zh) * | 2004-06-25 | 2005-03-23 | 浙江大学 | 一种适用于各种格式红外控制信号的编码方式 |
US20080317299A1 (en) * | 2007-06-21 | 2008-12-25 | Canon Kabushiki Kaisha | Image processing apparatus and control method thereof |
CN103563255A (zh) * | 2011-04-11 | 2014-02-05 | 马维尔国际贸易有限公司 | 用于可执行代码的压缩与实时解压缩的方法 |
US20130170556A1 (en) * | 2011-12-29 | 2013-07-04 | Microsoft Corporation | Variable length coding and decoding using counters |
US9031852B2 (en) * | 2012-08-01 | 2015-05-12 | Nintendo Co., Ltd. | Data compression apparatus, computer-readable storage medium having stored therein data compression program, data compression system, data compression method, data decompression apparatus, data compression/decompression apparatus, and data structure of compressed data |
CN105264779A (zh) * | 2013-01-22 | 2016-01-20 | 阿尔特拉公司 | 使用simd指令的数据压缩和解压 |
Non-Patent Citations (1)
Title |
---|
高海春等: "数字化语音存储与回放***", 《华东船舶工业学院学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111814009A (zh) * | 2020-06-28 | 2020-10-23 | 四川长虹电器股份有限公司 | 一种基于搜索引擎检索信息模式匹配的bf改进算法 |
CN111814009B (zh) * | 2020-06-28 | 2022-03-01 | 四川长虹电器股份有限公司 | 一种基于搜索引擎检索信息的模式匹配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108702160A (zh) | 2018-10-23 |
WO2017131579A1 (en) | 2017-08-03 |
CN108886367B (zh) | 2022-01-11 |
WO2017131578A1 (en) | 2017-08-03 |
CN108702160B (zh) | 2022-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108886367A (zh) | 用于压缩和解压缩数据的方法、设备和*** | |
US10268380B2 (en) | Methods, devices and systems for semantic-value data compression and decompression | |
CA1223965A (en) | High speed data compression and decompression apparatus and method | |
US10831655B2 (en) | Methods, devices and systems for compressing and decompressing data | |
CN101095284B (zh) | 用于有选择地压缩和解压缩数据的设备与方法 | |
CN105207678B (zh) | 一种改进型lz4压缩算法的硬件实现*** | |
US7538696B2 (en) | System and method for Huffman decoding within a compression engine | |
CN107925418A (zh) | 用于混合式数据压缩和解压缩的方法、设备和*** | |
US20090060047A1 (en) | Data compression using an arbitrary-sized dictionary | |
US9479194B2 (en) | Data compression apparatus and data decompression apparatus | |
CN109075798B (zh) | 可变大小符号基于熵的数据压缩 | |
CN112968706B (zh) | 数据压缩方法、fpga芯片及fpga在线升级方法 | |
CN108122189B (zh) | 硬件中的顶点属性压缩和解压缩 | |
CN103095305A (zh) | 一种硬件lz77的压缩实现***及方法 | |
US6748520B1 (en) | System and method for compressing and decompressing a binary code image | |
WO2020114283A1 (zh) | 数据处理方法及装置 | |
KR20200121760A (ko) | 인코딩된 데이터에 대한 조건부 트랜스코딩 | |
CN1656688B (zh) | 在压缩之前处理数字数据 | |
US7612692B2 (en) | Bidirectional context model for adaptive compression | |
CN116318171B (zh) | Lz4解压缩硬件加速实现/压缩方法、装置、介质及芯片 | |
CN111342844B (zh) | 一种基于lzw编码与改进游程编码的雷达数据无损压缩及解压方法 | |
JPH03209923A (ja) | データ圧縮方式 | |
El Qawasmeh et al. | Development and investigation of a new compression technique using Boolean minimizations | |
CN116131863A (zh) | 一种面向多种可变字长编码的码字拼接装置 | |
CN112200301A (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 |