数据压缩制造技术

技术编号:20925483 阅读:21 留言:0更新日期:2019-04-20 11:40
本公开的实施例涉及数据压缩。数据压缩(和对应的解压缩)用于压缩数据值块,其涉及多个过程,包括颜色解相关、空间解相关、熵编码和打包中的一个或多个。熵编码生成具有可变大小(就位数而言)的经编码的数据值。熵编码使用数据值的相应集合的大小指示来指示用于该集合中的经编码的数据值的位数。大小指示允许快速解析经编码的数据值(例如,并行)。

data compression

Embodiments of the present disclosure relate to data compression. Data compression (and corresponding decompression) is used to compress data value blocks, which involves multiple processes, including color decorrelation, spatial decorrelation, entropy coding and one or more of the packages. Entropy coding generates coded data values of variable size (in terms of bits). Entropy coding uses the size indication of the corresponding set of data values to indicate the number of digits of the coded data values used in the set. Size indication allows fast parsing of encoded data values (e.g., parallelism).

【技术实现步骤摘要】
数据压缩
本申请涉及数据压缩领域。
技术介绍
在数据要存储在存储器中和/或从存储器中读取的很多应用中,期望无损和有损的数据压缩二者。通过在将数据存储在存储器中之前压缩数据,可以减少传输到存储器的数据量。数据压缩特别有用的数据的示例是图像数据,诸如要存储在深度缓冲器中的深度数据、要存储在帧缓冲器中的像素数据和要存储在纹理缓冲器中的纹理数据。这些缓冲器可以是任何合适类型的存储器,诸如高速缓冲存储器、单独的存储器子系统、共享存储器系统中的存储器区域或其某种组合。图形处理单元(GPU)可以用于处理图像数据,以便确定要存储在帧缓冲器中、以输出到显示器的图像的像素值。GPU通常具有高度并行化的结构用于并行处理大块数据。使GPU(特别是那些打算在移动设备上实现的GPU)以较低的功率水平运行存在巨大的商业压力。与此相竞争的是期望在更快的GPU上使用更高质量的渲染算法,从而对相对有限的资源(存储器带宽)施加压力。然而,增加存储器子系统的带宽可能不是有吸引力的解决方案,因为将数据移入和移出GPU以及甚至在GPU内移动数据会消耗GPU的大部分功率预算。中央处理单元(CPU)也可能存在与GPU相同的问题。如上所述,减少传输到存储器的数据量的一种方式是压缩要传输到存储器和从存储器传输的数据。压缩和解压缩数据所花费的时间增加了存储器读取和写入操作的等待时间,并且因此可能影响GPU操作的速度。此外,可以允许压缩数据的速率与压缩数据被解压缩的速率不同。作为示例,通常可以允许用于压缩纹理数据的压缩过程(其通常是有损压缩过程)显著地慢于用于解压缩压缩纹理数据的解压缩过程。相反,用于压缩深度数据以便存储在深度缓冲器中或用于压缩像素数据以便存储在帧缓冲器中的压缩过程(其通常是无损压缩过程)理想地应当以与对应的解压缩过程大致相同的速率执行。英国专利No.2451911公开了一种可以压缩二维数据集的图形渲染系统。可变长度编码方案允许以如下方式压缩数据:该方式使得一些数据部分可以由比其他数据部分更少的编码位来表示,目的是跨不同的数据部分提供高水平的压缩(其可以不同)。然而,允许用于表示不同的经编码的数据值的位数变化会增加快速地解码经编码的数据的复杂性。例如,在不分析经编码的数据(例如,按顺序解码每个经编码的数据值)的情况下,可能难以确定不同的经编码的数据值之间的边界所在的位置。英国专利No.2530312描述了一种数据压缩系统,其中通过以下方式来压缩8×8块的图像数据:执行颜色解相关、空间解相关和熵编码,并且然后将所得到的经编码的数据值打包成数据包用于存储。在该专利描述的系统中,每次迭代,处理来自块的一行数据值。指数哥伦布编码的修改版本用于熵编码,其中每个系数存储前缀,以指示随后由后缀指示的值的范围。针对每个编码系数具有前缀和后缀使得同时解码多个值变得困难,因为快速地确定编码位之间的边界的位置并不简单。
技术实现思路
提供本“
技术实现思路
”是为了以简化的形式介绍一些概念,这些概念将在下面的“具体实施方式”中进一步描述。本“
技术实现思路
”不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。在本文中描述的示例中,对数据值的集合(例如,数据值的2×2集合)执行熵编码。对于数据值的每个集合,在经编码的输出中(例如,在其报头分段中)包括指示,该指示用于指示针对表示数据值的该集合的经编码的数据值中的每个经编码的数据值,使用多少位。然后,根据所指示的位数将经编码的数据值包括在经编码的输出中。该系统意味着,简化了经编码的数据值的解码(与英国专利No.2530312的系统相比),因为简单地读取指示(例如,在报头中)允许确定不同的经编码的数据值之间的位边界。换言之,指示允许快速确定对应的经编码的数据分段的大小(例如,仅在单个时钟周期中)。提供了一种使用空间解相关模块对j×k输入数据值块执行空间解相关的方法,空间解相关模块被布置为处理g×h数据值块,其中输入数据值块中的列数j是g的倍数,并且其中j×k=g×h,该方法包括:通过以下操作将输入数据值块重新组织成g×h数据值块:(i)将输入块的行中的每一行均划分为多个分段,其中每个分段均包括g个数据值,以及(ii)将分段布置成h个行以形成g×h数据值块;以及对g×h数据值块执行空间解相关,其中g×h数据值块的行按顺序被处理,使得针对输入数据值块的每一行,行的第一分段在比行的第二分段被处理的迭代更早的迭代中被处理,其中第一分段在行中位于第二分段右侧,并且其中来自第一分段的至少一个值被保存以在第二分段的空间解相关中使用。例如,g=h=8,使得g×h数据值块是8×8数据值块。另外,在一些示例中,j=16并且k=4,使得输入块的每一行被划分为两个分段。在其他示例中,j=32并且k=2,使得输入块的每一行被划分为四个分段。提供了一种数据压缩单元,被配置为对j×k输入数据值块执行空间解相关,数据压缩单元包括:处理逻辑,被配置为通过以下操作将输入数据值块重新组织成g×h数据值块:(i)将输入块的行中的每一行均划分为多个分段,其中每个分段均包括g个数据值,以及(ii)将分段布置成h个行以形成g×h数据值块,其中输入数据值块中的列数j是g的倍数,并且其中j×k=g×h;以及空间解相关模块,被配置为对g×h数据值块执行空间解相关,g×h数据块的h个行按顺序被处理,使得针对输入数据值块的每一行,行的第一分段在比行的第二分段被处理的迭代更早的迭代中被处理,其中第一分段在行中位于第二分段右侧,并且其中来自第一分段的至少一个值被保存以在第二分段的空间解相关中使用。处理逻辑可以是或者可以不是空间解相关模块的一部分。提供了一种对g×h输入数据值块执行空间重新相关,并且输出经空间重新相关的j×k输出数据值块的方法,其中输出数据值块中的列数j是g的倍数,其中j×k=g×h,并且其中j≠g,该方法包括:对g×h输入数据值块执行空间重新相关,其中g×h输入数据值块的行对应于j×k输出数据值块的行的分段,并且其中输入数据值块的行按顺序被处理,使得与输出块的特定行的第一分段相对应的输入数据值块的第一行在比与输出块的特定行的第二分段相对应的输入数据值块的第二行被处理的迭代更早的迭代中被处理,其中第一分段在输出块的特定行中位于第二分段右侧,并且其中来自输入数据值块的第一行的至少一个值被保存以在输入数据值块的第二行的空间重新相关中使用;通过将经空间重新相关的数据值的行布置到输出块的k个行中的其对应分段中,将经空间重新相关的数据值重新组织到经空间重新相关的j×k输出数据值块中;以及输出经空间重新相关的j×k输出数据值块。提供了一种数据解压缩单元,其包括:空间重新相关模块,被配置为对g×h输入数据值块执行空间重新相关,以确定经空间重新相关的j×k输出数据值块,其中输出数据值块中的列数j是g的倍数,其中j×k=g×h,并且其中j≠g,其中g×h输入数据值块的行对应于j×k输出数据值块的行的分段,并且其中空间重新相关模块被配置为:按顺序处理输入数据值块的行,使得与输出块的特定行的第一分段相对应的输入数据值块的第一行在比与输出块的特定行的第二分段相对应的输入数据值块的第二行被处理的迭代更早的迭代中被处理,其中第一分段在输出块的特定行中位于第二分本文档来自技高网
...

【技术保护点】
1.一种数据压缩方法,包括使用空间解相关模块对j×k输入数据值块执行空间解相关,所述空间解相关模块被布置为处理g×h数据值块,其中所述输入数据值块中的列数j是g的倍数,并且其中j×k=g×h,所述方法包括:通过以下操作将所述输入数据值块重新组织成g×h数据值块:(i)将所述输入块的行中的每一行均划分为多个分段,其中每个分段均包括g个数据值,以及(ii)将所述分段布置成h个行以形成g×h数据值块;对所述g×h数据值块执行空间解相关以确定经空间解相关的数据值,其中所述g×h数据值块的所述行按顺序被处理,使得针对所述输入数据值块的每一行,所述行的第一分段在比所述行的第二分段被处理的迭代更早的迭代中被处理,其中所述第一分段在所述行中位于所述第二分段右侧,并且其中来自所述第一分段的至少一个值被保存以在所述第二分段的所述空间解相关中使用;以及向熵编码模块提供所述经空间解相关的数据值以用于熵编码。

【技术特征摘要】
2017.10.06 GB 1716431.0;2017.10.09 GB 1716471.61.一种数据压缩方法,包括使用空间解相关模块对j×k输入数据值块执行空间解相关,所述空间解相关模块被布置为处理g×h数据值块,其中所述输入数据值块中的列数j是g的倍数,并且其中j×k=g×h,所述方法包括:通过以下操作将所述输入数据值块重新组织成g×h数据值块:(i)将所述输入块的行中的每一行均划分为多个分段,其中每个分段均包括g个数据值,以及(ii)将所述分段布置成h个行以形成g×h数据值块;对所述g×h数据值块执行空间解相关以确定经空间解相关的数据值,其中所述g×h数据值块的所述行按顺序被处理,使得针对所述输入数据值块的每一行,所述行的第一分段在比所述行的第二分段被处理的迭代更早的迭代中被处理,其中所述第一分段在所述行中位于所述第二分段右侧,并且其中来自所述第一分段的至少一个值被保存以在所述第二分段的所述空间解相关中使用;以及向熵编码模块提供所述经空间解相关的数据值以用于熵编码。2.根据权利要求1所述的方法,其中来自所述第一分段的列A的数据值被保存,并且被用于使用利用两个参考值的线性预测方法来计算所述第二分段的列E、G和H中的所述经空间解相关的数据值。3.根据权利要求1或2所述的方法,其中来自所述第一分段的列A的数据值被保存,并且被用于使用利用一个参考值的哈尔预测方法来计算所述第二分段的列A中的经空间解相关的数据值。4.一种数据压缩单元,被配置为对j×k输入数据值块执行空间解相关,所述数据压缩单元包括:处理逻辑,被配置为通过以下操作将所述输入数据值块重新组织成g×h数据值块:(i)将所述输入块的行中的每一行均划分为多个分段,其中每个分段均包括g个数据值,以及(ii)将所述分段布置成h个行以形成g×h数据值块,其中所述输入数据值块中的列数j是g的倍数,并且其中j×k=g×h;空间解相关模块,被配置为对所述g×h数据值块执行空间解相关,以确定经空间解相关的数据值,所述g×h数据块的h个行按顺序被处理,使得针对所述输入数据值块的每一行,所述行的第一分段在比所述行的第二分段被处理的迭代更早的迭代中被处理,其中所述第一分段在所述行中位于所述第二分段右侧,并且其中来自所述第一分段的至少一个值被保存以在所述第二分段的所述空间解相关中使用;以及熵编码模块,其中所述空间解相关模块被配置为向所述熵编码模块提供所述经空间解相关的数据值以用于熵编码。5.根据权利要求4所述的数据压缩单元,其中所述处理逻辑是所述空间解相关模块的一部分。6.根据权利要求4所述的数据压缩单元,其中所述处理逻辑在所述空间解相关模块的外部。7.根据权利要求4至6中任一项所述的数据压缩单元,其中g=h=8,使得所述g×h数据值块是8×8数据值块。8.根据权利要求7所述的数据压缩单元,其中j=16并且k=4,使得所述处理逻辑被配置为将所述输入块的所述行中的每一行均划分为两个分段。9.根据权利要求7所述的数据压缩单元,其中j=32并且k=2,使得所述处理逻辑被配置为将所述输入块的所述行中的每一行均划分为四个分段。10.根据权利要求4至9中任一项所述的数据压缩单元,其中所述空间解相关模块被配置为输出所述经空间解相关的数据值。11.根据权利要求4至10中任一项所述的数据压缩单元,其中所述空间解相关模块还被配置为在所述空间解相关之后、但是在向所述熵编码模块提供所述经空间解相关的数据值之前重新映射所述数据值,使得对经重新映射的所述数据值执行所述熵编码。12.根据权利要求11所述的数据压缩单元,其中经重新映射的所述数据值是无符号的,具有偏向零的分布。13.一种数据解压缩方法,包括对g×h输入数据值块执行空间重新相关,并且输出经空间重新相关的j×k输出数据值块,其中所述输出数据值块中的列数j是g的倍数,其中j×k=g×h,并且其中j≠g,所述方法包括:从已经对所述输入数据块的数据值应用了熵解码的熵解码模块接收所述输入数据块的所述数据值;对所述g×h输入数据值块执行空间重新相关,其中所述g×h输入数据值块...

【专利技术属性】
技术研发人员:S·芬尼
申请(专利权)人:想象技术有限公司
类型:发明
国别省市:英国,GB

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

1