数据处理系统的制作方法

文档序号:28665155发布日期:2022-01-26 21:01阅读:85来源:国知局
数据处理系统的制作方法
数据处理系统
1.本发明涉及数据处理系统,并且具体地,涉及用于写出由诸如图形处理系统的数据处理系统生成的数据阵列的系统和方法。
2.可由图形处理器(图形处理单元(gpu))执行的图形处理操作通常处理未压缩形式的数据。当此类操作已经产生特定输出(例如,帧)时,然后可将输出数据写入(例如,帧)缓冲器(例如,在主存储器中)进行存储,之后进行进一步处理(例如,显示该帧)。
3.为了在图形处理操作期间减少需要被传递至存储器以及从存储器传递的数据的量和来回移动此类数据的相关联的电力成本,该数据可在被写入存储器之前经过压缩。这允许以压缩格式存储该数据。当需要该数据进行进一步处理时,然后从存储器读取压缩数据并且进行解压缩,使得该数据然后呈用于图形处理操作的合适格式。
4.为了在执行使用此数据的图形处理操作时辅助将数据在本地存储至图形处理单元,可使用高速缓存。这有助于减少对从较慢的数据存储装置(诸如图形处理系统的主存储器)获取数据的需要。然而,此类高速缓存具有有限(受限)量的存储空间。
5.申请人相信在图形处理系统中的压缩和高速缓存操作方面仍有改进余地。
6.当从第一方面考虑时,本发明提供一种图形处理系统,该图形处理系统包括:
7.存储器系统;
8.图形处理器;和
9.高速缓存系统,该高速缓存系统包括:
10.高速缓存,该高速缓存被配置为存储数据以供图形处理器在执行图形处理操作时使用;和
11.数据编码器,该数据编码器与该高速缓存相关联并且被配置为:
12.对具有特定数据大小的未压缩数据块进行编码,以便以压缩格式存储在存储器系统中;
13.其中对于将要从该图形处理器输出至该存储器系统的数据阵列,该图形处理器被配置为:
14.当该数据阵列或该数据阵列的一部分具有等于该特定数据大小的数据大小或者该数据阵列能够与已经写入高速缓存的一个或多个其他数据阵列组合以提供一起具有等于该特定数据大小的数据大小的多个
15.数据阵列时:
16.绕过高速缓存从该图形处理器向该数据编码器提供等于该特定数据大小的数据阵列的一部分或该数据阵列,以便编码为具有该特定数据大小的数据块或数据块的部分。
17.当从第二方面考虑时,本发明提供一种操作图形处理系统的方法,该图形处理系统包括:
18.存储器系统;
19.图形处理器;和
20.高速缓存系统,该高速缓存系统包括:高速缓存,该高速缓存被配置为存储数据以供图形处理器在执行图形处理操作时使用;和数据编码器,该数据编码器与该高速缓存相
关联并且被配置为对具有特定数据大小的未压缩数据块进行编码,以便以压缩格式存储在存储器系统中;
21.该方法包括:
22.对于将要从图形处理器输出至存储器系统的数据阵列,当该数据阵列或该数据阵列的一部分具有等于该特定数据大小的数据大小或者该数据阵列能够与已经写入高速缓存的一个或多个其他数据阵列组合以提供一起具有等于该特定数据大小的数据大小的多个数据阵列时:
23.该图形处理器绕过高速缓存从该图形处理器向该数据编码器提供等于该特定数据大小的数据阵列的一部分或该数据阵列,以便编码为具有该特定数据大小的数据块或数据块的部分。
24.因此,本发明提供一种图形处理系统和一种操作图形处理系统的方法。该图形处理系统包括(例如,主)存储器系统、图形处理器(例如,gpu)和高速缓存系统。
25.该存储器系统存储图形处理器可能需要的数据。该图形处理器可被布置成执行图形处理操作(使用例如呈未压缩格式的数据),诸如生成渲染输出(例如,例如用于显示的帧)。图形处理器被布置成对(例如,数据帧的)数据阵列进行操作(例如,生成)。
26.该高速缓存系统包括高速缓存,该高速缓存被布置成存储(例如,从存储器系统接收的)数据以供图形处理器使用。该高速缓存系统还包括与该高速缓存相关联的数据编码器。该数据编码器被布置成在未压缩数据将要被输出至存储器系统时对此数据进行编码(压缩),并且例如将压缩数据发送至该存储器系统进行存储。将要被编码和输出至存储器系统的未压缩数据可以来自图形处理器和/或高速缓存。
27.该数据编码器被布置成例如使用基于块的编码技术对未压缩数据块进行编码。数据的这些“压缩块”(例如,每个压缩块)具有特定数据大小(以它们的未压缩形式),例如,这是因为编码技术的性质和/或将数据存储在存储器系统中的方式。经过编码(压缩)的数据然后可以压缩格式存储在存储器系统中。
28.图形处理器被布置成处理数据阵列。当已经处理了数据阵列(例如,写入图形处理器的缓冲器)时,图形处理器需要输出此阵列,使得该图形处理器可继续处理下一个阵列。
29.当将要从图形处理器向存储器系统输出(例如,写入)数据的阵列(例如,图块)(已经由图形处理器进行操作(例如,生成))并且该阵列的数据大小大于或等于特定数据大小(使得该阵列或该阵列的一部分具有等于由数据编码器压缩的(单独的)数据块的特定数据大小的数据大小),图形处理器绕过高速缓存直接向数据编码器提供该阵列或具有特定压缩块数据大小的该数据阵列的部分(即,一些或全部)。然后可由编码器对该数据阵列或该数据阵列的部分(具有特定数据大小)进行编码(编码为“压缩块”)。
30.类似地,当将要输出的数据阵列能够与已经由图形处理器写入高速缓存(并且因此存储在该高速缓存中)的一个或多个其他数据阵列组合以提供等于特定数据大小的组合总数据大小(具有该组合总数据大小的多个阵列)(即,该多个阵列作为数据块一起具有等于特定数据大小的数据大小),图形处理器绕过高速缓存直接向数据编码器提供该数据阵列。此数据阵列然后可与来自高速缓存的一个或多个其他数据阵列(其一起具有特定数据大小)组合并且被编码器编码(编码为“压缩块”)。
31.因此,在这些情形下,图形处理器能够直接向编码器提供作为数据块(具有特定大
小)的全部或部分输出的该数据阵列的部分或全部以进行编码。
32.本发明因此提供一种用于从图形处理器向存储器输出数据阵列的更流线型的过程。通过例如根据由图形处理器输出的数据阵列的大小来识别何时能够将至少一些数据阵列作为整个压缩块或使得该至少一些数据阵列可与来自高速缓存的其他数据组合(例如,通过数据编码器)以提供整个压缩块的方式直接发送至数据编码器,输出数据进行编码(和发送至存储器)的过程可得到简化。将了解,此过程更快速并且更高效。
33.这是因为对于直接发送至编码器的数据阵列(例如,其部分),数据不需要首先被写入高速缓存并且然后被逐出至编码器(例如,可进行组合以提供压缩块的其他数据阵列就是这样)。这节省了时间和电力。
34.(将了解,多个数据阵列的将要被组合为压缩块的数据阵列可不一定由图形处理器输出为连续阵列。而是,这些阵列可相隔图形处理器的若干处理循环而输出。高速缓存是用于临时地存储这些阵列(而不是将它们全部直接发送至数据编码器)直到多个阵列都已经被处理并且准备好被编码为压缩块的便利位置)。
35.这还意味着不必向一般将具有有限存储容量的高速缓存中的行分配直接输出至编码器的数据。这防止逐出图形处理器可能在不久的将来需要的存储在高速缓存中的现有的数据以便为由图形处理器输出的数据腾出空间。
36.图形处理器直接向编码器输出数据阵列(例如,数据阵列的部分)作为整个压缩块或部分压缩块的能力提供了以下灵活性:尤其当与使用具有例如固定特定数据大小的压缩块的数据编码器和存储器的压缩方案一起使用时处置由图形处理器处理的具有多种不同数据大小的阵列。
37.本发明的图形处理系统包括存储器系统、图形处理器和高速缓存系统。
38.本发明的高速缓存系统与其介接的图形处理系统的存储器(存储器系统)可包括(例如,图形处理系统是其部分的整个数据处理系统的)图形处理系统的任何合适的和期望的存储器和存储器系统,诸如且优选地,图形处理系统的主存储器(例如,在存在用于图形处理器的单独的存储器系统的情况下)或数据处理系统的与该数据处理系统的其他元件(诸如主机处理器(cpu))一起共享的主存储器。
39.图形处理系统的图形处理器可包括能够操作以对数据阵列执行图形处理操作的任何合适的和期望的图形处理器。该图形处理器应该并且优选地包括一个或多个(并且优选地多个)处理(着色器)核心,该一个或多个处理核心(例如,每个处理核心)能够操作以对将要由图形处理器处理的数据(阵列)执行图形处理操作。
40.将要从图形处理器输出至存储器系统的数据阵列可包括图形处理器可生成的任何合适的和期望的数据阵列。该数据阵列优选地包括数据元素阵列,每个数据元素具有相关联的数据值。优选地,图形处理器被配置为生成呈未压缩格式的阵列数据,即,该数据阵列包括未压缩数据阵列。
41.该数据阵列可包括例如并且优选地图形处理器正在生成的图像(或其部分),并且因此数据将包括数据阵列的数据元素(采样位置)的和该数据阵列所表示的适当的色彩值。在此情况下,该数据阵列可包括例如图形处理器正在生成的例如用于显示的例如图像数据的图块或帧(图块或帧缓冲器)和/或图形处理器正在生成的数据,诸如图形纹理。
42.在其他布置中,数据可包括几何数据,诸如图形处理器正在处理的顶点和/或基元
的几何数据。因此,优选地,图形处理器对其操作和以本发明的方式处置的数据阵列包括图像数据(例如,纹理、图块或帧)或几何数据(位置和/或属性)。
43.将要从图形处理器向存储器系统输出的数据阵列可包括全部输出,例如图形处理器当前生成的帧(即,使得针对整个输出帧将仅输出单个数据阵列)。
44.然而,在一个实施方案中,该阵列是数据的(例如,图像)的帧的部分(小于整个帧)。因此,将生成整个数据帧并且作为例如表示该帧的相应的多个区域的多个数据阵列输出至存储器系统。
45.因此,在一个实施方案中,针对多个阵列(例如,构成整个数据帧的一些或全部)(例如,每个阵列)执行按照本发明的方式的操作。如下文论述,存在可实施此操作的若干方式。
46.在图形处理器操作以产生构成整个输出帧的多个数据阵列的情况下,为了让图形处理器处理而将帧分割成的每个数据阵列可表示整个帧的任何合适的和期望的区(区域,例如图块)。在一个实施方案中,每个数据阵列表示整个数据帧的不同区(但如果需要,该阵列可重叠)。每个阵列将表示数据帧的适当区(区域),诸如帧内的多个数据位置(例如,图像数据的像素)。
47.因此,在一个优选实施方案中,每个阵列包括图像数据帧的像素的图块。
48.将要从图形处理器存储至存储器的数据阵列可具有任何合适的和期望的大小和形状。它们的形状优选为矩形,例如正方形。在一个实施方案中,该阵列各自具有在2
×
2数据元素(采样位置,例如像素)与64
×
64数据元素之间的大小并且包括2
×
2数据元素和64
×
64数据元素,例如其中矩形阵列的每个边具有2n个数据元素的大小,其中n是整数(例如,在1与6之间并且包括1和6)。对于(例如,每个)矩形阵列的两个边,整数n可不同。
49.在一个优选实施方案中矩形阵列各自具有64个数据元素(采样位置,例如像素)。因此,该矩形阵列各自可具有32
×
2、16
×
4或8
×
8数据元素(例如,在横向或纵向上定向)的大小(例如,对应于渲染图块)。当然,其他大小的阵列(例如,更大、更小或不同的纵横比)将是可能的。
50.数据阵列的每个数据元素可包括任何合适和期望块的数据。在一个实施方案中,阵列的每个数据元素包括4字节(32位)数据。因此,例如,当(例如,每个)矩形阵列具有64个数据元素时,该矩形阵列具有256字节的总数据大小。当然,数据元素和阵列的其他数据大小将是可能的。
51.在一组实施方案中,图形处理器包括(本地)存储装置,例如(图块)缓冲器,该存储装置被配置为例如在正在处理(将要输出至存储器的阵列的)其他数据时存储已经被处理的(将要输出至存储器的阵列的)数据,之后向数据编码器或高速缓存(在适当时)提供(例如,写入)该阵列(的至少一部分)的数据。因此,将要输出至存储器的阵列的数据可积聚在(图块)缓冲器中,之后向数据编码器或高速缓存提供(例如,写出)该阵列。优选地,图形处理器被布置成将它正在处理的(例如,帧的)数据的阵列(例如,图块)写入(图块)缓冲器,以便(经由数据编码器,和例如在适当时经由高速缓存)输出至存储器。
52.(图块)缓冲器可具有任何合适的和期望的大小。在一个实施方案中,(图块)缓冲器能够存储图形处理器可进行处理以便然后输出至存储器的任何(和所有)大小的数据阵列。因此,该缓冲器优选地能够存储由图形处理器(例如,能够)处理的数据的(例如,最大)
图块。
53.例如,该缓冲器可能够存储具有高达64
×
64数据元素的大小的数据阵列,每个数据元素包括4字节数据(给出16,384字节的总大小)。这允许缓冲器存储图形处理器可处理的任何合适的和期望的大小的阵列(和例如多个阵列),高达并且包括缓冲器的大小。
54.当图形处理器包括一个或多个(例如,多个)处理(着色器)核心时,每个(着色器)核心可包括(本地)存储装置,例如(图块)缓冲器,该存储装置被配置为存储已经由(着色器)核心处理的(将要输出至存储器的阵列的)数据。优选地,图形处理器的每个(着色器)核心被布置成将它正在处理的数据的阵列(例如,图块)写入其相应的(图块)缓冲器,以便(经由数据编码器,和例如在适当时经由高速缓存)输出至存储器。
55.对于已经被处理并且准备好输出至存储器系统的阵列(例如,图块),在该阵列的至少一部分(一些或全部)具有特定数据大小时绕过该高速缓存。编码器然后能够将该阵列或该阵列的该部分编码为“压缩块”。在此情况下,绕过高速缓存直接向编码器发送该阵列或该阵列的部分。存在可出现这种情况的若干情形,这优选地取决于已经由图形处理器处理并且准备好输出至存储器的阵列的大小。
56.例如,当将要输出的阵列具有等于特定数据大小的数据大小时,绕过高速缓存直接向数据编码器提供整个阵列。在另一示例中,当将要输出的阵列具有大于特定数据大小的数据大小时,绕过高速缓存直接向数据编码器提供该阵列的部分(即,小于整个阵列)(该部分具有等于特定数据大小的数据大小)。
57.另一方面,在将要输出的阵列具有小于特定数据大小的数据大小但该阵列能够与已经存储在高速缓存中的一个或多个数据阵列组合以提供一起具有特定数据大小的多个阵列的情况下,再次绕过高速缓存直接向数据编码器提供该阵列。
58.否则,在将要输出的阵列具有小于特定数据大小的数据大小的情况下,优选地将该阵列写入高速缓存(例如,以与随后处理的一个或多个阵列组合并且输出)。
59.当图形处理器包括多个处理(着色器)核心时,每个处理核心都可按照本发明的方式与高速缓存系统和高速缓存一起操作。
60.例如当具有小于特定数据大小的数据大小的数据阵列将要存储在高速缓存中以用于组合成压缩块之后被传递至数据编码器时,高速缓存将从图形处理器接收数据并且存储数据(或者相反,由图形处理器生成的数据不一定按照本发明的方式来处置)。高速缓存相应地优选被布置成从存储器系统接收数据并且存储数据,因此可由图形处理器(例如,当该图形处理器请求时)使用。
61.数据优选地以未压缩(解码)格式存储在高速缓存中。
62.布置在存储器系统与图形处理器之间的高速缓存系统可以是能够操作并且被配置为在图形处理器(图形处理器的处理核心)与存储器系统之间保持数据的任何合适的和期望的高速缓存系统。
63.高速缓存系统可包括单个高速缓存“级”,在那种情况下,该高速缓存系统将是与数据编码器相关联的那个高速缓存级(并且该高速缓存级例如以未压缩形式存储数据以供图形处理器在执行图形处理操作时使用)。
64.在实施方案中,该高速缓存系统包括多个高速缓存级(高速缓存层次结构),诸如l2高速缓存和l3高速缓存。在此情况下,与数据编码器相关联的高速缓存是高速缓存系统
的一个级(其中高速缓存系统的其他级则不具有与它们相关联的数据编码器)。在此情况下,与数据编码器相关联的高速缓存是更靠近图形处理器(图形处理器的处理核心)的高速缓存级。优选地,高速缓存分级结构的与数据编码器相关联的高速缓存级(向其提供数据以及从图形处理器(例如,其处理核心)接收数据)是l2高速缓存。
65.例如当数据的阵列将要存储在高速缓存中之后被传递至数据编码器以便组合成压缩块时,图形处理器向其写入数据并且数据编码器从其进行读取(或提供至,例如逐出至)的高速缓存(其与数据编码器相关联)可(经历本发明的特定操作)按照任何合适的和期望的方式,例如根据所讨论的图形处理器和图形处理系统的正常高速缓存布置进行配置和操作。
66.在一个实施方案中,该高速缓存包括多个高速缓存行,每个高速缓存行能够存储相应的数据条目。每个高速缓存行可能够存储任何合适的和期望量的数据,诸如64字节数据,并且可按照任何合适的和期望的方式与压缩块的大小相关。
67.在一个实施方案中,压缩块(在未压缩时)的特定数据大小对应于高速缓存的整数数目的(一个或多个,例如全部)高速缓存行。在另一实施方案中,高速缓存的高速缓存行各自能够存储整数数目的压缩块(在未压缩时)。
68.相应地,所输出的阵列或阵列的部分可按照任何合适的和期望的方式与每个高速缓存行的大小相关。因此,在一个实施方案中,从图形处理器输出的阵列或阵列的一部分对应于高速缓存的整数数目的(一个或多个,例如全部)高速缓存行。在另一实施方案中,高速缓存的高速缓存行各自能够存储整数数目的阵列(或其部分)。然而,将了解,根据本发明的一些实施方案,可不将阵列或阵列的部分写入高速缓存,而是直接输出至编码器。
69.图形处理系统可包括单个物理高速缓存,或者可将该高速缓存分割为多个单独的物理部分(“切片”),其中每个切片例如存储例如用于图形处理器的相应的处理核心的相应数据。当该高速缓存包括与图形处理器的相应的处理核心相关联的多个单独的物理部分时,优选地,当输出来自特定处理核心的阵列时,绕过与那个处理核心相关联的高速缓存的部分(对于具有大于或等于特定数据大小的大小的阵列)。
70.高速缓存系统(包括高速缓存和相关联的数据编码器)可与图形处理器(例如,其处理核心)介接,以便能够按照任何合适的和期望的方式在其间传递数据。在一个实施方案中,该图形处理系统包括适当的互连件,诸如异步开关网络(asn),该互连件介接在高速缓存系统(例如,l2高速缓存和/或数据编码器)与图形处理器(例如,其处理核心)之间。该互连件还可介接在(例如,l2)高速缓存与数据编码器之间。
71.在一个实施方案中,该互连件包括仲裁器,该仲裁器被配置为在适当时分别引导向数据编码器或例如向高速缓存输出阵列或阵列的一部分。因此优选地,该仲裁器被配置为:
72.确定何时向数据编码器输出或例如向高速缓存输出数据阵列(例如,至少其部分);以及
73.当已经确定向数据编码器输出数据阵列(例如,至少其部分)时,将数据阵列(例如,至少其部分)引导至数据编码器,并且当已经确定向高速缓存输出数据阵列(例如,至少其部分)时,将数据阵列(例如,至少其部分)引导至高速缓存。
74.仲裁器可被布置成确定何时按照任何合适的和期望的方式将数据的阵列或阵列
的一部分引导向数据编码器或例如高速缓存。仲裁器可被布置成确定数据阵列(例如,至少其部分)何时具有等于特定数据的数据大小,或数据阵列(例如,至少其部分)何时能够与已经在高速缓存中的一个或多个数据阵列组合,或数据阵列何时将能够与尚未输出的一个或多个数据阵列(全部)组合。
75.然而,在一个实施方案中,仲裁器被配置为使用来自输出数据阵列(例如,至少其部分)的图形处理器(例如,其处理核心)的信号(例如,包括边频带信息)来确定何时将数据的阵列或阵列的一部分引导向高速缓存或数据编码器。如将在下文论述,优选地,图形处理器(例如,其处理核心)被配置为发出(例如,边频带)信号(例如,伴随着数据阵列),该信号指示数据阵列将要输出(例如,写入)的目的地。
76.因此,优选地,图形处理器被配置为(并且该方法包括该图形处理器)确定(将要从图形处理器输出至存储器系统的)阵列或数据或数据阵列的一部分何时具有等于特定数据大小的数据大小,或者数据阵列何时能够与已经写入高速缓存的一个或多个其他数据阵列组合以提供一起具有等于特定数据大小的数据大小的多个数据阵列,并且提供那个的对应的指示,例如边频带信号。
77.在一个实施方案中,图形处理器包括写出单元,该写出单元被配置为从图形处理器输出数据阵列(例如,控制数据阵列的输出)。优选地,该写出单元与图形处理器的缓冲器相关联(并且例如控制来自缓冲器的数据的输出)。
78.因此,优选地,该写出单元被配置为例如使用预定数据大小的标准来确定将要从图形处理器输出的阵列(例如,其至少一部分)何时输出至数据编码器或写入高速缓存,或者多个阵列何时可进行组合,如本文概述。例如,该写出单元可接收指示将要处理或输出的阵列(或多个阵列)的数据大小的指令(例如,来自正在使用的应用程序或用于图形处理器的驱动程序)。例如,写出单元可使用此信息来确定是否向数据编码器或高速缓存输出阵列(例如,其至少一部分)。
79.该写出单元将相应地被配置为在确定将要向数据编码器输出阵列(例如,其至少一部分)时向数据编码器输出阵列(例如,其至少一部分),并且在确定将要向高速缓存输出阵列时向高速缓存写入阵列。
80.优选地,该写出单元被配置为发出(例如,边频带)信号(例如,伴随着正在输出的数据阵列(例如,其至少一部分)),该信号指示数据阵列将要输出(例如,写入)的目的地。还可发出该信号以请求从高速缓存向数据编码器输出(例如,逐出)已经存储在该高速缓存中的其他数据阵列(这将在下文进一步论述)。
81.该数据编码器被布置成在未压缩数据将要被输出至存储器系统时对此数据进行编码(压缩),并且例如将压缩数据发送至该存储器系统进行存储。按照本发明的方式,当将要从图形处理器向存储器系统输出数据时,数据编码器能够操作以对来自图形处理器的未压缩数据(即,直接接收的阵列或阵列的部分)以及(在需要的情况下)来自高速缓存的数据(例如,其他阵列)进行编码(压缩)。
82.数据编码器被配置为以特定数据大小的“压缩”块对未压缩数据进行编码。压缩块因此可由以下各项形成:具有特定数据大小的单个数据阵列(例如,数据阵列的部分);或一起具有特定数据大小并且进行组合以提供压缩块的多个数据阵列。
83.依据本发明的特定操作,数据编码器可按照任何合适的和期望的方式以其他方式
操作,诸如并且优选地,根据所讨论的图形处理系统中的数据编码操作的正常方式来操作。
84.因此,例如,优选地,当将要从存储器系统读取(检索)压缩数据时,数据编码器还被布置成对来自存储器系统的此数据进行解码(解压缩),以便以未压缩格式使用(例如,用于存储在高速缓存中和/或供图形处理器使用)。因此,优选地,数据编码器被布置成以未压缩形式从存储器系统中读取数据并且例如将该数据存储在高速缓存中,并且以压缩形式将数据返回至存储器系统。
85.在数据编码器被布置成对来自存储器系统的压缩数据进行解码(解压缩)的这些实施方案中,优选地将此数据写入到高速缓存中,以用于以未压缩格式存储在该高速缓存中。该数据然后可在高速缓存中能够由图形处理器在图形处理操作中使用。
86.与高速缓存相关联并且能够操作以尤其对来自图形处理器(并且在需要时来自高速缓存)的数据进行压缩以用于写入存储器系统的数据编码器可以是可按照此方式操作的任何合适的和期望的数据编码器。
87.一般来说,数据编码器应并且优选地能够操作以从图形处理器(例如,其(图块)缓冲器)(并且在需要时从高速缓存)读取数据并且处理该数据(例如,压缩该数据),然后将那个数据存储在存储器系统中(并且在多级高速缓存系统的情况下,优选地存储在高速缓存系统的比与数据编码器相关联的高速缓存级更靠近存储器系统的另一级中)。
88.数据编码器应该并且优选地包括适当的编解码器(数据编码器/解码器),该编解码器能够操作并且被配置为对将要从图形处理器(和在需要时从高速缓存)输出至存储器系统的数据进行编码(压缩),并且例如对将要从存储器系统读取(例如,读取到高速缓存中)的数据进行解码(解压缩)。
89.该数据编码器可包括多个编解码器。该多个编解码器可被配置为分别使用多种(例如,不同的)编码技术和解码技术对数据进行编码和解码。
90.在一组实施方案中,数据编码器包括(本地)存储装置,例如缓冲器,该存储装置被配置为例如在正在对数据编码或解码时和/或在适当时在将数据写入高速缓存、图形处理器或(写向)存储器系统之前存储将要被编码或解码的该数据。因此,将在数据正在被编码/解码时、在输出数据之前等在数据编码器中临时地缓冲该数据。
91.数据编码器(数据编码器的编解码器)可使用任何合适的和期望的编码和例如解码技术。因此,数据编码器可被配置为例如依据可用于数据的压缩格式而执行任何合适的和期望的编码(例如,压缩)和例如解码(例如,解压缩)操作。
92.数据编码器被配置为对未压缩数据块进行编码(编码为“压缩块”),并且因此优选地,数据编码器被配置为使用基于块的编码(压缩)技术对数据进行编码和例如解码。
93.在此情况下,将使用基于块的压缩方案对数据进行编码(压缩),并且因此将数据作为相应的(压缩)数据块存储在存储器系统中。
94.因此,在一个实施方案中,该方法包括(并且数据编码器被配置为)对数据块(在适当时包括数据阵列的部分、数据阵列)进行编码(和例如压缩),并且向存储器输出(例如,发送、写入)经过编码(压缩)的数据块。
95.可使用任何合适的和期望的编码(压缩)技术对数据块进行编码(压缩)。在一组实施方案中,该方法包括(并且数据编码器被配置为)使用在申请人的专利us 8,542,939 b2、us 9,014,496 b2、us 8,990,518 b2和us9,116,790b2中描述的帧缓冲器压缩技术对数据
块进行编码。在一组实施方案中,该方法还包括或替代地(并且数据编码器被配置为)使用固定速率压缩技术对数据块进行编码。
96.当数据编码器对(例如,数据帧的)多个(“压缩”)数据块(每个数据块对应于每个数据块的数据阵列的一部分、或数据阵列)进行压缩时,将单独地对相应的数据块进行编码(压缩),然后将那些块以压缩形式存储为相应的块。类似地,当将要对多个压缩数据块进行解压缩时,数据编码器将单独地对它们进行解码。
97.数据编码器将要编码(压缩)的(并且优选地,每个)数据块具有特定数据大小。因此,在本发明的至少优选的实施方案的操作中,例如每当数据编码器对数据块进行编码时,数据编码器对具有相同大小的数据块进行编码。
98.该特定数据大小可以是数据编码器被布置成对数据块进行编码的任何合适的和期望的数据大小。优选地,对于使用图形处理器的特定实例,设置(例如,预先确定)数据编码器被布置成对块进行编码的特定数据大小。例如,可由正在使用的应用程序或由用于图形处理系统的驱动程序设置该特定数据大小。
99.在一个实施方案中,数据编码器被布置成对256或512字节的未压缩数据块进行编码,即,该特定数据大小可以是256或512字节。当然,根据本发明,压缩块的其他特定数据大小是可能的。
100.将了解,在一些实施方案中,将要由数据编码器编码的压缩块(在未压缩时)的特定数据大小可对应于与该数据编码器相关联的高速缓存的整数数目的高速缓存行,例如4条或8条高速缓存行。(因此,就64字节高速缓存行而言,其未压缩形式的每个数据块可例如包括并被存储为256或512字节的数据块。)
101.可按照任何合适的和期望的方式在高速缓存系统中包括数据编码器并且使该数据编码器与所讨论的高速缓存(例如,高速缓存级)相关联。
102.如上文所论述,当高速缓存系统包括多个高速缓存级时,数据编码器可与该高速缓存系统的任何合适的和期望的(单个)级相关联,并且在一组实施方案中,数据编码器与l2高速缓存相关联。
103.在一组实施方案中,数据编码器与高速缓存(高速缓存级)自身(例如,直接)集成,例如高速缓存自身包括数据编码器。因此,例如l2高速缓存可包括数据编码器。
104.在提供高速缓存(高速缓存级)作为多个相应的“物理”高速缓存(作为一组多个高速缓存“切片”)的情况下,然后在一组实施方案中,每个相应的高速缓存“部分”(切片)与用于那个高速缓存部分(切片)的相应的数据编码器相关联(并且具有其自身的相应的数据编码器)。例如,(例如,l2)高速缓存可包括多个部分(切片),例如每个部分被配置为:从存储器系统接收数据并且向图形处理器提供数据以用于在执行图形处理操作时使用;以及从图形处理器接收数据以用于发送至存储器系统,其中(例如,l2)高速缓存的多个部分(例如,切片)中的每一者包括相应的(其自身的)数据编码器。
105.因此,在一组实施方案中,高速缓存系统包括与(例如,l2)高速缓存的相应的多个部分(例如,切片)相关联的多个数据编码器。当高速缓存系统包括与高速缓存的相应的多个部分相关联的多个数据编码器时,优选地,当数据阵列来自图形处理器(例如,来自与特定高速缓存部分和因此数据编码器相关联的处理核心时,绕过与该特定处理核心相关联的高速缓存的部分(对于具有大于或等于特定数据大小的大小的阵列),并且直接向相应的数
据编码器输出阵列(至少其部分)。
106.在一组实施方案中,当图形处理系统包括互连件(例如,以控制将数据传递进出高速缓存)时,数据编码器与该互连件相关联(例如,集成)(例如,而不是将数据编码器并入到高速缓存自身中)。因此,该互连件可包括数据编码器。在此情况下,可能存在由所有高速缓存“切片”共享的与互连件集成的单个数据编码器。
107.当将要从图形处理器向存储器系统输出数据阵列、该数据阵列已经由图形处理器处理并且例如已经完全被写入到图形处理器的缓冲器中时,该阵列的数据在被发送至存储器之前输出至数据编码器(在适当时直接地或经由高速缓存)。根据本发明,将了解,依据将要从图形处理器输出的阵列的大小,在适当时直接向数据编码器或高速缓存输出该阵列(例如,其一部分)。
108.为了确定如何输出数据阵列(直接向数据编码器或高速缓存输出,以及一次输出整个阵列还是阵列的一部分),将了解,阵列的数据大小应是已知的或确定的。可按照任何合适的和期望的方式确定将要输出的阵列的数据大小。
109.在一个优选实施方案中,例如由正在使用的应用程序或由用于图形处理系统的驱动程序来设置正在由图形处理器处理的例如一连串阵列中的一个或多个阵列的数据大小。因此,图形处理器可被布置成(例如,从应用程序或驱动程序)接收设置一连串阵列中的一个或多个阵列的数据大小的一个或多个指令。
110.因此可从这些指令告知图形处理器将要由图形处理器(处理和)输出的阵列的数据大小或图形处理器能够确定该数据大小。在知晓特定数据大小的情况下,这有助于使图形处理器能够确定数据阵列(例如,其部分)何时能够输出至数据编码器以用于编码为压缩块或多个数据阵列何时能够进行组合以用于编码为压缩块。
111.可按照任何合适的和期望的方式,例如含蓄地或明确地,设置正在由图形处理器处理的阵列的数据大小。例如,可针对由正在图形处理器处理的例如一连串阵列中的一个或多个阵列设置每个数据元素的数据量和尺寸(例如,数据元素的高度、宽度、数目)中的一者或优选两者。由此,图形处理器(例如,其写出单元)知晓或能够确定将要输出的阵列的数据大小。
112.根据本发明,可使用许多不同的图像格式,诸如上述的阵列(例如,图块)的数据元素的数据大小。在一个实施方案中,正在由图形处理器处理的阵列的图像格式具有每个数据元素(像素)32位(4字节),例如rgba8888图像格式。对于具有64个数据元素(例如,8
×
8、16
×
4、32
×
2)的阵列(图块),这给出该阵列的256字节的数据大小。对于具有16个数据元素(例如,4
×
4、8
×
2)的阵列,这给出该阵列的64字节的数据大小。
113.当然,其他图像格式是可能的。例如,每个数据元素(像素)16位的图像格式将给出具有128个数据元素的阵列的256字节的数据大小。例如,这可以是16
×
8、32
×
4或64
×
2阵列。
114.当将要输出的阵列(例如,图块)具有(例如,确定为具有)等于特定数据大小的数据大小时,图形处理器(例如,其写出单元)简单地例如与任何适当的(例如,边频带)信号一起将该数据阵列输出至数据编码器。没有(数据阵列的)数据需要(并且优选地不)被写入高速缓存,并且因此优选地不为此类数据分配高速缓存行。
115.此类数据阵列可例如包括适当的(例如,8
×
8采样位置)渲染图块。当每个采样位
置具有4字节的数据大小时,阵列的此大小(8
×
8)因此可具有256字节的数据大小。当然,其他大小是可能的。因此,在一些实施方案中,由数据编码器编码的数据块对应于由图形处理器处理的数据图块。
116.当将要输出的阵列(例如,图块)具有(例如,确定为具有)大于特定“压缩块”数据大小的数据大小时,优选地再次例如与任何适当的(例如,边频带)信号一起直接向数据编码器输出该阵列作为数据阵列的各自具有特定数据大小的多个单独部分。同样,没有(阵列的)数据需要(并且优选地不)被写入高速缓存,并且因此优选地不为此类数据分配高速缓存行。
117.优选地,对于数据阵列的多个数据部分中的每个数据部分,该多个数据部分各自具有等于特定数据大小的数据大小,图形处理器(例如,其写出单元)被配置为在将要输出的数据阵列具有大于特定数据大小的数据大小时绕过高速缓存向数据编码器输出数据阵列的部分。以此方式,向数据编码器输出该阵列的多个部分(每个部分具有特定数据大小),以便从图形处理器输出数据阵列。优选地,数据阵列的具有等于特定数据大小的数据大小的多个部分中的每个部分表示正在输出的数据阵列的一些而非所有区和(单独的)区。
118.因此,在一些实施方案中,由数据编码器编码的数据块包括由图形处理器生成的数据图块的一部分。优选地,由图形处理器生成的此类(例如,每个)图块包括将要从图形处理器写入的多个数据部分(例如,每个数据部分具有等于特定数据大小的数据大小)。因此,例如,当图块具有16
×
16个数据元素的大小、每个数据元素具有4字节的数据大小(给出1024字节的图块的总数据大小)并且特定数据大小是256字节时,写出各自具有256字节的数据大小的四个8
×
8部分,每个部分被编码为压缩块。当然,其他布置是可能的。
119.当将要输出的数据的阵列(例如,图块)具有小于特定数据大小的数据大小并且能够与存储在高速缓存中的阵列组合以提供压缩块时,例如与任何适当的(例如,边频带)信号一起向数据编码器输出该阵列(直接地或在一些方面或实施方案中经由高速缓存)。同样,当直接向数据编码器输出阵列时,没有(阵列的)数据需要(并且优选地不)被写入高速缓存,并且因此优选地不为此类数据分配高速缓存行。
120.在这些实施方案中,数据编码器被布置成对包括将要从图形处理器写入(经由高速缓存写入一些)的多个阵列的数据块进行编码,组合阵列具有等于特定数据大小的数据大小。在此情况下,该特定数据大小大于单独的阵列的数据大小,并且等于多个阵列的组合数据大小。
121.将要编码的(例如,每个)数据块因此可对应于图形处理器生成的(例如,帧的)数据的适当的多个阵列(例如,图块)。将要编码的数据块可由多个不同大小的阵列形成,或者可(并且优选地)由相同大小的多个阵列形成。特定数据大小因此可以是单独的阵列(并且因此是从图形处理器直接向数据编码器写出的阵列)的数据大小的整数倍。
122.对于小于将要编码的数据块的这些阵列,将要组合成压缩块的每个数据阵列可包括适当的(例如,4
×
4采样位置)渲染图块(例如,虚拟图块)。当每个采样位置具有4字节的数据大小时,数据阵列的此大小(4
×
4)因此可具有64字节的数据大小。因此,可组合四个此类阵列(例如,图块)以提供256字节压缩块。当然,其他布置是可能的。
123.优选地,此类多个数据阵列(例如,图块)是所生成的数据帧中的相连阵列(区)。方便的是(例如,优选地),这些多个阵列存储在存储器的相连区中(使得例如它们具有相邻的
存储器地址)。当向高速缓存写入这些多个阵列中的至少一些阵列时,对于在一组阵列中被编码为压缩块之前的存储,优选地,该阵列存储在高速缓存的邻近的高速缓存行中(例如,由于图形处理器依次写出它们)。
124.优选地,对于将要从图形处理器输出至存储器的一起具有特定数据大小并且例如是正被处理的数据帧中的相连阵列的多个数据阵列,向高速缓存写入该多个阵列中的阵列,直到该阵列中的除了一个阵列之外的所有阵列都存储在高速缓存中为止。然后,可直接向数据编码器输出多个阵列中的最终阵列(绕过高速缓存),以用于向压缩块提供存储在高速缓存中的多个阵列中的其他阵列。
125.因此,在一个优选实施方案中,对于将要从图形处理器输出至存储器系统的数据阵列,图形处理器(例如,其写出单元)被配置为(并且该方法包括):
126.当数据阵列具有小于特定数据大小的数据大小并且该阵列不能与已经写入高速缓存的一个或多个其他数据阵列组合以提供具有等于特定数据大小的数据大小的多个数据阵列(并且优选地,该阵列是一起具有特定数据大小并且例如是正被处理的数据帧中的相连阵列的多个数据阵列中的一个数据阵列)时:
127.图形处理器(例如,其写出单元)将数据阵列从图形处理器写入高速缓存(例如,进行存储以用于在未来编码为具有特定数据大小的数据块的部分)。
128.因此,此类阵列将优选地能够与一个或多个其他数据阵列组合(其一起提供具有等于特定数据大小的数据大小的多个数据阵列),但它们尚未(全部)被写入高速缓存。该阵列可存储在高速缓存中,直到已经生成多个阵列(一起具有特定数据大小并且例如是正被处理的数据帧中的相连阵列)中的所有阵列并且将要输出多个阵列中的最终阵列(绕过高速缓存直接输出至数据编码器)为止。
129.然后优选地从高速缓存检索高速缓存中的阵列并且将该阵列发送至数据编码器,与直接向编码器提供的多个阵列中的阵列组合以提供压缩块。
130.对于写入高速缓存的阵列,优选地,高速缓存被配置为为写入该高速缓存的每个阵列分配一个或多个高速缓存行。如上文概述,优选地,高速缓存行的容量等于将要写入高速缓存的数据阵列的数据大小(并且因此可为将要写入高速缓存的每个数据阵列分配单条高速缓存行)。如果必要,从这些高速缓存行逐出已经存在于为数据阵列分配的一条或多条数据线中的数据。
131.优选地,图形处理器(例如,其写出单元)被配置为(并且该方法包括图形处理器(例如,其写出单元)确定(将要从图形处理器输出至存储器系统的)多个数据阵列何时一起具有等于特定数据大小的数据大小。根据本发明,这有助于图形处理器确定将要输出的一连串阵列可能够提供压缩块,使得图形处理器然后可适当地(例如,跟踪和)输出该多个阵列中的阵列。
132.图形处理器可按照任何合适的和期望的方式确定将要从图形处理器输出至存储器的多个阵列能够进行组合以提供压缩块(用于由数据处理器编码)。优选地,图形处理器(例如,其写出单元)被配置为(并且该方法包括图形处理器(例如,其写出单元)根据已经针对将要由图形处理器处理的多个数据阵列(例如,其中的每个阵列)设置(例如,由正在使用的应用程序或由用于图形处理系统的驱动程序)的数据大小(例如,所接收的关于该数据大小的指令)来确定该多个数据阵列一起具有等于特定数据大小的数据大小。这可例如通过
与上文针对单独的阵列所概述的方式类似的方式执行。
133.在一个实施方案中,图形处理器(例如,其写出单元)被配置为确定将要由图形处理器输出的多个阵列何时是正被处理的数据帧中的相连阵列。这可有助于指示该多个阵列能够提供压缩块。
134.图形处理器(例如,其处理核心)可将能够提供压缩块的多个阵列作为一连串连续阵列进行输出。然而,可能存在未连续写出多个阵列中的阵列的一些实例。例如,在多个阵列中的阵列之间可能存在许多(例如,高达1000s)的处理循环,使得不可依次处理和写出它们,例如,图形处理器可在其间处理和写出其他阵列。当出现这种情况时,确定(例如,识别)将提供压缩块的多个阵列可(并且优选地)用于跟踪将要一起组合以提供压缩块的多个阵列中的阵列。
135.对于将要输出(并且例如已经确定为能够进行组合以提供压缩块)的多个阵列中的(并且每个)阵列,图形处理器可按照任何合适的和期望的方式确定是否直接向数据编码器输出该阵列(绕过高速缓存)或将该阵列写入高速缓存。优选地,图形处理器(例如,其写出单元)被配置为在此确定之后相应地直接向数据编码器输出数据阵列或向高速缓存输出数据阵列。
136.在一个优选实施方案中,图形处理器(例如,其写出单元)被配置为(并且该方法包括):对于将要输出(并且例如已经确定为能够进行组合)以提供压缩块的多个阵列,确定多个阵列中的阵列何时是将要由图形处理器输出的多个阵列中的最终阵列;以及当阵列是最终阵列时,绕过高速缓存将阵列输出至数据编码器。优选地,图形处理器被配置为在该阵列不是(即,非)最终阵列时将该阵列写入高速缓存。
137.可按照任何合适的和期望的方式将多个阵列中的阵列确定为多个阵列中的最终阵列(或不是最终阵列)。在一个优选实施方案中,图形处理器(例如,其写出单元)被配置为(并且该方法包括)在图形处理器生成阵列(例如,写入到图形处理器的(例如,图块)缓冲器中)时跟踪多个阵列中的该阵列。这有助于图形处理器识别多个阵列中的最终阵列,使得可直接向数据编码器输出该最终阵列,并且从高速缓存检索该多个阵列中的其他阵列。
138.可通过图形处理器在处理阵列(例如,写出至缓冲器)时跟踪多个阵列中的阵列的(例如,累加)数据大小来跟踪该阵列,例如,使得通过是使多个阵列达到特定数据大小的一个阵列来识别多个阵列中的最终阵列。然而,在一个优选实施方案中,可通过图形处理器(例如,其写出单元)在处理阵列(例如,写出至缓冲器)时对多个阵列中的阵列进行计数来跟踪阵列。图形处理器(例如,其写出单元)因此可包括计数器(例如,寄存器),该计数器被配置为在写出阵列(写出至缓冲器)时对多个阵列中的阵列进行计数。
139.可根据由正在使用的应用程序或由用于图形处理系统的驱动程序提供的信息来确定(或由该信息设置)将提供压缩块的多个阵列中的阵列的数目。例如,可根据将要由图形处理器处理的阵列的数据大小和正在由数据编码器使用的特定数据大小来确定多个阵列中的阵列的数目。
140.当图形处理器包括多个处理(例如,着色器)核心时,优选地,由图形处理器的同一处理核心例如依次处理被处理并且将提供压缩块的多个阵列。因此,优选地(例如,每个)处理核心被配置为跟踪该处理核心正在处理的阵列以确定何时直接向数据编码器输出多个阵列(将提供压缩块)中的阵列,并且优选地,确定何时将向高速缓存写入多个阵列中的阵
列。
141.在写出多个阵列时跟踪多个阵列(例如,其最终阵列)自身可为新的和有利的。因此,根据另一方面,本发明提供一种图形处理系统,该图形处理系统包括:
142.存储器系统;
143.图形处理器;和
144.高速缓存系统,该高速缓存系统包括:
145.高速缓存,该高速缓存被配置为存储数据以供图形处理器在执行图形处理操作时使用;和
146.数据编码器,该数据编码器与该高速缓存相关联并且被配置为对未压缩数据块进行编码以便以压缩格式存储在存储器系统中;
147.其中对于将要从图形处理器输出至存储器系统并且一起能够提供用于由数据编码器编码的未压缩数据块的多个阵列,图形处理器被配置为:
148.确定将要从图形处理器输出至存储器系统的多个数据阵列中的阵列是否是将要从图形处理器输出的多个阵列中的最终阵列;以及
149.当该数据阵列不是将要从图形处理器输出的多个阵列中的最终阵列时:
[0150][0151]
将数据阵列从图形处理器写入高速缓存;以及
[0152]
当该数据阵列是将要从图形处理器输出的多个阵列中的最终阵列时:
[0153][0154]
从图形处理器输出多个阵列中的最终数据阵列;以及
[0155]
致使从高速缓存向数据编码器提供已经被写入高速缓存的多个阵列中的其他阵列;
[0156]
由此,数据编码器可将该多个阵列编码为数据块以用于以压缩格式发送至存储器系统。
[0157]
当从另一方面考虑时,本发明提供一种操作图形处理系统的方法,该图形处理系统包括:
[0158]
存储器系统;
[0159]
图形处理器;和
[0160]
高速缓存系统,该高速缓存系统包括:高速缓存,该高速缓存被配置为存储数据以供图形处理器在执行图形处理操作时使用;和数据编码器,该数据编码器与该高速缓存相关联并且被配置为对未压缩数据块进行编码,以便以压缩格式存储在存储器系统中;
[0161]
对于将要从图形处理器输出至存储器系统并且一起能够提供用于由数据编码器编码的未压缩数据块的多个阵列,该方法包括:
[0162]
图形处理器确定将要从图形处理器输出至存储器系统的多个数据阵列中的阵列是否是将要从图形处理器输出的多个阵列中的最终阵列;以及
[0163]
当该数据阵列不是将要从图形处理器输出的多个阵列中的最终阵
[0164]
列时:
[0165]
图形处理器将数据阵列从图形处理器写入高速缓存;以及
[0166]
当该数据阵列是将要从图形处理器输出的多个阵列中的最终阵列时:
[0167][0168]
图形处理器从图形处理器输出多个阵列中的最终数据阵列;
[0169]
从高速缓存向数据编码器提供已经被写入高速缓存的多个阵列中的其他阵列;以及
[0170]
数据编码器将该多个阵列编码为数据块以用于以压缩格式发送至存储器系统。
[0171]
本领域技术人员将了解,本发明的这些方面可并且优选地包括本文描述的本发明的任选的和优选的特征中的任何一个或多个或所有特征。例如,优选地,将要被编码为数据块的多个阵列一起具有等于特定数据大小的数据大小。优选地,将要被编码为数据块的多个阵列是正被处理的数据帧中的相连阵列。
[0172]
优选地,图形处理器被配置为(并且该方法包括)确定(将要从图形处理器输出至存储器系统的)多个数据阵列何时能够提供用于由数据编码器编码的未压缩数据块(例如,由于它们一起具有特定数据大小和/或是相连阵列)。
[0173]
根据这些方面,根据这些方面,图形处理器因此被配置为识别何时将输出正在生成的多个数据阵列的最终阵列,输出此阵列(例如,输出至数据编码器)并且将该多个阵列中的其他阵列从高速缓存(存储它们的地方)提供至该数据编码器。数据编码器然后能够将该多个阵列一起编码为压缩块。
[0174]
优选地,这通过以下操作来实现:图形处理器(例如,其写出单元)向高速缓存发出信号(例如,经由仲裁器),以向该高速缓存请求(例如,逐出)其他阵列(或所有阵列)(并且该高速缓存响应于此信号而将该阵列从高速缓存发送至该数据编码器)。优选地,这还通过以下操作来实现:图形处理器(例如,其写出单元)向编码器发出用于编码的信号(例如,经由仲裁器),以将多个阵列编码为压缩块(并且编码器对该多个阵列进行编码以用于发送至存储器),
[0175]
在一组实施方案中,例如,如在本发明的第一方面和第二方面中所概述,绕过高速缓存直接向数据编码器输出最终数据阵列。在另一组实施方案中,最终数据阵列(和因此所有阵列)在提供至数据编码器之前被写入高速缓存。
[0176]
一旦已经确定数据阵列将要输出的目的地,优选地,图形处理器(例如,其写出单元)被配置为发出包括数据阵列将要被写入的目的地的指示的(例如,边频带)信号(例如,伴随着数据阵列)。
[0177]
优选地,图形处理器(例如,其写出单元)被配置为在将要直接向数据编码器输出数据阵列(例如,其至少一部分)(例如,已经确定)进行编码时发出指示将要向数据编码器输出阵列(例如,其至少一部分)的信号(例如,向互连件(例如,其仲裁器)发出)。优选地,该信号指示阵列(例如,其至少一部分)将要被编码为压缩块或压缩块的部分。
[0178]
类似地,图形处理器(例如,其写出单元)被配置为在将要向高速缓存写入数据阵列进行存储时发出指示将要向该高速缓存写入该阵列的信号(例如,向互连件(例如,其仲裁器)发出)。优选地,该信号指示阵列(例如,其至少一部分)将要存储在高速缓存中以便稍后编码为压缩块的部分。
[0179]
当该系统包括互连件(例如,其仲裁器)时,优选地,该互连件(例如,其仲裁器)被配置为使用来自图形处理器(例如,其写出单元)的信号(例如,包括阵列(例如,其至少一部分)的目的地的指示)在适当时将从图形处理器输出的阵列(例如,至少其部分)引导至数据
编码器或高速缓存(即,按照信号中的目的地的指示)。
[0180]
优选地,图形处理器(例如,其写出单元)被配置为在从图形处理器输出多个阵列(其一起将提供压缩块)(例如,其最终阵列)时发出致使将存储在高速缓存中的多个阵列的阵列发送至数据编码器的信号。
[0181]
可例如经由互连件(例如,其仲裁器)向高速缓存发出该信号。高速缓存可被配置为在接收到该信号之后向数据编码器发送存储在该高速缓存中的多个阵列中的阵列。
[0182]
在一个实施方案中,例如经由互连件(例如,其仲裁器)向数据编码器发出该信号。数据编码器优选地被配置为在接收到该信号之后请求去往该数据编码器的存储在该高速缓存中的多个阵列中的阵列。优选地,高速缓存可被配置为在接收到该请求之后向数据编码器发送存储在该高速缓存中的多个阵列中的阵列。
[0183]
致使从高速缓存检索该多个阵列中的阵列的信号可包括任何合适的和期望的信号。优选地,该信号包括存储在高速缓存中的多个阵列中的阵列的指示或将要发送至数据编码器的多个阵列中的阵列的指示。
[0184]
例如,该信号可包括一起将提供压缩块的多个阵列(例如,其单独的阵列)的身份的指示。该信号可包括以下指示:阵列是一起将提供压缩块的多个阵列中的最终阵列。该信号可包括以下指示:一起将提供压缩块的多个阵列中的(例如,每个)阵列的有序位置。
[0185]
在此后一种情况下,优选地,例如按照与在直接向数据编码器写入最终阵列时触发从高速缓存提供多个阵列中的其他阵列的方式相同或类似的方式,将最终阵列写入高速缓存触发该高速缓存将所有该多个阵列从高速缓存提供至数据编码器。因此,在一个实施方案中,图形处理器被配置为针对高速缓存发信号以将多个阵列(例如,除了最终阵列之外)从高速缓存提供(例如,逐出)至数据编码器。
[0186]
响应于从图形处理器接收到指示将要从高速缓存检索存储在高速缓存中的多个阵列中的阵列的信号,例如依据该信号的性质,互连件(例如,其仲裁器)可按照任何合适的和期望的方式请求将多个阵列中的阵列从高速缓存发送至数据编码器。例如,互连件(例如,其仲裁器)可被配置为(使用该信号)识别多个阵列中的最终阵列。优选地,互连件(例如,其仲裁器)被配置为在它已经识别出多个阵列中的最终阵列时(例如,经由数据编码器)向高速缓存发信号以将多个阵列中的阵列发送至数据编码器。
[0187]
可按照任何合适的和期望的方式从高速缓存检索数据。当将要输出的数据阵列能够与高速缓存中的阵列组合以提供压缩块并且因此(在一些实施方案中)输出至数据编码器时,优选地,将已经写入该高速缓存的一个或多个其他阵列从该高速缓存提供(并且例如逐出)至数据编码器。因此,优选地,例如通过信号向高速缓存请求这些数据阵列,并且响应于该请求而将这些数据阵列从高速缓存提供至数据编码器。
[0188]
当将最终阵列写入该高速缓存时,优选地,从该高速缓存(例如,请求和)提供将提供压缩块的多个数据阵列中的所有阵列。优选地,将最终阵列写入高速缓存触发从高速缓存输出(例如,逐出)多个阵列。
[0189]
如上文概述,当输出最终数据阵列时,系统的任何合适的和期望的部件可请求用于形成压缩块的数据阵列。因此,例如,图形处理器(例如,其写出单元)可在输出最终数据阵列时请求数据阵列,互连件(例如,其仲裁器)可在将最终数据阵列引导至数据编码器或高速缓存时请求数据阵列,或者数据编码器可在接收到最终数据阵列之后请求数据阵列。
[0190]
例如,当首次将最终阵列写入高速缓存时,该请求可针对将提供压缩块的多个数据阵列中的所有阵列(包括最终阵列)。可替代地,例如,当直接将最终阵列输出至数据编码器时,该请求可针对多个数据阵列中的与该最终阵列一起将提供压缩块的其他阵列。
[0191]
优选地,请求用于压缩块的(例如,其他)数据阵列的图形处理器、互连件(例如,其仲裁器)或数据编码器在适当时向(例如,其他)数据阵列存储在那里的高速缓存发送写入请求。例如来自互连件或数据编码器的此类写入请求可由来自图形处理器(例如,其写出单元)的伴随着所输出的多个数据阵列中的最终阵列的(例如,边频带)信号(例如,包括旗标)触发。
[0192]
可在任何合适的和期望的时间作出对多个阵列中的数据阵列的请求。在一个优选实施方案中,图形处理器(例如,其写出单元)被配置为在(将提供压缩块的多个数据阵列中的)最终阵列正在由图形处理器处理或将要输出时发出信号,该信号指示将要请求将存储在高速缓存中的多个阵列中的其他数据阵列从高速缓存输出至数据编码器。这有助于例如在数据编码器能够将多个阵列编码为压缩块之前数据编码器可能必须等待来自高速缓存的其他数据阵列的时间。
[0193]
例如在数据阵列被完全写入到图形处理器的缓冲器中并且已经确定了该数据阵列的输出目的地之后,可由图形处理器(例如,其写出单元)按照任何合适的和期望的方式在适当时向数据编码器或例如高速缓存输出(例如,写出)数据阵列(例如,其至少一部分)。
[0194]
当将要向数据编码器输出阵列的至少一部分时,可将该阵列的该至少一部分的所有数据写入数据编码器(在一个操作中作为数据包)。然而,在一个实施方案中,该阵列的该至少一部分被“流式传输”至数据编码器,例如,使得该阵列的该至少一部分的数据在该数据被写出时就被消费(例如,编码)。
[0195]
因此,例如,当将要输出的数据阵列具有大于特定数据大小的数据大小时,可将整个数据阵列流式传输至数据编码器,使得数据编码器然后能够在接收该数据阵列时将该阵列的部分编码为相应的压缩块。这有助于将输出和编码数据的过程流线化。
[0196]
从上文将了解,本发明的实施方案实施在包括存储器系统、高速缓存系统和图形处理器(图形处理单元(gpu))的系统中。用于执行图形处理操作(例如,以生成渲染输出(例如,将要显示的图像))的数据优选地存储在存储器系统的存储器中。图形处理器优选地被布置成触发从存储器获取所需的数据以及将数据存储在高速缓存系统中。
[0197]
图形处理器然后优选地从高速缓存系统读取用于执行图形处理操作(例如,生成渲染输出)的所需数据。来自图形处理操作的输出(例如,渲染输出)一旦通过此方式生成便然后被写回存储器系统,并且在一个实施方案中,例如在诸如电话、平板计算机、电视、计算机屏幕等电子装置的显示器上显示。
[0198]
图形处理器(图形处理单元)可以并且优选地实施和执行图形处理管线以执行图形处理操作。
[0199]
图形处理管线可以并且优选地包括图形处理管线通常可能包括的处理级中的任何一个或多个处理级并且优选地包括所有处理级,诸如且优选地,图元设置级、光栅化器、渲染器(优选地呈可编程片元着色器(着色器核心)的形式或包括可编程片元着色器)。
[0200]
在一个实施方案中,图形处理器(处理管线)还包括一个或多个可编程着色级,诸如以下各项中的一者或多者并且优选地全部:顶点着色级、外壳着色器、镶嵌级(例如,在那
里通过执行着色器程序而执行镶嵌)、域(评估)着色级(着色器)、几何着色级(着色器)和片元着色器。
[0201]
图形处理器(处理管线)还可包含图形处理管线可包含的任何其他合适的和期望的处理级,诸如深度(或深度和模板)测试器、混合器、图块缓冲器、写出单元等。
[0202]
在一个实施方案中,图形处理系统包括执行可能需要图形处理器进行图形处理的应用程序的主机处理器。在一个实施方案中,该系统还包括如上文描述的适当的存储装置(例如,存储器)、高速缓存等。
[0203]
本发明可用于任何合适的和期望的图形处理系统和处理器中并且与其一起使用。
[0204]
作为一个示例,本发明可与图块化渲染器(基于图块的图形处理系统)一起使用。因此,在一个实施方案中,图形处理器(处理管线)是基于图块化的图形处理器(处理管线)。然而,其他布置当然也是可能的。
[0205]
虽然上文已经特定参考与图形处理系统中的图形处理器相关的高速缓存和编码操作论述了本发明,但申请人已经认识到,通过上文论述的方式使用与高速缓存相关联的数据编码器将在其他高速缓存布置和系统中而不仅仅在图形处理器的背景下是有用的。
[0206]
因此相信,按照本发明的方式的操作和系统在更一般地用于数据处理系统中时可自身是新的和有利的。
[0207]
因此,本发明的另一方面提供一种数据处理系统,该数据处理系统包括:
[0208]
存储器系统;
[0209]
处理器;和
[0210]
高速缓存系统,该高速缓存系统包括:
[0211]
高速缓存,该高速缓存被配置为存储数据以供处理器在执行数据处理操作时使用;和
[0212]
数据编码器,该数据编码器与该高速缓存相关联并且被配置为:
[0213]
对具有特定数据大小的未压缩数据块进行编码,以便以压缩格式存储在存储器系统中;
[0214]
其中对于将要从该处理器输出至该存储器系统的数据阵列,该处理器被配置为:
[0215]
当该数据阵列或该数据阵列的一部分具有等于该特定数据大小的数据大小或者该数据阵列能够与已经写入高速缓存的一个或多个其他数据阵列组合以提供一起具有等于该特定数据大小的数据大小的多个
[0216]
数据阵列时:
[0217]
绕过高速缓存从该处理器向该数据编码器提供等于该特定数据大小的数据阵列的一部分或该数据阵列,以便编码为具有该特定数据大小的数据块或数据块的部分。
[0218]
本发明的另一方面提供一种操作数据处理系统的方法,该数据处理系统包括:
[0219]
存储器系统;
[0220]
处理器;和
[0221]
高速缓存系统,该高速缓存系统包括:高速缓存,该高速缓存被配置为存储数据以供处理器在执行数据处理操作时使用;和数据编码器,该数据编码器与该高速缓存相关联并且被配置为对具有特定数据大小的未压缩数据块进行编码,以便以压缩格式存储在存储器系统中;
[0222]
该方法包括:
[0223]
对于将要从处理器输出至存储器系统的数据阵列,当该数据阵列或该数据阵列的一部分具有等于该特定数据大小的数据大小或者该数据阵列能够与已经写入高速缓存的一个或多个其他数据阵列组合以提供一起具有等于该特定数据大小的数据大小的多个数据阵列时:
[0224]
该处理器绕过高速缓存从该处理器向该数据编码器提供等于该特定数据大小的数据阵列的一部分或该数据阵列,以便编码为具有该特定数据大小的数据块或数据块的部分。
[0225]
本发明的另一方面提供一种数据处理系统,该数据处理系统包括:
[0226]
存储器系统;
[0227]
处理器;和
[0228]
高速缓存系统,该高速缓存系统包括:
[0229]
高速缓存,该高速缓存被配置为存储数据以供处理器在执行数据处理操作时使用;和
[0230]
数据编码器,该数据编码器与该高速缓存相关联并且被配置为对未压缩数据块进行编码以便以压缩格式存储在存储器系统中;
[0231]
其中对于将要从处理器输出至存储器系统并且一起能够提供用于由数据编码器编码的未压缩数据块的多个阵列,该处理器被配置为:
[0232]
确定将要从处理器输出至存储器系统的多个数据阵列中的阵列是否是将要从处理器输出的多个阵列中的最终阵列;以及
[0233]
当该数据阵列不是将要从处理器输出的多个阵列中的最终阵列时:
[0234][0235]
将数据阵列从处理器写入高速缓存;以及
[0236]
当该数据阵列是将要从处理器输出的多个阵列中的最终阵列时:
[0237]
从处理器输出多个阵列中的最终数据阵列;以及
[0238]
致使从高速缓存向数据编码器提供已经被写入高速缓存的多个阵列中的其他阵列;
[0239]
由此,数据编码器可将该多个阵列编码为数据块以用于以压缩格式发送至存储器系统。
[0240]
本发明的另一方面提供一种操作数据处理系统的方法,该数据处理系统包括:
[0241]
存储器系统;
[0242]
处理器;和
[0243]
高速缓存系统,该高速缓存系统包括:高速缓存,该高速缓存被配置为存储数据以供处理器在执行数据处理操作时使用;和数据编码器,该数据编码器与该高速缓存相关联并且被配置为对未压缩数据块进行编码,以便以压缩格式存储在存储器系统中;
[0244]
对于将要从处理器输出至存储器系统并且一起能够提供用于由数据编码器编码的未压缩数据块的多个阵列,该方法包括:
[0245]
处理器确定将要从处理器输出至存储器系统的多个数据阵列中的阵列是否是将要从处理器输出的多个阵列中的最终阵列;以及
[0246]
当该数据阵列不是将要从处理器输出的多个阵列中的最终阵列时:
[0247][0248]
处理器将数据阵列从处理器写入高速缓存;以及
[0249]
当该数据阵列是将要从处理器输出的多个阵列中的最终阵列时:
[0250]
该处理器从该处理器输出多个阵列中的最终数据阵列;
[0251]
从高速缓存向数据编码器提供已经被写入高速缓存的多个阵列中的其他阵列;以及
[0252]
数据编码器将该多个阵列编码为数据块以用于以压缩格式发送至存储器系统。
[0253]
本领域技术人员将了解,本发明的这些方面可以并且优选地包括本文描述的本发明的特征中的任何一个或多个或所有特征。
[0254]
在一个实施方案中,在单个处理平台上执行本发明的各种功能。
[0255]
在一个实施方案中,数据或图形处理系统和/或(例如,图形)处理器还包括存储本文描述的数据和/或存储用于执行本文描述的过程的软件的一个或多个存储器和/或存储器装置和/或与该一个或多个存储器和/或存储器装置通信。数据或图形处理系统和/或(例如,图形)处理器还可基于由(例如,图形)处理器(处理管线)生成的数据而与主机微处理器和/或用于显示图像的显示器通信。
[0256]
本发明可实施在任何合适的系统中,诸如实施在合适配置的基于微处理器的系统中。在一些实施方案中,本文所述的技术在基于计算机和/或微处理器的系统中实现。
[0257]
可按照任何期望和合适的方式执行本发明的各种功能。例如,本发明的功能可在需要时实施在硬件或软件中。因此,例如,本发明的各种功能元件和级可包括能够操作以执行各种功能等的合适的处理器、控制器、功能单元、电路、处理逻辑、微处理器布置等,诸如适当专用的硬件元件(处理电路)和/或可被编程为按照期望的方式操作的可编程硬件元件(处理电路)。
[0258]
在这里还应注意,如本领域技术人员将了解,可在给定的处理器上并行地重复和/或执行本发明的各种功能等。同样,在期望时,各种处理级可共享处理电路等。
[0259]
此外,本发明的处理级中的任何一个或多个或所有处理级可体现为例如呈一个或多个固定功能单元(硬件)(处理电路)的形式和/或呈可被编程为执行期望的操作的可编程处理电路的形式的处理级电路。同样,可将本发明的处理级和处理级电路中的任何一个或多个处理级和处理级电路作为单独的电路元件提供给其他处理级或处理级电路中的任何一个或多个处理级和处理级电路,和/或处理级和处理级电路中的任何一个或多个或所有处理级和处理级电路可至少部分地由共享的处理电路形成。
[0260]
本领域技术人员还将了解,本发明的所有所描述的实施方案在适当时可包括本文描述的特征中的任何一个或多个或所有特征。
[0261]
根据本发明的方法可至少部分地使用例如计算机程序的软件来实施。因此将了解,当从其他方面考虑时,本发明提供:计算机软件,该计算机软件在安装在数据处理器上时特别适于执行本文描述的方法;计算机程序元素,该计算机程序元素包括在该程序元素在数据处理器上运行时用于执行本文描述的方法的计算机软件代码部分;和计算机程序,该计算机程序包括在该程序在数据处理系统上运行时适于执行本文描述的方法的所有步骤的代码。数据处理系统可以是微处理器、可编程fpga(现场可编程门阵列)等。
[0262]
本发明还扩展至计算机软件载体,该计算机软件载体包括在用于操作图形处理器、渲染器或包括数据处理器的其他系统时致使与所述图形处理器、渲染器或系统联合地执行本发明的方法的步骤的此类软件。此类计算机软件载体可以是物理存储介质,诸如rom芯片、cd rom、ram、闪存存储器或磁盘,或者可以是信号,诸如通过导线的电子信号、光信号或无线电信号,诸如到卫星的信号等。
[0263]
还将了解,不是本发明的方法的所有步骤都需要由计算机软件执行,并且因此根据更广的方面,本发明提供安装在计算机软件载体上的用于执行本文陈述的方法的步骤中的至少一个步骤的计算机软件和此类软件。
[0264]
本发明因此可合适地体现为用于与计算机系统一起使用的计算机程序产品。此类具体实施可包括固定在有形非暂态介质上的一系列计算机可读指令,诸如计算机可读介质,例如磁盘、cd rom、rom、ram、闪存存储器或硬盘。其还可包括可经由调制解调器或其他接口设备、通过有形介质(包括但不限于光通信线路或模拟通信线路)、或者使用无线技术(包括但不限于微波、红外或其他传输技术)无形地传输到计算机系统的一系列计算机可读指令。该系列计算机可读指令体现了本文先前所述的功能的全部或部分。
[0265]
本领域的技术人员将会理解,此类计算机可读指令可以多种编程语言编写,以与许多计算机架构或操作系统一起使用。此外,此类指令可使用目前或将来的任何存储器技术(包括但不限于半导体、磁性或光学技术)来存储,或者使用目前或将来的任何通信技术(包括但不限于光学、红外或微波技术)来传输。可以设想的是,此类计算机程序产品可作为带有附随的印刷或电子文档(例如,收缩包装软件)的可移动介质进行分发,可与计算机系统一起预加载在例如系统rom或固定磁盘上,或者可经由网络(例如,互联网或万维网)从服务器或电子公告板进行分发。
[0266]
现在将仅以示例的方式并参考附图来描述本文描述的各种实施方案,其中:
[0267]
图1示出了其中可实施本发明的示例性图形处理系统;
[0268]
图2更详细地示出了图1的图形处理系统的高速缓存系统的实施方案;
[0269]
图3更详细地示出了数据编码器的实施方案;
[0270]
图4更详细地示出了图1的图形处理系统的高速缓存系统的另一实施方案;
[0271]
图5是示出本发明的实施方案中的将数据从图形处理器输出至存储器的操作的流程图;
[0272]
图6和图7示出本发明的实施方案中的将要从图形处理器输出至存储器的图块;
[0273]
图8示出了本发明的实施方案中的使用在图4中示出的高速缓存系统将数据从图形处理器写入存储器的操作;
[0274]
图9示出了本发明的实施方案中的将要从图形处理器输出至存储器的一组图块;
[0275]
图10示出了本发明的实施方案中的数据编码器向高速缓存请求数据的操作;
[0276]
图11示出了本发明的另一实施方案中的使用在图4中示出的高速缓存系统将数据从图形处理器写入存储器的操作;并且
[0277]
图12示出了本发明的另一实施方案中的使用在图4中示出的高速缓存系统将数据从图形处理器写入存储器的操作。
[0278]
在适当的情况下,类似的附图标号用于附图中的类似元件和特征。
[0279]
现在将在图形处理系统的背景下描述本发明的若干实施方案。
[0280]
图1示出了其中可实施本发明和本实施方案的示例性图形处理系统1。
[0281]
在图1中示出的示例性图形处理系统1包括主机处理器,该主机处理器包括呈片上系统(soc)7的形式的中央处理单元(cpu)2、图形处理器(图形处理单元(gpu))3、视频编解码器4、显示控制器5和存储器控制器6。如图1中所示,这些单元经由互连件8进行通信并且能够访问片外存储器系统(存储器)9。在此系统中,gpu 3、视频编解码器4和/或cpu2将生成要显示的帧(图像),并且显示控制器5然后将向显示器10提供帧进行显示。
[0282]
在使用此系统的过程中,在主机处理器(cpu)2上执行的应用程序11(诸如游戏)将例如需要在显示器10上显示帧。为此,应用程序11将向在cpu 2上执行的用于图形处理单元3的驱动程序12发送适当的命令和数据。驱动程序12然后将生成适当的命令和数据以致使图形处理单元3渲染适当的帧进行显示,并且将那些帧存储在适当的帧缓冲器中,例如存储在主存储器9中。显示控制器5然后将把那些帧读取到用于显示器的缓冲器中,然后那些帧在那里被读出并且显示在显示器10的显示面板上。
[0283]
作为此处理的部分,图形处理器3将从存储器9读入数据,诸如将要渲染的纹理、几何图形等,处理那个数据,并且然后将数据返回至存储器9(例如,呈经过处理的纹理和/或将要显示的帧的形式),然后将例如如上文所论述例如由显示控制器5从存储器读取该数据以用于在显示器10上显示。因此,将需要数据往返图形处理器3(具体地,往返图形处理器3的处理核心)和存储器9的传递。
[0284]
为了促进此操作并且减少在图形处理操作期间输出至存储器9的数据量,图形处理系统1还包括布置在互连件8与存储器9之间的高速缓存系统13。高速缓存系统13能够操作以在存储器9与图形处理器3之间传递数据。高速缓存系统13因此有助于控制将由图形处理器3生成的数据(例如,像素)块发送至存储器9。
[0285]
图2示意性地并且更详细地示出了与本实施方案的操作相关并且具体地与将数据从图形处理器3传递至存储器9相关的图形处理系统1(包括高速缓存系统13的部件)的元件。本领域技术人员将了解,可能存在在图2中未示出的系统的其他元件等。
[0286]
图2示出了存储器9和图形处理器3。该图形处理器包括多个处理(着色器)核心14。每个着色器核心14包括写出单元15和缓冲器21。缓冲器21存储由其着色器核心14处理并且将要从其着色器核心输出的数据。写出单元15控制来自其着色器核心14的缓冲器21的数据的输出。
[0287]
如图2中所示,在存储器9与图形处理器3的处理(着色器)核心14之间存在着高速缓存系统13,该高速缓存系统能够操作以将数据从存储器9传递至图形处理器3(并且具体地,传递至图形处理器3的处理核心(着色器核心)14,并且相反地将由图形处理器3的处理核心14产生的数据传递回至存储器9。
[0288]
在图2中示出的高速缓存系统被绘示为包括l2高速缓存16,从该l2高速缓存将数据提供至着色器核心14。其他高速缓存分级结构布置将是可能的,诸如在需要时包括多个高速缓存级。如图2中所示,在此实施方案中,将数据从存储器9传递至l2高速缓存16,并且从l2高速缓存16传递至着色器核心14(并且反之亦然)。
[0289]
为了促进经由存储器控制器6来处置来自存储器9的压缩数据(并且将压缩数据返回至存储器9)(在需要这样做时),如图2中所示,l2高速缓存16已经与数据编码器17(呈存储器页压缩单元(mpc)的形式)相关联。
[0290]
此数据编码器17能够操作以将从存储器9接收的数据解压缩,之后将那个数据以未压缩形式存储在l2高速缓存16中以供图形处理器3的着色器核心14使用,并且相反地,将(将要从l2高速缓存16逐出或直接从着色器核心14接收的)数据压缩,之后将那个数据发送回至存储器9。在下文将更详细地论述此数据编码器(mpc)17的操作。
[0291]
图3示出了本实施方案中的数据编码器(存储器页压缩单元)17的实施方案。如图3中所示,该(和每个)数据编码器17包括相应的读取单元22和写入单元23(电路),该读取单元和该写入单元分别能够操作以从l2高速缓存和存储器系统读取数据以及向l2高速缓存和存储器系统写入数据。数据编码器17还包括适当的控制单元(电路)24,该控制单元从着色器核心和l2高速缓存控制器接收读取请求和写入请求,并且控制数据编码器17对那些请求相应地和适当地作出响应。
[0292]
如图3中所示,数据编码器17还包括一个或多个编解码器25、26和一组数据缓冲器27,以用于在处理数据时和/或在等待将数据写入l2高速缓存或存储器系统时将那个数据临时地存储在数据编码器17中。
[0293]
数据编码器17可包括任何期望数目的编解码器,例如,该编解码器各自分别能够操作以执行不同的编码(压缩)方案。例如,一个编解码器可被配置为执行适当的可变速率压缩方案,其中另一编解码器被配置为执行另选的例如固定速率压缩方案。
[0294]
当然,其他布置将是可能的。
[0295]
如图2中所示,图形处理系统1还包括用于在l2高速缓存16和/或数据编码器17与着色器核心14之间传递数据的适当的互连件8。在此实施方案中,互连件8包括异步开关网络(asn)18和仲裁器19。仲裁器19被配置为确定来自着色器核心14的数据将被引导至l2高速缓存16还是数据编码器17。
[0296]
在本实施方案中,正在被图形处理器3处理的数据(例如,数据帧的数据阵列)作为相应的数据块(数据帧的块)存储在存储器9中,其中每个数据块以压缩形式存储在存储器9中,但以未压缩形式存储在用于图形处理器3的l2高速缓存16中以供图形处理器3的着色器核心14使用。
[0297]
在一个实施方案中,以压缩形式存储在存储器9中的数据的“压缩块”包括256字节的数据。此大小的数据块可例如对应于整数数目(例如,四)条高速缓存行。当然,其他大小的压缩块和高速缓存行容量是可能的,例如,这取决于在所讨论的图形处理系统中使用的相对高速缓存行大小。
[0298]
图4示出了本实施方案的可能的实现方式中的l2高速缓存16、数据编码器(存储器页压缩单元)17和着色器核心24的布置。
[0299]
l2高速缓存16被示出为被配置为相应的单独的物理高速缓存部分(切片)20。在图4中示出的布置中,存在单个数据编码器17,该单个数据编码器对所有l2高速缓存切片20操作,并且该单个数据编码器耦合至作用于l2高速缓存16与图形处理器的着色器核心14之间的互连件(asn)18并且与该互连件相关联。
[0300]
将了解,其他布置是可能的。例如,在其他实施方案中,每个相应的l2切片可具有其自身的相关联的数据编码器,而不是单个数据编码器与整个l2高速缓存相关联。
[0301]
图5参考图1至图4中示出的图形处理系统1示出了本发明的实施方案的操作。
[0302]
首先,gpu 3的着色器核心14处理图像数据的图块并且将该图块写入着色器核心
14的图块缓冲器21以用于输出至存储器9。正在使用gpu 3的应用程序11或用于gpu 3的驱动程序12将设置将要由gpu 3处理的图块的大小。与图块缓冲器21相关联的写出单元15然后准备向存储器9输出图块(步骤101,图5)。
[0303]
根据由应用程序11或驱动程序12提供的关于正被处理的图块的信息,写出单元15确定将要输出的图块的数据大小。将图块大小与压缩块的特定数据大小(高速缓存系统的数据编码器(mpc单元)17按照其对数据进行编码(压缩)以用于以压缩格式存储在存储器9中的块大小)进行比较(步骤102,图5)。例如,压缩块可具有256b的数据大小。
[0304]
当图块的数据大小大于或等于压缩块的数据大小时,这意味着着色器核心14的写出单元15能够将图块数据直接发送(例如,写入、流式传输)至数据编码器17以用于编码为用于发送至存储器9的压缩块,因此绕过了高速缓存。写出单元15在图块的具有等于压缩块的数据大小的区上进行反复(步骤103,图5)。
[0305]
图6示意性地示出了本发明的实施方案中的正在由gpu 3处理并且将要从该gpu输出至存储器9的图块31。图块31具有8
×
8像素的大小(包括四个4
×
4子图块32)。使用每个像素32位(4字节)的图像格式rgba8888,图块31具有256b的数据大小。当压缩块具有256b的数据大小时,此大小的图块31(256b)被直接输出至数据编码器17以被编码为压缩块。
[0306]
在此较简单的情况下,图块大小等于压缩块大小,并且因此整个图块31在单次反复中被发送至数据编码器17。
[0307]
当图块大小大于压缩块大小时,将图块分割为等于压缩块的多个部分,并且经由多次反复被发送至数据编码器17。
[0308]
图7示意性地示出了本发明的实施方案中的正在由gpu 3处理并且将要从该gpu输出至存储器9的图块33。此图块33具有16
×
16像素的大小并且使用每个像素32位(4字节)的图像格式rgba8888,具有1024b的数据大小。当压缩块具有256b的数据大小时,此大小的图块(1024b)因此可被分割为四个256b的8
×
8区34(等效于在图6中示出的图块31),每个区用于写出以编码为压缩块。
[0309]
图块33的区34被直接发送至数据编码器17进行编码,使得在l2高速缓存16中不为此数据的临时存储分配行(步骤104,图5)。将了解,这是用于从图块缓冲器21输出数据的高效过程,并且允许为可能由着色器核心14需要的数据保留l2高速缓存16的有限资源。
[0310]
一旦经过编码,(例如,每个)压缩块便被发送至片外存储器9。然后针对由gpu 3的每个着色器核心14处理的每个图块重复该过程(步骤105,图5)。
[0311]
图8使用在图4中示出的高速缓存系统示意性地示出了此过程。当将要从着色器核心14的图块缓冲器21向存储器9输出具有等于压缩块(例如,在图6或图7中示出)的特定大小的数据大小的图块(例如,其部分)时,该图块被直接输出51至数据编码器17进行编码,而不是临时地存储在l2高速缓存16中。
[0312]
互连件(asn)18(例如,包括如图2中所示的仲裁器19)了解到(例如,根据由着色器核心14的写出单元15提供的边频带信息,该边频带信息伴随着图块(例如,其部分))正被写出的图块(例如,其部分)具有等于压缩块的数据大小。互连件18(例如,其仲裁器19)将正被写出的图块(例如,其部分)直接引导至数据编码器17。
[0313]
一旦图块(例如,其部分)已经被编码(压缩),数据编码器17便向存储器9发送52经编码的压缩块。
[0314]
现在将再次参考图1至图4针对从gpu 3的着色器核心14输出的具有比压缩块的数据大小小的数据大小的图块来描述图形处理系统1的操作。
[0315]
图9示意性地示出了本发明的实施方案中的正在由gpu 3处理并且将要从该gpu输出至存储器9的一组图块35。该组图块35中的图块36例如可各自具有4
×
4像素的大小,并且使用每个像素32位(4字节)的图像格式rgba8888,从而给出每个图块64b的数据大小。对于具有256b的数据大小的压缩块,四个64b的图块能够组合为压缩块,并且用于编码为压缩块。正在由gpu 3的特定着色器核心14处理并且因此方便地被编码为压缩块的多组图块通常来自数据帧的相连区,如图9中所示。此类图块可存储在存储器9的相连区中。
[0316]
将正在由gpu 3的着色器核心14处理的图像数据的一组35此类图块36写入着色器核心14的图块缓冲器21以用于输出至存储器9。正在使用gpu 3的应用程序11或用于gpu 3的驱动程序12将设置组35中的将要由gpu 3处理的图块36的大小和图块的数目。与图块缓冲器21相关联的写出单元15然后准备向存储器9输出图块36(步骤101,图5)。
[0317]
根据由应用程序11或驱动程序12提供的关于正被处理的该组图块35的信息,写出单元15确定每个组35中的将要输出的图块36的数据大小和图块的数目。写出单元15因此能够通过将图块大小与特定数据大小进行比较并且知晓在每个组35中有多少图块来确定该组图块能够提供压缩块。
[0318]
对于具有比压缩块的数据大小小的数据大小的这些图块36,着色器核心14的写出单元15确定图块36是否为能够进行组合以形成压缩块的一组图块35中的最终图块(步骤106,图5)。
[0319]
当确定正在处理的图块36不是一组图块35中的最终图块时(步骤106,图5),为图块36分配l2高速缓存16的行并且将该图块写入该行(步骤107,图5)。互连件18(例如,其仲裁器19)了解到(例如,根据伴随着图块36的由着色器核心14的写出单元15提供的边频带信息)正被写出的图块36具有小于压缩块的数据大小。互连件18(例如,其仲裁器19)将正被写出的图块36引导至l2高速缓存16。
[0320]
l2高速缓存16的行可例如各自具有64b的容量。具有64b的数据大小的图块36因此将填充此类高速缓存行。
[0321]
gpu 3的着色器核心14然后处理该组图块35中的下一个图块36。当确定此图块36不是该组图块35中的最终图块36时(步骤106,图5),再次为图块36分配l2高速缓存16的(例如,不同的)行并且将该图块写入该行(步骤107,图5)。
[0322]
当确定处理该组图块35中的最终图块36(步骤106,图5)而不是被分配并且写入l2高速缓存16的行时,将图块36直接写入数据编码器17(步骤108,图5)。
[0323]
在接收到该组图块35中的此最终图块36之后,数据编码器17确定需要该组图块35中的其他图块36以形成压缩块。数据编码器17向l2高速缓存16请求这些图块36。在图10中示出此过程。
[0324]
图10示出了数据编码器17从着色器核心14接收数据的最终图块。对此数据的接收触发数据编码器17发出对来自l2高速缓存16的该组图块中的其他图块的请求。这些图块被示出为位于l2高速缓存16的高速缓存行0至n-1中。这些高速缓存行被逐出,其中图块的被逐出的数据被发送至数据编码器17。
[0325]
一旦数据编码器17已经从l2高速缓存16的被逐出的高速缓存行接收到数据,数据
编码器17便拥有用于压缩块的所有数据。数据编码器17将该组图块的所有图块组合和编码(压缩)为单个压缩块。
[0326]
然后向片外存储器9写出经编码的压缩块。然后针对由gpu 3的每个着色器核心14处理的每个图块(或每组图块)重复该过程(步骤105,图5)。
[0327]
图11使用在图4中示出的高速缓存系统示意性地示出了此过程。首先,将要从着色器核心14的图块缓冲器21输出至存储器9并且不是该组图块中的最终图块的一组图块中的图块被从着色器核心14写入61l2高速缓存16(例如,其相关联的切片20)。当将要把该组图块中的最终图块从着色器核心14的图块缓冲器21写出至存储器9时,此图块被直接输出62至数据编码器17,而不是临时地存储在l2高速缓存16中。
[0328]
在从图块缓冲器21输出一组图块中的图块时,互连件(asn)18(例如,包括如图2中所示的仲裁器19)了解到(例如,根据由着色器核心14的写出单元15提供的边频带信息,该边频带信息伴随着每个图块)该图块的有序位置。互连件18(例如,其仲裁器19)因此在输出图块时跟踪该图块,并且在适当时引导该图块直接输出至l2高速缓存或数据编码器17。
[0329]
对由互连件18(例如,其仲裁器19)跟踪的该组图块中的最终图块的接收触发数据编码器17向l2高速缓存16请求该组图块中的其他图块。这些其他图块被从高速缓存检索63至数据编码器17。数据编码器17将该组图块的所有图块组合和编码(压缩)为单个压缩块,并且将此经编码的压缩块发送64至片外存储器9。
[0330]
图12示出了本发明的另一实施方案中的使用在图4中示出的高速缓存系统将数据从图形处理器写入存储器的操作。在图12中示出的实施方案的操作是在图11中示出的实施方案的变化。
[0331]
在图11和图12中示出的实施方案的操作之间的差异在于,当将该组图块中的最终图块从着色器核心14的图块缓冲器21输出至存储器9时,将最终图块写入71至l2高速缓存16,即,按照先前将该组图块中的其他图块写入71至l2高速缓存16的方式。因此,在图12中示出的实施方案中,首先将最终图块写入71至l2高速缓存16,而不是直接输出至数据编码器17(绕过l2高速缓存16),如图8、图10和图11中所示。
[0332]
在将最终图块写出71至l2高速缓存16时,着色器核心14的写出单元15向接收最终图块的l2高速缓存16发出写入请求(在边频带信号中)。此请求触发将该组图块中的所有图块从高速缓存写入(例如,逐出)72至数据编码器17。
[0333]
数据编码器17然后将该组图块的所有图块组合和编码(压缩)为单个压缩块,并且将此经编码的压缩块发送73至片外存储器9。
[0334]
从上文可了解,在至少优选的实施方案中,本发明提供一种图形处理系统和一种操作图形处理系统的方法,其中由于阵列(例如,图块)(例如,其部分)等于压缩块或是将提供压缩块的一组阵列中的最终阵列,所以绕过高速缓存将可直接输出至数据编码器的该阵列(例如,其部分)写入数据编码器。
[0335]
这有助于简化写出用于编码的数据的过程,这可使得该过程更快速且更高效。这是因为对于直接写入编码器的数据阵列(例如,其部分),不需要首先将该数据写入高速缓存并且然后逐出至编码器,因此节省了时间和电力。这还避免必须为数据阵列(例如,其部分)分配高速缓存中的行。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1