CN114342264A - 多符号解码器 - Google Patents

多符号解码器 Download PDF

Info

Publication number
CN114342264A
CN114342264A CN202080061995.6A CN202080061995A CN114342264A CN 114342264 A CN114342264 A CN 114342264A CN 202080061995 A CN202080061995 A CN 202080061995A CN 114342264 A CN114342264 A CN 114342264A
Authority
CN
China
Prior art keywords
symbol
decoder
block
compressed data
parser
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
Application number
CN202080061995.6A
Other languages
English (en)
Inventor
维纳伊·帕特尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN114342264A publication Critical patent/CN114342264A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4093Variable length to variable length coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4087Encoding of a tuple of symbols
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • H03M7/6023Parallelization

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

多符号解码器
背景
相关技术
一些电子装置执行用于将数据(诸如用户或系统文件、数据流或序列等)压缩的操作。电子装置可将数据压缩以减小数据的大小,以使得数据能够更高效地存储在存储器中、使得数据能够经由网络在电子装置之间的传输等。例如,当从原始数据生成压缩数据时,电子装置可使用编码标准(诸如前缀编码标准(例如,霍夫曼编码、香农-法诺编码等))对数据进行编码。
尽管将数据压缩可提高存储和处理数据的效率,但是压缩数据在用于许多操作之前必须进行解压缩。这意味着在可执行此类操作之前,电子装置必须执行操作来扭转压缩操作的效应,并且因此重新存储或重新创建原始数据。在许多电子装置中,使用软件(即,软件例程、应用程序等)对压缩数据进行解压缩。使用软件对压缩数据进行解压缩典型地要求诸如中央处理单元(CPU)的通用处理器执行大量的解压缩操作和相关联的存储器访问。由于大量的解压缩操作和存储器访问,使用软件进行解压缩是低效的。
附图说明
图1呈现了示出根据一些实施方案的压缩数据的框图。
图2呈现了示出根据一些实施方案的电子装置的框图。
图3呈现了示出根据一些实施方案的解码子系统的框图。
图4呈现了示出根据一些实施方案的在解码子系统中的附加符号解析器的框图。
图5呈现了示出根据一些实施方案的用于对压缩输入数据进行解码的过程的流程图。
在整个附图和描述中,相似的附图标记指代相同的附图元件。
具体实施方式
呈现以下描述以使得本领域任何技术人员能够制造和使用所描述的实施方案,并且在特定应用及其要求的背景下提供以下描述。对所描述的实施方案的各种修改对于本领域技术人员来说将显而易见,并且本文定义的一般原理可应用于其他实施方案和应用。因此,所描述的实施方案不限于所示出的实施方案,而是要被赋予与本文公开的原理和特征一致的最宽范围。
术语
在以下描述中,使用各种术语来描述实施方案。以下是对这些术语中的一者的简化且一般的描述。应注意,该术语可具有重要的附加方面,为了清楚和简洁起见,在本文中没有陈述这些附加方面,并且因此该描述不旨在限制术语。
功能块:功能块是指一个或多个互相关联的电路元件(诸如集成电路元件、分立电路元件等)的组、集合和/或集。电路元件是“互相关联的”,因为电路元件共享至少一种性质。例如,互相关联的电路元件可被包括在特定的集成电路芯片或其部分中、制造在特定的集成电路芯片或其部分上或以其他方式耦合到特定的集成电路芯片或其部分,可参与执行给定的功能(计算或处理功能、存储器功能等),可由共同控制元件和/或共同块来控制等。功能块可包括任何数量的电路元件,从单个电路元件(例如,单个集成电路逻辑门)至数百万或数十亿的电路元件(例如,集成电路存储器)。
压缩数据
在所描述的实施方案中,对压缩数据执行操作并且使用该压缩数据执行操作。一般来讲,压缩数据是对原始数据的一个或多个编码和/或其他操作的输出,该一个或多个编码和/或其他操作造成原始数据中的至少一些被可用于重新创建原始数据的数据和/或被其他值替代。在所描述的实施方案中,可将各种类型的数据压缩,所述数据包括用户或系统文件(例如,音频和/或视频文件、文档文件、可执行文件、操作系统文件等)、数据流或序列(例如,音频和/或视频数据流、经由网络接口接收的数据序列等)、从传感器(例如,相机和/或麦克风、温度计、振动传感器等)捕获的数据等。在所描述的实施方案中,众多编码标准、算法或格式或它们的组合可用于将数据压缩,包括前缀编码标准,诸如霍夫曼编码、香农-范诺编码等。
如本文所使用的术语“压缩数据”和“压缩”广泛地应用于对原始数据的操作,该操作造成原始数据中的至少一些被可用于重新创建原始数据的其他数据替代。如上所述,这些操作包括各种编码标准、算法或格式或它们的组合。因此,这些术语不应当被解译为仅限于诸如字典编码压缩和/或有时可被视为“压缩”操作的其他操作的操作。
图1呈现了示出根据一些实施方案的压缩数据的框图。如在图1中可见,压缩数据100包括数据102、标头104和元数据106,所述压缩数据可以是文件、数据流或序列等或被包括在文件、数据流或序列等中。数据102包括一系列的可变长度代码,所述代码表示并替代原始数据中的位序列或“符号”。例如,在可具有原始位序列(诸如01000001)的原始数据中的字母A的符号可由数据102中的代码(诸如0)表示并被其替代。换句话说,在原始数据中出现符号A的地方,该符号已经被移除并替代为压缩数据100中的代码0。其他符号(诸如B、C和D)可分别地被诸如100、101和1100的代码替代。在一些实施方案中,压缩数据100中的代码可表示和替代长度更长的符号,包括多位符号(例如,多字符、多字等),诸如“宾夕法尼亚大道1600号(1600Pennsylvania Avenue)”或“多伦多猛龙队(the Toronto Raptors)。”另外,在一些实施方案中,代码是“无前缀的”,因为没有代码(例如,用于符号A的代码0)与另一个代码的初始数字匹配。
标头104包括关于压缩数据100的信息,诸如描述压缩数据的内容、格式、源电子装置、网络路由值和/或长度等的信息。元数据106包括诸如用于生成或识别用于对压缩数据100进行解码的解码参考(例如,代码表,诸如霍夫曼表等)的信息、关于要被执行来对压缩数据进行解码的操作的类型和布置的信息等信息。在一些实施方案中,解码参考包括从可变长度代码到来自原始数据的符号的映射,所述映射用于在解压缩操作期间对数据102进行解码。
在一些实施方案中,在压缩操作期间,电子装置通过读取原始数据、确定存在于原始数据中的符号(即,位序列)以及记录原始数据中的符号的频率计数来从原始数据生成压缩数据(例如,数据102)。然后,电子装置使用符号来生成代码表、树、列表或其他数据结构。对于该操作,电子装置确定并且典型地优化符号在代码表、树、列表或其他数据结构中的使用和/或放置,使得在原始数据中更频繁地出现的符号与不太频繁地出现的符号相比被分配更短代码(即,具有更少位的代码)。然后,电子装置使用代码表、树、列表或其他数据结构来将原始数据压缩,即,使用来自代码表、树、列表或其他数据结构的代码来替代原始数据中的对应符号。应注意,在一些情况下,代码表、树或列表是单独地生成的并且可能使用不同的数据并由不同的/远程的电子装置生成,并且由电子装置简单地获取并用于将原始数据压缩。
在一些实施方案中,在用于对压缩数据进行解压缩的解压缩操作期间,首先生成或获取解码参考(即,表、树、列表或其他数据结构)。例如,并且如上所述,可基于或根据压缩数据中的元数据中的信息来生成解码参考。作为另一个示例,可从存储器、网络接口或另一个实体获取解码参考(例如,为压缩数据预先准备的通用解码参考等)。然后,使用解码参考来将压缩数据中的代码与符号匹配,使得代码可被符号替代以重新创建原始数据。当匹配代码时,压缩数据中的下一代码(即,压缩数据中与来自解码参考的代码匹配的下一位序列)被相关联符号替代。换句话说,在压缩数据中的仅第一位与来自解码参考的一位代码之间进行比较来看看是否存在匹配。如果存在匹配,则第一位被对应的符号替代。否则,如果不存在针对仅第一位的匹配,则将第一位和第二位的组合与来自解码参考的两位代码进行比较来看看是否存在匹配。如果存在匹配,则第一位和第二位被对应的符号替代。否则,如果不存在匹配,则将第一位、第二位和第三位的组合与解码参考中的三位代码进行比较,依此类推。在一些实施方案中,并行地(例如,在一组匹配单元的每一者中)执行比较,并且从匹配代码中选择与最短匹配代码相关联的符号。
概述
在所描述的实施方案中,电子装置包括解码子系统功能块,该解码子系统功能块执行用于对压缩数据进行解压缩的操作。解码子系统包括符号解码器功能块和第二符号解析器功能块,该符号解码器功能块和第二符号解析器功能块执行用于一次(例如,每一时钟周期、时间跨度等)从压缩数据的块(例如,N位块)解码出多达两个符号的操作。在所描述的实施方案中,对于压缩数据的给定块,符号解码器从压缩数据的给定块解码出第一符号。第二符号解析器与符号解码器中的解码并行地对压缩数据的给定块的多个不同子块的相应符号进行解码。然后,第二符号解析器基于第一符号的代码的长度来选择相应符号中的一者作为第二符号。以此方式,第二符号解析器推测性地从压缩数据的给定块解码出可在第一符号之后的多个符号,并且然后,一旦已知第一符号的代码的长度,就选择推测性地解码的符号中的一者作为第二符号。然后,解码子系统输出第一符号和第二符号,例如,将第一符号和第二符号存储在存储器中、将第一符号和第二符号提供到消费实体(例如,处理子系统等)等。
在操作期间,符号解码器从在压缩数据的块中的可获得符号的第一代码解码出第一符号。换句话说,从压缩数据的块中的最低位起,符号解码器将位的值与来自解码参考(例如,代码表、列表或其他数据结构)的代码进行比较,以确定在代码与位之间是否存在匹配,并且当找到匹配时返回与代码相关联的符号。为了比较,符号解码器包括一组匹配单元,每个匹配单元是将指定长度(例如,1位、2位等)的代码与压缩数据的块中的位匹配并且当找到匹配时返回符号的功能块。
另外,在操作期间,第二符号解析器在一组本地符号解码器中的每一者中基本上与在符号解码器中对第一符号进行解码并行地从在压缩数据的块的相应的子块中的可获得符号的第一代码解码出相应的符号。对于该操作,每个本地符号解码器被提供压缩数据的块的不同位集(即,来自压缩数据的块中的多个位中的不同相邻位序列)并且从中解码出相应的符号。例如,在一些实施方案中,假设存在1位代码、2位代码、3位代码等,用于本地符号解码器中的一者的子块包括压缩数据的块的除了第一位的位,子块中的另一者包括压缩数据的块的除了前两位的位,依此类推。以此方式,第二符号解析器推测性地对一组代码中可处于在符号解码器中进行解码的第一符号的代码之后的每一者的单独符号进行解码。在对第一符号进行解码时,符号解码器向第二符号解析器传达从中解码出第一符号的代码的长度。然后,第二符号解析器中的符号选择器基于从符号解码器接收的长度来选择来自本地符号解码器的相应符号中的一者作为第二符号。接下来,第二符号解析器提供要从解码子系统输出的第二符号。
在一些实施方案中,接收器功能块接收压缩数据并且分别向符号解码器和第二符号解析器提供压缩数据的块和压缩数据的子块。例如,接收器可从文件、从数据流(经由网络接口、输入输出(IO)装置等)、从传感器(诸如相机或麦克风等)接收压缩数据。在压缩数据的以压缩数据中的第一位置、地址等开始的初始/第一块之后,接收器基于在符号解码器和第二符号解析器中解码的代码的长度来确定压缩数据的下一块和压缩数据的子块。例如,假设符号解码器和第二符号解析器各自在控制时钟的每一周期对符号进行解码并且压缩数据的块的长度为21位,如果在第一时钟周期中,符号解码器对3位代码进行解码并且第二符号解析器对来自压缩数据的第一块的5位代码进行解码,则接收器移入来自压缩数据的8个新位以附加到来自压缩数据的第一块的剩余13位,并且在第二时钟周期中将压缩数据的所得的第二块和其子块提供到符号解码器和第二符号解析器。
在一些实施方案中,符号解码器和第二符号解析器中的一者或两者使用相应的最大代码长度。例如,在一些实施方案中,符号解码器使用用于将数据压缩的编码标准的最大代码长度(例如,15位、12位等),并且第二符号解析器使用系统设计者或另一个实体选择的最大代码长度(例如,6位、8位等)。例如,可考虑到第二符号解析器的物理大小(例如,半导体布局面积)、电力消耗、所产生的热等与解码子系统的性能(例如,平均符号解码速率)的平衡来选择第二符号解析器的最大代码长度。在这些实施方案中,在第二符号与比第二符号解析器的最大代码长度更长的代码相关联的情况下,第二符号解析器可能在每一时钟周期中不对符号进行解码,并且因此将输出指定值(例如,空值)或不输出内容。在此类情况下,尽管代码对于第二符号解析器来说太长以致无法解码,但是符号解码器在后续时钟周期(或其他时间段)中(即,在接收器在该时钟周期内移入新的压缩数据以生成压缩数据的块时)对起初对于第二符号解析器来说太长的代码进行解码。
在一些实施方案中,解码子系统包括至少一个附加符号解析器功能块,该至少一个附加符号解析器功能块执行用于对除了由符号解码器和第二符号解析器解码的第一符号和第二符号之外的附加符号(例如,第三符号等)进行解码的操作。在这些实施方案中,每个附加符号解析器基本上与符号解码器和第二符号解析器的上述操作并行地从压缩数据的块的附加子块解码出符号。符号解码器和第二符号解析器将关于在其中解码的代码的长度信息转发到附加符号解析器,使得附加符号解析器可提供适当的符号。例如,并且继续压缩数据的21位块的示例,如果符号解码器从8位的代码解码出符号并且第二符号解析器从7位的代码解码出符号,则附加符号解码器输出来自在压缩数据的块的第15位之后的多达由附加符号解码器使用的最大代码长度(例如,6位、5位等)的代码的符号。在这些实施方案中,解码子系统可每一周期提供三个或更多个符号。
通过使用具有符号解码器功能块和第二符号解析器功能块(以及可能地,附加符号解析器功能块)的硬件解码子系统对压缩数据进行解压缩,所描述的实施方案在硬件中执行现有装置使用软件执行的操作。与使用软件实体来执行相同操作相比,解码子系统更快且更高效(例如,要求更少的存储器访问、使用更少的电力等)。另外,使用解码子系统释放电子装置中的其他功能块(例如,处理子系统等)以执行其他操作。因此,解码子系统提高了电子装置的总体性能,这进而提高用户满意度。
电子装置
图2呈现了示出根据一些实施方案的电子装置200的框图。如在图2中可见,电子装置200包括处理器202和存储器204。处理器202是执行电子装置200中的计算、解压缩和其他操作的功能块。处理器202包括处理子系统206和解码子系统208。处理子系统206包括执行通用计算、解压缩和其他操作的一个或多个功能块,诸如中央处理单元(CPU)核心、图形处理单元(GPU)核心、嵌入式处理器和/或专用集成电路(ASIC)。
解码子系统208是执行用于对压缩输入数据进行解压缩的操作的功能块。一般来讲,解码子系统208将基于原始数据生成的压缩输入数据作为输入,并且返回用于重新创建原始数据的符号作为输出。基于在解码子系统内的内部元件的布置(例如,在解码子系统208内的多个单独符号解析器),解码子系统208在每一时间段从压缩数据的块生成多达指定数量的符号(例如,每一时钟周期两个符号、每333ps三个符号等)。以下更详细地描述了解码子系统208。
存储器204是执行电子装置200中的存储器(例如,主存储器)的操作的功能块。存储器204包括:存储器电路(即,存储元件、访问元件等),该存储器电路用于存储数据和指令以供电子装置200中的功能块使用;以及控制电路,该控制电路用于处理对存储器电路中的数据和指令的访问(例如,读取、写入、检查、删除、使无效等)。存储器204中的存储器电路包括计算机可读存储器电路,诸如第四代双倍数据速率同步动态随机存取存储器(DDR4SDRAM)、静态随机存取存储器(SRAM)或它们的组合。
电子装置200被示出为使用特定数量和布置的元件(例如,功能块和装置,诸如处理器202、存储器204等)。然而,出于说明性目的,简化了电子装置200。在一些实施方案中,在电子装置200中存在不同数量或布置的元件。例如,电子装置200可包括电源子系统、显示器等。一般来讲,电子装置200包括足够的元件来执行本文描述的操作。
尽管解码子系统208在图2中被示出为包括在处理器202中,但是在一些实施方案中,解码子系统208是单独和/或独立的功能块。例如,解码子系统208可在独立的集成电路芯片等上实现(自行实现或与支持电路元件和功能块一起实现)。一般来讲,在所描述的实施方案中,解码子系统208合适地安置在电子装置200中以使得能够执行本文描述的操作。
电子装置200可以是执行数据解压缩或其他操作的任何电子装置或可被包括在执行数据解压缩或其他操作的任何电子装置中。例如,电子装置200可以是电子装置或可被包括在电子装置中,所述电子装置诸如台式计算机、膝上型计算机、可穿戴电子装置、平板计算机、智能电话、服务器、人工智能设备、虚拟或增强现实设备、网络器具、玩具、视听设备、家用电器、控制器、车辆等和/或它们的组合。
解码子系统
在所描述的实施方案中,电子装置中的解码子系统执行用于对压缩输入数据进行解压缩的操作。图3呈现了示出根据一些实施方案的解码子系统208的框图。如在图3中可见,解码子系统208包括接收器(REC)300、符号解码器302和第二符号解析器304,它们中的每一者执行与从压缩数据解码出符号相关联的操作。
对于图3中的示例,假设符号解码器302从最大长度为15位的代码解码出符号,并且假设第二符号解析器304从最大长度为6位的代码解码出符号。符号解码器302的15位最大长度是编码标准中的最长准许代码的示例。换句话说,假设用于创建要由解码子系统208解压缩的压缩数据的编码标准的规则或限制是代码的最长允许长度是15位。第二符号解析器304的6位最大长度是代码长度的配置(即,选定或选择)的上限的示例。由于更长的代码长度要求更大且更复杂的电路来进行解码,因此代码长度的上限由例如设计者或其他实体选择,以便帮助相对于解码子系统208的总体符号解码速率来平衡第二符号解析器304所需的电路面积和解码努力(例如,电力消耗、产生的热等)。然而,图3中的符号解码器302和第二符号解析器304的示例最大代码长度不是必需的;在一些实施方案中,最大代码长度是不同的(即,更长的和/或更短的)。一般来讲,所描述的实施方案可用可执行本文描述的操作的任何代码长度来操作。另外,对于图3中的示例,压缩数据的N位块的长度为21位。使用21位长度,因为在每一时钟周期(或其他时间段)对于21位的最大组合代码长度,符号解码器302可对长度多达15位的代码进行解码,并且第二符号解析器304可对长度多达6位的代码进行解码。
解码子系统208中的接收器300是执行用于从另一个实体(例如,处理子系统206、存储器204等)接收压缩数据并且将压缩数据的部分转发或引导到符号解码器302和第二符号解析器304的操作的功能块。例如,在一些实施方案中,对于由时钟336功能块提供到解码子系统208的控制时钟的每个周期(或其他时间段),接收器300从压缩数据的流或序列获取下一21位块并且将压缩数据的块的对应部分提供到符号解码器302和第二符号解析器304。
在一些实施方案中,对于压缩数据的初始块,接收器300简单地获取压缩数据的前21位。对于压缩数据的在初始块之后的块,接收器300基于压缩数据的当前块中由符号解码器302和第二符号解析器304中的每一者解码的代码的长度来生成压缩数据的每个下一块。为了生成压缩数据的下一块,接收器300从符号解码器302和第二符号解析器304中的一者或两者接收关于在压缩数据的当前块中的从中解码出符号的代码的长度的信息。然后,接收器300使用关于代码的长度的信息来确定要从压缩输入数据获取多少新位来生成压缩数据的下一块。在一些情况下,解码的代码的组合长度比压缩数据的当前块更短,并且因此并非所有的位都在压缩数据的当前块中进行解码。因此,接收器300从压缩输入数据获取位以添加到来自压缩数据的当前块的剩余位(即,未被解码),以创建压缩数据的下一21位块。例如,如果在压缩数据的当前块中,符号解码器302从2位代码解码出符号并且第二符号解析器304从5位代码解码出符号,并且因此压缩数据的21位当前块中的7位被解码,则接收器300将来自压缩输入数据的7位新数据添加或移入压缩数据的当前21位块的剩余14位,以生成压缩数据的下一21位块。然后,接收器300将压缩数据的下一21位块的对应部分提供到符号解码器302和第二符号解析器304以进行解码。
由接收器300发送到符号解码器302和第二符号解析器304中的每一者的压缩输入数据的块的“部分”是来自要在符号解码器302和第二符号解析器304内的功能块中进行解码的压缩数据的块的位的组或集。继续该示例,在一些实施方案中,接收器300将15位部分发送到符号解码器302(即,压缩输入数据的块的位0至14)并且将20位部分发送到第二符号解析器304(即,压缩输入数据的块的位1至20)。在一些实施方案中,发送压缩输入数据的块的部分涉及接收器300例如经由专用串行或并行信号线或线路将特定位传达到符号解码器302和/或第二符号解析器304。继续该示例,这意味着接收器300仅将位0至14传达到符号解码器302并且仅将位1至20传达到第二符号解析器304。然而,在一些实施方案中,发送这些部分涉及在串行或并行通信总线、信号线或其他通信线路上将压缩数据的整个21位块传达到符号解码器302和第二符号解析器304,适当的部分由符号解码器302和第二符号解析器304中的每一者从中读取。
解码子系统208中的符号解码器302是执行用于从压缩输入数据的块解码出各个符号的操作的功能块。符号解码器302包括一组匹配单元(即,匹配单元306至312)和长度检测器314。匹配单元306至312中的每个匹配单元是执行用于将相应长度的代码与压缩数据的块的位进行比较并且当找到匹配时返回对应的符号(例如,来自匹配单元306的符号316等)的操作的功能块。例如,匹配单元312包括电路元件(例如,逻辑门、比较电路、多路复用器、存储器元件等),该电路元件用于将单个位代码与压缩数据的块的第一位(在图3中被示出为D[0])进行比较。以此方式,匹配单元312确定是否存在与压缩数据的块的第一位中的一位代码的匹配。当匹配单元312找到匹配时,匹配单元312将与匹配代码相关联的符号输出到长度检测器314。例如,匹配单元312可包括存储符号的存储器元件和当找到匹配时输出符号的输出电路元件。其他匹配单元306至310执行类似的操作,但是针对其他长度的代码。更具体地,匹配单元306找到在压缩数据的块的前15位与15位的代码之间的匹配,匹配单元308找到在压缩数据的块的前3位与3位的代码之间的匹配,并且匹配单元310找到在压缩数据的块的前2位与2位的代码之间的匹配,这些在图3中分别被示出为D[14:0]、D[2:0]和D[1:0]。在一些实施方案中,从1至15的每个代码长度在单独匹配单元中进行处理(如经由省略号所示),但是为了清楚起见,在图3中仅示出了匹配单元中的几个。
在一些实施方案中,由于用于将压缩数据压缩的编码标准(例如,前缀编码标准)的规则和限制,每个可能的位长度的代码可能不同时地存在于压缩数据中。在这些实施方案中,只有将代码与来自压缩数据的位进行比较所需的匹配单元可被包括在符号解码器302中。在这些实施方案中,可能无法在符号解码器302中为每个代码长度找到匹配单元。
在一些实施方案中,匹配单元306至312被配置、编程或以其他方式设置为执行在代码与压缩数据的块中的相应位之间的匹配并且基于找到的匹配来返回符号。在这些实施方案中的一些中,每个匹配单元(或对匹配单元进行配置、编程等的另一个实体)从解码参考(例如,表、列表或包括代码到符号映射信息的其他数据结构)获取代码和匹配符号信息和/或以其他方式使用解码参考来配置比较电路(例如,逻辑门、多路复用器等)以返回指示是否已经在对应长度的代码与压缩数据的块的位之间找到匹配的信号。另外,符号输出电路元件和存储器元件使用解码参考进行配置或编程以输出相关联代码的符号。
符号解码器302中的长度检测器314是执行用于确定用于解码出从相应的匹配单元306至312返回的符号的代码的长度并且将代码的长度传达到第二符号解析器304中的符号选择器330的操作的功能块。对于该操作,当从匹配单元接收到符号时,长度检测器314确定从中解码出符号的代码的长度(例如,使用逻辑电路、查找电路和存储器元件等)并且将代码长度318提供到符号选择器330。例如,如果将1位代码与压缩数据的块中的第一位位置进行比较的匹配单元312返回符号,则长度检测器314确定1位代码被解码并返回值1(或另一个代表值)作为代码长度318。在一些实施方案中,由于在其中未找到匹配,因此匹配单元306至310提供指示未找到匹配的信号,例如,空值信号、零值等。除了输出代码长度318之外,长度检测器314转发或以其他方式传递接收到的符号以作为符号320从解码子系统208输出。
解码子系统208中的第二符号解析器304是推测性地从压缩数据的块的相应子块解码出多个符号并且基于用于在符号解码器302中解码出符号的代码的长度来提供要从解码子系统208输出的符号中的一者的功能块。换句话说,第二符号解析器304基本上与在符号解码器302中对符号的解码并行地从在符号解码器302中解码的压缩数据的块的每组位之后的压缩数据的块的位解码出一组符号。从该一组符号,基于在符号解码器302中从中解码出第一符号的代码的长度来选择某一符号作为第二符号从解码子系统208输出。例如,匹配单元312对压缩数据的块的第一位(即,压缩数据的块的位0)进行解码,并且因此第二符号解析器304从压缩数据的块的位1至6解码出符号,以便准备在匹配单元312找到匹配并且输出第一符号的情况下将该符号作为第二符号输出。
第二符号解析器304包括一组单独的符号解码器(即,符号解码器322至328)以及符号选择器330。符号解码器322至328中的每一者是执行类似于符号解码器302的那些操作的单独功能块,即,用于将相应长度的代码与压缩数据的块的位进行比较并且当找到匹配时返回对应的符号(例如,来自符号解码器322的符号332)。在一些实施方案中,符号解码器322至328中的每一者的内部元件类似于在符号解码器302中示出并在以上描述的内部元件(并且为了清楚和简洁起见,不再次进行描述),但是针对在压缩数据的块的每个子块中的位的数量进行了调整。在符号解码器322至328的每个符号解码器中解码的相应子块包括来自压缩数据的块中的多个位中的不同相邻位序列。对于图3中的示例,在符号解码器322至328中解码的子块包括位15至20、8至3、7至2和6至1,这些位在图3中分别被示出为D[20:15]、D[8:3]、D[7:2]和D[6:1]。如上所述,选择压缩数据的块的每个子块的长度,以便解码出可在由符号解码器302解码的符号之后的符号。
符号选择器330是执行用于从由符号解码器322至328中的每一者输出的符号中选择某一符号作为第二符号(即,作为符号334)从解码子系统208输出的操作的功能块。符号选择器330包括从长度检测器314接收代码长度318并且基于代码长度318的值来从由符号解码器322至328输出的符号中选择某一符号作为符号334输出的电路元件(例如,逻辑电路、解复用器等)。例如,如果匹配单元306从压缩数据的块的位0至14解码出符号,并且因此代码长度318是15位,则符号选择器330从对压缩数据的块的位15至20进行解码的符号解码器322选择符号332作为符号334输出。
应注意,在一些实施方案中,由于第二符号解析器304被限制为对6位子块进行解码,因此符号解码器322至328中的一些或全部可能无法解码出符号,即,缺少足够的位来解码出符号。当无法在第二符号解析器304中的给定符号解码器中解码出符号时,给定符号解码器输出默认值,诸如空值、零或另一个值(或不输出内容)。如果在符号解码器302中解码的符号320之后的符号出于这个原因而不可获得(即,由于代码的长度而无法被解码),则符号选择器330不输出符号334,并且解码子系统208在该时钟周期(或其他时间段)仅解码出一个符号。
尽管图3中示出了在解码子系统208、符号解码器302和第二符号解析器304中的各种内部元件,但是所描述的实施方案不限于所示出的布置或数量的内部元件。一般来讲,电子装置208包括足够的元件来执行本文描述的操作。
附加符号解析器
尽管图3仅示出了解码子系统208中的单个第二符号解析器(即,第二符号解析器304),但是在一些实施方案中,解码子系统208包括两个或更多个符号解析器。图4呈现了示出根据一些实施方案的在解码子系统208中的附加符号解析器的框图。如在图4中可见,解码子系统208包括符号解码器302和第二符号解析器304,该符号解码器和第二符号解析器分别输出符号320和符号334,并且在上文进行了描述。另外,解码子系统208包括附加符号解析器400,该附加符号解析器从解码子系统208输出符号404,即,第三符号。
附加符号解析器400执行与第二符号解析器304的那些操作类似的操作,但是针对的是压缩数据的块的不同子块。一般来讲,附加符号解析器400是推测性地从压缩数据的块的相应子块解码出多个符号并且基于用于在符号解码器302和第二符号解析器304两者中解码出符号的代码的组合长度来提供要从解码子系统208输出的符号中的一者的功能块。换句话说,附加符号解析器400基本上与在符号解码器302中对符号的解码并行地从在第二符号解析器304中解码的压缩数据的块的每组位之后的压缩数据的块的位解码出一组符号。从该一组符号,基于在符号解码器302和第二符号解析器304中解码的代码的组合长度来选择某一符号作为第三符号从解码子系统208输出,该组合长度作为组合代码长度406传达到附加符号解析器400。例如,如果符号解码器302从2位的代码(即,压缩数据的块的位1至0)解码出符号,并且第二符号解析器304从5位(即,压缩数据的块的位6至2)解码出符号,则附加符号解析器400可输出从压缩数据的块的在位6以上的位解码的代码(取决于附加符号解析器400中的最大代码长度等)。与第二符号解析器304一样,在附加符号解析器400因代码比附加符号解析器400的最大代码长度更长而未解码出符号的情况下,附加符号解析器400不输出符号。
用于对压缩输入数据进行解码的过程
在所描述的实施方案中,包括符号解码器和第二符号解析器(例如,符号解码器302和第二符号解析器304)的解码子系统(例如,解码子系统208)执行用于对压缩输入数据(例如,压缩数据100)进行解码的操作。图5呈现了示出根据一些实施方案的用于对压缩输入数据进行解码的过程的流程图。应注意,图5示出的操作被呈现为由一些实施方案执行的操作的一般示例。由其他实施方案执行的操作包括不同的操作、以不同的次序执行的操作和/或由不同的实体或功能块执行的操作。
对于图5示出的过程,假设解码子系统正在接收来自源(诸如文件、数据流等)的压缩输入数据。换句话说,压缩输入数据的各个位正在由解码子系统接收,并且因此可供解码子系统中的接收器(例如,接收器300)进行操作。在一些实施方案中,解码子系统简单地(并且可能仅)对由另一个实体(例如,处理子系统206)提供到解码子系统的压缩输入数据进行解码,以生成符号来重新创建从中创建出压缩输入数据的原始数据。然而,在一些实施方案中,解码子系统包括用于从存储器和/或其他位置或实体(例如,处理子系统、网络接口、IO装置等)检索数据和/或用于将原始数据的符号存储在存储器和/或将符号提供到其他实体的功能块。在这些实施方案中的一些中,解码子系统在对应的功能块中接收和处理致使解码子系统开始获取和处理输入数据的命令或另一个信号。
如在图5中可见,该过程在解码子系统中的接收器将压缩输入数据的块和子块分别发送到解码子系统中的符号解码器和第二符号解析器时开始(步骤500)。压缩输入数据的块是压缩输入数据的N位块(即,从传入的压缩输入数据检索到的下一N可用位的集/序列)。如上所述,N位块中的位的特定数量取决于符号解码器和第二符号解析器中使用的最大代码长度。对于图5中的示例,基于符号解码器的假设20位最大代码长度(其等于编码标准的假设最大代码长度)和第二符号解析器的假设12位最大代码长度来假设压缩输入数据的32位块。考虑到在第二符号解析器中使用更短的最大代码长度避免了对更大且更复杂的第二符号解析器的需要并且避免了与之相关联的对电力、热能等的附加消耗,但是不要求在第二符号解析器中使用特定代码长度。
然后,解码子系统执行多个操作以基于压缩输入数据的块中的代码来解码出符号。如在图5中可见,基本上与在第二符号解析器中的步骤508至512并行地在符号解码器中执行步骤502至506。如本文所使用,“基本上并行”指示操作(即,步骤502至506的组和步骤508至512的组)的一些或全部大致同时执行。例如,在一些实施方案中,这些操作经由符号解码器和第二符号解析器中的组合逻辑和其他电路元件在控制时钟(例如,时钟336)的一个或多个时钟周期内执行。
对于用于解码出符号的操作,符号解码器从在压缩数据的块中的可获得符号的第一代码解码出第一符号(步骤502)。对于该操作,符号解码器中的一组匹配单元(例如,匹配单元306至312)中的每个匹配单元将相应的指定长度(例如,1位、2位、……、19位和20位)的代码与来自压缩数据的块的20位部分的一组位进行比较。例如,第一匹配单元可将压缩数据的块的位0(即,第一位或最低位)与1位代码进行比较,第二匹配单元可将压缩数据的块的位0至1与2位代码进行比较,第三匹配单元可将压缩数据的块的位0至2与3位代码进行比较,依此类推。给定匹配单元找到在压缩输入数据的块的相应位与代码之间的匹配,将对应的符号返回到符号解码器中的长度检测器(例如,长度检测器314)。例如,并且继续图1示出的示例,如果代码100出现在压缩数据的块的前三位位置,则比较3位代码的匹配单元将符号B返回到长度检测器。然后,符号解码器中的长度检测器将从中解码出第一符号的代码的长度传达到第二符号解析器(步骤504)并且提供要从解码子系统输出的第一符号(步骤506)。
对于用于解码出符号的操作,第二符号解析器中的一组本地符号解码器(例如,符号解码器322至328)中的每个本地符号解码器从在压缩数据的块的相应子块中的可获得符号的第一代码解码出相应的符号(步骤508)。对于该操作,第二符号解析器中的单独本地符号解码器针对可在由符号解码器找到的第一符号的代码之后的每个子块解码出符号。例如,如果代码可以是1位、2位、3位等,则第一本地符号解码器从压缩数据的块的第二位(即,压缩数据的块的位1至12)起对12位(第二符号解析器中的符号解码器的假设最大代码长度)的子块进行解码,第二本地符号解码器从压缩数据的块的第三位起(即,压缩数据的块的位2至13)对12位的子块进行解码,依此类推。以此方式,第二符号解析器针对在解码出第一符号时可在符号解码器中找到的每个代码长度来解码出要用作第二符号的符号。然后,第二符号解析器中的符号选择器(例如,符号选择器330)基于从符号解码器接收到的代码的长度来选择来自本地符号解码器的相应符号中的一者作为第二符号(步骤510)。例如,对于该操作,当在符号解码器中对2位代码进行解码时,从第二符号解析器中的第二本地符号解码器输出的符号由符号选择器选择作为第二符号输出。然后,符号选择器提供要从解码子系统输出的第二符号(步骤512)。
然后,解码子系统输出第一符号和第二符号(步骤514)。如上所述,对于该操作,解码子系统可简单地在解码出符号的时钟周期(或其他时间段)结束时在解码子系统的输出处输出第一符号和第二符号。电子装置中的另一个实体可读取或以其他方式获取输出符号以用于其他操作(例如,将重新创建的原始数据写入存储器、生成原始数据的流等)。
在一些实施方案中,在第二符号解析器中解码的子块比编码标准的代码的最大长度更短。对于图5中的示例,子块为12位,即,第二符号解析器的代码的配置(选定、选择等)的最大长度,而编码标准的最大代码长度为20位。因此,给定子块中的位可能将不包括完整代码(例如,将包括13、14、15等位代码中的12位),并且因此将无法被解码成符号。在这种情况下,第二符号解析器不输出符号或输出指定值(诸如空值等)。因此,不从解码子系统输出第二符号。另外,在一些实施方案中,并非每个代码长度都是准许的和/或用于对原始数据进行编码,并且因此,不对这些代码长度进行解码。例如,在这些实施方案中,不为这些代码长度提供匹配单元,和/或匹配单元存在于解码子系统中,但是被禁用、断电或以其他方式不使用。
在一些实施方案中,至少一个电子装置(例如,电子装置200)使用存储在非暂时性计算机可读存储介质上的代码和/或数据来执行本文描述的操作中的一些或全部。更具体地,当执行所描述的操作时,至少一个电子装置从计算机可读存储介质读取代码和/或数据并且执行该代码和/或使用该数据。计算机可读存储介质可以是存储代码和/或数据以供电子装置使用的任何装置、介质或它们的组合。例如,计算机可读存储介质可包括但不限于易失性和/或非易失性存储器,包括快闪存储器、随机存取存储器(例如,eDRAM、RAM、SRAM、DRAM、DDR4 SDRAM等)、非易失性RAM(例如,相变存储器、铁电随机存取存储器、自旋转移矩随机存取存储器、磁阻随机存取存储器等)、只读存储器(ROM)和/或磁性或光学存储介质(例如,磁盘驱动器、磁带、CD、DVD等)。
在一些实施方案中,一个或多个硬件模块执行本文描述的操作。例如,硬件模块可包括但不限于一个或多个处理器/核心/中央处理单元(CPU)、专用集成电路(ASIC)芯片、神经网络处理器或加速器、现场可编程门阵列(FPGA)、解压缩引擎、解码子系统、计算单元、嵌入式处理器、图形处理器(GPU)/图形核心、流水线、加速处理单元(APU)、功能块、控制器、加速器和/或其他可编程逻辑装置。当此类硬件模块被激活时,硬件模块执行操作中的一些或全部。在一些实施方案中,硬件模块包括一个或多个通用电路,该一个或多个通用电路通过执行指令(程序代码、固件等)以执行操作来进行配置。
在一些实施方案中,表示本文描述的结构和机制(例如,电子装置200或其某一部分)中的一些或全部的数据结构存储在非暂时性计算机可读存储介质上,该非暂时性计算机可读存储介质包括可由电子装置读取并且直接地或间接地使用以制造包括该结构和机制的硬件的数据库或其他数据结构。例如,数据结构可以是以高级设计语言(HDL)(诸如Verilog或VHDL)对硬件功能的行为级描述或寄存器传送级(RTL)描述。该描述可由综合工具读取,该综合工具可综合该描述以产生网表,该网表包括来自综合库的表示包括上述结构和机制的硬件的功能的门/电路元件的列表。然后,可放置并且路由网表以产生描述要应用于掩模的几何形状的数据集。然后,可在各种半导体制造步骤中使用掩模来生产对应于上述结构和机制的一个或多个半导体电路(例如,集成电路)。可选地,在计算机可存取存储介质上的数据库根据需要可以是网表(具有或没有综合库)或数据集,或者图形数据系统(GDS)II数据。
在本说明书中,变量或未指定的值(即,在没有值的特定实例的情况下对值的一般描述)由字母(诸如N、M和X)表示。如本文所使用,尽管在本说明书中的不同位置可能使用类似的字母,但是在每种情况下的变量和未指定的值不一定相同,即,一般的变量和未指定的值中的一些或全部可能预期有不同的可变量和值。换句话说,在本说明书中,用于表示变量和未指定的值的N和任何其他字母彼此不一定相关。
如本文所使用的表达“等”旨在呈现一者和/或案例,即,列表中与等相关联的要素中的“至少一者”的等同物。例如,在语句“电子装置执行第一操作、第二操作等”中,电子装置执行第一操作、第二操作和其他操作中的至少一者。此外,列表中与等相关联的要素仅仅是来自一组示例中的示例,并且在一些实施方案中,这些示例中的至少一些可能不出现。
仅出于说明和描述的目的呈现了对实施方案的前述描述。该前述描述不旨在是详尽的或将实施方案限制于所公开的形式。相应地,许多修改和变化对本领域技术人员来说将显而易见。另外地,以上公开内容不旨在限制实施方案。实施方案的范围由所附权利要求书限定。

Claims (20)

1.一种用于对压缩数据进行解压缩的电子装置,所述电子装置包括:
解码子系统,所述解码子系统包括:
符号解码器;以及
第二符号解析器,所述第二符号解析器具有多个本地符号解码器和一个符号选择器;
所述符号解码器被配置为:
从在所述压缩数据的块中的可获得符号的第一代码解码出第一符号;
将所述第一代码的长度传达到所述第二符号解析器中的所述符号选择器;以及
提供要从所述解码子系统输出的所述第一符号;并且
所述第二符号解析器被配置为:
在每个本地符号解码器中,基本上与在所述符号解码器中对所述第一符号进行解码并行地从在所述压缩数据的所述块的相应子块中的可获得符号的第一代码解码出相应的符号;
在所述符号选择器中,基于从所述符号解码器接收的所述长度来选择来自所述本地符号解码器的所述相应的符号中的一者作为第二符号;以及
由所述符号选择器提供要从所述解码子系统输出的所述第二符号。
2.如权利要求1所述的电子装置,其中:
所述压缩数据的所述块包括多个位;并且
用于每个本地符号解码器的所述压缩数据的所述块的所述相应子块包括来自所述压缩数据的所述块中的所述多个位中的不同相邻位序列,所述相邻位序列各自包括指定数量的位。
3.如权利要求2所述的电子装置,其中所述指定数量的位是基于用于所述本地符号解码器的最大代码长度设定的。
4.如权利要求1所述的电子装置,其中:
当在所述压缩数据的所述块的所述相应子块中不存在可获得符号的代码时,每个本地符号解码器不解码出相应的符号;并且
当所有的所述本地符号解码器都未解码出相应的符号时,所述符号选择器不提供要从所述解码子系统输出的第二符号。
5.如权利要求1所述的电子装置,其中来自所述符号解码器和所述本地符号解码器中的每个符号解码器包括:
一个或多个匹配单元,每个匹配单元将对应的指定长度的代码与压缩数据的所述对应的指定长度的部分进行比较,并且当找到匹配时,提供与所述指定长度的所述代码相关联的符号,其中所述符号解码器包括用于从一个位至等于用于所述符号解码器的最大代码长度的多个位的每个对应的指定长度的单独匹配单元。
6.如权利要求5所述的电子装置,其中所述压缩数据的所述对应的指定长度的所述部分包括所述压缩数据中的低位位置。
7.如权利要求5所述的电子装置,其中所述解码子系统还包括:
接收器,所述接收器接收所述压缩数据并且分别向所述符号解码器和所述第二符号解析器提供所述压缩数据的所述块和所述子块以在其中进行解码;
其中所述接收器基于由所述符号解码器和所述第二符号解析器在所述压缩数据的所述块中找到的代码的长度来选择所述压缩数据的下一块和下一子块。
8.如权利要求1所述的电子装置,其中所述电子装置还包括:
时钟源,所述时钟源向所述符号解码器和所述第二符号解析器提供用于控制所述第一符号和所述相应的符号的所述解码的定时的时钟信号,其中所述第一符号和所述相应的符号的所述解码在相同的一个或多个时钟周期中发生。
9.如权利要求1所述的电子装置,所述电子装置还包括:
至少一个附加符号解析器,所述至少一个附加符号解析器具有多个附加本地符号解码器和一个附加符号选择器,所述至少一个附加符号解析器被配置为:
在每个附加本地符号解码器中,基本上与在所述符号解码器中对所述第一符号进行解码并行地从在所述压缩数据的所述块的相应附加子块中的可获得符号的第一代码解码出相应的符号;
在所述附加符号选择器中,基于所述符号解码器和所述符号解析器中的所述代码的组合长度来选择来自所述附加本地符号解码器的所述相应的符号中的一者作为附加符号;以及
由所述附加符号选择器提供要从所述解码子系统输出的所述附加符号。
10.如权利要求1所述的电子装置,所述电子装置还包括:
实体,所述实体接收从所述解码子系统输出的所述第一符号和/或所述第二符号并且将所述第一符号和/或所述第二符号用于一个或多个后续操作。
11.一种用于在电子装置中对压缩数据进行解压缩的方法,所述电子装置包括解码子系统,所述解码子系统包括:符号解码器;以及第二符号解析器,所述第二符号解析器具有多个本地符号解码器和一个符号选择器,所述方法包括:
由所述符号解码器从在所述压缩数据的块中的可获得符号的第一代码解码出第一符号;
由所述符号解码器将所述第一代码的长度传达到所述第二符号解析器中的所述符号选择器;
由所述符号解码器提供要从所述解码子系统输出的所述第一符号;
由所述第二符号解析器中的每个本地符号解码器基本上与在所述符号解码器中对所述第一符号进行解码并行地从在所述压缩数据的所述块的相应子块中的可获得符号的第一代码解码出相应的符号;
由所述第二符号解析器中的所述符号选择器基于从所述符号解码器接收的所述长度来选择来自所述本地符号解码器的所述相应的符号中的一者作为第二符号;以及
由所述第二符号解析器中的所述符号选择器提供要从所述解码子系统输出的所述第二符号。
12.如权利要求11所述的方法,其中:
所述压缩数据的所述块包括多个位;并且
用于每个本地符号解码器的所述压缩数据的所述块的所述相应子块包括来自所述压缩数据的所述块中的所述多个位中的不同相邻位序列,所述相邻位序列各自包括指定数量的位。
13.如权利要求12所述的方法,其中所述指定数量的位是基于用于所述本地符号解码器的最大代码长度设定的。
14.如权利要求11所述的方法,所述方法还包括:
当在所述压缩数据的所述块的所述相应子块中不存在可获得符号的代码时,所述第二符号解析器中的每个本地符号解码器不解码出相应的符号;以及
当所有的所述本地符号解码器都未解码出相应的符号时,所述第二符号解析器中的所述符号选择器不提供要从所述解码子系统输出的第二符号。
15.如权利要求11所述的方法,其中:
来自所述符号解码器和所述本地符号解码器中的每个符号解码器包括一个或多个匹配单元,其中所述符号解码器包括用于从一个位至等于用于所述符号解码器的最大代码长度的多个位的每个对应的指定长度的单独匹配单元;并且
所述方法还包括:
由所述符号解码器中的每个匹配单元将对应的指定长度的代码与压缩数据的所述对应的指定长度的部分进行比较,并且当找到匹配时,提供与所述指定长度的所述代码相关联的符号。
16.如权利要求15所述的方法,其中所述压缩数据的所述对应的指定长度的所述部分包括所述压缩数据中的低位位置。
17.如权利要求15所述的方法,其中所述解码子系统包括接收器,并且所述方法还包括:
由所述接收器接收所述压缩数据并且分别向所述符号解码器和所述第二符号解析器提供所述压缩数据的所述块和所述子块以在其中进行解码;以及
由所述接收器基于由所述符号解码器和所述第二符号解析器在所述压缩数据的所述块中找到的代码的长度来选择所述压缩数据的下一块和下一子块。
18.如权利要求11所述的方法,其中:
所述电子装置包括时钟源,所述时钟源向所述符号解码器和所述第二符号解析器提供用于控制所述第一符号和所述相应的符号的所述解码的定时的时钟信号;并且
所述方法还包括:
在相同的一个或多个时钟周期中对所述第一符号和所述相应的符号进行解码。
19.如权利要求11所述的方法,其中:
所述电子装置包括至少一个附加符号解析器,所述至少一个附加符号解析器具有多个附加本地符号解码器和一个附加符号选择器;并且
所述方法还包括:
在所述附加符号解析器中的每个附加本地符号解码器中,基本上与在所述符号解码器中对所述第一符号进行解码并行地从在所述压缩数据的所述块的相应附加子块中的可获得符号的第一代码解码出相应的符号;
在所述附加符号解析器中的所述附加符号选择器中,基于所述符号解码器和所述符号解析器中的所述代码的组合长度来选择来自所述附加本地符号解码器的所述相应的符号中的一者作为附加符号;以及
由所述附加符号解析器中的所述附加符号选择器提供要从所述解码子系统输出的所述附加符号。
20.如权利要求11所述的方法,所述方法还包括:
由所述电子装置中的实体接收从所述解码子系统输出的所述第一符号和/或所述第二符号;以及
由所述电子装置中的所述实体将所述第一符号和/或所述第二符号用于一个或多个后续操作。
CN202080061995.6A 2019-09-02 2020-09-01 多符号解码器 Pending CN114342264A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/558,274 2019-09-02
US16/558,274 US10917110B1 (en) 2019-09-02 2019-09-02 Multiple symbol decoder
PCT/US2020/048938 WO2021046051A1 (en) 2019-09-02 2020-09-01 Multiple symbol decoder

Publications (1)

Publication Number Publication Date
CN114342264A true CN114342264A (zh) 2022-04-12

Family

ID=74537369

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080061995.6A Pending CN114342264A (zh) 2019-09-02 2020-09-01 多符号解码器

Country Status (5)

Country Link
US (2) US10917110B1 (zh)
EP (1) EP4026248A4 (zh)
KR (1) KR20220054651A (zh)
CN (1) CN114342264A (zh)
WO (1) WO2021046051A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10917110B1 (en) * 2019-09-02 2021-02-09 Ati Technologies Ulc Multiple symbol decoder
CN116539070B (zh) * 2023-07-04 2023-09-15 深圳砺驰半导体科技有限公司 旋转变压器的数字解码方法、芯片、系统、车机及介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5686916A (en) * 1995-12-28 1997-11-11 Philips Electronics North America Corp. Multi-code-book variable length decoder
US5808570A (en) * 1996-06-28 1998-09-15 Philips Electronics North America Corp. Device and method for pair-match Huffman transcoding and high-performance variable length decoder with two-word bit stream segmentation which utilizes the same
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
US6653955B1 (en) * 2002-05-09 2003-11-25 Lsi Logic Corporation Multi-symbol variable length code decoder
US8627165B2 (en) * 2008-03-24 2014-01-07 Micron Technology, Inc. Bitwise operations and apparatus in a multi-level system
US9241163B2 (en) * 2013-03-15 2016-01-19 Intersil Americas LLC VC-2 decoding using parallel decoding paths
US9513919B2 (en) * 2015-04-28 2016-12-06 Intel Corporation Method and apparatus for speculative decompression
US9966991B2 (en) * 2015-07-28 2018-05-08 John David Terry Method and apparatus for secure network access and group membership in a digital chaos cooperative network
US9484954B1 (en) * 2015-09-10 2016-11-01 Intel Corporation Methods and apparatus to parallelize data decompression
US10390114B2 (en) * 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
US9819359B1 (en) * 2016-12-11 2017-11-14 Microsoft Technology Licensing, Llc Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines
US9906239B1 (en) * 2017-06-28 2018-02-27 Ati Technologies Ulc GPU parallel huffman decoding
US10917110B1 (en) * 2019-09-02 2021-02-09 Ati Technologies Ulc Multiple symbol decoder

Also Published As

Publication number Publication date
EP4026248A4 (en) 2023-10-04
WO2021046051A1 (en) 2021-03-11
US11424761B2 (en) 2022-08-23
US20210067171A1 (en) 2021-03-04
KR20220054651A (ko) 2022-05-03
EP4026248A1 (en) 2022-07-13
US20210159913A1 (en) 2021-05-27
US10917110B1 (en) 2021-02-09

Similar Documents

Publication Publication Date Title
US8988257B2 (en) Data compression utilizing variable and limited length codes
US6885319B2 (en) System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms
US6819271B2 (en) Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US9479194B2 (en) Data compression apparatus and data decompression apparatus
US11424761B2 (en) Multiple symbol decoder
US20230153111A1 (en) Decompression Engine for Decompressing Compressed Input Data that Includes Multiple Streams of Data
JP2003218703A (ja) データ符号化装置及びデータ復号装置
US9287893B1 (en) ASIC block for high bandwidth LZ77 decompression
EP4217883A1 (en) Hardware-implemented file reader
JP2016052046A (ja) 圧縮装置、伸長装置およびストレージ装置
US20210294525A1 (en) Memory system
US10707897B1 (en) Command processor with multiple string copy engines for a decompression system
US11593311B2 (en) Compression system with longest match processing for generating compressed data
JP7305609B2 (ja) 受信したデータを処理する装置
US20240106459A1 (en) Compression device and compression method
JP2023132713A (ja) データ伸張装置、メモリシステム、およびデータ伸張方法
KR20220046796A (ko) 전자 장치 및 그 제어 방법
Lo et al. Design of a High-Throughput CABAC Encoder
YADAV et al. Implementation of XMATCHPRO Merge Algorithm for Lossless 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