当前位置: 首页 > 专利查询>辉达公司专利>正文

并行解码技术制造技术

技术编号:33197916 阅读:38 留言:0更新日期:2022-04-24 00:27
本发明专利技术公开了并行解码技术。在各种实施例中,以迭代方式对包括可变长度代码的编码序列(例如,用于未压缩数据的压缩序列)进行解码以生成解码的符号序列。在每次迭代期间,一组线程并行解码编码序列中的代码以生成符号。然后,线程组根据符号的大小计算偏移量。随后,线程组基于符号、输出地址和偏移量并行地生成解码序列的连续部分。码序列的连续部分。码序列的连续部分。

【技术实现步骤摘要】
并行解码技术
[0001]相关申请的交叉引用
[0002]本申请主张于2020年10月6日提交的美国临时专利申请“熵编码消息的数据并行解码”的优先权权益,其序列号为63/088429。本相关申请的主题内容通过引用并入本文。


[0003]各种实施例通常涉及并行处理系统,更具体地说,涉及并行解码技术。

技术介绍

[0004]无损数据编码算法和相应的数据解码算法用于减少存储和传输数据所需的资源,而不会导致任何信息丢失。通常,在计算设备上执行的无损数据编码算法将表示为固定长度“符号”的文本(literal)(例如,字节或字母字符)的源序列映射到具有减小的大小的编码“代码”序列。随后,计算设备和/或获取编码序列的任何数量的其他计算设备执行相应的数据解码算法,以将编码序列映射到解码的符号序列。符号的解码序列表示文本的解码序列,该解码序列是文本的源序列的副本。
[0005]无损数据编码算法通常基于熵编码技术,该技术针对尺寸减小或“压缩比”和解码吞吐量的组合进行了优化。在某些类型的熵编码中,代码的长度与相应符号的频率成反比。因此,相对较短的代码用于表示常用符号,相对较长的代码用于表示不常用符号。除了熵编码外,一些算法还可以将表示副本或“复制”符号的符号映射到“复制”代码。每个复制符号都是一个反向引用,用于指定源序列中文本字符串的位置和长度。
[0006]与如上所述解码编码序列相关的一个挑战是,由于代码的可变长度,以非串行方式直接寻址和正确解码编码序列内的特定代码是有问题的。结果,数据解码算法不能有效地并行化结果编码序列的解码,因此能够并行处理的客户端设备的解码吞吐量可能不必要地低。
[0007]例如,在“数据并行”解码的一种方法中,在计算设备上执行的基于子序列的编码算法将给定序列划分为符号对齐的编码子序列,并生成指定每个编码子序列的输入指针的元数据。然后,元数据与由编码子序列组成的编码序列一起存储和/或传输到其他计算设备。在计算设备和/或其他计算设备上,基于子序列的解码算法将输入指针和相应的编码子序列分配给不同的线程。对于每个线程,基于子序列的解码算法还计算一个输出指针,该指针描述了线程在解码序列中存储由解码符号表示的文本的位置。与其他线程并行,每个线程按照线程的输入指针顺序解码所分配的编码子序列中的代码,并按照线程的输出线程在解码序列中存储由解码符号表示的文本。
[0008]基于子序列执行数据并行解码的一个缺点是传输和/或存储元数据会降低压缩比。另一个缺点是,当从编码序列读取和写入解码序列时,线程很少访问内存。众所周知,稀疏访问内存会降低处理效率,因此会降低解码吞吐量。基于子序列执行数据并行解码的另一个缺点是,在复制代码引用的原始文本字符串被另一个线程存储在解码序列中之前,一个线程可以读取复制代码。为了解决这个问题,复制代码通常是为了延迟处理而存储的,这
会消耗额外的内存并进一步降低解码吞吐量。
[0009]如上所述,本领域需要的是对包括可变长度码的编码序列进行数据并行解码的更有效技术。

技术实现思路

[0010]本专利技术的一个实施例阐述了对包括可变长度代码的编码序列进行解码的方法。该方法包括基于编码序列确定第一组代码;对第一组代码进行解码以生成第一组符号;基于第一组符号确定第一组偏移;以及基于所述第一组符号、所述第一组偏移和第一地址生成解码序列的第一连续部分。
[0011]相对于现有技术,公开技术的至少一个技术优势在于,通过公开技术,包括可变长度代码的编码序列的并行解码不会降低压缩比。在这方面,因为编码流中的代码的排列被定制为便于数据并行处理,所以线程组中的线程可以协作以确定地和迭代地访问代码组以进行并行解码,而不需要本质上降低压缩比的元数据。此外,与现有技术不同,因为线程从编码序列读取连续字并将由连续符号表示的文本写入解码序列,所以解码吞吐量不会因稀疏存储器访问而降低。并且,由于线程组从头到尾递增地生成解码序列而没有任何间隙,因此复制代码不需要延迟处理(在一些现有技术中,这会对内存使用和解码吞吐量产生不利影响)。与现有技术方法相比,这些技术优势提供了一种或多种技术改进。
附图说明
[0012]为了能够详细理解各种实施例的上述特征,可以通过参考各种实施例(其中一些在附图中示出)对上述简要总结的专利技术概念进行更具体的描述。然而,应注意,附图仅示出了本专利技术概念的典型实施例,因此不应被视为以任何方式限制范围,并且存在其他同样有效的实施例。
[0013]图1是示出了配置为实现本公开一个或更多个方面的系统的框图;
[0014]图2是根据各种实施例的、包括在图1的并行处理子系统中的并行处理单元的框图;
[0015]图3是根据各种实施例的、包括在图2的并行处理单元中的通用处理集群的框图;
[0016]图4是根据各种实施例的图3的解码线程组的更详细说明;
[0017]图5是根据各种实施例的、图4的解码线程组如何生成解码序列的概念性说明;和
[0018]图6是根据各种实施例的、对包括可变长度代码的编码序列进行解码的方法步骤的流程图。
具体实施方式
[0019]在以下描述中,阐述了许多具体细节,以提供对各种实施例的更透彻理解。然而,对于本领域技术人员来说显而易见的是,可以在没有这些特定细节中的一个或更多个的情况下实践本专利技术概念。
[0020]如前所述,与解码包括可变长度代码的编码序列相关的一个挑战是,以非串行方式直接寻址和正确解码编码序列内的特定代码是有问题的。在数据并行解码的一种传统方法中,基于子序列的编码算法将给定序列划分为符号对齐的编码子序列,并生成元数据,为
编码序列中包括的每个编码子序列指定输入指针。基于子序列的解码算法使用元数据配置多个线程来并行解码编码的子序列。
[0021]上述基于子序列的传统数据并行解码方法的缺点是,传输和存储元数据降低了压缩比。另一个缺点是,由于线程在从编码序列读取和向解码序列写入时访问内存很少,因此可以降低解码吞吐量。传统的基于子序列的数据并行解码方法的另一缺点是,由于解码序列可以包括间隙,因此基于子序列的解码应用程序可以被强制存储用于延迟处理的复制代码,从而消耗额外的存储器并进一步降低解码吞吐量。
[0022]为了解决上述问题,熵编码应用180相对于表示源序列的对应符号系统地重新排列编码序列中的比特,以便于数据并行解码。以这种方式,熵编码应用180建立编码格式,该编码格式使得编码序列适于使用并行执行的一组线程或“线程组”进行解码。如本文所使用的,“线程”可以是软件线程或硬件线程。
[0023]软件线程是指在任何类型的处理单元上执行的执行线程。仅供解释之用,对熵编码应用180生成的编码序列进行解码的一组软件线程在此也称为“解码线程组”。“硬件线程”指可通过任何数量和/或类型的固定功能硬件单元(例如,复制引擎)。仅出于解释目的,对熵编码应用180生成的编码序列进行解码的一个或更多个固定功能硬件单元的组在本文中也统称为“并行解码单元”[0024]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于解码包括可变长度代码的编码序列的方法,所述方法包括:基于所述编码序列确定第一多个代码;对所述第一多个代码进行解码以生成第一多个符号;基于所述第一多个符号确定第一多个偏移;以及基于所述第一多个符号、所述第一多个偏移和第一地址生成解码序列的第一连续部分。2.根据权利要求1所述的方法,其中生成所述解码序列的所述第一连续部分包括,对于包括在所述第一多个偏移中的每个偏移,将由所述第一多个符号中包括的不同符号表示的不同文本写入所述解码序列中的不同位置,其中,所述不同位置由所述偏移和所述第一地址之和指定。3.根据权利要求1所述的方法,其中确定所述第一多个代码包括:基于第一多个输入缓冲器确定多个重新重填标志;基于所述多个重填标志和第二地址从所述编码序列读取一个或更多个连续的固定长度的字,以生成第二多个输入缓冲器;以及从包括在所述第二多个输入缓冲器中的每个输入缓冲器中提取不同的代码以生成所述第一多个代码。4.根据权利要求1所述的方法,其中解码所述第一多个代码包括:确定包括在所述第一多个代码中的第一代码包括复制代码;和基于所述第一代码和所述解码序列中的至少一个或所述第一多个代码中包括的至少第二代码来计算至少两个文本。5.根据权利要求1所述的方法,其中解码所述第一多个代码包括对所述第一多个代码执行一个或更多个解码算法。6.根据权利要求1所述的方法,其中确定所述第一多个偏移包括:基于所述第一多个符号计算所述第一多个大小并计算所述第一多个大小的前缀和。7.根据权利要求1所述的方法,还包括:将所述第一多个偏移的总和添加到所述第一地址以生成第二地址;以及基于所述编码序列和所述第二地址生成所述解码序列的第二连续部分。8.根据权利要求1所述的方法,其中确定所述第一多个代码包括:基于第一多个输入缓冲器确定多个重填标志;基于所述多个重填标志的前缀和计算第二多个偏移;基于所述第二多个偏移和第二地址从所述编码序列读取一个或更多个连续的固定长度的字,以生成第二多个输入缓冲器;以及从包括在所述第二多个输入缓冲器中的每个输入缓冲器中提取不同的代码以生成所述第一多个代码。9.根据权利要求8所述的方法,还包括:将所述第二多个偏移的总和添加到所述第二地址以生成第三地址;基于所述编码序列、所述第三地址和所述第二多个输入缓冲器确定第二多个代码;以及基于所述第二多个代码生成所述解码序列的第二连续部分。
10.根据权利要求1所述的方法,其中在多线程处理器中执行的一组线程生成所述解码序列的所述第一连续部分,并且其中所述组线程的大小与和所述编码序列相关联的线程组大小相匹配。11.一个或更多个非暂时性计算机可读介质,包括指令,当所述指令由一个或更多个处理器执行时,通过执行以下步骤使所述一个或更多个处理器解码包括可变长度代码的编码序列:基于所述编码序列确定第一多个代码;对所述第一多个代码进行解码以生成第一多个...

【专利技术属性】
技术研发人员:Y
申请(专利权)人:辉达公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1