CN109690957B - 熵编码的系统级测试 - Google Patents
熵编码的系统级测试 Download PDFInfo
- Publication number
- CN109690957B CN109690957B CN201780056171.8A CN201780056171A CN109690957B CN 109690957 B CN109690957 B CN 109690957B CN 201780056171 A CN201780056171 A CN 201780056171A CN 109690957 B CN109690957 B CN 109690957B
- Authority
- CN
- China
- Prior art keywords
- eed
- stt
- input
- test
- codewords
- 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.)
- Active
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
- 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
-
- 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/4031—Fixed length to variable length coding
-
- 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/4031—Fixed length to variable length coding
- H03M7/4037—Prefix coding
-
- 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/6076—Selection between compressors of the same type
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一方面包括接收包括输入符号及其对应的码字的符号转换表(STT)。还接收熵编码描述符(EED),该熵编码描述符(EED)指定针对不同长度中的每个长度有多少码字。修改STT和EED中的一者或二者的内容以生成测试用例并执行熵编码测试。该执行包括基于包括该输入符号中的一个或多个输入符号的输入数据字符串的内容以及STT和EED的内容来执行无损数据压缩处理;或者,基于包括该码字中的一个或多个码字的输入数据字符串的内容,以及STT和EED的内容,执行数据扩展处理。将熵编码测试的结果与预期结果进行比较。
Description
技术领域
本发明一般涉及计算机系统,更具体地,涉及熵编码的系统级测试。
背景技术
在信号处理中,数据压缩涉及通过对信息进行编码来减小数据文件的大小,使得其使用比信息的原始表示更少的比特。使用有损压缩或无损压缩来执行压缩。无损压缩通过识别和消除统计冗余来减少比特,并且在执行无损压缩时不会丢失信息。相反,有损压缩通过去除不必要或不太重要的信息来减少比特,并且当执行有损压缩时这些比特可能丢失。数据压缩很有用,因为它减少了存储和传输数据所需的资源。计算资源在压缩过程中消耗,并且通常在压缩过程的逆转(扩展)中消耗。数据压缩方案的设计涉及各种因素之间的权衡,例如压缩程度,引入的失真量(在使用有损数据压缩时)以及压缩和扩展数据所需的计算资源。
霍夫曼和Lempel-Ziv是两种类型的无损压缩算法。霍夫曼编码是一种熵编码,其为输入数据中出现的每个唯一符号创建并分配唯一的无前缀码。术语“熵编码”用于指代独立于存储数据的介质的特定特性的无损数据压缩方案。霍夫曼编码用于通过用相应的无前缀码替换输入数据中的每个固定长度输入符号来压缩数据。无前缀码具有不同的长度,其中,输入数据中最常见的符号被分配最短的码。霍夫曼编码的基本思想是将短码字分配给具有高发生概率的那些输入块以及将长码字分配给具有低发生概率的输入块。假设源统计是先验已知的,霍夫曼编码的设计对于固定块长度是最佳的。
Lempel-Ziv压缩算法用于实现可变到固定长度码。Lempel-Ziv的基本思想是将输入的数据序列解析为不同长度的非重叠块,同时构建到目前为止看到的块的字典。与依赖于对输入数据中符号频率的估计的霍夫曼编码不同,Lempel-Ziv编码不是针对具有任何特定内容的输入数据而设计,而是针对大类源的输入数据而设计。
发明内容
实施例包括用于熵编码的系统级测试的方法,系统和计算机程序产品。一种方法包括接收符号转换表(STT),该表包括输入符号及它们对应的具有各种长度的唯一码字。还接收熵编码描述符(EED),其指定针对不同长度中的每个长度有多少码字。修改STT和EED中的一者或二者的内容以生成测试用例并执行熵编码测试。该执行包括:基于熵编码测试是数据压缩测试,基于包括输入符号中的一个或多个输入符号的输入数据字符串的内容以及STT和EED的内容,执行无损数据压缩处理;基于熵编码测试是数据扩展测试,基于包括码字中的一个或多个码字的输入数据字符串的内容以及STT和EED的内容,执行数据扩展处理。将熵编码测试的结果与预期结果进行比较,并输出比较的结果。
通过本发明的技术实现了其它特征和优点。本文详细描述了本发明的其它实施方案和方面,并将其视为要求保护的发明的一部分。为了更好地理解具有优点和特征的本发明,请参考说明书和附图。
附图说明
被视为本发明的主题在说明书的结论处的权利要求中特别指出并清楚地要求保护。从以下结合附图的详细描述中,本发明的前述和其它特征以及优点是显而易见的,在附图中:
图1示出根据一个或多个实施例的用于熵编码的系统级测试的系统的框图;
图2示出根据一个或多个实施例的用于产生用于压缩测试的熵编码描述符(EED)和符号转换表(STT)的框图;
图3示出根据一个或多个实施例的完整的霍夫曼树和编码;
图4示出根据一个或多个实施例的用于产生用于压缩测试的EED和STT的框图;
图5示出根据一个或多个实施例的用于执行输入数据的两级压缩的流程图;
图6示出根据一个或多个实施例的用于生成扩展数据的框图;
图7示出根据一个或多个实施例的用于执行压缩数据的两级扩展的流程图;以及
图8示出根据一个或多个实施例的用于熵编码的系统级测试的计算机系统。
具体实施方式
本文描述的实施例在实现两级压缩的计算机系统中提供熵编码的系统级测试。一个或多个实施例提供了一种使用伪随机测试生成来测试两级压缩过程及其相应扩展的方法。两级压缩/扩展过程可以包括作为第一级的Lempel-Ziv类型编码和作为第二级的基于霍夫曼压缩技术的熵编码。根据一个或多个实施例,压缩和扩展是用于测试熵编码的两个主要组件。对于压缩,基于输入数据针对所有可能的组合生成霍夫曼树,并且构建具有左对齐码字的符号转换表(STT)。另外,生成定义霍夫曼树的熵编码描述符(EED),其包括STT(在压缩期间使用的)中的比特数的指示和用于符号索引(在扩展期间使用)的输入比特的数量。根据一个或多个实施例,通过操纵STT和/或EED来构建包括无效码字的各种码字。以这种方式,可以生成和测试数据异常情况,并且该过程可以构建符号的最大长度并因此构建最大霍夫曼树。类似的方法可以用于扩展,其中基于输入数据构建霍夫曼树,并且EED用于找出针对符号索引要消耗的输入比特的数量。根据一个或多个实施例,被测设备的现有压缩和扩展编码需要最小的改变以执行熵编码的系统级测试。通过操纵先前生成的STT和EED,可以生成许多衍生测试用例以用于熵编码的系统级测试,而不需要构建新的霍夫曼树。
现在参照图1,根据一个或多个实施例大致示出了用于熵编码的系统级测试的系统的框图100。图1的框图100包括:测试数据102,其被输入到被测设备104和仿真器108,用于执行系统级熵编码测试。设备测试结果106从被测设备104输出,仿真器测试结果110从仿真器108输出,并被输入到比较逻辑112。比较的结果被输出为测试结果114。在一个或多个实施例中,测试数据102包括待压缩或待扩展的输入字符串,STT和EED。被测设备104可以包括使用任何霍夫曼类型编码进行数据压缩的计算机系统,例如但不限于来自IBM的System测试结果114可以指示设备测试结果106是否与仿真器测试结果110匹配(即,预期的测试结果)。另外,测试结果114可以指示设备测试结果106与仿真器测试结果110之间的差异,并且可以建议要执行的附加测试,包括对输入字符串,EED和/或STT的建议修改。
现在参照图2,根据一个或多个实施例大致示出了用于产生用于数据压缩的EED和STT的框图200。输入A 202包括输入数据字符串的所有可能的符号。例如,如果输入数据是文本,则输入A 202可以包括字母表中所有字母的符号(例如,A到Z)和标点符号。在一个或多个实施例中,通过基于所有可能的符号构建树来生成霍夫曼树204。在一个或多个实施例中,取决于系统架构,霍夫曼树204可以大到213或8,192个叶子。EED206和STT 208基于霍夫曼树204的内容构建。在一个或多个实施例中,STT 208包括左对齐码字,其中,STT中的每个条目包括定义可能的符号中的每个可能的符号的16比特字段。在一个或多个实施例中,EED206包括16比特元素,其指定霍夫曼树204中的具有每个长度的叶子的数量。叶子的数量与码字的长度(比特数)相同。因此,EED 206可用于指示待使用(用于压缩)的STT 208中的比特数和用于符号索引(用于扩展)的输入比特数。在图2中还示出输入B 210,输入B 210是输入A 202的子集,其包括输入数据中包含的符号,该输入数据使用Lempel-Ziv压缩进行压缩。字典212由Lempel-Ziv压缩处理基于输入数据字符串中包含的符号构建。如图2所示,EED 208和STT 208被串接到字典212的末尾。
根据一个或多个实施例,EED 208定义霍夫曼树并且由位于字典212的末尾的32字节字段实现。此外,STT 208位于EED 208的末尾,并且STT 208中的每个条目是定义每个符号的16比特字段。根据一个或多个实施例,EED 208和STT 208的构建和使用是测试两级压缩功能的一部分。一旦从给定的霍夫曼树构建有效的EED 208,就可以重新布置EED 208的内容,同时保持EED 208在架构上有效。例如,可以交换EED 208的两个或更多个条目,并且通过这样做,创建虚拟霍夫曼树以及可以用于生成新的测试用例。类似地,代替STT 208中表示唯一符号的每个条目,可以修改多个条目以具有相同的值,并因此创建数据的模式(pattern)。可以进行的更改的另一个示例是EED的有效条目可以递增或递减以造成异常。可以改变给定条目对的值,使得它们的总和在每个条目被修改时保持相同。
现在参照图3,根据一个或多个实施例大致示出完整的霍夫曼树和编码300。完整的霍夫曼树和编码300包括霍夫曼树302,输入数据字符串中的符号列表304,每个符号306的频率,以及与每个符号304相关联的码字308。图3中的示例霍夫曼树302基于输入数据字符串“今天我们谈论霍夫曼算法(today we are talking about huffman algorithm)”来构建。该输入数据字符串具有四十四的输入数据长度,其中,每个符号304具有图3中所示的相应频率306。唯一的符号或字符根据它们的频率进行排序,从左边以频率最高的符号304(频率为6的“-”或“空格”和“a”)开始,并且在左边以频率最低的符号304(频率为1的“w”,“k”,“y”,“b”和“d”)结束。霍夫曼树302的底部叶子对应于符号304中的每一个。
构建图3中所示的霍夫曼树302可以包括将第一两个最小频率(频率为1的“b”和频率为1的“d”)合并为频率为2的节点310。第二两个最小频率节点(频率为1的“k”和频率为1的“y”)也被合并为频率为2的节点312。第三最小频率节点(频率为1的“w”和频率为2的“m”)被合并为频率为3的节点314。第四最小频率节点(频率为2的节点310和频率为2的节点312)被合并为频率为4的节点316。这种组合最小频率节点的过程继续,从而生成图3中所示的霍夫曼树302。在图3所示的例子中,码字位“0”被分配给节点左侧的叶子,而位“1”被分配给节点右侧的叶子。从霍夫曼树的顶部到符号“-”(或空格)的路径318中的叶子数是三。因此,与符号“-”相关联的码字的长度是3,并且在该示例中,被分配的码字是“000”。符号304被码字308替换之后的压缩大小是25。在一个或多个实施例中,每当采用左侧分支时分配编码0,而当采用右侧分支时分配编码1。
根据一个或多个实施例,输入数据中的每个符号304或字符通过使用比特字符串或码字308来编码,并且码字308被串接以产生压缩数据。频率更高的符号304将具有更短的编码长度(即,相应的码字308将具有更少的比特)。霍夫曼树302是无前缀码树的示例,因为接收器可以在没有特殊标记的情况下判断何时是符号的结尾,因为霍夫曼树302中没有作为在霍夫曼树302中的任何其它有效码字的前缀(开始)的有效码字308。
根据一个或多个实施例,对应于图3中所示的霍夫曼树302的STT可以包括以下条目:
根据一个或多个实施例,对应于图3中所示的霍夫曼树302的EED可以包括以下条目以指示没有符号对应于长度为一或二或六到十六的码字,有一个符号对应于长度为三的码字,有十个符号对应于长度为四的码字,以及有八个符号对应长度为五的码字:
现在参照图4,根据一个或多个实施例大致示出了用于产生用于数据压缩的EED和STT的框图400。如图4所示,基于来自第一级压缩的可能输出(诸如Lempel-Ziv压缩)构建EED 406和STT 408。输入402包括第一级压缩的可能输出。基于第一级压缩构建字典404。
根据一个或多个实施例,第一级压缩是Lempel-Ziv编码算法,其包括:初始化字典404以包含长度为1的所有符号或字符串,在字典中找到与当前输入匹配的最长字符串“W”,发出针对W的字典索引到输出并从输入中删除W,在输入中的下一个符号后将W添加到字典404;针对输入数据中的所有符号重复查找、发出和添加。以这种方式,可以初始化字典404以包含对应于所有可能的输入字符的单字符串,并且该算法通过针对相继更长的子字符串扫遍输入字符串来工作,直到它找到不在字典404中的一个字符串。当找到这样的字符串时,从字典404中检索没有最后一个字符的字符串的索引(即,字典404中最长的子字符串)并将其发送到输出,以及采用下一个可用编码将新字符串(包括最后一个字符)添加到字典404中。然后将最新输入字符用作扫描子字符串的下一个起始点。以这种方式,相继更长的字符串被登记在字典404中并且可作为用于随后的编码的单个输出值。该算法最适用于具有重复模式的数据,因此消息的初始部分将被很少的压缩,但随着消息的增长,压缩率会增加。
在图4所示的实施例中,使用字典404产生的符号(即,在完成第一级压缩之后)用于生成霍夫曼树。在该实施例中,输入字符串“abc”可以由Lempel-Ziv算法输出为“101010”,其作为符号输入以构建霍夫曼树410。霍夫曼算法然后可以分配“0010”的码字。因此,在输入数据字符串中包含三个符号的输入字符串“abc”可以通过第一和第二级压缩处理被压缩成码字“0010”。基于霍夫曼树410的内容生成EED 406和STT 408,并将其附加到字典404的末尾。
现在参照图5,根据一个或多个实施例大致示出了用于执行输入数据的两级压缩的流程图500。图5中所示的流程图500可以针对单个符号采用以下处理来执行,该处理针对输入数据字符串中的每个符号,循环遍历从块502到510的整个流程。或者,图5中所示的流程图500中的每个块可以对一组输入符号(诸如一串符号或一页符号)执行。在框502处,接收输入数据(一组输入符号或单个输入符号)。在框504处,发布IBM系统压缩调用指令(CMPSC)或类似的压缩方法以执行第一级压缩,其在一个或多个实施例中是Lempel-Ziv压缩。来自Lempel-Ziv压缩的输出506(压缩符号或一组符号)用作第二级压缩的输入,其在一个或多个实施例中是霍夫曼压缩算法。在框508使用先前生成的STT将唯一码字分配给输入符号,并且在框510输出熵编码的压缩数据。
现在参照图6,根据一个或多个实施例大致示出了用于生成扩展数据的框图600。如图6所示,包括以例如码字形式的压缩数据的输入数据602被输入到霍夫曼扩展算法604,以用其对应的符号替换码字。在实现两级压缩的一个或多个实施例中,从霍夫曼扩展算法604输出的符号是压缩数据606,其将需要通过诸如Lempel-Ziv扩展算法的第二扩展算法来扩展。通过使用压缩数据和EED,生成字典的索引。如图6所示,这可以通过索引字典608来执行,以确定压缩数据606表示的原始未压缩符号或字符。
现在参照图7,根据一个或多个实施例大致示出了用于执行压缩数据的两级扩展的流程图700。图7中所示的流程图700可以针对单个码字采用以下处理来执行,该处理针对输入数据字符串中的每个压缩码字,循环遍历从块702到708的整个流程。或者,图7中所示的流程图700中的每个块可以对一组输入符号(诸如一串码字或一页码字)执行。在框702处,接收输入数据(一组压缩码字或单个压缩码字)。在框704处,访问EED以找到字典中对应于码字的索引(例如,通过Lempel-Ziv算法生成)。在框706,该索引被输入到CMPSC,其输出对应于字典中的索引的扩展数据708。
现在参照图8,根据一个或多个实施例大致示出了用于熵编码的系统级测试的计算机系统。这里描述的方法可以用硬件、软件(例如,固件)或其组合来实现。在示例性实施例中,这里描述的方法在作为特殊或通用数字计算机的微处理器的一部分的硬件中实现,诸如个人计算机,工作站,小型计算机或大型计算机。因此,系统800可以包括能够同时运行O/S的多个实例的通用计算机或大型机801。
在示例性实施例中,就硬件架构而言,如图8所示,计算机801包括一个或多个处理器805,耦接到存储器控制器815的存储器810,以及通过本地输入/输出控制器835通信耦接的一个或多个输入和/或输出(I/O)设备840、845(或外围设备)。输入/输出控制器835可以是,例如但不限于,如本领域中已知的一个或多个总线或其它有线或无线连接。输入/输出控制器835可以具有附加元件(为了简单起见已省略),诸如控制器、缓冲器(高速缓存)、驱动器、中继器和接收器,以实现通信。此外,本地接口可以包括地址,控制和/或数据连接,以使能上述组件之间的适当通信。输入/输出控制器835可以包括被配置为访问输出设备840和845的多个子信道。子信道可以包括光纤通信端口。
处理器805是用于执行软件的硬件设备,该软件尤其是存储在存储820(例如,高速缓存存储)或存储器810中的软件。处理器805可以是任何定制的或商业上可用的处理器,中央处理单元(CPU),与计算机801相关联的若干处理器之间的辅助处理器,基于半导体的微处理器(以微芯片或芯片组的形式),宏处理器或通常用于执行指令的任何设备。
存储器810可以包括易失性存储器元件(例如,随机存取存储器(RAM,诸如DRAM、SRAM、SDRAM等))和非易失性存储器元件(例如,ROM、可擦除可编程只读存储器(EPROM)、电子可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁带、光盘只读存储器(CD-ROM)、磁盘、软盘、盒式磁带、卡带等)中的任何一个或它们的组合。此外,存储器810可以包含电子,磁,光和/或其它类型的存储介质。注意,存储器810可以具有分布式架构,其中各种组件彼此远离,但是可以由处理器805访问。
存储器810中的指令可以包括一个或多个单独的程序,每个程序包括用于实现逻辑功能的可执行指令的有序列表。在图8的示例中,存储器810中的指令适合操作系统(OS)811。操作系统811基本上控制其它计算机程序的执行并提供调度、输入-输出控制、文件和数据管理、存储器管理、以及通信控制和相关服务。
存储器810可以包括多个逻辑分区(LPAR)812,每个逻辑分区运行操作系统的实例。LPAR 812可以由管理程序管理,该管理程序可以是存储在存储器810中并由处理器805执行的程序。
在示例性实施例中,传统键盘850和鼠标855可以耦接到输入/输出控制器835。诸如I/O设备840、845的其它输出设备可以包括输入设备,例如但不限于打印机,扫描仪,麦克风等。最后,I/O设备840、845还可以包括传送输入和输出二者的设备,例如但不限于网络接口卡(NIC)或调制器/解调器(用于访问其它文件、设备、系统或网络)、射频(RF)或其它收发器、电话接口、桥接器、路由器等。系统800还可以包括耦接到显示器830的显示控制器825。在示例性实施例中,系统800还可以包括用于耦接到网络865的网络接口860。网络865可以是用于通过宽带连接在计算机801和任何外部服务器、客户端等之间通信的基于IP的网络。网络865在计算机801和外部系统之间发送和接收数据。在示例性实施例中,网络865可以是由服务提供商监管的受管IP网络。网络865可以例如使用无线协议和技术(诸如WiFi、WiMax等)以无线方式实现。网络865也可以是分组交换网络,例如局域网、广域网、城域网、互连网或其它类似类型的网络环境。网络865可以是固定无线网络、无线局域网(LAN)、无线广域网(WAN)、个人局域网(PAN)、虚拟专用网(VPN)、内联网或其它合适的网络系统,并且包括用于接收和发送信号的设备。
如果计算机801是PC、工作站、智能设备等,则存储器810中的指令还可以包括基本输入输出系统(BIOS)(为简单起见已省略)。BIOS是一组必要的软件例程,其可在启动时初始化和测试硬件,启动OS 811,并支持硬件设备之间的数据传输。BIOS存储在ROM中,以便在计算机801被激活时可以执行BIOS。
当计算机801在操作中时,处理器805被配置为执行存储在存储器810内的指令,以将数据传送到存储器810和从存储器810传送数据,并且通常根据指令控制计算机801的操作。
在示例性实施例中,本文描述的方法可以利用以下技术中的任何一种或其组合来实现,这些技术在本领域中是众所周知的:具有用于根据数据信号实现逻辑功能的逻辑门的离散逻辑电路、具有适当的组合逻辑门的专用集成电路(ASIC)、可编程门阵列(PGA)、现场可编程门阵列(FPGA)等。
这里使用的术语仅出于描述特定实施例的目的,并不意图限制本发明。如这里所使用的,单数形式“一”,“一个”和“该”旨在也包括复数形式,除非上下文另有明确说明。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除存在或者添加一个或多个其它特征、整数、步骤、操作、元素、组件和/或它们的组合。
以下权利要求中的所有装置或步骤加功能元件的相应结构、材料、动作和等同物旨在包括如所具体要求保护的用于结合其它要求保护的元件来执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了对本发明的描述,但是并不旨在穷举或将本发明限于所公开的形式。在不脱离本发明的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。选择和描述实施例是为了最好地解释本发明的原理和实际应用,并且使本领域普通技术人员能够针对具有各种修改的各种实施例理解本发明适合于预期的特定用途。
本发明可以是任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。该计算机程序产品可以包括一个计算机可读存储介质(或多个计算机可读存储介质),其上具有计算机可读程序指令,用于使处理器执行本发明的各方面。
计算机可读存储介质可以是有形设备,其可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用光盘(DVD)、记忆棒、软盘、诸如在其上记录有指令的凹槽中的穿孔卡或凸起结构的机械编码装置、以及前述的任何合适的组合。这里使用的计算机可读存储介质不应被解释为暂时性信号本身,诸如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆传递的光脉冲)或通过电线传输的电信号。
这里描述的计算机可读程序指令可以经由网络(例如,因特网,局域网,广域网和/或无线网络)从计算机可读存储介质或外部计算机或外部存储设备下载到相应的计算/处理设备。网络可以包括铜传输电缆,光传输光纤,无线传输,路由器,防火墙,交换机,网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据、用于集成电路的配置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,包括诸如Smalltalk,C++等的面向对象的编程语言,以及诸如“C”编程语言或类似编程语言的过程编程语言。计算机可读程序指令可以完全在用户的计算机上执行,部分地在用户的计算机上执行,作为独立的软件包执行,部分地在用户的计算机上并且部分地在远程计算机上执行,或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者可以(例如,通过使用互联网服务提供商的互联网)对外部计算机进行的连接。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息以个性化电子电路来执行计算机可读程序指令,以便执行本发明的各方面。
这里参考根据本发明实施例的方法,装置(系统)和计算机程序产品的流程图图示和/或框图来描述本发明的各方面。将理解,流程图图示和/或框图中的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器来产生机器,以使得通过计算机的处理器或其它可编程数据处理装置执行的指令创建用于实现流程图和/或一个框图块或多个框图块中所指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,该计算机可读存储介质可以指示计算机、可编程数据处理装置和/或其它设备以特定方式起作用,以使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或一个框图块或多个框图块中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机,其它可编程数据处理装置或其它设备上,以使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,这样在计算机、其它可编程装置或其它设备上执行的指令实现在流程图和/或一个框图块或多个框图块中指定的功能/动作。
附图中的流程图和框图示出根据本发明的各种实施例的系统,方法和计算机程序产品的可能实施方式的架构、功能和操作。在这方面,流程图或框图中的每个框可以表示模块、段或指令的一部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中提到的功能可以不按图中所示的顺序发生。例如,相继示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行特定功能或动作,或执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
已经出于说明的目的给出了对本发明的各种实施例的描述,但是并不旨在穷举或受限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。选择这里使用的术语是为了最好地解释实施例的原理,对市场中发现的技术的实际应用或技术改进,或者为了使其他本领域普通技术人员能够理解本文公开的实施例。
Claims (20)
1.一种用于涉及熵编码的系统级测试的计算机实现的方法,包括:
接收包括输入符号和对应于每个输入符号的唯一码字的符号转换表STT,所述码字中的至少两个具有不同长度;
接收熵编码描述符EED,所述熵编码描述符EED指定针对所述不同长度中的每个长度有多少所述码字;
修改所述STT和所述EED中的一者或二者的内容以生成测试用例;
执行熵编码测试,所述执行包括:
基于所述熵编码测试是数据压缩测试,基于包括所述输入符号中的一个或多个输入符号的输入数据字符串的内容,以及所述STT和所述EED的内容,执行无损数据压缩处理;以及
基于所述熵编码测试是数据扩展测试,基于包括所述码字中的一个或多个码字的输入数据字符串的内容,以及所述STT和所述EED的内容,执行数据扩展处理;
将所述熵编码测试的结果与预期结果进行比较;以及
向测试者输出所述比较的结果。
2.根据权利要求1所述的方法,其中,所述STT和所述EED描述霍夫曼树。
3.根据权利要求2的方法,还包括:
生成所述霍夫曼树;以及
基于所述霍夫曼树生成所述STT和所述EED。
4.根据权利要求1所述的方法,其中,所述修改内容包括将所述EED中指定的不同长度中的一个与所述EED指定的不同长度中的另一个进行交换。
5.根据权利要求1所述的方法,其中,所述修改内容包括更新所述STT以包括对应于单个输入符号的两个码字。
6.根据权利要求1所述的方法,其中,所述修改内容包括更新所述STT以包括对应于相同码字的两个输入信号。
7.根据权利要求1所述的方法,其中,所述输入符号中的一个或多个输入符号对应于来自第二无损数据压缩处理的输出。
8.根据权利要求1所述的方法,其中,将来自所述数据扩展处理的输出发送到第二数据扩展处理以进一步扩展。
9.一种用于涉及熵编码的系统级测试的系统,包括:
具有计算机可读指令的存储器;和
用于执行所述计算机可读指令的处理器,所述计算机可读指令包括:
接收包括输入符号和对应于每个输入符号的唯一码字的符号转换表STT,所述码字中的至少两个具有不同长度;
接收熵编码描述符EED,所述熵编码描述符EED指定针对所述不同长度中的每个长度有多少所述码字;
修改所述STT和所述EED中的一者或二者的内容以生成测试用例;
执行熵编码测试,所述执行包括:
基于所述熵编码测试是数据压缩测试,基于包括所述输入符号中的一个或多个输入符号的输入数据字符串的内容,以及所述STT和所述EED的内容,执行无损数据压缩处理;以及
基于所述熵编码测试是数据扩展测试,基于包括所述码字中的一个或多个码字的输入数据字符串的内容,以及所述STT和所述EED的内容,执行数据扩展处理;
将所述熵编码测试的结果与预期结果进行比较;以及
向测试者输出所述比较的结果。
10.根据权利要求9所述的系统,其中,所述STT和所述EED描述霍夫曼树。
11.根据权利要求10所述的系统,其中,所述指令还包括:
生成所述霍夫曼树;以及
基于所述霍夫曼树生成所述STT和所述EED。
12.根据权利要求9所述的系统,其中,所述修改内容包括将所述EED中指定的不同长度中的一个与所述EED指定的不同长度中的另一个进行交换。
13.根据权利要求9所述的系统,其中,所述修改内容包括更新STT以包括对应于单个输入符号的两个码字。
14.根据权利要求9所述的系统,其中,所述修改内容包括更新所述STT以包括对应于相同码字的两个输入信号。
15.根据权利要求9所述的系统,其中,所述输入符号中的一个或多个输入符号对应于来自第二无损数据压缩处理的输出。
16.根据权利要求9所述的系统,其中,来自所述数据扩展处理的输出被发送到第二数据扩展处理以进一步扩展。
17.一种用于涉及熵编码的系统级测试的计算机可读存储介质,所述计算机可读存储介质具有与其一起实现的程序指令,所述程序指令可由处理电路执行以使得所述处理电路执行:
接收包括输入符号和对应于每个输入符号的唯一码字的符号转换表STT,所述码字中的至少两个具有不同长度;
接收熵编码描述符EED,所述熵编码描述符EED指定针对所述不同长度中的每个长度有多少码字;
修改所述STT和所述EED中的一者或二者的内容以生成测试用例;
执行熵编码测试,所述执行包括:
基于所述熵编码测试是数据压缩测试,基于包括所述输入符号中的一个或多个输入符号的输入数据字符串的内容,以及所述STT和所述EED的内容,执行无损数据压缩处理;以及
基于所述熵编码测试是数据扩展测试,基于包括所述码字中的一个或多个码字的输入数据字符串的内容,以及所述STT和所述EED的内容,执行数据扩展处理;
将所述熵编码测试的结果与预期结果进行比较;以及
向测试者输出所述比较的结果。
18.根据权利要求17所述的计算机可读存储介质,其中,所述STT和所述EED描述霍夫曼树。
19.根据权利要求18所述的计算机可读存储介质,其中,所述程序指令还可由处理电路执行以使所述处理电路执行:
生成所述霍夫曼树;以及
基于所述霍夫曼树生成所述STT和所述EED。
20.根据权利要求17所述的计算机可读存储介质,其中,所述输入符号中的一个或多个输入符号对应于来自第二无损数据压缩处理的输出。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/273,806 US9673836B1 (en) | 2016-09-23 | 2016-09-23 | System level testing of entropy encoding |
US15/273,806 | 2016-09-23 | ||
PCT/EP2017/074225 WO2018055160A1 (en) | 2016-09-23 | 2017-09-25 | System level testing of entropy encoding |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109690957A CN109690957A (zh) | 2019-04-26 |
CN109690957B true CN109690957B (zh) | 2023-04-28 |
Family
ID=58778593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780056171.8A Active CN109690957B (zh) | 2016-09-23 | 2017-09-25 | 熵编码的系统级测试 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9673836B1 (zh) |
JP (1) | JP6990881B2 (zh) |
CN (1) | CN109690957B (zh) |
GB (1) | GB2569067B (zh) |
TW (1) | TWI643061B (zh) |
WO (1) | WO2018055160A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11483009B2 (en) * | 2019-05-08 | 2022-10-25 | Intel Corporation | Self-checking compression |
CN113660527A (zh) * | 2021-07-19 | 2021-11-16 | 广州紫为云科技有限公司 | 一种基于边缘计算的实时交互体感方法、系统及介质 |
CN116521093B (zh) * | 2023-07-03 | 2023-09-15 | 漳州科恒信息科技有限公司 | 一种智慧社区人脸数据存储方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6404931B1 (en) * | 1998-12-14 | 2002-06-11 | Microsoft Corporation | Code book construction for variable to variable length entropy encoding |
US7652599B1 (en) * | 2008-08-27 | 2010-01-26 | Xerox Corporation | Range normalization for entropy reduction arithmetic encoding/decoding |
US7990297B1 (en) * | 2010-02-26 | 2011-08-02 | Research In Motion Limited | Encoding and decoding methods and devices employing dual codesets |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5471207A (en) * | 1994-02-23 | 1995-11-28 | Ricoh Company Ltd. | Compression of palettized images and binarization for bitwise coding of M-ary alphabets therefor |
JP2001136075A (ja) | 1999-11-05 | 2001-05-18 | Fujitsu Ltd | データ圧縮/復元装置及びデータ圧縮/復元プログラムを記録した記憶媒体 |
JP3580251B2 (ja) | 2000-12-27 | 2004-10-20 | 日本電気株式会社 | データ圧縮装置及び圧縮方法並びにその制御プログラムを記録した記録媒体 |
JP2003087798A (ja) | 2001-09-13 | 2003-03-20 | Canon Inc | 動画像圧縮装置及び方法 |
US7436329B2 (en) * | 2003-04-17 | 2008-10-14 | Droplet Technology, Inc. | Multiple technique entropy coding system and method |
US7415162B2 (en) * | 2003-05-27 | 2008-08-19 | Zaxel Systems, Inc. | Method and apparatus for lossless data transformation with preprocessing by adaptive compression, multidimensional prediction, multi-symbol decoding enhancement enhancements |
US6919826B1 (en) | 2003-12-19 | 2005-07-19 | Sun Microsystems, Inc. | Systems and methods for efficient and compact encoding |
EP1836858A1 (en) * | 2005-01-14 | 2007-09-26 | Sungkyunkwan University | Methods of and apparatuses for adaptive entropy encoding and adaptive entropy decoding for scalable video encoding |
US7864086B2 (en) * | 2008-10-06 | 2011-01-04 | Donald Martin Monro | Mode switched adaptive combinatorial coding/decoding for electrical computers and digital data processing systems |
US8356060B2 (en) | 2009-04-30 | 2013-01-15 | Oracle International Corporation | Compression analyzer |
WO2012173315A1 (ko) * | 2011-06-17 | 2012-12-20 | 엘지전자 주식회사 | 인트라 예측 모드 부호화/복호화 방법 및 장치 |
US8610606B2 (en) | 2011-11-24 | 2013-12-17 | International Business Machines Corporation | Compression algorithm incorporating dynamic selection of a predefined huffman dictionary |
US9729884B2 (en) * | 2012-01-18 | 2017-08-08 | Lg Electronics Inc. | Method and device for entropy coding/decoding |
US8754792B2 (en) * | 2012-07-14 | 2014-06-17 | Sigma Designs, Inc. | System and method for fixed rate entropy coded scalar quantization |
JP6191173B2 (ja) | 2013-03-13 | 2017-09-06 | 株式会社リコー | 画像処理装置、方法及びプログラム |
-
2016
- 2016-09-23 US US15/273,806 patent/US9673836B1/en active Active
-
2017
- 2017-09-25 WO PCT/EP2017/074225 patent/WO2018055160A1/en active Application Filing
- 2017-09-25 JP JP2019513059A patent/JP6990881B2/ja active Active
- 2017-09-25 GB GB1904378.5A patent/GB2569067B/en active Active
- 2017-09-25 CN CN201780056171.8A patent/CN109690957B/zh active Active
- 2017-09-25 TW TW106132849A patent/TWI643061B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6404931B1 (en) * | 1998-12-14 | 2002-06-11 | Microsoft Corporation | Code book construction for variable to variable length entropy encoding |
US7652599B1 (en) * | 2008-08-27 | 2010-01-26 | Xerox Corporation | Range normalization for entropy reduction arithmetic encoding/decoding |
US7990297B1 (en) * | 2010-02-26 | 2011-08-02 | Research In Motion Limited | Encoding and decoding methods and devices employing dual codesets |
Non-Patent Citations (2)
Title |
---|
A data compression technique based on reversed leading bits coding and Huffman coding;Haoqi Ren;《2015 10th International Conference on Communications and Networking in China (ChinaCom)》;20150817;437-441 * |
通过哈夫曼编码实现文件的压缩与解压;王防修;《武汉工业学院学报》;20081231;46-49 * |
Also Published As
Publication number | Publication date |
---|---|
TW201816610A (zh) | 2018-05-01 |
WO2018055160A1 (en) | 2018-03-29 |
GB2569067B (en) | 2022-04-27 |
GB2569067A (en) | 2019-06-05 |
US9673836B1 (en) | 2017-06-06 |
JP6990881B2 (ja) | 2022-01-12 |
JP2019534602A (ja) | 2019-11-28 |
TWI643061B (zh) | 2018-12-01 |
GB201904378D0 (en) | 2019-05-15 |
CN109690957A (zh) | 2019-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9223765B1 (en) | Encoding and decoding data using context model grouping | |
US9454552B2 (en) | Entropy coding and decoding using polar codes | |
US11483009B2 (en) | Self-checking compression | |
JP6381546B2 (ja) | 多バイト・フレームのパイプライン化圧縮のための方法、符号化データ・ストリームへの高帯域圧縮のための装置、およびコンピュータ・プログラム製品 | |
US10735025B2 (en) | Use of data prefixes to increase compression ratios | |
CN109690957B (zh) | 熵编码的系统级测试 | |
JP2021527376A (ja) | データ圧縮 | |
JP7425526B2 (ja) | 動的ハフマン表生成のためのハードウェア領域を節約するためのラッチカウントの削減 | |
US20140232574A1 (en) | System, method and non-transitory computer readable medium for compressing genetic information | |
WO2021130754A1 (en) | Systems and methods of data compression | |
US11606103B2 (en) | Data compression method, data compression device, data decompression method, and data decompression device | |
JP2016052046A (ja) | 圧縮装置、伸長装置およびストレージ装置 | |
Yang et al. | Efficient universal lossless data compression algorithms based on a greedy sequential grammar transform. 2. With context models | |
US10506388B1 (en) | Efficient short message compression | |
JP2016170750A (ja) | データ管理プログラム、情報処理装置およびデータ管理方法 | |
US10623016B2 (en) | Accelerated compression/decompression including predefined dictionary | |
US10585626B2 (en) | Management of non-universal and universal encoders | |
US11853262B2 (en) | System and method for computer data type identification | |
US12099475B2 (en) | System and method for random-access manipulation of compacted data files | |
JP2023132713A (ja) | データ伸張装置、メモリシステム、およびデータ伸張方法 | |
Pannirselvam et al. | A Comparative Analysis on Different Techniques in Text Compression | |
Manasa et al. | Efficient Method for Backup and Restore of Data using Compression Techniques | |
Nadarajan et al. | Analysis of string matching compression algorithms | |
Choe | Data Compression |
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 |