用于数据压缩的多模式编码的制作方法

文档序号:6768864阅读:320来源:国知局
专利名称:用于数据压缩的多模式编码的制作方法
技术领域
本公开描述了关于数据压缩技术的系统、装置和技术。
背景技术
无损数据压缩是在压缩过程期间维持原始数据的一种数据压缩类型。因此,使用 无损数据压缩算法解压缩或解码被压缩的编码数据允许重建原始数据。这不同于近似原始 数据而导致一些数据损失的有损数据压缩。当偏离原始数据对于特定的应用是关键的时 候,无损数据压缩被使用。常规的无损数据压缩算法常常为输入数据生成统计模型,并使用 所生成的模型来将输入数据映射为比特序列,以便使得重复的数据生成比非重复的数据更 短的输出。

发明内容
本公开包括关于有效的无损数据压缩的装置、系统和技术。编码器可被配置为在 两个编码模式之间转换以增强数据压缩。根据所描述的系统和技术的一个方面,装置包括 存储模块以存储数据。该存储模块包括第一缓冲器部分以存储数据的编码的符号,并包括 第二个缓冲器部分以存储将被编码的数据的符号。该装置包括编码器以比较存储在第二个 缓冲器部分中的符号和存储在第一个缓冲器部分中的编码的符号以及压缩该数据。该编码 器被配置为运行在第一编码模式,以用相应的码字编码在第二缓冲器部分中的符号,直到 编码器检测到在第二缓冲器部分中的、与第一缓冲器部分中的编码符号相匹配的重复的符 号模型(pattern)。另外,响应于编码器检测到重复的符号模型,编码器被配置为转换为运 行在第二编码模式。在第二编码模式期间,编码器计数符号模型在第二缓冲器部分中重复 的次数,并输出计数的数字。此外,编码器被配置为当编码器检测到第二缓冲器中的符号停 止重复时转换回第一编码模式。实施可以可选择地包括一个或多个下列特征。第一编码模式可包括Lempel-Ziv 编码模式。Lempel-Ziv编码模式可包括Lempel-Ziv-Storer-Szymanski (LZSS)编码模式。 第二编码模式可包括行程编码(run-length encoding,RLE)模式。编码器被配置为响应于 编码器检测到重复的符号模型而输出转义码(escape code),转义码包括单一出现的码字。 转义码可包括标记,其指示转义码中的下一个数据是字面量(literal)还是偏移量-长度 对;偏移量,其代表第二缓冲器部分中的重复的符号模型在第一缓冲器部分中的匹配的位 置;和长度,其代表第二缓冲器部分的大小。转义码可包括两次连续出现的码字。编码器可 被配置为用在第一编码模式期间被生成的码字更新第一缓冲器部分。另外,编码器可被配置为在第二编码模式期间更新第一个缓冲器部分一次。编码器可被配置为在输出转义码之 后,从模型第一次出现时开始,计数符号模型在第二缓冲器中重复的次数。所描述的系统和技术可实施在电子电路、计算机硬件、固件、软件或他们的组合 中,例如在此说明书中所公开的结构装置及其结构等效物中。这可包括体现程序的至少一 个计算机可读介质,所述程序可操作以导致一个或多个数据处理装置(例如,包括可编程 处理器的信号处理设备)执行所描述的操作。因此,程序实施可根据所公开的方法、系统或 装置实现,且装置实施可根据所公开的系统、计算机可读介质或方法实现。类似地,方法实 施可根据所公开的系统、计算机可读介质或装置实现,且系统实施可根据所公开的方法、计 算机可读介质或装置实现。例如,下面所公开的实施方式可被实施在多种系统或装置中,包括但不限于,专用 数据处理装置(例如,无线接入点、远程环境监测器、路由器、交换机、计算机系统组件、介 质接入单元)、移动数据处理装置(例如,无线客户端、蜂窝电话、个人数字助理(PDA)、移 动计算机、数字摄像机)、通用数据处理装置(例如,微型计算机、服务器、大型机、巨型计算 机)或这些的组合。因此,根据所描述的系统和技术的另一个方面,系统可包括数据处理设备,其编 码数据以生成压缩的数据。该数据处理设备可包括数据缓冲器以接收输入数据。数据缓 冲器可包括搜索缓冲器以缓冲输入数据的编码的符号,并可包括先行缓冲器(look-ahead buffer)以缓冲将被编码的输入数据的符号。数据处理设备可包括编码器,以比较缓冲在先 行缓冲器中的符号和缓冲在搜索缓冲器中的编码符号以及压缩输入数据。编码器被配置为 运行在第一编码模式,以用相应的码字编码在先行缓冲器中的符号,直到编码器检测到在 先行缓冲器中的、与搜索缓冲器中的编码符号匹配的重复的符号模型。响应于检测到重复 的符号模型,编码器转换为运行在第二编码模式,以计数符号模型在先行缓冲器中重复的 次数,并输出所计数的数字。编码器被配置为当编码器检测到在第二缓冲器中的符号停止 重复时转换回第一编码模式。实施可以可选择地包括一个或多个下列特征。第一编码模式可包括Lempel-ZiV 编码模式。Lempel-Ziv编码模式可包括Lempel-Ziv-Storer-Szymanski (LZSS)编码模式。 第二编码模式可包括行程编码(RLE)模式。编码器被配置为响应于编码器检测到重复的符 号模型而输出转义码。转义码可包括单一出现的码字。转义码可包括标记,其指示转义码 中的下一个数据是字面量还是偏移量-长度对;偏移量,其代表搜索缓冲器的大小减去在 先行缓冲器中重复的符号模型的长度的在第一缓冲器中的匹配的位置的中的重复的符号 模型在搜索缓冲器中的匹配的位置;和长度,其代表先行缓冲器的大小。转义码可包括两 次连续出现的码字。编码器可被配置为用在第一编码模式期间被生成的码字更新搜索缓冲 器;在第二编码模式期间更新搜索缓冲器一次;以及在输出转义码之后从模型第一出现时 开始,计数符号模型在第二缓冲器中重复的次数。根据所描述的系统或技术的另一个方面,由数据处理设备所执行的方法可包括一 个或多个下列特征。由数据处理设备所执行的方法包括在存储模块中存储数据。存储数据 包括在存储模块的第一缓冲器部分存储数据的编码的符号,以及在存储模块的第二缓冲器 部分存储将被编码的数据的符号。该方法包括压缩数据。压缩数据包括比较存储在第二缓 冲器部分中的符号和存储在第一缓冲器部分中的编码的符号。压缩数据包括将编码器运行在第一模式,以用相应的码字编码在第二缓冲器部分中的符号,直到检测到在第二缓冲器部分中的、与第一缓冲器部分中的编码的符号匹配的重复的符号模型。响应于检测到重复 的符号模型,编码器运行在第二编码模式。运行在第二编码模式包括计数符号模型在第二 缓冲器部分中重复的次数,并输出所计数的数字。另外,该方法包括当检测到第二缓冲器中 的符号停止重复时转换回第一编码模式。实施可以可选择地包括一个或多个下列特征。第一编码模式可包括Lempel-Ziv编码模式。Lempel-Ziv编码模式可包括Lempel-Ziv-Storer-Szymanski (LZSS)编码模式。 第二编码模式可包括行程编码(RLE)模式。该方法可包括响应于检测到重复的符号模型而 输出转义码。转义码可包括单一出现的码字。转义码可包括标记,其指示转义码中的下一 个数据是字面量还是偏移量-长度对;偏移量,其代表第二缓冲器部分中的重复的符号模 型在第一缓冲器部分中的匹配的位置;和长度,其代表第二缓冲器部分的大小。转义码可包 括两次连续出现的码字。该方法可包括用在第一编码模式期间被生成的每个码字更新第一 缓冲器部分;和在第二编码模式期间更新第一缓冲器部分一次。该方法包括在输出转义码 之后,从模型第一次出现时开始,计数符号模型在第二缓冲器中重复的次数。所描述的装置、系统和技术可导致一个或多个下列优点。改善的无损压缩过程可 被实施,以结合Lempel-Ziv编码和行程编码的优点。编码器可被配置为在两个编码模式如 Lempel-Ziv编码和行程编码之间转换。在第一编码模式期间,编码器可运行在Lempel-Ziv 模式,以使用尽可能少的比特数编码非重复的符号。例如,第一编码模式可包括Lempel-Zi v-Storer-Szymanski (LZSS)编码模式,以使用包括标记比特和字面量的码字来编码非重复 的符号。当重复的符号模型被检测到,编码器可转换为运行在第二编码模式,以计数模型重 复的次数。编码器可延迟更新缓冲器,直到模型停止重复且所计数的数字被获得。一个或多个实施的细节在下面的附图和描述中被阐述。从描述和附图以及从权利 要求,其他特征、目标和优点可以是明显的。


图1是用于执行Lempel-ZiV77(LZ77)编码的示例性装置的框图。图 2 是比较 LZ77 编码和 Lempel-Ziv-Storer-Szymanski (LZSS)编码的框图。图3是示出用于执行行程编码的示例性装置的框图。图4是用于执行带有行程编码的Lempel-Ziv压缩的示例性装置的框图。图5是示出使用码字作为转义码的示例性编码过程的框图。图6是示出使用码字作为转义码的另一个示例性编码过程的框图。图7是示出使用码字作为转义码的第三个示例性编码过程的框图。图8是示出使用码字作为转义码的第四个示例性编码过程的框图。图9是示出使用两个相同码字作为转义码的示例性编码过程的框图。图10是比较LZSS编码器和包括LZSS和RLE模式的编码器的压缩性能的图表。图11是比较使用两个不同的转义码类型的编码器的压缩性能的图表。图12A、12B、12C是示出用于编码数据文件的符号的示例性过程的过程流程图。图13是用于执行有效的无损数据压缩的示例性系统的框图。在不同的附图中,类似的参考符号表示类似的元件。
具体实施例方式这里所描述的系统、装置和技术可被实施作为一个或多个设备,例如一个或多个 集成电路(IC)设备(例如,数据通信设备,如网络设施;计算设备,如计算机、服务器、笔记 本电脑和智能电话机;和联网的数据存储设备,如磁盘存储设备、磁带存储驱动器等)。例 如,本说明书中所描述的系统和技术可被实施以执行有效的无损数据压缩,所述有效的无 损数据压缩减少了与缓冲器更新相关的关键路径。图1是用于执行Lempel-ZiV77 (LZ77)编码的示例性装置的框图。LZ77编码是一 种无损数据压缩技术。装置100包括LZ77编码器110,其与存储模块如缓冲器120通信。 缓冲器120可包括两个结构搜索缓冲器122和先行缓冲器124。搜索缓冲器122可存储 所需要的数据的编码的符号,而先行缓冲器124可存储将被编码的数据的进入的符号。搜 索缓冲器122和先行缓冲器124可被实施作为独立的缓冲器或作为具有多个部分的单一缓 冲器。LZ77编码器110可比较先行缓冲器124中的符号和搜索缓冲器122中的编码的符 号以识别具有最长匹配的符号模型130。LZ77编码器110可用码字140编码所识别的符号 模型。在图1所示的示例中,先行缓冲器124中的符号模型“a b r a r a" 130被识别,以 匹配搜索缓冲器122中的编码的符号“a b r a r a” 128。搜索缓冲器122中的被匹配的 编码符号模型可延伸进入先行缓冲器124。LZ77编码器110可生成码字140以包括如下三个元素〈偏移量,长度,字符〉。匹 配指针126指向被匹配的编码符号模型128的起始位置。偏移量比特代表匹配指针126 (例 如,模型的开始)离搜索缓冲器122中的第一个符号的距离。长度比特代表搜索缓冲器122 中被匹配的编码符号模型128的长度。如上所述,长度可延伸进入先行缓冲器124。字符 字节代表先行缓冲器124中的下一个未被匹配的字符或符号。因此,匹配的符号模型“a b r a r a c”可被用码字<1,6,‘C’ >编码。偏移量比特‘1’表示模型的开始离搜索缓冲器 122中的第一符号1字节远。长度字节‘6’表示被匹配的模型的长度是6个符号。字符字 节‘C’表示下一个未被匹配的符号是‘C’。图 2 是比较 LZ77 编码和 Lempel-Ziv-Storer-Szymanski (LZSS)编码的框图 200。 LZSS编码是LZ77编码的一种变式。LZSS编码可排除三元素码字被用来编码单一字符或符 号的情况。例如,符号‘C’未出现在缓冲器120的搜索缓冲器122中。LZ77编码器110用 使用多于8比特的码字<0,0,‘C’ >230来编码符号‘C’。与LZ77编码器110所使用的三元素码字相比,LZSS编码器210可用二元素码字 <0,c>240编码相同的符号‘C’。LZSS码字240的第一元素是1比特标记,用来指示下一块 数据是字面量(例如,字节)还是偏移量-长度对。取决于1比特标记的值,LZSS码字240 的第二元素或者是字面量(例如,字节)或者是偏移量-长度对。例如,当LZSS编码器未 在搜索缓冲器122中找到当前符号(例如,‘C’)的匹配时,LZSS编码器210输出包括元素 <0,字符〉的LZSS码字。0标记比特表示未找到匹配。然后,第二个元素是字面量(例如, 字节),在这种情况下是符号‘C’。编码的LZSS码字<0,c>是9比特长。当LZSS编码器210在搜索缓冲器122中识别到当前符号的匹配时,LZSS编码器 210输出包括元素<1,偏移量,长度 > 的LZSS码字。标记比特值‘1’表示先行缓冲器124中的符号模型与搜索缓冲器122中的同样的编码符号模型匹配。元素‘长度’代表匹配的符号模型的长度,而元素‘偏移量’代表在搜索缓冲器122中被匹配的符号模型的起始位置。图3是示出用于执行行程编码(RLE)的示例性装置的框图。RLE是另一种形式的 无损数据压缩。装置300包括行程编码器(RLE) 310,其与缓冲器320通信以编码存储在缓 冲器320中的符号。RLE310可用包括单一的符号或模型和计数(例如,行程)的RLE码字 330取代重复符号的串或模型。模型可能是m字节长,其中1。计数表示符号模型被重 复的次数(不要与符号的总数混淆)。例如,图3示出了缓冲器320,其存储了在初始出现 后重复了 5次的符号‘a’的运行(rim)、初始出现后重复了 3次的符号‘b’的运行、和初始 出现后重复了 2次的符号‘C,的运行。RLE310可编码符号的运行为<a5b3c2>。另外,RLE310可检测不同的重复的符号模型。例如,当输入数据流包括‘a b a b ababbbbbcbc,,RLE310可编码这些符号为<ab3b4cbc>。此外,输入流可使用其 他RLE编码解释来编码。图4是用于执行带有行程编码的Lempel-Ziv压缩的示例性装置的框图。装置400 包括存储模块,如缓冲器120,其与编码器410通信。缓冲器120包括搜索缓冲器122以 存储输入数据的编码的符号,并包括先行缓冲器124以存储将被编码的数据的符号的进入 流。编码器410可包括Lempel-Ziv编码模式单元412、RLE模式单元414和计数器416。在运行期间,通过在Lempel-Ziv编码模式单元412和RLE模式单元414之间转 换,编码器410可运行在两个不同的编码模式。Lempel-Ziv编码模式单元412可实施任何 LZ编码模式,如LZSS编码模式。例如,编码器410可最初运行为使用LZSS编码模式单元 412来编码先行缓冲器124中的、与搜索缓冲器122中的编码符号不匹配的符号。通过使用 LZSS编码模式单元412,编码器410可使用两个元素码字而非LZ77编码器所使用的三个元 素码字来编码非匹配的符号。当编码器410识别了先行缓冲器124中的、与搜索缓冲器122中的编码的符号匹 配的符号模型时,编码器410可输出转义码并转换到RLE模式单元414。当使用RLE模式单 元414时,计数器416可被用来计数符号模型在先行缓冲器124中重复的次数。在转义码 被输出之后,计数器416可从符号模型第一次出现时开始,计数符号模型重复的次数。当重 复的符号模型的运行结束时,编码器410可转换回LZSS编码模式单元412以编码非匹配的 符号。在存储类型的数据文件中,这种二进制可执行文件和计算机生成文件,如目标文 件、数据库文件等,0的运行可能频繁发生。通过结合RLE模式和LZSS编码模式,可实现比 利用单独的任一编码方案的可能的更进一步的压缩。表示从使用Lempel-Ziv编码模式单元412转换到RLE模式单元414的转义码可 使用不同类型的转义码实现。例如,包括下列元素的自定义码字可被使用〈标记,偏移量, 长度 >。标记、偏移量、长度元素与以上关于LZ77和LZSS描述的那些类似。然而,某些限制可被应用到码字的三个元素。例如,长度元素可等于先行缓冲器的 大小。另外,偏移量元素可大于或等于搜索缓冲器大小减去先行缓冲器大小的值。例如,当搜索缓冲器大小是128字节且先行缓冲器大小是8字节时,下列码字可被 用作转义码<1,120,8>以代表先行缓冲器中的一个周期性的8字节的模型(见下面图5);
<1,121,8>以代表先行缓冲器中的一个周期性的7字节的模型(见下面图9);<1,122,8>以代表先行缓冲器中的一个周期性的6字节的模型;<1,123,8>以代表先行缓冲器中的一个周期性的5字节的模型;<1,124,8>以代表先行缓冲器中的两个相同的4字节的模型(见下面图6);<1,125,8>以代表先行缓冲器中的两个周期性的3字节的模型;<1,126,8>以代表先行缓冲器中的四个相同的2字节的模型(见下面图7);以及<1,127,8>以代表先行缓冲器中的8个相同的1字节的模型(见下面图8)。图5是示出使用一次出现的码字的作为转义码的示例性编码过程500的框图。在 此编码示例500中,转义码<1,120,8>被用来代表在先行缓冲器124中的一个周期性的8 字节的模型(a,b,c,d,e,f,g,h)。搜索缓冲器大小是128字节,且先行缓冲器大小是8字节。最初,编码器(例如,编码器410)通过使用LZSS编码模式单元412运行。编码器比较先行缓冲器124中的第一个符号‘a’和搜索缓冲器122中的编码的符 号,且发现无匹配。因为对于、’未找到匹配,编码器输出相应的码字502(例如,<0,‘&’>)。 标记比特‘0’表示未找到匹配以及下一个数据是字面量(字节)。编码器继续用相应的码 字 502(例如,<0,‘b,>,<0,‘C,>,<0,‘d,>,<0,‘e,>,<0,‘f,>,<0,‘g,>和 <0,‘h,>编码符号‘b’、‘c’、‘d’、‘e’、‘f’、‘g’、和‘h,的随后的输入流,以表示对于这些符号没有 找到匹配。在使用LZSS编码模式单元412编码每一个符号之后,编码器用相应的编码符号 移位或更新搜索缓冲器122。在编码符号‘a’、‘b’、‘c’、‘d’、‘e’、‘f’、‘g’和‘h’之后,编码器识别在先行缓 冲器124中的、与搜索缓冲器122中的编码符号506( ‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘g’,和 ‘h’)匹配的符号模型504( ‘a’,‘b’,‘c’,‘d’,‘e’,‘f’,‘gH,)。编码器编码被识别 的符号模型并输出转义码(例如,<1,120,8>)508。转义码表示编码器正在转换到使用RLE 模式单元414。在RLE模式期间,编码器识别并计数符号模型在先行缓冲器124中重复的次数。编 码器可包括计数器以计数重复的次数。在输出转义码之后,编码器从符号模型第一次出现 时开始计数。另外,编码器简单计数重复的次数而非输出码字。划掉码字表示编码器正在 简单计数符号模型重复的次数而非正在输出码字。当编码器检测到符号模型停止重复时, 编码器输出最后的计数总数510,并转换回使用LZSS编码模式单元412。关于图6、7和8,描述了使用转义码的三个其他的示例。在这些示例中,基于转义 码的输出,编码器在使用LZSS编码模式单元412和RLE模式单元414之间转换,如上关于 图5所述。图6是示出使用一次出现的码字作为转义码的另一个示例性编码过程600的框 图。类似于以上的图5,编码器比较先行缓冲器124中的符号的输入流和搜索缓冲器122中 的编码符号。在此编码示例600中,转义码<1,124,8>被用来代表在先行缓冲器124中的 两个相同的4字节(a,b,c, d)的模型。编码器输出转义码,以表示编码器正从LZSS编码 模式单元412转换到RLE模式单元414。划掉码字表示编码器正在简单计数符号模型重复 的次数而非正在输出码字。当检测到符号模型停止重复时,编码器转换回使用LZSS编码模 式单元412。搜索缓冲器的大小是128字节,且先行缓冲器的大小是8字节。图7是示出使用一次出现的码字作为转义码的第三个示例性编码过程700的框图。类似于以上的图5,编码器比较先行缓冲器124中的符号的输入流和搜索缓冲器122中 的编码符号。在此编码示例700中,转义码<1,126,8>被用来代表先行缓冲器124中的四 个相同的2字节(a,b)模型。编码器输出转义码,以表示编码器正在从LZSS编码模式单 元412转换到RLE模式单元414。划掉码字表示编码器正在简单计数符号模型重复的次数 而非正在输出码字。当检测到符号模型停止重复时,编码器转换回使用LZSS编码模式单元 412。搜索缓冲器的大小是128字节,且先行缓冲器的大小是8字节。图8是示出使用一次出现的码字作为转义码的第四个示例性编码过程800的框 图。类似于以上的图5,编码器比较先行缓冲器124中的符号的输入流和搜索缓冲器122中 的编码符号。在此编码示例800中,转义码<1,127,8>被用来代表先行缓冲器124中的8 个相同的1字节(a)模型。编码器输出转义码并表示编码器正在从LZSS编码模式单元412 转换到RLE模式单元414。划掉码字表示编码器正在简单计算符号模型重复的次数而非正 在输出码字。当检测到符号模型停止重复时,编码器转换回使用LZSS编码模式单元412。 搜索缓冲器的大小是128字节,且先行缓冲器的大小是8字节。另外,编码器可使用两次连续输出的码字的作为转义码,其表示编码器正转换为 使用RLE模式单元412。使用不同类型的转义码可有不同的优点。例如,使用单一出现的码 字作为转义码可比使用码字的重复的出现作为转义码而将编码器410转换为使用RLE模式 单元414早一个码字。如图5到8所示,在输出包括单一码字的转义码之后,编码器转换为 使用RLE模式单元414。当使用LZSS编码模式单元412时,编码器需要在每次编码之后更 新搜索缓冲器。然而,当使用RLE模式单元414时,编码器可延迟更新搜索缓冲器,直到符 号模型重复次数的总数的计数已经被确定。因此,编码器越早可使用RLE模式单元414,编 码器越早可延迟更新搜索缓冲器。比较起来,当使用重复的出现的码字作为转义码时,编码器不会转换为使用RLE 模式单元414,直到输出至少两个连续的码字。这可延迟转换为使用RLE模式单元414 一个 码字。然而,如果在输出码字一次之后,所识别的符号模型没有重复,那么编码器可能不必 要使用额外的比特来编码计数。使用重复出现的码字(例如两次连续出现的码字)作为转 义码可防止当计数是0时编码器不必要地使用额外的比特来编码计数。在使用一个码字和 两个码字作为转义码之间比较数据压缩有效性在下面关于图11被描述。图9是示出使用重复出现的码字(例如,两个相同的码字)作为转义码的示例性 编码过程900的框图。编码器(例如,编码器410)比较先行缓冲器124中的符号和搜索缓 冲器122中的编码符号。最初,编码器运行为使用LZSS编码模式单元412并编码与搜索缓 冲器122中的编码符号匹配的符号。当编码器识别了先行缓冲器124中的、与搜索缓冲器 122中的编码符号匹配的符号模型时,编码器输出码字。在此编码示例900中,码字<1,121, 8>被用来代表先行缓冲器124中的一个周期性的7字节(例如,‘a’,‘b’,‘c’,‘d’,‘e’, ‘f’和‘g’)的模型。在编码器转换为使用RLE模式单元414之前,编码器连续两次输出码 字<1,121,8>902。因此,连续出现的两个相同的码字902被用作动态转义码。编码器运行RLE模式单元414以计数符号模型在先行缓冲器124中重复的次数, 直到重复模型的运行结束。在转义码被输出之后,计数从符号模型第一次出现时开始。当 符号模型停止重复时,编码器输出计数并转换回使用LZSS编码模式单元412。编码器可包 括计数器以计数重复的次数。
图10是比较LZSS编码器和包括LZSS和RLE模式的编码器的压缩性能的图表 1000。图表1000示出当使用LZSS编码器(1010)和包括LZSS模式和RLE模式的编码器 (1020)时对于不同的数据文件(χ轴)所实现的压缩比(y轴)。图11是比较使用两个不同的转义码类型的编码器的压缩性能的图表1100。图表 1100示出当使用码字(1110)和两个连续的码字(1120)作为转义码时对于不同的数据文件 (X轴)所实现的压缩比(y轴)。图表1100中所示的数据表明单一码字的转义码和两个连 续码字的转义码之间没有显著差异。两个转义码类型在改善数据压缩上具有相似的功效。图12A、12B、13C是示出用于编码数据文件符号的示例性过程的过程流程图。在 1210,数据处理设备如计算机或服务器可在存储模块中存储数据。例如,数据处理设备可在 本地缓冲器中存储输入数据流。在1212,数据处理设备通过在存储模块的第一缓冲器部分 中存储数据的编码的符号而在存储模块中存储数据。在1214,数据处理设备可通过在存储 模块的第二缓冲器部分中存储将被编码的数据的符号而在存储模块中存储数据。在1220,数据处理设备中的编码器(例如,编码器410)可比较存储在第二缓冲器 部分中的符号和存储在第一缓冲器部分中的编码的符号,并压缩所存储的符号。在1230,在 比较和压缩数据中,编码器可运行在第一编码模式(例如,通过使用第一编码模式单元), 以用相应的码字编码第二缓冲器部分中的符号,直到检测在第二缓冲器部分中的、与第一 缓冲器部分中的编码符号匹配的重复的符号模型。在1240,响应于检测到重复的符号模型, 编码器可转换为运行在第二编码模式(例如,通过使用第二编码模式单元)。在1242,在第 二编码模式期间,编码器可计数符号模型在第二缓冲器部分中重复的次数。在1244,编码器 可输出在第二编码模式期间所计数的数字。在1243,在输出转义码之后,编码器可从模型第 一次出现时开始,计数符号模型在第二缓冲器部分中重复的次数。在1250,当检测到第二缓 冲器部分中的符号停止重复时,编码器可转换回第一编码模式。第一编码模式可包括Lempel-Ziv编码模式。Lempel-Ziv编码模式可包括多种 类型,如Lempel-Ziv-Storer-Szymanski(LZSS)编码模式。第二编码模式可包括行程编码 (RLE)模式。另外,响应于编码器检测到重复的符号模型,编码器可输出转义码。转义码可包括 单一出现的码字。在一些实施中,转义码包括重复出现的码字(例如,两个相同的码字)。码字可包括标记元素和字面量元素或偏移量-长度对。字面量是符号或字符的字 面字节。标记表示转义码中的下一个数据是字面量还是偏移量-长度对。偏移量可代表第 二缓冲器部分的符号模型在第一缓冲器部分中被匹配的开始位置。此外,偏移量可代表第 一缓冲器部分的大小减去在第二缓冲器部分中重复的符号模型的长度。长度代表第二缓冲 器部分的大小。在1232,编码器可用在第一编码模式期间所生成的每个码字更新第一缓冲器部 分。当运行在第二编码模式时,编码器可延迟更新第一缓冲器,直到最后的计数数字被生 成。因此,在1246,编码器可在第二编码模式期间只更新第一缓冲器部分一次。图13是用于执行有效的无损数据压缩的示例性系统的框图。如上关于图1到12C 所描述的无损数据压缩技术和装置可被实施在多种系统中。例如,联网的系统1300可实施 所描述的无损数据压缩技术和装置,以提供联网的存储系统,如备份存储系统。系统1300 可包括数据处理设备1310,如台式计算机1312、便携式计算设备1314、企业服务器1316等。数据处理设备1310可包括处理器1317、编码器1318和缓冲器1319。缓冲器1319可包括搜 索缓冲器和先行缓冲器。搜索缓冲器和先行缓冲器可被实施为独立的缓冲器或实施为同一 缓冲器的独立的部分。编码器1318可被实施,从而以与以上关于图4所描述的编码器410 一致的方式运行。数据处理设备1310可接收输入数据流1302和编码所接收到的输入数据流1302, 以生成压缩的数据1304。数据处理设备1310可与存储设备1320通信以存储压缩的数据。 存储设备1320可包括在数据处理设备1310中或是独立的(如所示)。此外,存储设备1320 可包括多种类型的存储设备,如磁盘存储设备1322、磁带存储设备等。存储设备1320可包 括主存储设备、备份存储设备或两者。通过网络连接如因特网、局域网(LAN)、广域网、以太 网等,存储设备1320可与数据处理设备1310通信。在一些实施中,系统1300可被实施为 存储区域网络(SAN),以提供在连接到SAN的多种设备之间共享的存储系统。编码器1318可运行作为专用压缩硬件以从处理器1317卸载数据压缩功能。通过 使用专用数据压缩硬件,系统可实现更快和更有效的主数据存储和备份数据存储。另外,处 理器1317可运行得更为有效,因为它不需要负荷数据压缩操作。所描述的无损数据压缩技术、装置、系统可被实施在其他应用中。例如,专用数据 压缩硬件可被用在系统中以增加通信系统的吞吐量。压缩的数据有助于增加数据通信速 度,且专用数据压缩硬件可帮助缓解有关传输和接收大量数据的问题。以上描述了几个实施方式,且各种修改是可能的。包括在此说明书中描述的功能 操作的所公开的主题,可被实施在电子电路、计算机硬件、固件、软件或他们的组合中,如在 此说明书中所公开的结构装置及其结构等价物中,潜在地包括可操作以导致一个或多个数 据处理装置执行所描述的操作的程序(例如,在计算机可读介质中编码的程序,所述计算 机可读介质可以是存储设备、储存设备、机器可读存储基板或其他物理的、机器可读介质或 它们中的一个或多个的组合)。术语“数据处理装置”包括所有的用于处理数据的装置、设备和机器,包括例如可 编程处理器、计算机、多个处理器或计算机。除了硬件,装置还可包括为正被讨论的计算机 程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它 们中一个或多个的组合的代码。程序(也称为计算机程序、软件、软件应用、脚本或代码)可以用任何形式的编程 语言书写,包括编译或解释语言或声明的或程序上的语言,并且它可被以任何形式调用,包 括作为独立的程序或作为模块、组件、子程序或适合用于计算环境中的其他单元。程序不一 定对应文件系统中的文件。程序可被存储在保存其他程序或数据的文件的一部分中(例 如,存储在标记语言文档中的一个或多个脚本)、正在讨论的程序专用的单一文件中、或多 个协调文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。程序可被调用, 以在一个计算机上或位于一个地点或分布在多个地点且由通信网络互联的多个计算机上 执行。虽然此说明书包含了许多细节,但是这些不应被理解为对所要求的范围的限制, 而是作为可对特定实施方式所特有的特征的描述。在此说明书中,在单独的实施方式的背 景中所描述的某些特征也可与单一实施方式结合来实现。相反地,在单一的实施方式的背 景中所描述的各种特征也可被独立或以任何合适的子结合在多个实施方式中实现。此外,虽然以上所描述的特征可作为某些组合甚至如最初被要求的而起作用,但是根据所要求的 结合的一个或多个特征在某些情况下可从组合删去,且所要求的结合可指向子结合或子结 合的变体。类似地,虽然操作在附图中以特定的顺序被描绘,但是这不应被理解为要求这种 操作被以所示的特定的顺序或顺次的顺序执行、或所有的图解的操作被执行,以实现所需 的结果。在某些情况下,多任务和并行处理可能是有利的。此外,在以上所描述的实施方式 中各种系统组件的分离不应被理解为在所有的实施方式中要求这种分离。其他实施方式落入所附权利要求的范围。
权利要求
一种装置,包括存储模块,用于存储数据,其中所述存储模块包括第一缓冲器部分,用于存储所述数据的编码符号,以及第二缓冲器部分,用于存储将被编码的数据的符号;以及编码器,用于比较存储在所述第二缓冲器部分中的所述符号和存储在所述第一缓冲器部分中的所述编码符号以及压缩所述数据,其中所述编码器被配置为运行在第一编码模式,以用相应的码字编码所述第二缓冲器部分中的所述符号,直到所述编码器检测到在所述第二缓冲器部分中的、与所述第一缓冲器部分中的所述编码符号匹配的重复的符号模型,以及响应于所述编码器检测到所述重复的符号模型,转换为运行在第二编码模式,以计数所述符号模型在所述第二缓冲器部分中重复的次数,以及输出所计数的数字;其中,所述编码器被配置为当所述编码器检测到在所述第二缓冲器中的所述符号停止重复时转换回所述第一编码模式。
2.如权利要求1所述的装置,其中所述第一编码模式包括Lempel-Ziv编码模式。
3.如权利要求2所述的装置,其中,所述Lempel-Ziv编码模式包括Lempel-Ziv-Store r-Szymanski (LZSS)编码模式;以及其中所述第二编码模式包括行程编码(RLE)模式。
4.如权利要求1所述的装置,其中所述编码器被配置为响应于所述编码器检测到所述 重复的符号模型而输出转义码,所述转义码包括单一出现的码字,所述转义码包括标记,用于表示在所述转义码中的下一个数据是字面量还是偏移量_长度对; 偏移量,用于代表在所述第二缓冲器部分中的所述重复的符号模型在所述第一缓冲器 部分中的匹配的位置;以及长度,用于代表所述第二缓冲器部分的大小。
5.如权利要求4所述的装置,其中所述转义码包括两次连续出现的所述码字。
6.如权利要求4所述的装置,其中所述编码器被配置为在输出所述转义码之后,从所 述模型第一次出现时开始,计数所述符号模型在所述第二缓冲器中重复的所述次数。
7.如权利要求1所述的装置,其中,所述编码器被配置为用在所述第一编码模式期间 所生成的码字更新所述第一缓冲器部分;以及其中,所述编码器被配置为在所述第二编码模式期间更新所述第一缓冲器部分一次。
8.一种方法,其由数据处理设备执行,所述方法包括 在存储模块中存储数据,所述存储还包括在所述存储模块的第一缓冲器部分存储所述数据的编码符号,以及 在所述存储模块的第二缓冲器部分存储将被编码的数据的符号;以及 压缩所述数据,所述压缩还包括比较存储在所述第二缓冲器部分中的所述符号和存储在所述第一缓冲器部分中的所 述编码符号,运行在第一编码模式,以用相应的码字编码所述第二缓冲器部分中的所述符号,直到 检测到第二缓冲器部分中的、与所述第一缓冲器部分中的所述编码符号匹配的重复的符号模型,响应于检测到所述重复的符号模型,运行在第二编码模式,运行在所述第二编码模式包括计数所述符号模型在所述第二缓冲器部分中重复的次数,以及 输出所计数的数字,以及当检测到所述第二缓冲器中的所述符号停止重复时,转换回所述第一编码模式。
9.如权利要求8所述的方法,其中所述第一编码模式包括Lempel-Ziv编码模式。
10.如权利要求9所述的方法,其中所述Lempel-Ziv编码模式包括Lempel-Ziv-Store r-Szymanski (LZSS)编码模式;以及其中所述第二编码模式包括行程编码(RLE)模式。
11.如权利要求8所述的方法,还包括响应于检测到所述重复的符号模型而输出转义 码,所述转义码包括单一出现的码字,所述转义码包括标记,用于表示在所述转义码中的下一个数据是字面量还是偏移量_长度对; 偏移量,用于代表在所述第二缓冲器部分中的所述重复的符号模型在所述第一缓冲器 部分中的匹配的位置;以及长度,用于代表所述第二缓冲器部分的大小。
12.如权利要求11所述的方法,其中所述转义码包括两次连续出现的所述码字。
13.如权利要求11所述的方法,还包括在输出所述转义码之后,从所述模型第一次出 现时开始,计数所述符号模型在所述第二缓冲器中重复的所述次数。
14.如权利要求8所述的方法,还包括用在所述第一编码模式期间所生成的每个码字 更新所述第一缓冲器部分;以及在所述第二编码模式期间更新所述第一缓冲器部分一次。
15.一种系统,包括数据处理设备,用于编码数据来生成压缩数据,其中所述数据处理设备包括 数据缓冲器,用于接收输入数据,其中所述缓冲器包括 搜索缓冲器,用于缓冲所述输入数据的编码符号,以及 先行缓冲器,用于缓冲将被编码的所述输入数据的符号;以及 编码器,用于比较缓冲在所述先行缓冲器中的所述符号和缓冲在所述搜索缓冲器中的 所述编码符号以及压缩所述输入数据,其中所述编码器被配置为运行在第一编码模式,以用相应的码字编码所述先行缓冲器中的所述符号,直到所述 编码器检测到在所述先行缓冲器中的、与所述搜索缓冲器中的所述编码符号匹配的重复的 符号模型,以及响应于检测到所述重复的符号模型,转换为运行在第二编码模式以 计数所述符号模型在所述先行缓冲器中重复的次数,以及 输出所计数的数字;其中,所述编码器被配置为当所述编码器检测到在所述第二缓冲器中的所述符号停止 重复时转换回所述第一编码模式。
16.如权利要求15所述的系统,其中所述第一编码模式包括Lempel-Ziv编码模式。
17.如权利要求16所述的系统,其中,所述Lempel-Ziv编码模式包括Lempel-Ziv-Storer-Szymanski (LZSS)编码模式;以及其中所述第二编码模式包括行程编码(RLE)模式。
18.如权利要求15所述的系统,其中所述编码器被配置为响应于所述编码器检测到所 述重复的符号模型而输出转义码,所述转义码包括单一出现的码字,所述转义码包括标记,用于表示在所述转义码中的下一个数据是字面量还是偏移量_长度对; 偏移量,用于代表在所述先行缓冲器中的所述重复的符号模型在所述搜索缓冲器中的 匹配的位置;以及长度,用于代表所述先行缓冲器的大小。
19.如权利要求18所述的系统,其中所述转义码包括两次连续出现的所述码字。
20.如权利要求15所述的系统,其中所述编码器被配置为用在所述第一编码模式期间所生成的每个码字更新所述搜索缓冲器; 在所述第二编码模式期间更新所述搜索缓冲器一次;以及在输出所述转义码之后,从所述模型第一次出现时开始,计数所述符号模型在所述第 二缓冲器中重复的所述次数。
全文摘要
本公开涉及用于数据压缩的多模式编码。本公开包括关于无损数据压缩的装置、系统和技术。在一些实施中,装置包括存储模块以存储数据。所述存储模块包括第一缓冲器部分以存储数据的编码的符号,并包括第二缓冲器部分以存储将被编码的数据的符号。所述装置包括编码器以比较存储在所述第二缓冲器部分中的所述符号和存储在所述第一缓冲器部分中的所述编码的符号以及压缩所述数据。所述编码器可运行在第一编码模式以用相应的码字编码所述第二缓冲器部分中的所述符号,直到检测到第二缓冲器部分中的、与第一缓冲器部分中的所述编码的符号匹配的重复的符号模型。响应于检测到所述重复的模型,所述编码器可运行在第二编码模式。
文档编号G11B20/10GK101989443SQ201010143498
公开日2011年3月23日 申请日期2010年3月5日 优先权日2009年3月5日
发明者阳学仕, 陈梁杰 申请人:马维尔国际贸易有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1