CN101449462A - 基于集合关联高速缓存映射技术的高速数据压缩 - Google Patents
基于集合关联高速缓存映射技术的高速数据压缩 Download PDFInfo
- Publication number
- CN101449462A CN101449462A CNA2007800185097A CN200780018509A CN101449462A CN 101449462 A CN101449462 A CN 101449462A CN A2007800185097 A CNA2007800185097 A CN A2007800185097A CN 200780018509 A CN200780018509 A CN 200780018509A CN 101449462 A CN101449462 A CN 101449462A
- Authority
- CN
- China
- Prior art keywords
- storage address
- numerical value
- code
- bit
- value
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/06—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
- G06F5/10—Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
-
- 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/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Memory System (AREA)
Abstract
压缩数据的方法是通过从数据流中读出两个长度分别为K比特(20)和N比特(30)的相邻数据值分别作为存储器地址引用和当前符号值实现的。如果当前符号值按存储器地址引用与任何数值不匹配,则写入当前符号值以便按存储器地址引用替换数值之一,而且将当前符号值紧随其后的MISS代码附着到该压缩数据流上(40)。作为替代,如果当前符号值按存储器地址引用与任何数值匹配,则将HIT代码加到该压缩数据流上(50),该HIT代码代表在存储器地址引用中发现该数值的位置或与该位置相关联的属性。
Description
相关申请
[0001]这份专利申请要求给在此通过引证并入的于2006年3月24日申请的美国专利临时申请第60/785,572号的优先权。
背景技术
[0002]逐渐发展的信息数字化已经产生数不清的通信技术、多媒体应用、新的数据格式和新奇的存储装置,近二十年来处于昌盛时期。在网络上传输的文本、图像和视频、基于服务器的文件存取、文件转移、数据库查询和地理映射技术都在逐渐增加的能把数字信息转变成容易使用的格式传送的数据和多媒体应用之中。根据储存、传输和计算能力驾驭多媒体的这种能力过剩必不可少的资源数量能令人畏惧。
[0003]允许数据密集型多媒体应用发展的置科技进步之一是数据压缩。举例来说,包括科学信息、高质量图像和直播视频内容的大文件在网或公司网上的递送包括一些数据压缩的使用。同样地,在移动电话和其它无线技术方面这样的等同服务的传输能大大受益于数据压缩有效地使用可得的通信带宽。
[0004]数据压缩是除去在信息的数据内容、储存在文件、存储器缓冲区、数据流中的比特序列及其它中的多余部分的技术。以较少的比特表现信息导致通过将较多的数据分配给单位时间节约储存媒体较多的内容空间和增加可用于传输的有效带宽。因此,数据压缩已经在每个人都买得起的通信和多媒体技术方面起并且将继续起主要作用。
[0005]在数据压缩行为方面,当提及数据压缩方法的时候,涉及两种不同的程序。这两种方法被称为压缩程序和重建器。在文献中,后者被更普遍地称为解压缩程序或扩展器,虽然一些纯粹主义者使用术语重建器明确地暗示关于压缩数据的重建器。术语重建是优选的并且在这份揭示中到处用来明确地提及重建器。
[0006]压缩程序如同其名字暗示的那样处理输入来源并且把它转换成原作的另一种数字表达,在大小方面理想地比原作小。相反,重建器处理压缩数据并且产生原作的重建版本。如果来源和重建内容完全匹配,则该方法被说成是无损失的,否则它被视为有损失的。有损失的方案通常以质量下降为代价获得比无损失的方案高的压缩比。
[0007]虽然数年来已经发展和适应许多压缩方案,但是大多数压缩方案只强烈地强调改善压缩增益。然而,通常没注意到的一个因素是压缩-重建处理的速度。在时间至关重要的应用(例如,多媒体流动、视频处理或数据的无线转移)中,压缩-重建(以下称为“编码解码器(codec)”)的速度可能如果不比压缩增益更重要也是同样重要的。将太多时间花在压缩或重建上通常在大多数实时方案中是不合理的。它是最后决定响应时间和塑造使用数据的应用的表现的频道带宽、编码解码器增益和编码解码器速度的组合。简而言之,如果数据被递送得越快,它将被更快地处理和使用。结果,如果更快速地压缩数据,时间至关重要的应用变成可能的或更最佳地工作。
发明内容
[0008]本发明涉及数据压缩方法及其反转对等物-重建方法。这些方法是有效、高速、轻便、实时和高配置的无损失数据压缩的特色,因此,适合于有各种不同的通信需求的大范围的应用。本发明的一个新颖方面是使用假高速缓冲存储器作为工作空间产生和重建压缩数据。该技术的基石以新的高速缓存映射压缩(CMC)模型为基础,该模型有必然支持压缩速度的内在能力而且由于该压缩程序固有的平行性有在硬件中开发的潜力。因此,速度优化的硬件编码解码器盒子是可能的,有能力在相似的带宽条件下比最现代化的压缩程序更快地处理数据流。基本上,这项发明看得见的特征是:
(a)消耗非常低的存储器,
(b)使用非常少的***资源,
(c)就压缩方法和重建方法而言非常高的运行速度,
(d)就大多数的数据格式而言竞争性的压缩比,
(e)最少的递送时间,在高带宽下压缩时间+转移计时+重建时间的总计效应。
[0009]这些特征使该方法成为适合有有限的***资源的嵌入***、个人数字助理、芯片***(System-an-a-chip)(SOC)设计和其它硬件装置的目标。此外,CMC方法的简易性考虑到廉价的硬件或软件落实。因此,这项发明有可能对于无线的嵌入式电子器件的硬件和软件工业有高度的商业价值。
[0010]与大多数现有技术的数据压缩方法一样,本发明的方法通过消除字符传输和/或部分字符串匹配所产生的多余的,重复的或重复使用的数据减少源数据流的规模,产生压缩数据流。源数据流包括待压缩的数值串或数值序列,即N比特。压缩数据流包括原始数据流的子集和以下面描述的本压缩方法为基础插进压缩数据流的压缩代码(MISS和HIT)。压缩是部份地借助新的和新颖的方法消除源数据流中多余的重复数值的和把压缩代码(MISS或HIT)插进压缩数据流指导来自这样的压缩流的源数据的重建实现的。
[0011]举例来说,下列输入,源流“ABCCCCABDDDD”被处理成下列压缩数据流,“<m>A<m>B<m>C<m>C<h(C)><h(C)>,<m>A<h(B)><m>D<m>D<h(D)><h(D)>”,其中“<m>”是MISS代码,而“<h(X)>”是各自的字符X的HIT代码。
[0012]本发明的最值得注意的优势之一是在能被设定成与长串一样大或与单一字符一样小的可调整大小的区段中压缩数据的能力,与在上面的例子中一样。一旦区段的大小被设定,该方法有按按任何区段尺寸在收到单一区段的输入数据之后立刻开始压缩数据流的输出和随时停止和重新开始这样的输出的灵活性。这暗示无论何时需要都及时地在短串边界或单一字符边界上重新开始该程序的概率。这些特征合在一起构成“互斥流”操作模式,而且通过允许依照特定的数据需求自定义特定的压缩参数将很大的灵活性提供给应用程序。互斥流操作模式显然不同于规则流模式或区段模式。在区段模式中,通常数千字节长的数据区段是用压缩程序读出和处理的,其后能输出压缩数据。在规则流模式中,压缩程序每次一个地读字符,但是它在不确定的字符数已被处理之前将无法输出任何压缩数据。这种不确定性能影响应用程序的性能,而且有时在基于规则流或区段的压缩方案之下使应用程序变成不可能的。这项发明的互斥流模式提供一种能力使所有的压缩数据通信在空间和时间方面对于串边界或字符边界两者都变成确定性的。在数字通信和聊天软件应用程序中使用互斥流模式的附加的例子将在具体实施方法段落中提供。
[0013]压缩和重建两者是对称的可逆程序,都使用假高速缓冲存储器作为工作空间。这样的工作空间在状态和行为方面类似于在计算机体系结构中使用的真正的高速缓冲存储器的操作。该工作空间的结构包括一个或多个存储器地址,每个存储器地址分别有保存一个或多个截然不同的数值的一个或多个位置,该位置后面是作为位置选择政策用来决定多少数值被替换的非必选的状态字段。为了实现压缩,将数值每次一个地从源数据流中读出并且映射到工作空间之中。同样,为了重建原始的未压缩的数据流,将数值从压缩数据流中读出并且映射到工作空间之中。
[0014]从源流或压缩流读出的每个数值或符号的比特长度是由常数N决定的。工作空间的存储器地址的数目是由常数K决定的,该常数产生2K个可能的截然不同的地址。每个存储器地址里面的位置数是由常数Lines决定的,常数Lines产生每个存储器地址同样数目的可能截然不同的位置。所有的常数(N、K和Lines)都是借助本压缩和重建方法定义的并且聚集成特殊规格<N,K,Lines>,以便将每个方法适当地分类。
[0015]三个工作空间安排通过改变每个的存储器地址数和位置数是可能的:借助使用许多存储器地址每个地址只保存一个值的规格<N,K,1>定义的直接映射安排;借助只使用一个存储器地址保存许多数值的规格<N,0,Lines>定义的全关联安排;和借助使用许多地址每个地址保存许多数值的规格<N,K,Lines>定义的集合关联安排,最有灵活性的安排。通过以这些安排中的每个安排作为工作空间实现基本的压缩和重建器和附加的增强作用和变量,新颖的高速缓存映射压缩(CMC)和重建方法家族被推导出来。
[0016]现在的数据压缩方法通过使用有特殊规格<N,K,Lines>的工作空间安排除去数据流内的冗余。将数值和当前符号值按多样的比特长度(K比特和N比特)成对地分别从源数据流读到缓冲区或窗口之中并且复制到存储器地址引用之中。因此,第一个K比特是作为存储器地址引用读出的,而紧随其后的N比特是作为待处理的当前符号值读出的。如果K是零,则存储器地址引用是零。
[0017]在当前符号值和存储器地址引用可用于处理的情况下,当前符号值按存储器地址引用与每个数值进行比较。如果按这样的存储器地址引用当前符号值与任何数值都不匹配:
[0018](a)MISS代码/数值被加到压缩数据流上;
[0019](b)该当前符号值被加到压缩数据流上;
[0020](c)该当前符号值按存储器地址引用替换数值之一;
[0021](d)非必选地,更新存储器地址引用中的状态字段以反映位置用法的改变。
[0022]然而,如果按这样的存储器地址引用当前符号值与任何数值匹配:
[0023](a)HIT代码/数值被编码,代表在存储器地址引用中发现该数值的位置,并且被加到压缩流上;以及
[0024](b)非必选地,这样的存储器地址引用的状态字段被更新以反映位置用法的改变。
[0025]在以存储器地址引用作为前后关系处理当前符号值之后,缓冲区或窗口向右偏移N比特为下一对数据值作准备,直到源数据流被耗尽和完整的压缩数据流产生为止。
[0026]源数据是通过将上述的压缩方法颠倒过来依据压缩数据重建的。该重建方法再次使用在压缩方法期间所用的同一工作空间,再一次有与前面就压缩方法描述的一样的特殊规格<N,K,Lines>。该重建方法读早先作为存储器地址引用输出到未压缩流的先前的K比特。如果K是零,没有比特被读出,而且存储器地址引用也是零。接下来,该重建方法读压缩数据,每次1比特,直到HIT或MISS代码被解码。
[0027]如果解码值是MISS代码:
[0028](a)从压缩流读出N比特作为当前符号值;
[0029](b)该当前符号值被加到未压缩流上;
[0030](c)该当前符号值在存储器地址引用替换数值之一;以及
[0031](d)非必选地,更新这样的存储器地址引用的状态字段以反映位置用法的改变。
[0032]然而,如果解码数值是HIT代码:
[0033](a)在所述解码数值指定的位置从存储器地址引用中读出N比特作为当前符号值;
[0034](b)非必选地,更新这样的存储器地址引用的状态字段以反映位置用法的改变;以及
[0035](c)该当前符号值最后被加到未压缩流上。
[0036]在以存储器地址引用作为前后关系处理当前符号值之后,用早先输出到未压缩流的先前的K比特更新存储器地址引用,而且该方法继续将HIT或MISS代码/数值读出和解码,直到压缩数据流被全部处理和被完全重建的未压缩数据流产生为止。请注意:因为压缩流本质上是“输出”流,所以在未压缩数据流上完成读K比特的输入操作将使存储器地址引用可能变成不受欢迎的,乃至变成全然不可能的。这种在输出流上的输入操作能通过完成从当前符号值到左移N比特的存储器地址引用的N比特左移被禁止发生。
[0037]本发明以一种形式与使用一个或多个位置分别保存一个或多个截然不同的数值来压缩来自包括一连串数值的数据源流的数据的方法有关。该方法包括:
[0038](a)如果K大于零,从源数据流读出/输入恰好在源流的当前读数点之前的K比特作为存储器地址引用;
[0039](b)从源流读出/输入N比特作为当前符号值;
[0040](c)如果当前符号值按存储器地址引用与任何数值都不匹配,则将该当前符号值写入按存储器地址引用替换数值之一,以及将MISS代码/数值写到压缩数据流之中位于该当前符号值前面;以及
[0041](d)如果当前符号值按存储器地址引用与任何数值匹配,则将代表在存储器地址引用中发现该数值的位置的HIT码/数值写到压缩数据流中。
[0042]有利的是,在所有的数值初始化之后在每个存储器地址重复(a)到(d),其中在(a),存储器地址引用最左边的几比特如果它们不可用于从源数据流读出则被适当地初始化。
[0043]本发明以其另一种形式与以一个或多个截然不同的计算机存储器地址作为工作空间依据至少包括一些源数据的压缩数据和包括MISS和HIT代码的压缩代码重建未压缩的源数据流的方法有关,其中每个计算机存储器地址有一个或多个位置分别保存一个或多个截然不同的数值。该方法包括:
[0044](a)如果K大于零,从未压缩数据流读出/输入恰好在未压缩流的当前***点前面的K比特作为存储器地址引用;
[0045](b)从压缩数据流读出/输入代码值,所述的代码值代表HIT编码位置或MISS发生;
[0046](c)如果该值是MISS代码,则从压缩流读出N比特作为当前符号值,将这样当前符号值按在(a)中获得的存储器地址引用写到未压缩流中替换数值之一;以及
[0047](d)如果该值是HIT代码,则从自解码的HIT代码按在(a)中获得的存储器地址引用给定的位置读出N比特作为当前符号值,并且将这样的当前符号值写到未压缩流中。
附图说明
[0048]图1是描绘依照本发明的高速缓存映射压缩法的输入和输出序列的图表,其中标示区段指的是从源数据流读出的符号值;
[0049]图2是描绘依照本发明的高速缓存映射压缩的图表,其中标示Block和Address的行分别表示当前符号值和存储器地址引用;
[0050]图3是描绘依照本发明的通用高速缓存映射压缩(CMC)方法的流程图;
[0051]图4是描绘依照本发明的直接映射CMC压缩程序方法的流程图,其中变量Block、Line和SET分别表示当前符号值、(存储器地址内的)位置编号和存储器地址引用;
[0052]图5是描绘依照本发明的集合关联CMC压缩程序方法的流程图,其中变量Block、Line和Set分别表示当前符号值、(在存储器地址内部)位置编号和存储器地址引用;
[0053]图6是描绘依照本发明的类属关联CMC压缩程序方法的流程图,其中变量Block、Line和Set分别表示当前符号值、(存储器地址内部的)位置编号和存储器地址引用;
[0054]图7是在本发明中揭示的所有的压缩和重建方法使用的工作空间或假高速缓存存储器的图表;
[0055]图8是描绘依照本发明的类属高速缓存映射压缩法的流程图,其中变量Block、Line和Set分别表示当前符号值、(存储器地址内部的)位置编号和存储器地址引用;
[0056]图9是依照本发明的重建方法的流程图,其中变量Block、Line和Set分别表示当前符号值、(存储器地址内部的)位置编号和存储器地址引用;
[0057]图10是依照本发明就直接映射法、全关联法和设定关联法描绘编码程序和高速缓存程序之间的关系的对比图;
[0058]图11描绘Huffman树,展示依照本发明如何分配Huffman代码;而
[0059]图12描绘依照本发明就N为8的特定情况而言输出的压缩数据如何排列,包括在重建数据方面用来指导解压缩方法的每个权标,即,HIT代码和MISS代码或控制位。
具体实施方式
[0060]现在的高速缓存映射压缩(CMC)法以类似于在计算机内部发生在中央处理器(CPU)和主存储器之间的内部数据高速缓存机制的模型为基础。一个差别是现在的CMC方法在试图产生压缩而不是象它在计算机体系结构的情况中所做的加快存储器存取时开发高速缓存的数据位置特性。在这里解释的CMC方法表现有限状态自动机的状态,因此能作为软件或硬件人工制品被实现。如同遍及这份揭示使用的那样,当提到压缩数据的时候,输入流和输出流分别指出源流和压缩流。同样,当重建的时候,输入流和输出流分别对应于压缩流和重建流。
[0061]现在的方法将源流和重建流两者视为叫做区段的固定长度N-比特的数值的序列。在N-比特的数据区段上操作而不是直接处理源符号的理由是双重的。第一,区段是高速缓存器内最小的数据转移单位,其大小与高速缓存行一样。第二,区段大小能独立于源符号的比特长度设定。这依次允许更多地控制压缩参数,从而允许它们与源流特征更好地匹配,并因此允许尝试更好的压缩比。然而,为了清晰,当呈现提议的要求设定的时候,N-比特数据区段被也称为当前符号值。
[0062]CMC压缩方法从源流每次读出一个N-比特的数据区段。如果当前的区段是在高速缓存的特定位置发现的,那么命中发生;否则,遗漏产生。接下来,该压缩方法输出两个可能的序列之一,即H比特的HIT代码或包含M比特的MISS代码,其后跟着当前的数据区段。该压缩方法继续到所有来自源流的区段都被处理。
[0063]图1展示一条区段B、A、B、C的任意流在压缩前后的状态。举例来说,如果输入序列是{B,A,B,C...},假定的压缩输出序列是{<遗漏><B>,<命中>(对于A),<命中>(对于B),<遗漏><C>...}。通过比较两个序列,能看到对于每个遗漏第一个和最后一个区段都以M比特的扩展为特色,而中间的两个区段将(N-H)比特的压缩因子贡献给每个区段。因此,通过知道命中的总数,精确地计算压缩比是可能的。
[0064]在遗漏代码和命中代码之间有概念上的差别。遗漏代码只起布尔记号的作用。它告知重建器遗漏曾发生,因此,遗漏的区段依从下一个。反之,命中代码不仅指出某区段被成功地高速缓存,取决于高速缓存规格,而且指出命中代码还必须给该集合中曾发生命中的行号编码。请注意:为了方便,遗漏代码被定义为一比特的数值,但是为了两者的平均长度代码减到最小,可能用命中代码长度进行权衡。请注意:行号和集合也被分别称为位置编号和存储器地址引用。
[0065]通过视觉检查图1的输出序列,显然当较多的命中代码浮现在输出上的时候压缩有所改善,而当那些命中和遗漏的代码长度增加的时候压缩降级。命中的数目能通过在每个集合中安排较多的行最大化,但是,不幸的是这样做也会增加HIT代码长度。因此,明显地牵涉最小化问题。
[0066]如果当前区段是在高速缓存的某特定位置发现的,则命中发生。当前区段实际映射的特定位置是决定性的。这映射是允许在第一位置中产生命中的映射而且如同图1揭示那样该映射允许减少输出序列的大小实现压缩。为了高速缓存区段,需要两种输入:区段和地址。地址将决定将映射该区段的高速缓存集合,因此,它也被称为“高速缓存映射地址”。
[0067]为了提取适合引入区段的映射地址函数,使通常能用文本开发的数据冗余类型看得见是有帮助的:串匹配和字符串。考虑下面的序列:
ABCCCCABDDDD...
[0068]在这个序列中,只有一个串匹配(子串“AB”与第二子串“AB”匹配)和两个字符串(“CCC...”和“DDD...”)。为了使CMC压缩程序有效,它必须通过使引入的区段(字符)对在高速缓存区中已经遇到的区段产生命中来充分利用这些冗余。这转化对于两者获得同样的映射地址,以便它们的区段内容在比较的时候匹配。假定在该序列中最初的三个字符“ABC”已经处理过。这样的高速缓存状态展示在表1中。
表1
映射地址 | 高速缓存行 |
? | A |
? | B |
? |
[0069]为了获得对尾随的下一个字符串“CCC...”的命中,每个引入的“C”应该被高速缓存在与先前遇到的“C”一样的映射地址中。这导致使用先前的字符本身作为给高速缓存映射地址的输入;换句话说,使用先前的字符的等价计算机二进制表达产生高速缓存映射地址。结果,如果字符“C”被高速缓存在其映射地址是前一个字符“C”的函数的行中,新的连续字符“C”将在进行比较时产生命中,因为它们的映射地址将是相同的。
[0070]图2更详细地举例说明CMC压缩方法,其中映射地址K是8比特长、当前区段大小N也是8比特长,而且每个存储器地址都包含一个只保存数据区段的位置。从源流读出的当前区段接受当前字符(8比特),而且映射地址被分配给先前的字符(8比特)。压缩方法刚刚处理过源流最初的8个字符而且已将由此产生的序列输出到压缩流中。MISS代码和HIT代码被分别表达为<m>X和<h(X)>,其中X是曾导致遗漏或命中的区段。图2也展示高速缓存的当前状态(在处理第二子串“AB”转换)和最后状态(在处理最后的字符“D”之后)。命中在高速缓存内部用圆圈表示,而其余的是遗漏。
[0071]如图2所示,压缩程序不仅检测字符串“CCC...”和“DDD...”,而且通过检测第二子串“AB”和产生对应的关于字符“B”的命中检测串匹配。请注意,高速缓存行在任何给定的时间只保存一个区段。这是适合于直接映射的高速缓存安排的情形,下面将参照图4进一步详细地讨论。最右面的字符表示在高速缓存中最新近的区段。当命中发生的时候,该当前区段不被再次高速缓存,虽然为了举例说明,它在高速缓存中是用圆圈表示的,以便指出这样的区段曾导致命中。映射地址实际上指的是在高速缓存中特定的集合。
[0072]CMC编码解码器与所用的内在高速缓存结构紧紧地耦合。因此,修改高速缓存规格(举例来说,每个集合的行数)有大幅度改变现在的压缩方法的行为的效果。
[0073]现在的CMC方法能根据三个参数(N、K、Lines)和一个代码被定义。这些参数描述内部高速缓存的规格(每个区段的比特数、集合寻址的比特数、行号),而该代码定义用来表达压缩流中的命中和遗漏的编码。行也能根据L(给2L行编码需要的比特数)定义。
[0074]有利的是,现在的CMC压缩方法可以使用三种特殊的高速缓存结构特性之一来实现。这三种高速缓存结构定义现在的压缩方法的三种特定形式,而且被称为:直接映射、集合关联或全关联。为了便于解释,这三种方法将参照假代码予以描述,以便在没有对于原本熟悉这项技术的人显而易见的落实细节的情况下更好地理解现在的压缩方法和三种有利的落实。
[0075]通常参照图3,方法10描绘现在的CMC方法的类属落实。方法10以一个或多个截然不同的计算机存储器地址作为工作空间压缩来自包括一串数值的数据源流的数据。每个计算机存储器地址有一个或多个位置分别保存一个或多个截然不同的数值。
[0076]如果K大于零,从源数据流读出或输入恰好在源数据流的当前读数点前面的K比特作为存储器地址引用(步骤20)。如果在当前读数点前面没有比特,将没有K比特被读出,而且K将被赋予数值零。举例来说,参照图2和图3,如果源数据流是“ABCCCCABDDD”,起始的第一读数点是A。因为A在第一个位置,所以没有K比特将从源数据流读出。因此,K被赋予数值零。
[0077]接下来,从源流读出N比特当前符号值,该当前符号值在这个例子中是A(步骤30)。
[0078]如果该符号值按存储器地址引用与任何数值都不匹配,则将该当前符号值(即,A)按存储器地址写入替换数值之一。除此之外,将遗漏代码“<m>”放在当前符号值前面写进压缩数据流。在这个例子中,当前符号值(即,A)在该存储器地址(它是零)与任何数值都不匹配,事实上它是唯一的数值,因此,将遗漏代码<m>在A前面写进压缩数据流(步骤40)。
[0079]如果这样的当前符号值在该存储器地址与任何数值匹配,则将命中代码写到压缩流中,代表该存储器地址引用发现该数值的位置(步骤50)。在这个例子中,因为按存储器地址零在该存储器地址的任何位置都没有发现数值A,所以不将命中数值写进压缩数据流。
[0080]在步骤60,在按每个存储器地址将所有的数值初始化之后对源数据流中的每个数值重复该方法,其中存储器地址引用最左边的几比特如果它们不可得自源数据流则被适当地初始化(步骤60)。因此,第一时间重复步骤20,立刻将在当前读数点(现在是B)之前的K比特从源数据流中读出或输入,而且立刻在当前读数点(即A)之前给存储器地址引用分配一数值(步骤20)。接下来,数值B是作为来自源数据流的N比特读出的,并且被分配给当前符号值(步骤30)。在步骤40,因为当前符号值(即,B)在存储器地址A与任何数值都不匹配,事实上是唯一的数值,所以将该当前符号值被写入以便替换在存储器地址A的数值(步骤40)。随后,将遗漏代码放在当前符号值(即,B)前面写到压缩数据流中。结果,当前的压缩流现在由<m>A<m>B组成。
[0081]方法10对下两个数值(即,C和C)被重复至少两次。在方法10的第五次重复期间,随着来自源流的N比特(步骤30)和前一个数值(也是C)被作为存储器地址引用输入(步骤20),第五个数值(即,左起第三个C)被读出。在步骤40,因为当前符号值C事实上在与C相对应的存储器地址确实与当前的数值匹配,所以没有遗漏代码或当前符号值被写进压缩流。改为,在步骤50,将代表在该存储器地址引用中发现数值C的位置的HIT代码写进压缩数据流,因为当前符号值C与在存储器地址引用C的数值之一匹配。因此,当前的压缩数据流现在是<m>A,<m>B,<m>C,<m>C<h(C)>。然后,方法10被一直重复到所有的数值都被处理。
[0082]方法10能在需要时被修正,以便优化处理时间和效率以及压缩增益,即,压缩数据流的大小相对于源数据流的大小。举例来说,在步骤20,读出的K比特可能被减少/转换成较少的或相同的比特数以便产生作为存储器地址引用使用的合成字。举例来说,读出的K比特随后被转换成相等或较少的比特数,可能在设法减少工作空间大小的散列法策略之后,然后作为存储器地址引用在后续的步骤中用于压缩方法和重建方法。
[0083]把K比特转换成较少的比特数并因此减少工作空间需要的存储器数量的一种方法是通过使用散列法策略,该K比特被输入到散列函数,后者将K-比特的数值在它被用作存储器地址引用之前转换成较小的R-比特的数值。为了举例说明简单而有力的散列函数,考虑送回两个整数相除的余数的取余操作算符。换句话说,如果D和d都是整数而且D>d,那么“D比d”送回D/d的余数,该余数被保证是介于0和d-1之间的另一个整数。如果从源流读出的2K个存储器地址全部不能在可得的工作空间存储器中寻址,这可能是非常方便的。在这种情况下,D被赋予最初的存储器地址引用,d被赋予可得的真实存储器地址的总数,2R,而“D比d”的结果被指定给新的减少的存储器地址引用而且随后被用于工作空间寻址。
[0084]除此之外,在步骤20,存储器地址的非必选状态字段能用于跟踪存储器地址里面的位置用法。然后,随着该方法继续下去,在步骤40或50,该状态字段在将某个数值读/写为该存储器地址之后被更新。该状态字段被用于集合相联压缩法跟踪当遗漏发生时多少数值被替换。
[0085]该状态字段在遗漏发生的时候(也就是说,在当前符号值按存储器地址引用与任何数值全然不匹配的时候)或许依照用来替换数值的策略以不同的方式被使用。不考虑策略,期待是在为特定的存储器地址替换数值的时候该状态字段提供该用的位置的最好估计。在实践中,该状态字段包含与按存储器地址存在的位置一样多的计数器。每个计数器依照特定的替换政策通过储存代表每个位置应该被替换的次序的等级适当地记住特定的位置。举例来说,假定最近最少用的(LRU)替换策略,每个存储器地址有4个位置,状态字段在某个点包含储存在与每个位置相关联的4个计数器之中每个计数器中的下列数值:3、1、0、2。这意味着在存储器地址中位置编号0、1、2、3有在状态字段中与数值3、1、0、2相关联的LRU计数器。在LRU策略之下,这意味着位置0是最近最多使用的,因为它有数值为3的最高LRU计数器,下一个是LRU计数器=2的位置3,位置1跟在后面,LRU计数器=1,最后是位置2,LRU计数器=0。因此,当数值几乎要替换的时候,与最低的LRU计数器数值相关联的位置编号将为替换选定,即这个案例中的位置2,因为它代表最近最少使用的位置,与替换策略本身建议的一样。另一方面,如果使用另一个策略,状态字段可能是以不同的方式实现的,与在最有经验的数值替换政策中一样,该状态字段优选被构思为先进先出(FIFO)的等待队列,而不是计数器,在这种情况下新的替换位置被加到等待队列的前面而用于替换的最有经验的位置是从尾部获得的。不管所用的替换策略,状态字段用来决定在遗漏已经发生之后在替换数值的时候应该选择哪个位置。
[0086]方法10能被修正以便包括使用各种不同的高速缓存结构的各种不同的压缩方案,这包括直接映射CMC方法100(图4),集合相联CMC方法200(图5)和全相联CMC方法300(图6)。
[0087]参照图4,一般地说,方法100使用简单的高速缓存安排。在这种安排中,高速缓存由每集合一行组成,在这种情况下只有一个数据区段能被储存在任何指定的集合;因此,高速缓存规格为<N,K,1>。这种结构简化内在区段操作,因为不涉及替换政策,或相反,该策略是最小的,即,如果遗漏发生,则替换在该集合中可得唯一区段。直接映射高速缓存不需要用于替换政策的状态位,该替换政策是在集合相联压缩方法200和全相联压缩方法300中实现的。所以,直接映射高速缓存与依照本发明其它方面的集合相联或全相联高速缓存相比是较快速的和较少资源密集的。然而,代价是与其它的安排相比命中率较低。
[0088]现在明确地参照图4,直接映射CMC压缩方法100包括保存当前断言的区段、行和集合的定位变量。这些变量再一次分别代表当前符号值、位置编号和存储器地址引用。方法10(图3)的相似步骤在图4中被增加100。集合被初始化到零(步骤105)。来自源数据流的N比特被读和复制到Bloch,而且如果流指的是文件,则相关联的文件指针被更新,即,向前移动N比特(步骤130)。只要没有到达数据流的末端,数据区段就是从源流读出的(步骤130)。
[0089]当前区段是在特定的集合中搜寻的,而且因为在直接映射高速缓存中每个集合只有一行,所以只有那行被搜寻(步骤134)。如果该区段与行的内容不匹配,则遗漏发生,而且该区段被写到该高速缓存行中(步骤136)。
[0090]此外,如果该区段未被发现,充当“遗漏”代码或标记的1比特数值被写进压缩流(步骤140)。该标记的数值是不变的MISS(步骤140)。此外,该当前区段被写进压缩流(步骤142)。在压缩数据流的重建或解压缩期间,该重建方法不能从该高速缓存获得该区段,因为遗漏发生,这将在后面更详细地讨论。因此,该区段需要这样复制在压缩流中,以便稍后它能被找回(步骤142)。
[0091]作为替代,如果该区段被发现(第136步骤),1比特数值被写进压缩流以指出命中发生(步骤150)。HIT标记是在重建方法期间用来从高速缓存中提取区段的。因为在映射法100中每个集合只有一行,所以在步骤150给压缩流的行号编码不是必需的。
[0092]当前集合的数值是为方法100的下一次重复准备的(步骤160)。更新程序概念上类似于源流顶端上的“偏移占位符”在每个重复回合结束时向右偏移N比特,而且从流的那个点读出的K比特,如图2所示。这个操作基本上等同于将该集合变量的内容向左偏移N比特和读出来自区段的N比特,因为当前区段包含刚刚从源流读出的相同的N比特。
[0093]直接映射压缩法100使用规格为<N,K,1>的特殊的直接映射工作空间。在这种安排中,每个存储器地址只有一个位置或行被用来只允许储存一个数值。这使遗漏数值的替换变得微不足道,因为既不需要政策也不需要状态字段。另外,因为每个存储器地址有一个位置只储存一个数值,所以HIT代码代表在当前的存储器地址引用中找得的数值的简单发生,即,命中本身的发生。
[0094]现在参照图5,方法200是现在的压缩方法的集合相联CMC压缩方法形式,类似于方法10和100的步骤分别上升100和200。关于方法100,在步骤205,区段、行和集合被初始化。然后,将数据区段从源数据流中读出。不同于直接映射法100,有不止一行要搜寻。因此,来自指定集合的所有的行都被搜寻(步骤234)。如果该区段与任何行的内容不匹配,则遗漏发生,而且该区段被写进高速缓存(步骤236)。
[0095]类似于方法100,如果区段被发现,指出命中的1比特数值被写进压缩流(步骤250)。然而,因为每个集合不止一行,所以在解压缩数据流的重建期间,无法知道该重建方法应该从哪一行取回该区段。结果,命中标记是不充份的,重建方法需要发生命中的行号被转到下一个步骤。
[0096]在写入命中标记之后,给发生命中的行号编码并且写进压缩流(步骤252)。编码只需要足以识别该行,因此,可以与由L比特组成的保存该行号的二进制表达的固定代码长度一样简单(步骤252)。
[0097]然而,如果遗漏发生,步骤200以与步骤100相似的方式继续进行,包括将遗漏标记写进压缩流(步骤240步骤)和将遗漏区段写进压缩流(步骤242步骤),以及为下一个重复准备当前集合的数值(步骤260)。
[0098]在方法200的一个特定的进一步落实中,方法200可能进一步包括当替换某个数值的时候决定应该使用哪个位置的替换政策。这是借助SearchBlock_WriteIfMiss()方法或函数在内部完成的(步骤236)。典型的替换政策按照最优选到最少选的次序包括:最近最少使用的(LRU),先进先出(FIFO)或最有经验使用的,最不频繁使用的(LFU),随机的,等等。与这些替换政策相关联的方法每逢为任何理由在高速缓存里面存取某个区段的时候都在该方法内部调用ReadBlock()和SearchBlock_WriteIfMiss()(步骤230步骤和236)。
[0099]为了了解替换策略如何工作,接下来使用下面的具体例子解释最近最少使用的(LRU)替换政策。考虑存储器地址有4个位置并因此状态字段包含4个与每个位置相关联的LRU计数器。假定在压缩处理期间的某个点那些LRU计数器分别包含数值3,0,2,1。这意味着位置0因为它相关联的LRU计数器有最大的数值3所以是最近使用最多的位置,而位置1因为它相关联的LRU计数器有最小的数值0所以是最近最少使用的位置。所以,当遗漏发生的时候,位置1将被选定用于替换,因为它的LRU计数器是0,指出它是最近最少使用的。现在,假定命中发生在位置3。
[00100]在这个例子中LRU计数器被更新如下。因为位置3现在是最近使用最多的,所以所有的LRU计数器都需要被更新以便反映在位置用法方面的新改变。这是更新LRU计数器的类属程序(generic process):与发生命中的位置相关联的当前的LRU计数器数值被读作T。接下来,数值大于T的LRU计数器全都被递减1。最后,该当前的LRU计数器被赋予最大的数值,因此给它加的标签为最近使用最多的位置。所以,当命中发生在位置3的时候,在当前的LRU计数器值为3,0,2,1的情况下,这样的计数器被更新如下:T被赋值1,位置3的LRU计数器数值。接下来,数值大于T=1的所有的LRU计数器都被渐减1。这样,LRU计数器变成2,0,1,1。最后,当前的LRU计数器被赋予最大的数值,3。因此,LRU计数器现在变成2,0,1,3。简要地说,LRU替换政策以这样的方式工作,以致将总是存在不同的LRU计数器值,代表每个位置的用法等级。
[00101]在进一步的替代形式中,变长度编码方案能用于以这样的方式给命中代码和遗漏代码赋值以致最经常使用的较低的位置使用较短的代码表示,而较不经常使用的较高位置被赋予较长的代码。
[00102]在文献之可得的一些变长度编码方案能用来给命中代码和遗漏代码赋值。举例来说,如果每个存储器地址的位置数目很少,例如2,3,或4,则Huffman能用来表达每个位置编号。如果位置数目比较大,则开始-步进-停止代码将是优选的,因为它们是以比Huffman方案快得多的速度产生的。
[00103]举例来说,变长度编码方案能包括两种途径。第一途径用来计算在每个位置的使用频率而第二途径用来分配可变长度代码,这些代码将以这样的方式表示每个位置以致最频繁使用的位置被赋予较短的代码而最不频繁使用的位置被赋予较长的代码。举例来说,假定每个存储器地址的两个位置被使用。结果,为了计算发生在位置0和位置1的遗漏百分比和命中百分比,第一途径是通过运行压缩方法完成的。所以,在第一途径期间没有输出被写进压缩流。
[00104]在获得百分比pA、pB和pC之后,其中pA是遗漏百分比,pB是位置0的命中百分比,而pC是位置1的命中百分比,于是产生适于pA,pB和pC的Huffman树,和分配代表遗漏(A)、位置0的命中(B)和位置1的命中(C)的Huffman代码,如图11的Huffman树所示。如果A<B<C,这意味着pA<pB<pC,则A、B和C将有下列赋值的Huffman代码:11、10和0。
[00105]此外,作为另一选择,而不是给位置编号编码,LRU计数器的数值,保持在状态字段中,均为一,被改为编码的。LRU计数器用来实现LRU替换政策和表达每个位置的用法等级,以便较高的数值表示最近较多使用的位置,反之亦然。所以,较高的LRU计数数值被赋予较短的代码而较低的数值被赋予较长的代码。在给与高速缓存行相关联的LRU计数器编码而不是给高速缓存行号本身编码后面的理由如下:因为最近使用较多的行与最近使用较少的行相比有较多的机会获得将来的命中,所以每行的用法等级能与那行上的命中发生的概率相关。因此,在这个假定之下,等级最高的行计数器将有较高机会获得下一次命中,依此类推,直到等级0,该等级代表该行有匹配区段的机会最低。期待是有较高的LRU计数(最近存取较多的)的那些行将产生比有较低的LRU计数的那些行多的命中。如果这个趋势被满足,代表命中的平均代码长度将会减少,借此改善压缩。
[00106]压缩方法10、100和200能以计算机存储器作为工作空间实现用N比特作为给当前流数值的输入,用K比特作为给存储器地址的输入,用L比特指出在该存储器地址引用发现数值的位置和用1比特作为输出指出命中或遗漏是否产生的假高速缓存存储器。
[00107]当所有的行号有相等的分布的时候,使用固定长度代码表示行号是有利的。然而,这种不变性在实践中可能不是令人想要的。如果高速缓存行可能呈现非均匀分布,则命中和遗漏的平均代码长度可以通过将较短的代码分配给较经常评定的行被进一步减少。在选择适合每个高速缓存集合有不止一个高速缓存行的压缩方法的时候,使用1比特标记表示命中失去重要性。编码问题需要根据遗漏发生和这样的命中发生的行号被重新叙述。因此,基本上有符号(1+LINES)要编码:代码“1”表示命中(MISS)而代码“LENES”表示每次命中(HIT)发生的高速缓存行。
[00108]一个限制是用它们在集合中的位置(即,用它们的行号)给各行编码如果它们几乎没有相关关系(即,如果它们呈现均匀分布)则根据代码长度减少不提供增益。如果改为使用与高速缓存行有关的另一个属性,例如,使用前面就方法200讨论的LRU计数器的数值。这个限制能被克服。另一个限制是较多的时间被卷入命中和遗漏的编码和解码。然而,这是考虑编码和建模两者的任何方法的一般情形。这样的时间总开销能通过使用命中代码和遗漏代码的静态赋值与先前为了强迫HIT代码呈非均匀分布并因此充份利用变长度编码方案减少平均代码长度和改善压缩讨论过的变化相结合被减少。
[00109]现在通常参照图6和图7,全相联CMC方法300指向当K(代表2K个集合的比特数)减少到它的最小值(即零比特)时的情况。结果是在整个高速缓存中只有一个集合的全相联高速缓存。图7描绘规格为<N,0,2L>的样板全相联高速缓存安排。用方法300实现的内在的高速缓存程序的一个重要效果是映射地址本质上被除去。结果,当在高速缓存中搜索区段(步骤334)、读出区段(步骤330)和写入区段(步骤340、342和350)的时候,CMC编码解码方法300只需要当前的区段。集合变量总是零。人们应该注意到不同于方法100和200,方法300不需要在循环的最后一步(即,在步骤342、352之后)更新变量。
[00110]虽然全相联压缩方法300产生比方法100和200多的命中,但是方法300不产生较高的压缩比。这是由于两个原因。第一,为了实现好的命中比,集合中的行数需要足够大来适应充份的区段;第二,即使有大量的命中,固定长度编码也不会充分利用它们,因为每个编码的命中行在压缩流中将有相同的长度,如果精确地采用每个高速缓存集合2N个高速缓存行,最终将取相同长度的引入数据区段,即N比特。然而,后者的改变是一有效方法,更全面的描述如下。
[00111]在全相联方法300中,使用规格为<N,0,Lines>的全相联工作空间。在这种安排下,只使用一个有多个位置的存储器地址,从而允许在同一存储器地址中同时储存多个数值。这将给发生命中的位置编码的附加的复杂性引进压缩流,以便解压缩程序能重建最初的数据流。所以,HIT代码被用于这种情况表达这样的位置。
[00112]在一种进一步的形式中,全相联方法300能为了提高性能通过每个存储器地址至少使用2N个位置并将每个位置初始化到特定值0,1,2,...,2<N>-2,2<N>-1全然消除对MISS代码的需要进行修正。由于引入的数值是N比特长,所以,在2N个可能的数值里面总会有一个与在工作空间中来自先前被初始化的位置的某个数值匹配。再者,HIT代码在这种情况下用来代表这样的位置。在这种情况下用于工作空间的特定的度量标准是<N,0,Lines>,其中Lines等于2的N次幂,即,<N,0,Lines>=<N,0,2N>。
[00113]现在参照图8,类属CMC压缩方法400将方法100、200和300合并,基于这份揭示这将很容易看到。方法400包括来自之前的方法100、200和300但(标号)被分别升高100-300的步骤。
[00114]在方法400中,数据区段是从源流取回的(步骤430),如果未被发现则被高速缓存(步骤434,436),适当地给命中编码(步骤450,452)和给遗漏编码(步骤440,442)。当较多的行被加给集合相联方案(步骤439)的时候,命中行必须也被编码(452)。当在相联方案中只有一个集合(步骤455)的时候,该集合的地址不是相关联的,因此,步骤460和462不被完成。与特定的高速缓存方法的主要区别在图8中用灰色和粗体字突出出来。
[00115]方法400和方法10、100、200和300之间的另一个区别是命中标记与命中行的编码合并,而且该编码本身对于命中和遗漏都是悬而未决的。这扩展成无数种编码概率,由此变长度方案可能是最有效的。反之,对于集合相联和全相联情况,即,方法200和300,编码是用由保存行的二进制表达的L比特组成的固定长度方案明确地指定的。
[00116]在方法400中,命中和遗漏是以与它们在方法200中被赋值时相同的方式编码或赋值的。举例来说,命中和遗漏是以这样的方式编码的,以致最经常使用的较低的位置是用较短的代码表示的,而不怎么经常使用的较高的位置是用较长的代码表示的。用于HIT代码的变长度代码代表在存储器地址引用中发现当前符号值的位置,即,发生命中的位置,该位置连同LRU替换政策决定在错配(遗漏)发生时应该表达哪个数值。压缩方法400给用于那些命中的变长度代码编码。类似地,重建方法将这样的代码解码。只有当每个存储器地址有至少两个位置的时候,也就是说,当它能同时储存不止一个数值的时候,这才是可适用的。所以,它适用于有特定规格<N,K,Lines>的集合相联配置,其中Lines确实大于1。
[00117]作为工作空间使用的计算机存储器是作为以N比特作为当前符号值的输入、以K比特作为存储器地址引用的输入、以L比特作为指出在该存储器地址引用发现数值的位置的输出和以1比特作为指出命中或遗漏是否产生的输出的假高速缓存存储器实现的。该假高速缓存存储器用来实现压缩方法10、100、200、300和400的工作空间。术语假高速缓存存储器在这个意义上用来强调用于计算机体系结构的真正的结构高速缓存存储器和所有包含高速缓存映射压缩(CMC)家族的压缩和重建方法所使用的内部工作空间之间的相似处。具体地说,假高速缓存与发生在计算机的中央处理器(CPU)和它的主存储器之间的内部数据高速缓存机制相似,但是就输入流而言代替CPU,而就输出流而言代替主存储器。结果,数据位置特性对于每个高速缓存是以不同的方式充分利用的。假高速缓存存储器在试图产生压缩时充分利用这样的数据的空间和时间方面,反之,结构高速缓存改为试图加速存储器存取。假高速缓存存储器是根据为了完成压缩和重建方法已实现的工作空间将分别需要有的特定的输入和输出描述的。
[00118]参照图9,一般地说,CMC重建方法500从先前使用本发明的压缩方法已产生的压缩数据流产生初始源数据的精确副本。方法500将与压缩方法10、100、200、300和400类似的方面合并,例如,在压缩期间使用的高速缓存历史方法学与在重建方法500期间复制的一样
[00119]现在明确地参照图9,各种不同的变量(即,Block、Line、Set和Token(区段、行、集合和权标))被初始化(步骤505)。在方法500的每次循环或重复期间,一个数据区段被取出并被写进重建或未压缩流。该区段如果遗漏的代码被解码则来自压缩流,如果改为命中行被解码则来自高速缓存。如果发现遗漏标记,则该区段先从压缩流读出然后被高速缓存。否则,解码的命中行被作为索引用来从高速缓存中当前的集合直接取回该区段。
[00120]明确地参照图9,用于当前的区段、行、集合和权标(它暂时保存命中和遗漏代码)的局部变量被宣布(步骤505)。集合首先被初始化到零。
[00121]接下来,权标被读出和解码,在这种情况下权标必须要么保存遗漏标记或要么保存命中行(步骤530)。压缩流被全部读出,直到流的末端(步骤532)。如果检测到遗漏标记(步骤538),则遗漏区段自然地跟在后面。因此,接下来从源流读出该遗漏(步骤540)并将该遗漏从高速缓存写进当前的LRU行(步骤542)。否则,该区段是按解码的命中行直接从高速缓存读出的(步骤550)。
[00122]接下来,从步骤542或步骤550获得的区段被写进重建的或未压缩的数据流(步骤555)。如果可适用,当前的集合被更新(步骤560),而且方法500从步骤530重新开始。
[00123]在进一步的形式中,HIT和MISS代码/数值被聚集到权标(在数据重建期间用来指导解压缩方法的控制位)中。权标是N比特的倍数,所以从来源流或压缩流读出的数值在复制到压缩流或未压缩流中的时候保持按N比特的倍数对齐。当N是8比特(即,字符字节)长的时候,命中代码和遗漏代码被聚集在n-字节的权标中,其中n是来自集合{1,2,3,...}的自然数,所以从源流或压缩流读出的数值在被分别复制到压缩流或未压缩流中的时候保持字节对齐,如图12的压缩输出数据所示。结果,非必选的优化将在压缩数据流上完成,通过实时地重新安排压缩数据格式化的方式简化个别位的输入/输出操作。这将所有的HIT和MISS代码一起组合成固定长度的权标。每个权标变成N(从源数据流读出的每个引入数值的比特长度)的倍数。
[00124]通常,N变成8比特长,也就是说,每个引入数值是一个字符字节,这意味着每个权标是字节的倍数,即n-字节长,n是来自集合{1,2,3,...}的自然数。这种优化有使权标(命中/遗漏代码)和源流数值在N-比特的边界对齐和简化有关压缩数据流和未压缩数据流的输入/输出操作的作用。这将提高本发明的压缩和重建方法的总速度。
[00125]现在人们将清楚本发明的压缩方法提供在之前的压缩方法中找不到的特征和优势。本发明的CMC编码解码器是通用的,不管输入数据的特性对于每一个来源以几乎一样的方式处理从输入流收到的数据区段。
[00126]本发明的方法进一步的特征是它是对称的。这意味着CMC压缩方法和重建方法本质上根据相对的努力、时间和空间复杂性等等完成相同的处理。这种对称性态在分析CMC编码解码器的时间/空间复杂性的时候变得更明显。
[00127]除此之外,本发明的CMC编码解码器按“互斥流”模式工作。简而言之,这意味着从输入流收到的每个符号是按“每次一个”处理的,更重要的是,输出将在处理这样的符号之后立刻产生。这不同于大多数早先的压缩方法,因为,一般地说,后者要么是按规则流模式工作要么是按区段模式工作。在规则流模式中,符号是每次一个地处理的,但是它们的输出不是处理之后立刻产生的,而是一直延迟到在内部积累了给定数目的输入符号以便它们能被处理。在区段模式中,压缩程序从源数据流中读出固定数目的符号(通常是几千字节),处理它们,然后产生等同的压缩区段。
[00128]一些优势起源于用本发明的方法实现的“互斥流”模式。举例来说,在数字通信中可能要求给定的通信程序保持间歇的数据流从发射器到接收器。如果数据没有按规则的时间间隔从发射器送出,则接收器可能失去与发射器的数据同步(同步)。如果通信程序倚赖要么按规则流模式要么按区段模式工作的压缩技术,那么当压缩程序正在积累和在内部处理输入符号的时候接收器在发射器空闲的时间间隔期间可能失去数据同步。反之,如果改用本发明的与CMC技术相关联的方法,则没有失去数据同步的概率,因为那些方法对于每个收到的输入符号将立刻产生等同的输出。这只是就数字通信的特定领域而言与规则流模式或区段模式对比突出互斥流模式的利益的一个例子。
[00129]相似的来自互斥流模式的利益能在需要实时响应的其它领域获得。举例来说,考虑使用者输入字符的简单的聊天应用程序,字符是在英特网(或某种其它的信道)上传输的并且是最后被期待在聊天窗口上看见该字符的接收者收到的。在流模式或区段模式中,这样的字符可能在压缩程序(在发射器端)停止释放字符之前一点也不显示,因为必须先收到一些字符才能使压缩程序开始处理它们。反之,CMC压缩程序的互斥流模式保证被压缩的字符将被压缩程序立刻释放并送到该信道上,其后解压缩程序将重建最初的字符并将它释放到聊天应用程序用于显示。
[00130]CMC编码解码器的对称性态也有固有的实际利益,即编码解码器所用的大部分内部资源的“分享”。这是因为同一方法能沿着相反的方向完成。所以,当一个操作模式空闲的时候,另一个操作模式能使用共享的资源。这将操作和设计成本减到最少。
[00131]全相联CMC方案的一个方面是通过强迫一些高速缓存规格满足特定的条件,使遗漏概率能变成字面上的0%。换句话说,将总是有高速缓存中的区段与从源流读出的当前区段匹配。所以,如果命中总是产生,则为命中或遗漏作标记将一点也不必要,而且压缩的输出将正好由编码的命中行组成。如果与LRU方案结合,而且如果较短的代码被赋予最近使用最多的行并且最后在输出流中编码,那么由此产生的方法退化为叫做前移的编码技术。
[00132]前移法能被视为全相联CMC编码解码器的变体并且是能使用能通过高速缓存摘要数据类型(ADT)建模的现有的工作空间基础设施很容易实现的。为了举例说明这个程序,假定全相联高速缓存是按规格<N,0,2N>形成的。换句话说,LINES(高速缓存的行数)等于2N,所有可能的截然不同的数据区段的数目(举例来说,如果N=8,在该集合中将有256行)。如果所有的高速缓存行为了保存截然不同的数据区段都被这样初始化,以致在行0到2N中有每个的数值分别为0到2N的区段,那么每逢从源流读出区段的时候,命中总会产生,因为在该高速缓存里总会有在某行的匹配区段。
[00133]从操作的立场,CMC编码解码器依照高速缓存规格的边界条件“移动”功能性。图10是展示本发明的方法的这个方面的图表。随着高速缓存行的数目减少,压缩程序本质上仅仅完成高速缓存不涉及编码,数据区段被映射到直接映射高速缓存中,在这种情况下没有行号被编码。类似地,随着集合数目减少到一,本发明的压缩方法变成全编码器,高速缓存程序失去重要性,因为产生最佳的代码比产生高速缓存命中更重要。当集合和行两者的数目增加的时候,转折点发生,在这种情况下高速缓存和编码两者在压缩程序中都变成决定性的,而且分享相对的关联性产生高压缩比。
[00134]压缩方法10、100、200、300、400和建方法500能作为有限状态自动机来实现而且能作为软件或硬件人工制品来实现,包括大小/速度的优化,这种优化通过使用相联的或智能的存储器方案平行地(即,同时地或并发地)比较来自给定的存储器地址的多个位置充分利用该方法固有的平行性。换句话说,本发明的任何压缩和重建方法作为有限状态自动机的落实都能作为由有限数目的状态组成的虚拟机器来实现,其中每个状态分别代表该压缩和重建程序的一个步骤。这适用于所有在这份揭示中推荐的压缩和重建方法。这也包括所有协同地储存在某存储器地址的许多位置的数值都使用专用的硬件电路与当前的符号值平行地进行比较的特定情况,因此用内容寻址的数据字实现相联或智能存储器的性态,其中每个数据字代表先前储存的来自输入流的符号值。这样平行化的优化版本只有在特定规格为<N,K,Lines>而且Lines大于1的集合相联工作空间配置的情况下才有可能。
[00135]这个程序能用特殊的硬件电路来实现,该硬件电路将来自存储器地址引用的每个位置的每个比特与来自当前符号值的每个比特同时进行比较,从而最多通过N次比较得到匹配位置,其中N是当前符号值的比特长度。如果不使用相联存储器,则每个位置的数值需要个别地与当前符号值进行比较,从而导致“Lines”乘“N”次比较,其中Lines是每个存储器地址的位置总数。
[00136]虽然本发明已经参照其优选的实施方案相当详细地描述了,但是不脱离权利要求书的精神和范围本发明可以有很多修改和变化对于熟悉这项技术的人将是明显的。
Claims (37)
1.一种以一个或多个截然不同的计算机存储器地址作为工作空间压缩来自包括一串数值的数据源流的数据的方法,其中每个计算机存储器地址有一个或多个位置分别保存那一个或多个截然不同的数值,所述方法包括:
(a)如果K大于零,从源数据流读出刚好在源流的当前读数点之前的K比特作为存储器地址引用;
(b)从源流中读出N比特作为当前符号值;
(c)如果当前符号值按存储器地址引用与任何数值都不匹配,则按存储器地址引用写入当前符号值替换数值之一,而且将MISS代码/数值写到压缩数据流中后面跟着当前符号值;以及
(d)如果当前符号值按存储器地址引用与任何数值匹配,则将代表在存储器地址引用中发现该数值的位置的HIT代码写到该压缩数据流中。
2.根据权利要求1的方法,进一步包括在所有的数值在每个存储器地址设定初值之后对源数据流中的每个数值重复(a)-(d),其中在(a),存储器地址引用的最左边的比特如果它们对于从源数据流读出不可用被则适当地初始化。
3.根据权利要求2的方法,其中在(a),被读出的K比特转换成较少或相等的比特数以产生作为存储器地址引用使用的合成字。
4.根据权利要求3的方法,其中每个存储器地址包含用于内务处理记住该存储器地址内部的位置用法并且在该存储器地址读出/写入数值之后在(c)或(d)被更新的状态字段。
5.根据权利要求4的方法,其中状态字段连同替换政策被一起使用以决定在替换数值的时候应该使用哪个位置。
6.根据权利要求5的方法,其中替换政策选自最近最少使用的(LRU)、先进先出(FIFO)或最有经验使用的、最不频繁使用的(LFU)和随机的。
7.根据权利要求3的方法,其中作为工作空间使用的每个存储器地址只有一个位置只保存一个数值;而且在(d),HIT代码指出当前符号值与按存储器地址引用发现的那个值匹配。
8.根据权利要求5的方法,其中一个单一存储器地址有许多位置每个位置保存一个截然不同的数值,该存储器地址被用作工作空间;而且在(a),因为K是零,所以没有比特被从源流中读出,而且只有一个存储器地址而且该存储器地址引用是零。
9.根据权利要求8的方法,其中单一存储器地址有2N个先前用截然不同的数值初始化的位置;而且在(c),没有MISS代码或当前符号值曾经被加到压缩数据流上,因为这样的当前符号值总是与先前在这样的位置初始化的任何数值匹配。
10.根据权利要求5的方法,其中在(d),可变长度编码方案被用于HIT和MISS代码/数值,以这样的方式分配以致最有规律地使用的较低的位置是使用较短的代码表示的,而时常最少使用的较高的位置被分配较长的代码。
11.根据权利要求10的方法,其中使用两遍,第一遍计算每个位置的使用频率,第二遍以这样的方式分配将代表每个位置的可变长度的代码,以致最频繁使用的位置被分配较短的代码,而最不频繁使用的位置被分配较长的代码。
12.根据权利要求5的方法,其中最近最少使用的计数器的数值被保持在状态字段中,一适合于每个被编码的位置;最近最少使用的计数器用来实现最近最少使用的替换政策和表示每个位置的用法等级以便较高的数值代表最近较多使用的位置,反之亦然;借此最近最少使用的较高的计数值被分配较短的代码,而较低的数值被分配较长的代码。
13.根据权利要求1的方法,其中作为工作空间使用的计算机存储器是作为假高速缓冲存储器实现的,其中N比特作为输入用于当前符号值,K比特作为输入用于存储器地址引用,L比特作为输出用来指出按存储器地址引用发现数值的位置,而且一比特作为输出指出是否产生命中或遗漏。
14.一种以一个或多个截然不同的计算机存储器地址作为工作空间从至少包括一些源数据的压缩数据和包括MISS和HIT代码的压缩代码重建未压缩的源数据流的方法,其中每个计算机存储器地址有一个或多个位置分别维持一个或多个截然不同的数值,所述的方法包括:
(a)如果K大于零,从未压缩的数据流中读出刚好在未压缩流的当前***点之前的K比特作为存储器地址引用;
(b)从压缩数据流读出代码值,所述的代码值代表HIT编码位置或出现MISS;
(c)如果该数值是MISS代码,则从压缩流读出N比特作为当前符号值,将当前符号值写入以替换按存储器地址引用从(a)获得的数值之一,以及将该当前符号值写入未压缩流;以及
(d)如果该数值是HIT代码,则从按存储器地址引用从(a)获得的解码的HIT代码给定的位置读出N比特作为当前符号值,并且将该当前符号值写入未压缩流。
15.根据权利要求14的方法,进一步包括在每个存储器地址的所有的数值适当地初始化之后,对压缩数据流中的每个数值重复(a)-(d),其中在(a),存储器地址引用的最左边几比特如果它们不可用于从源数据流读出则被适当地初始化。
16.根据权利要求15的方法,其中在(a),K比特读出/输入被减少/转换成较少的/相等的比特数,而合成字被当作存储器地址引用使用。
17.根据权利要求16的方法,其中每个存储器地址都包含用于内务处理记住该存储器地址里面的位置用法并且在该存储器地址读出/写入数值之后在(c)或(d)被更新的状态字段。
18.根据权利要求17的方法,其中状态字段连同替换政策一起用来决定替换数值的时候应该使用哪个位置。
19.根据权利要求18的方法,其中替换政策选自最近最少使用的(LRU)、先进先出(FIFO)或最有经验使用的、最不频繁使用的(LFU)和随机的。
20.根据权利要求16的方法,其中作为工作空间使用的每个存储器地址只有一个只保存一个数值的位置;而且在(d),HIT代码指出当前符号值与以存储器地址引用发现的那个匹配。
21.根据权利要求18的方法,其中一个单一存储器地址被用作工作空间,该存储器地址有许多位置,每个位置保存一个截然不同的数值;并因此在(a),因为K是零,所以没有比特从压缩流中读出,借此只有一个存储器地址,而且该存储器地址引用是零。
22.根据权利要求21的方法,其中单一存储器地址有2N个先前用截然不同的数值初始化的位置;而且在(c),因为任何当前的符号数值总能在在一些先前初始化的位置发现,所以没有MISS代码或当前符号值曾经在压缩数据流中被读出或出现。
23.根据权利要求18的方法,其中在(d),可变长度编码方案被用在从压缩流读出的先前编码的HIT和MISS代码/数值上。
24.根据权利要求23的方法,其中每个解码的HIT代码不代表位置本身,但是代表与对于给定的存储器地址造成命中的位置相关联的最近最少使用的(LRU)计数器数值;而且所述的方法进一步包括:
(a)搜索与LRU计数器值的相关联的位置;
(b)从在(a)获得的这样的位置读出当前符号值;其中LRU计数器被保持在状态字段并且被用来实现LRU替换政策和表示每个位置的用法等级。
25.根据权利要求14的方法,其中作为工作空间使用的计算机存储器是作为假高速缓冲存储器实现的,其中N比特作为输入用于当前符号值,K比特作为输入用于存储器地址引用,L比特作为输入用来按存储器地址引用指出需要从那里读出当前符号值的位置和输出这样的当前符号值的N比特。
26.根据权利要求1的方法,其中HIT和MISS代码被聚集到n-字节的权标之中。
27.根据权利要求26的方法,其中n是2的幂,所以从源流或压缩流读出的数值在向压缩流复制时保持字节对准。
28.根据权利要求14的方法,其中HIT和MISS代码被聚集成n-字节的权标。
29.根据权利要求28的方法,n是2的幂,所以从源流或压缩流读出的数值在向未压缩流复制时保持字节对准。
30.根据权利要求1的方法,其中所述方法是作为与软件或硬件人工制品一样的有限态自动机实现的。
31.根据权利要求24的方法,其中所述方法是作为与软件或硬件人工制品一样的有限态自动机实现的。
32.根据权利要求1的方法,其中HIT和MISS代码被聚集成权标,该权标是N比特的倍数,所以从源流或压缩流读出的数值在向压缩流复制的时候保持字节对准。
33.根据权利要求32的方法,其中N是8比特长,而且命中和遗漏代码被聚集成n-字节的权标,在这里n是来自该组的自然数,所以从源流或压缩流读出的数值在向压缩流复制的时候保持字节对准。
34.根据权利要求14的方法,其中MIT和MISS代码/数值被聚集成权标,该权标是N比特的倍数,所以从源流或压缩流读出的数值保持在向未压缩流复制的时候保持按N比特的倍数对准。
35.根据权利要求34的方法,其中N是8比特长,而且命中和遗漏代码被聚集成n-字节的权标,在这里n是来自该组的自然数,所以从源流或压缩流读出的数值在向未压缩流复制的时候保持字节对准。
36.根据权利要求1的方法,其中关联存储器方案被实现,借此来自给定的存储器地址的多个位置被平行地或同时地比较。
37.根据权利要求14的方法,其中关联存储器方案被实现,来自给定的存储器地址的多个位置被平行地或同时地比较。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US78557206P | 2006-03-24 | 2006-03-24 | |
US60/785,572 | 2006-03-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101449462A true CN101449462A (zh) | 2009-06-03 |
Family
ID=38541725
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007800185097A Pending CN101449462A (zh) | 2006-03-24 | 2007-03-26 | 基于集合关联高速缓存映射技术的高速数据压缩 |
Country Status (10)
Country | Link |
---|---|
US (1) | US7436330B2 (zh) |
EP (1) | EP2005594A4 (zh) |
JP (1) | JP2009531976A (zh) |
KR (1) | KR20090021149A (zh) |
CN (1) | CN101449462A (zh) |
AU (1) | AU2007230901B2 (zh) |
CA (1) | CA2647259A1 (zh) |
MX (1) | MX2008012216A (zh) |
WO (1) | WO2007112083A2 (zh) |
ZA (1) | ZA200808522B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729307A (zh) * | 2012-10-15 | 2014-04-16 | 三星电子株式会社 | 数据压缩装置和方法以及包括数据压缩装置的存储*** |
CN110083552A (zh) * | 2013-02-01 | 2019-08-02 | 辛博立科伊奥公司 | 存储数据的减少冗余 |
CN111614359A (zh) * | 2020-06-02 | 2020-09-01 | 同济大学 | 使用点预测和常现位置数组的数据编码方法和解码方法 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8085171B2 (en) * | 2006-03-24 | 2011-12-27 | University Of Mississippi | High-speed data compression based on set associative cache mapping techniques |
US7834784B1 (en) * | 2007-01-18 | 2010-11-16 | Cisco Technology, Inc. | Data redundancy elimination mechanism including fast lookup of data patterns exhibiting spatial locality |
US8918588B2 (en) * | 2009-04-07 | 2014-12-23 | International Business Machines Corporation | Maintaining a cache of blocks from a plurality of data streams |
US8098247B2 (en) * | 2009-09-24 | 2012-01-17 | Crucs Holdings, Llc | Systems and methods for geometric data compression and encryption |
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US8886926B2 (en) | 2012-11-07 | 2014-11-11 | Centri Technology, Inc. | Single-pass data compression and encryption |
US8804814B1 (en) | 2013-06-04 | 2014-08-12 | Centri Technology, Inc. | Seeding of a workspace to optimize codec operations |
US9483199B1 (en) * | 2014-08-18 | 2016-11-01 | Permabit Technology Corporation | Data deduplication using multiple devices |
US9537504B1 (en) * | 2015-09-25 | 2017-01-03 | Intel Corporation | Heterogeneous compression architecture for optimized compression ratio |
JP6834327B2 (ja) * | 2016-10-06 | 2021-02-24 | 富士通株式会社 | 符号化プログラム、符号化装置および符号化方法 |
US10713750B2 (en) * | 2017-04-01 | 2020-07-14 | Intel Corporation | Cache replacement mechanism |
CN111384962B (zh) * | 2018-12-28 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 数据压缩解压装置和数据压缩方法 |
CN111384963B (zh) * | 2018-12-28 | 2022-07-12 | 上海寒武纪信息科技有限公司 | 数据压缩解压装置和数据解压方法 |
US10936825B1 (en) * | 2019-07-19 | 2021-03-02 | Clrv Technologies, Llc | Methods and apparatus to improve disambiguation and interpretation in automated text analysis using transducers applied on a structured language space |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3675211A (en) | 1970-09-08 | 1972-07-04 | Ibm | Data compaction using modified variable-length coding |
JP2796590B2 (ja) * | 1991-08-07 | 1998-09-10 | 三菱電機株式会社 | メモリ装置及びそれを使用したデータ処理装置 |
US5450562A (en) * | 1992-10-19 | 1995-09-12 | Hewlett-Packard Company | Cache-based data compression/decompression |
JPH08223428A (ja) * | 1995-02-10 | 1996-08-30 | Fuji Xerox Co Ltd | 画像データ圧縮装置および画像データ伸長装置 |
AU2001270575A1 (en) | 2000-09-28 | 2002-04-08 | Roke Manor Research Limited. | Improved huffman data compression method |
US6657565B2 (en) | 2002-03-21 | 2003-12-02 | International Business Machines Corporation | Method and system for improving lossless compression efficiency |
GB0210604D0 (en) | 2002-05-09 | 2002-06-19 | Ibm | Method and arrangement for data compression |
US6941442B2 (en) * | 2002-08-02 | 2005-09-06 | Arm Limited | Entry lockdown within a translation lookaside buffer mechanism |
US7177985B1 (en) * | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
ZA200603910B (en) | 2003-10-17 | 2007-09-26 | Pacbyte Software Pty Ltd | Data compression system and method |
US7464242B2 (en) * | 2005-02-03 | 2008-12-09 | International Business Machines Corporation | Method of load/store dependencies detection with dynamically changing address length |
US7180433B1 (en) | 2005-09-22 | 2007-02-20 | Tandberg Storage Asa | Fast data compression and decompression system and method |
US7849241B2 (en) | 2006-03-23 | 2010-12-07 | International Business Machines Corporation | Memory compression method and apparatus for heterogeneous processor architectures in an information handling system |
-
2007
- 2007-03-26 US US11/691,185 patent/US7436330B2/en active Active
- 2007-03-26 AU AU2007230901A patent/AU2007230901B2/en not_active Ceased
- 2007-03-26 MX MX2008012216A patent/MX2008012216A/es active IP Right Grant
- 2007-03-26 KR KR1020087025942A patent/KR20090021149A/ko not_active Application Discontinuation
- 2007-03-26 EP EP07753991A patent/EP2005594A4/en not_active Withdrawn
- 2007-03-26 CA CA002647259A patent/CA2647259A1/en not_active Abandoned
- 2007-03-26 WO PCT/US2007/007412 patent/WO2007112083A2/en active Application Filing
- 2007-03-26 CN CNA2007800185097A patent/CN101449462A/zh active Pending
- 2007-03-26 JP JP2009502914A patent/JP2009531976A/ja active Pending
-
2008
- 2008-10-07 ZA ZA200808522A patent/ZA200808522B/xx unknown
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729307A (zh) * | 2012-10-15 | 2014-04-16 | 三星电子株式会社 | 数据压缩装置和方法以及包括数据压缩装置的存储*** |
CN110083552A (zh) * | 2013-02-01 | 2019-08-02 | 辛博立科伊奥公司 | 存储数据的减少冗余 |
CN111614359A (zh) * | 2020-06-02 | 2020-09-01 | 同济大学 | 使用点预测和常现位置数组的数据编码方法和解码方法 |
CN111614359B (zh) * | 2020-06-02 | 2023-04-11 | 同济大学 | 使用点预测和常现位置数组的数据编码方法和解码方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2007112083A3 (en) | 2008-07-24 |
US7436330B2 (en) | 2008-10-14 |
AU2007230901A1 (en) | 2007-10-04 |
KR20090021149A (ko) | 2009-02-27 |
MX2008012216A (es) | 2008-12-10 |
EP2005594A4 (en) | 2010-10-20 |
CA2647259A1 (en) | 2007-10-04 |
WO2007112083A2 (en) | 2007-10-04 |
JP2009531976A (ja) | 2009-09-03 |
ZA200808522B (en) | 2009-08-26 |
EP2005594A2 (en) | 2008-12-24 |
US20080122665A1 (en) | 2008-05-29 |
AU2007230901B2 (en) | 2010-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101449462A (zh) | 基于集合关联高速缓存映射技术的高速数据压缩 | |
JP2713369B2 (ja) | データ圧縮装置及び方法 | |
US11755565B2 (en) | Hybrid column store providing both paged and memory-resident configurations | |
CN100432959C (zh) | 压缩高速缓存内数据的机制 | |
US20020101367A1 (en) | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms | |
US8085171B2 (en) | High-speed data compression based on set associative cache mapping techniques | |
CN108287877B (zh) | 一种rib渲染压缩文件fpga压缩/解压缩***及硬件解压方法 | |
US20200304146A1 (en) | Variable-sized symbol entropy-based data compression | |
US20200212932A1 (en) | Reducing storage of blockchain metadata via dictionary-style compression | |
US10897270B2 (en) | Dynamic dictionary-based data symbol encoding | |
US11139828B2 (en) | Memory compression method and apparatus | |
KR20230013630A (ko) | 근거리 데이터 처리를 통한 인메모리 데이터베이스 가속화 | |
US20220116634A1 (en) | Multi-pixel caching scheme for lossless encoding | |
CN116760661A (zh) | 数据存储方法、装置、计算机设备、存储介质和程序产品 | |
CN115905168A (zh) | 自适应压缩方法和压缩装置、计算机设备、存储介质 | |
US12001237B2 (en) | Pattern-based cache block compression | |
CN114928747B (zh) | 基于av1熵编码的上下文概率处理电路、方法及相关装置 | |
CN116893788B (zh) | 元数据处理方法、硬件加速网卡、***及可读存储介质 | |
Kesavan et al. | Comparative Study on Data Compression Techniques in Cache to Promote Performance | |
CN110825936B (zh) | 生成倒排索引和用倒排索引检索的方法、***及存储介质 | |
Sardashti et al. | Compression Algorithms | |
CN112445943A (zh) | 数据处理的方法、装置和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20090603 |