CN110073604B - 数据解压缩器以及用于解压缩数据的集成电路和方法 - Google Patents
数据解压缩器以及用于解压缩数据的集成电路和方法 Download PDFInfo
- Publication number
- CN110073604B CN110073604B CN201780076555.6A CN201780076555A CN110073604B CN 110073604 B CN110073604 B CN 110073604B CN 201780076555 A CN201780076555 A CN 201780076555A CN 110073604 B CN110073604 B CN 110073604B
- Authority
- CN
- China
- Prior art keywords
- symbol
- valid
- data
- decoder
- variable length
- 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
- 238000000034 method Methods 0.000 title claims description 26
- 238000013144 data compression Methods 0.000 abstract description 3
- 238000004364 calculation method Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 20
- 238000012545 processing Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 10
- 238000007906 compression Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 7
- 230000015654 memory Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000011960 computer-aided design Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
-
- 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
- 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/6005—Decoder aspects
-
- 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/6011—Encoder aspects
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6023—Parallelization
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
在一些数据压缩算法和/或标准中,经压缩数据包括可变长度码元。一组并行解码器推测性地解码/解压缩数据窗(即,子块)。每一个解码器尝试解码/解压缩起始于经压缩数据块中的不同位置处的码元。一旦解码器已经完成对码元进行解码(或确定了有效码元不在被指派给该解码器的窗的起始处起始),则码元划幅器选择对应于有效码元的解码器输出。码元划幅器基于被发现是有效的先前码元的大小来相继地选择解码器输出。当下一个有效码元起始于当前窗的外部时,其位置被储存以指示下一个有效码元在后续窗口中的位置。
Description
技术领域
本申请涉及解压缩数据。
背景技术
在许多数据压缩算法和/或标准中,数据被编码成可变长度码元。这些码元可以是霍夫曼编码的码元和可变长度原始字段的混合。霍夫曼编码的码元和原始字段两者都可以是可变长度的。另外,霍夫曼编码的码元可以来自不止一种霍夫曼树结构。这些码元的可变长度可以使并行解码操作难以高效地执行。
发明内容
本文中所讨论的示例涉及一种数据解压缩器,该数据解压缩器包括经压缩数据提供器,该经压缩数据提供器将来自经压缩数据块的第一组不同的毗连数据窗提供给多个码元解码器的每一者。该多个码元解码器各自并发地尝试完全地解码相应可变长度码元,该相应可变长度码元起始于被提供给该码元解码器的毗连窗的相应起始位置处。该多个码元解码器包括第一码元解码器,该第一码元解码器接收来自第一组不同的窗的第一数据窗。该第一窗具有与第一可变长度有效码元的开头相对应的起始。第一码元解码器完全地解码第一可变长度有效码元,并且还确定第一可变长度有效码元的第一长度。该多个码元解码器还包括接收第二数据窗的第二码元解码器。该第二窗具有与第二可变长度有效码元的开头相对应的起始。第二码元解码器的输出基于第一长度而被选择作为数据解压缩器的输出。
在另一示例中,用于解压缩数据的集成电路包括彼此并发地操作的多个码元解码器的第一码元解码器。第一码元解码器用于从数据提供器接收来自经压缩数据块的第一数据窗。该第一数据窗对应于第一有效码元的开头。第一码元解码器用于完全地解码第一有效码元并且还确定第一有效码元的长度。该多个码元解码器的第二码元解码器从数据提供器接收来自经压缩数据块的第二数据窗。该第二数据窗对应于第二有效码元的开头。第二码元解码器完全地解码第二有效码元并且还确定第二有效码元的长度。该多个码元解码器的第三码元解码器从数据提供器接收来自经压缩数据块的第三数据窗。该第三数据窗对应于一明显有效的码元的开头。第三码元解码器完全地解码该明显有效的码元并且还确定该明显有效的码元的长度。第三数据窗位于经压缩数据块中的第一数据窗和第二数据窗之间。码元选择器基于第一码元的长度来选择第二码元作为有效码元。
在另一示例中,一种解压缩数据的方法包括为多个码元解码器提供来自经压缩数据块的第一数据子块。每个码元解码器被提供有来自第一数据子块的一不同的毗连数据窗。该多个码元解码器包括接收第一毗连数据窗的第一码元解码器。第一窗的起始对应于第一可变长度有效码元的开头。该多个码元解码器还包括接收第二毗连数据窗的第二码元解码器。第二窗的起始对应于数据子块中的第二可变长度有效码元的开头。该多个码元解码器的每一者并行地并且从被提供给该码元解码器的相应数据窗解码相应可变长度码元,并且还确定被解码的可变长度码元的比特长度。第一码元解码器解码第一可变长度有效码元。第二码元解码器解码第二可变长度有效码元。基于来自第一码元解码器的第一可变长度有效码元的比特长度,确定由第二码元解码器解码的可变长度码元是有效码元。基于第一可变长度有效码元的比特长度和第二可变长度有效码元的比特长度,第三码元解码器被选择,该第三码元解码器将被提供有来自经压缩数据块的第二数据子块的第三数据窗。第三数据窗的起始对应于第三可变长度有效码元的开头。
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的概念的选集。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,亦非旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任一部分中提及的任何或所有缺点的实现。
附图说明
为了描述可以获得以上所列举的及其他优点和特征的方式,提出了更具体的描述并且将通过参考在附图中解说的其具体示例来呈现。可以理解这些附图只描绘了典型的示例,并因此不应被视为是对其范围的限制,将通过使用附图以附加的特征和细节来描述和解释各实现。
图1是解说经压缩数据解码器集成电路的框图。
图2是解说解码器通道的框图。
图3是解说可变长度码元解码器的框图。
图4是解说码元分类器的框图。
图5是解说绝对结尾地址的预计算块的框图。
图6是解说相对结尾地址的预计算块的框图。
图7是解说有效通道选择器的框图。
图8是解说码元划幅器(strider)的框图。
图9是解说用于码元划幅器的反馈路径的框图。
图10是解说解压缩数据的方法的流程图。
图11是计算机系统的框图。
具体实施方式
下面详细讨论各示例。尽管讨论了具体实现,但应当理解,这仅仅是出于解说目的而完成的。相关领域的技术人员将认识到,可以在不偏离本公开的主题的精神和范围的情况下使用其他组件和配置。各实现可以是机器实现的方法、计算设备或集成电路。
在一些数据压缩算法和/或标准中,经压缩数据包括可变长度码元。换言之,经压缩数据流中下一个码元的起始位置是未知的,直到当前码元被完全地解码。这可能使得难以高效地并行化解压缩数据所需的操作。在一实施例中,一组并行解码器推测性地解码/解压缩数据窗(即,子块)。每一个解码器尝试解码/解压缩起始于经压缩数据块中的不同位置处的码元。一旦解码器已经完成对码元的解码(或确定了有效码元不在被指派给该解码器的窗的起始处起始),则码元划幅器选择对应于有效码元的解码器输出。码元划幅器基于被发现是有效的先前码元的大小来相继地选择解码器输出。当下一个有效码元起始于当前窗的外部时,其位置被储存以指示下一个有效码元在后续窗中的位置。
图1是解说经压缩数据解码器集成电路的框图。在图1中,解码器集成电路100包括比特馈送器先进先出(BFF)110、解码通道120a-120c、码元分类器130、码元收集器140、码元打包器150、设置160、以及霍夫曼表165。比特馈送器110将来自传入的经压缩比特流的经压缩数据窗提供给解码通道120a-120c。比特馈送器110将固定数量的比特(图1中的S个比特)提供给N个解码通道120a-120c的每一者。通常,S大于N。被提供给解码通道120a-120c的每一者比特数(S)可以被选择,使得对于特定压缩方案,S等于或超过由该压缩算法使用的最长经编码码元中所使用的比特数。
解码通道120a-120c每个都被耦合到输入比特流中的一不同的起始位置。这些起始位置对应于BFF 110所输出的固定比特数的码字的每个可能的起始位置。该固定比特数对应于解码通道的数量N。换言之,解码通道0 120a从BFF 110接收比特0到S-1;解码通道1120b接收比特1到S,解码通道3接收比特2到S+1,且依此类推,其中解码通道N-1接收比特N-1到S+N-2。解码通道120a-120c的每一者在输入数据流上的一不同比特位置处开始。因而,解码通道120a-120c的每一者从BFF 110接收唯一(但交叠)的S个比特(又被称为子块)。解码通道120a-120c各自完全地解码在该相应解码通道120a-120c所接收的比特的开头处开始的码字。
换言之,集成电路100使用解码通道120a-120c来并行或并发地执行覆盖码字的每个可能的起始比特位置的N个解码,并且还确定哪个解码看起来是有效的(即,接收到具有一起始比特位置的数据子块,当该数据子块被解码时导致有效解码。)因而,多个解码通道可以在迭代中解码多个码字。
解码通道的输出可以包括长度(或大小)字段和有效指示符。大小字段指示被解码了的码字的大小。有效指示符对应于有效编码是否已被解码。换言之,有效指示符指示该解码通道120a-120c的输出(经解码的码字和对应大小)是否(尚未)已知为无效的。经解码的码元、码元长度字段、以及有效指示符由每个相应的解码通道120-120c提供给码元分类器130。
解码通道120a-120c从设置160接收配置信息。例如,设置160可以确定正被解码的压缩方案(例如,GZIP、DEFLATE、XPRESS9等)。解码通道120a-120c还接收霍夫曼表信息(例如,一个或多个霍夫曼编码树的表示),其允许解码通道120a-120c根据所选择的压缩方案进行解码。
码元分类器130从解码通道120a-120c的每一者接收经解码的码元、码元大小、以及有效指示符。码元分类器130从解码通道120a-120c所提供的经解码的码元集中选择有效的经解码码元。码元分类器130使用来自已被确定为有效的在前码元的码元大小来选择有效的经解码码元。这些码元大小确定(下一个)有效码元的位置。换言之,在前码元大小确定下一个有效码元在比特流中的何处开始。因而,在前码元大小确定哪个解码通道120a-120c解码了下一个有效码元。由于其位置而没有解析有效码元的任何中间解码通道120-120c可以被忽略,即使经解码的码元看起来是有效的。
码元分类器130可以被配置成找到并输出多个(例如,多达Y个)解码通道120a-120c标识符,这些标识符每周期地解码了有效码元。该多达Y个的解码通道120a-120c标识符被提供给码元收集器140。码元收集器140使用这些解码通道120a-120c标识符来选择(例如,使用复用器)要被提供给码元打包器150的码元。码元打包器150整合现在已知的有效码元,以供高效地传输到下游功能单元。换言之,下游功能单元将通常被设计为每次迭代接受固定数量的码元,而码元分类器可以在每次迭代时解析可变数量的有效码元。码元打包器150收集可变数量的有效码元并且将它们重新打包到固定的输出总线中。例如,码元分类器可以每次迭代解析0-7个码元,并且下游单元被设计成每次迭代接受4个码元。在该示例中,如果分类器在一次迭代中找到7个有效码元,并且在下一次迭代中找到1个有效码元,则打包器产生2次迭代,每次迭代有4个码元。
图2是解说解码器通道的框图。在图2中,解码器通道220包括第一码元解码器221、第一码元解释器222、第二码元解码器223、第二码元解释器224、以及额外偏移225。设置260确定解码器通道220的操作的各个方面。设置260确定诸如正被解码的编码的类型、由码元解码器221和223处理的比特数等各个方面。第一码元解码器221被提供有和/或储存被用来对码元进行解码的第一霍夫曼表266。任选的第二码元解码器223可以被提供有和/或储存第二霍夫曼表267,该第二霍夫曼表267被用来对未由第一码元解码器221解码的码元进行解码。因而,由使用不止一个霍夫曼树的压缩方案创建的码元可以由(诸)解码器通道220解码。应当理解,可以包括附加解码器(例如,第三、第四等),以便解码使用不止两个霍夫曼树的压缩方案。
在图2中,第一码元解码器接收Q个比特。在一实施例中,Q被选择为在第一霍夫曼表266中解码码元所需的最大比特数。在解码之后,第一码元解码器221向第一码元解释222提供P个比特。第一码元解释222还接收被提供给第一码元解码器221的Q个比特。第一码元解释222向第二码元解码器223提供任何经解码的第一码元(例如,字面值和/或指针)和/或更多比特是解码当前码元所必需的指示符。因而,第一码元解码器221和第一码元解释222用作覆盖Q个输入位的第一级表。如果当前码元是Q比特或更少比特,则第一码元解释222将指示经解码的码元值。否则,第一码元解释222将向第二码元解码器223和第二码元解释224指示尝试解码更长的编码。
第二码元解码器223、第二码元解释224、以及额外偏移225解码和/或使用来自输入流的附加比特来解码码元的其余部分。来自额外偏移225的输出是一个经完全解码的码元以及被输入到解码器通道220的经编码码元的码元长度,该解码器通道220产生了该经完全解码的码元。
图3是解说可变长度码元解码器的框图。在图3中,码元解码器321包括比较器310a-310e、优先级编码器315、起始地址查找表361、基本码查找表362、码元比特选择335、加法器336、加法器337、以及码元查找表363。码元解码器321可以是第一码元解码器221和/或第二码元解码器223的示例。码元解码器321可以被设定大小以解码来自任何范式霍夫曼编码树的码元。所得到的经解码码元可接着被映射到给定压缩标准中的码元。基本码查找表362使每个经编码的比特长度与具有该相应比特长度的第一(例如,最低数值的值)经编码码元相关。起始地址查找表361是由存储元素组成的表,该表使给定大小(例如,比特长度)的码元与码元查找表363中具有该大小的经编码码元的起始位置相关。换言之,起始地址查找表361将经编码码元值的相应比特长度与码元查找表363中具有带有该相应比特长度的经编码码元的第一位置相关联。码元查找表363是由使索引值与相应经解码码元相关的存储元素组成的表。
比较器310a-310e各自提供有唯一数量的输入位。换言之,比较器310a被提供有最低有效输入位;比较器310b被提供有两个最低的有效输入位;比较器310c被提供有三个最低的有效位,比较器310d被提供有四个最低的有效位,且依此类推,其中比较器310e被提供有Q个输入位。
比较器310a-310e的每一者将被提供给它的输入位与对应长度的第一经编码码元进行比较。换言之,比较器310a将最低有效输入位与具有一个比特的经编码码元(如果有的话)进行比较;比较器310b将两个最低的有效输入位与具有两个比特的第一(即,最低值的)经编码码元(如果有的话)进行比较;比较器310c将三个最低的有效位与具有三个比特的第一(即,最低值的)经编码码元(如果有的话)进行比较,且依此类推,其中比较器310e将Q个输入位与具有Q个比特的第一(即,最低值的)经编码码元(如果有的话)进行比较。比较器310a-310e的输出被提供给优先级编码器315。
优先级编码器315使用比较器310a-310e的输出来确定输入比特流中的经编码码元的长度。优先级编码器315通过检查比较器310a-310e的输出以获得小于对应输入位的最小的(即,长度上最短和霍夫曼树层级最低的)经编码码元来找到经编码码元的长度。换言之,如果输入比特流以3比特经编码码元开始,则比较器310a和310b将指示输入比特流大于分别具有一个比特和两个比特的第一(即,最低值的)经编码码元(如果有的话)。然而,比较器310c将指示输入比特流大于具有三个比特的第一(即,最低值的)经编码码元(如果有的话),从而指示第一经编码码元具有三个比特。由优先级编码315找到的码元长度可以由码元解码器321输出。
由优先级编码315找到的码元长度还被提供给起始地址查找表361、基本码查找表362、以及选择码元比特335。起始地址查找表361接收由优先级编码器315找到的码元长度。起始地址查找表361是由提供到码元查找表363中的基本指针的码元长度索引的表。基本码查找表362也由码元长度索引。基本码查找表362提供对应经编码长度的第一(即,最低值的)经编码码元。选择码元比特335输出来自输入流的与对应长度的经编码码元相对应的对应比特。例如,如果优先级编码器315发现输入流起始于3比特经编码码元,则选择码元比特335将从输入流输出前三个比特(即,经编码码元)。
由选择码元比特335输出的来自输入流的经编码码元被提供给加法器336。由基本码查找表362输出的对应长度的基本码被从来自输入流的经编码码元中减去。这提供了关于所指出的长度的哪个经编码码元对应于来自输入流的经编码码元的指示符。加法器336的输出被提供给加法器337。加法器337从起始地址查找表361接收与码元查找表表363中的其中对应于经编码码元长度的经解码码元开始的位置相对应的值。加法器337的输出被提供为给码元查找表363的索引。码元查找表363的输出是经完全解码的码元。
图4是解说码元分类器的框图。在图4中,码元分类器430包括码元结尾计算431、有效码元结尾选择器435、有效码元选择490、设置260、以及块结尾检查471。码元结尾计算431从每个解码器通道(例如,解码器通道120a-120c)接收由每个相应解码器通道找到的码元的长度421a-421c。码元结尾计算431还接收输入比特流中被提供给第一(例如,解码通道120a)解码器通道的最低有效位的地址(即,位置)。换言之,对应于图1中的比特S[0]的位置的通道0起始地址425被提供给码元结尾计算431。码元结尾计算431向有效码元结尾选择器435输出每个候选码元的结尾位置。候选码元的每一者的结尾位置可以被表示为相对(即,解码通道编号)和/或绝对地址(即,被表示为在正被解码的完整数据块中的定位/位置的位置)。
有效码元结尾选择器435从经编码码元的每一者的结尾位置确定哪些结尾位置对应于有效码元的结尾。应当注意,有效码元的结尾位置因此还指示比特流中的下一个比特是下一个有效码元的开头。有效码元结尾选择器435迭代地输出其已确定了的有效码元的位置。
例如,如果解码器通道0指示其找到了具有两位比特长度的码元,解码器通道1指示其已经找到长度四个比特的码元,解码器通道2指示其找到了长度八个比特的码元,并且解码器通道3指示其找到了长度三个比特的码元,则有效码元结尾选择器435将首先输出解码通道2(通道0位置加上第一有效码元的大小-其为2比特)对下一个有效码元进行了解码的指示符。有效码元结尾选择器435将接着输出解码通道2解码了被通道10(通道2位置加上第二有效码元的大小(其为8比特))解码的下一个有效码元的指示符,且依此类推。需要注意,在该示例中,通道1的输出被忽略。
有效码元结尾选择器435重复输出下一个有效码元的位置,直到找到在当前正由解码通道解码的数据子块外部的位置。当这发生时,一组新的输入流被提供给解码通道120a-120c,新的通道0起始地址425被计算,并且将产生下一个有效码元的解码通道120a-120c被确定。
有效码元结尾选择器435迭代地输出的有效码元的位置还被提供给有效码元选择器490和块结尾(EOB)检查471。块结尾检查471可以确定经压缩数据块的结尾何时已被完全解码。块结尾检查471被配置成确定经压缩数据块的结尾何时已由设置260完全解码。例如,块结尾检查471可以被配置成确定何时基于来自有效码元选择490的输出(例如,块结尾码元被输出)或者有效码元结尾位置何时与块的已知结尾位置相匹配。
有效码元选择器490接收由解码通道120a-120c找到的码元422a-422c。需要注意,这些码元422a-422c具有分别对应于码元长度421a-421c的大小。使用有效码元结尾选择器435迭代地输出的结尾/起始位置,有效码元选择器490输出已由解码通道120a-120c输出的有效码元,并且忽略由解码通道120a-120c输出的无效码元。
图5是解说绝对结尾地址的预计算块的框图。绝对结尾预计算533可以是码元结尾计算431的一部分。预计算533包括结尾地址计算块532a-532c。对于每个解码通道(120a-120c),由该解码通道找到的码元长度由相应结尾地址计算块532a-532c添加到通道0起始地址425和对应于该解码通道的索引值以产生结尾地址,其被表示为由该解码通道找到的码元在正被解码的完整数据块中的定位/位置。索引值表示相应通道的起始比特位置偏离通道0的起始地址的比特数。换言之,解码通道0的索引值为零(0),解码通道1的索引值为1,且依此类推。因而,预计算533推测性地计算由解码通道120a-120c找到的码元的结尾地址,而不管相应解码通道120a-120c是否已找到有效码元。
图6是解说相对结尾地址的预计算块的框图。相对结尾预计算634可以是码元结尾计算431的一部分。预计算634包括解码通道编号计算块532a-532c。对于每个解码通道(120a-120c),由该解码通道找到的码元长度由相应通道编号计算块632a-632c添加到与该解码通道相对应的索引值,以产生具有下一个有效码元的解码通道编号。索引值表示相应通道的起始比特位置偏离通道0的起始地址的比特数。换言之,解码通道0的索引值为零(0),解码通道1的索引值为1,且依此类推。因而,如果相应解码通道具有有效码元,则预计算634推测性地计算哪个通道将具有由解码通道120a-120c找到的下一个有效码元。预计算634做出这些计算,而不管相应解码通道120a-120c结果是否已找到有效码元。
图7是解说有效通道选择器的框图。通道选择器735可以是有效码元结尾选择器435的一部分。通道选择器735输出多达Y个通道指示符。这些指示符对应于具有经解码有效码元的解码通道120a-102c。通道编号复用器(MUX)736a-736c从例如相对结尾预计算634接收经预先计算的通道编号值。通道编号MUX 736a接收下一个通道编号值,并且选择对应的经预先计算的通道编号以当作已解码了有效码元的解码通道编号进行输出。在输出多达Y个通道指示符的每次迭代时,MUX 736a接收的下一个通道编号值由最后一个解码通道120a-120c在寻找有效码元的最后一次迭代中所找到的码元的码元长度来确定。因而,在每次迭代时,MUX 736a通过反馈回路接收下一个有效通道编号,该反馈回路解析下一个有效码元在子块中的位置。应当理解,下一个有效码元位置并不总是来自第Y个复用器(736c)。其可以来自MUX 736a-736c中的任一者。
对于每次迭代,如果在从解码通道输出的当前数据集中存在有效码元,则由MUX736a输出的值对应于已解码了下一个有效码元的通道编号。该值被提供给MUX 736b,以选择下一个对应的经预先计算的通道编号以当作已解码了有效码元的解码通道编号进行输出(如果下一个有效码元在当前窗中的话)。针对每次迭代的Y个MUX,重复对下一个有效通道编号的这种链式选择以及接着将下一个有效通道编号用于选择随后的有效通道编号的使用。由通道选择器735输出的有效通道编号(即,对应于已解码了有效码元的解码通道120a-120c的通道编号)可以被提供给有效码元选择器490。当下一个有效码元对应于没有被解码通道120a-120c解码的位置时,下一组通道输出是无效的。例如,如果存在32个解码通道120a-120c,并且这些解码通道120a-120c之一找到一个80比特码元,则下一组通道输出(下一次迭代)都是无效的。
图8是解说码元划幅器的框图。码元划幅器890包括地址MUX 891、当前结尾地址寄存器892、起始通道计算893、窗内检查894、以及有效通道迭代器895。有效通道迭代器895可包括通道选择器735。有效通道迭代器895相继地输出(即,针对每次迭代)与已解码了有效码元的下一个解码通道120a-120c相对应的通道号编号值(需要注意:每次迭代不一定是单个时钟周期)。对于第一次迭代,通道编号值对应于解码通道0 120a。为了输出与已解码了有效码元的下一个解码通道120a-120c相对应的通道编号值,与解码块中下一个有效码元的起始位置相对应的经预先计算的绝对结尾地址(例如,来自绝对结尾预计算533的输出)通过地址MUX 891来被选择。该位置值被储存在当前结尾地址寄存器892中,被任选地提供给BFF 110,并且被提供给起始通道计算893。起始通道计算893确定与通道选择器735进行的下一次迭代的起始通道相对应的通道编号。起始通道计算893还将该值提供给窗内检查894。窗内检查894确定比特流中的下一个起始位置是否是在被提供给解码通道120a-120c的比特范围内的位置。如果起始位置在由解码通道120a-120c处理的比特范围内,则从解码通道120a-120c选择有效码元的另一次迭代可以进行。如果起始位置不在由解码通道120a-120c处理的比特范围内,则从解码器通道中馈送另一组候选码元。
图9是解说用于码元划幅器的反馈路径的框图。给定的通道编号MUX 736x(其是通道编号复用器MUX 736a-736c之一)接收已解码了下一个有效码元的解码通道120a-120c的指示符。该有效通道编号被要么接收自先前的迭代要么接收自起始通道计算893。基于该通道编号,通道编号MUX 736x向地址MUX 891提供当前(窗内)通道编号,该地址MUX 891接着选择给当前结尾地址寄存器892的该码元结尾的对应的经预先计算的位置。基于该地址,下一个起始通道被计算。下一个起始通道还被检查以确定下一个起始通道是否在由解码通道120a-120c处理的比特范围内。如果起始位置在由解码通道120a-120c处理的比特范围内,则从解码通道120a-120c选择有效码元的另一次迭代可以进行。如果起始位置不在由解码通道120a-120c处理的比特范围内,则另一组比特需要被提供给解码通道120a-120c并且在另一经解码的码元可被输出之前由解码通道120a-120c解码。
相应地,将从图9中理解,在解码码元可以由解码器100输出之前,图9中所解说的反馈回路需要被完成。然而,在一实施例中,通过预计算由解码通道120a-120c找到的码元的相对端(即,解码通道编号),并且预计算由解码通道120a-120c找到的码元的绝对结尾地址,该反馈回路被简化为相对快速操作的MUX(即,MUX 736x和地址MUX 891)和小(例如,log2[N])比特数加法器(即,起始通道计算893)。
图10是解说解压缩数据的方法的流程图。图10中所解说的步骤可以例如通过解码器集成电路100的一个或多个元素来被执行。多个码元解码器被提供有来自经压缩数据块的第一数据子块,其中每个码元解码器被提供有一不同的毗连数据窗(1002)。例如,可以通过比特馈送器FIFO 110向解码通道120a-120c提供经压缩数据窗,如本文中所描述。
第一码元解码器被提供有第一毗连数据窗,其中该第一窗的起始对应于第一可变长度有效码元的开头。例如,解码通道120a可被提供有数据窗,该数据窗由已知以有效编码的码元开始的S个比特组成。该数据窗可被已知以有效编码的码元开始,因为其位于经编码数据的起始处和/或基于已经被解码了的经编码码元的结束位置而被已知以有效码元开始。
第二码元解码器被提供有第二毗连数据窗,其中该第二窗的起始对应于第二可变长度有效码元的开头(1006)。例如,解码通道120c可以被提供有由已知以有效编码的码元开始的S个比特组成的数据窗,因为解码通道120c由有效通道迭代器895指示为已解码了有效码元。
相应可变长度码元被并行地并且通过多个码元解码器的每一者解码(1008)。例如,解码通道120a-120c可以与解码可变长度码元的每次尝试并行地操作。以并行方式,第一可变长度有效码元的比特长度和第二可变长度有效码元的比特长度被确定。第一可变长度码元的长度和第二可变长度码元的长度被并行地确定(1010)。例如,解码通道120a可以在解码第一可变长度码元的同时确定第一可变长度码元中的比特数。同样地,第二可变长度码元的长度可以由解码通道120c在其解码第二可变长度码元时确定。
基于第一可变长度有效码元的比特长度,确定由第二码元解码器解码了的第二可变长度码元是有效码元。例如,基于由解码通道120a解码了的第一可变长度码元的长度,有效码元迭代器895可以确定解码通道120c已经解码了有效码元。基于第一可变长度有效码元的比特长度和第二可变长度有效码元的比特长度,将被提供有来自经压缩数据块的第二数据子块的第三数据窗的第三码元解码器被确定-其中第三窗的起始对应于第三可变长度有效码元(1014)。例如,由解码器通道120a和解码器通道120c解码的码元的码元长度可被用来确定被储存在当前结尾地址寄存器892中的值的至少一部分。该值可以被提供给通道选择器735,使得当新的数据子块由解码通道120a-120c解码时,下一个有效码元由通道选择器735选择。
本文中所描述的方法、系统和设备可以在计算机系统中实现,或者由计算机系统储存。以上所描述的方法还可以被储存在非瞬态计算机可读介质上。本文中所描述的设备、电路和系统可以使用本领域中可用的计算机辅助设计工具来实现,并且由包含此类电路的软件描述的计算机可读文件来体现。这包括但不限于解码器集成电路100的一个或多个元素以及解码器集成电路100的各组件。这些软件描述可以是:行为、寄存器传输、逻辑组件、晶体管、以及布局几何级描述。
可以实现此类描述的数据格式被储存在非瞬态计算机可读介质上,包括但不限于:支持像C等行为语言的格式、支持像Verilog和VHDL等寄存器传输级(RTL)语言的格式、支持几何描述语言(诸如GDSII、GDSIII、GDSIV、CIF和MEBES)的格式,以及其他合适的格式和语言。物理文件可以被实现在非瞬态机器可读介质上,诸如:4mm磁带、11mm磁带、3-1/2英寸软盘介质、CD、DVD、硬盘驱动器、固态磁盘驱动器、固态存储器、闪存驱动器等等。
替代地或附加地,本文中所描述的功能性可以至少部分地由一个或多个硬件逻辑组件来执行。作为示例而非限制,可被使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统型系统(SOC)、复杂可编程逻辑器件(CPLD)、多核处理器、图形处理单元(GPU)。
图11是计算机系统的框图。在一实施例中,计算机系统1100和/或其组件包括实现或被用来实现附图中所解说的方法、系统和/或设备、附图的对应讨论、和/或本文中被以其他方式教导的电路、软件、和/或数据。
计算机系统1100包括通信接口1120、处理系统1130、存储系统1140、以及用户接口1160。处理系统1130被可操作地耦合到存储系统1140。存储系统1140储存软件1150和数据1170。处理系统1130被可操作地耦合到通信接口1120和用户接口1160。存储系统1140和/或通信接口1120是子系统的示例,子系统可以包括集成电路100、集成电路200、集成电路600和/或它们的组件。
计算机系统1100可以包括编程式通用计算机。计算机系统1100可包括微处理器。计算机系统1100可包括可编程或专用电路系统。计算机系统1100可以分布在一起构成元素1120-1170的多个设备、处理器、存储、和/或接口之间。
通信接口1120可以包括网络接口、调制解调器、端口、总线、链路、收发器、或其他通信设备。通信接口1120可以分布在多个通信设备之间。处理系统1130可以包括微处理器、微控制器、逻辑电路、或其他处理设备。处理系统1130可以分布在多个处理设备之间。用户接口1160可以包括键盘、鼠标、语音识别接口、话筒和扬声器、图形显示器、触摸屏、或其他类型的用户接口设备。用户接口1160可以分布在多个接口设备之间。存储系统1140可以包括磁盘、磁带、集成电路、RAM、ROM、EEPROM、闪存存储器、网络存储、服务器、或其他存储器功能。存储系统1140可以包括计算机可读介质。存储系统1140可以分布在多个存储器设备之间。
处理系统1130从存储系统1140检索并执行软件1150。处理系统1130可以检索和储存数据1170。处理系统1130还可以经由通信接口1120检索和储存数据。处理系统1150可以创建或修改软件1150或数据1170以取得有形结果。处理系统可以控制通信接口1120或用户接口1160以取得有形结果。处理系统1130可以经由通信接口1120检索并执行远程储存的软件。
软件1150和远程储存的软件可以包括操作系统、实用程序、驱动程序、联网软件,以及通常由计算机系统执行的其他软件。软件1150可以包括应用程序、小应用程序(applet)、固件,或者通常由计算机系统执行的其他形式的机器可读处理指令。当由处理系统1130执行时,软件1150或远程储存的软件可以指示计算机系统1100如本文中所描述进行操作。
本文中所讨论的诸实现包括但不限于以下示例:
示例1:一种数据解压缩器,包括:经压缩数据提供器,用于将来自经压缩数据块的第一组不同的毗连数据窗提供给多个码元解码器的每一者;该多个码元解码器各自并发地尝试完全地解码相应可变长度码元,该相应可变长度码元起始于被提供给相应码元解码器的毗连窗的相应起始位置处;该多个码元解码器包括第一码元解码器,该第一码元解码器用于接收来自第一组不同的窗的第一数据窗,该第一数据窗具有与第一可变长度有效码元的开头相对应的起始,该第一码元解码器用于完全地解码第一可变长度有效码元并且用于确定第一可变长度有效码元的第一长度;以及该多个码元解码器包括第二码元解码器,该第二码元解码器用于接收具有与第二可变长度有效码元的开头相对应的起始的第二数据窗,该第二码元解码器的输出基于第一长度而被选择作为数据解压缩器的输出。
示例2:示例1的数据解压缩器,其中第二可变长度有效码元在第一组不同的窗中。
示例3:示例1的数据解压缩器,其中第二可变长度有效码元在第二组不同的窗中。
示例4:示例3的数据解压缩器,其中第二码元解码器用于完全地解码第二可变长度有效码元,并且用于确定第二可变长度有效码元的第二长度。
示例5:示例4的数据解压缩器,其中第二组不同的窗基于第一长度而被确定为包括第二可变长度有效码元。
示例6:示例1的数据解压缩器,经压缩数据块中的其中第一可变长度有效码元起始的第一位置被与经压缩数据块中的其中第二可变长度有效码元起始的第二位置并发地计算。
示例7:示例1的数据解压缩器,其中同第一码元解码器相对应的第一指示符被与同第二码元解码器相对应的第二指示符并发地计算。
示例8:一种用于解压缩数据的集成电路,包括:用于彼此并发地操作的多个码元解码器的第一码元解码器,该第一码元解码器用于从数据提供器接收来自经压缩数据块的第一数据窗,该第一数据窗对应于第一有效码元的开头,该第一码元解码器用于完全地解码第一有效码元并且用于确定第一有效码元的长度;多个码元解码器的第二码元解码器,该第二码元解码器用于从数据提供器接收来自经压缩数据块的第二数据窗,该第二数据窗对应于第二有效码元的开头,该第二码元解码器用于完全地解码第二有效码元并且用于确定第二有效码元的长度;多个码元解码器的第三码元解码器,该第三码元解码器用于从数据提供器接收来自经压缩数据块的第三数据窗,该第三数据窗对应于一明显有效的码元的开头,该第三码元解码器用于完全地解码该明显有效的码元并且用于确定该明显有效的码元的长度,该第三数据窗包括位于经压缩数据块中的第一数据窗和第二数据窗之间的数据;以及,码元选择器,用于基于第一码元的长度来选择第二码元作为有效码元。
示例9:示例8的集成电路,其中,基于第一码元的长度,码元选择器不选择该明显有效的码元。
示例10:示例9的集成电路,其中第一码元解码器用于从数据提供器接收来自经压缩数据块的第四数据窗,该第四数据窗对应于第三有效码元的开头,该第一码元解码器用于完全地解码第三有效码元并且用于确定第三有效码元的长度。
示例11:示例10的集成电路,其中第三有效码元基于第一有效码元的长度和第二有效码元的长度来被确定为有效的。
示例12:示例11的集成电路,经压缩数据块中的其中第一可变长度有效码元起始的第一位置与以下一起被并发地计算:经压缩数据块中的其中第二可变长度有效码元起始的第二位置以及经压缩数据块中的其中第三可变长度有效码元起始的第三位置。
示例13:示例11的集成电路,其中同第一码元解码器相对应的第一指示符与以下一起被并发地计算:同第二码元解码器相对应的第二指示符以及同第三码元解码器相对应的第三指示符。
示例14:示例15的集成电路,其中以下各项被并发地计算:经压缩数据块中的其中第一可变长度有效码元起始的第一位置、经压缩数据块中的其中第二可变长度有效码元起始的第二位置、经压缩数据块中的其中第三可变长度有效码元起始的第三位置、对应于第一码元解码器的第一指示符、对应于第二码元解码器的第二指示符,以及对应于第三码元解码器的第三指示符。
示例15:一种解压缩数据的方法,包括:为多个码元解码器提供来自经压缩数据块的第一数据子块,每个码元解码器被提供有来自第一数据子块的一不同的毗连数据窗,该多个码元解码器包括接收第一毗连数据窗的第一码元解码器,该第一窗的起始对应于第一可变长度有效码元的开头,该多个码元解码器包括接收第二毗连数据窗的第二码元解码器,该第二窗的起始对应于数据子块中的第二可变长度有效码元的开头;由该多个码元解码器的每一者并行地解码相应可变长度码元,并且从被提供给相应码元解码器的相应数据窗确定相应可变长度码元的相应比特长度,第一码元解码器解码第一可变长度有效码元,第二码元解码器解码第二可变长度有效码元;基于第一可变长度有效码元的比特长度,确定由第二码元解码器解码的第二可变长度码元是有效码元;以及,基于第一可变长度有效码元的比特长度和第二可变长度有效码元的比特长度,选择第三码元解码器,该第三码元解码器将被提供有来自经压缩数据块的第二数据子块的第三数据窗,该第三数据窗的起始对应于第三可变长度有效码元的开头。
示例16:示例15的方法,进一步包括:为该多个码元解码器提供来自经压缩数据块的第二数据子块,每个码元解码器被提供有来自第二数据子块的第二相应毗连数据窗。
示例17:示例16的方法,进一步包括:由第三码元解码器从被提供给第三码元解码器的第二相应数据窗解码第三可变长度码元;以及,确定第三可变长度有效码元的相应比特长度。
示例18:示例17的方法,进一步包括:基于输出数据宽度的指示符、第一可变长度有效码元的相应比特长度、第二可变长度有效码元的相应比特长度、以及第三可变长度有效码元的相应比特长度,选择要被输出的一组经解码码元。
示例19:示例18的方法,进一步包括并发地计算以下各项:经压缩数据块中的其中第一可变长度有效码元起始的第一位置、经压缩数据块中的其中第二可变长度有效码元起始的第二位置、以及经压缩数据块中的其中第三可变长度有效码元起始的第三位置。
示例20:示例18的方法,进一步包括并发地计算以下各项:与第一码元解码器相对应的第一指示符、与第二码元解码器相对应的第二指示符、以及与第三码元解码器相对应的第三指示符。
已出于解说和描述的目的呈现了对所公开的实施例的前述描述。它们不旨在穷举所要求保护的主题或将所要求保护的主题限于所公开的(诸)精确形式,并且鉴于上述教导其他修改和变型都是可能的。选择和描述实施例是为了最好地解释所公开的实施例的原理及其实际应用,从而使得本领域的其他技术人员能够最好地利用适合于预期的特定用途的各种实施例和各种修改。所附权利要求书旨在被解释为包括除受现有技术所限的范围以外的其他替代实施例。
Claims (22)
1.一种数据解压缩器,包括:
经压缩数据提供器,用于将来自经压缩数据块的第一组不同的毗连数据窗提供给多个码元解码器中的每一个;
所述多个码元解码器各自并发地尝试完全地解码相应可变长度码元,所述相应可变长度码元起始于被提供给相应码元解码器的毗连窗的相应起始位置处;
所述多个码元解码器包括第一码元解码器,所述第一码元解码器用于接收来自所述第一组不同的窗的第一数据窗,所述第一数据窗具有与第一可变长度有效码元的开头相对应的起始,所述第一码元解码器用于完全地解码所述第一可变长度有效码元并且用于确定所述第一可变长度有效码元的第一长度;以及
所述多个码元解码器包括第二码元解码器,所述第二码元解码器用于接收具有与第二可变长度有效码元的开头相对应的起始的第二数据窗,所述第二码元解码器的输出基于所述第一长度而被选择作为所述数据解压缩器的输出。
2.根据权利要求1所述的数据解压缩器,其特征在于,所述第二可变长度有效码元在所述第一组不同的窗中。
3.根据权利要求1所述的数据解压缩器,其特征在于,所述第二可变长度有效码元在第二组不同的窗中。
4.根据权利要求3所述的数据解压缩器,其特征在于,所述第二码元解码器用于完全地解码第二可变长度有效码元,并且用于确定所述第二可变长度有效码元的第二长度。
5.根据权利要求4所述的数据解压缩器,其特征在于,所述第二组不同的窗基于所述第一长度而被确定为包括所述第二可变长度有效码元。
6.根据权利要求1所述的数据解压缩器,其特征在于,所述经压缩数据块中的其中所述第一可变长度有效码元起始的第一位置被与所述经压缩数据块中的其中所述第二可变长度有效码元起始的第二位置并发地计算。
7.根据权利要求1所述的数据解压缩器,其特征在于,同所述第一码元解码器相对应的第一指示符被与同所述第二码元解码器相对应的第二指示符并发地计算。
8.一种用于解压缩数据的集成电路,包括:
用于彼此并发地操作的多个码元解码器的第一码元解码器,所述第一码元解码器用于从数据提供器接收来自经压缩数据块的第一数据窗,所述第一数据窗对应于第一有效码元的开头,所述第一码元解码器用于完全地解码所述第一有效码元并且用于确定所述第一有效码元的长度;
所述多个码元解码器的第二码元解码器,所述第二码元解码器用于从所述数据提供器接收来自所述经压缩数据块的第二数据窗,所述第二数据窗对应于第二有效码元的开头,所述第二码元解码器用于完全地解码所述第二有效码元并且用于确定所述第二有效码元的长度;
所述多个码元解码器的第三码元解码器,所述第三码元解码器用于从所述数据提供器接收来自所述经压缩数据块的第三数据窗,所述第三数据窗对应于一明显有效的码元的开头,所述第三码元解码器用于完全地解码所述明显有效的码元并且用于确定所述明显有效的码元的长度,所述第三数据窗包括位于所述经压缩数据块中的所述第一数据窗和所述第二数据窗之间的数据;以及,
码元选择器,用于基于所述第一码元的长度来选择所述第二码元作为有效码元。
9.根据权利要求8所述的集成电路,其特征在于,基于所述第一码元的长度,所述码元选择器不选择所述明显有效的码元。
10.根据权利要求9所述的集成电路,其特征在于,所述第一码元解码器用于从所述数据提供器接收来自所述经压缩数据块的第四数据窗,所述第四数据窗对应于第三有效码元的开头,所述第一码元解码器用于完全地解码所述第三有效码元并且用于确定所述第三有效码元的长度。
11.根据权利要求10所述的集成电路,其特征在于,所述第三有效码元基于所述第一有效码元的长度和所述第二有效码元的长度来被确定为有效的。
12.根据权利要求11所述的集成电路,其特征在于,所述经压缩数据块中的其中所述第一有效码元起始的第一位置与以下一起被并发地计算:所述经压缩数据块中的其中所述第二有效码元起始的第二位置以及所述经压缩数据块中的其中所述第三有效码元起始的第三位置。
13.根据权利要求11所述的集成电路,其特征在于,同所述第一码元解码器相对应的第一指示符与以下一起被并发地计算:同所述第二码元解码器相对应的第二指示符以及同所述第三码元解码器相对应的第三指示符。
14.根据权利要求11所述的集成电路,其特征在于,以下各项被并发地计算:所述经压缩数据块中的其中所述第一有效码元起始的第一位置、所述经压缩数据块中的其中所述第二有效码元起始的第二位置、所述经压缩数据块中的其中所述第三有效码元起始的第三位置、对应于所述第一码元解码器的第一指示符、对应于所述第二码元解码器的第二指示符,以及对应于所述第三码元解码器的第三指示符。
15.一种解压缩数据的方法,包括:
为多个码元解码器提供来自经压缩数据块的第一数据子块,每个码元解码器被提供有来自所述第一数据子块的一不同的毗连数据窗,所述多个码元解码器包括接收第一毗连数据窗的第一码元解码器,所述第一毗连数据窗的起始对应于第一可变长度有效码元的开头,所述多个码元解码器包括接收第二毗连数据窗的第二码元解码器,所述第二毗连数据窗的起始对应于所述数据子块中的第二可变长度有效码元的开头;
由所述多个码元解码器中的每一个并行地解码相应可变长度码元,并且从被提供给相应码元解码器的相应数据窗确定所述相应可变长度码元的相应比特长度,所述第一码元解码器解码所述第一可变长度有效码元,所述第二码元解码器解码所述第二可变长度有效码元;
基于所述第一可变长度有效码元的比特长度,确定由所述第二码元解码器解码的所述第二可变长度码元是有效码元;以及,
基于所述第一可变长度有效码元的比特长度和所述第二可变长度有效码元的比特长度,选择第三码元解码器,所述第三码元解码器将被提供有来自所述经压缩数据块的第二数据子块的第三数据窗,所述第三数据窗的起始对应于第三可变长度有效码元的开头。
16.根据权利要求15所述的方法,其特征在于,进一步包括:
为所述多个码元解码器提供来自所述经压缩数据块的所述第二数据子块,每个码元解码器被提供有来自所述第二数据子块的第二相应毗连数据窗。
17.根据权利要求16所述的方法,其特征在于,进一步包括:
由所述第三码元解码器从被提供给所述第三码元解码器的所述第二相应数据窗解码所述第三可变长度码元;以及,
确定所述第三可变长度有效码元的相应比特长度。
18.根据权利要求17所述的方法,其特征在于,进一步包括:
基于输出数据宽度的指示符、所述第一可变长度有效码元的相应比特长度、所述第二可变长度有效码元的相应比特长度、以及所述第三可变长度有效码元的相应比特长度,选择要被输出的一组经解码码元。
19.根据权利要求18所述的方法,其特征在于,进一步包括:
并发地计算以下各项:所述经压缩数据块中的其中所述第一可变长度有效码元起始的第一位置、所述经压缩数据块中的其中所述第二可变长度有效码元起始的第二位置、以及所述经压缩数据块中的其中所述第三可变长度有效码元起始的第三位置。
20.根据权利要求18所述的方法,其特征在于,进一步包括:
并发地计算以下各项:与所述第一码元解码器相对应的第一指示符、与所述第二码元解码器相对应的第二指示符、以及与所述第三码元解码器相对应的第三指示符。
21.一种具有指令的计算机可读存储介质,当所述指令被执行时使得机器执行如权利要求15-20中任一权利要求所述的方法。
22.一种计算机系统,包括用于执行如权利要求15-20中任一权利要求所述的方法的装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662432631P | 2016-12-11 | 2016-12-11 | |
US62/432,631 | 2016-12-11 | ||
US15/588,626 | 2017-05-06 | ||
US15/588,626 US9819359B1 (en) | 2016-12-11 | 2017-05-06 | Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines |
PCT/US2017/065204 WO2018106975A1 (en) | 2016-12-11 | 2017-12-08 | Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110073604A CN110073604A (zh) | 2019-07-30 |
CN110073604B true CN110073604B (zh) | 2023-08-04 |
Family
ID=60255817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780076555.6A Active CN110073604B (zh) | 2016-12-11 | 2017-12-08 | 数据解压缩器以及用于解压缩数据的集成电路和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9819359B1 (zh) |
EP (1) | EP3552313B1 (zh) |
CN (1) | CN110073604B (zh) |
WO (1) | WO2018106975A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11561797B2 (en) * | 2019-08-19 | 2023-01-24 | Ati Technologies Ulc | Decompression engine for decompressing compressed input data that includes multiple streams of data |
US10917110B1 (en) * | 2019-09-02 | 2021-02-09 | Ati Technologies Ulc | Multiple symbol decoder |
CN113839679B (zh) * | 2021-08-31 | 2023-09-15 | 山东云海国创云计算装备产业创新中心有限公司 | 一种哈夫曼解码系统、方法、设备及计算机可读存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5650905A (en) * | 1995-12-28 | 1997-07-22 | Philips Electronics North America Corporation | Variable length decoder with adaptive acceleration in processing of Huffman encoded bit streams |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5821885A (en) | 1994-07-29 | 1998-10-13 | Discovision Associates | Video decompression |
US5842033A (en) | 1992-06-30 | 1998-11-24 | Discovision Associates | Padding apparatus for passing an arbitrary number of bits through a buffer in a pipeline system |
US6043765A (en) | 1997-09-26 | 2000-03-28 | Silicon Engineering, Inc. | Method and apparatus for performing a parallel speculative Huffman decoding using both partial and full decoders |
US6704361B2 (en) * | 1998-05-18 | 2004-03-09 | Sony Corporation | Variable length decoder for decoding digitally encoded video signals |
US6370671B1 (en) | 1998-06-18 | 2002-04-09 | Globespan, Inc. | Configurable decoder and method for decoding a reed-solomon codeword |
US6653955B1 (en) | 2002-05-09 | 2003-11-25 | Lsi Logic Corporation | Multi-symbol variable length code decoder |
FI116813B (fi) | 2002-06-20 | 2006-02-28 | Nokia Corp | Menetelmä ja järjestelmä vaihtuvapituisen koodauksen purkamiseksi, ja koodisanojen paikannuslaite |
US8599841B1 (en) | 2006-03-28 | 2013-12-03 | Nvidia Corporation | Multi-format bitstream decoding engine |
US7642935B2 (en) * | 2008-04-07 | 2010-01-05 | Mediatek Inc. | Huffman decoding method and apparatus |
HUE037656T2 (hu) * | 2010-04-13 | 2018-09-28 | Fraunhofer Ges Forschung | Valószínûség intervallum partícionáló kódoló és dekódoló |
GB201014347D0 (en) * | 2010-08-28 | 2010-10-13 | Lu Mingying | Huffman code table transform and parrallel Huffman decoding |
US8824569B2 (en) | 2011-12-07 | 2014-09-02 | International Business Machines Corporation | High bandwidth decompression of variable length encoded data streams |
US9094039B2 (en) * | 2013-10-18 | 2015-07-28 | Advanced Micro Devices, Inc. | Efficient deflate decompression |
EP2975771B1 (en) * | 2014-07-17 | 2020-12-30 | Phase One A/S | A method for selecting starting positions in parallel decoding of a compressed image |
US9513919B2 (en) * | 2015-04-28 | 2016-12-06 | Intel Corporation | Method and apparatus for speculative decompression |
US9484954B1 (en) * | 2015-09-10 | 2016-11-01 | Intel Corporation | Methods and apparatus to parallelize data decompression |
-
2017
- 2017-05-06 US US15/588,626 patent/US9819359B1/en active Active
- 2017-12-08 CN CN201780076555.6A patent/CN110073604B/zh active Active
- 2017-12-08 EP EP17823276.5A patent/EP3552313B1/en active Active
- 2017-12-08 WO PCT/US2017/065204 patent/WO2018106975A1/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5650905A (en) * | 1995-12-28 | 1997-07-22 | Philips Electronics North America Corporation | Variable length decoder with adaptive acceleration in processing of Huffman encoded bit streams |
Non-Patent Citations (1)
Title |
---|
A programmable parallel Huffman decoder;B.W.Y. Wei;《Proceedings of 1st International Conference on Image Processing》;20021231;668-671 * |
Also Published As
Publication number | Publication date |
---|---|
US9819359B1 (en) | 2017-11-14 |
WO2018106975A1 (en) | 2018-06-14 |
CN110073604A (zh) | 2019-07-30 |
EP3552313A1 (en) | 2019-10-16 |
EP3552313B1 (en) | 2021-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108880556B (zh) | 基于lz77的无损数据压缩方法、误码修复方法及编码器和解码器 | |
CN108768403B (zh) | 基于lzw的无损数据压缩、解压方法及lzw编码器、解码器 | |
CN110073604B (zh) | 数据解压缩器以及用于解压缩数据的集成电路和方法 | |
CN106560010B (zh) | Vlsi高效霍夫曼编码设备和方法 | |
CN113810057B (zh) | 用于语义值数据压缩和解压缩的方法、设备和系统 | |
US9998145B2 (en) | Data processing method and device | |
CN112514270B (zh) | 数据压缩 | |
US9094039B2 (en) | Efficient deflate decompression | |
CN111294053B (zh) | 硬件友好的数据压缩方法、系统及装置 | |
US20130019029A1 (en) | Lossless compression of a predictive data stream having mixed data types | |
KR101583139B1 (ko) | 높은 처리량과 낮은 복잡성을 갖는 연속 제거 극 부호 복호 장치 및 그 방법 | |
EP1834408A2 (en) | Fast compact decoder for huffman codes | |
US9934234B2 (en) | Adaptive rate compression hash processor | |
CN112994703A (zh) | 硬件友好的数据解压缩 | |
CN113630125A (zh) | 数据压缩、编码解压缩方法、装置、电子设备及存储介质 | |
US9998149B2 (en) | Constant hamming weight coding | |
US8976048B2 (en) | Efficient processing of Huffman encoded data | |
WO2007108395A1 (ja) | 可変長符号の復号装置および復号方法 | |
WO2018106747A1 (en) | Huffman tree decompression | |
US9716515B2 (en) | Method for detecting end of record in variable length coded bit stream | |
CN113346913A (zh) | 使用减量的出现次数的数据压缩 | |
TWI498891B (zh) | 解壓縮電路與相關的壓縮方法與解壓縮方法 | |
CN104318926B (zh) | 基于IntMDCT的无损音频编码方法、解码方法 | |
CN112738124B (zh) | 硬件友好的数据压缩方法、压缩器 | |
CN113315523B (zh) | 硬件友好的数据解压缩 |
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 |