基于图块的调度的制作方法

文档序号:21535049发布日期:2020-07-17 17:29阅读:100来源:国知局
基于图块的调度的制作方法



背景技术:

图形处理系统通常配置成例如从在计算机系统上运行的应用程序接收图形数据,并且渲染图形数据以提供渲染输出。例如,提供到图形处理系统的图形数据可描述要渲染的三维(3d)场景内的几何形状,并且渲染输出可以是场景的被渲染图像。一些图形处理系统(其可称作“基于图块的”图形处理系统)使用细分成多个图块的渲染空间。“图块”是渲染空间的区域,并且可具有任何合适的形状,但通常是矩形的(其中,术语“矩形”包含方形)。举例来说,图块可占要渲染的图像的16×16个像素块或32×32个像素块。如所属领域中已知,将渲染空间细分成图块存在许多益处。例如,将渲染空间细分成图块允许图像以逐图块方式渲染,其中图块的图形数据可在图块的渲染期间临时存储在“芯片上”。

基于图块的图形处理系统通常有两个操作阶段:几何形状处理阶段和渲染阶段。在几何形状处理阶段,分析用于渲染的图形数据,以针对每个图块确定哪些图形数据项存在于该图块内。接着,在渲染阶段,可通过处理确定存在于图块内的那些图形数据项(不需要处理在几何形状处理阶段中确定不存在于特定图块内的图形数据项)来渲染该图块。图形数据项可表示几何形状,其描述场景中的结构的表面并且被称为“图元”。常见图元形状是三角形,但图元可以是其它2d形状,或者还可以是线或点。对象可由一个或多个(例如,数百个、数千个或数百万个)此类图元构成。

下文描述的实施例仅作为示例而提供,并非是对解决已知基于图块的图形处理系统的任一或所有缺点的实施方案的限制。



技术实现要素:

提供此发明内容旨在用简化形式介绍下文在具体实施方式中进一步描述的一系列概念。此发明内容并非旨在标识所要求主题的关键特征或基本特征,也并非旨在用于限制所要求主题的范围。

本文所描述的图形处理单元配置成使用细分成多个图块的渲染空间来处理图形数据。所述图形处理单元包括分块单元和渲染逻辑。所述分块单元布置成生成每个图块的图块控制列表,所述图块控制列表标识存在于所述图块中的每个图形数据项。所述渲染逻辑布置成使用由所述分块单元生成的所述图块控制列表来渲染所述图块。所述分块单元包括每图块散列生成逻辑,所述每图块散列生成逻辑布置成针对每个图块,基于将在所述渲染逻辑中处理所述图块时存取的一组纹理来生成每图块散列值,并且所述分块单元还布置成将图块的每图块散列值存储在所述图块的所述图块控制列表内。

第一方面提供一种图形处理单元,其配置成使用细分成多个图块的渲染空间来处理图形数据,所述图形处理单元包括:分块单元,其布置成生成每个图块的图块控制列表,图块的图块控制列表标识存在于图块中的图形数据项;高速缓存,其用于存储用于渲染图块的纹理数据;以及渲染逻辑,其布置成使用由分块单元生成的图块控制列表和存储在高速缓存中的纹理数据来渲染图块;其中所述图形处理单元包括每图块散列生成逻辑,所述每图块散列生成逻辑布置成针对每个图块,基于将在渲染逻辑中处理图块时存取的一组纹理来生成每图块散列值,并且其中所述图形处理单元还布置成存储图块的每图块散列值以供渲染逻辑使用。

所述渲染逻辑可包括调度逻辑和处理逻辑。

所述调度逻辑可布置成基于图像的图块的两个或更多个每图块散列值的比较来选择要调度用于供处理逻辑处理的下一图块。

所述调度逻辑可布置成标识图块候选集,并且基于当前调度的图块的每图块散列值与候选集中的至少一个图块的每图块散列值的比较来选择要调度用于供处理逻辑处理的下一图块。

当前调度的图块可以是(i)正处理的当前图块,或(ii)最近调度的图块。

所述调度逻辑可布置成至少部分地基于空间次序方案来标识图块候选集。

候选集可包括根据空间次序方案的随后n个图块,其中n是整数。候选集可包括根据空间次序方案的来自随后n组图块中的每一组的第一图块,其中n是整数。候选集可包括邻近正处理的当前图块的一个或多个图块。

所述图形处理单元还可包括高速缓存控制器,所述高速缓存控制器配置成基于对两个或更多个每图块散列值的分析而选择要从高速缓存逐出的纹理数据项。

所述渲染逻辑可包括多个处理核心,其中所述高速缓存可被所述多个处理核心中的每个处理核心存取。

所述高速缓存控制器可布置成基于对两个或更多个每图块散列值的分析来标识一个或多个最不可能使用的纹理,并且选择对应于最不可能使用的纹理的纹理数据项从高速缓存逐出。

所述高速缓存控制器可布置成基于对正由渲染逻辑处理的至少一个图块的每图块散列值的分析来标识一个或多个最不可能使用的纹理。

两个每图块散列值的比较可包括逐位比较以标识这两个每图块散列值中的数个匹配位。

每个每图块散列值可以是固定大小的概率性数据结构。所述固定大小的概率性数据结构可以是布隆过滤器(bloomfilter)。

所述每图块散列生成逻辑可布置成针对每个图块,通过以下操作来生成每图块散列值:对于将在渲染逻辑中处理图块时存取的每个纹理,标识布隆过滤器中的位位置;以及将布隆过滤器中每个所标识位位置处的位设置成默认值。所述每图块散列生成逻辑可布置成针对每个图块,通过以下操作来生成每图块散列值:对于将在渲染逻辑中处理图块时存取的每个纹理,使用多个散列函数中的每个散列函数标识布隆过滤器中的位位置;以及将布隆过滤器中每个所标识位位置处的位设置成默认值。

所述每图块散列生成逻辑可包含在所述分块单元中。

所述图形处理单元可布置成将图块的每图块散列值存储在所述图块的图块控制列表内。

第二方面提供一种使用细分成多个图块的渲染空间处理图形数据的方法,所述方法包括:在图形处理单元中生成每个图块的图块控制列表,图块的图块控制列表标识存在于所述图块中的图形数据项;针对每个图块,基于将在图形处理单元中的渲染逻辑中处理图块时存取的一组纹理来生成每图块散列值;存储图块的每图块散列值以供渲染逻辑使用;以及使用图块控制列表和存储在高速缓存中的纹理数据来在渲染逻辑中渲染图块。

所述方法还可包括基于对两个或更多个每图块散列值的比较,由渲染逻辑中的处理逻辑选择要调度用于处理的下一图块。

选择要调度用于处理的下一图块可包括:标识图块候选集;以及基于当前调度的图块的每图块散列值与候选集中的至少一个图块的每图块散列值的比较来选择要调度用于供处理逻辑处理的下一图块。

所述方法还可包括在高速缓存控制器中,基于对两个或更多个每图块散列值的分析而选择要从高速缓存逐出的纹理数据项。基于对两个或更多个每图块散列值的分析而选择要从高速缓存逐出的纹理数据项可包括:基于对两个或更多个每图块散列值的分析而标识一个或多个最不可能使用的纹理;以及选择对应于最不可能使用的纹理的纹理数据项从高速缓存逐出。

一种图形处理系统可配置成执行本文所描述的任一方法。

本文所描述的图形处理系统,其中所述图形处理系统可体现在集成电路上的硬件中。

一种计算机可读代码,其配置成在代码运行时使本文所描述的任一方法可被执行。

一种集成电路定义数据集,其在集成电路制造系统中处理时可将所述集成电路制造系统配置成制造如本文所描述的图形处理单元。

一种集成电路制造系统,其包括:非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质上存储有描述图形处理单元的集成电路的计算机可读描述;布局处理系统,其配置成处理集成电路描述以生成体现图形处理单元的集成电路的电路布局描述;以及集成电路生成系统,其配置成根据电路布局描述来制造图形处理单元,其中所述图形处理单元包括:分块单元,所述分块单元布置成生成每个图块的图块控制列表,图块的图块控制列表标识存在于所述图块中的图形数据项;高速缓存,所述高速缓存用于存储用于渲染图块的纹理数据;以及渲染逻辑,所述渲染逻辑布置成使用由分块单元生成的图块控制列表和存储在高速缓存中的纹理数据来渲染图块;其中所述图形处理单元包括每图块散列生成逻辑,所述每图块散列生成逻辑布置成针对每个图块基于将在渲染逻辑中处理图块时存取的一组纹理来生成每图块散列值,并且其中所述图形处理单元还布置成存储图块的每图块散列值以供所述渲染逻辑使用。

gpu可体现在集成电路上的硬件中。可提供一种在集成电路制造系统处制造gpu的方法。可提供一种集成电路定义数据集,所述集成电路定义数据集在集成电路制造系统中处理时将所述系统配置成制造gpu。可提供一种非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,所述描述在被处理时使布局处理系统生成用在集成电路制造系统中以制造gpu的电路布局描述。

可提供一种集成电路制造系统,其包括:非暂时性计算机可读存储介质,其上存储有描述gpu的计算机可读集成电路描述;布局处理系统,其配置成处理所述集成电路描述以生成体现gpu的集成电路的电路布局描述;以及集成电路生成系统,其配置成根据所述电路布局描述来制造gpu。

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

所属领域的技术人员将清楚,上述特征可在适当时组合,并且可与本文所描述的示例的任一方面组合。

附图说明

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

图1是图形处理系统的示意图;

图2a到2c是示出图1的系统的示例操作方法的流程图;

图3示出生成每图块散列值的方法的图形表示;

图4是示出处理图块的第一示例次序的示意图;

图5是示出处理图块的第二示例次序的示意图;

图6示出其中实施图形处理系统的计算机系统;以及

图7示出用于生成体现图形处理系统的集成电路的集成电路制造系统。

附图示出各种示例。所属领域的技术人员应了解,图中所示元件边界(例如,方框、方框群组,或其它形状)表示边界的一个示例。在一些示例中,可将一个元件设计为多个元件,或可将多个元件设计为一个元件。适当时,贯穿各图使用共同附图标号来指示类似特征。

具体实施方式

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

现将仅通过举例来描述实施例。

如上文所描述,基于图块的图形处理系统通常有两个操作阶段:几何形状处理阶段和渲染阶段。在几何形状处理阶段,分析用于渲染的图形数据以针对每个图块确定哪些图形数据项存在于所述图块内,并且将所述图块的此信息例如以图形数据项(例如图元)列表的形式存储在可称作图块控制列表(tcl)的数据结构中。接着在渲染阶段,通过处理在特定图块的tcl中标识的那些图形数据项来渲染图块。调度图块以供处理的次序可以是固定的,并且可基于空间次序调度方案,例如z形次序或n形次序。

本文描述:用于生成增强型图块控制列表的方法和设备,所述增强型图块控制列表包含(例如在标头内)关于将在处理图块时存取的纹理的额外信息;以及用于基于此额外信息调度对图块的处理的方法和设备。所述额外信息可另外或替代地用于基于图块的图形处理系统内的其它决策,例如作为高速缓存逐出方案的部分。所述额外信息包括提供对图块中的工作负载的指示的每图块散列值。所述指示可提供准确信息或可提供近似值。在各种示例中,每图块散列值可实施为固定大小的概率性数据结构,例如布隆过滤器。此每图块散列值可例如包括固定数目的位,其中此固定数目在10到20位的范围内。所以,在tcl中包含每图块散列不会显著增大tcl的大小(即,与存储图元列表所需的数据量相比,每图块散列极小)。

通过在tcl内包含每图块散列值,图块的调度和/或高速缓存的数据逐出可以考虑到不同图块进行的纹理存取是否存在任何重叠,并由此提高高速缓存性能(即,增大高速缓存命中率)。与使用固定空间次序调度图块的系统相比,提高的高速缓存性能能够减少执行时间和带宽利用,最终还能降低功耗。在布隆过滤器用作每图块散列的情况下,这会提供可在不同图块之间轻松比较的紧凑的每图块散列(即,所述比较需要的处理工作量极少),尽管可能存在误报(即,图块被标识成具有许多类似纹理存取,但实际上它们没有那么多类似纹理存取),但不存在漏报(即,分析将始终标识具有类似纹理存取的那些图块)。这又确保了与已知调度方案相比,高速缓存性能有所提高(因此,执行时间、带宽利用和功耗也有所改善)(例如,因为误报并不比不使用每图块散列的已知系统糟糕)。

图1示出可用于渲染3d场景的图像并且生成和使用增强型tcl的图形处理系统100的一些元件。图形处理系统100包括图形处理单元(gpu)102和存储器的两个部分104a、104b。存储器的两个部分104a、104b可以是也可以不是同一物理存储器的部分。gpu102包括预处理模块106、分块单元108和渲染逻辑110。分块单元108包括布置成生成每图块散列的逻辑120。如在下文详细描述,每图块散列提供呈紧凑形式(例如呈10到20位的形式)的关于将在渲染逻辑110中处理图块时存取的纹理的信息。渲染逻辑110包括获取单元112、处理逻辑113和调度逻辑116。处理逻辑113包括一个或多个处理核心114a-f、高速缓存126和高速缓存控制器127。渲染逻辑110配置成使用处理逻辑113的处理核心114a-f来对渲染空间的图块的图形数据(例如图元片段)实施隐藏表面去除(hsr)和纹理化和/或着色。在此示例中,每个处理器核心114a-f都可存取高速缓存126。即,处理器核心114a-f之间共享高速缓存126,但在其它示例中,可存在多个高速缓存并且每个高速缓存可在处理器核心的非重叠子集之间共享,和/或可存在不被共享而是只能被单个处理器核心存取的额外本地高速缓存。高速缓存126可用以存储图形数据(例如图元和/或纹理数据),所述图形数据可由处理器核心114a-f中的一个或多个在这些核心渲染相应指派的图块时进行存取。高速缓存126的图形内容可由高速缓存控制器127控制。高速缓存控制器127可例如配置成将图形数据从存储器的某个其它部分写入到高速缓存126中。高速缓存控制器127还可配置成清除、逐出或清空存储在高速缓存126中的图形数据,例如,以使其它数据能够被存储。(渲染逻辑110中的)调度逻辑116包括散列分析逻辑117和一个或多个渲染队列118。

图1的图形处理系统100可包括图1中未示出的其它元件,例如配置成编译要在gpu102上执行的程序(例如着色器程序)的编译器。所述编译器可将已编译的着色器程序写入到中间存储器(图1中也未示出),其中在运行时间,gpu102从所述中间存储器检取所述已编译的着色器程序。此外,每图块散列生成逻辑120和散列分析逻辑117可位于gpu102中与图1所示的位置不同的位置。

在图1所示的示例中,渲染逻辑110包括六个处理核心114a-f,但在其它示例中,渲染逻辑110中可包含任何合适数目的处理核心,例如在1到256或甚至更高的范围内。渲染逻辑110中的数个处理核心可调适成适合图形处理系统的既定用途。例如,要用在对处理资源和硅大小具有严格约束的小型移动装置中的图形处理系统可能包含较小数目的处理核心(例如,6个处理核心),而要用在对处理资源和硅大小没有那么严格约束的pc或服务器等较大装置中的图形处理系统可能包含较大数目的处理核心(例如,128个处理核心)。

可参考图2a-c的流程图描述图1的图形处理系统100的操作。在gpu102内的预处理模块106处接收由应用程序(例如,从在与gpu102相同的计算系统中的cpu上运行的游戏应用程序)提供的图元序列。在几何形状处理阶段,预处理模块106执行包含修剪和剔除等几何形状处理的功能,以移除未落入可见视图中的图元。预处理模块106还可将图元投射到屏幕空间中。从预处理模块106输出的图元被传递到分块单元108以供分块。

分块单元108确定在图形处理系统100的渲染空间的每个图块内存在哪些图元(框202)。分块单元108通过创建渲染空间的图块的控制流来向所述图块指派图元(在框202中),其中图块的控制流包含对图块内存在的图元的指示。除针对每个图块生成图元列表之外,分块单元108内的每图块散列生成逻辑120还针对每个图块生成散列值(框204),并且此散列值被包含在图块控制列表内(框206),例如在tcl的标头内。增强型tcl(包含每图块散列值)和图元从分块单元108中输出并存储在存储器104a中。几何形状处理阶段(由预处理模块106和分块单元108执行)会考虑整个图像上的图元,即,针对图像中的所有图块。应了解,虽然将每图块散列生成逻辑120示为分块单元108的部分,但在其它示例中,每图块散列生成逻辑可以是单独单元,并且可以例如定位在分块单元108之后但在控制流和图元输出到存储器104a之前。

使用散列函数并且基于将在图块由渲染逻辑110处理时存取的纹理来生成散列值(在框204中)。例如,如果在处理第一图块时将存取纹理a、b和c,则基于纹理a、b和c,例如基于纹理a、b和c的标识符,生成散列函数。在处理时,第二图块可存取纹理b、c和d,并且因此将基于纹理b、c和d(例如,基于纹理b、c和d的标识符)生成第二图块的每图块散列,并且所得的第二图块的每图块散列很可能不同于第一图块的每图块散列值。两个图块的散列值的比较可用于指示用于渲染那些图块的纹理的相似程度(即,指示用于渲染图块中的一个图块的纹理中大约有多少纹理也用于渲染图块中的另一个图块)。

可使用任何合适的散列函数,并且通过使用多于一个散列函数和/或增大散列函数的复杂度,每图块散列值的整体大小可减小(例如,使得它包括数目比纹理总数少的位)。在各种示例中,每图块散列值可初始地包括零阵列(例如n个零,其中在各种示例中,10≤n≤20)。对于将在处理图块时存取的每个纹理,设置阵列中的一个或多个位(即,从0变为1)。在各种示例中,阵列可包括与可用纹理的数目相同的位数目,并且散列函数可设置对应于将在图块被处理时存取的每个纹理的每图块散列值中的单个位。在其中存在数目比可用纹理的数目少的位的变型中,可基于纹理标识符中的一个或多个最低有效位来设置每图块散列值中的位(例如,在存在编号为0到x的大于10个纹理并且每图块散列中仅有10个位的情况下,可基于每个纹理标识符设置以单位数(即0-9)作索引的位,并且可忽略两位数)。因此,如果一个图块使用纹理0、1和2,则其每图块散列是0000000111,而另一图块使用纹理0、11和13,则其每图块散列是0000001011。以此方式,纹理1、11、21、……将导致每图块散列中的相同位被设置并且因此导致一些误报,但每图块散列的使用仍会使高速缓存性能整体提高,并且肯定不会比不使用每图块散列的已知系统差。

在另一示例中,可针对将在图块被处理时存取的每个纹理设置多于一个位。在各种示例中,布隆过滤器或其它概率性数据结构可用作每图块散列值,并且一个或多个散列函数可用于生成每图块散列值,如图3中以图形方式所示。在图3所示的示例中,阵列302初始地仅包括零,并且使用两个散列函数,使得对于将在处理图块时存取的每个纹理(例如对于纹理a、b和c中的每个纹理),将纹理的标识符馈送到所述两个散列函数,并且设置阵列内的两个位(即,每个散列函数标识纹理的一个位位置,因此,由于在此示例中存在两个散列函数,所以标识两个位位置)。虽然在图3所示的示例中,针对纹理a-c中的每个纹理设置的位之间不存在重叠,但取决于存取的纹理,尽管每个纹理可能引起对不同位对(或不同位群组,其中使用多于两个散列函数)的设置,多于一个纹理还是可能会引起对阵列内相同位的设置。所得填充阵列304是每图块散列值,并且包含于图块的tcl内(在框206中)。

在生成增强型tcl(在框206中)并将其存储在存储器104a内后,增强型tcl内的每图块散列值可用于gpu102内的一个或多个后续操作,例如渲染逻辑110内的一个或多个后续操作。渲染逻辑110使用处理核心114a-f渲染图像的图块(框210)并将渲染的图块的输出存储在帧缓冲器的合适部分中(框212),使得当图像的所有图块都被渲染时,(例如存储器104b内的)帧缓冲器存储整个图像的渲染结果。在各种示例中,增强型tcl,并且具体地说,增强型tcl内的每图块散列值,可用于通过提高高速缓存126的性能来提高渲染阶段的效率。图2a中示出可通过使用每图块散列值提高高速缓存性能的两种不同方式,并且应了解,这两种方式可一起使用或可彼此独立地使用。另外,每图块散列值可用于渲染逻辑110内的其它决策过程以进一步提高渲染阶段的效率。

渲染逻辑110内的调度逻辑116确定处理核心114a-f处理图块的次序以及哪个处理核心处理特定图块。在各种示例中,在增强型tcl内的每图块散列值用于对图块进行调度的情况下,调度逻辑116内的散列分析逻辑117从tcl读取每图块散列,并且执行当前在队列118中等待调度的一个或多个图块的每图块散列之间的比较。基于此比较,选择要处理的下一图块(框208)且接着使用处理核心114a-f进行渲染(框210),之后例如在存储器104b内存储渲染结果(框212)。

为了执行选择(在如图2b中所示的框208中),调度逻辑116(或散列分析逻辑117)标识接下来要处理的图块候选集(框208a)。此候选集可包括来自一个或多个队列118的一个或多个图块,并且可基于一个或多个准则从那些一个或多个队列118中选出。在各种示例中,可基于如图4中以图形方式所示的n形次序或z形次序等空间次序方案来选择候选集,其中每个方形402表示图块,着色图块404是正处理的当前图块,并且箭头示出空间次序方案。在使用空间次序方案确定候选集的情况下,候选集可包括根据空间次序方案的随后n个图块(例如在图4中,如果n=4,则候选集包括沿着箭头的随后四个图块406到412)。在各种示例中,n可介于16与64之间(例如其中渲染包括大约2000个图块)。在其它示例中,候选集可包括队列118中与正处理的当前图块相邻的那些图块,例如在图5中以图形方式所示,其中每个方形402表示图块,中心图块502是正处理的当前图块,且候选集可包括四个直接邻近的图块504到510(图5中示为着色的)或八个环绕的图块(图5中在边界框512内示出)。在这些示例中的任一个示例中,候选集不会包含符合准则但不在队列118中的任何图块(例如,因为它们已被处理)。例如,如果四个直接邻近的图块504到510中的一个图块已被处理,则该图块不在所述一个或多个队列118中,因此从候选集中省去。

在标识接下来要处理的图块候选集(在框208a中)后,散列分析逻辑117从每个图块的增强型tcl中存取候选集中每个图块的每图块散列,并比较候选集中每个图块的每图块散列与正处理的当前图块的每图块散列(框208b)。此比较(在框208b中)可包括逐位比较以确定图块候选集中的每个图块的每图块散列中与正处理的当前图块的每图块散列中的位相同的位数目。接着,选择具有最类似的每图块散列(例如具有匹配正处理的当前图块的每图块散列的最多位)的图块以供接下来处理(框208c)。

上文对图2b的描述提及‘正处理的当前图块’,这可以任何合适方式确定。在各种示例中,在任何时间存在多个正处理的图块(例如每个处理核心114a-f处理一个图块)的情况下,正处理的当前图块则可被视为是最近调度的图块。替代地,可基于对候选集中的图块的每图块散列与当前正处理的所有图块(即,已调度用于处理但尚未完成处理的所有图块)的每图块散列的比较来执行所述比较(在框208中)。在本文描述中,对“正处理的当前图块”的提及可更笼统地指“当前调度的图块”,其中当前调度的图块可以例如是正处理的当前图块或最近调度的图块。

在各种示例中,可以不执行基于每图块散列值的比较(在框208中)选择要处理的下一图块来确定要处理的每个下一图块,而是改为可周期性地应用所述选择,例如,以选择要处理的下一组图块,其中所选群组内的图块以固定次序得到处理。例如,在使用例如n形次序或z形次序的空间次序方案的情况下,每组图块可包括形成局部‘n’或‘z’的那四个图块,例如图4中示出的示例中的图块404到410。在调度一组图块中的最后一个图块(例如,一组图块404到410中的图块410)之后,图2b的方法可用于确定要处理的下一组图块,其中这一组图块内的图块以空间次序进行处理。例如,在调度这一组图块404到410中的最后一个图块(例如图块410)之后,可标识包括来自多组图块中的每一组的第一图块(例如,图块412和414)的图块候选集。基于那些第一图块的每图块散列的比较(在框208b中),选择一个图块(在框208c中),并且在选择一组中的第一图块后,以空间次序处理这一组中的其余图块。这会减少所执行的比较次数(因为每组执行一次n个比较而非每图块执行一次n个比较);然而,所得的高速缓存性能提高程度可能比不上为调度每个个别图块用于处理而执行比较的情况。

在选择操作(在框208中)的另一变型中,在标识候选集(在框208a中)而非对候选集中每个图块的每图块散列与正处理的当前图块的每图块散列进行比较后,第一比较对候选集中第一图块的每图块散列与正处理的当前图块的每图块散列进行比较,如果所述比较(例如匹配位的数目)超过阈值,则可选择该图块用于处理而无需分析候选集中的其它图块。如果未超过阈值,则可将候选集中下一图块的每图块散列与正处理的当前图块的每图块散列相比较,以此类推。在此示例中对图块进行比较的顺序可基于空间次序方案(例如,使得在图4的示例中,如果图块404是正处理的当前图块,则第一图块是图块406,下一图块是图块408,以此类推)或基于任何其它准则,或图块可随机选自候选集。此变型也会减少执行的比较次数(因为为选择每个图块而执行的比较次数可小于n);然而,所得的高速缓存性能提高程度可能比不上为调度每个个别图块用于处理而执行比较的情况。此变型还可与先前变型组合,使得为选择每组图块而执行的比较次数可小于n,并且每组图块仅执行一次所述比较。

应了解,在基于空间次序方案标识图块候选集(在框208a中)的情况下,所得图块选择(在框208c中)很可能扰乱空间次序并导致呈空间次序的图块(例如个别图块或整组图块)被跳过。例如,返回参考图4中示出的示例,如果当前图块是着色图块404并且候选集包括呈z形次序的随后四个图块,即图块406到412,则要处理的下一图块可能不会导致图块被跳过(在图块406被确定为最类似并且因此在框208c中被选中的情况下),或可能导致一到三个图块被跳过(在图块408到412中的一个图块被确定为最类似并且因此在框208c中被选中的情况下)。在图块被跳过的情况下,一旦空间次序(例如z形次序)已遍历整个渲染空间,所述空间次序可在开端处(例如,左上图块416并沿循虚线箭头)再次开始,使得在渲染空间的前一扫描中跳过的任何图块可以被调度。这可一直重复到渲染空间中的所有图块都被调度过为止。

本文在空间次序方案的上下文中描述每图块散列值在调度图块中的使用。或者,本文所描述(并在图2b中示出)的选择机制可与成本估计值和/或其它相似度指示符(例如,如同在申请中的申请案gb1700562.0和gb1810776.3中所描述)等其它选择准则组合使用。例如,如同在申请中的申请案gb1700562.0中所描述的成本估计值可用于选择候选集(在框208a中)。

如上文所描述,通过生成每图块散列值并将其用于调度图块,更类似的图块(即,具有更多共同纹理的图块)在彼此接近的时间加以调度,因此处理图块所需的数据有较高概率已经存储在高速缓存126中。这会增大高速缓存命中数目并且减小必须从存储器读取的数据量。这又减少了执行时间和带宽利用,继而又降低了gpu的功耗。

作为使用每图块散列值以在接近时间一起调度更类似的图块的增添或替代,每图块散列值可用于标识存取(或以其它方式使用)执行得较慢的资源(例如视频解码器)的图块,接着避免同时调度存取(或以其它方式使用)该特定资源的多个图块。另外,每图块散列可用于在对渲染空间的整个处理过程中均匀地调度所述特定资源(例如针对特定帧)。

作为将(增强型tcl内的)每图块散列值用于图块的调度的增添或替代,每图块散列值可供高速缓存控制器127用作高速缓存逐出方案的部分。如图2a中所示,基于对一个或多个图块的每图块散列值的分析,例如基于对正处理的当前图块或当前正处理的所有图块的每图块散列值的分析,高速缓存控制器127可选择从高速缓存126中逐出的数据(框214)(例如,以在高速缓存未命中之后腾出空间来存储新数据)。

为了执行所述选择(如图2c中所示的框214中),高速缓存控制器127标识供考虑的图块集(框214a)。如上文详述,此集可包括单个图块——正处理的当前图块。或者,所述集可包括多个图块,例如,当前正由处理核心114a-f中的任一个处理核心处理的所有图块。在各种示例中,所述集可另外包括可能很快被处理的一组图块(例如,根据空间次序方案的随后n个图块)。在标识供考虑的图块集(在框214a中)后,(例如,从tcl)存取并分析这些图块中的每个图块的每图块散列以确定一个或多个最不可能使用的纹理(框214b)。接着,来自所述一个或多个最不可能使用的纹理的数据项可被优先选择用于逐出(框214c)。在各种示例中,可通过分析进行标识以供考虑的每个图块的每图块散列(在框214a中)并且每当根据每图块散列标识出对应的纹理时增大每纹理计数器值来确定最不可能使用的纹理。在对进行标识以供考虑的图块的所有每图块散列的分析结束时具有最低每纹理计数器值的纹理可被标识为最不可能使用的纹理。

在图2c的方法的变型中,每当图块调度用于处理(例如在框208中)时,将由该图块存取的每个纹理的每纹理计数器值(如根据每图块散列值确定)可增大一,并且每当完成图块的处理时,已由该图块存取的每个纹理的每纹理计数器值(例如根据每图块散列值确定)可减小一。以此方式,每纹理计数器值指示当前正处理的将存取每个纹理的图块的数目。因此,不必标识图块集以供考虑(即,省去框214a),并且对最不可能使用的纹理的标识(在框214b中)涉及确定哪些纹理具有最低的每纹理计数器当前值。在各种示例中,所述标识(在框214b中)可包括标识具有一或更低的值的那些每纹理计数器。

除了在高速缓存逐出方案中(在框214中)使用每图块散列以及在各种示例中的每纹理计数器之外,每图块散列以及在各种示例中的每纹理计数器还可用于确定要从较低层级高速缓存抢先提取(例如,从l2高速缓存到l1高速缓存中)的数据。如同上文所描述的高速缓存逐出策略,这会增大高速缓存命中的概率,并且降低高速缓存未命中的可能性以及减小在数据必须从存储器读取时所致的延迟。这又减少了执行时间和带宽利用,继而又降低了gpu的功耗。

如上文所描述,通过生成每图块散列值并将其用于从高速缓存126逐出数据,在短期内将(即,被当前正处理的任何其它图块)需要的数据将被逐出的概率较低,因此处理图块所需的数据有较高概率已经存储在高速缓存126中。这很可能会增加高速缓存命中数目并且减小必须从存储器读取的数据量。这又减少了执行时间和带宽利用,继而又降低了gpu的功耗。

虽然在本文所描述的示例中,基于在渲染逻辑中处理图块时存取的纹理来生成每图块散列,但在本文所描述的方法的变型中,可另外或替代地基于在渲染逻辑中处理图块时所用的其它资源,例如基于所用的着色器程序,来生成每图块散列。

图6示出其中可实施本文所描述的图形处理系统的计算机系统。所述计算机系统包括cpu602、gpu102(例如,图1中所示并在上文描述)、存储器606和其它装置608,例如显示器610、扬声器612和相机614。所述计算机系统的部件通过通信总线618彼此通信。

图1中的gpu102示为包括数个功能块。这仅是示意性的,并非旨在限定此类实体的不同逻辑元件之间的严格划分。可按任何合适的方式提供每个功能块。应理解,本文中描述为由gpu内的任何元件形成的中间值不必由特定元件在任一点以物理方式生成,可能仅表示便于描述由gpu在其输入与输出之间执行的处理的逻辑值。

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

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

处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,并且具有使其可以执行指令的处理能力。处理器可以是任何种类的通用或专用处理器,例如cpu、gpu、片上系统、状态机、媒体处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)、物理处理单元(ppu)、无线电处理单元(rpu)、数字信号处理器(dsp)、通用处理器(例如通用gpu)、微处理器、设计成加速cpu外部的任务的处理单元,等。计算机或计算机系统可包括一个或多个处理器。所属领域的技术人员将认识到,此类处理能力并入于许多不同装置中,因此术语‘计算机’包含机顶盒、媒体播放器、数字无线电装置、pc、服务器、移动电话、个人数字助理和许多其它装置。

本发明还旨在涵盖限定本文中描述的硬件配置的软件,例如硬件描述语言(hdl)软件,其用于设计集成电路或用于配置可编程芯片以执行期望的功能。即,可提供一种计算机可读存储介质,其上编码有呈集成电路定义数据集形式的计算机可读程序代码,所述集成电路定义数据集在集成电路制造系统中处理(即,运行)时将所述系统配置成制造配置成执行本文所描述的任一方法的gpu,或制造包括本文所描述的任何设备的计算装置。集成电路定义数据集可以是例如集成电路描述。

因此,可提供一种在集成电路制造系统处制造本文所描述的gpu的方法。此外,可提供一种集成电路定义数据集,其在集成电路制造系统中处理时使制造gpu的方法得以执行。

集成电路定义数据集可呈计算机代码形式,例如作为网表、用于配置可编程芯片的代码、作为在任何层级限定集成电路的硬件描述语言,包含作为寄存器传送级(rtl)代码、作为verilog或vhdl等高级电路表示以及作为oasis(rtm)和gdsii等低级电路表示。在逻辑上限定集成电路的高级表示(例如rtl)可在配置成用于在软件环境的上下文中生成集成电路的制造定义的计算机系统处进行处理,所述软件环境包括电路元件的定义以及用于组合那些元件以便生成由所述表示如此限定的集成电路的制造定义的规则。如同软件在计算机系统处执行以限定机器的通常情况,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置成用于生成集成电路的制造定义,以执行限定集成电路的代码,从而生成该集成电路的制造定义。

现将相对于图7描述在集成电路制造系统处处理集成电路定义数据集以配置系统来制造gpu的示例。

图7示出集成电路(ic)制造系统702的示例,所述系统配置成如本文中的任一示例所描述的那样来制造gpu。具体地说,ic制造系统702包括布局处理系统704和集成电路生成系统706。ic制造系统702配置成接收ic定义数据集(例如,限定如本文的任一示例中所描述的gpu),处理ic定义数据集,并且根据ic定义数据集生成ic(例如,其体现如本文的任一示例中所描述的gpu)。ic定义数据集的处理将ic制造系统702配置成制造体现如本文的任一示例中所描述的gpu的集成电路。

布局处理系统704配置成接收并处理ic定义数据集以确定电路布局。根据ic定义数据集来确定电路布局的方法在所属领域中已知,并且例如可能涉及合成rtl代码以确定要生成的电路的门级表示,例如逻辑部件(例如,nand、nor、and、or、mux和flip-flop部件)方面。通过确定逻辑部件的位置信息,可根据电路的门级表示来确定电路布局。这可自动地或在用户参与下完成,以优化电路布局。当布局处理系统704确定了电路布局,布局处理系统可将电路布局定义输出到ic生成系统706。电路布局定义可以是例如电路布局描述。

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

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

在其它示例中,在集成电路制造系统处对集成电路定义数据集进行处理可将系统配置成制造gpu,而无需对ic定义数据集进行处理来确定电路布局。例如,集成电路定义数据集可限定可重新配置的处理器(例如,fpga)的配置,并且对该数据集进行的处理可将ic制造系统配置成生成具有限定的所述配置的可重新配置的处理器(例如,通过将配置数据加载到fpga)。

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

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

所属领域的技术人员将认识到,用于存储程序指令的存储装置可跨越网络分布。例如,远程计算机可存储被描述为软件的过程的示例。本地或终端计算机可访问远程计算机并下载软件的一部分或全部来运行程序。或者,本地计算机可按需要下载软件片段,或在本地终端执行一些软件指令以及在远程计算机(或计算机网络)执行一些软件指令。所属领域的技术人员还将认识到,通过利用所属领域的技术人员已知的常规技术,所有或部分软件指令可由例如dsp、可编程逻辑阵列等专用电路执行。

本文所描述的方法可由计算机执行,所述计算机配置有存储在有形存储介质上的呈机器可读形式的软件,例如呈包括计算机可读程序代码的计算机程序形式,所述计算机可读程序代码用于将计算机配置成执行所描述方法的组成部分,或呈包括计算机程序代码构件的计算机程序形式,所述计算机程序代码构件适于在计算机上运行所述程序时执行本文所描述的任一方法的所有步骤,并且其中所述计算机程序可在计算机可读存储介质上体现。有形(或非暂时性)存储介质的示例包含磁盘、拇指驱动器(thumbdrive)、存储器卡等,并且不包含传播的信号。软件可适合在并行处理器或串行处理器上执行,使得方法步骤可按任何合适的次序或同时执行。

本文所描述的硬件部件可由上面编码有计算机可读程序代码的非暂时性计算机可读存储介质生成。

存储用于实施所公开的方面的机器可执行数据的存储器可以是非暂时性介质。非暂时性介质可以是易失性或非易失性的。易失性非暂时性介质的示例包含基于半导体的存储器,例如sram或dram。可用于实施非易失性存储器的技术示例包含光学和磁存储器技术、快闪存储器、相变存储器、电阻ram。

特别提到的“逻辑”是指执行一种或多种功能的结构。逻辑示例包含布置成执行那些功能的电路系统。例如,此类电路系统可包含在制造过程中可用的晶体管和/或其它硬件元件。此类晶体管和/或其它元件可用于形成电路系统或结构,所述电路系统或结构实施和/或含有存储器(例如寄存器、触发器或锁存器)、逻辑运算符(例如布尔(boolean)运算)、数学运算符(例如加法器、乘法器或移位器)以及互连件等。此类元件可作为定制电路或标准单元库、宏或以其它抽象级提供。此类元件可互连成特定布置。逻辑可包含固定功能的电路系统,并且电路系统可编程成执行一种或多种功能;此类编程可从固件或软件更新或控制机制提供。标识成执行一个功能的逻辑还可包含实施组成功能或子过程的逻辑。在示例中,硬件逻辑具有实施一种或多种固定功能操作、状态机或过程的电路系统。

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

所属领域的技术人员将清楚,本文给出的任何范围或装置值可在不失去所追求的效果的情况下进行扩展或更改。

应理解,上文所描述的益处和优势可涉及一个实施例,也可涉及若干实施例。实施例不局限于解决任一或所有所陈述问题的那些实施例或具有任一或所有所陈述益处和优势的那些实施例。

对‘一个’项目的任何提及是指一个或多个那些项目。本文中使用术语‘包括’来表示包含所标识的方法块或要素,但此类块或要素并不包括独占式列表,并且设备可含有额外块或要素,而方法可含有额外操作或要素。此外,所述块、要素和操作自身并非暗指为封闭式的。

本文所描述的方法的步骤可按任何适合的次序执行,或在适当时同时执行。图中方框之间的箭头示出方法步骤的一个示例顺序,但并非旨在排除其它顺序或多个步骤的并行执行。另外,在不脱离本文描述的主题的精神和范围的情况下,可从任何方法中删除个别框。在不失去所追求效果的情况下,上文所描述的任一示例的各方面可与所描述的任一其它示例的各方面组合以形成其它示例。在图中元件示为由箭头连接的情况下,应了解,这些箭头仅示出元件之间的一个示例通信流(包含数据和控制消息)。元件之间的流可在任一方向上或在两个方向上。

申请人由此独立地公开本文描述的每个单独特征以及两个或更多个此类特征的任何组合,其程度使得此类特征或组合能够鉴于所属领域的技术人员的公共常识基于本说明书整体来执行,而不管此类特征或特征的组合是否解决本文公开的任何问题。鉴于前文描述,对所属领域的技术人员来说显而易见的是,可在本发明的范围内进行各种修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1