CN107925418A - 用于混合式数据压缩和解压缩的方法、设备和系统 - Google Patents
用于混合式数据压缩和解压缩的方法、设备和系统 Download PDFInfo
- Publication number
- CN107925418A CN107925418A CN201680042384.0A CN201680042384A CN107925418A CN 107925418 A CN107925418 A CN 107925418A CN 201680042384 A CN201680042384 A CN 201680042384A CN 107925418 A CN107925418 A CN 107925418A
- Authority
- CN
- China
- Prior art keywords
- data
- hybrid
- block
- compression
- scheme
- 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
-
- 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/6064—Selection of Compressor
- H03M7/6082—Selection strategies
-
- 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/6064—Selection of Compressor
- H03M7/6082—Selection strategies
- H03M7/6088—Selection strategies according to the data type
-
- 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
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/3068—Precoding preceding compression, e.g. Burrows-Wheeler transformation
- H03M7/3071—Prediction
-
- 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
-
- 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
- H03M5/00—Conversion of the form of the representation of individual digits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
方法、设备和系统通过在两种或多种压缩方法和设备中选择最适合的压缩方法和设备来使数据值的数据块的压缩和解压缩增强,该两种或多种方法和设备被组合在一起并且所述压缩方法和设备有效地压缩特定数据类型的数据值;通过预测所述数据块内的数据类型将所述数据块中的主导数据类型作为主要选择标准来选择所述最适合的数据压缩方法。
Description
相关申请的交叉引用
本专利申请要求于2015年5月21日提交的题为“METHODS,DEVICES AND SYSTEMSFOR DATA COMPRESSION AND DECOMPRESSION”的瑞典专利申请No 1550644-7的优先权,其内容通过引用整体地并入本文。本专利申请还要求于2016年1月29日提交的题为“METHODS,DEVICES AND SYSTEMS FOR DECOMPRESSING DATA”的瑞典专利申请No 1650119-9的优先权,其内容通过引用整体地并入本文。
技术领域
本专利申请的公开内容总体上涉及数据压缩和解压缩的领域,例如在高速缓存/存储器子系统中和/或在计算机系统的数据传输子系统中,或者在数据通信系统中的数据压缩和解压缩。
背景技术
数据压缩是用于减小数据大小的一种较为成熟的技术。数据压缩适用于保存在计算机系统的存储器子系统中的数据以增大存储器容量。当在计算机系统内的不同子系统之间传输数据时,或者通常当在包括通信网络的数据通信系统中的两点之间进行传输时,也使用数据压缩。
数据压缩需要两个基本的操作:1)压缩(也称为编码),压缩是将未经压缩的数据作为输入,并通过用相应的码字(在文献中也称为编码格式、编码或代码)替换数据值来将未经压缩的数据转换为经压缩的数据;2)解压缩(也称为解码),解压缩是将经压缩的数据作为输入并通过用相应的数据值替换码字来将该经压缩的数据转换为未经压缩的。数据压缩可以是无损式的,也可以是有损式的,这取决于是否解压缩后的实际数据值与压缩前的原始数据值完全相同(无损式),或者取决于是否解压缩后的数据值不同于原始数据值且原始值无法取得(有损式)。可以用软件、或硬件、或软件和硬件的组合来实施压缩和解压缩,以实现相应的方法、设备和系统。
图1描绘了计算机系统100的实例。计算机系统100包括使用通信装置例如互连网络与存储器层次结构(memory hierarchy,存储器分级体系)110连接的一个或数个处理单元P1...Pn。每个处理单元都包括处理器(或核),并且每个处理单元都可以是CPU(中央处理单元)、GPU(图形处理单元)、或者通常是执行计算的块。另一方面,存储器层次结构110构成计算机系统100的存储子系统,并且包括存储器130(又名主存储器)和可以以一个或数个级别(level,层级、等级)L1-L3进行组织的缓存存储器120。存储器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。由于统计式压缩算法所使用的各种码字集是可变长度的,所以将其保存在CT 922——其中每个条目具有固定大小的宽度(码字925)——中时,必须用零对这些码字集进行填补。码字长度927保持可变长度编码的实际长度(例如,以位为单位)。CW选择器928使用cL来识别实际的CW并舍弃所填补的零。然后将编码的值连结至经压缩的值的其余部分,从而一起形成经压缩的块。在图11中描绘了在先前描述的压缩步骤之后的压缩方法的示例性流程图。
图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。
图12描绘了在先前描述的解压缩步骤之后的解压缩方法的示例性流程图。
上述压缩器可以快速且有效地用可变长度霍夫曼编码对数据块进行压缩,而解压缩器可以快速且有效地对用可变长度霍夫曼编码压缩的数据块进行解压缩。也可以使用包括实施其他压缩和解压缩算法诸如基于增量、基于模式等的算法的压缩器和解压缩器的其他压缩方案。
由于压缩和解压缩的过程,像上述那样的压缩方案不可避免地增加了等待时间和复杂性。在将压缩应用在上述示例计算机系统的缓存或/和存储器子系统中时,压缩和解压缩处于关键的存储器访问路径中。在将压缩和解压缩应用于在计算机系统或在通信系统中的数据传输子系统时,压缩和解压缩还可能增加传输等待时间。
根据形成数据值的数据类型,以特定大小的组块(chunk,数据块)访问并处理数据。某些数据类型的数据值经常表现出某些值局部性特性(value locality properties)。现有技术的压缩方案试图通过对什么样的数据类型是值局部性的根本原因进行先验假设来简化压缩和解压缩过程并将压缩和解压缩等待时间保持较低。
值局部性包括两个主要概念:a)时间型(temporal)值局部性和b)空间型(或聚集型)值局部性。时间型值局部性规定相同的值经常出现。统计式压缩算法是利用这种值局部性概念的示例压缩算法。另一方面,空间型值局部性规定了值在数值上是相似的。增量编码是利用空间型值局部性的示例压缩算法,因为用这些值与基值的差对它们进行编码是有意义的。时间型值局部性还包括特定情况:i)零值局部性:例如,在计算机系统中的缓存子系统和/或存储器子系统和/或数据传输子系统中,数据块可能包含全部为零值的数据值(称为空块(null block)数据类型),如在图13和图14的左侧所描绘的;ii)窄值局部性:例如,在数据块中的值是属于范围0-255的窄无符号整数值但是这些值需要用32位来表示时,所有这些值在它们的24个最高有效位中都具有0位(称为窄值数据类型)。基于有效性的压缩算法或基于模式的压缩算法利用窄值局部性。
可以将统计式压缩方案看作合理的默认策略。然而,统计式压缩方案并不总是产生最高的压缩性。例如,在使用统计式压缩方案的情况下,将比较常见的整数用比最常见的码字更长的码字来替换。如果所述整数还在空间上接近,则可能可以代替使用增量编码来更密集地编码这些整数。由于数据块中的数据值具有不同的数据类型和/或表现出不同的值局部性特性,所以不能保证压缩性的鲁棒性,因为对于各种数据类型,没有一种压缩方案总是可以比其他方案表现得更好。本发明人已经认识到在数据压缩和解压缩技术领域存在改进的空间。
发明内容
本发明的目的是提供数据压缩和解压缩技术领域的改进。
本公开总体上公开了在将压缩应用到例如计算机系统中的缓存子系统和/或存储器子系统和/或数据传输子系统以及/或者数据通信系统时用于对数据值的数据块进行压缩和对经压缩的数据值的数据块进行解压缩的方法、设备和系统。存在各种有效地压缩所述子系统中的数据的方法、设备和系统,为了简化其设计并减少它们的压缩和解压缩等待时间,上述方法、设备和系统将关于某些数据类型的设计-时间假设作为值局限性的根本原因。然而,因为数据块包括可以是多种数据类型的多个值,所以稳健的压缩性得不到保证,原因在于一种压缩方法并不总是最好的。上述方法、设备和系统通过将两种或多种压缩方法和设备结合在一起来增强对数据值的数据块的压缩和解压缩,所述压缩方法和设备有效地压缩特定数据类型的数据值。根据本发明公开内容的第一构思,混合式数据压缩方法、设备和系统结合了多种压缩方法和设备;其中,混合式数据压缩方法、设备和系统使用输入数据块的主导数据类型作为主要选择标准来选择最适合的压缩方法和设备;其中,数据类型是由预测方法和设备预测的。根据本发明公开内容的第二发明构思,混合式数据压缩方法、设备和系统结合了两种压缩方法和设备:一种使用例如可变长度编码对数据块进行有效地压缩,而另一种对包括多个具有仅一位(bit)的相同通用值(commom value)的数据块进行压缩。根据本发明公开内容的第三发明构思,提出了一种具有高精度的预测方法(和设备);所述预测方法(和设备)使用所预测输入块的主导数据类型作为主要选择标准来预测用于在运行时对所述块进行压缩的最适合的压缩方法(和设备)。所述预测方法(和设备)包括两个阶段;其中,在第一阶段,其将数据块分成多个区段(segment,段),并且针对每个区段检查特定的位部分(bit-portion)以预测其数据类型;其中,在第二阶段,以一定规则评估第一阶段的结果以决定最适合的压缩方法(和设备)。根据第四发明构思,如果获悉预测是不准确的,那么可以使用oracle选择作为参考在运行时调整所预测压缩方法(和设备)。
本发明的第一方面是一种用于将未经压缩的数据块压缩成经压缩的数据块的混合式数据压缩设备,未经压缩的数据块包括一种或多种数据类型的一个或多个数据值,该混合式数据压缩设备包括:多个数据压缩器,每个压缩器被配置用于相应的数据压缩方案;以及预测器机构,该预测器机构被配置用于预测未经压缩的数据块的数据值的数据类型,并且用于使用所预测数据类型中的主导数据类型作为主要标准,在所述多个数据压缩器中选择经估计最适合的数据压缩器,其中,混合式数据压缩设备被配置成通过使所选择的经估计最适合的数据压缩器对整个未经压缩的数据块进行压缩来生成经压缩的数据块。
本发明的第二方面是一种用于将未经压缩的数据块压缩成经压缩的数据块的混合式数据压缩方法,未经压缩的数据块包括一种或多种数据类型的一个或多个数据值,该混合式数据压缩方法包括:预测未经压缩的数据块的数据值的数据类型;使用所预测数据类型中的主导数据类型作为主要标准,在多个数据压缩方案中选择经估计最适合的数据压缩方案,并且按照所选择的经估计最适合的数据压缩方案对整个未经压缩的数据块进行压缩,以生成经压缩的数据块。
本发明的第三方面是一种用于将经压缩的数据块解压缩成包括一种或多种数据类型的一个或多个数据值的经解压缩的数据块的混合式数据解压缩设备,该混合式数据解压缩设备包括:多个数据解压缩器,每个解压缩器被配置用于相应的数据解压缩方案,其中,该混合式数据解压缩设备被配置成通过使在所述多个数据解压缩器中选择的经估计最适合的数据解压缩器对整个经压缩的数据块进行解压缩来生成经解压缩的数据块。
本发明的第四方面是一种用于将经压缩的数据块解压缩成包括一种或多种数据类型的一个或多个数据值的经解压缩的数据块的混合式数据解压缩方法,该混合式数据解压缩方法包括:在所述多个数据解压缩方案中选择经估计最适合的数据解压缩方案;以及按照所选择的经估计最适合的数据压缩方案对整个经压缩的数据块进行解压缩,以生成经解压缩的数据块。
本发明的第五方面是一种包括代码指令的计算机程序产品,该代码指令在由处理设备加载和执行时执行根据上述第二方面的方法。
本发明的第六方面是一种包括被配置成执行根据上述第二方面的方法的逻辑电路的设备。
本发明的第七方面是一种包括代码指令的计算机程序产品,该代码指令在由处理设备加载和执行时执行根据上述第四方面的方法。
本发明的第八方面是一种包括被配置成执行根据上述第四方面的方法的逻辑电路的设备。
本发明的第九方面是包括一个或多个存储器、根据上述第一方面的数据压缩设备和根据上述第三方面的数据解压缩设备的系统。
所公开的实施方案的其他方面、目标、特征和优点将从以下详细的公开内容、所附从属权利要求以及附图中显现。一般而言,权利要求中所使用的全部术语根据其在技术领域中的普通重要性进行解释,除非在此另有明确限定。
除非另有明确说明,否则所有对“一(a)/一(an)/该[元件、设备、部件、装置、步骤等]”的参照将被公开地解释为对该元件、设备、部件、装置、步骤等的至少一个实例的参照。除非明确说明,否则本文公开的任何方法的步骤不必按照所公开的确切顺序来执行。
附图说明
参照以下附图来描述背景技术的实例以及发明方面的实施方案:
图1示出了包括n个处理核的计算机系统的框图,每个处理核连接至三级的缓存层次结构和主存储器。
图2示出了图1的框图,其中,该主存储器以压缩形式保存数据。
图3示出了图1的框图,其中,L3缓存以压缩形式保存数据。其他缓存层次结构也可以以压缩形式存储数据。
图4示出了图1的框图,其中,数据在通信装置中被压缩,例如数据在存储器与缓存层次结构之间传送时被压缩。
图5示出了图1的框图,其中,可以将压缩应用于主存储器以及将存储器连接至缓存层次结构的链路。通常,压缩可以应用于部件如缓存层次结构、传输装置(例如,将存储器连接到缓存子系统的链路)和主存储器的任何组合。
图6示出了连接通信网络中的两个点的数据传输链路的框图。这些点可以是网络中的两个中间节点或者通信链路的源节点和目标节点或这些情况的组合。
图7示出了图6的数据传输链路的框图,其中,数据以压缩形式传输,所以可能需要在发射器中压缩数据并在接收器中解压缩该数据。
图8在左侧示出了未经压缩的数据值块,并且在右侧示出了利用由霍夫曼编码生成的可变长度编码的处于压缩形式的同一个块。未经压缩的块的所有数据值被相应的霍夫曼码字替换。
图9示出了用于使用如图8所示的霍夫曼编码来压缩(或编码)块的压缩器。
图10示出了用于对使用范式霍夫曼编码压缩的块进行解码(或解压缩)的解压缩器。
图11示出了用于使用可变长度编码(例如,霍夫曼)来压缩块的压缩方法的示例性流程图。
图12示出了用于对使用可变长度编码(例如,规范霍夫曼)压缩的经压缩的块进行解压缩的解压缩方法的示例性流程图。
图13在左侧示出了空的未经压缩的块——其是包含仅零数据值的块,并在右侧示出了假设每个零值被最小的可能宽度(1位)的码字替换的情况下被图9的压缩器利用可变长度编码压缩的同一个块。
图14在左侧示出了空的未经压缩的块——其是包含仅零数据值的块,并在右侧示出了使用1-位编码压缩的同一个块。
图15在左侧示出了未经压缩的块——其与图8中的块相同,并且在右侧示出了可替代的压缩形式的同一个块,该块包括指示经压缩的块是否为空的一位的指示符以及可变长度编码的位序列。
图16示出了能够压缩图14的未经压缩的块(经压缩的空块)和图15的未经压缩的块(包括位指示符和可变长度码字的经压缩的块)的混合式数据压缩设备,包括图9的基于霍夫曼的压缩设备以及空块压缩设备。该混合式数据压缩设备使用空块压缩设备来检查是否所有的块数据值都为零值并且以如图14所示的1-位编码对其进行压缩;否则,如图15所示,该混合式数据压缩设备用基于霍夫曼的压缩设备对其进行压缩。
图17a示出了能够解压缩图14的经压缩的块(经压缩的空块)和图15的经压缩的块(包括位指示符和可变长度码字的经压缩的块)的混合式数据解压缩设备,该混合式数据解压缩设备包括图10的数据解压缩设备、空块解压缩设备以及能够通过检查块的第一位是否为1来检测块是否被压缩为空块的附加逻辑电路(在图17a的底部)。
图17b示出了能够解压缩图14的经压缩的块(经压缩的空块)和图15的经压缩的块(包括位指示符和可变长度码字的经压缩的块)的混合式数据解压缩设备,该混合式数据解压缩设备包括图10的数据解压缩设备、空块解压缩设备的替代实施方案以及能够通过检查块的第一位是否为1来检测块是否被压缩为空块的附加逻辑电路(在图17b的底部)。
图18示出了混合式数据压缩系统的实施方案,该系统将多个压缩和解压缩设备集成到计算机系统的缓存/存储器/链路子系统或通信网络中的传输链路,并且被称为HyComp,其中HyComp系统包括HyComp压缩设备、HyComp解压缩设备和目标缓存/存储器/链路实例子系统;其中,HyComp压缩设备包括一组压缩设备和一预测器,该预测器针对给定的数据值块预测最适合的压缩设备。
图19示出了可以由示例混合式数据压缩方法、设备和系统使用的预测方法的示例性流程图,其包括两个阶段:I)检查输入数据块的一个或多个特定部分,以及II)从多个压缩方法中决定最适合的压缩方法。
图20示出了图19的预测方法的检查阶段的示例实施方案,该实施方案旨在表征数据块内的整数数据类型。
图21示出了图19的预测方法的检查阶段的示例实施方案,该实施方案旨在表征数据块内的指针数据类型。
图22示出了图19的预测方法的检查阶段的示例实施方案,该实施方案旨在表征数据块内的浮点数据类型。
图23a示出了图19的预测方法的检查阶段的示例实施方案,该实施方案旨在将数据块表征为空块,空块指包含零值的块。
图23b示出了图19的预测方法的检查阶段的示例实施方案,该实施方案旨在将数据块表征为负空块,负空块指包括负符号零值的块。
图24示出了图19的预测方法的实施的示例实施方案,该实施方案包括实施图19的预测方法的阶段I的块检查设备以及实施图19的预测方法的阶段II的决定设备;其中,决定设备包括比较器和优先级编码器以得出最适合的压缩设备的决定。
图25示出了与图18的混合式数据压缩系统类似的混合式数据压缩系统的示例实施方案,该混合式数据压缩系统被集成到计算机系统的最后一级缓存子系统中。
图26示出了在混合式数据压缩系统被集成到最后一级缓存中时,包括标签存储器和数据存储器的缓存组织的示例实施方案。
图27示出了一种方法的示例性流程图,该方法在限定的时间窗期间通过将用于多个主导数据类型的所预测压缩方法与理想选择的压缩方法(由oracle选择器产生)进行比较来跟踪预测方法的准确度。在所述时间窗之后,该方法将所述准确度与特定阈值进行比较,以决定是否应该从那一刻开始基于理想选择来调整所预测压缩方法。
图28是示出了根据本发明的总体混合式数据压缩方法的示意性流程图。
图29是示出了根据本发明的总体混合式数据解压缩方法的示意性流程图。
图30示出了链路子系统的示例性实施方案,其中,可以应用如本文所述的混合式数据压缩方法、设备和系统,并且其中,链路的一端用作源(发射器),而链路的另一端作为目的地(接收器)。
图31示出了根据本发明的包括混合式数据压缩设备和混合式数据解压缩设备的总体系统。
具体实施方式
本公开内容公开了用于在将压缩应用到计算机系统中的缓存子系统和/或存储器子系统和/或数据传输子系统以及/或者数据通信系统时,对数据值的一个或多个数据块进行压缩以及对数据值的一个或多个经压缩的数据块进行解压缩的混合式数据压缩方法、设备和系统。每个所述数据块可以是任意大小,并且包括一种或多种特定数据类型的一个或多个数据值。本文件中所公开的方法、设备和系统使用所述数据块中的主导数据类型作为主要标准来在两个或多个压缩方案中选择经估计最适合的数据压缩方案,并将所述方案应用于所述数据块;所述块由所述主导数据类型表征,该主导数据类型通过使用由所述方法、设备和系统公开的预测器预测所述数据块内的数据值的数据类型而得到。
数据块可以是任意大小的,并且包括一种或多种数据类型的一个或多个数据值。在如图1所描绘的计算机系统的实施方案中,1)当将数据块保存在缓存层次结构中时,数据值的块可以可替代地被称为缓存行、缓存组、缓存扇区或类似的,2)当将数据块保存在这种计算机系统内的存储器中或在这种计算机系统内的通信装置中传输时,数据值的块可以可替代地被称为缓存行、存储器页面、存储器扇区或类似的。另一方面,在如图6所描绘的通信网络内的传输链路的实施方案中,数据块也可以是指数据包、微片(flit)、有效载荷(payload)或数据头(header)或类似的,或者可以是这些的较小部分。
可能在所述数据块中遇到的多个可能的所述数据类型包括标准类型,诸如整数、指针、浮点数、字符、字符串和布尔值。多个可能的所述数据类型还包括非标准类型,如在本文件的背景技术中描述的非标准类型虽然是所述标准数据类型的特殊情况,但是在计算机系统的缓存子系统和/或存储器子系统和/或数据传输子系统以及/或者通信网络中是非常常见的。这种示例非标准类型是空块数据类型。其他数据类型也可以作为这些例示数据类型中的一个或多个的补充或替代,所述其他数据类型包括但不限于代码指令以及遵循特定格式或标准的数据类型(例如视频、音频)。
现在,本公开内容的下述内容是对根据发明方面的数据压缩设备和数据解压缩设备以及相关方法的某些实施方案的描述。将特别参照图13至图27以及图30进行描述。然后,本公开内容将呈现基于图13至图27以及图30中所示的具体实施方案概括的总体发明方面。这些总体发明方面将参照图28、图29以及图31进行描述。
首先,假定示例混合式数据压缩方法(或设备)包括两种压缩方案:基于霍夫曼的统计式压缩方案和空块压缩方案。基于霍夫曼的统计式压缩方案可以有效地压缩包含呈现高时间型值局部性的任何类型的值的数据块。这种类型的示例是整数。图8在左侧示出了所述块的包括8个数据值的实例,而在图8的右侧呈现了使用基于霍夫曼的压缩方案——假定为示例霍夫曼编码——进行压缩后的同一个块。另一方面,图13在左侧描绘了未经压缩的空数据块,该空数据块是仅包括零值的块。基于霍夫曼的压缩方案也可以压缩这样的块。假定零值由尽可能最小的霍夫曼码字(即,1位)表示,经压缩的空块包括如图13右侧所示的8位,这是由于可变长度编码诸如霍夫曼编码受限于最大压缩比,如一个码字在最佳情况下仅能够替换一数据值。另一方面,空块压缩方案可以将空数据块压缩成如图14右侧所示的仅1位。然而,空块压缩方案不能压缩除空块之外的其他块。因此,包括基于霍夫曼的统计式压缩方案和空块压缩方案的混合式数据压缩方法可以通过基于主导类型是空块还是其他类型而在这两个压缩方案之中选择最适合的方案来提供最大的压缩性。所述混合式数据压缩方法的预测器必须能够识别输入数据块的所有值是否由零值主导,使得数据块表现为空块并且按照空块压缩方案进行压缩;否则,将按照基于霍夫曼的压缩方案对输入的数据块进行压缩。还可能的是,输入的数据块无法被压缩或者对输入的数据块进行的是扩展而非压缩;在这种情况下,可以选择使输入的数据块保持未经压缩的状态。
图16中描绘了所述示例混合式数据压缩方法的数据压缩设备实施方案。数据压缩设备包括:单元1610,该单元可以是存储单元或者从输入的未经压缩的数据块1605提取出数据值的提取器;基于霍夫曼的统计式压缩方案的第二数据压缩器1620,该第二数据压缩器类似于图9的可变长度编码单元920;以及第一数据压缩器(空块压缩器)1630。空块压缩器1630使用比较器1634a、1634b、1634c和逻辑电路1638检查输入的未经压缩的数据块1605的数据值是否全部是零值。如果全部是零值,则1位的输出为“1”;否则为“0”。对于这个示例混合式数据压缩方法的实施方案,空块压缩器还替代了每个传入数据块的主导型预测器,因为压缩器完全像预测器一样需要识别是否整个数据块都包括零数据值。如果空块压缩器1630的输出是“1”,则预测的结果是输入的未经压缩的数据块1605被分类为空块并且被压缩为1位。否则,将该未经压缩的数据块分类为可由基于霍夫曼的压缩器1620压缩的块,并且经压缩的块包括前置有“0”位(指示其为经压缩的非空块)的可变长度编码(来自基于霍夫曼的压缩器1620的输出)。图15的右侧描绘了所述经压缩的数据块1618的示例实施方案。块的类型特征用于针对混合式数据压缩方法的压缩器实施方案的输出控制对适当的经压缩的块的选择(通过选择器1640选择)。本领域技术人员可以实现该压缩器的其他替代实施。
图17a描绘了所述示例混合式数据压缩方法的数据解压缩设备实施方案。该数据解压缩设备包括与图10的解压缩器类似的基于霍夫曼的第二数据解压缩器1710、第一数据解压缩器(空块解压缩器)1720以及额外的逻辑电路;所述额外的逻辑电路包括寄存器(例如,触发器)1730、比较器1740以及用于经解压缩的数据块1795的存储单元1750。示例混合式数据压缩方法的数据解压缩设备使用比较器1740将输入的经压缩的数据块1705的第一位(该第一位保存在寄存器1730中)与“1”进行比较,以检查该输入的经压缩的块是否是经压缩的空块。在这种情况下,使用还包括由所述比较的输出控制并选择值0的选择器的空块解压缩器1720将经解压缩的块1750的数据值初始化为值0。另一方面,如果寄存器1730保存位“0”——其指示所输入的经压缩的块为经压缩的非空块,则基于霍夫曼的解压缩器1710解压缩所述输入的经压缩的数据块1705,如本文件的背景技术所述。
图17b描绘了所述示例混合式数据压缩方法的数据解压缩设备的替代实施方案,并且该替代实施方案包含空块解压缩器1720的更简化的版本。经解压缩的数据块1795保存在存储单元1750诸如触发器阵列中,当存储单元1750的输入复位信号被设置成“1”时,存储单元可以复位为值0(即,空块解压缩器)。复位信号连接至比较器1740的输出,在输入的经压缩的数据块1705的第一位为“1”时——这构成经压缩的空块时,比较器的输出端实际上输出“1”。本领域技术人员可以实现该数据解压缩设备的其他替代实施。
本领域技术人员使用其他无损式压缩方案来代替可变长度霍夫曼压缩方案可以实现所述混合式数据压缩方法的数据压缩设备和数据解压缩设备的替代实施方案。此外,本领域技术人员可以实现所述混合式数据压缩方法的替代实施方案,这些替代实施方案包括类似于空块压缩方案的另一压缩方案,但是其中在整个块上的重复值不是值0而是另一个特定的通用值。
前面的实施方案是简化的混合式数据压缩方法,该方法仅包含两个压缩方案,并且仅区分空块与其他类型的块。然而,根据运行的应用程序,各种类型的数据都在计算机系统内的缓存/存储器子系统中存取或者在计算机系统内传输,并且根据所传输的数据集的域,各种类型的数据都在数据通信系统中传输。
图18的框图描绘了混合式数据压缩系统1800的实施方案,该系统将两个以上的压缩方案集成到计算机系统的缓存/存储器/链路子系统或者数据通信系统的传输链路中,并且将这种系统称为HyComp。HyComp系统1800包括数据压缩设备(HyComp压缩器)1810、数据解压缩设备(HyComp解压缩器1830)以及目标缓存/存储器/链路示例子系统1820。当HyComp集成到缓存/存储器子系统时,HyComp压缩器和HyComp解压缩器两者都连接至所述子系统。另一方面,当HyComp集成到链路子系统(在计算机系统或在数据通信系统中)时,HyComp压缩器集成到发射器,而HyComp解压缩器集成到接收器。如果链路的每个端都包括发射器和接收器两者,那么HyComp压缩器和解压缩器两者集成到每个端。
HyComp压缩器1810通过在预测器1812中做数据类型预测对插入到目标子系统(缓存/存储器/链路)中的未经压缩的数据块1805进行压缩。使用所预测在所述数据块1805内的主导数据类型作为主要标准,预测器1812在多个数据压缩方案1814-1、1814-2、1814-3、1814-4(数据压缩器1814)中选择预期提供最佳压缩性的数据压缩方案来对所述数据块1805进行压缩。然后将经压缩的数据块1818插入到目标子系统1820的数据部分1828中,同时将所选择的数据压缩方案作为元数据记录1816在目标子系统1820的元数据部分1824中。在一个实施方案中,元数据可以与实际的压缩数据分开保存或传输;在另一个实施方案中,元数据可以连结至压缩数据。相反地,HyComp解压缩器1830基于记录的作为元数据1824存储或传输的所选择的压缩方案,通过从相应的多个数据解压缩器1835的多个数据解压缩方案1835-1、1835-2、1835-3、1835-4中选择一个数据解压缩方案来仅对经压缩的数据块1834进行解压缩。因此,与单个压缩方案相比,HyComp系统1800可能会由于预测而导致延长压缩的等待时间;然而,解压缩将与使用单个压缩方案一样快。在目标子系统是例如缓存/存储器时,这是非常重要的,因为处于关键的存储器访问路径的特别是解压缩,而不是压缩。
在HyComp系统的所述示例实施方案1800中,选择了图18中的具体压缩方案“S”、“N”、“D”和“FP”,因为上述压缩方案能有效地对某些常见数据类型的数据进行压缩。在这个实施方案中考虑的数据类型是整数、指针、64位精度浮点数和空块非标准数据类型。所述数据类型与压缩方案之间的关联如下:
·整数:整数与统计式压缩方案(在图18中表示为“S”)相关联。这是因为,不同于其他方案,这种方案通过使用可变长度编码将更密集的代码分配给更频繁使用的整数。
·指针:指针与增量压缩方案(在图18中表示为“D”)相关联。这是因为指针通常表现出空间值局部性,意味着值的相差量小,可以有效地编码为相对于基值的增量。
·浮点数:浮点数与专门用于有效地压缩浮点数据的特定压缩方案(在图18中表示为“FP”)相关联。在与本专利申请同时提交的专利申请“METHODS,DEVICES AND SYSTEMSFOR SEMANTIC-VALUE DATA COMPRESSION AND DECOMPRESSION(用于语义值数据压缩和解压缩的方法、设备和系统)”中公开了一种示例FP压缩方法,该专利申请与本专利申请的申请人和发明人相同,该专利申请的内容通过引用整体地并入本文,以及该专利申请在将尾数进一步分成两个或更多个子域以增加所呈现的值局部性之后,单独对每个浮点数的在语义上有意义的数据值进行编码(压缩)。
·空块:空块与空块压缩方案(在图18中表示为“N”)相关联,其仅用单个位来编码所述块。常见且还包括的空块变体是在块包括负符号的零浮点值时。我们把这个块称为负空块。
数据块包括各种数据类型的数据值;基于其数据类型用特定压缩方案压缩每个数据值将产生最佳压缩性。但是,为了稍后“获知”所选择的压缩方案以用于随后的解压缩,这将大大增加元数据的量;这也会使解压缩过程复杂化并且拖慢解压缩过程,因为需要结合使用不同的方案来解压缩一个块。本公开内容中所公开的混合式数据压缩方法、设备和系统将压缩方案应用于整个未经压缩的数据块。通过预测器机构例如图18所示的HyComp压缩器1810的预测器1812以将所述未经压缩的数据块的数据值的主导数据类型用作主要标准的方式来选择适当的压缩方案。
图18的HyComp系统的所述预测器1812实施预测方法。这种预测方法的实施方案包括2个阶段,如图19中的示例性流程图所示。
·阶段I(检查):将未经压缩的数据块分成区段。检查每个区段的特定位部分(称为检查部分-IP)以推测所有所述区段的区段数据类型,并计算每个所预测数据类型在所述块内的出现率。区段可以选择成具有与数据值相同的粒度;然而,由于数据块包含不同粒度的值(主要取决于数据类型),所以可以通过处理相同粒度的数据(例如,64位区段)来简化阶段I。
·阶段II(决定):根据阶段I中各个区段的类型表征,主要基于主导数据类型来为块选择最适合的压缩方案。所选择的压缩方案应用于所述块的所有区段。
在由应用于如图18所示的计算机系统的缓存/存储器/链路子系统中的HyComp系统的实施方案所使用的所述预测方法中,数据块为64个字节(即,在当今计算机系统中的典型大小),并且区段大小被选择为8个字节(即,每个块8个区段)。每个检查部分(IP)的大小(宽度)取决于被预测的数据类型。在所述预测方法的阶段I中,数据类型表征执行如下:
·整数:该IP是区段的4个最高有效字节。如果IP是0x00000000(即正整数)或0xFFFFFFFF(即负整数),则该区段表征为整数并且相应计数器(#Int)增加。图20的框图示出了针对表征数据块2010内的整数数据类型的检查过程的示例实施方案。在比较器2024a、2024b、2024c等中进行与0x00000000的比较,在比较器2028a、b、c等中进行与0xFFFFFFFF的比较。比较结果(例如,用于匹配的“1”)标记在掩码2034和2038中。掩码包括与区段数一样多的位。取两个掩码的并集(掩码与逻辑电路结合,该逻辑电路即为或(OR)门2040),并且计数器2050对“1”的数量进行计数,该数量是所表征的整数的数量(即,#Int计数)。
·指针:该IP是区段的4个最高有效字节。如果该IP的两个最高有效字节等于0x0000并且该IP的两个最低有效字节不等于0x0000,则该区段表征为指针并且相应计数器(#Ptr)增加。以所述特定方式检查4个最高有效字节的原理是检测48位指针;这样的示例宽度为当今计算机系统的缓存/存储器子系统中的地址所使用。所述检查策略的一个限制在于小指针被表征为整数而不是指针。图21的框图示出了针对表征数据块2110内的指针数据类型的检查过程的示例实施方案。在比较器2124a、2124b、2124c等中进行与0x0000的比较,在比较器2128a、2128b、2128c等中进行与0x0000的不等比较。比较结果(例如,用于匹配的“1”)标记在掩码2134和2138中。掩码包括与区段的数量一样多的位。取两个掩码的交集(因为两个条件都必须成立,所以两个掩码与逻辑电路结合,该逻辑电路即为与(AND)门2140),并且计数器2150对“1”的数量进行计数,该数量是所表征的指针的数量(即,#Ptr计数)。
·浮点数:该IP是区段的最高有效位紧后面的7位。基本原理在于块中包含的浮点数据值通常具有相同的指数或者其指数是聚类的;因此将7位IP彼此比较(如果区段是浮点数据类型,则根据IEEE-754标准,IP是指数的部分)可以揭示IP或IP的子集是否形成指数簇。图22的框图示出了针对表征数据块2210内的浮点数据类型的检查过程的示例实施方案。在所述实施方案中,块区段的IP以两种方式成对比较:A)彼此距离为0的区段(即,相邻区段)的IP的成对比较2224;B)距离为1(即,进行比较的区段之间具有第三区段)的区段的IP的成对比较2228。比较结果(例如,用于匹配的“1”)标记在掩码2234和2238中。然后,对于这些比较方式中的每一种,由计数器2244和2248使相应的计数增加;最后,选择两者(即#FP_A和#FP_B)中最大的计数值。由于区段大小为8个字节,所以目标浮点数据类型具有双精度。本领域技术人员可以实现所述预测方法的替代实施方案,以便能够检测单(或其他)精度浮点数或者根据其他浮点标准的浮点数。
·(负)空块:该IP是整个区段。如果每个区段都等于零值(0x00...0),则该块表征为空块;如果每个区段都等于负零值(0x80...0),则该块表征为负空块。图23a示出了针对将数据块2310表征为空块的检查过程的示例实施方案,而图23b示出了针对将数据块2310表征为负空块的检查过程的替代示例实施方案。
所述数据类型表征动作可以依次或者并行地执行,这取决于所述方法的性能临界性。另外,当存在下述不同的操作时,本领域技术人员可以实施每个表征步骤,使得在单个循环内执行表征或者使表征在许多循环内流水线化,所述不同的操作为:比较、计数、并集/交集。本领域技术人员还可以以不同的方式实施比较器和计数器。在替代实施方案中,块可以同时被分成不同大小的区段(即,多个区段大小),以便揭露以不同粒度出现的数据类型。
图19的示例性流程图示出了实施为启发式方法的所述预测方法的实施方案。在阶段I中,首先如前面所描述的对检查部分进行查验;然后在阶段II中,通过以特定的规则(换言之,以特定的优先级)评估阶段I的结果来选择用于对块进行压缩的最合适的压缩方案(前述的“S”、“D”、“N”与“FP”中的压缩方案)。首先,如果块表征为(负)空块,则选择空块压缩(“N”)。如果不是,则查验计数#Int、#FPs和#Ptr是否都等于零;如果上述成立,则预测方法推测块数据将由于随机性、被加密或属于未考虑的数据类型而无法被有效地压缩。否则,基于#Int、#Ptr和#FP的计数选择压缩方案:如果这些计数中的最大值是#Int,则为“S”;如果最大者是#Ptr,则为“D”;如果最大者是#FP,则为“FP”。代替地,如果某些计数或所有计数彼此相等,则按照“S”、“D”、“FP”的顺序选择压缩方案。
图24的框图示出了图19的预测方法的硬件实施的示例框图。所述框图包括实施图19的预测方法的阶段I的检查和表征单元2410以及一起实施图19的预测方法的阶段II的比较器2420和优先级编码器2430。检查和表征单元2410还包括INT类型表征单元2000、PTR类型表征单元2100、FP类型表征单元2200以及空块和负空块类型表征单元2300。首先由单元2420比较INT表征单元、FP表征单元以及PTR表征单元的结果(来自单元2410的输出)以产生4位编码信号2425:1000(#Int=0和#FP=0以及#Ptr=0);0100(MAX(最大值)=#Int);0010(MAX=#Ptr);以及0001(MAX=#FP)。所述编码信号2425与为空(isNull,测试是否为空)信号和为负空(isNegNull,测试是否)信号一起输入至优先级编码器2430。优先级编码器2430按照图19的预测方法的阶段II所示的规则(优先级)实施最适合的压缩方案的选择。所述硬件实施可以被本领域技术人员流水线化成两个或更多个阶段。
本领域技术人员可以实现所述预测方法的替代实施方案以及其他预测方法。重要的是,当本领域技术人员根据目标系统、环境和应用领域实现混合式数据压缩方法、设备和系统的替代实施方案时,应将其他压缩方案和/或其他数据类型考虑在内。
图25示出了图18的HyComp混合式数据压缩系统的仅在应用于计算机系统的缓存子系统且特别是最后一级缓存(last-level cache,LLC)时的另一实施方案2500。假设缓存层次结构的主存储器和其他上级缓存以非压缩形式保存数据,则数据在从存储器插入到LLC之前或者从上级缓存写回到LLC时被压缩。另一方面,在将块从LLC中驱逐出去或者所述块被上级缓存提取时,需要对块进行解压缩。与上述实施方案类似,HyComp系统通过基于数据类型预测2512为每个未经压缩的数据块选择最适合的压缩方案来对从存储器插入的或从上级缓存写回的未经压缩的数据块2505进行压缩。然后将经压缩的数据块2518插入到LLC的数据阵列2528中,同时将所使用的方案作为元数据记录2516在标签存储器2524中,该标签存储器通常保存缓存行的元数据(例如,标签、有效位和页面重写标志位、替换状态)。当经压缩的数据块2534被上级缓存请求或被驱逐到主存储器时,基于在压缩期间于标签存储器中记录的元数据,通过合适的解压缩器2535对经压缩的数据块2534仅进行解压缩。
图25的混合式压缩缓存系统2500使用特定压缩方案2514-1、2514-2、2514-3、2514-4,即,分别与整数数据类型、指针数据类型、浮点数据类型和空块数据类型相关联的基于霍夫曼的统计式压缩方案(例如在公开号为US 2013/0311722的美国专利申请中所公开的统计式压缩方案)、BDI(由Gennady Pekhimenko、Vivek Seshadri、Onur Mutlu、Phillip B.Gibbons、Michael A.Kozchch和Todd C.Mowry在2012年发表于第21届并行架构和编译技术国际会议会刊(PACT’12)上的“Base-delta-immediate compression:practical data compression for on-chip caches”中公开的)、FP-H(由本申请人和发明人在前述专利申请“METHODS,DEVICES AND SYSTEMS FOR SEMANTIC-VALUE DATACOMPRESSION AND DECOMPRESSION”中公开的)以及ZCA(由Julien Dusser、Thomas Piquet和Andre Seznec在2009年发表于第23届超级计算国际会议会刊(ICS’09)上的“Zero-content augmented caches”中公开的)。选择这些方案是因为这些方案可以以硬件实施,因此可以应用于缓存压缩。这些方案为相应的数据类型提供有效的压缩性,同时对于示例压缩缓存子系统而言这些方案的压缩和解压缩等待时间相对低。
图26描绘了缓存组织在应用混合式数据压缩时的实施方案,并且该实施方案包括TAG存储2610和DATA存储2620。该缓存实施方案是双路组关联的。在常规缓存中,当不应用压缩时,每路存储未经压缩的缓存块(或缓存行)并且与特定标签(例如,缓存行标签2615)相关联。每个标签包括多个元数据(即,标准元数据),如图26的左侧所示:“tag”与块地址相关;“v”是有效位,并且在块有效时被设置;“d”是页面重写标志位,并且在对块进行修改时被设置;以及“repl”是替换状态,即,如果替换策略是最近最少使用(LRU),则在缓存组为满时,具有最小计数器的块(计数器基于块使用而减小)被替换。
另一方面,在将压缩应用到图26的所述缓存子系统时,需要修改缓存组织。如在现有技术的缓存压缩设计中,标签存储与数据存储解耦,并且更多标签与每个组相关联,以便能够存储更多的缓存块并利用由于压缩而释放的空间。因此,将经压缩的缓存块布置在组内的任意字节位置,并使用指针来定位,该指针存储在标签存储内的元数据中的;该指针在图26中表示为额外元数据中的“idx”。例如,在图26的缓存实施方案中,两倍的标签(即,每个缓存组4个标签)与每个缓存组相关联。标签与缓存块之间的关联用字母(A、B、C和D)表示。此外,数据存储2620包括多个缓存组。每个组都与包括多达2个未经压缩的缓存块以及多达4个经压缩的缓存块的组2628类似。经压缩的块A存储在缓存组2628的开端(0字节位置);经压缩的块C存储于在经压缩的块A的末端之后的下一个字节位置上,而压缩块D横跨在两路中。经压缩的块的替代布置策略被称为区段化,其将缓存组划分成固定大小的区段,然后基于经压缩的块的大小为各个经压缩的块分配不同数量的区段。本领域技术人员可以实施经压缩的块的替换布置策略。
如果将新的块插入到缓存中并且保存在其中所有标签都被经压缩的块所使用的示例缓存组2628中,则需要驱逐那些块中的一个(也称为牺牲块)。在图26的缓存实施方案中,替换策略是最近最少使用(LRU);因此,具有最小LRU计数2618的块C是牺牲块2622。在其中数据以未经压缩的形式保存的常规缓存设计中,一个牺牲块就够了;然而,在混合式数据压缩缓存实施方案中以及在大多数压缩缓存设计中,如果新块的大小大于牺牲块,则需要驱逐缓存组中更多的块。因为还需要进行压紧,所以驱逐下一LRU块可能需要时间;压紧是移动经压缩的块以释放连续空闲空间的过程。在该示例实施方案中,选择驱逐相邻的块(图26中的块D 2624)。在图26的底部示出的缓存组2638类似于在用新块F 2632替换块2622和块2624之后的缓存组2628。相反,如果新块比牺牲块小,则进行压紧以向下一LRU块释放更多的连续空间。
当将压缩应用在缓存子系统中时,需要在标签中添加的其他额外元数据是指示块是否被压缩的压缩状态位(在图26中表示为“c”)。在缓存中应用混合式数据压缩时,将被预测为用于示例块的所选压缩方案记录在“alg”元数据中。在这个实施方案中,“alg”限定了4个方案:ZCA、BDI、H和FP-H。特殊编码元数据(在图26中表示为“enc”)是压缩方案相关的。例如,如果选择的方案是BDI,则需要3位来记录用于对下述6种情况中的示例块进行编码的基值/增量组合,这样的情况为:1)基值=8个字节且增量=1个字节、2个字节或4个字节(3种情况);2)基值=4个字节且增量为1个字节或2个字节(2种情况);以及3)基值=2个字节且增量为1个字节。如果所选择的方案是ZCA,那么特殊编码的最右位确定其是空块还是负空块。其余的位不使用。其他压缩方案不需要使用“enc”位。
如果所公开的混合式数据压缩方法、设备和系统被应用于计算机系统的存储器子系统(如图2中的存储子系统),则可以将前面表示为“alg”的用于跟踪所述方法、设备和系统的预测方法的所选压缩方案的所述元数据以及与所选择的压缩方案相关的相应“enc”元数据保存在页表结构中。页表包括虚拟地址到物理地址转换以及其他信息,诸如每页的当前位、页面重写标志位等。例如,如果应用了混合式压缩的数据值块对应于例如页面,则可以将所述“alg”/“enc”元数据与所述页表中的每个页面的所述信息位一起保存。在页面被访问时,其虚拟—物理转换被保持在硬件缓存结构——转换后备缓冲器(TLB)中,因此,所述“alg”/“enc”元数据也可存储在TLB中。
在所公开的混合式数据压缩方法、设备和系统应用于计算机系统的链路子系统(如图4中的链路子系统)或通信网络(如图7中的通信网络)的替代实施方案中,可以将“alg”/“enc”元数据组合的全部或部分保持在元数据缓存中。根据链路/网络配置,链路端可以是源(source):块被压缩并传输;和/或目的地(destination,目标地):块被接收并解压缩。如果链路端是源,则其包括压缩器和元数据缓存;如果链路端是目的地,则其包括解压缩器和元数据缓存;如果链路端既是源也是目的地,则其包括压缩器、解压缩器、以及由压缩器和解压缩器二者使用的一个元数据缓存或者,可替代地,由压缩器使用的一个元数据缓存以及由解压缩器使用的另一个元数据缓存。图30示出了链路子系统的示例实施方案,其中,应用了混合式数据压缩方法、设备和系统,并且其中,链路的一端(节点i)用作源(发射器),而链路的另一端(节点j)用作目的地(接收器)。
所述元数据缓存的实例包括一个或多个条目,其中,每个条目包含所述“alg”/“enc”元数据的一种特定组合的ID,例如“ZCA,negNull”、“BDI,B=4/D=2”。在使用所预测压缩设备/方案对数据块进行压缩时,在源的元数据缓存中查找所述所预测设备/方案的ID,以获得存放所述ID的相应元数据缓存条目的索引。所述索引在经压缩的块之前传输、在经压缩的块之后传输或与经压缩的块一起传输。该索引用于访问目的地的元数据缓存以取得合适的解压缩设备/方案的ID。源元数据缓存和目的地元数据缓存必须同步,以使它们的内容保持一致。元数据缓存的大小决定了其访问时间(因此决定了压缩和解压缩等待时间)和索引宽度:因为使用多个压缩方案/设备,所以元数据缓存可能增加,因此索引和访问时间可能增加。在替代实施方案中,例如,如果一组示例方案/设备连续地用于多个数据块,则元数据缓存可以仅存放压缩方案/设备的ID的子集(例如4个条目)。如果在源元数据缓存中找不到所预测方案/设备的ID,则使用示例缓存替换策略(例如,LRU)来替换源元数据缓存的条目中的之一,并且相应地更新目的地元数据缓存。在将混合式数据压缩方法、设备和系统应用于计算机系统或通信网络时,本领域技术人员可以实施替代方式来记录和取得混合式数据压缩方法、设备和系统的所预测压缩方案/设备。
基于霍夫曼的统计式压缩方案基于数据值的统计特性例如出现频率向数据值分配可变长度码字:向出现频率较高的值分配短码字,而向出现频率较低的值分配较长的码字。如果编码不是预限定的,则所述基于霍夫曼的统计式压缩方案包括两个阶段:训练阶段和压缩阶段。在训练阶段期间,监测出现值(即,在混合式压缩缓存系统的上述实施方案中的LLC中所存储的值)的值频率统计量并将其收集在包括<值,计数器>元组的表格状结构中。现有技术中描述了所述表格的示例实施方案。在充分收集所述值频率统计量时,使用霍夫曼编码算法生成示例编码;然后,在压缩阶段期间使用所述编码对数据值进行压缩。生成的编码的质量显著地取决于统计量收集过程的准确性。因此,混合式数据压缩方法、设备和系统的实施方案不仅可以在压缩期间应用预测,还可以在这样的压缩方案的训练阶段期间应用预测。以这种方式,可以从值频率统计量中忽略以与被选择为由所述统计式压缩方案进行压缩的类型无关的数据类型为表征的数据块,以生成可能更具代表性的一组统计量,从而更好的进行编码。在替代实施方案中,由于统计量收集过程并不需要任何元数据,所以可以使用更细粒度的每区段类型信息来决定在所述统计式压缩方案的训练阶段期间是应该使用所述区段还是应该从统计量的收集中忽略该区段;根据某些数据类型和统计式压缩方案之间的关联,所述每区段类型信息可以例如通过掩码2034/2038(图20)、2134/2138(图21)、2234/2238(图22)取得。
BDI使用增量压缩通过用相对于两个基值的增量对块值进行编码来压缩缓存块。在其主配置中,所述基值中的一个为零,另一个为该块的第一个非零值。BDI尝试多个基值/增量粒度,但是仅在所有的值都使用相同的基值/增量粒度(前面描述的6种情况之一)进行编码时才对块进行压缩。然而,BDI受到下述限制:仅在块中的所有值都落在两个值范围内时才对块进行压缩,否则保持该块为未经压缩状态。如果块包括落在三个或更多个值范围内的数据值,则即使主导数据类型是指针,也不会对该块进行压缩。在这种情况下,对于存在已知的压缩算法限制(或弱点)的这种示例实施方案,本领域技术人员在构建预测方法时可以在决策过程中引入主导数据类型以外的额外选择标准。在该实施方案中的一种这样的标准是检查块值是否落入3个或更多个范围内,并且然后即使主导数据类型为指针,也可以选择另一压缩方案。
在混合式数据压缩系统的替代实施方案中,可以检测针对频繁出现的所表征的块类型的最适合的压缩算法的错误预测,并且可以通过将预测器的决定与oracle选择器进行比较来纠正错误预测;所述oracle选择器是始终选择最佳压缩方案的理想选择器。图27的方法示出了在监测窗口内(在图27中重复测量,其是与oracle选择相比较的预定数量的预测)将预测的压缩方案与oracle选择的压缩方案进行比较的示例流程图;可以通过尝试在蛮力模式下使用所有方案对输入的未经压缩的块进行压缩并且选择产生最佳压缩性的方案来实施oracle。在计数器中跟踪比较的结果;存在多个计数器,每种主导数据类型对应一个计数器。在监测窗口结束时,如果跟踪的针对每种主导数据类型的所测得的误预测(在监测窗口期间)超过特定阈值(TH),则可以将预测器的所选压缩方案调整为由oracle选择器针对从该刻以后所述主导数据类型出现率确定的压缩方案,以便潜在地提高运行时预测方法的准确性。可以定期或者根据需要重复所述监测。主导数据类型被用作示例标准以对预测压缩方案与oracle压缩方案之间出现差异的情况进行标记。替代实施方案可以使用其他示例方式来描述所述情况,例如,使用块中的主导数据类型和第二主导数据类型或所预测数据类型。本领域技术人员可以实现用于纠正在混合式数据压缩方法、设备和系统中使用的预测方法和设备的不准确预测的替代方法。
替代实施方案可以在选择最适合的压缩方案时使用最佳压缩效果以外的其他目标。例如,当在计算机系统的缓存子系统中应用混合式数据压缩时,诸如图25的实施方案,压缩方案不仅可以根据压缩方案的压缩效率来选择,还可以根据压缩方案对压缩和解压缩等待时间的影响来选择。例如,如果用于所表征的块类型的最佳压缩方案A产生的压缩率比第二个最佳压缩方案B好10%,但是由于解压缩等待时间使缓存访问时间增加30%,则可以选择方案B而不选择A。
预测方法可以优选地在运行时由包括在处理器设备/处理器芯片或存储器设备/存储器芯片中或与上述相关联的任何逻辑电路来执行。因此,所公开的发明的其他发明方面还包括被配置为执行上述方法的逻辑电路、处理器设备/处理器芯片以及存储器设备/存储器芯片。
应注意,除明确公开的实施方案以外的其他实施方案同样可能落在本发明的范围内。例如,所公开的发明中的每一个都可以用于除缓存存储器之外的其他类型的存储器,包括但不限于用于计算机的主存储器(例如,随机存取存储器)。可替代地或另外地,所公开的发明中的每一个可以用于在例如处理器与存储器之间传送的数据的链路压缩。
在本专利申请中提及的任何实体(例如数据集、数据类型、数据值、数据区、数据块、缓存块、缓存行、数据区段等)的数据大小通常没有特别的限制。
参考图28、图29和图31,现在将描述基于图13至27和图30中所示的具体实施方案概括的总体发明方面。将使用相同的附图标记;在其中一个附图中具有格式XXnn的附图标记通常在任何其他附图中表示相同或至少对应的元件YYnn。
一个总体发明方面是用于将未经压缩的数据块(例如1805;2505)压缩成经压缩的数据块(1818;2518)的混合式数据压缩设备(例如1810;2510),未经压缩的数据块包括一种或多种数据类型的一个或多个数据值。混合式数据压缩设备包括多个数据压缩器(例如1814;2514),每个压缩器被配置用于相应的数据压缩方案(例如1814-1...1814-n;2514-1...2514-n)。混合式数据压缩设备还包括预测器机构(例如1812;2512),该预测器机构被配置用于预测未经压缩的数据块(例如1805;2505)的数据值的数据类型,并且用于将所预测数据类型中的主导数据类型用作主要标准来选择经估计最适合的数据压缩器。混合式数据压缩设备被配置成通过使所选择的经估计最适合的数据压缩器对整个未经压缩的数据块进行压缩来生成经压缩的数据块(例如1818;2518)。
混合式数据压缩设备可以被配置为生成(例如1816;2516;3016)元数据(例如1824;2524;3024),所述元数据与经压缩的数据块(例如1818;2518)相关联且用于识别所选择的经估计最适合的数据压缩器的数据压缩方案。此外,混合式数据压缩设备可以被配置成将所生成的元数据与经压缩的数据块(例如1818;2518)一起存储在数据存储装置(例如1820;2520)中,数据存储装置能够访问数据解压缩设备(例如1830;2530)。可替代地,混合式数据压缩设备可以被配置成通过链路(例如3020)将所生成的元数据(例如3024)与经压缩的数据块(例如3018)一起传送至数据解压缩设备(例如3030)。
多个数据压缩器(例如1814;2514)可以包括:第一数据压缩器,该第一数据压缩器被配置用于第一数据压缩方案;以及第二数据压缩器,该第二数据压缩器被配置用于不同于第一数据压缩方案的第二数据压缩方案。第一数据压缩方案和第二数据压缩方案中的每一个都可以是无损式压缩方案或有损式压缩方案。
有利地,第一数据压缩方案和第二数据压缩方案是被选为下述中两种的无损式压缩方案:
·统计式(可变长度)编码(诸如例如,霍夫曼压缩、范式霍夫曼压缩、算术编码),
·基于字典的压缩,
·增量编码,
·基于模式的压缩,
·基于重要性的(significance-based)压缩,或
·通用块值(common-block-value)压缩(诸如例如,空块压缩)。
通常,第一数据压缩方案被设计成利用第一数据类型的数据值之间的数据局部性,数据局部性是时间的、空间的或其组合;而第二数据压缩方案被设计成利用第二数据类型的数据值之间的数据局部性,数据局部性是时间的、空间的或其组合。
数据块通常可以为下述之一:
·用于存储在计算机系统的缓存中的缓存行、缓存组、缓存块或缓存扇区,
·用于存储在计算机系统内的存储器中或在计算机系统内传输的存储器行、存储器页面或存储器扇区,以及
·用于在数据通信系统中的传输链路上传输的数据包、微片、有效载荷或数据头。
数据值的数据类型通常但非限制性地可以为下述中的任何一个:整数、指针、浮点数、字符、字符串、布尔值、代码指令或由特定格式或标准(诸如例如,视频或音频格式或标准)限定的数据类型。
有利地,混合式数据压缩设备(例如1810;2510)的预测器机构(例如1812;2512)被配置成:将未经压缩的数据块(例如1805;2505)分成区段;对于所有区段,检查每个区段的检查位部分以将区段分类为多个候选数据类型中的所预测数据类型;并比较所有区段的所预测数据类型的出现率,以确定未经压缩的数据块的主导数据类型。有利地,不同的候选数据类型的检查位部分不同。
候选数据类型通常可以是下述中的两种或更多种:整数、指针、浮点数、字符、字符串、布尔值、通用数据值块、数据编码指令或由特定形式或标准限定的数据类型。
在有利的实施方案(例如图20)中,候选数据类型之一是整数,数据块的大小是m个字节,区段的大小是n个字节,m/n是2的倍数,检查位部分是区段的p个最高有效字节,且n/p为2。例如,以下值可以适用:m=64,n=8,p=4。预测器机构(例如1812;2512)被配置成如果所述检查位部分等于多个预限定的p字节值中的任何一个——例如可以是0x00000000和0xFFFFFFFF,则将区段分类为整数。
在该或另一有利的实施方案(例如图21)中,候选数据类型之一是指针,数据块的大小是m个字节,区段的大小是n个字节,m/n是2的倍数,检查位部分是区段的p个最高有效字节,且n/p为2。例如,以下值可以适用:m=64,n=8,p=4。预测器机构(例如1812;2512)被配置成如果检查位部分的两个最高有效字节而不是两个最低有效字节等于预限定的p/2字节值——例如可以为0x0000,则将该区段分类为指针。
在该或另一有利的实施方案(例如图22)中,候选数据类型之一是浮点数,数据块的大小是m个字节,区段的大小是n个字节,m/n是2的倍数,并且检查位部分是在区段的最高有效位紧邻的q个最高有效位。例如,下列值可以适用:m=64,n=8,q=7。预测器机构(例如1812;2512)被配置成通过将区段的检查位部分与数据块中的表现出相同或聚类的浮点指数的相邻区段的检查位部分相匹配来将区段分类为浮点数。
在该或另一有利的实施方案(例如图23a和图23b)中,候选数据类型之一是通用数据值,数据块的大小是m个字节,区段的大小是n个字节,m/n是2的倍数,并且检查位部分是整个区段。例如,以下值可以适用:m=64,n=8。预测器机构(例如1812;2512)被配置成在区段的所有数据值具有相同的通用数据值时将区段分类为通用数据值。有利地,通用数据值是空值。
有利地,混合式数据压缩设备被配置成在未经压缩的数据块(例如1805;2505)已被分类为通用数据值时,选择将通用块值压缩作为数据压缩方案的数据压缩器(例如1814;2514)作为经估计最适合的数据压缩器。
此外,预测器机构(例如,1812;2512)可以配置成:如果区段的两个不同的所预测数据类型具有相同的出现率,则在确定未经压缩的数据块的主导数据类型时,使一种所预测数据类型优先于另一种所预测数据类型。例如,预测器机构(例如1812;2512)可以被配置成在确定未经压缩的数据块的主导数据类型时,使整数优先于指针和浮点数,并使指针优先于浮点数。
而且,预测器机构(例如1812;2512)可以配置成当区段的所预测数据类型不存在时,选择默认数据压缩器作为经估计最适合的数据压缩器。可替代地,预测器机构(例如1812;2512)可以配置成当区段的所预测数据类型不存在时,选择不压缩而不是经估计最适合的数据压缩器,因此避免了对未经压缩的数据块进行压缩。
在一个实施方案中,混合式数据压缩设备(例如1810;2510)还被配置为:
·在多个压缩循环期间,关于针对相应的主导数据类型的数据压缩器的理想选择,监测相应选择的经估计最适合的数据压缩器;
·检测出另一个数据压缩器在特定主导数据类型方面的压缩性更有效;以及
·对于将来的压缩循环,针对该特定主导数据类型将最适合的数据压缩器改变为所述另一数据压缩器。
针对相应的主导数据类型的数据压缩器的理想选择可以由oracle选择器提供,oracle选择器使用所有所述多个数据压缩器(例如1814;2514)的数据压缩方案来对未经压缩的数据块进行压缩,并且将具有的数据压缩方案对相应的未经压缩的数据块产生最佳压缩性的压缩器选择为相应的理想选择。
在混合式数据压缩设备的一个实施方案中,多个数据压缩器包括:第一数据压缩器(例如1630),第一数据压缩器被配置用于作为通用块值压缩方案的第一数据压缩方案;以及第二数据压缩器(例如1620),第二数据压缩器被配置用于第二数据压缩方案,第二数据压缩方案不同于第一数据压缩方案并且是统计式(可变长度)编码、基于字典的压缩、增量编码、基于模式的压缩以及基于重要性的压缩中的一种。该实施方案的混合式数据压缩设备被配置成:如果预测器机构(例如1630)获悉通用数据值主导了未经压缩的数据块(例如1605),则通过使第一数据压缩器(例如1630)将整个未经压缩的数据块(例如1605)压缩成经压缩的通用值数据块来生成经压缩的数据块(例如1618),否则,通过使第二数据压缩器(例如1630)按照第二数据压缩方案对整个未经压缩的数据块(例如1605)进行压缩来生成经压缩的数据块(例如1618)。经压缩的通用值数据块可以有利地包含仅单个位。有益地,在该实施方案中,预测器机构(例如1630)与第一数据压缩器(例如1630)集成。此外,预测器机构(例如1630)有益地被配置成在未经压缩的数据块(例如1605)的所有数据值都具有通用数据值时,获悉通用数据值主导该未经压缩的数据块。通用数据值通常可以是空值,或者可替代地可以是另一个特定的通用数据值。
图28中示出了总体发明的数据压缩方法。除了和/或作为对图28中以2810至2830公开的功能的细化,该总体发明的数据压缩方法可以具有根据如上所述的总体发明方面及其各种实施方案的数据压缩设备的任何或全部功能特征。
另一总体发明方面是一种用于将经压缩的数据块(例如1834;2534)解压缩成包括一种或多种数据类型的一个或多个数据值的经解压缩的数据块(例如1895;2595)的混合式数据解压缩设备(例如1830;2530)。经压缩的数据块可以由根据如上所述的总体发明方面或其各种实施方案的混合式数据压缩设备生成。混合式数据解压缩设备包括多个数据解压缩器(例如1835;2535),每个解压缩器被配置用于相应的数据解压缩方案(例如1835-1...1835-n;2535-1...2535-n)。混合式数据解压缩设备被配置成通过使所选择的在所述多个数据解压缩器(例如,1814;2514)中的经估计最适合的数据解压缩器对整个经压缩的数据块进行解压缩来生成经解压缩的数据块(例如1895;2595)。
混合式数据解压缩设备可以被配置成取得(例如1832;2532;3032)与经压缩的数据块(例如1834;2534)相关联的元数据(例如1824;2524;3024)并基于元数据选择经估计最适合的数据解压缩器。此外,混合式数据解压缩设备可以被配置成将元数据与经压缩的数据块(例如1834;2534)一起从数据存储装置(例如1820;2520)中取得,数据压缩设备(例如1810;2510)能够访问该数据存储装置。可替代地,混合式数据解压缩设备(例如3030)可以被配置成通过链路(例如3020)从数据压缩设备(例如3010)一起接收元数据(例如3034)和经压缩的数据块(例如3038)。
多个数据解压缩器(例如1835;2535)可以包括:第一数据解压缩器,该第一数据解压缩器被配置用于第一数据解压缩方案;以及第二数据解压缩器,该第二数据解压缩器被配置用于不同于第一数据解压缩方案的第二数据解压缩方案。第一数据解压缩方案和第二数据解压缩方案中的每一个都可以是无损式解压缩方案或有损式解压缩方案。
有利地,第一数据解压缩方案和第二数据解压缩方案是被选择为下述中两种的无损式解压缩方案:
·统计式(可变长度)解码(诸如例如,霍夫曼解压缩、范式霍夫曼解压缩、算术解码);
·基于字典的解压缩;
·增量解码;
·基于模式的解压缩;
·基于重要性的解压缩;或者
·通用块值解压缩(诸如例如,空块解压缩)。
数据块通常可以是下述之一:
·用于存储在计算机系统的缓存中的缓存行、缓存组、缓存块或缓存扇区,
·用于存储在计算机系统内的存储器中或在计算机系统内传输的存储器行、存储器页面或存储器扇区,以及
·用于在数据通信系统中的传输链路上传输的数据包、微片、有效载荷或数据头。
数据值的数据类型通常但非限制性地可以为下述中的任何一种:整数、指针、浮点数、字符、字符串、布尔值、代码指令或由特定的格式或标准(诸如例如,视频或音频格式或标准)限定的数据类型。
在混合式数据解压缩设备的一个实施方案中,多个数据解压缩器包括:第一数据解压缩器(例如1720),第一数据解压缩器被配置用于作为通用块值解压缩方案的第一数据解压缩方案;以及第二数据解压缩器(例如1710),第二数据解压缩器被配置用于第二数据解压缩方案,第二数据解压缩方案不同于第一数据解压缩方案并且为统计式(可变长度)解码、基于字典的解压缩、增量解码、基于模式的解压缩和基于重要性的解压缩中的一种。该实施方案的混合式数据解压缩设备被配置成:检查经压缩的数据块(例如1705)是否是经压缩的通用值数据块,如果是,则通过使第一数据解压缩器(例如1720)将整个经压缩的数据块(例如1705)解压缩成经解压缩的通用值数据块来生成经解压缩的数据块(例如1795),否则,通过使第二数据解压缩器(例如1710)按照第二数据解压缩方案对经压缩的数据块(例如1705)进行解压缩来生成经解压缩的数据块(例如1795)。经压缩的通用值数据块可以有利地包含仅单个位。第一数据解压缩器(例如1720)可以被配置成通过用通用值填充经解压缩的通用值数据块来方便地将整个经压缩的数据块(例如1705)解压缩成经解压缩的通用值数据块。通用数据值通常可以是空值,或者可替代地是另一个特定的通用数据值。
图29中示出了总体发明数据解压缩方法。除了和/或作为对图29中在2910至2920处公开的功能的细化,该总体发明数据解压缩方法可以具有根据如上所述的总体发明方面及其各种实施方案的数据解压缩设备的任何或全部功能特征。
本文公开的各个数据压缩设备可以例如以硬件实施,例如,实施为集成电路中的数字电路、专用设备(例如存储器控制器)、可编程处理设备(例如中央处理单元(CPU)或数字信号处理器(DSP))、现场可编程门阵列(FPGA)或其他逻辑电路等。本文中所描述的相应数据压缩方法的功能可以例如由适当配置的相应数据压缩设备中的任一个来执行,或者通常由包括配置成执行相应的数据压缩方法的逻辑电路(包括在例如处理器设备/处理器芯片或存储器设备/存储器芯片中或与之相关联)的设备执行,或者可替代地由包括代码指令的相应计算机程序产品执行,所述代码指令在被通用处理设备诸如CPU或DSP(例如,图1至图5中的处理单元P1...Pn中的任一个)加载和执行时施行相应的方法。
本文公开的各个数据解压缩设备可以例如以硬件实施,例如,实施为集成电路中的数字电路、专用设备(例如存储器控制器)、可编程处理设备(例如中央处理单元(CPU)或数字信号处理器(DSP))、现场可编程门阵列(FPGA)或其他逻辑电路等。本文描述的相应数据解压缩方法的功能可以例如由适当配置的相应数据解压缩设备中的任一个来执行,或者通常由包括配置成执行相应的数据解压缩方法的逻辑电路(包括在例如处理器设备/处理器芯片或存储器设备/存储器芯片中或与其相关联)的设备执行,或者可替代地由包括代码指令的相应计算机程序产品执行,所述代码指令在被通用处理设备诸如CPU或DSP(例如,图1至图5的处理单元P1...Pn中的任一个)加载和执行时施行相应的方法。
图31示出了根据本发明的总体系统3100。该系统包括一个或多个存储器3110、数据压缩设备3120(诸如例如数据压缩设备1810;2510中的任何一个)和数据解压缩设备3130(诸如例如数据解压缩设备1830;2530中的任何一个)。有利地,系统3100是计算机系统(诸如图1至图5的计算机系统100至系统500中的任何一个),并且所述一个或多个存储器1310是缓存存储器(诸如图1至图5的缓存存储器L1至L3中的任何一个)、随机存取存储器(诸如图1至图5的存储器130至存储器530中的任何一个)或辅助存储器。可替代地,系统3100是数据通信系统(诸如图6至图7的通信网络600、700),其中,所述一个或多个存储器3110可以是与数据通信系统中的发射和接收节点(诸如图6至图7的发射器610、710和接收器620、720)相关联的数据缓冲器。
Claims (96)
1.一种用于将未经压缩的数据块(1805;2505)压缩成经压缩的数据块(1818;2518)的混合式数据压缩设备(1810;2510),所述未经压缩的数据块包括一种或多种数据类型的一个或多个数据值,所述混合式数据压缩设备包括:
多个数据压缩器(1814;2514),每个压缩器被配置用于相应的数据压缩方案(1814-1...1814-n;2514-1...2514-n);以及
预测器机构(1812;2512),所述预测器机构被配置用于预测所述未经压缩的数据块(1805;2505)的数据值的数据类型,并且用于将所预测数据类型中的主导数据类型用作主要标准来选择所述多个数据压缩器中经估计最适合的数据压缩器;
其中,所述混合式数据压缩设备被配置成通过使所选择的经估计最适合的数据压缩器对整个所述未经压缩的数据块进行压缩来生成所述经压缩的数据块(1818;2518)。
2.根据权利要求1所述的混合式数据压缩设备(1810;2510;3010),其中,所述混合式数据压缩设备被配置成生成(1816;2516;3016)元数据(1824;2524;3024),所述元数据与所述经压缩的数据块(1818;2518)相关联并且用于识别所选择的经估计最适合的数据压缩器的数据压缩方案。
3.根据权利要求2所述的混合式数据压缩设备(1810;2510),其中,所述混合式数据压缩设备被配置成将所生成的元数据与所述经压缩的数据块(1818;2518)一起存储在数据存储装置(1820;2520)中,所述数据存储装置能由数据解压缩设备(1830;2530)访问。
4.根据权利要求2所述的混合式数据压缩设备(3010),其中,所述混合式数据压缩设备被配置成通过链路(3020)将所生成的元数据(3024)与所述经压缩的数据块(3018)一起传输至数据解压缩设备(3030)。
5.根据任一前述权利要求所述的混合式数据压缩设备(1810;2510),
其中,所述多个数据压缩器(1814;2514)包括:
·第一数据压缩器,所述第一数据压缩器被配置用于第一数据压缩方案;以及
·第二数据压缩器,所述第二数据压缩器被配置用于不同于所述第一数据压缩方案的第二数据压缩方案,并且
其中,所述第一数据压缩方案和所述第二数据压缩方案中的每一个都是无损式压缩方案或有损式压缩方案。
6.根据权利要求5所述的混合式数据压缩设备(1810;2510),其中,所述第一数据压缩方案和所述第二数据压缩方案是被选择为下述中的两种的无损式压缩方案:
·统计式(可变长度)编码;
·基于字典的压缩;
·增量编码;
·基于模式的压缩;
·基于重要性的压缩;或者
·通用块值压缩。
7.根据权利要求5或6所述的混合式数据压缩设备(1810;2510),
其中,所述第一数据压缩方案被设计成利用第一数据类型的数据值之间的数据局部性,所述数据局部性是时间型的、空间型的或时间型和空间型的组合;并且
其中,所述第二数据压缩方案被设计成利用第二数据类型的数据值之间的数据局部性,所述数据局部性时间型的、空间型的或时间型和空间型的组合。
8.根据任一前述权利要求所述的混合式数据压缩设备(1810;2510),其中,所述数据块是下述中之一:
用于存储在计算机系统的缓存中的缓存行、缓存组、缓存块或缓存扇区,
用于存储在计算机系统内的存储器中或在计算机系统内传输的存储器行、存储器页面或存储器扇区,以及
用于在数据通信系统中的传输链路上传输的数据包、微片、有效载荷或数据头。
9.根据任一前述权利要求所述的混合式数据压缩设备(1810;2510),其中,所述数据值的所述数据类型是下述中的任一种:
整数、指针、浮点数、字符、字符串、布尔值、代码指令、或者由特定格式或标准限定的数据类型。
10.根据任一前述权利要求所述的混合式数据压缩设备(1810;2510),其中,所述预测器机构(1812;2512)被配置成:
将所述未经压缩的数据块(1805;2505)分成区段;
对于所有区段,检查每个区段的检查位部分以将该区段分类为多个候选数据类型中的所预测数据类型;以及
比较所有区段的所预测数据类型的出现率,以确定所述未经压缩的数据块的主导数据类型。
11.根据权利要求10所述的混合式数据压缩设备(1810;2510),其中,所述候选数据类型是下述中的两种或更多种:整数、指针、浮点数、字符、字符串、布尔值、通用数据值块、数据代码指令或者由特定形式或标准限定的数据类型
12.根据权利要求10或11所述的混合式数据压缩设备(1810;2510),其中,对于不同的候选数据类型,所述检查位部分是不同的。
13.根据权利要求10至12中任一项所述的混合式数据压缩设备(1810;2510),其中:
所述候选数据类型中之一是整数,
所述数据块的大小是m个字节,
所述区段的大小是n个字节,
m/n是2的倍数,
所述检查位部分是所述区段的p个最高有效字节,并且
n/p为2。
14.根据权利要求13所述的混合式数据压缩设备(1810;2510),其中,所述预测器机构(1812;2512)被配置成:如果所述检查位部分等于多个预限定的p字节值中的任何一个,则将所述区段分类为整数。
15.根据权利要求10至14中任一项所述的混合式数据压缩设备(1810;2510),其中:
所述候选数据类型中之一是指针,
所述数据块的大小是m个字节,
所述区段的大小是n个字节,
m/n是2的倍数,
所述检查位部分是所述区段的p个最高有效字节,并且
n/p为2。
16.根据权利要求15所述的混合式数据压缩设备(1810;2510),其中,所述预测器机构(1812;2512)被配置成:如果所述检查位部分的两个最高有效字节而不是两个最低有效字节等于预限定的p/2字节值,则将所述区段分类为指针。
17.根据权利要求10至16中任一项所述的混合式数据压缩设备(1810;2510),其中:
所述候选数据类型中之一是浮点数,
所述数据块的大小是m个字节,
所述区段的大小是n个字节,
m/n是2的倍数,并且
所述检查位部分是与所述区段的最高有效位紧邻的q个最高有效位。
18.根据权利要求17所述的混合式数据压缩设备(1810;2510),其中,所述预测器机构(1812;2512)被配置成:通过将所述区段的所述检查位部分与所述数据块中表现出相同的或聚类的浮点指数的相邻区段的检查位部分进行匹配,将所述区段分类为浮点数。
19.根据权利要求10至18中任一项所述的混合式数据压缩设备(1810;2510),其中:
所述候选数据类型中之一是通用数据值,
所述数据块的大小是m个字节,
所述区段的大小是n个字节,
m/n是2的倍数,并且
所述检查位部分是整个区段。
20.根据权利要求19所述的混合式数据压缩设备(1810;2510),其中,所述预测器机构(1812;2512)被配置成:当所述区段的所有数据值具有相同的通用数据值时,将所述区段分类为通用数据值。
21.根据权利要求20所述的混合式数据压缩设备,其中,所述通用数据值为空值。
22.根据权利要求10至21中任一项所述的混合式数据压缩设备(1810;2510),其中,所述混合式数据压缩设备被配置成:当所述未经压缩的数据块(1805;2505)的所有区段已经被分类为通用数据值时,选择以通用块值压缩作为其数据压缩方案的数据压缩器(1814;2514)作为所述经估计最适合的数据压缩器。
23.根据权利要求10至22中任一项所述的混合式数据压缩设备(1810;2510),其中,所述预测器机构(1812;2512)被配置成:在所述区段的两种不同的所预测数据类型具有相同的出现率的情况下,在确定所述未经压缩的数据块的主导数据类型时使一种所预测数据类型优先于另一种所预测数据类型。
24.根据权利要求23所述的混合式数据压缩设备(1810;2510),其中,所述预测器机构(1812;2512)被配置成:当确定所述未经压缩的数据块的主导数据类型时,使整数优先于指针和浮点数,并使指针优先于浮点数。
25.根据权利要求10至24中任一项所述的混合式数据压缩设备(1810;2510),其中,所述预测器机构(1812;2512)被配置成:当所述区段的所预测数据类型不存在时,选择默认数据压缩器作为所述经估计最适合的数据压缩器。
26.根据权利要求10至24中任一项所述的混合式数据压缩设备(1810;2510),其中,所述预测器机构(1812;2512)被配置成:当所述区段的所预测数据类型不存在时,选择不压缩而不是选择经估计最适合的数据压缩器,因此避免对所述未经压缩的数据块进行压缩。
27.根据任一前述权利要求所述的混合式数据压缩设备(1810;2510),还被配置成:
在多个压缩循环期间,关于针对相应主导数据类型的数据压缩器的理想选择,监测相应选择的经估计最适合的数据压缩器;
检测出另一数据压缩器在特定主导数据类型的压缩性方面更有效;以及
对于将来的压缩循环,针对所述特定主导数据类型将所述最适合的数据压缩器改变为所述另一数据压缩器。
28.根据权利要求27所述的混合式数据压缩设备(1810;2510),其中,针对相应主导数据类型的数据压缩器的理想选择由oracle选择器提供,所述oracle选择器使用所述多个数据压缩器(1814;2514)所有的数据压缩方案对所述未经压缩的数据块进行压缩,并且选择所具有的数据压缩方案对相应的未经压缩的数据块产生最佳压缩性的压缩器作为相应的理想选择。
29.根据任一前述权利要求所述的混合式数据压缩设备,其中,所述多个数据压缩器包括:
第一数据压缩器(1630),所述第一数据压缩器被配置用于作为通用块值压缩方案的第一数据压缩方案;以及
第二数据压缩器(1620),所述第二数据压缩器被配置用于第二数据压缩方案,所述第二数据压缩方案不同于所述第一数据压缩方案并且是统计式(可变长度)编码、基于字典的压缩、增量编码、基于模式的压缩以及基于重要性的压缩中的一种,
其中,所述混合式数据压缩设备被配置成:如果所述预测器机构(1630)获悉通用数据值主导所述未经压缩的数据块(1605),则通过使所述第一数据压缩器(1630)将整个所述未经压缩的数据块(1605)压缩成经压缩的通用值数据块来生成所述经压缩的数据块(1618),否则,通过使所述第二数据压缩器(1630)按照所述第二数据压缩方案对整个所述未经压缩的数据块(1605)进行压缩来生成所述经压缩的数据块(1618)。
30.根据权利要求29所述的混合式数据压缩设备,其中,所述经压缩的通用值数据块包含单个位。
31.根据权利要求29或30所述的混合式数据压缩设备,其中,所述预测器机构(1630)与所述第一数据压缩器(1630)集成。
32.根据权利要求29至31中任一项所述的混合式数据压缩设备,其中,所述预测器机构(1630)被配置成:当所述未经压缩的数据块(1605)的所有数据值都具有通用数据值时,获悉所述通用数据值主导所述未经压缩的数据块。
33.根据权利要求29至32中任一项所述的混合式数据压缩设备,其中,所述通用数据值是空值。
34.一种用于将未经压缩的数据块(1805;2505)压缩成经压缩的数据块(1818;2518)的混合式数据压缩方法,所述未经压缩的数据块包括一种或多种数据类型的一个或多个数据值,所述混合式数据压缩方法包括:
预测(2810)所述未经压缩的数据块(1805;2505)的数据值的数据类型;
将所预测数据类型中的主导数据类型作为主要标准,从多个数据压缩方案(1814-1...1814-n;2514-1...2514-n)中选择(2820)经估计最适合的数据压缩方案,以及
按照所选择的经估计最适合的数据压缩方案对整个所述未经压缩的数据块进行压缩(2830),以生成所述经压缩的数据块(1818;2518)。
35.根据权利要求34所述的混合式数据压缩方法,还包括生成(1816;2516;3016)与所述经压缩的数据块(1818;2518)相关联的元数据(1824;2524;3024),所述元数据用于识别所选择的经估计最适合的数据压缩方案。
36.根据权利要求35所述的混合式数据压缩方法,其中,所述混合式数据压缩设备被配置成将所生成的元数据与所述经压缩的数据块(1818;2518)一起存储在数据存储装置(1820;2520)中,所述数据存储装置能由数据解压缩设备(1830;2530)访问。
37.根据权利要求35所述的混合式数据压缩方法,还包括将所生成的元数据(3024)与所述经压缩的数据块(3018)一起通过链路(3020)传输至数据解压缩设备(3030)。
38.根据权利要求34至37中任一项所述的混合式数据压缩方法,其中,所述多个数据压缩方案(1814-1...1814-n;2514-1...2514-n)包括:
·第一数据压缩方案;以及
·第二数据压缩方案,所述第二数据压缩方案不同于所述第一数据压缩方案,并且
其中,所述第一数据压缩方案和所述第二数据压缩方案中的每一个都是无损式压缩方案或有损式压缩方案。
39.根据权利要求38所述的混合式数据压缩方法,其中,所述第一数据压缩方案和所述第二数据压缩方案是被选择作为下述中的两种的无损式压缩方案:
·统计式(可变长度)编码;
·基于字典的压缩;
·增量编码;
·基于模式的压缩;
·基于重要性的压缩;或
·通用块值压缩。
40.根据权利要求38或39所述的混合式数据压缩方法,
其中,所述第一数据压缩方案被设计成利用第一数据类型的数据值之间的数据局部性,所述数据局部性时间型的、空间型的或时间型和空间型的组合;并且
其中,所述第二数据压缩方案被设计成利用第二数据类型的数据值之间的数据局部性,所述数据局部性时间型的、空间型的或时间型和空间型的组合。
41.根据权利要求34至40中任一项所述的混合式数据压缩方法,其中,所述数据块为下述中之一:
用于存储在计算机系统的缓存中的缓存行、缓存组、缓存块或缓存扇区,
用于在计算机系统内的存储器中或在计算机系统内传输的存储器行、存储器页面或存储器扇区,以及
用于在数据通信系统中的传输链路上传输的数据包、微片、有效载荷或数据头。
42.根据权利要求34至41中任一项所述的混合式数据压缩方法,其中,所述数据值的数据类型是下述中的任一种:
整数、指针、浮点数、字符、字符串、布尔值、代码指令、或者由特定的格式或标准限定的数据类型。
43.根据权利要求34至42中任一项所述的混合式数据压缩方法,还包括:
将所述未经压缩的数据块(1805;2505)分成区段;
对于所有区段,检查每个区段的检查位部分以将所述区段分类为多个候选数据类型中的所预测数据类型;以及
比较所有区段的所预测数据类型的出现率,以确定所述未经压缩的数据块的主导数据类型。
44.根据权利要求43所述的混合式数据压缩方法,其中,所述候选数据类型为下述中的两种或更多种:整数、指针、浮点数、字符、字符串、布尔值、通用数据值块、数据代码指令、或者由特定格式或标准限定的数据类型
45.根据权利要求43或44所述的混合式数据压缩方法,其中,对于不同的候选数据类型,所述检查位部分是不同的。
46.根据权利要求43至45中任一项所述的混合式数据压缩方法,其中:
所述候选数据类型中之一是整数,
所述数据块的大小是m个字节,
所述区段的大小是n个字节,
m/n是2的倍数,
所述检查位部分是所述区段的p个最高有效字节,并且
n/p为2。
47.根据权利要求46所述的混合式数据压缩方法,还包括:如果所述检查位部分等于多个预限定的p字节值中的任何一个,则将所述区段分类为整数。
48.根据权利要求43至47中任一项所述的混合式数据压缩方法,其中:
所述候选数据类型中之一是指针,
所述数据块的大小是m个字节,
所述区段的大小是n个字节,
m/n是2的倍数,
所述检查位部分是所述区段的p个最高有效字节,并且
n/p为2。
49.根据权利要求48所述的混合式数据压缩方法,还包括:如果所述检查位部分的两个最高有效字节但不是两个最低有效字节等于预限定的p/2字节值,则将所述区段分类为指针。
50.根据权利要求43至49中任一项所述的混合式数据压缩方法,其中:
所述候选数据类型中之一是浮点数,
所述数据块的大小是m个字节,
所述区段的大小是n个字节,
m/n是2的倍数,并且
所述检查位部分是与所述区段的最高有效位紧邻的q个最高有效位。
51.根据权利要求50所述的混合式数据压缩方法,还包括:通过将所述区段的所述检查位部分与所述数据块中的表现出相同的或聚类的浮点指数的相邻区段的检查位部分进行匹配来将所述区段分类为浮点数。
52.根据权利要求43至51中任一项所述的混合式数据压缩方法,其中:
所述候选数据类型中之一是通用数据值,
所述数据块的大小是m个字节,
所述区段的大小是n个字节,
m/n是2的倍数,并且
所述检查位部分是整个区段。
53.根据权利要求52所述的混合式数据压缩方法,还包括:当所述区段的所有数据值具有相同的通用数据值时,将所述区段分类为通用数据值。
54.根据权利要求53所述的混合式数据压缩设备,其中,所述通用数据值是空值。
55.根据权利要求43至54中任一项所述的混合式数据压缩方法,还包括:当所述未经压缩的数据块(1805;2505)的所有区段已经被分类为通用数据值时,选择作为通用块值压缩的数据压缩方案为所述经估计最适合的数据压缩方案。
56.根据权利要求43至55中任一项所述的混合式数据压缩方法,还包括:在所述区段的两种不同的所预测数据类型具有相同的出现率的情况下,在确定所述未经压缩的数据块的主导数据类型时,使一种所预测数据类型优先于另一种所预测数据类型。
57.根据权利要求56所述的混合式数据压缩方法,还包括:当确定所述未经压缩的数据块的主导数据类型时,使整数优先于指针和浮点数,并使指针优先于浮点数。
58.根据权利要求43至57中任一项所述的混合式数据压缩方法,还包括:当所述区段的所预测数据类型不存在时,选择默认数据压缩器作为所述经估计最适合的数据压缩器。
59.根据权利要求43至57中任一项所述的混合式数据压缩方法,还包括:当所述区段的所预测数据类型不存在时,选择不压缩而不是选择经估计最适合的数据压缩器,因此避免对所述未经压缩的数据块进行压缩。
60.根据任一前述权利要求所述的混合式数据压缩方法,还包括:
在多个压缩循环期间,关于针对相应主导数据类型的数据压缩方案的理想选择,监测相应选择的经估计最适合的数据压缩方案;
检测出另一数据压缩方案在特定主导数据类型的压缩性方面更有效;以及
对于将来的压缩循环,针对所述特定主导数据类型将所述最适合的数据压缩方案改变为所述另一数据压缩方案。
61.根据权利要求60所述的混合式数据压缩方法,其中,针对相应主导数据类型的数据压缩方案的理想选择由oracle选择器提供,所述oracle选择器使用所有的所述多种数据压缩方案对所述未经压缩的数据块进行压缩,并且选择对相应的未经压缩的数据块产生最佳压缩性的数据压缩方案作为相应的理想选择。
62.根据权利要求34至61中任一项所述的混合式数据压缩方法,其中,所述多个数据压缩方案(1814-1...1814-n;2514-1...2514-n)包括:
第一数据压缩方案,所述第一数据压缩方案为通用块值压缩方案;以及
第二数据压缩方案,所述第二数据压缩方案不同于所述第一数据压缩方案并且是统计式(可变长度)编码、基于字典的压缩、增量编码、基于模式的压缩和基于重要性的压缩中的一种,
其中,所述方法涉及:如果获悉通用数据值主导所述未经压缩的数据块(1605),则通过按照第一无损式数据压缩方案将整个所述未经压缩的数据块(1605)压缩成经压缩的通用值数据块来生成所述经压缩的数据块(1618),否则,通过按照所述第二数据压缩方案对整个所述未经压缩的数据块(1605)进行压缩来生成所述经压缩的数据块(1618)。
63.根据权利要求62所述的混合式数据压缩方法,其中,所述经压缩的通用值数据块包含单个位。
64.根据权利要求62至63中任一项所述的混合式数据压缩方法,其中,当所述未经压缩的数据块(1605)的所有数据值具有通用数据值时,获悉所述通用数据值主导所述未经压缩的数据块。
65.根据权利要求62至64中任一项所述的混合式数据压缩方法,其中,所述通用数据值是空值。
66.一种用于将经压缩的数据块(1834;2534)解压缩成经解压缩的数据块(1895;2595)的混合式数据解压缩设备(1830;2530),所述经解压缩的数据块包括一种或多种数据类型的一个或多个数据值,所述混合式数据解压缩设备包括:
多个数据解压缩器(1835;2535),每个解压缩器被配置用于相应的数据解压缩方案(1835-1...1835-n;2535-1...2535-n),
其中,所述混合式数据解压缩设备被配置成通过使所述多个数据解压缩器(1814;2514)中的所选择的经估计最适合的数据解压缩器对整个所述经压缩的数据块进行解压缩来生成所述经解压缩的数据块(1895;2595)。
67.根据权利要求66所述的混合式数据解压缩设备(1830;2530),其中,所述混合式数据解压缩设备被配置成取得(1832;2532;3032)与所述经压缩的数据块(1834;2534)相关联的元数据(1824;2524;3024),并基于所述元数据选择所述经估计最适合的数据解压缩器。
68.根据权利要求67所述的混合式数据解压缩设备(1830;2530),其中,所述混合式数据解压缩设备被配置成从数据存储装置(1820;2520)中取得所述元数据以及所述经压缩的数据块(1834;2534),所述数据存储装置能由数据压缩设备(1810;2510)访问。
69.根据权利要求67所述的混合式数据解压缩设备(3030),其中,所述混合式数据解压缩设备被配置成通过链路(3020)从数据压缩设备(3010)接收所述元数据(3034)以及所述经压缩的数据块(3038)。
70.根据权利要求67至69中任一项所述的混合式数据解压缩设备(1830;2530),其中,所述多个数据解压缩器(1835;2535)包括:
·第一数据解压缩器,所述第一数据解压缩器被配置用于第一数据解压缩方案;以及
·第二数据解压缩器,所述第二数据解压缩器被配置用于不同于所述第一数据解压缩方案的第二数据解压缩方案,并且
其中,所述第一数据解压缩方案和所述第二数据解压缩方案中的每一个都是无损式解压缩方案或有损式解压缩方案。
71.根据权利要求70所述的混合式数据解压缩设备(1830;2530),其中,所述第一数据解压缩方案和所述第二数据解压缩方案是被选择为下述中的两种的无损式解压缩方案:
·统计式(可变长度)解码;
·基于字典的解压缩;
·增量解码;
·基于模式的解压缩;
·基于重要性的解压缩;或
·通用块值解压缩。
72.根据权利要求70至71中任一项所述的混合式数据解压缩设备(1830;2530),其中,所述数据块是下述中之一:
用于存储在计算机系统的缓存中的缓存行、缓存组、缓存块或缓存扇区,
用于存储在计算机系统内的存储器中或在计算机系统内传输的存储器行、存储器页面或存储器扇区,以及
用于在数据通信系统中的传输链路上传输的数据包、微片、有效载荷或数据头。
73.根据权利要求70至72中任一项所述的混合式数据解压缩设备(1830;2530),其中,所述数据值的数据类型是下述中的任一种:
整数、指针、浮点数、字符、字符串、布尔值、代码指令、或者由特定的格式或标准限定的数据类型。
74.根据权利要求66至73中任一项所述的混合式数据解压缩设备,其中,所述多个数据解压缩器包括:
第一数据解压缩器(1720),所述第一数据解压缩器被配置用于作为通用块值解压缩方案的第一数据解压缩方案;以及
第二数据解压缩器(1710),所述第二数据解压缩器被配置用于第二数据解压缩方案,所述第二数据解压缩方案不同于所述第一数据解压缩方案并且是统计式(可变长度)解码、基于字典的解压缩、增量解码、基于模式的解压缩和基于重要性的解压缩中的一种,
其中,所述混合式数据解压缩设备被配置成:检查所述经压缩的数据块(1705)是否是经压缩的通用值数据块,并且如果是,则通过使所述第一数据解压缩器(1720)将整个所述经压缩的数据块(1705)解压缩成经解压缩的通用值数据块来生成所述经解压缩的数据块(1795),否则,通过使所述第二数据解压缩器(1710)按照所述第二数据解压缩方案对所述经压缩的数据块(1705)进行解压缩来生成所述经解压缩的数据块(1795)。
75.根据权利要求74所述的混合式数据压缩设备,其中,所述经压缩的通用值数据块包含单个位。
76.根据权利要求74或75所述的混合式数据压缩设备,其中,所述第一数据解压缩器(1720)被配置成通过用通用值填充所述经解压缩的通用值数据块来将整个所述经压缩的数据块(1705)解压缩成所述经解压缩的通用值数据块。
77.根据权利要求76所述的混合式数据解压缩设备,其中,所述通用数据值是空值。
78.一种用于将经压缩的数据块(1834;2534)解压缩成经解压缩的数据块(1895;2595)的混合式数据解压缩方法(1830;2530),所述经解压缩的数据块包括一种或多种数据类型的一个或多个数据值,所述混合式数据解压缩方法包括:
在所述多个数据解压缩方案(1835-1...1835-n;2535-1...2535-n)中选择(2910)经估计最适合的数据解压缩方案;以及
按照所选择的经估计最适合的数据压缩方案对整个所述经压缩的数据块(1834;2534)进行解压缩(2920),以生成所述经解压缩的数据块(1895;2595)。
79.根据权利要求78所述的混合式数据解压缩方法,还包括:取得(1832;2532;3032)与所述经压缩的数据块(1834;2534)相关联的元数据(1824;2524;3024),并且基于所述元数据选择所述经估计最适合的数据解压缩方案。
80.根据权利要求79所述的混合式数据解压缩方法,其中,从数据存储装置(1820;2520)中取得所述元数据以及所述经压缩的数据块(1834;2534),所述数据存储装置能由数据压缩设备(1810;2510)访问。
81.根据权利要求79所述的混合式数据解压缩方法,其中,通过链路(3020)从数据压缩设备(3010)接收所述元数据(3034)以及所述经压缩的数据块(3038)。
82.根据权利要求78至81中任一项所述的混合式数据解压缩方法,其中,所述多个数据解压缩方案(1835;2535)包括:
·第一数据解压缩方案;以及
·第二数据解压缩方案,所述第二数据解压缩方案不同于所述第一数据解压缩方案,并且
其中,所述第一数据解压缩方案和所述第二数据解压缩方案中的每一个都是无损式解压缩方案或有损式解压缩方案。
83.根据权利要求78至82中任一项所述的混合式数据解压缩方法,其中,所述第一数据解压缩方案和所述第二数据解压缩方案是被选择作为下述中的两种的无损式解压缩方案:
·统计式(可变长度)解码;
·基于字典的解压缩;
·增量解码;
·基于模式的解压缩;
·基于重要性的解压缩;或
·通用块值解压缩。
84.根据权利要求78至83中任一项所述的混合式数据解压缩方法,其中,所述数据块是下述中之一:
用于存储在计算机系统的缓存中的缓存行、缓存组、缓存块或缓存扇区,
用于存储在计算机系统内的存储器中或在计算机系统内传输的存储器行、存储器页面或存储器扇区,以及
用于在数据通信系统中的传输链路上传输的数据包、微片、有效载荷或数据头。
85.根据权利要求78至84中任一项所述的混合式数据解压缩方法,其中,所述数据值的数据类型是下述中的任一种:
整数、指针、浮点数、字符、字符串、布尔值、代码指令、或者由特定的格式或标准限定的数据类型。
86.根据权利要求78至85中任一项所述的混合式数据解压缩方法,其中,所述多个数据解压缩方案(1835;2535)包括:
第一数据解压缩方案,所述第一数据解压缩方案是通用块值解压缩方案;以及
第二数据解压缩方案,所述第二数据解压缩方案不同于所述第一数据解压缩方案,并且为统计式(可变长度)解码、基于字典的解压缩、增量解码、基于模式的解压缩和基于重要性的解压缩中的一种,
其中,所述方法还包括:检查所述经压缩的数据块(1705)是否是经压缩的通用值数据块,并且如果是,则通过使所述第一数据解压缩器(1720)将整个所述经压缩的数据块(1705)解压缩成经解压缩的通用值数据块来生成所述经解压缩的数据块(1795),否则通过使所述第二数据解压缩器(1710)按照所述第二数据解压缩方案对所述经压缩的数据块(1705)进行解压缩来生成所述经解压缩的数据块(1795)。
87.根据权利要求86所述的混合式数据解压缩方法,其中,所述经压缩的通用值数据块包含单个位。
88.根据权利要求86或87所述的混合式数据解压缩方法,其中,所述方法包括:通过用通用值填充所述经解压缩的通用值数据块,将整个所述经压缩的数据块(1705)解压缩成所述经解压缩的通用值数据块。
89.根据权利要求88所述的混合式数据解压缩方法,其中,所述通用数据值是空值。
90.一种包括代码指令的计算机程序产品,所述代码指令在由处理设备加载和执行时使根据权利要求34所述的方法执行。
91.一种设备,所述设备包括被配置成执行根据权利要求34所述的方法的逻辑电路。
92.一种包括代码指令的计算机程序产品,所述代码指令在由处理设备加载和执行时使根据权利要求78所述的方法执行。
93.一种设备,所述设备包括被配置成执行根据权利要求78所述的方法的逻辑电路。
94.一种系统(3100),所述系统包括一个或多个存储器(3110)、根据权利要求1至33中任一项所述的数据压缩设备(1500;2000;2200)以及根据权利要求66至77中任一项所述的数据解压缩设备(1700;2100;2400)。
95.根据权利要求94所述的系统(3100),其中,所述系统是计算机系统(100;200;300;400;500),并且其中,所述一个或多个存储器(3110)来自由下述组成的组:
缓存存储器(L1至L3),
随机存取存储器(130;230;330;430;530)以及
辅助存储器。
96.根据权利要求94所述的系统(3100),其中,所述系统是数据通信系统(600;700),并且其中,所述一个或多个存储器(3110)是数据缓冲器。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE1550644 | 2015-05-21 | ||
SE1550644-7 | 2015-05-21 | ||
SE1650119 | 2016-01-29 | ||
SE1650119-9 | 2016-01-29 | ||
PCT/SE2016/050462 WO2016186563A1 (en) | 2015-05-21 | 2016-05-20 | Methods, devices and systems for hybrid data compression and decompression |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107925418A true CN107925418A (zh) | 2018-04-17 |
CN107925418B CN107925418B (zh) | 2021-06-01 |
Family
ID=57320929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680042384.0A Active CN107925418B (zh) | 2015-05-21 | 2016-05-20 | 用于混合式数据压缩和解压缩的方法、设备和系统 |
Country Status (7)
Country | Link |
---|---|
US (2) | US10476520B2 (zh) |
EP (1) | EP3304746B1 (zh) |
JP (2) | JP7010548B2 (zh) |
KR (1) | KR102578689B1 (zh) |
CN (1) | CN107925418B (zh) |
CA (1) | CA2986555A1 (zh) |
WO (1) | WO2016186563A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109167919A (zh) * | 2018-10-11 | 2019-01-08 | 北京文香信息技术有限公司 | 一种图片压缩方法及装置 |
CN109962711A (zh) * | 2019-04-09 | 2019-07-02 | 深圳市道通智能航空技术有限公司 | 一种数据压缩方法、电子设备及存储介质 |
CN111010189A (zh) * | 2019-10-21 | 2020-04-14 | 清华大学 | 一种对数据集的多路压缩方法、装置及存储介质 |
CN113487025A (zh) * | 2021-07-02 | 2021-10-08 | 浙江大学 | 面向神经网络检查点数据的智能压缩存储方法和系统 |
JP2022145701A (ja) * | 2019-03-22 | 2022-10-04 | 株式会社日立製作所 | ストレージシステム、及び、記憶コスト適正化方法 |
US20230132037A1 (en) * | 2021-10-26 | 2023-04-27 | Hitachi, Ltd. | Storage system and data processing method in storage system |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2986555A1 (en) | 2015-05-21 | 2016-11-24 | Zeropoint Technologies Ab | Methods, devices and systems for hybrid data compression and decompression |
US10063422B1 (en) * | 2015-12-29 | 2018-08-28 | Amazon Technologies, Inc. | Controlled bandwidth expansion in compressed disaggregated storage systems |
SE540178C2 (en) | 2016-01-29 | 2018-04-24 | Zeropoint Tech Ab | Methods, devices and systems for compressing and decompressing data |
US20180131749A1 (en) * | 2016-11-10 | 2018-05-10 | Ingram Micro Inc. | System and Method for Optimizing Data Transfer using Selective Compression |
CN106507107B (zh) * | 2016-12-08 | 2019-07-05 | 北京数码视讯科技股份有限公司 | 数据的处理方法和装置 |
US10445261B2 (en) * | 2016-12-30 | 2019-10-15 | Intel Corporation | System memory having point-to-point link that transports compressed traffic |
US10061698B2 (en) | 2017-01-31 | 2018-08-28 | Qualcomm Incorporated | Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur |
US10599935B2 (en) * | 2017-02-22 | 2020-03-24 | Arm Limited | Processing artificial neural network weights |
GB2561036A (en) | 2017-03-31 | 2018-10-03 | Cirrus Logic Int Semiconductor Ltd | Methods and apparatus for buffering and compression of data |
US10438569B2 (en) * | 2017-04-17 | 2019-10-08 | Intel Corporation | Consolidation of data compression using common sectored cache for graphics streams |
US10902546B2 (en) * | 2017-04-21 | 2021-01-26 | Intel Corporation | Efficient skipping of data compression processes at computing devices |
US10621108B2 (en) | 2017-06-26 | 2020-04-14 | Stephen Tarin | Systems and methods for transforming large data into a smaller representation and for re-transforming the smaller representation back to the original large data |
US10402111B1 (en) * | 2017-08-14 | 2019-09-03 | Xilinx, Inc. | Systems and methods for data storage compression |
US10250899B1 (en) | 2017-09-22 | 2019-04-02 | Qualcomm Incorporated | Storing and retrieving high bit depth image data |
US10419022B2 (en) | 2017-11-30 | 2019-09-17 | International Business Machines Corporation | Run-length base-delta encoding for high-speed compression |
US10642602B2 (en) * | 2017-12-12 | 2020-05-05 | Nxp Usa, Inc. | NVM architecture with OTA support |
GB201805628D0 (en) * | 2018-04-05 | 2018-05-23 | Qatar Found Education Science & Community Dev | Method and system for data specific transceiver design for efficient ioT devices |
US10305508B2 (en) * | 2018-05-11 | 2019-05-28 | Intel Corporation | System for compressing floating point data |
US10665006B2 (en) * | 2018-06-29 | 2020-05-26 | Intel Corporation | Efficient prediction of most commonly occuring values in data blocks in computing environments |
US11604738B2 (en) * | 2018-09-28 | 2023-03-14 | Advanced Micro Devices, Inc. | Device and method for data compression using a metadata cache |
US11144506B2 (en) * | 2018-10-29 | 2021-10-12 | EMC IP Holding Company LLC | Compression of log data using field types |
EP3900340A4 (en) * | 2018-12-21 | 2022-08-17 | Zeropoint Technologies AB | EFFECTIVE COMPRESSION AND DECOMPRESSION METHODS, DEVICES AND SYSTEMS TO ACHIEVE HIGHER THROUGHPUT |
US10795825B2 (en) * | 2018-12-26 | 2020-10-06 | Advanced Micro Devices, Inc. | Compressing data for storage in cache memories in a hierarchy of cache memories |
US20190243780A1 (en) * | 2019-04-10 | 2019-08-08 | Vinodh Gopal | Scalable application-customized memory compression |
US10749546B1 (en) * | 2019-05-15 | 2020-08-18 | Dell Products L.P. | Method and system of content based dynamic data compression |
CN112099725A (zh) * | 2019-06-17 | 2020-12-18 | 华为技术有限公司 | 一种数据处理方法、装置及计算机可读存储介质 |
US11875368B2 (en) * | 2019-10-22 | 2024-01-16 | Sap Se | Proactively predicting transaction quantity based on sparse transaction data |
EP3817236A1 (en) * | 2019-11-04 | 2021-05-05 | Samsung Electronics Co., Ltd. | Neural network data processing method and apparatus |
JP7355622B2 (ja) * | 2019-11-29 | 2023-10-03 | 株式会社日立製作所 | エンコーダを有するストレージシステム |
CN113055017A (zh) * | 2019-12-28 | 2021-06-29 | 华为技术有限公司 | 数据压缩方法及计算设备 |
US11474949B2 (en) * | 2020-04-03 | 2022-10-18 | Microsoft Technology Licensing, Llc | Physical memory compression |
US11405622B2 (en) | 2020-04-22 | 2022-08-02 | Apple Inc. | Lossless compression techniques |
US11664816B2 (en) | 2020-04-22 | 2023-05-30 | Apple Inc. | Lossy compression techniques |
US11362672B2 (en) * | 2020-05-08 | 2022-06-14 | Qualcomm Incorporated | Inline decompression |
US11429294B2 (en) * | 2020-05-22 | 2022-08-30 | Dell Products L.P. | Efficient compressed track size classification to reduce disk fragmentation and increase probability of in-place compressed writes |
SE544557C2 (en) * | 2020-12-01 | 2022-07-12 | Zeropoint Tech Ab | Systems, methods and devices for exploiting value similarity in computer memories |
CN113176853A (zh) * | 2021-04-26 | 2021-07-27 | 深圳市华沃表计科技有限公司 | 数据压缩存储方法 |
CN113364467B (zh) * | 2021-06-04 | 2022-07-08 | 山东云海国创云计算装备产业创新中心有限公司 | 一种哈夫曼解码系统、方法、设备及存储介质 |
CN118020057A (zh) * | 2021-09-29 | 2024-05-10 | 美光科技公司 | 使用内联元数据对压缩状态的早期检测 |
US12007948B1 (en) * | 2022-07-31 | 2024-06-11 | Vast Data Ltd. | Similarity based compression |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5467087A (en) * | 1992-12-18 | 1995-11-14 | Apple Computer, Inc. | High speed lossless data compression system |
US20020097172A1 (en) * | 1998-12-11 | 2002-07-25 | Fallon James J. | Content independent data compression method and system |
CN1902602A (zh) * | 2003-12-29 | 2007-01-24 | 英特尔公司 | 存储带压缩的重排序数据的机制 |
CN102843142A (zh) * | 2011-06-23 | 2012-12-26 | 深圳市国微电子股份有限公司 | 可编程逻辑器件配置数据流压缩、解压缩处理方法及系统 |
US20140101485A1 (en) * | 2012-10-04 | 2014-04-10 | Albert W. Wegener | Data compression profiler for configuration of compression |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3224906B2 (ja) * | 1993-06-03 | 2001-11-05 | 株式会社日立製作所 | 信号記録方法、信号記録装置、信号再生方法及び信号再生装置 |
CA2163556C (en) | 1994-04-22 | 2006-07-11 | Tetsuji Kawashima | System and method for transmitting compressed data or pre-compressed data based on a preset compression ratio |
US7190284B1 (en) * | 1994-11-16 | 2007-03-13 | Dye Thomas A | Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent |
JPH08237208A (ja) * | 1995-02-23 | 1996-09-13 | Daihatsu Motor Co Ltd | 情報送信装置及び情報受信装置 |
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 |
US6731814B2 (en) | 2000-05-01 | 2004-05-04 | Xerox Corporation | Method for compressing digital documents with control of image quality and compression rate |
JP2002262102A (ja) | 2001-03-05 | 2002-09-13 | Matsushita Electric Ind Co Ltd | 画像符号化装置、画像符号化方法、及びその記憶媒体 |
JP4479530B2 (ja) | 2004-12-28 | 2010-06-09 | カシオ電子工業株式会社 | データ圧縮装置、及びデータ復元装置 |
US7961960B2 (en) | 2006-08-24 | 2011-06-14 | Dell Products L.P. | Methods and apparatus for reducing storage size |
JP5018060B2 (ja) | 2006-12-14 | 2012-09-05 | 日本電気株式会社 | 情報処理装置および情報処理方法 |
US20080228998A1 (en) * | 2007-03-16 | 2008-09-18 | Spansion Llc | Memory storage via an internal compression algorithm |
US8125364B2 (en) | 2007-08-13 | 2012-02-28 | Nec Corporation | Data compression/decompression method |
US8208532B2 (en) | 2008-03-31 | 2012-06-26 | Oracle America, Inc. | Method and apparatus for data compression and decompression |
WO2011033381A1 (en) | 2009-09-21 | 2011-03-24 | Gideon Kaempfer | A method and system for error resilient compression and decompression of computed tomography data |
TWI524265B (zh) | 2011-06-30 | 2016-03-01 | 艾特拉股份有限公司 | 浮點資料之壓縮 |
US8497788B1 (en) | 2012-04-25 | 2013-07-30 | Pure Storage Inc. | Efficient techniques for aligned fixed-length compression |
US9330001B2 (en) | 2012-05-21 | 2016-05-03 | Zeropoint Technologies Ab | Cache system and a method of operating a cache memory |
KR102011135B1 (ko) * | 2012-12-11 | 2019-08-14 | 삼성전자주식회사 | 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법 |
CN107836083B (zh) | 2015-05-21 | 2021-09-21 | 零点科技公司 | 用于语义值数据压缩和解压缩的方法、设备和系统 |
CA2986555A1 (en) * | 2015-05-21 | 2016-11-24 | Zeropoint Technologies Ab | Methods, devices and systems for hybrid data compression and decompression |
SE540178C2 (en) | 2016-01-29 | 2018-04-24 | Zeropoint Tech Ab | Methods, devices and systems for compressing and decompressing data |
WO2017131578A1 (en) | 2016-01-29 | 2017-08-03 | Zeropoint Technologies Ab | Methods, devices and systems for compressing and decompressing data |
-
2016
- 2016-05-20 CA CA2986555A patent/CA2986555A1/en active Pending
- 2016-05-20 US US15/575,007 patent/US10476520B2/en active Active
- 2016-05-20 JP JP2017560651A patent/JP7010548B2/ja active Active
- 2016-05-20 CN CN201680042384.0A patent/CN107925418B/zh active Active
- 2016-05-20 WO PCT/SE2016/050462 patent/WO2016186563A1/en active Application Filing
- 2016-05-20 KR KR1020177036796A patent/KR102578689B1/ko active IP Right Grant
- 2016-05-20 EP EP16796838.7A patent/EP3304746B1/en active Active
-
2019
- 2019-10-15 US US16/653,610 patent/US10819369B2/en active Active
-
2021
- 2021-11-15 JP JP2021185947A patent/JP2022031735A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5467087A (en) * | 1992-12-18 | 1995-11-14 | Apple Computer, Inc. | High speed lossless data compression system |
US20020097172A1 (en) * | 1998-12-11 | 2002-07-25 | Fallon James J. | Content independent data compression method and system |
CN1902602A (zh) * | 2003-12-29 | 2007-01-24 | 英特尔公司 | 存储带压缩的重排序数据的机制 |
CN102843142A (zh) * | 2011-06-23 | 2012-12-26 | 深圳市国微电子股份有限公司 | 可编程逻辑器件配置数据流压缩、解压缩处理方法及系统 |
US20140101485A1 (en) * | 2012-10-04 | 2014-04-10 | Albert W. Wegener | Data compression profiler for configuration of compression |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109167919B (zh) * | 2018-10-11 | 2020-05-15 | 北京文香信息技术有限公司 | 一种图片压缩方法及装置 |
CN109167919A (zh) * | 2018-10-11 | 2019-01-08 | 北京文香信息技术有限公司 | 一种图片压缩方法及装置 |
JP7433374B2 (ja) | 2019-03-22 | 2024-02-19 | 株式会社日立製作所 | ストレージシステム、及び、記憶コスト適正化方法 |
JP2022145701A (ja) * | 2019-03-22 | 2022-10-04 | 株式会社日立製作所 | ストレージシステム、及び、記憶コスト適正化方法 |
CN109962711B (zh) * | 2019-04-09 | 2022-07-08 | 深圳市道通智能航空技术股份有限公司 | 一种数据压缩方法、电子设备及存储介质 |
CN109962711A (zh) * | 2019-04-09 | 2019-07-02 | 深圳市道通智能航空技术有限公司 | 一种数据压缩方法、电子设备及存储介质 |
WO2020207410A1 (zh) * | 2019-04-09 | 2020-10-15 | 深圳市道通智能航空技术有限公司 | 一种数据压缩方法、电子设备及存储介质 |
CN111010189B (zh) * | 2019-10-21 | 2021-10-26 | 清华大学 | 一种对数据集的多路压缩方法、装置及存储介质 |
CN111010189A (zh) * | 2019-10-21 | 2020-04-14 | 清华大学 | 一种对数据集的多路压缩方法、装置及存储介质 |
CN113487025A (zh) * | 2021-07-02 | 2021-10-08 | 浙江大学 | 面向神经网络检查点数据的智能压缩存储方法和系统 |
CN113487025B (zh) * | 2021-07-02 | 2023-09-08 | 浙江大学 | 面向神经网络检查点数据的智能压缩存储方法和系统 |
US20230132037A1 (en) * | 2021-10-26 | 2023-04-27 | Hitachi, Ltd. | Storage system and data processing method in storage system |
US11829600B2 (en) * | 2021-10-26 | 2023-11-28 | Hitachi, Ltd. | Storage system and data processing method using data compression |
Also Published As
Publication number | Publication date |
---|---|
US20200044663A1 (en) | 2020-02-06 |
CA2986555A1 (en) | 2016-11-24 |
JP7010548B2 (ja) | 2022-01-26 |
KR20180019597A (ko) | 2018-02-26 |
WO2016186563A1 (en) | 2016-11-24 |
US10476520B2 (en) | 2019-11-12 |
JP2018522457A (ja) | 2018-08-09 |
US20180138921A1 (en) | 2018-05-17 |
CN107925418B (zh) | 2021-06-01 |
EP3304746A1 (en) | 2018-04-11 |
KR102578689B1 (ko) | 2023-09-15 |
JP2022031735A (ja) | 2022-02-22 |
EP3304746B1 (en) | 2021-04-07 |
EP3304746A4 (en) | 2019-01-09 |
US10819369B2 (en) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107925418A (zh) | 用于混合式数据压缩和解压缩的方法、设备和系统 | |
US10846218B2 (en) | Methods, devices and systems for compressing and decompressing data | |
US10268380B2 (en) | Methods, devices and systems for semantic-value data compression and decompression | |
US20190081637A1 (en) | Data inspection for compression/decompression configuration and data type determination | |
CN108886367B (zh) | 用于压缩和解压缩数据的方法、设备和系统 | |
CN109075798B (zh) | 可变大小符号基于熵的数据压缩 | |
EP2034738B1 (en) | Data compression apparatus and method | |
Zhurakovskyi et al. | Increasing the efficiency of information transmission in communication channels | |
CN112968706B (zh) | 数据压缩方法、fpga芯片及fpga在线升级方法 | |
CN106664101B (zh) | 自适应速率压缩散列处理装置 | |
US12001237B2 (en) | Pattern-based cache block compression | |
JP2023064241A (ja) | ストレージシステム及びストレージシステムにおけるデータ処理方法 | |
CN113659992B (zh) | 数据压缩方法及装置、存储介质 | |
BR102014006340B1 (pt) | Método e aparelho para compressão e descompressão de dados por estágios | |
WO2024138981A1 (zh) | 数据压缩和解压缩方法、装置、电子设备及存储介质 | |
Li et al. | Adaptive pixel encoding: An effective algorithm for frame buffer compression | |
Dong et al. | A lossless compression method for RTK in hardware compressors | |
Munasa et al. | Single Dictionary based Cache Compression and Decompression Algorithm | |
CN111263155A (zh) | 一种等分辨率cr图像的压缩方法及系统 | |
Deepa et al. | Microprocessor cache compressor design using P-Match algorithm |
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 |