基于图案的图像数据压缩

文档序号:73126 发布日期:2021-10-01 浏览:19次 >En<

阅读说明:本技术 基于图案的图像数据压缩 (Pattern based image data compression ) 是由 杨喜乐 于 2021-03-26 设计创作,主要内容包括:本申请提供了基于图案的图像数据压缩。用于压缩二维图像元素值块的方法和压缩单元。所述方法包括:将所述二维图像元素值块划分成多个图像元素值子块;标识多个图案中的哪个图案由所述多个子块中的第一子块的图像元素值形成;以及形成经压缩图像元素值块,方式是通过利用以下各项对经压缩图像元素值块中的第一子块进行编码:(i)标识所述图案的信息,以及(ii)形成所述图案的所述第一子块的所述图像元素值。(The present application provides pattern-based image data compression. A method and a compression unit for compressing a block of two-dimensional image element values. The method comprises the following steps: dividing the block of two-dimensional image element values into a plurality of sub-blocks of image element values; identifying which pattern of a plurality of patterns is formed by image element values of a first sub-block of the plurality of sub-blocks; and forming a block of compressed image element values by encoding a first sub-block of the block of compressed image element values using: (i) information identifying the pattern, and (ii) the image element values forming the first sub-block of the pattern.)

基于图案的图像数据压缩

技术领域

本申请涉及用于压缩图像数据的方法和压缩单元,所述图像数据为例如但不限于像素数据。

背景技术

数据压缩,无论是无损的还是有损的,在将数据存储在存储器中和/或从存储器中读取数据的许多应用中都是人们所期望的。通过在将数据存储在存储器中之前压缩数据,可以减少传输到存储器的数据量。数据压缩对其而言特别有用的数据的示例是图像数据。术语“图像数据”在本文中用以指具有对应于图像的每个像素或每个样点位置的值的二维数据,所述图像是作为图形处理单元(GPU)上的光栅化过程的一部分而产生的。图像数据包括但不限于:将存储在深度缓冲器中的深度数据、将存储在帧缓冲器中的像素数据(例如,颜色数据)、将存储在纹理缓冲器中的纹理数据,以及将存储在表面法线缓冲器中的表面法线数据。这些缓冲器可以是任何合适类型的存储器,例如高速缓冲存储器、单独的存储器子系统、共享存储器系统中的存储区域或它们的某种组合。

GPU可用于处理数据以便生成图像数据。例如,GPU可以确定将存储在帧缓冲器中的图像的像素值(例如,颜色值),该像素值可以输出到显示器。GPU通常具有高度并行化的结构,用于并行处理大型数据块。使GPU(特别是那些打算在移动/嵌入式设备上实现的GPU)以较低的功率水平运行存在巨大的商业压力。与此相悖的是,希望在快速GPU上使用更高质量的渲染算法,这因而给相对有限的资源(存储器带宽)造成压力。然而,增大存储器子系统的带宽可能不是有吸引力的解决方案,因为将数据移入和移出GPU,甚至在GPU内移动数据,会消耗GPU的大部分功率预算。对于中央处理单元(CPU)以及GPU,可能面临着相同的问题。

图1示出可以在诸如移动/嵌入式设备的电子设备中实现的示例图形渲染系统100。图形渲染系统100包括主机CPU 102、GPU 104、存储器106(例如,图形存储器)和显示器108。CPU 102被配置为与GPU 104进行通信。可以是压缩数据的数据可以在GPU 104与存储器106之间沿任一方向传输。由GPU 104渲染的图像(例如,像素数据)可以存储在存储器106中并经由显示器接口116显示在显示器108上。

GPU 104包括渲染单元110、压缩/解压缩单元112和存储器接口114。图形渲染系统100被布置为使得数据可在任一方向上在(i)CPU 102与渲染单元110之间传递;(ii)CPU102与存储器接口114之间传递;(iii)存储器接口114与存储器106之间传递;(iv)渲染单元110与压缩/解压缩单元112之间传递;(v)压缩/解压缩单元112与存储器接口114之间传递;以及(vi)存储器106与显示器接口116之间传递。在一些示例中,图形渲染系统100可进一步布置成使得数据可往返于压缩/解压缩单元112传递到显示器接口116,且使得数据可从显示器接口116传递到显示器108。

在操作中,GPU 104逐个地处理图像数据的各区域。各区域可以例如表示渲染空间(即,表示例如待渲染的图像区域的二维空间)的矩形(包括正方形)部分。渲染单元110可以使用诸如Z测试和纹理映射的已知技术执行图形原语(例如但不限于,三角形和线)的扫描转换和光栅化。渲染单元110可以包含高速缓存单元以减少存储器流量。一些数据由渲染单元110经由存储器接口114(其可以包括高速缓存)读取或写入到存储器106中,但是对于其他数据,例如要存储在缓冲器(例如,帧缓冲器)中的数据,数据优选地从渲染单元110经由压缩/解压缩单元112传输到存储器接口114。压缩/解压缩单元112通过压缩数据来减少要通过外部存储器总线传输到存储器106的数据量。

显示器接口116将定义完整图像的数据发送到显示器108。可以直接从存储器106存取未压缩图像。可以经由压缩/解压缩单元112对压缩数据解压缩,并将其作为未压缩数据发送到显示器108。在替代性示例中,压缩数据可以直接被显示器接口116读取,并且显示器接口116可以包括用于以与压缩/解压缩单元112的解压缩等效的方式解压缩压缩数据的逻辑。尽管示为单个实体,但是出于增强性能的原因,压缩/解压缩单元112可以包含多个并行压缩和/或解压缩单元。

如本领域技术人员所知,渲染单元110可为渲染空间中的每个像素生成颜色值(例如RGB颜色值或RGBA颜色值),并将这些颜色值存储在帧缓冲器中。帧的颜色值的集合在本文中可以称作颜色数据、图像数据、帧缓冲数据或简称为帧数据。渲染单元110还可生成其他图像数据,例如深度数据、表面法线数据、照明数据等,并且可将那些图像数据值存储在存储器106中的一个或多个缓冲器中。在一些情况下,这些缓冲器可被称为帧缓冲器,而在其他情况下,术语“帧缓冲器”可为存储颜色值或存储要发送到显示器的数据的缓冲器保留。

在一些图形渲染系统中,存储在用于特定渲染的缓冲器中的图像数据值可由渲染单元110用于渲染一个或多个后续帧。例如,由一次渲染生成的颜色值可以在渲染一个或多个后续帧时用作纹理值,并且在一次渲染中为几何模型生成的表面法线值可以用于在渲染一个或多个后续帧期间对相同模型施加照明效应。

由于图像数据(例如,颜色数据)可能相当大,因此与将图像数据写入到存储器中的缓冲器以及从存储器中的缓冲器读取图像数据相关联的存储器带宽可能是图形处理系统和/或GPU的总存储器带宽的相当大的部分。因此,图像数据在存储在缓冲器中之前通常通过压缩/解压缩单元112被压缩,并且在从缓冲器中读取之后,通过压缩/解压缩单元112被解压缩。由于图像数据通常包括颜色数据,因此可以设计压缩方法以适合颜色数据的特定特性。在其他示例中,可针对深度数据或表面法线数据的不同特性设计压缩方法。

已知的用于压缩彩色数据的无损方法,例如在申请人的英国专利2451911、2530312和2530311中描述的那些方法,被配置为将彩色数据分成块,并且以需要将整个块一起解压缩的方式单独压缩每个块。例如,在这些压缩方法中,可以将8x8像素块的颜色值一起压缩。然后为了访问该块中的任何特定颜色值,必须解压缩整个压缩的8×8像素块。

然而,渲染单元110通常不需要块中的所有数据(例如,颜色值)来渲染后续帧。例如,渲染单元110可能仅需要块中的与几个像素有关的颜色值。因此,仅仅为了存取块中的少量颜色值就必须对整个块进行解压缩可能使得渲染单元110存取帧缓冲器中的颜色数据效率低下。

已经尝试通过高速缓存解压缩块来解决此问题,但在许多情况下,具有高速缓存不会显著提高存取帧缓冲器中的数据(例如,颜色值)的效率。

下面描述的实施方案仅以示例的方式提供,而不构成对解决已知图像数据压缩和/或解压缩方法的任何或所有缺点的实施方式的限制。

发明内容

提供本发明内容是为了介绍在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

本文描述了用于压缩二维图像元素值块的方法和压缩单元。所述方法包括:将所述二维图像元素值块划分成多个图像元素值子块;标识多个图案中的哪个图案由所述多个子块中的第一子块的图像元素值形成;以及形成经压缩图像元素值块,方式是通过利用以下各项对经压缩图像元素值块中的第一子块进行编码:(i)标识所述图案的信息,以及(ii)形成所述图案的所述第一子块的所述图像元素值。

第一方面提供了一种压缩二维图像元素值块的方法,所述方法包括:将所述二维图像元素值块划分成多个图像元素值子块;标识多个图案中的哪个图案由所述多个子块中的第一子块的图像元素值形成;以及形成经压缩图像元素值块,方式是通过利用以下各项对经压缩图像元素值块中的第一子块进行编码:(i)标识所述图案的信息,以及(ii)形成所述图案的所述第一子块的所述图像元素值。

所述方法还可以包括:标识多个图案中的哪个图案由所述多个子块中的另一子块的图像元素值形成;以及利用以下各项对经压缩图像元素值块中的另一子块进行编码:(i)标识所述另一子块的所述图案的信息,以及(ii)形成所述另一子块的所述图案的所述另一子块的所述图像元素值。

所述方法还可以包括:确定所述多个子块中的第二子块是否匹配所述第一子块;以及响应于确定所述第二子块与所述第一子块匹配,利用指示所述第二子块与所述第一子块匹配的信息来编码所述经压缩图像元素值块中的所述第二子块。

多个子块可以被排序,并且如果第二子块在顺序中紧跟第一子块,则可以执行确定。

多个子块可以被排序,并且如果第一子块和第二子块在顺序中被单个子块分开,则可以执行确定。

所述方法还可以包括:确定一个或多个子块集合中的每个子块是否匹配所述第一子块,所述集合中的所述一个或多个子块与所述第一子块具有一个或多个预定关系之一;以及响应于确定所述一个或多个子块集合中的每个子块与所述第一子块匹配,利用标识所述子块属于与所述第一子块匹配的子块集合的信息,对所述经压缩图像元素值块中的所述一个或多个子块集合中的每个子块进行编码。

如果子块集合和第一子块形成子块行,则所述子块集合与第一子块具有预定关系。

如果子块集合和第一子块形成子块列,则所述子块集合与第一子块具有预定关系。

如果子块集合和第一子块形成AxB个子块的块,其中A和B是大于或等于一的整数,则所述子块集合与第一子块具有预定关系。

所述方法还可以包括从掩码确定多个子块中与第一子块具有一个或多个预定关系之一的一个或多个子块集合。

形成经压缩图像元素值块可包括形成经压缩图像元素值块的标头,其中所述标头包括标识由所述第一子块的所述图像元素值形成的所述图案的所述信息。

形成经压缩图像元素值块可以包括形成经压缩图像元素值块的主体,其中主体包括形成图案的第一子块的图像元素值。

多个图案中的每个图案可以定义定义子块中的图像元素值的数目和所述图像元素值的位置。

每个图像元素值可以是颜色值。

每个图像元素值可以是表示颜色值的压缩值。

每个压缩值可以包括用于多个颜色通道中的每个颜色通道的子值。

二维图像元素值块可包括由图形处理单元上的光栅化过程产生的图像元素值。

每个子块可以包括NxM个图像元素值块,其中N和M是大于或等于一的整数。

N和M可以等于二。

所述方法还可以包括将经压缩图像元素值块存储在存储器中。

多个图案可以不包括子块中的图像元素值的所有可能图案。换句话说,多个图案可以包括比子块中的图像元素值的所有可能图案更少的图案。经压缩图像元素值块可以包括用于多个子块中的每个子块的编码格式字段。每个编码格式字段可以具有固定长度。子块的编码格式字段可标识(i)多个图案中的一个图案或(ii)匹配所述子块的另一子块。对于其对应的编码格式字段标识一个图案的每个子块,经压缩图像元素值块可以包括图像元素值单元,该图像元素值单元包括形成所标识的图案的一个或多个图像元素值。图像元素值单元可以被打包在经压缩图像元素值块的主体中。

第二方面提供了一种压缩二维图像元素值块的压缩单元,所述二维图像元素值块可被划分成多个图像元素值子块,所述压缩单元包括:图案选择单元,其被配置为标识多个图案中的哪个图案由所述多个子块中的第一子块的图像元素值形成;图像元素值选择单元,其被配置为标识形成所标识的图案的第一子块的图像元素值;以及压缩块生成单元,其被配置为形成经压缩图像元素值块,方式是通过利用以下各项对经压缩图像元素值块中的第一子块进行编码:(i)标识所标识的图案的信息,以及(ii)所标识的图像元素值。

压缩单元还可以包括匹配单元,其被配置为:从掩码确定所述多个子块中与所述第一子块具有一个或多个预定关系中之一的一个或多个子块集合,确定一个或多个子块的所述集合中的每个子块是否匹配所述第一子块,以及响应于确定一个或多个子块的所述集合中的每个子块匹配所述第一子块,用标识所述子块属于与所述第一子块匹配的子块集合的信息编码所述经压缩图像元素值块中的一或多个子块的所述集合中的每个子块。

第三方面提供了一种压缩单元,其被配置为执行第一方面的方法。

如本文所述的压缩单元、解压缩单元和压缩/解压缩单元可以在集成电路上的硬件中实现。可以提供一种在集成电路制造系统中制造本文所述的压缩单元、解压缩单元或压缩/解压缩单元的方法。可以提供一种集成电路定义数据集,当在集成电路制造系统中被处理时,该集成电路定义数据集配置该系统以制造压缩单元、解压缩单元或压缩/解压缩单元。可以提供一种非暂态计算机可读存储介质,其上存储有压缩单元、解压缩单元或压缩/解压缩单元的计算机可读描述,所述计算机可读描述当在集成电路制造系统中处理时使得集成电路制造系统制造体现压缩单元、解压缩单元或压缩/解压缩单元的集成电路。

可以提供一种集成电路制造系统,其包括:非暂态计算机可读存储介质,其上存储有本文所述的压缩单元、解压缩单元或压缩/解压缩单元的计算机可读描述;布局处理系统,其被配置为处理该计算机可读描述,以便生成体现压缩单元、解压缩单元或压缩/解压缩单元的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述来制造压缩单元、解压缩单元或压缩/解压缩单元。

可以提供用于执行如本文所述的方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂态计算机可读存储介质,当在计算机系统处执行时,所述计算机可读指令使计算机系统执行如本文所述的方法。

如对本领域的技术人员显而易见的,上述特征可以适当地组合,并且可以与本文所述的示例的任何方面组合。

附图说明

现在将参考附图详细描述示例,在附图中:

图1是示例图形渲染系统的框图;

图2是用于压缩图像数据块的基于图案的示例方法的流程图;

图3是示例图像数据块的示意图;

图4是被划分成多个子块的图3的示例图像数据块的示意图;

图5是2×2子块的示例图案集合的示意图;

图6是示出使用第一示例的基于图案的压缩方法来压缩图像数据块的示意图;

图7是示出使用第二示例的基于图案的压缩方法来压缩图6的图像数据块的示意图;

图8是示出形成子块行的示例子块集合的示意图;

图9是示出形成子块列的示例子块集合的示意图;

图10是示出形成子块的2×2块的示例子块集合的示意图;

图11是示出使用第三示例的基于图案的压缩方法来压缩图6的图像数据块的示意图;

图12是示出用于多个基准的图5的2×2图案的频率的图;

图13是示出用于经压缩图像数据块的示例格式的示意图;

图14是示出图6的图像数据块的示例经压缩图像数据块的示意图;

图15是示出用于经压缩超级图像数据块的示例格式的示意图;

图16是示例压缩单元的框图;

图17是示例解压缩单元的框图;

图18是对根据图2的方法压缩的经压缩图像数据块进行解压缩的示例方法的流程图;

图19是标识与子块相关联的图案的示例方法的流程图;

图20是标识与子块相关联的图像元素值的示例方法的流程图;

图21是示出当针对多个基准根据图2的方法压缩颜色数据时的压缩比的图;

图22是其中可以实现这里描述的压缩单元、解压缩单元和/或压缩/解压缩单元的示例计算机系统的框图;以及

图23是用于生成体现本文所述的压缩单元、解压缩单元或压缩/解压缩单元的集成电路的示例集成电路制造系统的框图。

附图示出各种示例。技术人员将理解,附图中所示的元件边界(例如,框、框的组,或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同附图标记来指示相似特征。

具体实施方式

通过示例的方式给出以下描述,以使本领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施例,并且对所公开的实施例的各种修改对于所属领域的技术人员而言将是显而易见的。仅通过示例的方式描述实施例。

如上所述,以需要解压缩整个块以存取各个值的方式在块的基础上压缩图像数据使得随机存取图像数据的逻辑(诸如,渲染逻辑)难以高效率地存取数据。申请人的英国专利申请1912183.9、1912184.7、1912795.0和1912800.8描述了一种压缩图像数据的无损方法,其允许随机访问压缩数据(即,可以访问压缩块中的各个值而不必解压缩整个块),在此通过引用将其全部内容并入本文。

具体地,所标识的英国专利申请描述了用于压缩图像数据块的方法和压缩单元,该图像数据块包括多个图像元素值(例如颜色值),该多个图像元素值可被划分成至少第一值和第二值(例如第一通道颜色值和第二通道颜色值),使得图像数据至少包括第一值的二维块(例如用于第一颜色通道的颜色值的二维块)和第二值的二维块(例如用于第二颜色通道的颜色值的二维块)。使用一个或多个固定长度压缩算法分别压缩每个二维值块。

特别地,通过使用固定长度压缩算法压缩二维值块的全部或一部分来压缩一个或多个二维值块,其中二维块(或其一部分)中的值由共同基础信息和用于块(或其一部分)中的每个值的固定长度参数来表示,该固定长度参数的长度为零个、一个或一个以上的位。接着由共同基础信息和固定长度参数形成经压缩图像数据块。通过使用固定长度压缩算法压缩值的二维块(或其一部分),该二维块(或其该部分)中的所有值均使用相同数目的位表示,因此可以容易地标识与特定值相关的压缩数据的部分。

然而,测试已经表明,一些图形处理系统可以从存储器一次访问或获取图像元素值(例如,颜色值)的小块,而不是单个图像元素值。小块的大小在本文中可被称为最小图像元素值获取大小。例如,一些图形处理系统可以一次访问2×2的图像元素值块(例如颜色值)。可基于存储器突发大小(即,可经由单个存储器存取请求存取的存储器的量)来选择最小图像元素值获取大小。在这些系统中,不是以允许访问各个图像元素值的方式来压缩图像元素值,而是压缩最小图像元素值获取大小的块(例如,2×2块)可能更有效。发明人已经认识到,可以使用基于图案的压缩方法来有效地压缩这样的小块,其中不是将每个图像元素值存储在小块中,而是基于图像元素值分布图案来编码小块。具体地,可以通过标识块中的图像元素值的图案和唯一图像元素值的信息来对小块进行编码。每个图案标识图案中的唯一图像元素值的数目及其位置。

因此,本文描述用于压缩包括二维图像元素值块的图像数据块的方法、压缩单元和图形处理单元。所述方法包括(i)将二维图像元素值块分成多个图像元素值子块;以及(ii)基于块中的图像元素值的图案和形成图案的子块的图像元素值,对子块中的一个或多个进行编码。在一些情况下,所述方法还可以包括匹配编码,其中如果具有一个或多个预定关系之一的子块集合都匹配,则可以如上所述(使用图案和形成图案的子块的图像元素值)编码子块之一,并且可以通过标识匹配子块来编码集合中的剩余子块。本文所述的方法简单且灵活,并且因此尤其适用于极低预算的图形处理单元。

现在参考图2,其示出用于压缩图像数据块的基于图案的示例方法200。方法200开始于步骤202,在此步骤,接收待压缩的图像数据块。

图像数据块是对应于图像中的二维像素块或样本的图像数据部分。因此,图像数据块包括二维图像元素值块。术语“图像元素值”在这里用于指图像数据的单元。因此,图像元素值取决于图像数据的类型。例如,对于颜色数据,图像元素值可以是像素值或像素颜色值(例如,其可以由通道颜色值的集合定义),或通道颜色值;对于深度数据,图像元素值可以是深度值;对于表面法线数据,图像元素值可以是表面法线方向(例如,其可以由表示单元向量或一个或多个角度的一组值来定义);并且对于纹理数据,图像元素值可以是纹理像素值(例如,其可以由颜色值或颜色值集合定义)。在一些情况下,代替对应于作为光栅化过程的一部分而产生的原始图像数据的图像数据,图像数据可为原始图像数据的经压缩版本。例如,在一些情况下,图像数据可以包括压缩的像素颜色值、压缩的纹理像素值等。在这些情况下,每个图像元素值可以是压缩颜色值、压缩纹理像素值等。

图像数据块可以是任何D×E图像元素值块,其中D和E是大于或等于1的整数。D和E可以相同,或者D和E可以不同。例如,图像数据块可包括32×32像素块、16×16像素块或8×8像素块的图像元素值。在使用压缩来在实施基于图块的渲染的图形处理系统中压缩图像数据的情况下,图像数据块可对应于图块(例如,对应于32×32像素图块的32×32像素块)、对应于图块集合(例如,对应于四个16×16像素图块的32×32像素块)或对应于图块的一部分(例如,对应于32×32像素图块的四分之一的16×16像素块)。图3示出图像元素值的示例8×8块300,其包括用于块中的六十四个像素中的每一个的一个图像元素值(Vx,y其中x和y分别表示行和列的编号)。

一旦已经接收到图像数据块,方法200就前进至步骤204。

在步骤204,图像数据块被分成多个子块。每个子块包括NxM图像元素值块,其中N和M是大于或等于1的整数。N和M可以相同,或者N和M可以不同。可以使用任何适当的标准来选择N和M,尽管希望保持N和M较小,以便减少子块中的图像元素值的可能图案的数目。在一些情况下,可以选择N和M,使得子块对应于从存储器中获取的最小块大小。例如,其中图形处理系统被配置为从存储器获取2×2图像元素值块,N和M可设定为2,使得每个子块包括2×2图像元素值块。其他示例子块大小包括但不限于2×4、4×2和4×4。

例如,如图4中所示,图3的图像元素值的8×8块300可被划分成图像元素值的十六个2×2子块4020-40215。因此,每个子块4020-40215包括四个图像元素值。例如,子块0(SB0)4020包括图像元素值的8x8块300的前两行(V0,0、V0,1、V1,0和V1,1)中的每一者中的前两个图像元素值。一旦图像数据块已被细分成多个图像元素值子块,方法200前进至步骤206。

在步骤206,选择图像元素值的一个子块用于编码。然后,方法200前进至步骤208。在一些情况下,可能需要以特定顺序处理子块。例如Z-线顺序或扫描顺序。对于本领域技术人员来说,显然这些只是示例的顺序,并且子块可以以任何适当的顺序处理。

在步骤208,确定多个图像元素图案中的哪个图案与由所选择的子块的图像元素值形成的图案匹配。每个图案具有图案中的多个图像元素值,并且定义子块中的那些图像元素值的(一个或多个)位置。因此,子块可以从以下项重构:(i)图案;以及(ii)形成图案的图像元素值。

例如,图5示出2×2块中的图像元素值的十五种可能图案5020-50214。已经根据图案中的唯一图像元素值的数目对图案进行了分组。特别地,存在一个图案5020,称为图案1(P1)图案,其由单个图像元素值(V1)形成。因此,如果子块中的所有图像元素值都相同,则子块的图像元素值形成P1图案。注意,除了恒定颜色(例如背景或透明颜色)的区域之外,颜色数据通常不包含许多相同的像素颜色值。有七个图案5021-5027,其由两个图像元素值(V1、V2)形成,在此称为图案2(P2)图案。图案2图案可以被分成图案5021、5022和5027,其中每个图像元素值(V1、V2)在图案中出现两次;以及图案5023-5026,其中图像元素值之一(V1)在图案中出现一次,而另一图像元素值(V2)在图案中出现三次。有六个图案5028-50213,其在此可以被称为图案3(P3)图案,其由三个图像元素值(V1、V2、V3)形成。在P3图案中,图像元素值之一(V1、V2或V3)在图案中出现两次。只有一个图案50214被称为图案4(P4)图案,其由四个图像元素值(V1、V2、V3和V4)形成。因此,如果子块中的所有图像元素值都不同,则子块的图像元素值形成P4图案。

在一些情况下,可与子块相关联或匹配的多个可能图案包括子块中的图像元素值的所有可能图案(例如,图5中所示的所有图案5020-50214)。然而,如下文更详细地描述,在一些情况下,可与子块相关联的多个可能图案可包括少于图像元素值的所有可能图案。例如,多个可能图案可能不包括诸如图5的示例中的P2G图案的非常见图案。在这些情况下,如果子块的图像元素值不匹配其他多个样式中的任一者,则将所述子块标识为Pk图案,其中k是子块中的图像元素值的数目(例如,对于2×2子块来说,k=4)。

现在参考图6,其示出标识与由子块的图像元素值形成的图案匹配的多个图案中的图案的示例。具体而言,图6示出包括八个2×2子块6020-6027的图像数据的示例4×8块600,其中所述多个图案包括图5所示的所有十五个图案5020-50214。在该示例中,图像元素值在0和7之间,但是对于本领域技术人员而言将明显的是,这仅是示例并且图像元素值可以具有任何范围的值。

可以看出,图6中的子块0(SB0)6020与图5的图案P4相关联,因为子块0(SB0)6020包括四个唯一图像元素值(即,子块中的所有图像元素值都不同);子块1和4(SB1和SB4)6021和6024与图5的图案P3C相关联,因为它们各自具有三个唯一图像元素值,并且重复图像元素值在子块的位置1,0和1,1中,其中位置格式x,y表示子块的行x和列y;子块2、3、6和7(SB2、SB3、SB6和SB7)6022、6023、6026和6027与图5的图案P2B相关联,因为这些子块中的每一者具有两个唯一图像元素值,子块的位置0,0和1,0中的图像元素值相同,并且位置0,1和1,1中的图像元素值相同;并且子块5(SB5)6025与图5的图案P3B相关联,因为子块5(SB5)6025包括三个唯一图像元素值,并且重复的图像元素值在子块的位置0,0和1,0中。

返回图2,一旦已经标识了与由所选子块的图像元素值形成的图案匹配的多个图案中的图案,方法200就前进至步骤210。

在步骤210,形成或更新压缩块,使得通过(i)标识在步骤208中选择的图案的信息和(ii)形成该图案的所选择的子块的图像元素值,将所选择的子块编码在经压缩图像元素值块中。

在一些情况下,标识与子块相关联的图案的信息可以是索引。具体地,多个图案中的每一个可以与唯一的索引或值相关联。例如,表1示出示例四位索引及其值,以唯一地标识图5的十五个图案中的每一个。

表1

存储在压缩块中以能够从与其相关联的图案重构子块的图像元素值的数目基于形成该图案的图像元素值的数目。例如,P1图案由单个图像元素值形成,因此与P1图案相关联的子块可以从单个图像元素值重构(V1);P2图案由两个图像元素值(V1,V2)形成,因此与P2图案相关联的子块可以从两个图像元素值重构;P3图案由三个图像元素值(V1、V2、V3)形成,因此可以从三个图像元素值重构与P3图案相关联的子块;并且P4图案由四个图像元素值(V1、V2、V3、V4)形成,因此与P4图案相关联的子块可以从四个图像元素值重构。因此,如果子块与具有比所述子块中的图像元素值的数目少的图像元素值的图案(例如,图5的2×2子块示例中的P1图案、P2图案或P3图案)相关联,则可通过仅将所述数目的图像元素值存储在压缩块中来压缩所述子块。然而,如果子块与具有与子块相同数目的图像元素值的图案(例如,2×2子块示例中的P4图案)相关联,则不压缩子块,并且将子块的每个图像元素值存储在压缩块中。

在可与子块相关联或与之匹配的多个可能图案包括子块中的图像元素值的所有可能图案(例如,图5中所示的所有十五个图案5020-50214)的情况下,形成与子块相关联的图案的图像元素值的数目将等于所述子块中的唯一图像元素值的数目。因此,在这些情况下,可以仅将子块的唯一图像元素值存储在压缩块中。换句话说,在子块中多次出现的任何图像元素值可仅在压缩块中存储一次。然而,在可与子块相关联的多个可能图案包括少于所有可能图像元素值图案的情况下,如果子块的图像元素值不匹配其他多个图案中的任一者,则将所述子块标识为Pk图案,其中k是子块中的图像元素值的数目(例如,对于2×2子块而言,k=4),即使所述子块不包括k唯一图像元素值。在这些情况下,即使子块包括少于k唯一图像元素值,也可以在子块的压缩块中存储k图像元素值。

现在参考图6,其示出对于多个子块图案对中的每一个,可以将哪些图像元素值存储在压缩块中。具体而言,如上所述,图6显示示例4×8图像数据块600,其包括八个2×2子块6020-6027其中所述多个图案包括图5所示的所有十五个图案5020-50214。如604处所示,每个子块已与图5的十五个图案中的一者匹配。具体而言,可知子块6020-6027已分别映射至图形P4、P3C、P2B、P2B、P3C、P3B、P2B、P2B。

在606处一般地示出可以存储在每个子块的压缩块中的图像元素值。具体来说,子块0(SB0)6020已与图5的由四个图像元素值(V1、V2、V3、V4)形成的图案P4相关联,因此子块0(SB0)6020的四个图像元素值(1、0、7、4)中的每一者存储于所述压缩块中;子块1(SB1)6021已与图5的由三个图像元素值(V1、V2、V3)形成的图案P3C相关联,因此三个图像元素值(1、3和5)存储在压缩块中;并且子块2(SB2)6022已与图5的由两个图像元素值(V1、V2)形成的图案P2B相关联,因此两个图像元素值(5、2)存储于压缩块中。在该示例中,则仅二十一个图像元素值被存储在压缩块中,而不是存储在原始未压缩块600中的三十二个图像元素值。因此,这将图像元素值的数目减少了34%。

返回图2,在一些情况下,方法200可以在步骤210之后结束。然而,在其他情况下,可以以类似的方式对一个或多个其他子块进行编码。如果一个或多个其他子块也将被编码,则方法200可前进至步骤212。

在步骤212,确定是否存在要编码或压缩的另一子块。如果还有至少一个子块要被编码或压缩,则方法200前进至步骤214。然而,如果没有更多的子块要编码,则方法200可前进至步骤216,其中压缩块被输出和/或存储在存储器(例如,帧缓冲器)中。

在步骤214,选择要编码的剩余子块之一。方法200然后返回步骤208和210,在那里对所选子块执行图案标识和子块编码。一旦所有期望的子块都已被编码,方法200就可以前进至步骤216,其中压缩块被输出和/或存储在存储器中。

下面将参考图13描述根据图2的方法200生成的压缩块的示例格式。

子块之间的相关性

在许多情况下,不仅在子块中存在共同图像元素值,而且在块内常常存在共同子块,尤其是紧密接近的子块。因此,在一些情况下,除了基于图像数据的块内的图案来压缩图像数据块之外,压缩还可利用子块之间的相似性或相关性。

具体来说,在一些情况下,图2的方法可进一步包括确定子块是否与所述块中的一个或多个其他子块相同或匹配。如果两个子块在子块的每个位置中包括相同的图像元素值,则认为这两个子块相同或匹配。如果确定子块与块中的一个或多个其他子块相同或匹配,则不是通过标识图案和形成该图案的图像元素值的信息,而是通过标识匹配子块的信息,将该子块编码在压缩块中。标识匹配子块的信息充当指向可以用于重构子块的图案和图像元素值的指针。因此,不需要将图像元素值存储在用于该子块的压缩块中,因为它们已经被存储在压缩块中。在块中存在许多重复或匹配子块的情况下,这可以显著地增加该块的压缩比。

在一些情况下,图2的方法可进一步包括比较具有预定关系的两个子块以确定其是否相同或匹配。然后,如果它们相同或匹配,则子块之一可以如上所述被编码(例如,使用图案和形成图案的图像元素值),并且另一子块可以被编码为与另一子块的匹配。

例如,可对子块进行排序(例如,按Morton(或Z)顺序(如图4中所示)、按扫描线顺序或以另一方式),并且图2的方法可进一步包括确定子块是否匹配所述顺序中的先前子块。如果子块与所述顺序中的先前子块匹配,则通过指示所述子块与所述先前子块匹配的信息将所述子块编码于所述压缩块中。例如,如果图4的子块4020-40215以Morton(或Z)顺序从0至15排序,并且接收到子块1(SB1)4021用于编码,则可以确定子块1(SB1)4021是否与子块0(SB0)4020(该顺序中的前一子块)匹配。如果确定子块1(SB1)4021匹配子块0(SB0)4020,则可以通过指示子块匹配前一个块的信息在压缩块中对子块1(SB1)4021进行编码。与该顺序中的前一子块相同或匹配的子块可以被称为匹配-1(M-1)子块。指示子块是M-1子块的信息用作指向与前一子块相关联的图案和图像元素值的指针,使得在解压缩时,检索与前一子块相关联的图案和图像元素值,并将其用于重构该子块。

现在参考图7,其示出标识与先前子块匹配的子块(根据块中的子块的排序)如何能够增加块的压缩比。具体地,图7示出图6的图像数据(即图像元素值)的示例块600。在图6中,每个子块6020-6027与图案(在604处示出)相关联,并且形成该图案的子块的图像元素值被存储在压缩块中(在606处示出)。因此,在图6中,基于与子块相关联的图案独立于其他子块来压缩每个子块,从而导致针对每个子块在压缩块中存储至少一个图像元素值。相比之下,在图7中,当压缩块时考虑子块之间的关系,即,与在前块匹配(根据子块的排序)的任何子块被简单地标识为压缩块中的匹配-1(M-1)子块,并且没有图像元素值被存储在该子块的压缩块中。具体来说,子块3(SB3)6023与前一子块(子块2(SB2)6022)匹配,因此,代替使用图案(P2B)和形成图案的图像元素值来编码压缩块中的子块3(SB3)6023,子块3(SB3)被简单地标识为匹配-1(M-1)子块(702处所示)。因此没有存储子块3的图像元素值(SB3)(在704示出)。如上所述,匹配-1(M-1)指定用作指向前一子块(子块2(SB2)6022)的图案和图像元素值的指针。然后,可以检索先前子块的图案和图像元素值,并将其用于重构子块3(SB3)6023。类似地,子块7(SB7)6027与前一子块(子块6(SB6)6026)匹配,因此,代替使用图案(P2B)和形成该图案的图像元素值对子块7(SB7)6027进行编码,子块7(SB7)6027被简单地标识为匹配-1(M-1)子块(702处所示)。这将存储在压缩块中的图像元素值的数目减少到17,与未压缩块600相比,这将存储在压缩块中的图像元素值的数目减少了47%。

在子块被排序(例如,按莫顿(或Z)顺序(如图4所示)、按扫描线顺序或以另一方式)的其他情况下,图2的方法可另外或替代地包括确定子块J是否匹配于按顺序在前一子块之前的子块(即,按顺序在两后的子块)。如果确定子块J与在该顺序中在前子块之前的子块匹配,则利用指示子块与在该顺序中在前子块之前的子块匹配的信息,将子块J编码在压缩块中。例如,如果图4的子块4020-40215以Morton(或Z)顺序从0至15排序,并且接收到子块2(SB2)4022用于编码,则可以确定子块2(SB2)4022是否与子块0(SB0)4020(在该顺序中在前一个子块之前的子块)匹配。如果确定子块2(SB2)4022匹配子块0(SB0)4020,则可以指示子块匹配在该顺序中在前一子块之前的子块的信息,在压缩块中对子块2(SB2)4022进行编码。与按顺序在前一子块之前的子块相同或匹配的子块可以被称为匹配-2(M-2)子块。类似于匹配-1(M-1)的情况,指示子块是M-2子块的信息用作指向与在该顺序中在前子块之前的子块相关联的图案和图像元素值的指针,使得在解压缩时,从压缩块检索与在前子块之前的子块相关联的图案和图像元素值,并且用于重构相关子块。

在其他情况下,不是比较两个子块以查看它们是否匹配,图2的方法还可以包括确定具有一个或多个预定关系之一的子块集合是否全部相同或全部匹配。如果子块集合都匹配,则可以如上所述(使用图案和形成图案的图像元素值)对集合中的子块之一进行编码,并且可以通过将它们标识为形成具有预定关系的匹配集合的一部分的信息来对集合中的子块的剩余子块中的每一个进行编码。将子块标识为具有预定关系的匹配子块集合的一部分的信息可以充当指向该集合中已经图案编码的子块的指针。这样,存储在该子块的压缩块中的图案和图像元素值然后可以用于重构该集合中的任何子块。因此,不需要在压缩块中为该集合中的其他子块存储图像元素值。

可以选择子块之间的预定关系,以便包括可能相同的子块集合或组。例如,如果例如子块集合形成(i)如图8所示的子块802的行,(ii)如图9所示的子块902的列;或(iii)子块1002的AxB块,其中A和B为大于或等于1的整数(例如子块的2×2块),如图10中所示。匹配子块的行中的一个子块可以经由图案和形成该图案的图像元素值来编码,并且该行中的其他子块中的每一个子块可以简单地被标识为匹配行(MR)子块。类似地,匹配子块列中的一个子块可以经由图案和形成该图案的图像元素值来编码,并且该列中的其他子块中的每一个子块可以简单地被标识为匹配列(MC)子块。如果子块属于子块的两个或更多个匹配组(例如,如果子块既是行匹配子块又是列匹配子块),则子块可以与匹配组中的任何一个相关联(例如,子块可以被标识为MR子块或MC子块)。对于本领域技术人员来说,显然这些仅仅是示例子块关系,并且可以使用其他子块关系。

在一些情况下,可以以这种方式压缩的每个子块集合可以由掩码标识。例如,如果可以以这种方式压缩子块行,则图4的第子块行(SB0、SB1、SB4、SB5)可以由十六进制掩码0x0033标识,图4的第二行子块(SB2、SB3、SB6、SB7)可以由十六进制掩码0x00CC标识,图4的第三行子块(SB8、SB9、SB12和SB13)可以由十六进制掩码0x3300标识,图4的第四行子块(SB10、SB11、SB14和SB15)可以由十六进制掩码0xCC00标识。类似地,如果子块列可以这种方式压缩,则图4的子块的第一列(SB0、SB2、SB8、SB10)可以由十六进制掩码0x0505标识,图4的子块的第二列(SB1、SB3、SB9、SB11)可以由十六进制掩码0x0A0A标识,图4的子块的第三列(SB4、SB6、SB12、SB14)可以由十六进制掩码0x5050标识,以及图4的子块的第四列(SB5、SB7、SB13、SB15)可以由十六进制掩码0xA0A0标识。

现在参考图11,其示出标识匹配的子块组如何能够增加图像元素值块的压缩比。具体地,图11示出图6的图像数据(即图像元素值)的示例块600。在图6中,每个子块6020-6027与图案(在604处示出)相关联,并且形成该图案的子块的图像元素值被存储在压缩块中(在606处示出)。因此,在图6中,基于与子块相关联的图案独立于其他子块来压缩每个子块,从而导致针对每个子块在压缩块中存储至少一个图像元素值。相比之下,在图11中,当压缩块时考虑子块之间的关系,即,对于匹配子块的任何行,通过图案和形成该图案的图像元素值来标识该行中的第一子块,并且该行中的每个其他子块被简单地标识为压缩块中的匹配行(MR)子块,并且没有图像元素值被存储在用于那些子块的压缩块中。

具体而言,第二行子块(6022、6023、6026和6027)都是相同的。因此,代替用P2B图案和形成该图案(5、2)的两个图像元素值来编码该行中的每个子块,用P2B图案和形成该图案(5、2)的两个图像元素值来编码该行中的第一子块(子块2(SB2)6022),并且将该行中的每个其他子块(子块3、6和7(SB3、SB6、SB7)6023、6026和6027)简单地标识为匹配行(MR)子块(1102处所示)。因此,对于该行中的最后三个子(6023、6026和6027)(在1104处示出)不存储图像元素值。如上所述,匹配行(MR)指定用作指向行中第一子块(即子块2(SB2)6022)的图案和图像元素值的指针。然后,可以检索该行中的第一子块的图案和图像元素值,并将其用于重构该行中的任何子块(6022、6023、6026和6027)。这将存储在压缩块中的图像元素值的数目减少到15,与未压缩块600相比,这将存储在压缩块中的图像元素值的数目减少了53%。

图案的数目

在一些情况下,在压缩块中可以使用固定数目的位来标识子块的编码格式。在子块被图案编码的情况下,这可以包括标识与子块相关联的图案;并且在匹配编码子块的情况下,这可以包括标识匹配类型。用于标识编码格式的每子块的位数于是可以基于压缩算法所支持的图案的数目和匹配类型的数目。例如,如果压缩算法仅支持图案编码并且存在十五个图案,则每个子块需要至少4个位来唯一地标识子块的编码格式。上面所示的表1示出如何使用四个位来唯一地标识十五个图案的示例。然而,如果压缩算法支持具有十五种图案和四种匹配类型的图案编码,则每个子块需要至少五位来唯一地标识编码格式。表2示出五位如何用于标识十五个图案和四个匹配类型的示例。

表2

编码格式 图案
00000 P1
00001 P2A
00010 P2B
00011 P2C
00100 P2D
00101 P2E
00110 P2F
00111 P2G
01000 P3A
01001 P3B
01010 P3C
01011 P3D
01100 P3E
01101 P3F
01110 P4
01111 M-1
10000 M-2
10001 MR
10010 MC

在一些情况下,为了减少每子块的位数以标识其编码格式,压缩算法所支持的图案的数目可不包括所有可能的图案。例如,代替支持图5的所有十五个图案的压缩算法,压缩算法可以支持少于十五个图案。在图案不被压缩算法支持的情况下,具有该图案的子块可以由Pk图案表示,其中kP图案是子块中的图像元素值的数目(即,以未压缩的形式)。因此,在一些情况下,可通过使用较少的图案和/或匹配类型来实现较高的压缩比。

在一些情况下,压缩算法可能不支持最小共同图案。例如,图12的图示出对于七个不同基准的8×8颜色块的图5所示的2×2图案和M-1、M-2、MR和MC匹配类型的频率。从图12中可以看出,具有P2G图案的2×2子块的数目非常有限。这是因为在P2G图案中,相同的颜色值是彼此对角的,而不是像在其他P2图案中那样彼此相邻。这可能在两条细线彼此交叉时发生,但是这在色块中是罕见的。类似地,在图12中可以看出,具有P3E或P3F图案的2×2子块也是相当有限的。这可能是由于细线穿过一个或两个图元而发生的。相比之下,图12示出可以使用M-1、M-2、MR和MC匹配类型来编码大量子块。

因此,为了将每个子块的编码位的数目保持为四,可能不支持P2G、P3E和P3F图案,但是可能支持四种匹配类型(例如,M-1、M-2、MR、MC)。表3示出如何使用四个位来标识十二个图案和四个匹配类型的示例。

表3

示例压缩块格式

现在将描述根据图2的方法200生成的压缩块的示例性格式。

现在参考图13,其示出经压缩图像数据块1300的示例格式,其中该块被分成子块,并且使用基于图案的编码方案压缩一个或多个子块。在此示例中,所述块为图像元素值的8×8块,其被划分成图像元素值的十六个2×2子块,然而,所属领域的技术人员将明白,此仅为示例,并且本文中描述的方法和技术可应用于被划分成任何大小的子块的任何大小的图像数据。

示例压缩块1300包括标头1302和主体1304。标头1302包括标识每个子块的编码格式(例如,图案或匹配类型)的信息。主体1304包括可以用于根据标头1302中的信息重构子块的图像元素值。

在图13中,标头1302包括用于每个子块的固定长度编码格式字段13060-130615。具体而言,子块0编码格式字段(SB0 ENC)13060标识子块0的编码格式,子块1编码格式字段(SB1 ENC)13061标识子块1的编码格式,子块2编码格式字段(SB2 ENC)13062标识子块2的编码格式,等等。在可以仅使用基于图案的编码来对子块进行编码的情况下,编码格式字段13060-130615标识用于对子块进行编码的图案。在可以使用基于图案的编码或匹配编码来对子块进行编码的情况下,如果子块被图案编码,则编码格式字段13060-130615可以标识用于对子块进行编码的图案,并且如果子块被匹配编码,则编码格式字段13060-130615可以标识匹配的类型(例如,基于列的匹配、基于行的匹配等),在一些情况下,编码格式字段13060-130615可以包括指示相关图案或匹配类型的值。示例4位和5位值可用于标识图案和/或匹配类型,其在上面关于表1到3进行了描述。

主体1304包括用于图案编码的每个子块(即,与标头1302中的图案相关联的每个子块)的图像元素值单元13080-130815。每个图像元素值(IEV)单元13080-130815包括形成相关图案的图像元素值(V1、V2、V3、V4)。如上所述,存储在压缩块1300中的任何特定子块的图像元素值的数目将基于形成关联图案的图像元素值的数目。例如,P1图案由一个图像元素值(V1)形成,因此使用P1图案编码的子块可具有包括一个图像元素值(V1)的主体1304中的图像元素值(IEV)单元13080-130815。类似地,P3图案由三个图像元素值(V1、V2、V3)形成,因此使用P3图案编码的子块可具有包括三个图像元素值(V1、V2、V3)的主体1304中的图像元素值单元13080-130815。在主体中可能不存在任何匹配编码子块的图像元素值单元13080-130815,因为相关图像元素值将已经在主体1304中。

图像元素值单元13080-130815可以以任何适当的顺序被打包在主体1304中。优选地,图像元素值(IEV)单元以与编码格式字段13060-130615被打包在标头1302中相同的顺序被打包在主体1304中。例如,如果标头1302中的第一编码格式字段13060对应于子块0,并且标头1302中的第二编码格式字段13061对应于子块1,则可以首先将子块0的图像元素值(IEV)单元存储在主体1304中,接下来可以将子块1的图像元素值(IEV)单元存储在主体1304中。

现在参考图14,其示出图11的图像数据的示例2×4块600(即图像元素值)的示例压缩块1400,其已经通过图2的方法的版本如图11所示被编码,其中图像数据的块600被划分成多个2×2子块,并且存在十二个可能的2×2图案(图5的P1、P2A、P2B、P2C、P2D、P2E、P2F、P3A、P3B、P3C、P3D、P4)以及四种可能的匹配类型(M-1、M-2、MR、MC),其使用表3中示出的值被唯一地标识。压缩块1400包括标头1402和主体1404。

标头1402包括用于八个子块6020-6027中的每一个的编码格式字段14060-14067。每个编码格式字段14060-14067标识相应子块的编码格式。在该示例中,每个编码格式字段14060-14067包括标识用于根据表3对相应子块进行编码的图案或匹配类型的值。具体地,子块0(SB0)6020使用P4图案被编码,因此子块0的编码格式字段14060被设置为按照表3的’1011’;子块1(SB1)6021使用P3C图案来编码,因此子块1(SB1)6021的编码格式字段14061按照表3被设置为’1001’;子块2(SB2)6022使用P2B图案被编码,因此子块2(SB2)6022的编码格式字段14062按照表3被设置为’0010’;子块3(SB3)6023使用行匹配(MR)来编码,因此按照表3,子块3(SB3)6023的编码格式字段14063被设置为’1110’;子块4(SB4)6024使用P3C图案来编码,因此按照表3,子块4(SB4)6024的编码格式字段14064被设置为’1001’;子块5(SB5)6025使用P3B图案被编码,因此子块5(SB5)6025的编码格式字段14065被设置为表3中的’1000’;子块6(SB6)6026使用行匹配(MR)进行编码,因此按照表3,子块6(SB6)6026的编码格式字段14066被设置为’1110’;以及子块7(SB7)6027使用行匹配(MR)来编码,因此按照表3,子块7(SB7)6027的编码格式字段14067被设置为’1110’。

主体1404包括用于图案编码的每个子块的图像元素值(IEV)单元14080、14081、14082、14084、14085。在该示例中,由于子块0、1、2、4和5是图案编码的,因此对于主体1404中的这些子块中的每一个,存在IEV单元14080、14081、14082、14084、14085。子块3、6和7 6023、6026、6027不是图案编码的(即,它们是匹配编码的),因此主体1404不包括这些子块的IEV单元。

如上所述,每个IEV单元14080、14081、14082、14084、14085包括形成与相应子块相关的图案的图像元素值。因此,IEV单元中存储的图像元素值的数目取决于形成相关图案的图像元素值的数目。具体来说,子块0(SB0)6020是使用由四个图像元素值(V1、V2、V3、V4)形成的P4图案来编码,因此子块0(SB0)6020的IEV单元14080包括四个图像元素值(1、0、7和4);子块1、4和5 6021、6024和6025每个都使用由三个图像元素值(V1、V2、V3)形成的P3图案进行编码,因此子块1、4和5的IEV单元14081、14084,和14085每个都包括三个图像元素值(1、3、5;2、0、3;和4、0、7);以及子块2(SB2)6022使用由两个图像元素值(V1、V2)形成的P2图案来编码,因此子块2(SB2)6022的IEV单元14082包括两个图像元素值(5、2)。

在一些情况下,多个压缩块的标头和/或主体可以一起打包在存储器中以更有效地使用存储器。例如,如果每个压缩块对应于8×8图像元素值块,则对应于32×32图像元素值块的压缩块的标头和/或主体可以被打包在一起以提高存储器使用和带宽的效率。

现在参考图15,其示出包括多个压缩块的数据的经压缩超级块1500的示例格式。在该示例中,每个压缩块对应于8×8的图像元素值块,并且对应于十五个压缩块的数据被存储在一起以形成经压缩超级块,其中所述十五个压缩块对应于32×32的图像元素值块。对于本领域技术人员来说,显然这些仅仅是示例,并且这里描述的原理和技术可以应用于任何大小的块,并且可以将任何数目的压缩块打包在一起以形成经压缩超级块。

图15的经压缩超级块1500包括标头1502和主体1504。标头1502包括用于超块的每个块的编码段15060-150615。例如,在图15中,超级块包括十六个8×8图像元素值块,因此存在十六个编码段,每个8×8块一个。每一编码段15060-150615标识对应块的每个子块的编码格式。每一编码段15060-150615可对应于图13的标头1302。具体来说,每一编码段15060-150615可包括固定长度编码格式字段“SBjENC”,其中j是每个子块的子块数目。每个固定长度编码格式字段可以包括标识相应子块的编码格式的值。如上所述,如果子块被图案编码,则该值可以标识与子块相关联的图案,并且如果子块被匹配编码,则该值可以标识匹配类型(例如,M-1、M-2、MR和/或MC)。编码段15060-150615可以以任何适当的顺序被打包在标头1502中。在一些情况下,编码段15060-150615可以Z顺序或扫描线顺序打包在标头1502中。

经压缩超级块的主体1504包括用于超级块的每个块的图像元素值段15080-150815。例如,在图15中,超级块包括十六个8×8图像元素值块,因此存在十六个图像元素值段15080-150815。每个图像元素值段15080-150815包括可用于重构相应块子块的图像元素值。每个图像元素值段15080-150815可对应于图13的主体1304。具体地,每个图像元素值段15080-150815可包括图像元素值(IEV)单元“SBjIEV Unit”,其中j是其每个图案编码子块的子块数目。如上所述,每个IEV单元包括形成与子块关联的图案的图像元素值。因此,IEV单元中的图像元素值的数目取决于形成与对应子块相关联的图案的图像元素值的数目。例如,如上所述,如果子块与由三个图像元素值形成的P3图案相关联,或者使用该图案来编码,则该子块的IEV单元可以包括三个图像元素值。

图像元素值段15080-150815可以以任何适当的顺序被封装在主体1504中。然而,优选地,图像元素值段15080-150815以与对应的编码段15060-150615被打包在首标1502中相同的顺序被打包在主体1504中。

虽然解压缩单元可根据标头1502中的信息来计算主体1504中的每一图像元素值段15080-150815的起始地址或起始位置,但在一些情况下,为了简化解压缩过程,标头1502还可针对超级块的每一块(例如,每一8×8块)包含标识主体中的对应图像元素值段15080-150815的地址或位置的信息。例如,对于超级块的每个块,标头可以包括从主体1504的开始的偏移,从该偏移可以确定对应的图像元素值段的地址。

对于本领域技术人员来说,显然这些是根据图2的方法200生成的压缩块和经压缩超级块的示例格式,并且压缩块和/或经压缩超级块可以采用任何适当的形式。例如,在其他经压缩超级块中,用于每个子块的编码和图像元素值段可被打包在一起以形成压缩块,并且然后压缩块可被打包在一起。

压缩单元

现在参考图16,其示出用于使用图2的方法200来压缩图像数据块的示例压缩单元1600(其可以形成图1的压缩/解压缩单元112的一部分)。压缩单元1600包括图案选择单元1602;图像元素值(IEV)选择单元1604和压缩块生成单元1606。在压缩单元支持匹配编码(例如,M-1、M-2、MC和/或MR编码)的一些情况下,压缩单元1600还可包括匹配单元1608。

图案选择单元1602被配置为接收要经压缩图像数据块,并且针对其每个子块(例如,大小为NxM的每个子块)标识由该子块的图像元素值形成的多个图案中的图案。然后,将标识的图案输出到IEV选择单元1604。每个图案定义图案中的多个图像元素值以及那些图像元素值中的每一个在子块中的位置。上文参考图5描述2×2子块的示例图案。如上所述,在一些情况下,多个图案可以包括子块中的图像元素值的所有可能图案。例如,在子块的大小为2×2的情况下,所述多个图案可包括图5中所示的所有十五个图案5020-50214。然而,在其他情况下,多个图案可包括少于子块中的图像元素值的所有可能图案。例如,在子块的大小为2×2的情况下,多个图案可包含少于十五个图案。如上所述,可以从多个图案中去除最不经常发现的图案。

IEV选择单元1604被配置为接收要经压缩图像数据块和与其每个子块相关联的图案,并且对于每个子块(例如每个NxM子块)基于相关联的图案标识其相关图像元素值。然后,将针对每个子块的所标识的IEV提供给匹配单元1608(例如,如果压缩单元1600具有匹配单元1608)或提供给压缩块生成单元1606(例如,如果压缩单元1600不具有匹配单元1608)。如上所述,每个图案由多个图像元素值形成,因此子块的相关图像元素值的数目基于与子块相关联的图案。例如,如果子块与由一个图像元素值形成的P1图案相关联,则IEV选择单元1604可被配置为标识单个图像元素值。类似地,如果子块与由三个图像元素值形成的P3图案相关联,则IEV选择单元1604可被配置为标识三个图像元素值。

匹配单元1608被配置为针对每个子块接收由图案选择单元1602标识的图案和由IEV选择单元1604标识的一个或多个IEV,并确定具有一个或多个预定关系之一的任何子块集合是否全部相同或全部匹配。匹配单元1608可以被配置为如果子块集合与相同的图案和相同的IEV集合以相同的顺序相关联,则确定它们全部相同或全部匹配。如果确定具有预定关系的子块集合都相同,则将所述子块集合中的一个与共同图案关联,并且将共同IEV和所述子块集合中的其他子块标识为特定类型的匹配子块,并且不与任何IEV关联。换句话说,如果确定具有预定关系的子块集合都相同,则该集合中的子块之一的编码格式保持相同(即,基于所标识的图案和一个或多个IEV来进行图案编码),并且该集合中的其他子块的编码格式被改变以匹配编码。然而,如果确定具有预定关系的子块集合不都匹配,则该集合中的每个子块的编码格式保持相同(即,每个子块保持与一个或多个IEV关联的图案编码子块)。由匹配单元1608选择的最终编码格式被输出到压缩块生成单元1606。

如上所述,具有预定关系的子块集合可以是例如:

当所述子块被排序时,子块集合包括所述顺序中的子块和前一子块;

当所述子块被排序时,子块集合包括子块和在所述顺序中在前一子块之前的子块;

形成子块行的子块集合;

形成子块列的子块集合;和/或

形成子块的AxB块的子块集合。

在一些情况下,对于每个子块集合可以存在标识集合中的子块的掩码。在这些情况下,压缩单元1600可包括用于存储所述一个或多个匹配掩码的存储器1610,并且匹配单元1608可被配置为从存储器1610读取匹配掩码。

压缩块生成单元1606被配置为接收每个子块的编码格式和每个子块的相关图像元素值,并从其生成经压缩图像数据块。在压缩单元1600不包括匹配单元1608的情况下,则每个子块可与一图案相关联且具有至少一个相关图像元素值。然而,在压缩单元1600包括匹配单元1608的情况下,子块中的一个或多个可被匹配编码,并且不直接与任何图案或任何IEV相关联。在一些情况下,压缩块生成单元1606可以被配置为生成用于经压缩图像数据块的标头和主体,标头标识每个子块的编码格式,主体包括用于块的相关图像元素值。标头可以采用图13的标头1302的格式。具体地,标头可以包括用于每个子块的固定长度编码格式字段,其标识用于该子块的编码格式。如上所述,编码格式字段可以具有标识与相应子块相关联的图案或子块的匹配类型的值。主体可以采用图13的主体1304的格式。具体地,主体可以包括用于被图案编码的每个子块的图像元素值(IEV)单元。每个IEV单元可以包括与该子块相关的图像元素值。由于子块的相关图像元素值的数目基于与之相关联的图案,因此在IEV中图像元素值的数目基于形成相关联图案的图像元素值的数目。例如,如果子块与由两个图像元素值形成的P2图案相关联,或者由其编码,则用于该子块的IEV单元可以包括两个图像元素值。类似地,如果子块与由两个图像元素值形成的P4图案相关联,或者由其编码,则用于该子块的IEV单元可以包括两个图像元素值。

在一些情况下,主体和标头可以被合并(由压缩块生成单元1606或另一单元)以形成完整的压缩块。然而,在其它情况下,可以单独输出主体和标头。

压缩块可以存储在存储器1612中。主体和标头可以一起或分开存储在存储器1612(例如,帧缓冲器)中。例如,主体可以存储在存储器1612中的第一位置处,并且主体可以存储在存储器1612中的不同的第二位置处。

解压缩

现在参考图17,其示出用于解压缩根据图2的方法200生成的压缩图像数据以提供图像数据的所选子块的图像元素值的示例解压缩单元1700(其可以形成图1的压缩/解压缩单元112的一部分)。解压缩单元1700包括图案标识单元1702、图像元素值(IEV)标识单元1704和子块重构单元1706。图案标识单元1702被配置为从压缩数据块中标识与所选择的子块相关联的图案。每个子块将直接(如果图案被编码)或间接(如果匹配被编码)与图案相关联。IEV标识单元1704被配置成从压缩数据块标识所选子块的相关IEV。子块重构单元1706用于根据图案和与其相关联的IEV重构所选择的子块,并输出重构的子块。现在将参考图18详细描述解压缩单元1700的操作。

现在参考图18,其示出示例方法1800,所述方法可以由图17的解压缩单元1700实现,用于解压缩根据这里描述的方法生成的经压缩图像数据块,以产生图像数据的选择的子块。如上所述,经压缩图像数据块包括标识与图像数据的每个子块相关联的多个图案中的图案的信息以及与根据该图案重构子块相关的图像元素值。

方法1800开始于步骤1804,其中图案标识单元1702标识与所选择的子块相关联或相关的图案。在这里描述的压缩算法中,每个子块与多个图案中的一个图案直接(如果图案被编码)或间接(如果匹配被编码)相关联。在任一情况下,可以从用于所选子块的编码格式字段确定相关图案。具体地,编码格式字段将标识与子块相关联的图案或者指向与相关图案相关联的子块。在编码格式字段存储在压缩块的标头中的情况下,图案标识单元1702可从存储器读取压缩块的标头以标识与选定子块相关联或相关的图案。

如果压缩块是根据仅支持图案编码的压缩算法生成的,则每个子块将直接与多个图案中的一个图案相关联。在这些情况下,压缩块可包括用于每个子块的直接标识与所述子块相关联的图案的信息。例如,如上所述,压缩块可以包括用于每个子块的编码格式字段,该编码格式字段标识与该子块相关联的图案。因此,在这些情况下,标识与所选子块相关联的图案可以包括读取所选子块的编码格式字段,并将由此标识的图案标识为所选子块的相关图案。在子块的编码格式字段是固定长度并且以预定顺序封装在压缩块(例如,标头)中的情况下,图案标识单元1702可被配置为基于每个编码格式字段的长度和压缩块中编码格式字段的顺序来确定特定编码格式字段的位置。例如,如果每个编码格式字段是四位,则第n子块(SBn)的编码格式字段将位于标头的n*4位。

例如,如果每一编码格式字段为四个位且子块的编码格式字段是以子块顺序存储,则如果选定子块为子块5(SB5),则图案标识单元1702可被配置为确定标头的位20到23对应于子块5的编码格式字段(SB5)。图案标识单元接着可在压缩块中的所标识位置处读取子块5的编码格式字段(SB5)。例如,如果子块5(SB5)的编码格式字段指示子块5(SB5)与P3C样式相关联,则样式标识单元1702可被配置为将P3C样式标识为子块5(SB5)的相关样式。

然而,如果压缩块是根据支持图案编码和匹配编码的压缩算法生成的,则每个子块可以是图案编码的或匹配编码的。如果子块被图案编码,则编码格式字段可以标识用于编码子块的图案。然而,如果匹配编码子块,则编码格式字段可以标识指向匹配子块的匹配类型。因此,在这些情况下,标识与选定子块相关联的图案可首先包括从用于选定子块的编码格式字段确定子块是经图案编码还是经匹配编码。

例如,现在参考图19,其示出用于当根据支持图案编码和匹配编码的压缩算法生成压缩块时标识与子块相关联的图案的示例方法。所述方法开始于步骤1902,其中从所选子块的编码格式字段中标识所选子块的编码类型。如上所述,每个编码格式字段可以包括标识多个图案中的图案或匹配类型的值。如果所选子块的编码格式字段指示所选子块已被图案编码(例如它标识图案)(步骤1904),则将编码格式字段所标识的图案标识为所选子块的相关图案(步骤1906)。例如,如果压缩区块是图14的压缩区块1400且选定的子区块是子区块5(SB5),则图案标识单元1702可被配置为读取与子区块5(SB5)相关联的编码格式字段14065。子块5(SB5)的编码格式字段14065包括二进制值’1000’,根据表3,其标识图案P3B。因此,子块5(SB5)是图案编码的,相关图案是P3B。

然而,如果所选子块的编码格式字段指示所选子块被匹配编码(例如,它标识匹配类型)(步骤1904),则根据匹配类型确定匹配子块(步骤1908)。然后读取匹配子块的编码格式字段,并且由此标识的图案被标识为所选子块的相关图案(步骤1910)。例如,如果压缩区块是图14的压缩区块1400且选定的子区块是子区块3(SB3),则图案标识单元1702可被配置为读取与子区块3(SB3)相关联的编码格式字段14063。子块3(SB3)的编码格式字段14063包括二进制值’1110’,根据表3,其标识匹配类型,具体为匹配行(MR)。因此,子块3(SB3)被匹配编码。然后,图案标识单元1702从匹配类型中确定匹配子块是行中的第一子块(即,块600中的子块2(SB2))。然后,图案标识单元1702读取子块2(SB2)的编码格式字段14062。子块2(SB2)的编码格式字段14062具有二进制值’0010’,其根据表3标识图案P2B,因此图案标识单元1702将图案P2B标识为子块3(SB3)的相关图案。

返回图18,一旦图案标识单元1702标识出与所选子块相关联或相关的图案,方法1800就前进至步骤1806。

在步骤1806,IEV标识单元1704标识经压缩图像数据块中与所选子块相关或相关联的图像元素值。在这里描述的压缩算法中,每个子块与一个或多个图像元素值相关联,或者直接(如果图案编码)或者间接(如果匹配编码),其与相关图案组合可以用于重构子块。

在一些情况下,标识与选定子块相关的经压缩图像数据块中的图像元素值可包括标识相关图像元素值的数目(例如,从与选定子块相关联的图案)和标识相关图像元素值的位置(例如,从压缩块中的先前子块的编码格式字段)。

现在参考图20,其示出示例方法,该示例方法可以由IEV标识单元1704实施以标识与所选子块相关或相关联的图像元素值。所述方法开始于步骤2002,其中IEV标识单元1704从与所选子块相关联的图案确定与所选子块相关的图像元素值的数目(如步骤1804中所标识的)。如上所述,每个图案由特定数目的图像元素值形成,因此图案本身指示压缩块中相关图像元素值的数目。例如,P1图案由一个图像元素值形成,因此与P1图案相关联的子块将具有一个相关图像元素值。类似地,P3图案由三个图像元素值形成,因此与P3图案相关联的子块将具有三个相关图像元素值。

一旦确定了相关图像元素值的数目,方法就前进至步骤2004,其中IEV标识单元1704确定压缩块中相关IEV的位置。如上文所描述,在一些情况下,压缩块可针对每一经图案编码子块包含IEV单元。每个IEV单元包括用于相关联子块的相关IEV。每个IEV单元中的IEV的数目基于与对应子块关联的图案。例如,由三个IEV形成的用于与P3图案相关的子块的IEV单元将具有三个IEV。相比之下,由两个IEV形成的用于与P2图案相关的子块的IEV单元将具有两个IEV。IEV个单元可以以特定顺序被打包在压缩块中。

在这些情况下,标识相关IEV的位置可包括确定相关IEV单元,然后确定压缩块中在该IEV单元之前的IEV的数目。如果子块被图案编码(如编码格式字段所示),则相关IEV将是该子块的IEV。相比之下,如果子块被匹配编码(如编码格式字段所指示的),则相关IEV将是匹配子块的IEV。例如,如果压缩块是图14的压缩块1400且选定子块是图案编码的子块5(SB5),则相关IEV单元是与子块5(SB5)相关联的IEV单元14085。然而,若该压缩区块为图14的压缩区块1400且该选择的子区块为匹配编码(即MR编码)的子区块3(SB3),则该相关IEV单元为与该匹配子区块(即子区块2(SB2))相关的IEV单元14082

然后,可以从在该顺序中的相关子块之前的子块的编码格式确定在相关IEV单元之前的IEV的数目。具体地,如果在顺序中在相关子块之前有两个子块,并且一个是使用P2图案编码的图案,另一个是使用P3图案编码的图案,则在相关IEV之前将有五个IEV。因此,相关IEV单元的位置可以被确定为身体起始地址+5*(大小为IEV)。

例如,如果压缩区块是图14的压缩区块1400且选定的子区块是子区块5(SB5),则相关IEV单元是与子区块5(SB5)相关联的IEV单元14085。在该示例中,相关子块(子块5)在顺序中在子块0-4之前。因此,IEV标识单元1704可被配置为读取子块0-4的编码格式字段14060-14064,以确定在压缩块中相关IEV单元之前有多少IEV。在此示例中,使用P4图案(因此在该IEV单元中有4个IEV)对子块0进行图案编码,使用P3图案(因此在该IEV单元中有3个IEV)对子块1进行图案编码,使用P2图案(因此在该IEV单元中有2个IEV)对子块2进行图案编码,对子块3进行匹配编码(因此没有IEV单元),并且使用P3图案(因此在该IEV单元中有3个IEV)对子块4进行图案编码。因此,在主体中相关IEV单元之前有12个(4+3+2+3)IEV。因此,该IEV单元的地址为物体的开始地址+(12*(IEV大小))。

一旦已经确定相关IEV的位置(在步骤2004),则IEV标识单元1704从确定的位置读取确定数目的IEV(例如,从存储器中的确定位置读取确定数目的IEV)(步骤2006),然后输出读取的IEV作为用于选择的子块的相关IEV(步骤2008)。

返回图18,一旦已经标识子块的相关IEV,方法1800就前进至步骤1808。

在步骤1808,子块重构单元1706根据相关图案(在步骤1804中标识)和相关IEV(在步骤1806中标识)产生所选子块。具体地,该图案标识子块中的相关IEV的位置。

因此,可以看出,所描述的基于图案的压缩方法允许块中的任何子块被解压缩,而不必解压缩整个块。这因此减少了不需要的IEV的存储器带宽的浪费。

结合基于图案的压缩与固定长度压缩方法

测试表明,在某些情况下,通过使用另一种方法,例如在申请人的英国专利申请1912183.9、1912184.7、1912795.0和1912800.8中描述的固定长度压缩算法,来压缩原始图像元素值(例如颜色值),而不是直接压缩由光栅化器生成的图像元素值(例如颜色值),然后使用这里描述的基于图案的压缩方法来压缩的图像元素值,可以进一步提高压缩比。

具体地,所标识的英国专利申请描述了用于压缩图像数据块的方法和系统,该图像数据块包括多个图像元素值(例如颜色值),该多个图像元素值可被划分成至少第一值和第二值(例如第一通道颜色值和第二通道颜色值),使得该图像数据至少包括第一值的二维块(例如用于第一颜色通道的颜色值的二维块)和第二值的二维块(例如用于第二颜色通道的颜色值的二维块)。使用一个或多个固定长度压缩算法分别压缩每个二维值块。

特别地,通过使用固定长度压缩算法压缩二维值块的全部或一部分来压缩一个或多个二维值块,其中二维块(或其一部分)中的值由共同基础信息和用于块(或其一部分)中的每个值的固定长度参数来表示,该固定长度参数的长度为零个、一个或一个以上的位。接着由共同基础信息和固定长度参数形成经压缩图像数据块。通过使用固定长度压缩算法压缩值的二维块(或其一部分),该二维块(或其该部分)中的所有值均使用相同数目的位表示,因此可以容易地标识与特定值相关的压缩数据的部分。

测试结果

现在参考图21,其示出使用具有8×8块和2×2子块的表3的编码格式的图2的方法的压缩比,对于多个基准测试(TRex、Manhattan 3.0、Manhattan3.2、CarChase、PUBG中等画质、Angry Birds、Leanback),在图21中被称为“图案”。图21还示出对于相同的基准测试,使用英国专利申请1912183.9、1912184.7、1912795.0和1912800.8的随机可访问压缩方法的压缩比,其被称为“Delta 8x8”;以及压缩比,对于相同的基准测试,使用这里描述的基于图案的压缩方法,对根据随机可访问压缩方法压缩的8×8块,其在图21中被称为“Delta+Patterns”。

从图21可以看出,在诸如Manhattan 3.0、Manhattan 3.1、CarChase和PUBG中等画质的复杂3D基准测试中的颜色值可以使用这里描述的基于图案的压缩方法被压缩到其原始尺寸的50%到70%。从图21中还可以看出,在诸如Angry Birds和Leanback的不太复杂的3D基准测试中的颜色值可以使用本文描述的基于图案的压缩方法被压缩到其原始大小的30%。

图21还示出通过对由基于图像元素值的压缩方法(例如在申请人的在先专利申请中描述的随机可访问压缩方法)生成的压缩数据执行基于图案的压缩,可以进一步提高压缩比。

图22示出可以实现这里描述的压缩单元、解压缩单元和压缩/解压缩单元的计算机系统。计算机系统包括CPU 2202、GPU 2204、存储器2206和其他装置2214,例如显示器2216、扬声器2218及相机2220。处理块2210(其可以是本文描述的压缩单元、解压缩单元或压缩/解压缩单元)在GPU 2204上实现。在其他示例中,处理块2210可以在CPU 2202上实现。计算机系统的部件可以通过通信总线2222彼此进行通信。

图16-17的压缩和解压缩单元被示为包括多个功能块或单元。这仅是示意性的,并不旨在限定此类实体的不同逻辑元件之间的严格划分。每个功能块或单元可以任何合适的方式提供。应理解,在本文中被描述为由块或单元形成的中间值不需要由压缩或解压缩单元在任何点物理地生成,并且可以仅仅表示方便地描述由压缩或解压缩单元在其输入与输出之间执行的处理的逻辑值。

本文所述的压缩单元、解压缩单元和/或压缩/解压缩单元可以在集成电路上的硬件中实现。本文所述的压缩单元、解压缩单元和/或压缩/解压缩单元可以被配置为执行本文所述的任何方法。一般来讲,上文所述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或其任何组合中实现。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实现方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示程序代码,所述程序代码在处理器上执行时执行指定任务。本文中所描述的算法和方法可以由执行代码的一个或多个处理器执行,所述代码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据并且可以由机器存取的其他存储器装置。

如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、Java或OpenCL等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。

处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。

本发明还意图包围限定如本文中所描述的硬件的配置的软件,例如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所要功能。也就是说,可以提供一种计算机可读存储介质,其上编码有集成电路定义数据集形式的计算机可读程序代码,当被在集成电路制造系统中处理(即运行)时,这种集成电路定义数据集将该系统配置为制造被配置为执行本文所述的任何方法的压缩单元、解压缩单元或压缩/解压缩单元,或者制造包括本文所述的任何装置的处理器。集成电路定义数据集可以是例如集成电路描述。

因此,可以提供一种在集成电路制造系统中制造如本文所述的系统、压缩单元、解压缩单元和/或压缩/解压缩单元的方法。此外,可以提供一种集成电路定义数据集,当在集成电路制造系统中被处理时,该集成电路定义数据集使得制造压缩单元、解压缩单元和/或压缩/解压缩单元的方法被执行。

集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可以在计算机系统上处理,该计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义和用于组合这些元件以生成由该表示法定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置成生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。

现在将参考图23描述在集成电路制造系统处处理集成电路定义数据集以便配置该系统来制造压缩单元、解压缩单元和/或压缩/解压缩单元的示例。

图23示出集成电路(IC)制造系统2302的示例,其被配置为制造如本文的任何示例中所描述的压缩单元、解压缩单元和/或压缩/解压缩单元。特别地,IC制造系统2302包括布局处理系统2304和集成电路产生系统2306。IC制造系统2302被配置为接收IC定义数据集(例如,定义如本文的任何示例中所述的压缩单元、解压缩单元和/或压缩/解压缩单元),处理IC定义数据集,并根据IC定义数据集生成IC(例如,其体现如本文的任何示例中所述的压缩单元、解压缩单元或压缩/解压缩单元)。IC定义数据集的处理配置IC制造系统2302以制造集成电路,该集成电路包含如本文的任何示例中所述的压缩单元、解压缩单元或压缩/解压缩单元。

布局处理系统2304被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如就逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统2304已经确定电路布局时,其可将电路布局定义输出到IC生成系统2306。电路布局定义可以是例如电路布局描述。

如本领域已知的,IC生成系统2306根据电路布局定义来生成IC。例如,IC生成系统2306可实现生成IC的半导体装置制造工艺,其可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩码的形式,其可以在光刻工艺中用于根据电路定义来生成IC。替代地,提供给IC生成系统2306的电路布局定义可呈计算机可读代码的形式,IC生成系统2306可使用所述计算机可读代码来形成用于生成IC的合适掩码。

由IC制造系统2302执行的不同过程可全部在一个位置例如由一方来实施。替代地,IC制造系统2302可以是分布式系统,使得一些过程可在不同位置执行,并且可由不同方来执行。例如,以下阶段中的一些可以在不同位置和/或由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩码;以及(iv)使用掩码来制造集成电路。

在其他示例中,在集成电路制造系统处对集成电路定义数据集的处理可以将系统配置为制造压缩单元、解压缩单元或压缩/解压缩单元,而无需处理IC定义数据集以确定电路布局。例如,集成电路定义数据集可以定义例如FPGA的可重新配置的处理器的配置,并且对所述数据集进行的处理可以将IC制造系统配置成(例如,通过将配置数据加载到FPGA)生成具有所述定义的配置的可重新配置的处理器。

在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文中描述的装置。例如,通过集成电路制造定义数据集,以上文关于图23描述的方式对集成电路制造系统的配置,可制造出如本文中所述的装置。

在一些示例中,集成电路定义数据集可包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图23所示的示例中,IC生成系统还可以由集成电路定义数据集另外配置,以在制造集成电路时根据在集成电路定义数据集中定义的程序代码将固件加载到所述集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。

与已知的实现方式相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文中实现的方法中)的实现方式可以引起性能改进。性能改进可以包含计算性能提高、等待时间缩短、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实现方式的改进(诸如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个实例来完成。

申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。

50页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:对视频进行解码或编码的方法和计算机可读介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类