虚拟存储器系统中的改进的经压缩的高速缓存的制作方法

文档序号:14213017阅读:123来源:国知局
虚拟存储器系统中的改进的经压缩的高速缓存的制作方法

相关申请的交叉引用

本文要求于2015年5月11日递交的名称为“improvedcompressedcachinginavirtualmemorysystem”美国临时专利申请no.62/159、871以及于2015年7月14日递交的名称为“improvedcompressedcachinginavirtualmemorysystem”美国临时专利申请no.62/192、136的权益,并且其说明书通过该引用全部并入本文。



背景技术:

计算设备(诸如桌上型计算机、膝上型计算机或平板型计算机、智能电话、便携式数字助理、便携式游戏控制台等)包括一个或多个处理器(诸如中央处理单元、图形处理单元、数字信号处理器等)以及一个或多个存储器。其它电子设备(诸如计算机外围设备)以及没有被传统地称为计算设备的消费者电子设备也可以包括一个或多个处理器和存储器。

一些类型的设备(诸如便携式设备)相对于处理器所需要的数量可能具有有限数量的物理系统存储器(存储)容量。可以采用通常被称为虚拟存储器和分页的技术来解决有限的物理系统存储器的问题。虚拟存储器指代可由处理器访问的较大的“虚拟”地址空间到系统存储器(诸如动态随机存取存储器(“dram”))在其中操作的较小的物理地址空间的映射。在传统上,分页指代在系统存储器和非易失性存储或其它辅助存储装置(诸如磁盘驱动或闪速存储器)之间传输信息的技术。处理器不需要立即访问的页面被从系统存储器驱逐到辅助存储装置中。在便携式设备或具有有限数量的辅助存储装置或者对辅助存储装置的访问是以增加的延时为代价的其它设备中,分页演进为包括在系统存储器中存储经驱逐的经压缩的形式的页面,而不是在辅助存储装置中存储经驱逐的页面。该技术可以被称为经压缩的高速缓存。

已知若干经压缩的高速缓存方法,包括lz和wkdm。在wkdm方法中,通过维护具有交汇的最后16个唯一输入字的回看表并且生成对每个输入字进行分类的标签或码字来处理页面中的连续的输入字。仅存在四个码字,因此可以由两个比特来表示:第一码字(例如,“00”),用于指示输入字为全零;第二码字(例如,“01”),用于指示输入字完全匹配回看表中的16个条目中的一个条目;第三码字(例如,“10”),用于指示输入字仅部分地(即,仅最高有效比特)匹配回看表中的条目中的一个条目;以及第四码字(例如,“11”),用于指示输入字不匹配回看表中的条目中的任何条目。经压缩的输出包括:码字;与指示与回看表中的匹配条目的完全字匹配的那些码字相关的索引表;不与回看表中的任何条目完全匹配的输入字;以及与回看表中的条目部分地匹配的输入字的非匹配部分(即,最低有效比特)。对输入字采用哈希函数以提供对回看表的高效索引。



技术实现要素:

公开了用于对数据流进行压缩和解压缩的系统、方法和计算机程序。

在用于对输入流进行压缩的示例性方法中,对于所述输入流的每个连续的输入字,确定所述输入字是否与回看表中的条目相匹配。所述回看表是响应于所述输入字被更新的。通过对与所述输入字相对应的数据类型进行熵编码来生成码字。输入字可以具有多种数据类型。所述数据类型包括至少第一数据类型和第二数据类型,其中所述第一数据类型指示所述输入字与所述回看表中的条目之间的完全匹配,所述第二数据类型指示所述输入字与所述回看表中的条目之间的部分匹配。生成包括所述码字的输出流。

一种用于对输入流进行压缩的示例性系统包括存储器和处理器。所述处理器被配置为从所述存储器读取连续的输入字。对于所述输入流的所述每个连续的输入字,所述处理器确定所述输入字是否与回看表中的条目相匹配。所述处理器响应于所述输入字来更新所述回看表。所述处理器通过对与所述输入字相对应的数据类型进行熵编码来生成码字。输入字可以具有多种数据类型。所述数据类型包括至少第一数据类型和第二数据类型,其中所述第一数据类型指示所述输入字与所述回看表中的条目之间的完全匹配,所述第二数据类型指示所述输入字与所述回看表中的条目之间的部分匹配。所述处理器生成包括所述码字的输出流。

一种用于对输入流进行压缩的示例性计算机程序产品包括体现在非暂时性存储介质中的计算机可执行逻辑单元。所述处理器对所述逻辑单元的执行将所述处理器配置为进行如下操作:对于所述输入流的每个连续的输入字,确定所述输入字是否与回看表中的条目相匹配。所述处理器响应于所述输入字来更新所述回看表。所述处理器通过对与所述输入字相对应的数据类型进行熵编码来生成码字。输入字可以具有多种数据类型。所述数据类型包括至少第一数据类型和第二数据类型,其中所述第一数据类型指示所述输入字与所述回看表中的条目之间的完全匹配,所述第二数据类型指示所述输入字与所述回看表中的条目之间的部分匹配。所述处理器生成包括所述码字的输出流。

附图说明

在附图中,除非另外指示,否则遍及各个视图,相似的附图标记指代相似的部分。对于具有诸如“102a”或“102b”的字母字符标记的附图标记,字母字符标记可以区分出现在同一附图中的两个相似的部分或元素。当旨在使附图标记涵盖在所有附图中具有相同附图标记的所有部分时,可以省略附图标记的字母字符标记。

图1是具有数据压缩特征的处理系统的框图。

图2是示出了用于压缩数据的示例性方法的流程图。

图3是示出了用于压缩数据的示例性方法的另一个流程图。

图4是示出了使用哈希函数来访问回看表的概念图。

图5是示出了通过输入流中的输入字位置来对回看表条目进行索引的概念图。

图6a是示出了输出流的包括针对一串零的码字的部分的数据结构图。

图6b是示出了输出流的包括针对不匹配或非匹配完全输入字的码字的部分的数据结构图。

图6c是示出了输出流的包括针对完全匹配的码字以及匹配字在输入流中的位置的部分的数据结构图。

图6d是示出了输出流的包括针对部分匹配的码字、部分匹配字在输入流中的位置以及输入字的非匹配部分的部分的数据结构图。

图7是包括具有数据压缩特征的一个或多个处理系统的便携式计算设备的框图。

具体实施方式

本文使用的词语“示例性”意味着“作为示例、实例或说明”。本文中描述为“示例性”的任何方面不必被解释为优选于其它方面或者比其它方面有优势。

术语“组件”、“数据库”、“模块”、“系统”等旨在指代计算机相关的实体,要么是硬件、固件、硬件和软件的组合、软件,要么是执行中的软件。例如,组件可以是,但不限于是:在处理器上运行的过程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。通过说明的方式,在计算设备运行上的应用和计算设备二者可以是组件。一个或多个组件可以存在于过程和/或执行的线程中,并且组件可以位于一个计算机中和/或分布在两个或更多计算机之间。此外,这些组件可以从具有存储在其上的各种数据结构的各种计算机可读介质中执行。组件可以诸如根据具有一个或多个数据分组(例如,来自与本地系统、分布式系统中的另一个组件进行交互,和/或跨越诸如互联网的网络通过信号的方式与其它系统进行交互的一个组件的数据)的信号通过本地和/或远程过程进行通信。

术语“应用”和“图像”还可以包括具有可执行内容(诸如:对象代码、脚本、字节代码、标记语言文件以及补丁)的文件。另外,本文中所引用的“应用”还可以包括本质上不可执行的文件(诸如可能需要被打开的文档或需要被访问的其它数据文件)。

术语“内容”还可以包括具有可执行内容(诸如:对象代码、脚本、字节代码、标记语言文件以及补丁)的文件。另外,本文中所引用的“内容”还可以包括本质上不可执行的文件(诸如可能需要被打开的文档或需要被访问的其它数据文件)。

术语“任务”可以包括过程、线程、或设备中执行的任何其它单元。术语“方法”和“过程”可以同义地使用。

术语“虚拟存储器”指代实际的物理存储器从引用存储器的应用或图像的抽象。转换或映射可以用于将虚拟存储器地址转换为物理存储器地址。映射可以是像1对1一样简单(例如,物理地址等于虚拟地址)、适度地复杂(例如,物理地址等于从虚拟地址的常数偏移),或者映射可以是复杂的(例如,每4kb页面被唯一地映射)。映射可以是静态的(例如,在启动时执行一次),或者映射可以是动态的(例如,随着分配和释放存储器连续地演进)。

在本描述中,术语“通信设备”、“无线设备”、“无线电话”、“无线通信设备”和“无线手机”可互换地使用。随着第三代(“3g”)无线技术和第四代(“4g”)的到来,更大的带宽可用性实现了具有更加多样的无线能力的更便携的计算设备。因此,便携式计算设备可以包括蜂窝电话、寻呼机、pda、智能电话、导航设备、或者具有无线连接或链路的手持计算机。

如图1所示,在示例性实施例中,处理系统100包括处理器102和系统存储器104。处理器102和系统存储器104可以经由一个或多个互连(诸如总线)彼此进行通信并且与其它设备(未在图1中示出)进行通信。根据常规计算原理,处理器102在编程代码(诸如操作系统代码和应用程序代码(出于清楚的目的未示出))的控制之下操作,所述编程代码将处理器102配置为执行各种功能或方法。这些方法包括本文描述的数据压缩方法。通过这种代码,处理器102可以被配置有与本文描述的数据压缩方法相关的数据压缩逻辑单元108。数据压缩逻辑单元108可以包括:输入逻辑单元110、熵编码逻辑单元112、串长度逻辑单元114、回看表逻辑单元116和输出逻辑单元118。尽管出于说明的目的,将逻辑单元108-118概念性地示为存储或驻留在系统存储器104中,但是应当理解的是,逻辑单元108-118通过软件的操作而产生,其中软件可以被存储在系统存储器104或另一个存储器(未在图1中示出)中。由于被编程或被配置有逻辑单元108-118,因此处理器102和系统存储器104的组合通常规定了被配置为执行本文描述的数据压缩方法的处理系统100。尽管出于清楚的目的未在图1中示出,但是除了被配置为执行本文描述的数据压缩方法之外,处理系统100还可以被配置为执行常规方法,诸如举例来说,操作系统方法和应用程序方法。还应当注意的是,逻辑单元108-118或相关的软件元素以及它们以非暂时性的形式被存储在其上或驻留在其中的介质(例如,系统存储器104)的组合通常规定在专利词汇中被称为“计算机程序产品”的事物。此外,逻辑单元108-118规定用于执行下文描述的功能的单元。

根据下文描述的示例性数据压缩方法,处理系统100将输入数据120压缩成输出数据122。如本领域技术人员理解的,输入数据120以处理器102可以直接利用的“未经压缩”或原生的形式存在,而输出数据122以不能够被处理器102直接利用但是在系统存储器104中比输入数据120占用更少的存储空间的经压缩的形式存在。尽管出于示出示例性实施例的目的,将输入数据120和输出数据122概念性地示为驻留或存储在系统存储器104中,但是应当理解的是,在其它实施例中,这些输入数据和输出数据可以驻留在任何其它适当的存储或通信介质中。如下文关于示例性方法描述的,输入数据120是以连续的输入字的流的形式被接收的,以及输出数据122是以连续的输出字的流的形式被生成的。

在示例性实施例中,可以根据经压缩的高速缓存方案来将输入数据120压缩成输出数据122。例如,可以将输入数据120的、高速缓存方案确定处理器102不需要立即对其进行访问的一个或多个页面压缩成输出数据122,并且那些页面在系统存储器104中先前占用的空间可用于其它用途。当高速缓存方案指示那些页面中的一个或多个页面再次被处理器102需要时,经压缩的页面可以被解压缩并且再次以未经压缩的形式存储在系统存储器104中。尽管为了清楚的目的,本文使用术语“输入”和“输出”来指代压缩方法,但是应当理解的是,经压缩的数据可以充当相应的解压缩方法的输入。由于高速缓存方案被本领域熟知,因此不再以进一步的细节来描述本文中描述的实施例的高速缓存方面。

如下文描述的,采用了熵编码,诸如霍夫曼(huffman)编码。熵编码被本领域技术人员熟知,因此本文不做详细描述。然而,应当认识到的是,在对输入数据进行压缩之前,可以确定可能在输入数据中出现的不同数据类型的相对出现频率。例如,如本领域熟知的,可以通过分析统计上显著的数据样本来构建直方图。随后,可以以将码字长度与频率逆相关的形式来向数据类型分配码字。即,向较短的码字分配较高频率的数据类型,而向较长的码字分配较低频率的数据类型。下文描述了在示例性实施例中编码的数据类型。

下文描述的系统可以应用于除了霍夫曼编码之外的其它熵编码方案。本系统可以应用于任何类型的基于字典的编码。本系统可应用于任何类型的基于字典的编码,其中,字典是使用在数据流中发现的模式构建的。

例如,本系统可应用于其它基于字典的编码方案,诸如递增式编码。如本领域技术人员理解的,递增式编码方案可以使用后缀或前缀与其码字一起来构建其用于编码方案的字典。这种编码方案还可以被称为基于文本的、无损编码方案,如本领域技术人员理解的。本系统可以采用的其它基于字典的编码方案包括wkdm。

本系统也可以被最佳性能方法所采用,其中最佳性能方法在选择较小的压缩技术集合来对数据流进行压缩之前,对几十个压缩技术进行采样。这种无损压缩技术在本领域被称为winrar或7-zip。本系统可以用在图像压缩工具中,诸如那些用于存储adobe(tm)图像的格式,例如便携式文件格式,以及有损图像压缩技术,诸如联合图像专家组(jpeg)。本系统也可以被无损图像压缩技术所采用,诸如便携式网络图形(png)压缩。

如图2的流程图所示,在示例性实施例中,上文关于图1描述的系统可以对输入流进行压缩。如框202所指示的,本方法开始于从输入流读取输入字。输入逻辑单元110(图1)可以对该功能起作用并且可以包括输入缓冲器(未示出)。如框204所指示的,本方法确定输入字是否具有零值,即,所有比特都是零。输入字可以包括例如16个比特、32个比特或者任何其它适当数量的比特,如被本领域技术熟知的。如果确定输入字具有零值,则将类似地具有零值的连续输入字的数量的计数(“zero_count”)递增,如框206所指示的。然而,如果确定输入字不具有零值,则确定zero_count是否大于零,如框208所指示的。关于输入字不具有零值但是zero_count大于零的确定指示已经出现了一串零。即,两个或更多个连续的输入字具有零值。如果确定发出现了一串零,则对输入字进行霍夫曼编码以表示一串零,如框210所指示的。即,针对长度为zero_count的一串零的数据类型生成码字。所生成的码字变为输出流的一部分。

如图6a所示,针对具有零值的两个或更多个连续的输入字的数据类型,可以生成输出流的包括多个生成的码字606至608中的一个码字的部分602。如图6a中多个不同的码字604、606、608等所指示的,对每个串长度(“zero_count”)进行唯一地编码。即,在其中确定n个不同长度的零串可以在输入流中发生了相应数量n的不同频率的实施例中,码字604-608的数量可以是n。例如,虽然码字604可以是针对具有零值的单个输入字的数据类型生成的,但是码字606可以是针对具有零值的两个连续或接连的输入字的数据类型生成的,等等,以及码字608可以是针对具有零值的n个连续或接连的输入字的数据类型生成的。为了清楚的目的,没有在图6a中单独地示出可以是针对具有零值的三个和n-1个连续或接连的输入字的数据类型生成的其它码字,但是通过码字606与608之间的省略(“....”)符号来指示。

根据很熟知的霍夫曼编码原理,如果确定(例如,通过直方图方法或者本领域已知的其它适当方法)一串x个连续的零比一串y个连续的零更频繁地出现在输入数据中,则与一串y个连续的零相比,可以由更短的码字来对一串x个连续的零进行编码。

本方法在框212处继续。如框212所指示的,将哈希函数应用于输入字。注意,如果检测到一串零,如上文关于框208描述的,则输入字是跟在一串零的最后的零值输入字之后的输入字。如图4所示,应用哈希函数的结果用于识别或寻址回看表结构400中的地点(“location”)。回看表400被配置为存储每个地点的值(“value”)和位置(“position”)。换句话说,回看表结构400中的每个地点引用值和位置两者。如下文描述的,位置可以用于访问回看表结构400中的相应地点的值。回看表结构400可以具有任意数量的地点,诸如举例来说,2048个或2千个。因此,这种回看表结构400将被配置为存储2048个值和2048个相应的位置。初始地,即,当开始压缩(或解压)方法时,回看表结构400中没有存储值或其它条目。

再次参照图2,如框214所指示的,确定在回看表结构400中的所识别的地点(即,通过哈希函数识别的location)是否存储有与输入字相匹配的值。在框220的上下文中,术语“匹配”指代两个字中的所有比特的按位匹配。这种类型的匹配可以被称为完全匹配。

如果确定(框214)在输入字与回看表结构400中的所识别的地点处存储的值之间存在完全匹配,则针对该数据类型(即,完全匹配)生成码字,如框216所指示的。与生成针对作为完全匹配的输入字的码字相关联,在所生成的输出中包括对输入字在输入流中的位置的指示(“position”)。因此,可以生成输出流的部分616(图6c),其包括所生成的针对完全匹配输入字的数据类型的码字618以及对输入字在输入流中的位置的指示620。也将对输入字在输入流中的位置的指示(“position”)在所识别的地点处插入到回看表结构400中。跟在框216之后,本方法可以返回到框202,其中在框202处,处理输入流中的下一输入字。

如果确定(框214)不存在完全匹配,则进一步确定是否存在部分匹配。如框218所指示的,首先通过向输入字的修改版本应用哈希函数来确定地点(“location”)。可以通过操纵输入字的、要针对部分匹配被测试的比特来产生输入字的修改版本。例如,在其中每个输入字的长度是32个比特并且部分匹配被定义成输入字的12个较高比特或最高有效比特(“msb”)与回看表结构400中的所识别的地点处存储的值的按位匹配的实施例中,可以通过将输入字的12个msb屏蔽并且偏移20个比特以将这12个相关比特放置在最低有效比特(“lsb”)位置,来产生经修改的字(“modified_word”)。然而,如框220所指示的,将对输入字在输入流中的位置的指示(“position”)在所识别的地点(“location”)处插入到回看表结构400中。

如框222所指示的,通过将输入字匹配的相邻或连续比特的部分或子集与回看表结构400中的所识别的地点(“location”)处存储的值的相应比特进行比较,来确定是否存在部分匹配。如果确定(框222)在输入字与回看表结构400中的所识别的地点处存储的值之间存在部分匹配,则针对该数据类型(即,部分匹配)生成码字,如框224所指示的。与生成针对作为部分匹配的输入字的码字相关联,在所生成的输出中包括对输入字在输入流中的位置的指示(“position”)。在所生成的输出中还包括输入字的非匹配部分。因此,可以生成输出流的包括以下各项的部分622(图6d):针对部分匹配的输入字的数据类型所生成的码字624;对输入字在输入流中的位置的指示626;以及输入字的非匹配部分628。例如,在其中输入字包括32个比特并且部分匹配被定义成12个msb的匹配的实施例中,那么输入字的非匹配部分628将包括20个最低有效比特(lsb)。也将对输入字在输入流中的位置的指示(“position”)在所识别的地点处插入到回看表结构400中。跟在框224之后,本方法可以返回到框202,在框202处,处理输入流中的下一输入字。

如果分别根据框214和222确定输入字既不完全匹配也不部分地匹配回看表结构400中的任何条目,则将经修改的字(“modified_word”)添加到回看表结构400中(即,存储在所识别的地点处),如框226所指示的。如框228所指示的,根据示例性实施例中的霍夫曼编码方案,针对该数据类型(即,既不完全匹配也不部分地匹配)生成码字。与生成针对既不是完全匹配也不是部分地匹配的输入字的码字相关联,在所生成的输出中包括整个非匹配输入字本身(其也可以被称为“原始”输入字)。因此,可以生成输出流的部分610(图6b),其包括针对非匹配的输入字的数据类型所生成的码字612以及输入字的副本或实例614。跟在框208之后,本方法可以返回到框202,在框202处,处理输入流中的下一输入字。尽管为了清楚的目的没有在图2中示出,但是本方法可以在输入流中的所有输入字都被处理完时终止。输入流可以表示输入数据120的一个或多个页面(图1)。

简要地参照图5,将输入流的示例性部分502描绘成具有连续的输入字(以十六进制表示)0101、7d10、add1、0101、33a5等(这些输入字值不具有显著性,即,是任意的,并且仅在本示例中提供用于说明的目的。此外,尽管为了便于说明被描绘成16比特字,但是这些输入字可以是32个比特)。在图5中还示出的是具有上文关于回看表结构400(图4)描述的相同结构的示例性回看表500。

因此,例如,示例性回看表500可以被配置为存储2048个值和2048个相应的位置。在该示例中,输入字0101在输入流中位于位置0。因此,在其中确定(框214和222)输入字0101既不是完全匹配也不是部分地匹配的实例中,那么输入字0101和其位置0将被存储在示例性回看表500中的、通过向输入字0101应用上文引用的哈希函数来确定的地点。同样在该示例中,在其中确定(框214和222)输入字7d10既不是完全匹配也不是部分地匹配的实例中,那么输入字7d10和其位置1将被存储在示例性回看表500中的、通过向输入字7d10应用上文引用的哈希函数来确定的地点。

类似地,在该示例中,在其中确定(框214和222)输入字add1既不是完全匹配也不是部分地匹配的实例中,那么输入字add1和其位置2将被存储在示例性回看表500中的、通过向输入字add1应用上文引用的哈希函数来确定的地点。然而,在该示例中,对位置3处的输入字0101进行处理的结果是完全匹配,并且具有存储在示例性回看表500中的、通过“3”来索引的地点处的值。如上所述,回看表结构400中存储的位置可以用于对回看表结构400中的相应位置处的值进行索引或访问。在该示例中,使用输入字0101的位置“3”来访问示例性回看表500中的相应地点处存储的值显示在该地点处存储的值是0101。将在该地点处存储的值0101与位置3处的输入字0101进行比较显示完全匹配。相对于常规的压缩技术,本创造性方法和系统利用回看位置来代替哈希索引。

注意,对输入字的位置620或626(图6c和6d)的指示也可以被称为输出索引,这是因为其形成所生成的输出流的一部分并且其对回看表结构400中存储的值进行索引或指向该值。输出流中的输出索引与回看表结构400被配置为对其进行存储的位置相对应。由于回看表结构400中存储的每个位置对回看表结构400中存储的值进行索引或与该值相对应,因此输出索引可以用于对回看表结构400中存储的相应值进行访问。

可以使用以2为底相关的输入字在输入流中的位置的对数来在输出流中经济地表示输出索引。由于该方法保持对每个输入字在输入流中的位置(随着每个输入字被处理)的跟踪,因此该方法不需要通过多于最少比特来表示输出索引,其中可以通过最少比特来表示输入流中的位置所表示的大小的二进制数。例如,不需要多于两个比特来在输出流中表示为3的输出索引,这是因为该方法在处理输入流中的位置3以外的输入字时不能够生成这样的输出索引。采用以2为底3的对数产生大约1.5,而向该结果应用顶函数产生2。

因此,可以确定的是输入流中的任何小于3的位置可以由仅两个比特来表示。同样,例如,为15的输出索引在输出流中不需要由多个四个比特来表示,这是因为本方法在处理输入流中的位置15以外的输入字时不能够生成这样的输出索引。采用以2为底15的对数产生大约3.9,而向该结果应用顶函数产生4。因此,可以确定的是输入流中的任何小于15的位置可以由仅四个比特来表示。

在数据压缩技术中使用的任何基于字典的编码可以采用利用回看位置来替换哈希索引的技术。示例性的基于字典的编码方法包括但不限于:wkdm、递增式编码、以及基于lempel-ziv的方法,诸如lz78、lzw、lz77、lzms、lzo、lzs和lzrw,仅列举几个示例。利用回看位置来替换哈希索引还可以用于其它图像压缩技术中,诸如分形压缩。如本领域技术人员所理解的,分形压缩技术通常将图像划分成若干子部分,并且该技术确定如果图像的第一子部分看起来非常类似于图像的第二子部分和第三子部分,则是否可以相对于彼此来复制子部分,等等。

由于利用回看位置来替换哈希索引可以消除要求由处理器访问的数据结构的数量,因此这可以提高可以对数据流进行解压缩的速度,这是因为存在为了对数据流进行解压缩要访问/查看的更少的数据结构。本创造性方法和系统的另一个优势在于,与可以仅存储哈希索引的字典相比,回看位置(替代哈希索引)的字典的大小可以无限大。替代哈希索引的回看位置的字典的另一个优势在于,其可以减少或消除哈希冲突,这是由于在字典中不再采用哈希。

利用本创造性方法和系统,包括回看位置的每个回看表条目可以具有作为数据流的长度的函数的大小。例如,对于数据流的第一字,针对该单个字的回看条目可以包括具有零值的指针(大小为单个比特)。对于数据流的第二字,回看位置条目(或指针)长度可以包括一值(大小为单个比特)。对于四千字节长度数据流,针对最后一个字的回看条目(或指针长度)可以包括具有十二个比特的值的指针长度。因此,本创造性方法和系统的指针长度逐渐地增加使用回看位置(替代哈希索引)进行编码的数据流。

如图3所示,还可以用下文更高级的方式来表征上述方法。如框302所指示的,对于输入流中的连续的输入字,确定输入字是否完全或部分地匹配回看表条目。如框304所指示的,回看表是响应于输入字被更新的。如框306所指示的,使用熵编码,针对输入字被确定成的任何数据类型来生成码字。尽管在示例性实施例中,熵编码方案是霍夫曼编码,但是在其它实施例中,该熵编码方案可以具有任何其它类型。可以存在两种或更多种数据类型,其中的至少一种指示输入字与回看表条目之间的完全匹配,而其中的另一种指示输入字与回看表条目之间的部分匹配。在上文关于图2描述的示例性实施例中,存在四种主要的数据类型:一串零(并且这种数据类型的子类型可以指示不同的长度一串零);完全匹配;部分匹配;以及不匹配。如框308所指示的,生成输出流。输出流的每个连续的部分包括与输入流中的连续的输入字中的一个输入字相对应的码字,并且还可以包括额外的信息,诸如输出索引、完整的字、或字的一部分,如上文关于图6a-6d描述的。

考虑到对示例性压缩方法的先前描述,本领域技术人员将易于理解相应的解压缩方法。经压缩的数据的每个连续的部分包括与输入流中的连续的输入字中的一个输入字相对应的码字,并且还可以与码字相关联地包括输出索引、完整的字、或字的一部分。响应于检测到针对一串零的码字,解压缩方法将码字所指示的连续数量的零值字作为经解压缩的数据来输出。响应于检测到针对不匹配的码字,解压缩方法将与该码字相关联的经压缩的数据中存在的字作为经解压缩的数据来输出。响应于检测到针对完全匹配的码字,解压缩方法使用与该码字相关联的经压缩的数据中存在的输出索引来取回回看表条目,其中解压缩方法随后将回看表条目作为经解压缩的数据来输出。响应于检测到针对部分匹配的码字,解压缩方法使用与该码字相关联的经压缩的数据中存在的输出索引来取回回看表条目,其中解压缩方法随后结合与该码字相关联的经压缩的数据中存在的部分字来输出回看表条目。例如,在其中输入字包括32个比特的实施例中,解压缩方法可以将表示10个lsb的部分字附加到从回看表条目中取回的22个msb,以形成经解压缩的输出。

处理系统100(图1)可以表示或被包括在任何适当类型的设备中,诸如举例来说,在图7中示出的便携式通信设备700。便携式通信设备700包括片上系统702,片上系统702包括中央处理单元(“cpu”)704。模拟信号处理器706耦合到cpu704。cpu704可以被配置为以关于上文描述的压缩和高速缓存方法所描述的方式来操作。显示器控制器708和触摸屏控制器710耦合到cpu704。在片上系统702外部的触摸屏显示器712耦合到显示器控制器708和触摸屏控制器710。视频编码器714(例如,逐行倒相制式(“pal”)编码器、顺序存储彩色制式(“secam”)编码器、国家电视系统委员会(“ntsc”)编码器或任何其它类型的视频编码器)耦合到cpu704。此外,视频放大器716耦合到视频编码器714和触摸屏显示器712。视频端口718耦合到视频放大器716。usb控制器720耦合到cpu704。usb端口722耦合到usb控制器720。存储器724(其以上文关于存储器104(图1)描述的方式操作)耦合到cpu704。用户身份模块(“sim”)卡726和数字相机728也可以耦合到cpu704。在示例性方面中,数字相机728是电荷耦合器件(“ccd”)相机或互补金属氧化物半导体(“cmos”)相机。

立体声音频codec730可以耦合到模拟信号处理器706。此外,音频放大器732可以耦合到立体声音频codec730。在示例性方面中,第一立体声扬声器734和第二立体声扬声器736耦合到音频放大器732。另外,麦克风放大器738可以耦合到立体声音频codec730。麦克风740可以耦合到麦克风放大器738。在特定方面中,调频(“fm”)无线电调谐器742可以耦合到立体声音频codec730。此外,fm天线744耦合到fm无线电调谐器742。此外,立体声耳机746可以耦合到立体声音频codec730。

射频(“rf”)收发机748可以耦合到模拟信号处理器706。rf开关750可以耦合在rf收发机748和rf天线752之间。rf收发机748可以被配置为与常规的陆地通信网络进行通信,诸如移动电话网络以及全球定位系统(“gps”)卫星。

具有麦克风的单声道耳麦756可以耦合到模拟信号处理器706。此外,振动器设备758可以耦合到模拟信号处理器706。电源760可以耦合到片上系统702。在特定方面中,电源760是向便携式通信设备700的需要功率的各个组件提供功率的直流(“dc”)电源。此外,在特定方面中,电源是可再充电dc电池或者从交流(“ac”)到连接到ac电源的dc变压器得到的dc电源。

小键盘754可以耦合到模拟信号处理器706。触摸屏显示器712、视频端口718、usb端口822、相机728、第一立体声扬声器734、第二立体声扬声器736、麦克风740、fm天线744、立体声耳机746、rf开关750、rf天线752、小键盘754、单声道耳麦756、振动器758以及电源760在片上系统702外部。

本文所描述的方法步骤(诸如上文关于图2和3描述的)可以以计算机程序指令的形式存储在存储器724中。这些指令可以由cpu704或另一个处理器执行以执行本文描述的方法。

在不脱离本发明的精神和范围的情况下,替代实施例对于与本发明相关的领域的技术人员来说将是透明的。因此,尽管已经详细地说明和描述了选择的方面,但是将理解的是,如下面的权利要求书所限定的,可以在不脱离本发明的精神和范围的情况下在其中作出各种替代和改变。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1