CN114222973A - 用于解压缩包括多个数据流的压缩输入数据的解压缩引擎 - Google Patents
用于解压缩包括多个数据流的压缩输入数据的解压缩引擎 Download PDFInfo
- Publication number
- CN114222973A CN114222973A CN202080056956.7A CN202080056956A CN114222973A CN 114222973 A CN114222973 A CN 114222973A CN 202080056956 A CN202080056956 A CN 202080056956A CN 114222973 A CN114222973 A CN 114222973A
- Authority
- CN
- China
- Prior art keywords
- data
- command
- decoders
- streams
- stream
- 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
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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- 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/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
- H03M7/4043—Adaptive 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/6017—Methods or arrangements to increase the throughput
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Multimedia (AREA)
- Memory System (AREA)
Abstract
一种具有包括N个解码器和一个解压缩器的解压缩引擎的电子装置解压缩包括N个数据流的压缩输入数据。在接收到解压缩压缩输入数据的命令时,所述解压缩引擎使所述N个解码器中的每一个单独地并且与所述N个解码器中的其他解码器基本上并行地解码来自所述压缩输入数据的所述N个流中的相应一个。每个解码器输出用于生成用于解压缩所述压缩输入数据的与压缩标准相关联的命令的相应类型的解码数据流。所述解压缩器接下来由所述N个解码器所输出的所述解码数据流生成用于使用所述压缩标准解压缩所述数据以重建所述原始数据的命令。所述解压缩器接下来执行所述命令以重建所述原始数据并且将所述原始数据存储在存储器中或将所述原始数据提供给另一实体。
Description
背景技术
相关领域
一些电子装置执行用于压缩数据诸如用户或系统文件、数据流或序列等的操作。例如,电子装置可压缩数据以减小数据的大小,以实现数据在存储器中的更高效存储、数据通过网络在电子装置之间的传输等。这些电子装置中的许多电子装置使用压缩标准诸如基于Lempel-Ziv 77(LZ77)或LZ78的压缩标准和/或编码标准诸如霍夫曼译码以由原始数据生成压缩数据。
尽管压缩数据可减少存储和处置数据中所涉及的努力和能量,但压缩数据在用于许多操作之前必须解压缩。这意味着在可执行此类操作之前,电子装置必须执行操作以扭转压缩标准和/或编码标准的操作的效应并且因此恢复原始数据。在许多电子装置中,数据在软件中解压缩(即,使用软件例程或应用程序),这通常需要通用处理器以执行大量计算操作和对应存储器访问以用于解压缩压缩数据。由于大量计算操作和存储器访问,在软件中解压缩数据效率低下。
附图说明
图1呈现示出根据一些实施方案的包括数据流的压缩数据的框图。
图2呈现示出根据一些实施方案的电子装置的框图。
图3呈现示出根据一些实施方案的解压缩子系统的框图。
图4呈现示出根据一些实施方案的解码器子系统的框图。
图5呈现示出根据一些实施方案的解压缩器子系统的框图。
图6呈现示出根据一些实施方案的用于解压缩包括多个流的压缩输入数据的过程的流程图。
贯穿附图和描述,相同的附图标号指代相同的附图元件。
具体实施方式
呈现以下描述以使本领域技术人员能够制造并使用所描述的实施方案并且在特定应用和其要求的情形中提供以下描述。本领域的技术人员将容易明白对所描述的实施方案的各种修改,并且本文所定义的一般原理可适用于其他实施方案和应用。因此,所描述的实施方案并不限于所示的实施方案,而是应被赋予与本文所公开的原理和特征一致的最宽范围。
术语
在以下描述中,使用各种术语来描述实施方案。以下是对这些术语中的一个的简化和一般描述。应注意,此术语可具有大量的附加方面,为了清楚和简洁起见,本文中没有列举所述方面并且因此所述描述并不旨在限制所述术语。
功能块:功能块指代一个或多个相互关联的电路元件诸如集成电路元件、离散电路元件等的群组、集合和/或组。电路元件是“相互关联的”,原因在于电路元件共有至少一种性质。例如,相互关联的电路元件可包括在特定集成电路芯片或其部分中、制造在特定集成电路芯片或其部分上或以其他方式耦接到特定集成电路芯片或其部分,可参与给定功能(计算或处理功能、存储器功能等)的执行,可由公共控制元件和/或公共块来控制等。功能块可包括任意数量的电路元件,从单个电路元件(例如,单个集成电路逻辑门)到数百万或数十亿个电路元件(例如,集成电路存储器)。
压缩数据
在所描述的实施方案中,对压缩数据执行操作并且使用压缩数据执行操作。通常,压缩数据是对原始数据的一个或多个压缩、编码和/或其他操作的输出,所述操作导致原始数据中的至少一些被可用于重建原始数据的数据取代(以进行无损耗压缩)、被类似原始数据的数据取代(以进行有损压缩)和/或被其他值取代。在所描述的实施方案中,可压缩各种类型的数据,包括用户或系统文件(例如,音频和/或视频文件、文本文件、文档、可执行文件、操作系统文件、电子表格等)、数据流或序列(例如,音频和/或视频数据流、通过网络接口接收的数据序列等)、从传感器(例如,相机和/或扬声器、温度计、振动传感器等)捕获的数据等。在所描述的实施方案中,众多压缩、编码和/或其他操作标准、算法或格式或它们的组合可用于压缩数据,包括前缀译码标准、字典译码压缩标准、增量编码、自回归模型压缩等。
如本文所用的术语“压缩数据”和“压缩”广泛地应用于对原始数据的操作,所述操作导致原始数据中的至少一些被可用于完全或近似重建原始数据的其他数据取代。如上所述,这些操作包括各种压缩、编码和/或其他操作标准、算法或格式或它们的组合。这些数据因此不应被解译为仅限于操作诸如字典译码压缩和/或有时可被视为“压缩”操作的其他操作。
在一些实施方案中,当压缩数据时,电子装置创建包括N个单独数据流的压缩数据,其中N大于或等于一。N个数据流是压缩数据的彼此独立的块或部分,并且包括可例如在解压缩操作期间在解码器中解码并且然后用于生成用于解压缩压缩输入数据的与压缩标准相关联的命令的各类型的数据。在一些实施方案中,每个流是自包含的,原因在于每个流可被解码而不涉及所述流的数据以外的数据。图1呈现示出根据一些实施方案的包括数据流的压缩数据的框图。如在图1中可见,压缩数据100(其可以是或包括文件、数据流或序列等)包括三个数据流:流102-106,每个数据流在图1中使用不同填充模式(即,用于流102的对角线填充等)来标记。每个数据流包括相应类型的多个数据字节或数据块。例如,假设使用字典译码压缩标准来压缩压缩数据100,每个流包括字典译码压缩标准的要用于生成与用于解压缩压缩输入数据诸如文字、命令标签、距离、长度和/或其他值的与字典译码压缩标准相关联的命令的元素。对于此实例,文字是尚未被检测为在原始数据的指定字节数内重复的字符串(即,数据被压缩),命令标签是标识用于执行解压缩操作(例如,向所重建原始数据添加/附加一个或多个文字等)的指定命令的值,并且长度和距离用于指示要添加/附加到所重建原始数据的重复字符串。例如,流102可包括(并且可能仅包括)文字,流104可包括(并且可能仅包括)命令标签,并且流106可包括(并且可能仅包括)距离或长度。
在一些实施方案中,图1中的每个数据流起始于标头,即,分别为标头(HD)108、112和116,所述标头包括描述流的内容、格式化、源电子装置、路由值和/或长度等。在一些实施方案中,每个数据流包括元数据,即,分别为元数据(MD)110、114和118,所述元数据是或包括信息诸如用于从压缩数据解码相应流的解码参考、关于来自压缩数据的流的信息等。每个流的标头和元数据之后是流的主体,所述主体包括相应类型的压缩数据。流102、104和106中的每一个起始于压缩数据中的给定位置,例如,起始于给定字节、帧或块,并且除了流102之外都跟着前一个流。例如,流102的标头108可位于压缩数据的字节0处(例如,位于存储器中的起始地址、总数据流或序列中的第一位置处等),并且标头108、元数据110和流102的组合的长度可以是50kB,并且因此流104的标头112可位于50kB处,等等。图1中的流跨越图1中的线,因此流102包括压缩数据100的第一线中的一部分和压缩数据100的第二线中的一部分;这仅用于示出。如上所述,流是数据序列,诸如从文件、通过网络接口接收的数据流或序列等检索的字节或块。
在一些实施方案中,电子装置通过首先使用压缩标准压缩原始数据来从原始数据生成压缩数据(例如,压缩数据100)。例如,在一些实施方案中,电子装置使用字典译码压缩标准诸如基于LZ77或LZ78的压缩标准压缩原始数据以生成压缩数据。在压缩操作期间或之后,电子装置将压缩数据分成N个流(例如,流102-106),N个流中的每一个包括用于生成用于解压缩压缩输入数据以及标头和可能地元数据的与压缩标准相关联的相应类型的数据。例如,在一些实施方案中,对于上述基于LZ77或LZ78的压缩标准,数据类型包括文字、命令标签、距离和长度中的一些或所有,并且因此个别流可包括并且可能地仅包括文字、命令标签、距离和长度。电子装置接下来使用编码标准编码N个流中的每一个以进一步压缩每个流。例如,在一些实施方案中,电子装置使用前缀译码标准诸如霍夫曼译码以用于编码流。
尽管压缩和编码的特定序列被描述为用于创建压缩数据并且压缩数据的具体实例在图1中示出,但所描述的实施方案不限于压缩数据的序列和/或实例。通常,压缩和/或编码的任何组合可用于由原始数据产生任何版本的压缩数据,只要压缩数据可在如本文所述的解压缩引擎中解压缩。
概述
在所描述的实施方案中,电子装置执行用于解压缩包括N个数据流的压缩数据的操作。电子装置包括具有N个解码器和一个解压缩器的硬件解压缩引擎。换句话讲,解压缩引擎(其本身是功能块)包括用于N个解码器和一个解压缩器的功能块。硬件解压缩引擎中的N个解码器和一个解压缩器用于解压缩包括N个数据流的压缩数据。
在一些实施方案中,当解压缩包括N个数据流的压缩数据时,解压缩引擎首先接收命令或请求。所述命令或请求标识压缩数据(例如,标识压缩数据的存储器中的起始地址、可获取压缩数据的流或序列的位置等)并且请求压缩数据的解压缩。所述命令或请求还可标识用于压缩当由解压缩引擎在解压缩压缩数据时使用的数据的配置和设置。所述命令或请求还可包括或标识某些值,诸如初始解压缩数据或由解压缩引擎在解压缩压缩数据时使用的其他值。
在接收到所述命令或请求时,解压缩引擎使N个解码器中的每一个解码器使用译码标准(例如,前缀译码标准和/或另一译码标准)基本上并行地单独解码N个数据流中的相应数据流。对于解码操作,解压缩引擎将第一流的位置传达到N个解码器中的第一解码器中的流标头解码器(即,N个解码器中的被选择来解码第一流的解码器)。流标头解码器解码第一流中的标头,确定第一流的长度,将长度往回传达到解压缩引擎,并且N个解码器中的第一解码器继续解码第一流。解压缩引擎使用长度来确定第二流在压缩数据中的起始位置并且将第二流的位置传达到N个解码器中的第二解码器中的流标头解码器,所述流标头解码器就像第一解码器中的流标头解码器那样继续。对于剩余解码器,解压缩引擎以这种方式继续,从而确定相应流的起始位置并且开始解码器中的每一个的解码。如本文所用,因此,“基本上并行地”意味着N个解码器在近似同一时间解码相应流,如由用于在N个解码器中的每一个等中开始解码的开销抵消。应注意,在一些实施方案中,不同于以上每流标头实例,N个流中的第一流的标头(或通常压缩数据的标头)包括所有N个流的长度和/或起始位置信息。在这些实施方案中,解压缩引擎从第一流的标头(或压缩数据的标头)获取所有流的长度和/或起始位置信息,并且可使用从第一流的标头(或压缩数据的标头)获取的相应长度和/或起始位置信息在近似同一时间启动所有剩余解码器(或所有解码器)。
回顾N个数据流中的每一个包括用于生成用于解压缩压缩输入数据的与压缩标准相关联的命令的相应类型的数据,并且因此来自N个解码器中的每一个的输出是相应类型的解码数据流。例如,在用于压缩数据的压缩标准是字典译码压缩标准的实施方案中,数据类型可包括文字、命令标签、距离、长度和/或其他数据类型。对于此实例,在一些实施方案中,N个流中的一个或多个包括文字,N个流中的一个或多个包括命令标签等。在一些实施方案中,流包括仅一种特定数据类型而不是数据类型的混合。
在一些实施方案中,解码器中的至少一个生成、创建和/或初始化由所述解码器用于解码操作的解码参考(例如,一个或多个表格、列表和/或其他记录)。例如,在一些实施方案中,给定解码器从要由给定解码器解码的流中的指定位置(例如,从紧接在流的标头之后的流中的元数据字节等)获取用于生成解码参考的信息。例如,在给定解码器使用霍夫曼译码来解码流的实施方案中,给定解码器可获取用于初始化/填充解码表格的信息,所述信息包括要用于解码操作的霍夫曼代码与符号(例如,比特或字节的模式)之间的映射。
在一些实施方案中,解码器中的一些或所有包括子流解码器。解码器中的子流解码器中的每一个是可由解码器使用来解码来自正被解码的流的数据的单独部分的不同解码功能块。例如,在解码器具有M个子流解码器的实施方案中,M个子流解码器中的每一个以循环方式从流获取数据、符号等的相应下一个组块并且解码数据、符号等的所述组块。在这些实施方案中的一些中,M个子流解码器各自基本上并行地解码数据、编码符号等的下一个组块。例如,在一些实施方案中,在控制时钟的给定周期、时间段等中,M个子流解码器中的每一个解码数据、符号等的至少一个组块,使得所有M个子流解码器产生控制时钟的每个周期的一个或多个解码符号或其他解码数据段。在一些实施方案中,流组合器组合来自子流解码器的输出以转发到解压缩器。
在解码N个流中的每一个的数据之后,N个解码器将相应数据类型的解码数据流转发到解压缩引擎中的解压缩器。解压缩器从由N个解码器输出的解码数据流生成用于使用压缩标准解压缩数据以重建原始数据的命令。对于此操作,解压缩器从流中的一些或所有获取用于生成每个命令的数据,并且然后从所述数据生成命令。继续以上实例,在一些实施方案中,对于每个命令,解压缩器从相应流获取下一个文字、命令标签、距离、长度和/或其他数据类型中的一些或所有并且从其汇编命令。在此操作结束时,解压缩器具有单个命令,所述单个命令在被执行时将使解压缩器获取和/或生成下一个数据块(例如,P字节数据块)以用于重建原始数据。
在一些实施方案中,解压缩器包括操作组合器,所述操作组合器执行用于将两个或更多个命令的群组组合成聚集命令的操作。在这些实施方案中,当在解压缩器中生成命令时,两个或更多个命令被缓冲(即,临时存储),并且然后尝试将两个或更多个命令组合成聚集命令。例如,访问相邻存储器位置、相同高速缓存线等的命令可被组合成聚集命令。通过组合命令,用于执行命令(例如,存储器访问等)并且与执行所述命令相关联的操作可被更高效地执行。
解压缩器接下来执行命令以重建原始数据。对于此操作,解压缩器中的执行功能块执行命令,所述命令使执行功能块生成和/或获取下一个数据块以用于重建原始数据。例如,并且继续来自上文的字典译码压缩标准实例,命令可使执行功能块获取下一个或多个文字并且将下一个文字添加/附加到原始数据的重建(即,添加/附加到由解压缩器生成的输出文件或流)。作为另一实例,并且同样继续字典译码压缩标准实例,命令可使执行功能块从已经重建的原始数据(即,从稍早由执行功能块输出的数据)中的所标识位置读取具有指定长度的预先值并且将所述预先值添加/附加到原始数据的重建。
在一些实施方案中,解压缩器包括读取管理器功能块,所述读取管理器功能块在命令在执行功能块中被执行之前从存储器提取用于执行所述命令的数据。在这些实施方案中的一些中,命令被缓冲以等待数据从存储器返回,并且在数据返回时被执行。在一些实施方案中,解压缩器包括历史缓冲区,所述历史缓冲区是先进先出(FIFO)缓冲区,指定数目的文字和/或预先值存储在所述FIFO缓冲区中并且反馈给相关的后续命令。在这些实施方案中,文字和/或预先值最终从FIFO缓冲区读取并且附加到原始数据的重建,即,作为存储器中的解压缩数据存储,作为解压缩数据流或序列输出等。
通过使用具有N个解码器和一个解压缩器的硬件解压缩引擎来解压缩包括N个数据流的压缩数据,所描述的实施方案在硬件中执行现有装置使用软件执行的操作。硬件解压缩引擎与使用软件实体以用于执行相同操作相比更快且更高效(例如,需要更少存储器访问、使用更少电力等)。另外,使用解压缩引擎释放电子装置中的其他功能块(例如,处理子系统等)以用于执行其他操作。解压缩引擎因此提高了电子装置的总体性能,这继而改善了用户满意度。
电子装置
图2呈现示出根据一些实施方案的电子装置200的框图。如在图2中可见,电子装置200包括处理器202和存储器204。处理器202是在电子装置200中执行计算、解压缩和其他操作的功能块。处理器202包括处理子系统206和解压缩子系统208。处理子系统206包括执行通用计算、解压缩和其他操作的一个或多个功能块,诸如中央处理单元(CPU)核、图形处理单元(GPU)核、嵌入式处理器和/或专用集成电路(ASIC)。
解压缩子系统208是执行用于解压缩包括单独数据流的压缩输入数据的操作的功能块。通常,解压缩子系统208将解压缩指定压缩输入数据诸如文件、数据流或序列等的命令或请求视为输入,并且返回完全或近似重建原始数据的未压缩数据,压缩输入数据从所述未压缩数据生成。下面更详细地描述解压缩子系统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包括解压缩引擎300和存储器接口302。解压缩引擎300是执行用于解压缩压缩输入数据并且与解压缩压缩输入数据相关联的操作的功能块。解压缩引擎300包括解码器子系统304和解压缩器子系统306,所述解码器子系统304和所述解压缩器子系统306是各自执行用于解码编码数据和解压缩压缩数据并且与解码编码数据和解压缩压缩数据相关联的操作的相应部分的功能块。以下更详细地描述解码器子系统304和解压缩器子系统306。
存储器接口302是通过解压缩引擎300执行用于存储器访问(例如,存储器读取、写入、使无效、删除等)并且与存储器访问相关联的操作的功能块。例如,在一些实施方案中,从压缩输入数据重建的原始数据通过存储器接口302存储在存储器(例如,存储器204)中。作为另一实例,在一些实施方案中,通过存储器接口302从存储器检索或获取压缩输入数据以准备解压缩压缩输入数据。尽管存储器接口302在图3中示出,但在一些实施方案中,解压缩子系统208包括并且使用一个或多个附加或不同接口,诸如网络接口、IO装置接口、处理器间通信接口等。通常,在所描述的实施方案中,解压缩子系统208包括用于检索压缩输入数据、用于写出所重建原始数据和/或用于与解压缩子系统208所在的电子装置(例如,电子装置200)中的其他功能块交换通信(例如,命令等)的一个或多个功能块或装置。
应注意,对于图3至图5中的实例的以下论述,假设从存储器(例如,存储器204)获取压缩输入数据以用于解压缩并且从压缩输入数据重建的原始数据存储在存储器204中。这并不是要求。在一些实施方案中,压缩数据从其他源获取和/或存储在电子装置200中的其他目的地中或提供给电子装置200中的其他目的地等等(例如,通过网络接口、IO装置等)。另外,对于图3至图5中的实例,假设原始数据如上所述被处理以用于生成压缩输入数据,即,首先使用字典译码压缩标准(例如,基于LZ77或LZ78的标准)压缩,然后按字典译码压缩标准的数据类型(例如,文字、命令标签、距离、长度等)分成N个流,并且最终个别流使用前缀译码标准(例如,霍夫曼译码)进行单独编码。这同样并不是要求。在一些实施方案中,不同压缩、编码和/或其他操作标准、算法或格式或它们的组合可用于生成压缩输入数据,并且进行解压缩和/或使用类似于图3至图5所描述的那些的操作以其他方式扭转。
图4呈现示出根据一些实施方案的解码器子系统304的框图。解码器子系统304包括多个单独解码器400-404。解码器400-404中的每一个执行用于解码给定类型的数据以生成用于解压缩压缩输入数据(例如,文字、命令标签、距离等)的与压缩标准相关联的命令的操作。在一些实施方案中,每个解码器400-404致力于解码给定类型的数据,诸如通过使被设计用于解码给定类型的数据的电路元件包括在所述解码器中。在一些实施方案中,解码器402-404中的每一个包括类似于解码器400中所示的那些的内部元件(其为简洁起见未示出),但这并不是要求。通常,每个解码器包括足够的内部元件以解码一种或多种类型的数据。
如在图4中可见,解码器400包括读取管理器406,所述读取管理器406是执行与从存储器获取压缩输入数据432并且将压缩输入数据432的部分引导到子流解码器408-412相关联的操作的功能块。子流解码器408-412各自是解码并且以其他方式处理正在解码器400中解码的流的相应部分的功能块。解码器400还包括流标头解码器(SHD)414,所述SHD 414是执行用于处理来自正在解码器400中解码的流的标头的信息的操作的功能块。解码器400还包括缓冲区416-420,所述缓冲区416-420是执行用于缓冲(即,临时存储)正在解码器400中解码的流的部分并且将流的部分提供给对应子流解码器(例如,缓冲区416将流的部分提供给子流解码器408等)的操作的功能块。解码器400还包括流组合器422,所述流组合器422是执行用于将从子流解码器408-412输出的个别解码数据部分组合成单个解码数据流以从解码器400输出到解压缩器子系统306的操作的功能块。解码器400还包括解码参考构建器(DRB)424,所述DRB 424是执行用于初始化和填充解码参考(DREF)426的操作的功能块,信息从所述DREF426获取并且由子流解码器408-412用于解码流的部分。
在解码器子系统304的操作期间,命令标头解码器(CHD)428接收标识并请求压缩输入数据432的解压缩的命令430(其可以是消息、分组、请求和/或其他形式的通信或包括在所述通信中)。例如,在一些实施方案中,命令430通过其中存储压缩输入数据432的存储器中的绝对或相对地址、位置和/或参考来标识压缩输入数据432。在一些实施方案中,命令430还包括标识用于压缩压缩输入数据432的配置和设置的信息、标识要由解码器子系统304和/或解压缩器子系统306使用来解码和/或解压缩压缩输入数据432的配置和设置的信息。例如,在一些实施方案中,当在压缩压缩输入数据432时使用可配置或可选择编码和/或压缩选项时,命令430可包括(例如,以指定比特等为单位)选项如何被配置或选择的指示。在一些实施方案中,命令430还包括或标识要由解码器子系统304和/或解压缩器子系统306使用来解码和/或解压缩压缩输入数据432的信息。例如,在一些实施方案中,命令430包括字典代码映射(例如,包括在具有字典代码映射的分组或消息中),所述字典代码映射用于在解压缩器子系统306中初始化解压缩参考诸如表格等。在一些实施方案中,命令标头解码器428将来自命令430或与之相关联的信息(例如,字典代码映射等)传达到解压缩器子系统306。
在接收到命令430时,在一些实施方案中,命令标头解码器428向解码器400(其为要开始解码来自压缩输入数据432的流的第一/初始解码器)中的读取管理器(MGR)406传达存储器中的来自压缩输入数据432中的N个流当中的第一流(例如,压缩数据100中的流102)开始的地址或位置。使用存储器中的地址或位置,读取管理器406开始从存储器提取压缩输入数据432中的第一流。当第一流开始从存储器返回时,读取管理器406将初始部分转发到缓冲区416(即,将来自第一流的指定数目的字节存储在缓冲区416中的存储器元件中)。流标头解码器414从缓冲区416获取第一流的初始部分中的至少一些并且处理来自第一流的包括在初始部分中的标头(例如,来自流102的标头108)的信息。来自第一流的标头的信息当中有第一流的长度,流标头解码器406获取所述长度并将其发送到命令标头解码器428。命令标头解码器428基于第一流的长度计算或确定存储器中的来自压缩输入数据432中的N个流当中的第二流(例如,流104)的地址或位置,并且向解码器402(其为要开始解码来自压缩输入数据432的流的第二解码器)中的读取管理器传达存储器中的压缩输入数据中的第二流开始的地址或位置。解码器402然后使用与由解码器400执行的那些类似的操作开始解码第二流。以此方式,命令标头解码器404以级联或菊链方式启动解码器400-404,其中第一解码器之后的每个解码器基于由命令标头解码器428从先前解码器获取的信息而启动。在一些实施方案中,由于在确定N个流中的每一个的长度时解码器400-404中的每一个的起始时间的偏移,因此解码器400-404“基本上并行地”而非完全并行地解码相应流。
在一些实施方案中,不同于其中每个流的标头包括用于确定下一个流在压缩数据中的起始位置的长度信息的以上实例,N个流中的第一流的标头(或通常压缩数据的标头)包括所有N个流的长度和/或起始位置信息。在这些实施方案中,命令标头解码器428从第一流的标头(或通常压缩数据的标头)获取所有流的长度和/或起始位置信息,并且可使用从第一流的标头(或压缩数据的标头)获取的相应长度和/或起始位置信息在近似同一时间启动所有剩余解码器(即,解码器402-404)(或启动所有解码器)。
在一些实施方案中,流标头解码器414还从第一流的初始部分中的流标头信息和/或元数据(例如,标头108和/或元数据110)获取关于用于编码和/或压缩第一流的配置和/或设置的信息。例如,在一些实施方案中,流标头解码器414获取关于第一流中的数据的格式或布置(其可能不是与压缩输入数据432中的其他流中的数据相同的格式或布置)的信息。流标头解码器414然后将关于配置和/或设置的信息传达到解压缩器子系统306以在其中使用,即,使得解压缩器子系统306在处理来自第一流的数据时可考虑到配置和/或设置。
在一些实施方案中,解码器400中的解码参考构建器424还从缓冲区416获取第一流的初始部分的至少一些并且处理第一流的包括在初始部分中的元数据(例如,元数据110)以获取用于初始化并填充解码参考426的信息。例如,在一些实施方案中,第一流的第一部分中的元数据包括要用于解码子流解码器408-412中的每一个中的流的代码与符号(例如,比特或字节的模式)之间的映射。
连同将第一流的初始部分转发到缓冲区416,读取管理器406将第一流的相应部分转发到缓冲区418和420。数据的相应块或部分(例如,每时钟周期32比特数据块等)从缓冲区416-420馈送到每个对应子流解码器408-412中。子流解码器408-412中的每一个使用来自解码参考426的信息来解码使用对应解码技术接收的数据块或部分以生成一个或多个符号。在一些实施方案中,子流解码器408-412在解码相应数据块或部分时基本上并行地操作。例如,在一些实施方案中,每个子流解码器解码每一控制时钟周期的相应数据块或部分,并且因此针对每个控制时钟周期产生至少一个解码符号(即,解码数据)。子流解码器408-412中的每一个然后将相应解码数据输出到流组合器422。流组合器422从子流解码器408-412中的每一个接收符号的流并且组合来自所有解码器408-412的符号的流以生成从解码器400输出的解码数据流。例如,在一些实施方案中,流组合器422以循环方式从解码器408-412中的每一个获取下一个符号并且将下一个符号附加到聚集或组合解码数据流。流组合器422并且更广泛地解码器400然后将解码数据流输出到解压缩器子系统306。另外,解码器402-404中的每一个(例如,流组合器或其中的另一功能块)将相应解码数据流输出到解压缩器子系统306(如由来自图4的右侧上的解码器402-404的箭头所示)。
在一些实施方案中,解码器402-404中的一个或多个是解码来自压缩输入数据中的N个流当中的次级流的次级解码器。与初级流相比,次级流的解码不太复杂,并且因此次级解码器被简化并且可包括更少的内部元件。例如,在一些实施方案中,次级流包括信息诸如文字、命令标签、长度和/或距离的具有固定长度(即,固定比特或字节数)的附加值和/或其部分(其剩余部分包括在初级流中),并且因此次级流可简单地通过从次级流中检索固定长度的数据组块或块来解码。
在一些实施方案中,流中的一些或所有包括原始或未编码流数据。例如,在一些情况下,由于编码的效应,编码流使流的大小变得更大,并且因此流不会由压缩原始数据的电子装置编码。在这些实施方案中的一些中,缓冲区416-420中的一些或所有可绕过对应子流解码器(即,不在对应子流解码器中执行解码操作)并且将原始或未编码流元素直接传达到流组合器422和/或解压缩器子系统306。
图5呈现示出根据一些实施方案的解压缩器子系统306的框图。解压缩器子系统306包括用于接收由解码器子系统304输出的解码数据并且使用所述解码数据以生成用于解压缩压缩输入数据的命令的内部元件。解压缩器子系统306还包括用于执行命令以重建由其生成压缩输入数据的原始数据并且将所重建原始数据存储在存储器中的内部元件。
如在图5中可见,解压缩器子系统306中的元件包括命令汇编器500,所述命令汇编器500是执行用于汇编(即,生成、创建等)来自从缓冲区502-504获取的信息的命令的操作的功能块,所述缓冲区502-504是各自缓冲相应值诸如用于汇编命令的命令标签、长度等的功能块。解压缩器子系统306还包括操作组合器(OP COMB)508,所述OP COMB 508是执行用于在可能的情况下将命令(或由此引起的操作)组合成新的聚集命令以用于解压缩器子系统306中的后续执行的操作的功能块。解压缩器子系统306还包括缓冲区506和文字缓冲区510,所述缓冲区506和所述文字缓冲区510是执行用于缓冲由解码器子系统304输出的解码数据中的文字以供在解压缩器子系统306中使用的操作的功能块。解压缩器子系统306还包括读取调度器(SCH)512和读取返回(RETRN)514,所述SCH 512和所述RETRN 514是执行用于从存储器获取要用于在执行命令时重建原始数据的数据(例如,来自所重建原始数据的先前被写入存储器的字符串)的操作的功能块。解压缩器子系统306还包括操作控制器(OPCTRLR)516和命令执行器(CMD EXE)518,所述OP CTRLR 516和所述CMD EXE 518分别是控制命令何时被执行以及执行命令的功能块。解压缩器子系统306还包括操作(OP)高速缓存520和历史缓冲区522,所述OP高速缓存520和所述历史缓冲区522是执行用于高速缓存命令和所重建原始数据的块(例如,32字节块等)的操作的功能块,所述命令和所重建原始数据的块要用于执行命令和/或反馈给后续命令以及用于历史缓冲区522(所重建原始数据从所述历史缓冲区522写出到存储器)。
在解压缩器子系统306的操作期间,解码数据由缓冲区502-506中的每一个(例如,分别为命令标签、长度和文字)接收。命令标签和长度根据需要由命令汇编器500从缓冲区502-504检索(例如,以先进先出次序)并且由命令汇编器500使用以生成用于重建原始数据的命令。例如,单独基于命令标签(即,基于包括在命令标签中的信息或值),命令汇编器500可生成获取下一个或多个文字并将其添加/附加到所重建原始数据的命令。作为另一实例,基于命令标签以及长度和/或距离,命令汇编器500可生成从先前重建的原始数据中的所标识位置获取数据的指定大小(例如,比特或字节数)的组块或块并且将所获取的数据的组块或块添加/附加到所重建原始数据的命令。应注意,在一些实施方案中,存在两个或更多个命令汇编器(如由命令汇编器500之后的附加块所示),并且命令汇编器基本上并行地操作以用于生成如上所述的命令。
所生成命令从命令汇编器500转发到操作组合器506,所述操作组合器506收集两个或更多个单独命令的群组并且试图将两个或更多个命令组合成一个或多个聚集命令。每个聚集命令执行两个或更多个单独命令的所有操作,但可以(来自命令执行器518的)更少的计算工作量、更少的存储器和/或高速缓存存储器访问等进行。在一些实施方案中,当聚集命令不能从两个或更多个命令生成时,两个或更多个命令本身从操作组合器506单独输出。
命令或聚集命令(为了清楚和简洁起见对于此实例的剩余部分统称为“命令”)从操作组合器506转发到读取调度器512。读取调度器512分析命令以确定是否需要存储器访问以从已经被写入存储器的所重建数据获取数据的组块或块。例如,命令是否是从先前重建的原始数据复制要用于执行当前命令的数据的组块或块。当要执行存储器读取以获取数据的块或组块时,读取调度器512向存储器发送对数据的块和组块的读取请求。
命令从读取调度器512传递到操作控制器516,所述操作控制器516确定命令可被执行还是命令要保持等待数据从存储器返回。当命令可被执行时,操作控制器516将命令转发到命令执行器518以用于执行,或将命令存储在操作高速缓存520中并且使命令执行器518从操作高速缓存520获取命令以用于执行。否则,当命令要保持等到数据从存储器返回时,操作控制器516将命令转发到操作高速缓存520以被存储,同时等待数据的返回。当数据随后返回时,读取返回514将数据转发到操作控制器516,所述操作控制器516将数据存储在操作高速缓存520中并且使命令执行器518从操作高速缓存520获取命令和数据以用于执行。
执行命令使命令执行器518执行由命令指示的操作。例如,在一些实施方案中,命令是将一个或多个文字添加/附加到所重建原始数据的端部,并且因此命令执行器518从文字缓冲区510(或操作高速缓存520或历史缓冲区522)获取一个或多个文字并且将所述一个或多个文字添加/附加到所重建原始数据的端部。换句话讲,命令执行器518按次序向操作高速缓存520输出从文字缓冲区510获取的文字的数据(例如,比特或字节),并且文字的数据最终从操作高速缓存520写入所重建原始数据的存储器中的文件、流等。作为另一实例,在一些实施方案中,给定命令是从回到已经重建的原始数据中的距离获取一定长度的字符串,并且将字符串添加/附加到所重建原始数据的端部,并且因此命令执行器518执行存储器访问以从已经重建的原始数据获取字符串。由于读取调度器512稍早从存储器提取字符串,因此存储器访问应命中操作高速缓存520(或历史缓冲区522,如下所述),并且命令执行器518获取字符串并且将字符串添加/附加到所重建原始数据的端部。
在一些实施方案中,历史缓冲区522用于临时存储和反馈由命令执行器518输出的最近输出的数据(例如,文字和字符串)。在这些实施方案中,在数据的组块(例如,T比特文字、K比特或字节字符串)从命令执行器518输出时,数据的组块以先进先出次序写入历史缓冲区(或许通过操作高速缓存520)。数据的组块被保持在历史缓冲区522中达给定时间量或直到历史缓冲区522充满为止,并且然后以先进先出次序写出到存储器。如上所述,在驻留在历史缓冲区522中时,数据的组块可供用于反馈给后续命令。
尽管图3仅示出解压缩子系统208中的一个解压缩引擎,但在一些实施方案中,解压缩子系统208包括多个解压缩引擎。在这些实施方案中,多个解压缩引擎可(例如,基本上并行地)用于解压缩压缩输入数据的部分或可用于解压缩不同的/单独的压缩输入数据。例如,在一些实施方案中,多个解压缩引擎中的每一个可用于解压缩同一压缩输入数据的相应片段或节段。
尽管图4示出三个解码器400-404,但在一些实施方案中,使用不同数目的解码器。另外,在一些实施方案中,在解压缩引擎中存在不同数目的其他内部元件,诸如命令汇编器500、命令执行器518等。而且,在一些实施方案中,在解码器子系统304和解压缩器子系统306中使用不同数目的子流解码器和缓冲区。这在图4至图5中通过子流解码器之间和缓冲区之间的省略号示出。通常,在所描述的实施方案中,解压缩引擎包括足够的内部元件以执行本文所述的操作。
用于解压缩压缩输入数据的过程
在所描述的实施方案中,包括解码器子系统和解压缩器子系统(例如,解码器子系统304和解压缩器子系统306)的解压缩引擎(例如,解压缩引擎300)执行用于解压缩包括一个或多个单独数据流(例如,压缩数据100中的流102-106)的压缩输入数据的操作。图6呈现示出根据一些实施方案的用于解压缩包括多个流的压缩输入数据的过程的流程图。应注意,图6所示的操作被呈现为由一些实施方案执行的操作的一般实例。由其他实施方案执行的操作包括不同的操作、以不同次序执行的操作和/或由不同实体或功能块执行的操作。
对于图6中的实例,假设已经使用字典译码压缩(例如,使用基于LZ77或LZ78的压缩标准)和前缀译码(例如,使用霍夫曼译码标准)的组合压缩压缩输入数据。然而,这并不是要求。例如,在一些实施方案中,数据首先被编码,然后被分成流,并且最终被压缩,这与图6中的实例相反。通常,所描述的实施方案可与可使用如本文所述的解压缩引擎解压缩的压缩和/或编码的任何组合一起操作。另外,在压缩过程期间,例如,在压缩之后或期间并且在编码之前,假设压缩数据已经被分成N个数据流。如本文所述,N个数据流中的每个流包括并且可能仅包括用于生成用于解压缩压缩输入数据的与压缩标准相关联的命令的相应类型的数据。例如,在一些实施方案中,数据类型包括文字、命令标签、距离、长度和/或与字典译码压缩标准相关联的其他数据中的一些或所有,并且因此N个流中的每一个包括这些数据类型中的至少一个并且可能地仅一个。
如在图6中可见,所述过程在解压缩引擎接收到解压缩包括N个数据流的压缩输入数据的命令时开始(步骤600)。对于此操作,解压缩引擎通过信号线、总线或其他通信接口接收包括命令和/或压缩输入数据的标识的分组、消息或信号。例如,在一些实施方案中,命令的标识包括以标识命令的模式组织的一个或多个比特或字节。作为另一实例,在一些实施方案中,压缩输入数据的标识包括要从其获取压缩输入数据的位置,诸如存储器中的地址、用于网络接口装置的标识符等。
解压缩引擎然后使解压缩引擎中的N个解码器(例如,解码器408-412)中的每一个单独地并且基本上并行地解码来自压缩输入数据的N个流中的相应一个(步骤602)。此操作涉及解压缩引擎(例如,命令标头解码器、流标头解码器等)确定N个流中的每个流的压缩输入数据中的位置并且使来自N个解码器当中的不同解码器着手解码每个流。解码每个流包括每个解码器(或另一实体)执行相应解码参考(例如,解码参考426)中的查找以确定与每个流中的解码数据的块相关联的符号并且输出所述符号。
解码器各自向解压缩器(例如,解压缩器子系统306)输出压缩标准的相应类型的解码数据流(即,符号)(步骤604)。此操作涉及解码器输出相应类型的解码数据以用于生成用于解压缩压缩输入数据的与压缩标准相关联的命令。例如,解码器中的一个可输出包括命令标签的解码数据,所述命令标签要单独或与由一个或多个其他解码器输出的其他信息(例如,长度、距离等)组合使用以用于生成用于解压缩压缩输入数据的命令。
解压缩器然后由解码数据流生成用于使用压缩标准解压缩数据以重建原始数据的命令(步骤606)。如上所述,对于此操作,解压缩器从流中的一些或所有获取数据的组块或部分(例如,W比特部分)并且使用和/或组合数据的组块或部分以创建命令。例如,解压缩器可从解码数据流中的一个获取命令标签,所述命令标签标识将使执行器(例如,命令执行器518)添加/附加从原始数据的重建早期到原始数据的重建结束的先前字符串的复制命令。在这种情况下,解压缩器还获取要与命令标签组合的来自流中的第二流的距离(例如,回到原始数据中的字节数)和/或来自流中的第三流的长度(例如,字符串中的字节数)。
解压缩器然后执行命令以重建原始数据(步骤608)。如上所述,此操作涉及解压缩器中的执行器(例如,命令执行器518)执行命令以生成和/或获取字符串和/文字以用于添加/附加到原始数据的重建。解压缩器然后将所重建原始数据存储在存储器中(步骤610)。
在一些实施方案中,至少一个电子装置(例如,电子装置200)使用存储在非暂时性计算机可读存储介质上的代码和/或数据来执行本文所述的操作中的一些或所有。更具体地,至少一个电子装置在执行所描述的操作时从计算机可读存储介质读取代码和/或数据,并且执行所述代码和/或使用所述数据。计算机可读存储介质可以是存储供电子装置使用的代码和/或数据的任何装置、介质或它们的组合。例如,计算机可读存储介质可包括但不限于易失性和/或非易失性存储器,包括闪存存储器、随机存取存储器(例如,eDRAM、RAM、SRAM、DRAM、DDR4 SDRAM等)、非易失性RAM(例如,相变存储器、铁电随机存取存储器、自旋转移矩随机存取存储器、磁阻随机存取存储器等)、只读存储器(ROM)和/或磁性或光学存储介质(例如,磁盘驱动器、磁带、CD、DVD等)。
在一些实施方案中,一个或多个硬件模块执行本文所述的操作。例如,硬件模块可包括但不限于一个或多个处理器/核/中央处理单元(CPU)、专用集成电路(ASIC)芯片、神经网络处理器或加速器、现场可编程门阵列(FPGA)、解压缩引擎、计算单元、嵌入式处理器、图形处理器(GPU)/图形核、管线、加速处理单元(APU)、功能块、控制器、加速器和/或其他可编程逻辑装置。当此类硬件模块被激活时,所述硬件模块执行所述操作中的一些或全部。在一些实施方案中,硬件模块包括通过执行指令(程序代码、固件等)来配置以执行所述操作的一个或多个通用电路。
在一些实施方案中,表示本文所述的结构和机构(例如,电子装置200或其某一部分)中的一些或所有的数据结构存储在非暂时性计算机可读存储介质上,所述非暂时性计算机可读存储介质包括可由电子装置读取且直接或间接地用于制造包括所述结构和机构的硬件的数据库或其他数据结构。例如,数据结构可以是用诸如Verilog或VHDL的高级设计语言(HDL)对硬件功能性的行为级描述或寄存器传送级(RTL)描述。可通过合成工具来读取所述描述,所述合成工具可合成所述描述,以产生包括来自合成库的门/电路元件的列表的网表,所述元件表示包括上述结构和机构的硬件的功能性。所述网表然后可被放置并选路以产生描述要应用于掩模的几何形状的数据集。然后可在各种半导体制造步骤中使用所述掩模,以产生对应于上述结构和机构的一个或多个半导体电路(例如,集成电路)。替代地,计算机可访问存储介质上的数据库可以是网表(具有或不具有综合库)或数据集(根据需要)或图形数据系统(GDS)II数据。
在此说明书中,变量或未指定值(即,在没有值的特定实例的情况下对值的一般描述)由诸如N、M和X的字母表示。如本文所用,尽管在本说明书中的不同位置可能使用类似字母,但在每种情况下变量和未指定值不一定相同,即,一般变量和未指定值中的一些或所有可能预期有不同的可变量和值。换句话讲,在此说明书中,N和用于表示变量和未指定值的任何其他字母不一定彼此相关。
如本文所用的表达“等等”或“等”旨在呈现一个和/或情况,即,列表中的元素中的“至少一个”的与等相关联的等同物。例如,在语句“电子装置执行第一操作、第二操作等”中,电子装置执行第一操作、第二操作和其他操作中的至少一者。另外,列表中的与“等”相关联的元素仅仅是来自一组实例当中的实例,并且在一些实施方案中可能不会出现所述实例中的至少一些。
仅出于说明和描述的目的呈现了对实施方案的前述描述。所述描述并不意图是详尽的或将实施方案限于所公开的形式。因此,许多修改和变型对本领域的从业人员来说将是显而易见的。另外,以上公开并不意图限制实施方案。实施方案的范围由所附权利要求限定。
Claims (23)
1.一种用于解压缩包括N个数据流的压缩输入数据的电子装置,所述N个数据流已通过以下方式由原始数据生成:使用压缩标准压缩所述原始数据以创建压缩数据;将所述压缩数据分成N个流,所述N个流中的每一个包括用于生成用于解压缩所述压缩输入数据的与所述压缩标准相关联的命令的相应类型的数据;以及使用编码标准编码所述N个流中的每一个,所述电子装置包括:
存储器;以及
解压缩引擎,所述解压缩引擎包括N个解码器和一个解压缩器,所述解压缩引擎被配置来:
接收解压缩所述压缩输入数据的命令;
在所述N个解码器中的每一个中单独地并且与所述N个解码器中的其他解码器基本上并行地解码来自所述压缩输入数据的所述N个流中的相应一个,每个解码器输出用于生成用于解压缩所述压缩输入数据的与所述压缩标准相关联的命令的相应类型的解码数据流;
在所述解压缩器中由所述N个解码器所输出的所述解码数据流生成用于使用所述压缩标准解压缩所述数据以重建所述原始数据的命令;
在所述解压缩器中执行所述命令以重建所述原始数据;并且
将所述原始数据存储在所述存储器中。
2.如权利要求1所述的电子装置,其中在所述N个解码器中的一个或多个中的每一个中解码所述N个流中的所述相应一个包括:
从所述N个流中的所述相应一个中的指定位置获取用于生成解码参考的信息,所述解码参考包括由所述解码器用于解码来自所述压缩输入数据的所述相应流的信息。
3.如权利要求1所述的电子装置,其中所述N个解码器中的至少一个包括两个或更多个子流解码器和一个流组合器,其中:
所述两个或更多个子流解码器中的每一个被配置来:
从所述N个流中的由所述子流解码器所在的所述解码器解码的一个获取数据的单独部分;
单独地并且与所述两个或更多个子流解码器中的其他子流解码器基本上并行地解码所述数据的所述单独部分;并且
输出与所述数据的所述单独部分相关联的解码数据部分;并且
所述流组合器被配置来:
从每个子流解码器接收所述解码数据部分;
组合所述解码数据部分以生成所述解码数据流;并且
输出所述解码数据流。
4.如权利要求1所述的电子装置,其中所述N个解码器中的至少一个是次级解码器,在所述次级解码器中,执行简化的解码操作以用于解码所述N个流中的所述相应一个。
5.如权利要求1所述的电子装置,其中所述解压缩器包括一个或多个缓冲区和至少一个命令汇编器,其中:
所述一个或多个缓冲区中的每一个存储来自由所述N个解码器输出的所述解码数据流中的单独一个的数据;并且
所述命令汇编器:
从所述一个或多个缓冲区获取数据;并且
由所述数据生成用于解压缩所述数据的所述命令。
6.如权利要求5所述的电子装置,其中所述解压缩器包括至少两个命令汇编器,其中每个命令汇编器被配置来:
从所述一个或多个缓冲区并且直接地从未存储在缓冲区中的由所述N个解码器输出的解码数据流获取数据的单独部分;并且
由所述数据的所述单独部分生成命令,使得所述至少两个命令汇编器各自生成用于单独地并且基本上并行地解压缩所述数据的所述命令中的一些。
7.如权利要求5所述的电子装置,其中所述解压缩器包括操作组合器,所述操作组合器被配置来将两个或更多个命令组合成用于解压缩所述数据的聚集命令。
8.如权利要求1所述的电子装置,其中由所述N个解码器输出的所述数据包括以下中的一些或所有:文字、命令标签、距离和长度。
9.如权利要求1所述的电子装置,其中所述解压缩引擎包括命令标头解码器,所述命令标头解码器被配置来:
通过处理所述命令以及与所述N个解码器中的一些或所有中的流标头解码器通信中的至少一者来确定所述N个流中的每一个在所述压缩输入数据中的起始位置;并且
将所述N个流中的每一个在所述压缩输入数据中的所述起始位置传达到所述N个解码器中的所述相应一个。
10.如权利要求1所述的电子装置,其中当在所述解压缩器中执行所述命令以重建所述原始数据时,所述解压缩器被配置来:
当存储器中的数据用于执行命令时,从存储器预提取所述数据;
在从存储器预提取所述数据时缓冲所述命令;并且
在从存储器返回所述数据时执行所述命令。
11.如权利要求1所述的电子装置,其中:
所述解压缩器以指定大小的组块重建所述原始数据,并且命令能够依赖于通过先前命令重建的组块中的数据;并且
所述解压缩器将最后M个重建组块存储在历史缓冲区中,所述历史缓冲区中的所述组块能够用于反馈给后续命令并且所述组块以先进先出次序从所述历史缓冲区写入所述存储器。
12.如权利要求1所述的电子装置,其中所述编码标准是前缀译码标准并且所述压缩标准是字典译码压缩标准。
13.一种用于在电子装置中解压缩包括N个数据流的压缩输入数据的方法,所述电子装置包括存储器和解压缩引擎,所述解压缩引擎具有N个解码器和一个解压缩器,所述N个数据流已通过以下方式由原始数据生成:使用压缩标准压缩所述原始数据以创建压缩数据;将所述压缩数据分成N个流,所述N个流中的每一个包括用于生成用于解压缩所述压缩输入数据的与所述压缩标准相关联的命令的相应类型的数据;以及使用编码标准编码所述N个流中的每一个,所述方法包括:
由所述解压缩引擎接收解压缩所述压缩输入数据的命令;
在所述N个解码器中的每一个中单独地并且与所述N个解码器中的其他解码器基本上并行地解码来自所述压缩输入数据的所述N个流中的相应一个,每个解码器输出用于生成用于解压缩所述压缩输入数据的与所述压缩标准相关联的命令的相应类型的解码数据流;
在所述解压缩器中由所述N个解码器所输出的所述解码数据流生成用于使用所述压缩标准解压缩所述数据以重建所述原始数据的命令;
在所述解压缩器中执行所述命令以重建所述原始数据;以及
将所述原始数据存储在所述存储器中。
14.如权利要求13所述的方法,其中在所述N个解码器中的一个或多个中的每一个中解码所述N个流中的所述相应一个包括:
从所述N个流中的所述相应一个中的指定位置获取用于生成解码参考的信息,所述解码参考包括由所述解码器用于解码来自所述压缩输入数据的所述相应流的信息。
15.如权利要求13所述的方法,其中所述N个解码器中的至少一个包括两个或更多个子流解码器和一个流组合器,并且其中所述方法还包括:
由所述两个或更多个子流解码器中的每一个从所述N个流中的由所述子流解码器所在的所述解码器解码的一个获取数据的单独部分;
由所述两个或更多个子流解码器中的每一个单独地并且与所述两个或更多个子流解码器中的其他子流解码器基本上并行地解码所述数据的所述单独部分;
由所述两个或更多个子流解码器中的每一个输出与所述数据的所述单独部分相关联的解码数据部分;
由所述流组合器从所述两个或更多个子流解码器中的每一个接收所述解码数据部分;
由所述流组合器组合所述解码数据部分以生成所述解码数据流;以及
由所述流组合器输出所述解码数据流。
16.如权利要求13所述的方法,其中所述N个解码器中的至少一个是次级解码器,在所述次级解码器中,执行简化的解码操作以用于解码所述N个流中的所述相应一个。
17.如权利要求13所述的方法,其中所述解压缩器包括一个或多个缓冲区和至少一个命令汇编器,其中所述方法还包括:
由所述一个或多个缓冲区中的每一个存储来自由所述N个解码器输出的所述解码数据流中的单独一个的数据;
由所述命令汇编器从所述一个或多个缓冲区获取数据;以及
由所述命令汇编器由所述数据生成用于解压缩所述数据的所述命令。
18.如权利要求17所述的方法,其中所述解压缩器包括操作组合器,并且所述方法还包括:
由所述操作组合器将两个或更多个命令组合成用于解压缩所述数据的聚集命令。
19.如权利要求13所述的方法,其中由所述N个解码器输出的所述解码数据包括以下中的一些或所有:文字、命令标签、距离和长度。
20.如权利要求13所述的方法,其中所述解压缩引擎包括命令标头解码器,并且所述方法还包括:
由所述命令标头解码器通过处理所述命令以及与所述N个解码器中的一些或所有中的流标头解码器通信中的至少一者来确定所述N个流中的每一个在所述压缩输入数据中的起始位置;以及
由所述命令标头解码器将所述N个流中的每一个在所述压缩输入数据的所述起始位置传达到所述N个解码器中的所述相应一个。
21.如权利要求13所述的方法,其中在所述解压缩器中执行所述命令以重建所述原始数据包括:
当存储器中的数据用于执行命令时,由所述解压缩器从存储器预提取所述数据;
在从存储器预提取所述数据时由所述解压缩器缓冲所述命令;以及
在从存储器返回所述数据时由所述解压缩器执行所述命令。
22.如权利要求13所述的方法,其中所述解压缩器以指定大小的组块重建所述原始数据,并且命令能够依赖于通过先前命令重建的组块中的数据,并且所述方法还包括:
由所述解压缩器将最后M个重建组块存储在历史缓冲区中,所述历史缓冲区中的所述组块能够用于反馈给后续命令并且所述组块以先进先出次序从所述历史缓冲区写入所述存储器。
23.如权利要求13所述的方法,其中所述编码标准是前缀译码标准并且所述压缩标准是字典译码压缩标准。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US16/544,594 US11561797B2 (en) | 2019-08-19 | 2019-08-19 | Decompression engine for decompressing compressed input data that includes multiple streams of data |
| US16/544,594 | 2019-08-19 | ||
| PCT/US2020/046633 WO2021034749A1 (en) | 2019-08-19 | 2020-08-17 | Decompression engine for decompressing compressed input data that includes multiple streams of data |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN114222973A true CN114222973A (zh) | 2022-03-22 |
Family
ID=74645859
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202080056956.7A Pending CN114222973A (zh) | 2019-08-19 | 2020-08-17 | 用于解压缩包括多个数据流的压缩输入数据的解压缩引擎 |
Country Status (6)
| Country | Link |
|---|---|
| US (2) | US11561797B2 (zh) |
| EP (1) | EP4018551A4 (zh) |
| JP (1) | JP2022544763A (zh) |
| KR (1) | KR102839434B1 (zh) |
| CN (1) | CN114222973A (zh) |
| WO (1) | WO2021034749A1 (zh) |
Families Citing this family (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US12218697B2 (en) | 2017-10-30 | 2025-02-04 | Atombeam Technologies Inc | Event-driven data transmission using codebooks with protocol prediction and translation |
| US12136934B2 (en) | 2017-10-30 | 2024-11-05 | AtomBeam Technologies Inc. | Event-driven data transmission using codebooks with protocol adaption |
| US11561797B2 (en) * | 2019-08-19 | 2023-01-24 | Ati Technologies Ulc | Decompression engine for decompressing compressed input data that includes multiple streams of data |
| US20210133535A1 (en) * | 2019-11-04 | 2021-05-06 | Oracle International Corporation | Parameter sharing decoder pair for auto composing |
| CN114302149B (zh) * | 2021-12-24 | 2023-05-09 | 北京淳中科技股份有限公司 | 一种音视频传输方法、装置及系统 |
| JP2024096621A (ja) * | 2023-01-04 | 2024-07-17 | キオクシア株式会社 | 変換装置、メモリシステム及び伸張装置 |
| US12417136B2 (en) | 2023-03-24 | 2025-09-16 | AtomBeam Technologies Inc. | System and method for adaptive protocol caching in event-driven data communication networks |
| CN116661707B (zh) * | 2023-07-28 | 2023-10-31 | 北京算能科技有限公司 | 数据处理方法、装置及电子设备 |
| US12423283B2 (en) * | 2023-12-12 | 2025-09-23 | AtomBeam Technologies Inc. | Unified system for multi-modal data compression with relationship preservation and neural reconstruction |
| US12367142B1 (en) * | 2024-01-23 | 2025-07-22 | Mellanox Technologies, Ltd | Decompression engine supporting large match offsets using external memory |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6816093B1 (en) * | 2003-12-03 | 2004-11-09 | International Business Machines Corporation | Apparatus method and system for increased digital media recording throughput |
| US20130033389A1 (en) * | 2009-12-29 | 2013-02-07 | International Business Machines Corporation | Data value occurrence information for data compression |
| US9819359B1 (en) * | 2016-12-11 | 2017-11-14 | Microsoft Technology Licensing, Llc | Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines |
| CN107925419A (zh) * | 2015-09-25 | 2018-04-17 | 英特尔公司 | 用于使用硬件和软件进行解压缩的系统、方法和装置 |
Family Cites Families (22)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CA2020084C (en) * | 1989-06-29 | 1994-10-18 | Kohei Iseda | Voice coding/decoding system having selected coders and entropy coders |
| US5473376A (en) * | 1994-12-01 | 1995-12-05 | Motorola, Inc. | Method and apparatus for adaptive entropy encoding/decoding of quantized transform coefficients in a video compression system |
| US5654703A (en) * | 1996-06-17 | 1997-08-05 | Hewlett-Packard Company | Parallel data compression and decompression |
| US6862278B1 (en) * | 1998-06-18 | 2005-03-01 | Microsoft Corporation | System and method using a packetized encoded bitstream for parallel compression and decompression |
| US6819271B2 (en) * | 1999-01-29 | 2004-11-16 | Quickshift, Inc. | Parallel compression and decompression system and method having multiple parallel compression and decompression engines |
| US6885319B2 (en) * | 1999-01-29 | 2005-04-26 | Quickshift, Inc. | System and method for generating optimally compressed data from a plurality of data compression/decompression engines implementing different data compression algorithms |
| US6459429B1 (en) * | 1999-06-14 | 2002-10-01 | Sun Microsystems, Inc. | Segmenting compressed graphics data for parallel decompression and rendering |
| US6985853B2 (en) * | 2002-02-28 | 2006-01-10 | Broadcom Corporation | Compressed audio stream data decoder memory sharing techniques |
| KR100648258B1 (ko) * | 2004-08-02 | 2006-11-23 | 삼성전자주식회사 | 고속의 디코딩을 수행하는 파이프라인 구조의 내용 기반적응적 이진 산술 디코더 |
| US7525946B2 (en) * | 2004-08-20 | 2009-04-28 | Nokia Corporation | System and method for decoding signalling messages on FLO HR channels |
| US7496589B1 (en) * | 2005-07-09 | 2009-02-24 | Google Inc. | Highly compressed randomly accessed storage of large tables with arbitrary columns |
| JP2007043595A (ja) * | 2005-08-05 | 2007-02-15 | Nec Corp | 可変長符号復号化方法および装置ならびにデータ伸長装置 |
| US8250448B1 (en) * | 2008-03-26 | 2012-08-21 | Xilinx, Inc. | Method of and apparatus for implementing a decoder |
| US8125357B1 (en) * | 2010-03-23 | 2012-02-28 | Sandia Corporation | Deflate decompressor |
| US8174414B2 (en) * | 2010-04-13 | 2012-05-08 | Research In Motion Limited | Methods and devices for load balancing in parallel entropy coding and decoding |
| US9252805B1 (en) * | 2015-03-28 | 2016-02-02 | International Business Machines Corporation | Parallel huffman decoder |
| US9484954B1 (en) * | 2015-09-10 | 2016-11-01 | Intel Corporation | Methods and apparatus to parallelize data decompression |
| US10191912B2 (en) * | 2016-02-12 | 2019-01-29 | Oracle International Corporation | Shared decompression engine |
| US10034407B2 (en) * | 2016-07-22 | 2018-07-24 | Intel Corporation | Storage sled for a data center |
| US10606840B2 (en) * | 2017-02-13 | 2020-03-31 | International Business Machines Corporation | Parallel Lempel-Ziv decompression for highly-parallel computer architectures |
| US10685282B2 (en) * | 2018-07-25 | 2020-06-16 | WaveOne Inc. | Machine-learning based video compression |
| US11561797B2 (en) * | 2019-08-19 | 2023-01-24 | Ati Technologies Ulc | Decompression engine for decompressing compressed input data that includes multiple streams of data |
-
2019
- 2019-08-19 US US16/544,594 patent/US11561797B2/en active Active
-
2020
- 2020-08-17 KR KR1020227005432A patent/KR102839434B1/ko active Active
- 2020-08-17 WO PCT/US2020/046633 patent/WO2021034749A1/en not_active Ceased
- 2020-08-17 EP EP20855489.9A patent/EP4018551A4/en active Pending
- 2020-08-17 CN CN202080056956.7A patent/CN114222973A/zh active Pending
- 2020-08-17 JP JP2022508747A patent/JP2022544763A/ja active Pending
-
2023
- 2023-01-20 US US18/099,621 patent/US20230153111A1/en active Pending
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6816093B1 (en) * | 2003-12-03 | 2004-11-09 | International Business Machines Corporation | Apparatus method and system for increased digital media recording throughput |
| US20130033389A1 (en) * | 2009-12-29 | 2013-02-07 | International Business Machines Corporation | Data value occurrence information for data compression |
| CN107925419A (zh) * | 2015-09-25 | 2018-04-17 | 英特尔公司 | 用于使用硬件和软件进行解压缩的系统、方法和装置 |
| US9819359B1 (en) * | 2016-12-11 | 2017-11-14 | Microsoft Technology Licensing, Llc | Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines |
| CN110073604A (zh) * | 2016-12-11 | 2019-07-30 | 微软技术许可有限责任公司 | 用于硬件解压缩引擎的多码元、多格式、并行码元解码器 |
Non-Patent Citations (1)
| Title |
|---|
| EVANGELIA SITARIDI等: "Massively-Parallel Lossless Data Decompression", pages 1 - 6, Retrieved from the Internet <URL:http://doi.org/10.48550/arXiv.1606.00519> * |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2021034749A1 (en) | 2021-02-25 |
| KR20220049522A (ko) | 2022-04-21 |
| US11561797B2 (en) | 2023-01-24 |
| KR102839434B1 (ko) | 2025-07-28 |
| JP2022544763A (ja) | 2022-10-21 |
| US20210055932A1 (en) | 2021-02-25 |
| US20230153111A1 (en) | 2023-05-18 |
| EP4018551A4 (en) | 2023-08-23 |
| EP4018551A1 (en) | 2022-06-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR102839434B1 (ko) | 다중 데이터 스트림을 포함하는 압축된 입력 데이터를 압축 해제하기 위한 압축 해제 엔진 | |
| US8988257B2 (en) | Data compression utilizing variable and limited length codes | |
| CN104040541B (zh) | 用于更高效地使用存储器至cpu带宽的技术 | |
| US9390099B1 (en) | Method and apparatus for improving a compression ratio of multiple documents by using templates | |
| US11424761B2 (en) | Multiple symbol decoder | |
| US9479194B2 (en) | Data compression apparatus and data decompression apparatus | |
| US20130290615A1 (en) | Compression and decompression of data at high speed in solid state storage | |
| JP7535048B2 (ja) | キャッシュメモリの階層内のキャッシュメモリに記憶するデータの圧縮 | |
| US7800519B2 (en) | Method and apparatus for compressing and decompressing data | |
| CN103326732A (zh) | 压缩数据的方法、解压数据的方法、编码器和解码器 | |
| KR20210086708A (ko) | 캐시 라인 어드레스를 기초로 한 스트림의 커맨드 통합 | |
| US10707897B1 (en) | Command processor with multiple string copy engines for a decompression system | |
| WO2024066753A1 (zh) | 压缩数据的方法和相关装置 | |
| US11593311B2 (en) | Compression system with longest match processing for generating compressed data |
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 |