CN110728616A - 图形处理单元内处理核心的图块分配 - Google Patents
图形处理单元内处理核心的图块分配 Download PDFInfo
- Publication number
- CN110728616A CN110728616A CN201910576290.7A CN201910576290A CN110728616A CN 110728616 A CN110728616 A CN 110728616A CN 201910576290 A CN201910576290 A CN 201910576290A CN 110728616 A CN110728616 A CN 110728616A
- Authority
- CN
- China
- Prior art keywords
- tiles
- similarity
- indication
- tile
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 463
- 238000009877 rendering Methods 0.000 claims abstract description 245
- 238000000034 method Methods 0.000 claims abstract description 90
- 230000008569 process Effects 0.000 claims abstract description 47
- 238000004519 manufacturing process Methods 0.000 claims description 45
- 230000001419 dependent effect Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 39
- 239000012634 fragment Substances 0.000 description 29
- 230000008901 benefit Effects 0.000 description 19
- 230000000903 blocking effect Effects 0.000 description 19
- 238000007781 pre-processing Methods 0.000 description 12
- 230000000694 effects Effects 0.000 description 11
- 230000008859 change Effects 0.000 description 10
- 230000006872 improvement Effects 0.000 description 8
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 7
- 229910052710 silicon Inorganic materials 0.000 description 7
- 239000010703 silicon Substances 0.000 description 7
- 238000003860 storage Methods 0.000 description 7
- 238000000605 extraction Methods 0.000 description 6
- 230000003247 decreasing effect Effects 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 238000013139 quantization Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000149 penetrating effect Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012993 chemical processing Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000035515 penetration Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000005389 semiconductor device fabrication Methods 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5017—Task decomposition
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
Abstract
一种图形处理单元,该图形处理单元被配置成使用被细分为多个图块的渲染空间来处理图形数据,该图形处理单元包括:多个处理核心,其被配置成渲染图形数据;成本指示逻辑,其被配置成获得渲染空间的一个或多个图块的多个集合中的每一个集合的成本指示,其中一个或多个图块的一个集合的成本指示暗示处理一个或多个图块的该集合的成本;相似性指示逻辑,其被配置成获得渲染空间的一个或多个图块的各集合之间的相似性指示,其中一个或多个图块的两个集合之间的相似性指示表示根据至少一个处理度量的图块的这两个集合之间的相似性水平;以及调度逻辑,其被配置成根据成本指示和相似性指示将一个或多个图块的各集合分配给处理核心以用于渲染。
Description
技术领域
本公开涉及将图块或图块组分配给图形处理单元内的处理核心的方法。
背景技术
图形处理系统通常被配置成例如从运行在计算机系统上的应用接收图形数据,并且渲染(render)图形数据以提供渲染输出。例如,提供给图形处理系统的图形数据可以描述待渲染的三维(3D)场景内的几何形状,并且渲染输出可以是场景的渲染图像。一些图形处理系统(可以称为“基于图块的”图形处理系统)使用被细分成多个图块的渲染空间。“图块”是渲染空间的区域,并且可以具有任何合适的形状,但是通常是矩形的(其中术语“矩形”包括正方形)。举例来说,图块可以覆盖待渲染的图像的16×16像素块或32×32像素块。如本领域所知,将渲染空间细分成图块有许多好处。例如,将渲染空间细分成图块允许以逐个图块的方式渲染图像,其中图块的图形数据可以在该图块的渲染期间临时存储在“芯片上”。
基于图块的图形处理系统通常分两个阶段操作:几何处理阶段和渲染阶段。在几何处理阶段,用于渲染的图形数据被分析,以确定对于每个图块,哪些图形数据项存在于该图块内。然后在渲染阶段,可以通过处理那些被确定为存在于该图块内的图形数据项来渲染图块(而不需要处理在几何处理阶段被确定为不存在于该特定图块内的图形数据项)。图形数据项可以表示几何形状,该几何形状描述场景中结构的表面,并且被称为“图元”。常见的图元形状是三角形,但图元可以是其他2D形状,或者也可以是线或点。对象可以由一个或多个(例如,数百、数千或数百万个)这样的图元组成。
图1示出了图形处理系统100的一些元件,其可以用于渲染3D场景的图像。图形处理系统100包括图形处理单元(GPU)102和存储器的两个部分1041和1042。存储器的两个部分1041和1042可以是,或可以不是,同一物理存储器的部分。
GPU 102包括预处理模块106、分块单元108和渲染逻辑110,其中渲染逻辑110包括提取单元112和处理逻辑113,处理逻辑113包括一个或多个处理核心114。渲染逻辑110被配置成使用处理核心114来实现渲染空间的图块的图形数据(例如,图元片段)上的隐藏表面移除(HSR)和纹理化和/或着色。
图形处理系统100被布置成使得由应用提供的图元序列在预处理模块106处被接收。在几何处理阶段,预处理模块106执行诸如几何处理的功能,包括裁剪和剔除以移除不落入可见视图中的图元。预处理模块106还可以将图元投影到屏幕空间中。从预处理模块106输出的图元被传递到分块单元108,分块单元108确定图形处理系统100的渲染空间的每个图块内存在哪些图元。分块单元108通过为图块创建控制流(或“显示列表”)将图元分配给渲染空间的图块,其中图块的控制流包括图块内存在的图元的指示。控制流和图元从分块单元108输出并存储在存储器1041中。
在渲染阶段,渲染逻辑110对渲染空间的图块的图形数据进行渲染,以生成渲染的值,例如渲染图像值。渲染逻辑110可以被配置成实现任何合适的渲染技术,诸如光栅化或光线跟踪来执行渲染。为了渲染图块,提取单元112从存储器1041中提取图块的控制流和与该图块相关的图元。例如,渲染单元可以根据延迟渲染技术实现光栅化,使得一个或多个处理核心114用于执行隐藏表面移除,从而移除场景中隐藏的图元的片段,然后一个或多个处理核心114用于对剩余图元片段施加纹理化和/或着色,从而形成渲染图像值。执行隐藏表面移除和纹理化/着色的方法在本领域中是已知的。术语“片段”是指在采样点处的图元的样本,其将被处理以用于渲染图像的像素。在一些示例中,可能存在样本位置到像素的一对一映射。在其他示例中,可能存在比像素更多的样本位置,并且这种过采样可以允许像素值的更高质量的渲染,例如通过促进抗锯齿和可以施加到多个片段以渲染每个像素值的其他滤波。对经过HSR阶段的片段执行的纹理化和/或着色确定渲染图像的像素颜色值,该像素颜色值可以被传递到存储器1042以存储在帧缓冲器中。纹理数据可以在渲染逻辑110处从存储器1041接收,以便将纹理化施加到图元片段,如本领域中已知的。着色器程序可以被执行以将着色施加到图元片段。纹理化/着色过程可以包括对图元片段施加进一步的处理(例如阿尔法混合和其他过程),如本领域已知的,以便确定图像的渲染像素值。渲染逻辑110处理每个图块中的图元,并且当整个图像已经被渲染并存储在存储器1042中时,渲染图像可以从图形处理系统100输出并以任何合适的方式使用,例如显示在显示器上或存储在存储器中或传输到另一设备,等等。
在一些系统中,特定的处理核心可以用于在一个时间点执行隐藏表面移除,并在另一个时间点执行纹理化/着色。在一些其他系统中,一些处理核心专用于执行隐藏表面移除,而另一些处理核心专用于对图元片段执行纹理化和/或着色。
上述图形处理系统100是延迟渲染系统,因为渲染逻辑110被配置成在纹理化/着色被施加到图元片段之前对图元片段执行HSR处理。其他图形处理系统不是延迟渲染系统,因为它们被配置成在对那些图元片段执行HSR之前执行图元片段的纹理化和/或着色。延迟渲染系统避免了将纹理化和/或着色施加到通过隐藏表面移除过程移除的至少一些图元片段中所涉及的处理。
如果渲染逻辑110包括多于一个的处理核心114,则处理核心可以并行处理不同的数据,从而提高渲染逻辑110的效率。在一些系统中,图块被分配给渲染逻辑110的处理核心,使得用于渲染特定图块的图形数据在单个处理核心中被处理。用于渲染不同图块的图形数据可以由不同的单个处理核心处理。在单个处理核心上处理特定图块(而不是将特定图块的处理分散到多个核心上)可以具有诸如提高高速缓存命中率的好处。多个图块可以被分配给同一个处理核心,该核心可以被称为具有“飞行中的多个图块”(multiple tilesin flight)。当用于渲染的所有图块都已被渲染逻辑110处理时,渲染完成。然后,渲染的结果(例如,渲染帧)可以被适当地使用(例如,显示在显示器上或存储在存储器中或传输到另一设备,等等),并且渲染逻辑110可以处理后续渲染的图块。
发明内容
提供本发明内容是为了介绍将在下面的具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识要求保护的主题的关键特征或必要特征,也不旨在用于限制要求保护的主题的范围。
根据本公开的一个方面,提供了一种图形处理单元,该图形处理单元被配置成使用被细分为多个图块的渲染空间来处理图形数据,该图形处理单元包括:多个处理核心,其被配置成渲染图形数据;成本指示逻辑,其被配置成获得渲染空间的一个或多个图块的多个集合中的每一个集合的成本指示,其中一个或多个图块的一个集合的成本指示暗示处理一个或多个图块的该集合的成本;相似性指示逻辑,其被配置成获得渲染空间的一个或多个图块的集合之间的相似性指示,其中一个或多个图块的两个集合之间的相似性指示表示根据至少一个处理度量的图块的这两个集合之间的相似性水平;以及调度逻辑,其被配置成根据成本指示和相似性指示将一个或多个图块的集合分配给处理核心以用于渲染。
调度逻辑可以被配置成:如果相似性指示没有表明存在尚未分配给处理核心的一个或多个图块的另一个集合,该另一个集合与最近分配给处理核心的一个或多个图块的所述集合具有高于指定阈值的相似性水平,则根据由成本指示设置的第一调度顺序将一个或多个图块的下一个集合分配给处理核心。
相似性指示逻辑可以被配置成将一组一个或多个相似性指示分配给一个或多个图块的多个集合中的每一个集合,组中的每个相似性指示表示一个或多个图块的该集合和一个或多个图块的另一个集合之间的相似性水平。
调度逻辑可以被配置成:
如果最近分配给处理核心的一个或多个图块的所述集合的该组相似性指示没有表明在一个或多个图块的该集合和尚未分配给处理核心的一个或多个图块的另一个集合之间存在高于指定阈值的相似性水平,则根据由成本指示设置的第一调度顺序将一个或多个图块的下一个集合分配给处理核心;和
如果最近分配给处理核心的一个或多个图块的所述集合的该组相似性指示表明在一个或多个图块的该集合和尚未分配给处理核心的一个或多个图块的一个或多个其他集合之间存在高于指定阈值的相似性水平,则将一个或多个图块的那些其他集合中的一个集合作为一个或多个图块的下一个集合分配给处理核心。
相似性指示逻辑可以被配置成向一个或多个图块的多个集合中的每一个集合分配多个相似性指示,所述多个相似性指示表示一个或多个图块的该集合与位于一个或多个图块的该集合的本地区域内的一个或多个图块的其他集合之间的相似性水平。
相似性指示逻辑可以被配置成将单个相似性指示分配给一个或多个图块的多个集合中的每一个集合,分配给一个或多个图块的每一个集合的相似性指示表示一个或多个图块的该集合与根据渲染空间内图块的空间顺序指定的一个或多个图块的另一个集合之间的相似性水平。
调度逻辑可以被配置成根据分配给最近分配给处理核心的一个或多个图块的所述集合的相似性指示,根据由成本指示设置的第一调度顺序或者由图块的空间顺序设置的第二调度顺序,将一个或多个图块的下一个集合分配给处理核心。
调度逻辑可以被配置成:
如果分配给最近分配给处理核心的一个或多个图块的所述集合的相似性指示表明一个或多个图块的该集合与根据图块的空间顺序指定的一个或多个图块的另一个集合之间的相似性水平低于指定阈值,则根据第一调度顺序将一个或多个图块的下一个集合分配给处理核心;和
如果分配给最近分配给处理核心的一个或多个图块的所述集合的相似性指示表明一个或多个图块的该集合与根据图块的空间顺序指定的一个或多个图块的所述集合之间的相似性水平高于指定阈值,则接下来将由图块的空间顺序指定的一个或多个图块的所述集合分配给处理核心。
相似性指示逻辑可以被配置成确定相似性指示。
所述至少一个处理度量可以包括用于渲染一个或多个图块的一个集合的处理资源,并且相似性指示逻辑可以被配置成基于一个或多个图块的两个集合之间的处理资源的共享水平来确定一个或多个图块的这两个集合之间的相似性指示。
处理资源可以是由一个或多个图块的一个集合引用的一个或多个着色器程序的一个集合。
相似性指示逻辑可以被配置成从由一个或多个图块的这两个集合两者均引用的着色器程序的数量确定处理资源的共享水平。
处理度量可以包括图形数据内容,该图形数据内容包括以下至少一个:(i)存在于一个或多个图块的一个集合中的图元,以及(ii)将用于渲染一个或多个图块的一个集合的纹理。
相似性指示逻辑可以被配置成从一个或多个图块的两个集合的成本指示确定一个或多个图块的这两个集合之间的相似性指示。
成本指示逻辑可以被配置成确定渲染空间的一个或多个图块的各集合的成本指示。
成本指示逻辑可以被配置成通过组合与图块中存在的图元相关联的分数来确定渲染空间的图块的成本指示,其中与图元相关联的分数取决于图元是其一部分的对象的对象类型。
成本指示逻辑可以被配置成基于以下因素中的一个或多个来确定渲染空间的图块的成本指示:
(i)图块中的图元的数量;
(ii)与图块中的图元相关联的对象类型;
(iii)图块中的图元的图块覆盖区域;
(iv)一个或多个着色器程序的特征,这些着色器程序将被执行以渲染图块中的图元;
(v)用户输入;和
(vi)在前一渲染中对应图块的处理成本。
着色器程序的特征可以包括以下一个或多个:
(i)着色器程序的长度;
(ii)由着色器程序使用的资源或寄存器的数量;
(iii)着色器程序是否包括条件流控制;
(iv)着色器程序是否包括在编译时重复次数未定义的循环;和
(v)着色器程序中使用的存储器读取和/或写入的量。
一个或多个图块的各集合可以各自包括仅单个图块。
一个或多个图块的各集合可以各自包括多个图块。
成本指示逻辑可以被配置成:
获得一个图块集合中的每个图块的相应成本指示;和
基于该集合内图块的成本指示来确定该图块集合的成本指示。
根据本公开的另一个方面,提供了一种在图形处理系统中处理图形数据的方法,该图形处理系统包括配置成渲染图形数据的多个处理核心,该图形处理系统被配置成使用被细分为多个图块的渲染空间,该方法包括:
获得渲染空间的一个或多个图块的多个集合中的每一个集合的成本指示,其中一个或多个图块的一个集合的成本指示暗示处理一个或多个图块的该集合的成本;
获得渲染空间的一个或多个图块的各集合之间的相似性指示,其中一个或多个图块的两个集合之间的相似性指示表示根据至少一个处理度量的图块的这两个集合之间的相似性水平;以及
根据成本指示和相似性指示将一个或多个图块的各集合分配给处理核心以用于渲染。
图形处理单元可以体现在集成电路上的硬件中。
可以提供用于执行这里描述的方法的计算机程序代码。
可以提供一种集成电路定义数据集,当在集成电路制造系统中被处理时,该集成电路定义数据集配置集成电路制造系统以制造根据这里的任何示例的图形处理单元。
可以提供一种集成电路制造系统,其包括:
非暂时性计算机可读存储介质,其上存储有根据这里的任何示例的图形处理单元的计算机可读描述;
布局处理系统,其被配置成处理计算机可读描述,以便生成体现图形处理单元的集成电路的电路布局描述;和
集成电路生成系统,其被配置成根据电路布局描述制造图形处理单元。
附图说明
现在将参考附图详细描述示例,其中:
图1示出了现有技术的图形处理系统;
图2a是示出了1核GPU和10核GPU上的理想化图块工作负载分布的图表;
图2b是示出1核GPU和10核GPU上图块工作负载分布的图表,图块工作负载的成本变化很小;
图3是示出渲染示例性4×4图块网格的每个图块的处理周期数的表格;
图4是示出当基于图块的空间顺序的调度方法被用于将图块分配给GPU核心时,在5核GPU上执行4×4图块的集合的定时的图表;
图5是示出当基于成本指示的调度方法被用于将图块分配给GPU核心时,在5核GPU上执行4×4图块的集合的定时的图表;
图6是示出当基于图块的空间顺序的调度方法被用于将图块分配给GPU核心并且考虑了由于高速缓存一致性导致的处理节省的估计时,在5核GPU上执行4×4图块的集合的定时的图表;
图7是示出当基于成本指示的调度方法被用于将图块分配给GPU核心并且考虑了由于高速缓存一致性导致的处理节省的估计时,在5核GPU上执行4×4图块的集合的定时的图表;
图8示出了图形处理系统;
图9是使用图8所示图形处理系统处理图形数据的方法的流程图;
图10示出了如何将多个相似性指示分配给一个或多个图块的一个集合的示例;
图11示出了如何将单个相似性指示可分配给一个或多个图块的一个集合的示例;
图12是示出当基于成本指示和相似性指示的调度方法被用于将图块分配给GPU核心并且考虑了由于高速缓存一致性导致的处理节省的估计时,在5核GPU上执行4×4图块的集合的定时的图表;
图13是图形处理系统的另一个示例;
图14是使用图13所示图形处理系统处理图形数据的方法的流程图;
图15示出了一个示例计算机系统;和
图16示出了集成电路制造系统。
附图示出了各种示例。本领域技术人员将理解,附图中示出的元件边界(例如,框、框组或其他形状)代表边界的一个示例。可能的情况是,在一些示例中,一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在所有附图中,适当时使用共同的附图标记来表示相似的特征。
具体实施方式
以下描述通过示例的方式给出,以使本领域技术人员能够制造和使用本发明。本发明不限于这里描述的实施例,并且对公开的实施例的各种修改对于本领域技术人员来说是显而易见的。
现在将仅以示例的方式描述实施例。
在图1所示的图形处理系统中,增加处理核心的数量将有助于改善图形处理单元在减少处理渲染的所有图块所花费的时间方面的性能,因为图块的处理可以在多个处理核心中分开进行。然而,增加处理核心的数量往往会增加GPU的尺寸(即硅面积)和由GPU消耗的峰值功率。
图2a是示出了1核GPU和10核GPU上的理想化图块工作负载分布的图表。图2a中的垂直轴线具有从渲染开始时间向下延伸的时间。块202表示在GPU 102使用一个处理核心114来渲染渲染空间的所有图块时由单个处理核心执行的工作。在该示例中,渲染结束时间在204处示出。在该理想化示例中,块2060至2069表示在GPU 102使用十个处理核心114来渲染渲染空间的所有图块时由处理核心执行的工作。在该示例中,渲染结束时间在208处示出。在该理想化示例中,每个图块产生相同的处理成本,使得一个核心的渲染时间是十个核心的渲染时间的十倍长。
作为示例,考虑仅由单个渲染组成的帧。该渲染的大小可以是640×480像素,因此在该帧中可以有300个图块(布置为20×15图块的块),其中每个图块的大小为32×32像素。如果所有图块花费等量的时间“T”来处理,那么1集群GPU可能预计花费大约300T的时间来完成渲染;而10集群GPU可能预计花费大约30T的时间来完成渲染。因此,在这种理想化的情况下,10集群GPU完成渲染比1集群GPU快十倍。应当注意,术语“集群”和“核心”在本文中可以互换使用,这两个术语都指被配置成对输入数据执行处理操作的处理单元(包括诸如算术逻辑单元的处理部件)。此外,术语“帧”和“图像”在本文中可以互换使用。
然而,图2a所示的完美平衡的工作负载很少发生在真实的图形工作负载中。在每个图块的工作中允许甚至微小的随机变化可以显著地改变多个核心上的帧的整体运行时间,即使在帧中的总工作负载保持不变时,如图2b所示。图2b是示出1核GPU和10核GPU上图块工作负载分布的图表,图块工作负载的成本变化很小。在图2b中,三分之一的图块是“低成本”图块(显示为无阴影的工作负载),三分之一的图块是“中成本”图块(用斜线阴影示出),三分之一的图块是“高成本”(用交叉阴影示出)。图块的“成本”可以指处理图块所花费的时间量(如在图2b所示的示例中)。在其他语境中,图块的成本可以指所使用的处理资源量、传送到存储器/从存储器传送的数据量、或者用于处理图块的处理能力等。
在图2b中,块212表示在GPU 102使用一个处理核心114来渲染渲染空间的所有图块时由单个处理核心执行的工作。在该示例中,渲染结束时间在214处示出,其与图2a所示的渲染结束时间204相同。在该示例中,块2160至2169表示在GPU 102使用十个处理核心114来渲染渲染空间的所有图块时由处理核心执行的工作。在该示例中,渲染结束时间在218处示出。虚线208示出了图2a的理想化示例中的渲染结束时间。当渲染的所有图块都已被处理时,该渲染完成。在当前渲染可以开始执行之前,可能需要完成前一渲染,即,当前渲染在开始执行当前渲染的图块之前等待前一渲染完成。从图2b中可以看出,当使用多个核心时,图块的处理成本的变化导致更长的渲染时间,即渲染结束时间218在理想化的渲染结束时间208之后。渲染可以用于生成帧的像素值,使得完成该渲染涉及将像素值存储在帧缓冲器中以表示帧,然后可以以任何适当的方式使用该帧,例如显示在显示器上、存储或传输等。在其他示例中,渲染可能不会导致完成的帧,例如,该渲染可以是子渲染,其可以在用于生成帧的后续渲染过程中使用。例如,子渲染可以是“渲染到纹理”,使得渲染的结果是纹理,该纹理然后可以被应用于后续渲染过程以生成图像。作为其他示例,子渲染可以是阴影图或环境图,用于随后在渲染帧中使用。
具有真实应用的GPU通常每次渲染可以运行许多图块(例如2000个图块),并且可以包含许多渲染(例如20个)。这为超出图2b所示的随机变化提供了很大的范围。当图块被单独分配给特定处理核心时,可能存在在单个处理核心上连续执行慢图块(即具有高处理成本的图块)的随机概率。在将多于一个空间相邻图块的组分配给一个处理核心的系统中,可能存在连续执行的慢图块被分配给单个核心的比随机差的概率。如下文更详细描述的,这是因为慢图块通常对应于场景/对象的复杂区域,所以由于组中的图块在空间上相邻,如果组中的一个图块昂贵,那么有可能组中的其他图块也将昂贵。最慢的核心代表渲染的限制因素,因此最后完成的核心决定了执行渲染所需的时间,进而决定了应用的帧率和硬件的效率。将几千个图块平均化,可以预期随机分配方案会达到合理的平衡,但这通常不是真的。这有三个基本原因:
1)根据设计,基于图块的GPU通常旨在处理同一集群上的空间局部图块,以最大化高速缓存的效率。空间局部图块通常共享大量数据,包括如纹理、指令、着色器等的数据,这意味着从高速缓存一致性的角度来看,将多个相邻的图块保持在同一个集群中可能是有益的。这往往意味着在单个核心上进行背靠背昂贵图块的最坏情况调度不仅是可能的,而且会得到积极的加强。
2)诸如游戏的图形应用的工作负载通常不会均匀分布在整个帧上。帧的一些区域可能包含计算特别耗时(即,具有高处理成本)的场景对象或效果。常见的示例是半透明对象、穿透对象(具有由纹理或着色器限定的透明区域的对象)、需要将多个层混合在一起的效果,以及一些计算量很大但仅应用于场景的某些对象/区域的着色器效果。应当注意,穿透是一种技术,其中对象可以具有透明区域或者可以不具有透明区域,并且这些透明区域的存在与否或位置直到运行时才知道,此时可见性或者是从纹理计算的或者是从纹理提取的。一个常见且非常昂贵的示例是植物,其中叶子被绘制为由一个或多个图元表示的简单多边形(例如矩形或三角形),并且通过使多边形的一些部分不可见,例如通过使一些图元片段在表示多边形的一个或多个图元内不可见来生成叶子形状。
3)如果剩余的其它图块太少,以至于在昂贵图块的处理过程中其它处理核心不能保持忙碌,则在接近渲染结束时处理的昂贵图块可能会导致渲染时间的显著增加。允许这些其他核心空闲是对处理资源的低效使用,这增加了整个渲染的运行时间。
由于实时图形的性质,恒定的渲染流被执行,并且运行时间的随机变化可以导致在呈现给最终用户的输出中产生断续效果的不期望效果。当屏幕以特定频率(例如60Hz)更新显示时,会出现断续。如果帧与帧之间的变化意味着有时更新的帧在屏幕更新之前是可用的(导致平滑运动),但在其他时候是不可用的(导致前一帧被重复),那么在最终的输出图像中将会有可察觉的断续。
在共同未决申请GB1700562.0中描述了一种改进处理核心的工作调度的方法。在这种方法中,基于不同工作项目的成本估计来调度多核GPU的处理核心的工作。特别地,对于渲染的每个图块,确定成本指示,然后可以基于成本指示将图块分配给处理核心。图块的成本指示指出或者至少暗示处理该图块的成本。例如,成本指示可以指示处理该图块的可能成本。调度图块,以便在较低成本图块之前处理较高成本图块,可以降低在渲染接近结束时开始处理高成本图块的可能性。如上所述,在渲染接近结束时开始处理高成本图块可能对总渲染时间特别有害,因此减少这种情况发生的可能性可以改善(即减少)平均渲染时间。如上所述,成本指示可用于在具有相对较低的成本指示的图块集合之前调度具有相对较高的成本指示的图块集合。高成本指示表示高处理成本,并且低成本指示表示低处理成本。
仅基于成本指示来调度图块到处理核心的一个潜在缺点是分配给处理核心的连续图块可能来自渲染空间的不同区域。换句话说,连续分配的图块可能在渲染空间内对于彼此不是本地的。这又可能导致上述高速缓存一致性的好处减少或损失。发明人已经认识到,在某些情况下,与使用更简单的空间顺序调度方案相比,这种调度方法中高速缓存一致性的损失会导致处理核心在渲染渲染空间的所有图块时的性能更差,在空间顺序调度方案中,根据图块的空间顺序(例如皮亚诺曲线、莫顿顺序(即Z顺序)或N顺序)将图块分配给核心。这在图3至7中示意性示出。
图3是示出处理4×4图块块中的每个图块所需时间的示例值的表。这些值是示意性的,并以任意时间单位T表示。表中的每个项目对应于图块块中的相应图块,表中的每个项目的位置对应于图块块中的图块的位置;即其值为60的位置(0,0)处的左上角表项目表示处理图块块的左上角图块(在位置(0,0)处)所花费的时间;右下角表项目(位置(3,3))包含处理块中的右下角图块(在位置(3,3)处)所花费的时间,等等。
图4示出了当使用空间顺序调度方案将图块分配给处理核心时(具体地,当图块按照图块的N顺序被分配给核心时),在5核GPU上执行4×4图块的块(具有图3所示的处理时间)以渲染图块的定时。渲染4×4图块的块所需的时间为207T。图4中的每个图块由其在块中的位置来标识,其中处理给定图块所花费的时间在图3中的表中由具有相同对应位置的项目来指定(例如,处理块中的图块(1,2)所花费的时间由图3所示的表中的项目(1,2)处的图块值来给出)。
图5示出了当使用基于优先级的调度方案将图块分配给处理核心时,在相同的5核GPU上执行相同4×4图块的块的定时,该调度方案将较高处理成本图块的分配优先于较低处理成本图块。图5中的每个图块再次通过其在块中的位置来标识。在该示例中,处理图块的处理成本是处理该图块所需的时间,如图3中的表指定的。因此,处理成本较高的图块比处理成本较低的图块需要更长的时间。基于优先级的调度方案可以实现为具有飞行中的多个图块,也就是说,可以在处理核心完成处理其先前分配的图块之前调度图块以分配给该处理核心。这可能意味着,在某些情况下,图块可能以不同于它们被调度或选择进行处理的顺序的顺序来处理。可以看出,使用这种基于优先级的分配方案,渲染4×4图块的块所需的时间减少到177T。
尽管图4和图5表明,与空间顺序调度方案相比,基于优先级的调度方案减少了渲染4×4图块集合的时间,但是在这些图中忽略了高速缓存一致性对处理时间的影响。
为了估计高速缓存一致性的影响,假设紧接在属于同一“图块组”的前一图块之后分配给核心的图块将受益于与该前一图块共享数据(例如纹理数据),例如在核心之间共享的高速缓存中存储的数据的重复使用。在该示例中,“图块组”被认为是2×2的四个图块,其与N顺序重复的2×2图块组一致。进一步假设,相比与先前分配的图块仅共享极少量的高速缓存数据时该图块的处理时间,通过与先前分配的图块共享高速缓存数据而受益的图块的处理时间将减少15%。基于申请人对许多不同渲染的实验观察,15%的值被实证地确定为表示高速缓存一致性的益处的合适数字。
图6示出了5核GPU按照与图4相同的空间顺序调度方案(具体地说,当图块按照图块的N顺序被分配给核心时)执行相同4×4图块块的定时,但是考虑了高速缓存一致性的上述假设效果。图6中的每个图块再次通过其在块中的位置来标识。在考虑高速缓存一致性影响的情况下,渲染4×4块的处理时间估计为175T。
图7示出了5核GPU按照与图5相同的基于优先级的调度方案执行相同4×4图块块的定时,但是考虑了高速缓存一致性的上述假设效果。图7中的每个图块再次通过其在块中的位置来标识。在该特定示例中,基于优先级的调度方案打破了图块的空间顺序,并且没有从任何显著量的高速缓存一致性中获益。因此,渲染4×4图块块的时间与当高速缓存一致性的影响被忽略时相同(177T),并且大于当高速缓存一致性的影响被考虑时使用空间顺序调度方案渲染图块的时间。
尽管以上示例基于对高速缓存一致性益处的假设,但是它们用于说明在渲染某些场景时基于优先级的调度的潜在缺点。
在本文所述示例中,基于不同工作项目的成本估计和相似性指示,为多核GPU的处理核心调度工作。特别地,除了一个或多个图块的各集合之间的相似性指示之外,还确定一个或多个图块的多个集合中的每一个集合的成本指示。然后,可以根据成本指示和相似性指示将一个或多个图块的各集合分配给处理核心以用于渲染。一个或多个图块的一个集合的成本指示表示或者至少暗示处理一个或多个图块的该集合的成本。例如,成本指示可以指示处理一个或多个图块的该集合的可能成本。一个或多个图块的两个集合之间的相似性指示表示或者至少暗示图块的这两个集合之间的相似性水平。相似性水平可以相对于与处理一个或多个图块的该集合相关联的至少一个处理度量来定义。
相似性指示的使用使得仅基于图块的成本指示将图块分配给核心的调度方案能够避免已经被分配给处理核心的图块被发现与尚未被分配给核心的图块具有相对高水平的相似性的情况。当这种情况发生时,尚未被分配给处理核心的相对高相似性的图块可以被选择作为下一个分配给处理核心的图块,而不是仅基于成本指示的考虑下一个分配给处理核心的图块。这使得下一个分配给处理核心的图块能够受益于与先前分配的图块共享至少一些高速缓存数据。当找不到与最近分配的图块具有相对高的相似性的未分配图块时,可以恢复基于成本指示的调度方案,用于将下一个图块分配给处理核心。这种基于处理成本或相似性指示将图块分配给处理核心的方法使得能够实现将更复杂的图块的分配优先于不太复杂的图块的优点,同时降低仅基于成本指示将图块分配给核心可能引起的高速缓存一致性降低的潜在影响。
在本说明书中,高成本指示表示高处理成本,并且低成本指示表示低处理成本。类似地,高相似性指示表示高相似性水平,并且低相似性指示表示低相似性水平。
图8示出了图形处理系统800的一些元件,其可以用于渲染3D场景的图像。图形处理系统800包括图形处理单元(GPU)802和存储器的两个部分8041和8042。存储器的两个部分8041和8042可以是,或可以不是,同一物理存储器的部分。GPU 802包括预处理模块806、分块单元808和渲染逻辑810,其中,渲染逻辑810包括:提取单元812;处理逻辑813,其包括一个或多个处理核心(8141至8146)和高速缓存826;和调度逻辑816,其包括一个或多个渲染队列818。渲染逻辑810被配置成使用处理逻辑813的处理核心814来实现渲染空间的图块的图形数据(例如,图元片段)上的隐藏表面移除(HSR)和纹理化和/或着色。在该示例中,每个处理器核心8141-6可以访问高速缓存826。也就是说,高速缓存826在处理器核心8141-6之间共享。高速缓存826可以操作来存储图形数据(例如,图元和/或纹理数据),当处理器核心8141-6中的一个或多个正在渲染各自分配的图块时,这些图形数据可以被这些处理器核心访问。高速缓存826的图形内容可以由高速缓存控制器(为了清楚起见,在图8中未示出)控制。高速缓存控制器可以例如被配置成将图形数据从存储器的某个其他部分写入高速缓存。高速缓存控制器还可以被配置成清除、逐出或刷新存储在高速缓存中的图形数据,例如,以使得能够存储更多的数据。
分块单元808包括成本指示逻辑820和相似性指示逻辑824。图形处理系统800还包括编译器822,编译器822被配置成编译要在GPU 802上执行的程序(例如着色器程序)。编译器822可以将编译后的着色器程序写入中间存储器,其中在运行时,GPU 802从中间存储器检索编译后的着色器程序,但是为了简单起见,中间存储器未在图8中示出。
在图8所示的示例中,渲染逻辑810包括六个处理核心8141至8146,但是在其他示例中,渲染逻辑810中可以包括任何合适数量的处理核心,例如在1至256的范围内,或者甚至更高。渲染逻辑810中的处理核心的数量可以被调适以适合图形处理系统的预期用途(例如,在对处理资源和硅尺寸具有严格限制的小型移动设备中使用的图形处理系统可以包括少量的处理核心(例如,6个处理核心),而在对处理资源和硅尺寸具有不太严格限制的诸如PC或服务器的大型设备中使用的图形处理系统可以包括较多数量的处理核心(例如,128个处理核心))。此外,尽管在图8所示的示例性布置中,处理器核心8141至8146中的每一个都可以访问高速缓存826,但是应当理解,在其他示例中,处理逻辑813可以包括多于一个的高速缓存,这些高速缓存中的每一个都能够被一个或多个处理器核心共享。也就是说,一般来说,处理逻辑813可以包括一个或多个高速缓存,这一个或多个高速缓存中的每一个在一个或多个处理器核心的相应集合之间共享。除了共享的高速缓存826之外,处理逻辑813可以包括附加的高速缓存,每个附加的高速缓存对于相应的处理器核心是本地的;即每个处理器核心可以另外访问不在其他处理器核心之间共享的相应的本地高速缓存。为了清楚起见,图8中没有显示这些本地高速缓存。
参考图9所示的流程图描述图形处理系统800的操作。用于执行渲染的图形数据在GPU 802处被接收,例如从运行在与GPU 802相同的计算系统中的CPU上的游戏应用接收。图形数据可以包括描述待渲染的场景中的对象的图元的图元数据。图形数据还可以指定要在图元数据上执行的一个或多个着色器程序,用于渲染图元。应当注意,指定位置的着色器(例如顶点着色器和几何着色器)在图元顶点上执行;而指定如何渲染图像的着色器(例如像素着色器)在对应于覆盖像素(或者更准确地说,覆盖样本位置)的图元部分的图元片段上执行。
在步骤S902中,编译器822编译与图元相关联的着色器程序,并确定着色器程序的特征。所确定的特征包括指示着色器程序的复杂性的特征。特别地,确定特征以便给出使用特定着色器程序处理图元的成本的指示。例如,可以识别着色器程序的长度(例如,要执行的操作的数量)。此外,如果着色器程序包含执行可变次数的循环,则它们被识别为潜在的高成本,其中可变次数是在运行时确定的,即在编译时它不是已知的次数。如果像这样的循环在运行时循环很多次,那么执行起来可能会非常昂贵。作为另一示例,编译器可以确定由着色器程序使用的资源、存储器读取或寄存器的数量,并将其用作与运行着色器程序相关联的处理成本的度量。作为示例,对于涉及从可以从外部存储器采样的纹理中进行大量采样的着色器,与主要由算术指令组成的着色器相比,它可能要花费显著更长的时间来处理。可以确定的其他特征包括着色器程序是否包括条件流控制。
步骤S902可以在运行时间之前,即在离线过程中执行。例如,着色器程序可以在应用加载时被编译。特别地,着色器程序可以在渲染开始之前(例如,在分块阶段开始之前)以及着色器与任何特定几何图形相关联之前被编译。然而,在其他示例中,着色器程序可能在主渲染开始之前的运行时间期间被编译,例如响应于确定要使用着色器程序来处理图元。编译器822可以标记着色器程序中可能存在的大量潜在昂贵的东西。编译器822被布置成向分块单元808提供着色器程序的确定特征。编译器822被布置成将编译后的着色器程序提供给渲染逻辑,以在一个或多个处理核心814上执行,用于处理图元。
由应用提供的图元序列可以在预处理模块806处被接收。在几何处理阶段,预处理模块806执行诸如几何处理的功能,包括裁剪和剔除以移除不落入可见视图中的图元。预处理模块806还可以将图元投影到屏幕空间中。从预处理模块806输出的图元被传递到分块单元808以进行分块,如下所述。
在步骤S904中,分块单元808确定图形处理系统800的渲染空间的每个图块内存在哪些图元。分块单元808通过为图块创建控制流将图元分配给渲染空间的图块,其中图块的控制流包括图块内存在的图元的指示。控制流和图元从分块单元808输出并存储在存储器8041中。几何处理阶段(由预处理模块806和分块单元808执行)考虑在整个图像上的图元,即图像中的所有图块。然后,在渲染阶段,渲染逻辑810渲染图像的图块并将渲染图块的输出存储在帧缓冲器的适当部分中,使得当图像的所有图块都已被渲染时,帧缓冲器存储整个图像的渲染结果。在本文描述的示例中,在图像的图块被渲染之前,在几何处理阶段提供的评估图像的所有数据的机会被用于确定关于图像的信息,该信息对于渲染阶段可能是有用的,例如,用于提高渲染阶段的效率。在下面描述的示例中,可以基于以下因素来调度图块以由渲染逻辑进行处理:(i)处理图块时将涉及的处理成本的估计,以及(ii)图块之间的相似性。
在步骤S906中,成本指示逻辑820确定渲染空间的图块的成本指示。如上所述,图块的成本指示暗示处理图块的成本。成本指示逻辑可以至少部分地基于在步骤S902中由编译器822确定的着色器程序的确定特征来确定成本指示。此外,通常如下所述,可以为一个或多个图块的各集合确定成本指示,即,可以为一个图块确定成本指示和/或可以为图块的一个集合确定成本指示。为简单起见,此处的一些解释是指存在一个图块的成本指示,但是通常应当理解,该解释可以扩展到具有图块的一个集合的成本指示。
成本指示在不同示例中可能不同。在一些示例中,一个图块的成本指示可以是当由渲染逻辑810处理图块时将引发的处理成本的估计。如上所述,处理成本可以是处理时间的长度、执行的计算操作的数量、消耗的处理能力、从存储器的读取/向存储器的写入的数量,或者处理图块的成本的任何其他合适的度量。然而,在一些示例中,图块的成本指示可能不是处理成本的直接估计。一个或多个图块的一个集合的成本指示可以基于一个或多个图块的该集合的内容。一个或多个图块的一个集合的成本指示可以基于影响处理一个或多个图块的该集合的成本的一个或多个因素。例如,成本指示可以是图块中存在的图元的数量。图块中的图元的数量不是处理该图块的成本的直接估计,而是处理图块时可能涉及的近似处理成本的指示。例如,图块中的较大数量的图元可能暗示该图块将引发较高的处理成本。在广义上,图块的成本指示可以是暗示处理该图块的成本的任何参数,例如提供可能的处理成本的某种度量的参数,以用于在图块之间进行区分。还应当注意,成本指示可能并不总是准确地反映处理图块的真实处理成本,但是它们旨在提供比根本没有确定成本指示的情况下更好的对图块处理成本的指示。
在一个简单的示例中,图块的成本指示是该图块中存在的图元的数量。与相对大量的图元重叠的图块往往比具有相对少量图元的图块引发更大的处理成本,因此图块中图元的数量是有用的成本指示,即使它并不总是反映渲染图块的确切实际处理成本。此外,图块中图元的数量在分块单元808中计算非常简单,因为它可以从图块的控制流中直接观察到,即在分块阶段结束时包含在图块的控制流中的图元标识符的数量指示了该图块中图元的数量。因此,在该示例中,成本指示逻辑820不会显著增加分块单元808的复杂性。
在稍微更复杂的示例中,成本指示逻辑820通过组合(例如求和)与图块中存在的图元相关联的分数来确定图块的成本指示。与图元相关联的分数可以取决于图元作为其一部分的对象的对象类型。例如,与不透明对象类型相关联的图元在渲染逻辑810中处理可能相对简单,因此这些图元可能与低分数相关联;而与其他对象类型(例如半透明或穿透对象类型或允许图元在渲染期间改变其深度的对象类型)相关联的图元在渲染逻辑810中处理可能相对复杂,因此这些图元可能与高分数相关联。特别地,这些更复杂对象类型(例如半透明和穿透以及允许对象在渲染期间改变深度的类型)的渲染可以利用混合或需要在渲染逻辑810中多次通过来解析由这些图元覆盖的像素的其他操作。例如,与不透明对象类型相关联的每个图元可以被给予1分,与半透明或穿透对象类型相关联的每个图元可以被给予10分,并且在渲染期间可以改变深度的每个图元可以被给予8分。这反映了不同类型图元的处理成本中可能的差异。与图元相关联的分数可以取决于图元的大小,即它的覆盖区域(例如被图元覆盖的像素数)。分数可以成比例地取决于图元的大小(例如被图元覆盖的像素数)。也就是说,较大的图元可能与比较小的图元更高的分数相关联。这可能是基于这样的预期:覆盖更多像素的较大图元调用其着色器的次数可能比较小图元调用其着色器的次数更多。图块内图元的分数可以求和或以另一种方式组合,以提供该图块的成本指示。在不同的示例中,不同对象类型的分数可以不同于本文所述分数。
在另一示例中,成本指示逻辑820通过组合(例如,通过求和)与图块中存在的每个图元相关联的成本来确定该图块的成本指示。例如,图块的成本指示可以是与被确定为存在于该图块中的每个图元相关联的着色器程序的成本的总和。
镶嵌是一种技术,它允许图形数据项(可以称为“面片”)在渲染期间被扩展成许多图元。镶嵌可以用于表示复杂(例如弯曲)的表面,但可能导致大量图元被渲染。图块的成本指示可以基于镶嵌是否应用于图块中的面片。作为示例,如果图块包括要镶嵌的面片,该图块的成本指示可以取决于由面片的镶嵌产生的三角形的数量。
在其他示例中,可以用不同的方式确定成本指示。例如,当确定图块的成本指示时,可以考虑该图块中图元的图块覆盖区域。图元的图块覆盖区域指示该图元在图块内可见的多个采样位置,因此提供了当在渲染逻辑810中处理图块中的图元时将执行的处理量的指示。在一些示例中,用户可以提供用户输入来指导图块的成本指示的确定。在这个意义上,成本指示逻辑820可以经由输入接收图块的成本指示。例如,用户可能能够例如通过API扩展直接指定图块的成本指示,以允许开发者使用与特定图块相关联的工作负载的先验知识来明确地提供图块成本,以确保高效的性能。
驱动机制可以将信息从编译器822传递到分块单元808,并且该信息可以包括由编译器822确定的着色器程序的特征。可选地,驱动程序可能希望被用来标记必须再生的几何图形(例如,诸如几何着色器和镶嵌着色器的流水线阶段可以被用来扩展图元以创建多个图元),并且在一些图形处理系统中,扩展的图元在几何处理阶段之后不被存储,并且在用于渲染阶段之前必须被再生。类似地,驱动程序还可以提供关于3D着色将被执行的频率的信息,例如,渲染阶段有可能以更高的像素速率或更高的采样/片段速率进行渲染,这是一个更昂贵的过程。因此,该信息对于确定成本指示的成本指示逻辑820是有用的。
上面描述的示例涉及与当前渲染的处理相关的因素,这些因素可以用于估计渲染该渲染的不同图块的可能处理成本。除了这些因素之外,成本指示逻辑820可以确定前一渲染(例如,紧邻的前一渲染,例如,前一帧)的图块的处理成本(预测或实际成本),并且可以使用这些作为确定当前渲染的图块的成本指示的因素。如果帧序列中的两个帧在序列中彼此接近,例如,如果它们是连续的帧,则它们可能是相似的,除非存在场景改变或内容的突然改变。因此,前一帧中特定图块的处理成本提供了当前帧中对应图块的处理成本的良好指示。不同帧中的“对应图块”可以是渲染空间内相同位置的图块,或者可以相对于彼此移位,例如,移位代表场景中内容的运动的量(例如,由运动矢量表示)。
概括上述一些示例,成本指示逻辑820可以基于以下因素中的一个或多个来确定渲染空间的图块的成本指示:(i)图块中的图元的数量;(ii)与图块中的图元相关联的对象类型;(iii)图块中的图元的图块覆盖区域;(iv)一个或多个着色器程序的特征,这些着色器程序将被执行以渲染图块中的图元;(v)用户输入;以及(vi)在前一渲染中对应图块的处理成本。然而,显而易见的是,在其他示例中可以使用其他因素来确定成本指示。成本指示逻辑820可以基于多个因素,例如根据任何合适的组合,来确定图块的成本指示,所述组合可以被加权或者可以不加权为有利于一个因素而不是另一个因素。
如上所述,着色器程序的特征可以包括以下一个或多个:(i)着色器程序的长度;(ii)由着色器程序使用的资源或寄存器的数量;(iii)着色器程序是否包括条件流控制;(iv)着色器程序是否包括在编译时重复次数未定义的循环;和(v)着色器程序中使用的存储器读取和/或写入的量。
如上所述,可以为一个或多个图块的每个集合确定成本指示。可能的情况是一个或多个图块的每个集合包括相同数量的图块。在一些示例中,一个或多个图块的各集合各自包括单个图块。在其他示例中,一个或多个图块的各集合各自包括多个图块。图块的集合可以是渲染空间的图块(例如,连续图块)的块。术语图块的“块”在本文中用来指多个空间上本地或相邻的图块。特别地,一个或多个图块的各集合可以被布置成匹配图块的集合向渲染逻辑810中的处理核心814的分配。例如,如果各个图块每次被分配给特定的处理核心814,那么图块的集合可以包括单一的图块。然而,如果多个图块的块(例如,2×2、4×2或4×4的图块的块)每次被分配给特定的处理核心814,那么图块的集合可以包括对应的图块的块。如下所述,从高速缓存一致性的角度来看,将图块的块分配给处理核心814而不是将各个图块分配给处理核心814可能是高效的。
成本指示逻辑820可以量化成本指示。特别地,量化的成本指示可以被量化为由多个比特来表示。例如,成本指示可以由1、4或8个比特或在某个范围(例如1到8或某个更大的范围)内的多个比特表示。在一个极端的示例中,量化的成本指示各自具有单个比特,使得它们作为标志来指示图块是高成本图块或是低成本图块。即使当成本指示被量化到这种程度时,成本指示的使用对于调度图块的处理也可以是有用的,因为这将倾向于避免高成本图块被调度在接近渲染结束时进行处理的情况,这如上所述可以导致渲染时间的特别长的延迟。量化成本指示减少了用于存储成本指示的数据量,并且如下文在一些示例中所解释的,通过减少其中实现的优先级队列的数量,简化了调度逻辑816。
在步骤S908,相似性指示逻辑824确定渲染空间的一个或多个图块的集合之间的相似性指示。可以为一个或多个图块的一对集合确定每个相似性指示。一个或多个图块的两个集合之间的相似性指示表示或者至少暗示一个或多个图块的这两个集合之间的相似性水平。图块集合之间的相似性指示可以是当该集合的图块被顺序处理(例如分配)时高速缓存命中的可能性的度量。为简单起见,下面的一些解释是指一对图块之间存在相似性指示,但是通常应当理解,该解释可以容易地扩展到两个图块集合之间存在相似性指示。
一个或多个图块的两个集合之间的相似性指示可以根据与处理该图块集合相关联的至少一个处理度量来指示一个或多个图块的这两个集合之间的相似性水平。也就是说,可以根据处理度量来比较一个或多个图块的两个集合,以确定这两个图块集合之间的相似性水平。在一些示例中,处理度量可以用于定义与处理一个或多个图块的一个集合相关联的数据。然后可以比较两个图块集合的数据,以确定这两个图块集合之间的相似性水平。然后可以基于该相似性水平生成相似性指示。
如下文将更详细解释的,相似性指示可以是单比特二进制值或多比特二进制值。在单比特值的情况下,第一值(例如‘1’)可以指示两个图块集合之间的相对较高的相似性水平,而第二值(例如‘0’)可以指示这两个图块集合之间的相对较低的相似性水平。
相似性指示逻辑824可以实现相似性函数来量化一个或多个图块的两个集合之间的相似性水平。相似性函数可以输出多比特值或单比特二进制值。相似性函数可以是两个图块集合的处理度量的函数。然后可以从相似性函数的值生成相似性指示。在一些示例中,相似性指示可以等于相似性函数的值。在其他示例中,相似性指示的值可以取决于相似性函数的值。例如,相似性指示可以是单比特二进制值,并且如果相似性函数的值高于指定阈值,则可以采用第一值(例如‘1’),如果相似性函数的值低于指定阈值,则可以采用第二值(例如‘0’)。使用生成可以与阈值进行比较以导出单比特相似性指示的多比特值的相似性函数是方便的,因为它使得能够进行更复杂的相似性评估,同时只需要存储单比特来表示两个图块集合之间的相似性水平。
处理度量可以是与处理一个或多个图块的集合相关联的测量值或参数。处理度量可以例如是用于渲染一个或多个图块的集合的处理资源。根据该示例,两个图块集合之间的相似性指示可以基于这两个图块集合之间处理资源的共享水平来生成;即基于两个图块集合共有的处理资源的量。处理资源的较高的共享水平可以指示两个图块集合之间的较高的相似性水平(即,两个图块集合共有的较大量的处理资源指示较高的相似性水平)。因此,处理资源的较低的共享水平可以指示两个图块集合之间的较低的相似性水平(即,两个图块集合共有的较少量的处理资源指示较低的相似性水平)。
处理资源例如可以是由图块的集合引用的着色器程序的集合(即,可以被执行以渲染该图块集合的着色器的集合)。然后可以基于由一个或多个图块的两个集合引用的着色器程序的数量(即两个图块集合的执行所共有的着色器程序的数量)来生成两个图块集合之间的相似性指示。换句话说,相似性指示可以从由两个图块集合中的每个集合引用的着色器程序的集合的交集生成。对于图块的第一集合i和图块的第二集合j,该交集可以数学地表示为:
intersection=ShaderSet(i)∩ShaderSet(j) (1)
其中,ShaderSet(i)表示由图块集合i引用的着色器的集合,并且ShaderSet(j)表示由图块集合j引用的着色器的集合。
然后可以从交集的大小确定相似性的指示:
similarity=|ShaderSet(i)∩ShaderSet(j)| (2)
在等式(2)中,‘||’运算符表示由着色器集合i和j的交集形成的集合中的项数。
如果每个图块集合引用大量着色器程序,则两个图块集合共有的着色器程序的数量可能相对较高,即使图块集本身并不相似。因此,仅考虑两个图块集合共有的着色器程序的数量可能并不总是提供这两个图块集合之间相似性的准确指示。
通过考虑两个图块集合共有的着色器程序的数量和由每个图块集合引用的不同着色器程序的数量,可以生成更精确的相似性指示。换句话说,相似性指示可以基于由两个图块集合共享的处理资源的比例来生成。
例如,对于图块集合i和j,相似性函数Fs可以从由这两个图块集合中的每个集合引用的着色器程序的集合的交集和并集两者的大小生成。相似性函数可以例如被生成为:
然后可以从相似性函数FS生成相似性指示。
与处理一个或多个图块的集合相关联的处理度量的另一个示例是一个或多个图块的该集合的图形数据内容;例如,需要在渲染阶段被处理以渲染该图块集合的图形数据内容,诸如图元和/或纹理数据。相似性指示逻辑824可以确定表征一个或多个图块的集合的图形数据内容的信息。然后可以对两个图块集合比较该信息,以确定这两个图块集合之间的相似性指示。
表征图块的集合的图形数据内容的信息可以包括例如以下一个或多个:指示哪些图元位于该图块集合内的数据(例如,该图块集合内每个图元的图元ID列表);位于该图块集合中的图元的顶点数据;将被应用于位于该图块集合中的图元的纹理数据;和着色器资源,用于调用着色器来处理该图块集合。分块单元808方便地知道哪些图元位于每个图块内(以及这些图元的顶点数据)的知识。
然后可以比较两个图块集合的图形数据内容(例如两个图块集合的图元数据内容),以确定相似性指示。在一个示例中,相似性函数Fs可以从交集和并集的大小之比来确定,如上所述,其中集合是图块的图形数据内容的集合,诸如由图块引用的纹理的集合,或者图块内存在的图元的集合。也就是说,相似性函数Fs可以由下式给出:
其中set(i)和set(j)分别是图块集合i和j的图形数据集合。图形数据集合可以是由图块集合引用的纹理的集合,或者图块集合内存在的图元的集合。
在替代示例中,为了减少执行该比较所需的处理(以及相关联的存储要求),相似性指示逻辑824可以实现散列函数来散列一个或多个图块的每个集合的图形数据内容,以生成该图块集合的散列值。如果使用适当的散列函数,则可以比较每个图块集合的散列值,以确定两个图块集合之间的相似性水平。相似性指示可以基于散列值的比较来生成。例如,散列值之间的较小差值可以指示一个或多个图块的两个集合之间的较高相似性水平。相反,散列值之间的较大差值可以指示两个图块集合之间的较低相似性水平。在一些示例中,可以为每个图块集合生成多个散列值。这样做的一种方式是为表征该图块集合的图形数据内容的每种类型的信息生成散列值(例如,从指示哪些图元位于该图块集合内的数据生成的散列值;从位于该图块集合中的图元的顶点数据生成的散列值等)。然后,可以比较为两个图块集合中的每个集合生成的散列值的集合,以确定两个图块集合之间的相似性指示。使用多个散列值来确定相似性指示可以提供两个图块集合之间的更鲁棒或更准确的相似性评估。
作为另一示例,相似性指示逻辑824可以根据每个图块集合的复杂性(例如,要被处理以渲染该图块集合的图形数据内容的复杂性)的指示来确定两个图块集合之间的相似性指示。也就是说,处理度量的另一个示例是处理一个或多个图块的集合的复杂性或类似地成本。这在空间上本地的图块集合可能相似的前提下可能是有用的,除非图块集合之间的成本或复杂性存在差异,表明它们没有相似的内容。换句话说,两个空间上本地的图块集合之间的成本/复杂性的巨大差异可能表明这两个图块集合不相似。当图块集合被顺序分配给处理核心时,高速缓存一致性的益处通常也很高,这些处理核心在空间上对于彼此是本地的并且描绘场景的相对简单的部分(即,与处理图块集合相关联的成本相对较低)。这可能是因为,对于描绘场景的简单部分的图块,有可能在高速缓存中适合与图块相关的更大比例的数据,这意味着高速缓存中有更多数据可用于后续图块。因此,应当理解,处理一个或多个图块的集合的成本的度量可以用于确定两个图块集合之间的相似性指示。
相似性指示逻辑824可以从与两个图块集合相关联的成本指示方便地确定这两个图块集合之间的相似性指示。在一个示例中,相似性指示逻辑824评估相似性函数,以输出根据两个图块集合中的每一个的成本指示以及两个图块集合之间的成本指示的差值来指示两个图块集合之间的相似性水平的值。相似性函数可以由相似性指示逻辑824使用来识别两个图块集合是否各自具有低于指定阈值的处理成本和某个相似性水平(即,高于指定阈值的相似性水平)。
相似性函数可以输出二进制值。当满足以下条件时,它可以输出指示两个图块集合i和j之间相对高的相似性水平的第一值(例如‘1’):1)图块集合i的成本指示表明处理该图块集合的成本小于指定阈值(例如图块集合i的成本指示小于指定阈值);2)图块集合j的成本指示表明处理该图块集合的成本小于指定阈值(例如,该图块集合j的成本指示小于指定阈值);以及3)图块集合i和j的成本指示之间的差值小于指定的阈值。如果条件1)至3)中的任何一个不满足,相似性函数可以输出第二值(例如‘0’),该第二值指示两个图块集合之间相对较低的相似性水平。相似性指示然后可以被视为相似性函数的输出。
在其他示例中,相似性函数可以输出多比特值。然后,该多比特值可以被视为相似性指示(例如,如果相似性指示是多比特值),或者与阈值进行比较,以生成单比特二进制相似性指示。
虽然相似性指示表示两个图块集合之间的相似性水平,但是每个相似性指示可以被相似性指示逻辑824分配给一个或多个图块的集合。在这种情况下,分配给一个或多个图块的集合的相似性指示指示表示一个或多个图块的该集合和一个或多个图块的另一个集合之间的相似性水平。
相似性指示逻辑可以将一组相似性指示分配给一个图块集合。分配给图块集合的组内的每个相似性指示表示该图块集合和相应的另一图块集合之间的相似性水平。分配给图块集合的指示组内的每个相似性指示可以表示该图块集合与渲染空间中与该图块集合具有指定空间关系的其他图块集合之间的相似性水平。这方面的一个示例在图10中示出。
图10示出了图块块的5×5布置。每个图块块是一个图块集合。在图块集合仅包括单个图块的示例中,因此图块块也指单个图块。一组相似性指示被分配给位于十字图案中心的图块集合1002。在该特定示例中,四个相似性指示被分配给图块集合1002。每个相似性指示表示图块集合1002和空间上邻近图块集合1002的相应的另一图块集合之间的相似性水平。这些空间上相邻的图块集合表示为1004、1006、1008和1010。相似性指示的组可以以相似的方式分配给渲染空间中的其他图块集合。
替代地,分配给图块集合的一组相似性指示内的每个相似性指示可以表示该图块集合和该图块集合的本地区域内的其他图块集合之间的相似性水平。在1012示出了图块集合1002的本地区域的示例。本地区域1012以图块集合1002为中心。本地区域1012具有3×3图块块的大小。在其他示例中,本地区域的大小可以小于或大于区域1012。本地区域可以替代地被称为渲染空间的窗口。分配给图块集合1002的相似性指示组可以表示该图块集合1002和本地区域1012内的其他图块集合中的至少一些之间的相似性水平。该组相似性指示可以表示图块集合1002和位于本地区域1012内的每个其他图块集合之间的相似性水平。在图10所示的示例中,这意味着将八个相似性指示的组分配给图块集合1002。
在其他示例中,相似性指示逻辑824可以仅向每个图块集合分配单个相似性指示。分配给每个图块集合的相似性指示可以表示该图块集合和在渲染空间内与该图块集合具有指定空间关系的另一图块集合之间的相似性水平。该空间关系可以通过渲染空间内的图块集合的空间顺序(例如皮亚诺曲线、莫顿/Z顺序或N顺序)来设置。也就是说,分配给图块集合的相似性指示可以表示该图块集合和根据渲染空间内图块集合的某种空间顺序指定的第二图块集合之间的相似性水平。这方面的一个示例在图11中示出。
图11示出了图块块的5×5布置。每个图块块是一个图块集合。在图块集合仅包括单个图块的示例中,因此图块块也指单个图块。在1102处总体示出了渲染空间内的图块集合的空间排序模式的一部分。在该示例中,空间排序模式是一个Z顺序。
分配给图块集合的相似性指示表示该图块集合和根据Z顺序指定的渲染空间内的下一个图块集合之间的相似性水平。例如,分配给图块集合1104的相似性指示表示该图块集合1104和图块集合1106之间的相似性水平(图块集合1106是根据Z顺序跟随图块集合1104的下一个图块集合)。类似地,分配给图块集合1106的相似性指示表示该图块集合1106和由Z顺序指定的下一个图块集合1108之间的相似性水平。
总之,相似性指示逻辑824确定渲染空间的一个或多个图块的集合之间的相似性指示。可能的情况是一个或多个图块的每个集合包括相同数量的图块。在一些示例中,一个或多个图块的各集合各自包括仅单个图块。在其他示例中,一个或多个图块的各集合各自包括多个图块。图块的集合可以是渲染空间的图块(例如,连续图块)的块。术语图块的“块”在本文中用来指多个空间上本地或相邻的图块。特别地,一个或多个图块的各集合可以被布置成匹配图块集合向渲染逻辑810中的处理核心814的分配(并且匹配在步骤906确定成本指示的图块集合)。例如,如果各个图块每次被分配给特定的处理核心814,那么图块的集合可以包括仅单一的图块。然而,如果多个图块的块(例如,2×2、4×2或4×4的图块的块)每次被分配给特定的处理核心814,那么图块集合可以包括对应的图块的块。从高速缓存一致性的角度来看,将图块的块分配给相应的处理核心814(即,每次将图块的块分配给特定的处理核心)而不是将各个图块分配给处理核心814可能是高效的。
在步骤S910中,分块单元808将确定的成本指示和相似性指示包括在要存储在存储器8041中的图块的控制流中。例如,分块单元808可以在尾部指针高速缓存中累积被确定为在图块内的图元的成本,该尾部指针高速缓存包括指向相应的图块的图元ID的列表末端的指针。在渲染的几何阶段处理结束时(即在分块之后),可以例如从图块的图形数据内容或者从确定的成本指示来确定相似性指示。当成本指示逻辑820已经确定了图块的成本指示并且相似性指示逻辑已经确定了相似性指示时,成本指示和相似性指示可以存储在控制流中的适当位置,诸如区域头部。这些操作可以在不必显著改变分块单元808的操作的情况下执行。在几何处理阶段结束时,图块的控制流(包括成本指示和相似性指示)被存储在存储器8041中。
在渲染阶段,调度逻辑816接收当前渲染的渲染空间的图块的控制流。调度逻辑816示出为渲染逻辑810的一部分,但是在其他示例中,调度逻辑816可以被认为是图块排序器,其在渲染逻辑810之外起作用,并且确定要由渲染逻辑810处理的图块的顺序。在一些示例中,调度逻辑可以被实现为提取单元812的一部分。
在步骤S912,调度逻辑816分析成本指示和相似性指示,以将图块分配给处理核心814。调度逻辑可以执行控制流的预传递,以分析图块集合的成本指示和相似性指示。以这种方式,调度逻辑816根据成本指示和相似性指示将图块集合分配给处理核心814以用于渲染。
为了清楚起见,在下文中,符号Ti是指最近分配给处理核心的图块集合,而Ti+1是指接下来分配给处理核心的图块集合,即图块集合Ti和Ti+1被顺序分配给处理核心。通常(虽然不是必须的),图块Ti和Ti+1将被分配给不同的处理核心。
调度逻辑816可以在每次一个图块集合Ti被分配给处理核心时,使用成本指示或相似性指示来选择要分配的下一个图块集合Ti+1。在一些示例中,是否使用成本指示或相似性指示来选择要分配给处理核心的下一个图块集合取决于分配给最近分配给处理核心的图块集合Ti的相似性指示。如果那些相似性指示表明存在尚未分配给处理核心的与最近分配的图块集合的相似性水平高于指定阈值的图块集合,则相似性指示用于选择下一个图块集合Ti+1来分配给处理核心。相反,如果调度逻辑816确定分配给最近分配给处理核心的图块集合Ti的相似性指示表明没有尚未分配给处理核心的与最近分配的图块集合的相似性水平高于指定阈值的图块集合,则调度逻辑根据成本指示将下一个图块集合Ti+1分配给处理核心。
因此,一般而言,调度逻辑816可以被配置成仅当相似性指示表明在最近分配给处理核心的一个或多个图块的集合Ti和尚未分配给处理核心的一个或多个图块的其他集合之间没有高于指定阈值的相似性水平时,才根据成本指示将一个或多个图块的下一个集合Ti+1分配给处理核心。
如果相似性指示表明在最近分配给处理核心的一个或多个图块的集合Ti和尚未分配给处理核心的一个或多个图块的其他集合之间存在高于指定阈值的相似性水平,则调度逻辑816使用相似性指示将下一个图块集合Ti+1分配给处理核心。调度逻辑816可以使用相似性指示以多种方式分配下一个图块集合。
换句话说,一个或多个图块的下一个集合基于相似性指示被分配给处理核心,除非不存在尚未分配给处理核心并且具有表示高于阈值的相似性水平的相似性指示的一个或多个图块的集合,在这种情况下,一个或多个图块的下一个集合基于成本指示被分配给处理核心。
例如,如果只有单个相似性指示被分配给每个图块集合,该相似性指示表示该图块集合和与该图块集合具有指定空间关系的另一第二图块集合之间的相似性水平,则调度逻辑816接下来将该第二图块集合分配给处理核心(假设相似性指示表明相似性水平高于指定阈值)。因此,如果分配给每个图块集合的相似性指示表明该图块集合和根据渲染空间中图块的空间顺序指定的另一个图块集合之间的相似性水平高于指定阈值,则调度逻辑可以根据遵循该空间顺序的调度顺序将下一个图块集合Ti+1分配给处理核心。重新参见图11,作为示例,假设图块集合1104是最近分配给处理核心的图块Ti。如果分配给图块集合1104的相似性指示表明该集合1104和遵循空间顺序1102的下一个图块集合1106之间的相似性水平高于指定阈值,则调度逻辑816接下来将图块集合1106分配给处理核心(即,图块集合1106是Ti+1)。
替代地,如果每个图块集合被分配一组相似性指示,并且最近分配给处理核心的图块集合Ti的该组相似性指示表明存在尚未分配给处理核心的一个或多个其他图块集合,这些图块集合与最近分配的图块集合Ti的相似性水平高于指定阈值,则调度逻辑816接下来将这些其他图块集合之一分配给处理核心。调度逻辑816可以选择与最近分配的图块集合Ti具有最高相似性水平(由组中的相似性指示值来指示)的尚未分配的集合作为要分配给处理核心的下一个图块集合Ti+1。重新参见图10,作为示例,假设图块集合1002是最近分配给处理核心的图块集合Ti。如果分配给图块1002的该组相似性指示表明存在尚未分配的一个或多个其他图块集合,这些图块集合与图块集合1002的相似性水平高于指定阈值(例如,在图块集合1004、1006、1008、1010中;或者本地区域1012内的图块集合),则调度逻辑816选择这些图块集合之一作为分配给处理核心的下一个图块集合。
如上所述,相似性指示可以是二进制值(即,单比特)或多比特值。如果相似性指示是单比特二进制值,则调度逻辑816可以确定相似性指示的第一值(例如‘1’)表明两个图块集合之间的相似性水平大于指定阈值,并且相似性指示的第二值(例如‘0’)表明两个图块集合之间的相似性水平小于指定阈值。
如果相似性指示是多比特值,则调度逻辑可以确定当相似性指示的值等于或超过阈值时,相似性指示表明两个图块集合具有高于指定阈值的相似性水平,并且当相似性指示的值低于阈值时,相似性指示表明两个图块集合具有低于指定阈值的相似性水平。调度逻辑816可以根据当前渲染的图块集合的成本指示或者一个或多个先前渲染的图块集合的成本指示来改变相似性指示阈值的值。调度逻辑可以例如基于该渲染的成本指示的平均值(即,当前渲染的图块集合的成本指示的平均值)来设置相似性指示阈值的值。在其他示例中,调度逻辑可以在渲染期间改变相似性指示阈值。这样做可能是为了在渲染的不同阶段优先处理更复杂的图块或更有可能受益于高速缓存再利用的图块。例如,可能希望在渲染开始时优先处理更复杂的图块,因此调度逻辑可以将相似性指示阈值的值设置得相对较高(使得图块将更有可能基于其成本指示来分配)。在渲染期间,调度逻辑可以降低相似性指示阈值的值(使得图块将更有可能基于它们的相似性指示来分配给处理核心)。当然,其他实施方式也是可能的。
如上所述,如果相似性指示表明在最近分配给处理核心的一个或多个图块的集合Ti和尚未分配给处理核心的一个或多个图块的其他集合之间不存在高于指定阈值的相似性水平,则调度逻辑816根据成本指示将一个或多个图块的下一个集合Ti+1分配给处理核心。
现在将描述调度逻辑如何基于成本指示将图块集合分配给处理核心的示例。
调度逻辑816可以根据由成本指示设置的调度顺序将用于渲染的一个或多个图块的集合分配给处理核心814。该调度顺序可以是降低成本指示的顺序(即,具有较高成本指示的图块集合在调度顺序中更高,即优先于具有较低成本指示的图块集合)。在另一示例中,调度逻辑816可以将具有最高成本指示的一个或多个图块的多个集合分配给不同的处理核心814,从而将具有最高成本指示的图块集合分布在处理核心814之间。
调度逻辑816可以为每个处理核心814维护渲染队列818,以指示哪些图块将由相应的处理核心814处理,以及它们将被处理的顺序。
调度逻辑816可以针对不同成本指示值中的每一个形成图块集合的优先级队列(不同于渲染队列818)。当成本指示已经被量化,使得存在少量不同的成本指示值时,这尤其有效。一个或多个图块的集合被分配给处理核心,用于根据优先级队列的内容按顺序渲染。例如,如果成本指示被量化至2比特值,则存在四个不同的量化成本指示值(0、1、2和3),因此调度逻辑816维护四个优先级队列。量化成本指示值为零的图块集合的指示被存储在优先级队列0中;量化成本指示值为1的图块集合的指示被存储在优先级队列1中;量化成本指示值为2的图块集合的指示被存储在优先级队列2中;并且量化成本指示值为3的图块集合的指示被存储在优先级队列3中。当调度逻辑816开始使用成本指示调度用于处理的图块集合(例如,通过向与处理核心814之一相关联的渲染队列818添加一个集合)时,调度逻辑816将选择在优先级队列3中被识别的集合,除非优先级队列3为空,在优先级队列3为空的情况下,调度逻辑816将选择在优先级队列2中被识别的集合,除非优先级队列2为空,在优先级队列2为空的情况下,调度逻辑816将选择在优先级队列1中被识别的集合,除非优先级队列1为空,在优先级队列1为空的情况下,调度逻辑816将选择在优先级队列0中被识别的集合,除非优先级队列0为空,在优先级队列0为空的情况下,没有更多的集合要调度。
在步骤S914中,渲染逻辑810根据确定的调度使用处理核心814渲染图块。步骤S912和S914可以同时执行,使得当处理核心渲染其他先前分配的图块集合时,图块集合被分配给处理核心。如上所述,在该示例中,特定图块的处理由处理核心814中的单个处理核心执行,即图块的处理不在多个处理核心814之间进行分割。这有助于通过减少在处理核心814之间通信数据的需求来提高高速缓存一致性和处理效率。步骤S914涉及提取单元812提取用于渲染图块的图元数据,并将该数据提供给处理核心814中合适的一个(基于由调度逻辑816确定的调度)。处理逻辑813使用处理核心814对图块的图元数据执行操作,以便渲染该图块。处理逻辑813包括其他部件(图8中未示出),诸如寄存器、高速缓存、控制逻辑等,用于使用处理核心814执行图元数据的处理。
处理逻辑813可以执行延迟渲染,使得对图元执行隐藏表面移除,以移除被场景中的其他图元隐藏而看不见的图元片段,然后在隐藏表面移除已经被施加到这些图元片段之后,将纹理化和/或着色施加到图元片段。纹理化通常涉及从存储器中读取纹理数据,并将纹理施加到图元片段,以便确定渲染的图元片段的颜色值。着色通常涉及对图元片段执行着色器程序,以给图元片段的渲染添加视觉效果。这些着色器程序是由编译器822编译并提供给渲染逻辑810的上述着色器程序。执行隐藏表面移除、纹理化和着色的方法在本领域中是已知的,因此这些方法的细节在此不再详细描述。
在其他示例中,处理逻辑813可以执行非延迟渲染,使得纹理化和/或着色被施加到图元片段,然后对纹理化/着色的图元片段执行隐藏表面移除,以移除被场景中的其他图元隐藏而看不见的图元片段。非延迟渲染方法可能不如延迟渲染方法高效,因为它们涉及对最终隐藏在场景中的图元片段进行不必要的着色和纹理化。
上述延迟渲染和非延迟渲染系统都实现光栅化技术来渲染图元数据。在其他示例中,可以在渲染逻辑中使用其他渲染技术,例如,可以使用光线跟踪技术来渲染图元数据。光线跟踪技术在本领域中是已知的,因此实现光线跟踪渲染技术的细节在此不再详细描述。
在步骤S916中,存储渲染的结果。例如,如果渲染的结果是帧,则渲染的帧可以存储在存储器8042中。渲染的帧可以以任何合适的方式使用。例如,渲染的帧可以显示在显示器上。渲染的帧可以例如通过诸如因特网和/或移动电话网络的网络传输到另一个设备。如果渲染是子渲染,则渲染的结果可以在后续渲染中使用,例如,子渲染的结果可以是要在后续渲染中应用的纹理、阴影图或环境。在这种情况下,渲染的结果可以被存储(例如,在存储器8042中),并且随后被提供回渲染逻辑810,以在后续渲染中使用。替代地,渲染的结果可以存储在GPU 802本身上。
现在将参考图12提供基于成本指示和相似性指示两者来调度图块到处理核心的优势的说明。图12示出了当图块根据相似性指示和成本指示两者被分配给核心时,在5核GPU上执行具有图3所示的单独处理时间的4×4图块块的定时。图12中的每个图块由其在块内的位置来识别(例如,矩形(0,3)表示处理块内的图块(0,3)所花费的时间)。图12所示的定时是由发明人进行的模拟的结果。假设受益于高速缓存一致性的图块具有比图3所示的相应值减少了15%的处理时间。当它们在渲染空间中的相同2×2四个图块内的另一个图块之后被顺序调度时,假设图块受益于由渲染那些图块的处理核心共享的高速缓存(例如,高速缓存826)内的高速缓存一致性。图块的相似性指示是根据相似性函数Fs计算的。图块的相似性函数(Fs)指示该图块(ti)和根据渲染空间内的N顺序指定的另一个图块(ti+1)之间的相似性水平。数学上,在一个示例中,图块ti的相似性函数计算为:
Fs(ti,ti+1)=(complexity(ti)<complexitythreshold)
∧(complexity(ti+1)<complexitythreshold)
∧((|complexity(ti)-complexity(ti+1)|≤maxcomplexityDelta) (4)
其中,complexity(ti)是图块ti的成本指示,complexity(ti+1)是图块ti+1的成本指示,complexitythreshold是成本指示阈值,maxcomplexityDelta是成本指示差值阈值,并且∧是逻辑“与”运算符。图块ti+1是按照N顺序在ti之后的下一个图块。如果满足等式(4)中的所有条件,函数Fs输出图块ti的值‘1’,如果至少一个条件不满足,则输出图块ti的值‘0’。该函数的输出值被视为图块ti的相似性指示。
每个图块的成本指示被视为处理该图块的时间,如图3中的对应值所给出的。因此,最大成本指示等于处理其中一个图块的最长时间(在本示例中为值99)。在模拟中,complexitythreshold的数值被设置为50,maxcomplexityDelta的数值被设置为10。
如果函数Fs为图块ti返回值‘1’,则分配给处理核心的下一个图块ti+1是渲染空间内由N顺序指定的下一个图块。如果函数Fs为图块ti返回值‘0’,则分配给处理核心的下一个图块ti+1是剩余未分配图块中成本指示最高的图块。
模拟结果显示,处理4×4图块块花费的时间为163T。根据模拟结果,根据成本指示和相似性指示来调度图块的方法因此优于仅根据渲染空间内的空间顺序来调度图块的方法(如图6所示,其花费175T来处理图块)和仅根据成本指示来调度图块的方法(如图7所示,其花费177T来处理图块)。
以上示例展示了基于成本指示和相似性指示将图块集合分配给处理核心的调度逻辑如何可以通过具有适当调度复杂图块进行处理的灵活性,同时保持在适当利用高速缓存一致性时调度空间上本地的图块的能力,来改善在渲染场景时GPU的性能。
在上述示例中,相似性指示由形成分块单元808的一部分的相似性指示逻辑824计算。也就是说,在将控制流写入存储器8041之前(因此在流水线的渲染阶段之前),在流水线的几何处理阶段期间计算相似性指示。在其他示例中,相似性指示可以在流水线的渲染阶段期间计算。也就是说,写入存储器的控制流可能仍然包含成本指示,但不包含相似性指示。
图13示出了用于渲染3D场景的图像的图形处理系统1300的示例。与图8的图形处理系统800相似的部件由相似的附图标记表示。图形处理系统1300包括图形处理单元(GPU)1302和存储器的两个部分8041和8042。GPU 1302包括预处理模块806、分块单元808和渲染逻辑1310,其中,渲染逻辑1310包括:提取单元812;处理逻辑813,其包括一个或多个处理核心(8141至8146)和高速缓存826;和调度逻辑1316,其包括一个或多个渲染队列818。调度逻辑还包括相似性指示逻辑1324。
参考图14所示的流程图描述图形处理系统1300的操作。
步骤S1402和S1404类似于上面参考图9描述的步骤S902和S904,因此这里将不再重复这些步骤的描述。
在步骤S1406,成本指示逻辑820为一个或多个图块的集合确定成本指示。成本指示逻辑820以与上面参考图8描述的相同的方式进行这种操作。在步骤S1408,分块单元在写入存储器的控制流中包括成本指示。该步骤(就其涉及成本指示而言)类似于上述步骤S910。
在渲染阶段,调度逻辑1316接收当前渲染的渲染空间的图块的控制流。调度逻辑1316示出为渲染逻辑1310的一部分,但是在其他示例中,调度逻辑1316可以被认为是图块排序器,其在渲染逻辑1310之外起作用,并且确定要由渲染逻辑1310处理的图块的顺序。在一些示例中,调度逻辑可以被实现为提取单元812的一部分。
在步骤S1410,相似性指示逻辑1324确定渲染空间的图块集合之间的相似性指示。相似性指示逻辑1324可以使用由分块单元808生成的控制流中包括的信息来计算相似性指示。例如,相似性指示逻辑可以从控制流头部读取信息,并使用该信息来计算相似性指示。相似性指示逻辑可以使用上面参考图9的S908描述的任何方法来确定相似性指示。
相似性指示逻辑1324可以将一组一个或多个相似性指示分配给一个或多个图块的每个集合,如以上参考图9中的步骤S908所述。在调度逻辑1316内包括相似性指示逻辑的潜在优势在于,相似性指示可以在由渲染逻辑1310执行的渲染期间“动态”计算。例如,相似性指示逻辑1324可以在该图块集合已经被分配给处理核心之后,但是在下一个图块集合被分配给核心之前,计算图块集合的相似性指示。换句话说,可以实时计算相似性指示,因为需要它们来确定要分配给处理核心的下一个图块集合。
在步骤S1412,调度逻辑1316分析成本指示和相似性指示,以将图块分配给处理核心。步骤S1410和S1412可以同时执行,使得已经分配给处理核心的图块集合的相似性指示被确定为将下一个图块分配给核心的分析的一部分。调度逻辑可以根据上面参考S912描述的任何示例来分析成本指示和相似性指示,以分配下一个图块集合。
因此,每当一个图块集合Ti被分配给核心时,调度逻辑1316可以操作来:i)计算分配给该图块集合Ti的一个或多个相似性指示的组;并且ii)根据图块Ti的相似性指示和成本指示,将下一个图块集合Ti+1分配给处理核心。可以根据上面参考步骤S908描述的任何示例来计算一个或多个相似性指示。可以根据上面参考步骤S912描述的任何方法来选择要分配给处理核心的下一个图块集合。
计算调度逻辑1316内的相似性指示(即,在渲染阶段而不是几何阶段期间)的潜在优势在于,在决定何时计算以及计算多少相似性指示时可以有更大的灵活性。例如,相似性指示逻辑1324可以计算图块集合之间的相似性指示,同时根据成本指示将图块集合分配给处理核心。也就是说,相似性指示逻辑可以在根据成本指示将图块集合分配给处理核心时每次计算一个或多个相似性指示。调度逻辑可以确定何时计算一个或多个相似性指示。所计算的相似性指示可以用于生成根据那些相似性指示设置的多个图块集合的调度顺序。所生成的调度顺序中的每个图块集合可能具有相似性指示,该指示表明与该调度顺序中的另一个图块集合的相似性水平高于指定阈值。也就是说,调度顺序可以是相似图块集合的调度顺序。换句话说,相似性指示逻辑可以执行以下步骤:
(i)计算图块集合之间的一个或多个相似性指示;
(ii)从相似性指示中确定具有超过指定阈值的与另一个图块集合的相似性水平的每个图块集合;
(iii)为确定的图块集合生成调度顺序。
调度逻辑1316然后可以根据成本指示或者根据生成的调度顺序来确定是否将图块集合分配给处理核心。例如,当调度顺序中的图块集合的数量超过指定阈值时,调度逻辑可以切换到根据生成的调度顺序来分配图块集合。这可以方便地使场景中具有相对高相似性的区域内的图块被顺序分配给处理核心,以利用上述高速缓存一致性的好处。
通过在渲染阶段计算相似性指示,相似性指示逻辑可以独立于其他图块集合来计算一组图块集合的相似性指示。这使得能够计算更少的相似性指示和/或控制何时计算相似性指示。例如,一些场景可能具有很少的相似图块集合,在这种情况下,可能希望避免计算太多相似性指示,并且根据成本指示来优先分配图块。相比之下,其他场景可以具有更多数量的相似图块集合,在这种情况下,可能希望根据相似性指示来优先分配图块。因此,可以理解,在某些情况下,可能希望具有控制何时计算以及计算多少相似性指示的灵活性,而不是必须为每个场景计算一组固定的相似性指示。
在步骤S1414,使用处理核心渲染图块。步骤S1412和S1414可以同时执行,使得当处理核心渲染其他先前分配的图块集合时,图块集合被分配给处理核心。图块可以以类似于上面参考S914描述的方式渲染。
在步骤S1416,存储渲染的结果。该步骤类似于上述S916。
图15示出了其中可以实现本文所述图形处理系统的计算机系统。计算机系统包括CPU 1502、GPU 802或1302、存储器1506和其他设备1108,诸如显示器1510、扬声器1512和相机1514。计算机系统的部件可以通过通信总线1518彼此通信。存储1516(对应于存储器8041和8042)被实现为存储器1506的一部分。
图8和13的图形处理系统示出为包括多个功能块。这仅仅是示意性的,并不旨在限定这样的实体的不同逻辑元素之间的严格划分。每个功能块可以以任何合适的方式提供。应当理解,本文描述为由图形处理单元形成的中间值不需要由图形处理单元在任何点物理生成,并且可以仅表示逻辑值,该逻辑值方便地描述了由图形处理单元在其输入和输出之间执行的处理。
本文所述图形处理单元可以体现在集成电路上的硬件中。本文所述图形处理单元可以被配置成执行本文所述任何方法。通常,上述任何功能、方法、技术或部件都可以用软件、固件、硬件(例如,固定逻辑电路)或它们的任何组合来实现。术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”在本文中可以用来大体表示软件、固件、硬件或它们的任何组合。在软件实施方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示当在处理器上执行时执行指定任务的程序代码。本文所述算法和方法可以由执行代码的一个或多个处理器来执行,该代码导致处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁、光和其他技术来存储指令或其他数据并且可以被机器访问的其他存储器设备。
本文使用的术语计算机程序代码和计算机可读指令是指处理器的任何种类的可执行代码,包括以机器语言、解释语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(诸如硬件描述语言或网表),以及以编程语言代码(诸如C、Java或OpenCL)表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中适当地执行、处理、解译、编译、执行时,这些软件、固件、脚本、模块或库导致支持可执行代码的计算机系统的处理器执行由该代码指定的任务。
处理器、计算机或计算机系统可以是任何类型的设备、机器或专用电路,或其集合或部分,其具有处理能力,使得它能够执行指令。处理器可以是任何种类的通用或专用处理器,诸如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
它还旨在包括定义如本文所述的硬件配置的软件,诸如用于设计集成电路或配置可编程芯片以执行期望功能的HDL(硬件描述语言)软件。也就是说,可以提供一种其上编码有集成电路定义数据集形式的计算机可读程序代码的计算机可读存储介质,当在集成电路制造系统中处理时,该计算机可读程序代码将该系统配置成制造被配置成执行本文所述任何方法的图形处理单元,或者制造包括本文所述任何装置的图形处理单元。集成电路定义数据集可以是例如集成电路描述。
可以提供一种在集成电路制造系统中制造如本文所述的图形处理单元的方法。可以提供一种集成电路定义数据集,当在集成电路制造系统中处理时,该数据集导致制造图形处理单元的方法得以执行。
集成电路定义数据集可以是计算机代码的形式,例如作为网表、用于配置可编程芯片的代码、作为在任何级别定义集成电路的硬件描述语言,包括作为寄存器传输级(RTL)代码、作为诸如Verilog或VHDL的高级电路表示、以及作为诸如OASIS(RTM)和GDSII的低级电路表示。逻辑上定义集成电路的高级表示(诸如RTL)可以在计算机系统中处理,该计算机系统被配置成在软件环境的上下文中生成集成电路的制造定义,包括电路元件的定义和用于组合这些元件以便生成由该表示如此定义的集成电路的制造定义的规则。如在计算机系统中执行软件以定义机器的典型情况,一个或多个中间用户步骤(例如,提供命令、变量等)可能是必需的,以便配置成生成集成电路的制造定义的计算机系统执行定义集成电路的代码,从而生成该集成电路的制造定义。
现在将参考图16描述在集成电路制造系统中处理集成电路定义数据集以便配置该系统来制造图形处理单元的示例。
图16示出了集成电路(IC)制造系统1602的示例,该集成电路制造系统1602被配置成制造如本文的任何示例中所述的图形处理单元。特别地,IC制造系统1602包括布局处理系统1604和集成电路生成系统1606。IC制造系统1602被配置成接收IC定义数据集(例如,定义在本文的任何示例中描述的图形处理单元),处理IC定义数据集,并根据IC定义数据集生成IC(例如,其体现在本文的任何示例中描述的图形处理单元)。IC定义数据集的处理将IC制造系统1602配置成制造集成电路,该集成电路体现如本文任何示例中所述的图形处理单元。
布局处理系统1604被配置成接收和处理IC定义数据集以确定电路布局。从IC定义数据集确定电路布局的方法是本领域已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如根据逻辑组件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP组件)。通过确定逻辑组件的位置信息,可以从电路的门级表示中确定电路布局。这可以自动地或者在用户的参与下完成,以便优化电路布局。当布局处理系统1604已经确定电路布局时,它可以向IC生成系统1606输出电路布局定义。电路布局定义可以是例如电路布局描述。
IC生成系统1606根据电路布局定义生成IC,如本领域已知的。例如,IC生成系统1606可以实施半导体器件制造工艺来生成IC,该工艺可以涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶圆上逐渐产生电子电路。电路布局定义可以是掩模的形式,该掩模可以在光刻工艺中用于根据电路定义生成IC。替代地,提供给IC生成系统1606的电路布局定义可以是计算机可读代码的形式,IC生成系统1606可以使用该代码来形成用于生成IC的合适掩模。
由IC制造系统1602执行的不同过程可以全部在一个位置实现,例如由一方实现。替代地,IC制造系统1602可以是分布式系统,使得一些过程可以在不同的位置执行,并且可以由不同方执行。例如,可以在不同位置和/或由不同方执行以下阶段中的一些:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示,(ii)基于门级表示生成电路布局,(iii)根据电路布局形成掩模,以及(iv)使用掩模制造集成电路。
在其他示例中,在集成电路制造系统中对集成电路定义数据集的处理可以将该系统配置成在不处理IC定义数据集以确定电路布局的情况下制造图形处理单元。例如,集成电路定义数据集可以定义可重配置处理器(诸如,FPGA)的配置,并且该数据集的处理可以配置IC制造系统以生成具有该定义配置的可重配置处理器(例如,通过将配置数据加载到FPGA)。
在一些实施例中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以导致集成电路制造系统生成如本文所述的器件。例如,通过集成电路制造定义数据集以上面参考图16描述的方式配置集成电路制造系统可以导致如本文所述的器件被制造。
在一些示例中,集成电路定义数据集可以包括在数据集定义的硬件上或者与在数据集定义的硬件结合运行的软件。在图16所示的示例中,IC生成系统可以进一步由集成电路定义数据集配置,以在制造集成电路时,根据在集成电路定义数据集定义的程序代码将固件加载到该集成电路上,或者以其他方式向集成电路提供程序代码以供集成电路使用。
本文所述图形处理系统可以体现在集成电路上的硬件中。本文所述图形处理系统可以被配置成执行本文所述任何方法。
与已知的实施方式相比,本申请中提出的概念在设备、装置、模块和/或系统(以及在此实现的方法)中的实施方式可以带来性能改善。性能改善可以包括提高计算性能、降低延迟、增加吞吐量和/或降低功耗中的一种或多种。在这种设备、装置、模块和系统(例如集成电路)的制造过程中,性能改善可以相对于物理实施方式进行权衡,从而改进制造方法。例如,性能改善可以相对于布局面积进行权衡,从而匹配已知实施方式的性能,但是使用较少的硅。这可以例如通过以串行方式重新使用功能块或者在设备、装置、模块和/或系统的元件之间共享功能块来实现。相反,在本申请中提出的导致设备、装置、模块和系统的物理实施方式的改善的概念(诸如减小的硅面积)可以用来换取改善的性能。例如,这可以通过在预定义的面积预算内制造模块的多个实例来实现。
与已知的实施方式相比,本申请中提出的概念在设备、装置、模块和/或系统(以及在此实现的方法)中的实施方式可以带来性能改善。性能改善可以包括提高计算性能、降低延迟、增加吞吐量和/或降低功耗中的一种或多种。在这种设备、装置、模块和系统(例如集成电路)的制造过程中,性能改善可以相对于物理实施方式进行权衡,从而改进制造方法。例如,性能改善可以相对于布局面积进行权衡,从而匹配已知实施方式的性能,但是使用较少的硅。这可以例如通过以串行方式重新使用功能块或者在设备、装置、模块和/或系统的元件之间共享功能块来实现。相反,在本申请中提出的导致设备、装置、模块和系统的物理实施方式的改善的概念(诸如减小的硅面积)可以用来换取改善的性能。例如,这可以通过在预定义的面积预算内制造模块的多个实例来实现。
申请人在此孤立地公开了本文所述每个单独的特征以及两个或更多个这样的特征的任意组合,使得这样的特征或组合能够根据本领域技术人员的普通常识基于本说明书整体来执行,而不管这样的特征或特征组合是否解决本文公开的任何问题。根据前面的描述,对于本领域技术人员来说显而易见的是,在本发明的范围内可以进行各种修改。
Claims (20)
1.一种图形处理单元,所述图形处理单元被配置成使用被细分为多个图块的渲染空间来处理图形数据,所述图形处理单元包括:
多个处理核心,其被配置成渲染图形数据;
成本指示逻辑,其被配置成获得所述渲染空间的一个或多个图块的多个集合中的每一个集合的成本指示,其中,一个或多个图块的一个集合的成本指示暗示处理一个或多个图块的所述集合的成本;
相似性指示逻辑,其被配置成获得所述渲染空间的一个或多个图块的各集合之间的相似性指示,其中,一个或多个图块的两个集合之间的相似性指示表示根据至少一个处理度量的图块的所述两个集合之间的相似性水平;以及
调度逻辑,其被配置成根据所述成本指示和所述相似性指示将一个或多个图块的所述各集合分配给所述处理核心以用于渲染。
2.根据权利要求1所述的图形处理单元,其中,所述调度逻辑被配置成:如果所述相似性指示没有表明存在尚未分配给所述处理核心的一个或多个图块的另一个集合,所述另一个集合与最近分配给所述处理核心的一个或多个图块的所述集合具有高于指定阈值的相似性水平,则根据由所述成本指示设置的第一调度顺序将一个或多个图块的下一个集合分配给所述处理核心。
3.根据权利要求1或2所述的图形处理单元,其中,所述相似性指示逻辑被配置成执行以下一个或多个步骤:
将一组一个或多个相似性指示分配给一个或多个图块的多个集合中的每一个集合,组中的每个相似性指示表示一个或多个图块的该集合和一个或多个图块的另一个集合之间的相似性水平;
向一个或多个图块的所述多个集合中的每一个集合分配多个相似性指示,所述多个相似性指示表示一个或多个图块的该集合与位于一个或多个图块的该集合的本地区域内的一个或多个图块的其他集合之间的相似性水平;和
确定所述相似性指示。
4.根据权利要求3所述的图形处理单元,其中,所述调度逻辑被配置成:
如果最近分配给所述处理核心的一个或多个图块的所述集合的所述组相似性指示没有表明在一个或多个图块的该集合和尚未分配给所述处理核心的一个或多个图块的另一个集合之间存在高于指定阈值的相似性水平,则根据由所述成本指示设置的第一调度顺序将一个或多个图块的下一个集合分配给所述处理核心;和
如果最近分配给所述处理核心的一个或多个图块的所述集合的所述组相似性指示表明在一个或多个图块的该集合和尚未分配给所述处理核心的一个或多个图块的一个或多个其他集合之间存在高于所述指定阈值的相似性水平,则将一个或多个图块的那些其他集合中的一个集合作为一个或多个图块的下一个集合分配给所述处理核心。
5.根据权利要求1或2所述的图形处理单元,其中,所述相似性指示逻辑被配置成将单个相似性指示分配给一个或多个图块的多个集合中的每一个集合,分配给一个或多个图块的每一个集合的所述相似性指示表示一个或多个图块的该集合与根据所述渲染空间内所述图块的空间顺序指定的一个或多个图块的另一个集合之间的相似性水平。
6.根据权利要求5所述的图形处理单元,其中,所述调度逻辑被配置成执行以下一个或多个步骤:
根据分配给最近分配给所述处理核心的一个或多个图块的所述集合的所述相似性指示,根据由所述成本指示设置的第一调度顺序或者由所述图块的所述空间顺序设置的第二调度顺序,将一个或多个图块的下一个集合分配给所述处理核心;和
如果分配给最近分配给处理核心的一个或多个图块的所述集合的相似性指示表明一个或多个图块的该集合与根据图块的空间顺序指定的一个或多个图块的另一个集合之间的相似性水平低于指定阈值,则根据第一调度顺序将一个或多个图块的下一个集合分配给处理核心;和
如果分配给最近分配给处理核心的一个或多个图块的所述集合的相似性指示表明一个或多个图块的该集合与根据图块的空间顺序指定的一个或多个图块的所述集合之间的相似性水平高于指定阈值,则接下来将由图块的空间顺序指定的一个或多个图块的所述集合分配给处理核心。
7.根据权利要求3所述的图形处理单元,其中,所述至少一个处理度量包括以下一个或多个:
用于渲染一个或多个图块的一个集合的处理资源,并且所述相似性指示逻辑被配置成基于一个或多个图块的两个集合之间的所述处理资源的共享水平来确定一个或多个图块的这两个集合之间的相似性指示;和
图形数据内容,其包括以下至少一个:(i)存在于一个或多个图块的一个集合中的图元,以及(ii)将用于渲染一个或多个图块的一个集合的纹理。
8.根据权利要求7所述的图形处理单元,其中,所述处理资源是由一个或多个图块的一个集合引用的一个或多个着色器程序的一个集合。
9.根据权利要求8所述的图形处理单元,其中,所述相似性指示逻辑被配置成从由一个或多个图块的所述两个集合两者均引用的着色器程序的数量确定所述处理资源的所述共享水平。
10.根据权利要求3所述的图形处理单元,其中,所述相似性指示逻辑被配置成从一个或多个图块的两个集合的所述成本指示确定一个或多个图块的这两个集合之间的相似性指示。
11.根据权利要求1或2所述的图形处理单元,其中,所述成本指示逻辑被配置成确定所述渲染空间的一个或多个图块的各集合的所述成本指示。
12.根据权利要求11所述的图形处理单元,其中,所述成本指示逻辑被配置成通过组合与所述图块中存在的图元相关联的分数来确定所述渲染空间的图块的成本指示,其中,与图元相关联的分数取决于所述图元是其一部分的对象的对象类型。
13.根据权利要求11所述的图形处理单元,其中,所述成本指示逻辑被配置成基于以下因素中的一个或多个来确定所述渲染空间的图块的成本指示:
(i)所述图块中的图元的数量;
(ii)与所述图块中的所述图元相关联的对象类型;
(iii)所述图块中的所述图元的图块覆盖区域;
(iv)一个或多个着色器程序的特征,所述一个或多个着色器程序将被执行以渲染所述图块中的所述图元;
(v)用户输入;和
(vi)在前一渲染中对应图块的处理成本。
14.根据权利要求13所述的图形处理单元,其中,着色器程序的特征包括以下一个或多个:
(i)所述着色器程序的长度;
(ii)由所述着色器程序使用的资源或寄存器的数量;
(iii)所述着色器程序是否包括条件流控制;
(iv)所述着色器程序是否包括在编译时重复次数未定义的循环;和
(v)所述着色器程序中使用的存储器读取和/或写入的量。
15.根据权利要求1或2所述的图形处理单元,其中,一个或多个图块的所述各集合各自包括仅单个图块。
16.根据权利要求1或2所述的图形处理单元,其中,一个或多个图块的所述各集合各自包括多个图块。
17.根据权利要求16所述的图形处理单元,其中,所述成本指示逻辑被配置成:
获得一个图块集合中的每个图块的相应成本指示;和
基于该集合内图块的所述成本指示来确定所述图块集合的所述成本指示。
18.一种在图形处理系统中处理图形数据的方法,所述图形处理系统包括配置成渲染图形数据的多个处理核心,所述图形处理系统被配置成使用被细分为多个图块的渲染空间,所述方法包括:
获得渲染空间的一个或多个图块的多个集合中的每一个集合的成本指示,其中一个或多个图块的一个集合的成本指示暗示处理一个或多个图块的该集合的成本;
获得渲染空间的一个或多个图块的各集合之间的相似性指示,其中一个或多个图块的两个集合之间的相似性指示表示根据至少一个处理度量的图块的这两个集合之间的相似性水平;以及
根据成本指示和相似性指示将一个或多个图块的各集合分配给处理核心以用于渲染。
19.根据权利要求1或2所述的图形处理单元,其中,所述图形处理单元体现在集成电路上的硬件中。
20.一种集成电路定义数据集,当在集成电路制造系统中被处理时,所述集成电路定义数据集配置所述集成电路制造系统以制造根据权利要求1或2所述的图形处理单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1810776.3A GB2570743B (en) | 2018-06-29 | 2018-06-29 | Tile assignment to processing cores within a graphics processing unit |
GB1810776.3 | 2018-06-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110728616A true CN110728616A (zh) | 2020-01-24 |
Family
ID=63143585
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910576290.7A Pending CN110728616A (zh) | 2018-06-29 | 2019-06-28 | 图形处理单元内处理核心的图块分配 |
Country Status (4)
Country | Link |
---|---|
US (3) | US11508028B2 (zh) |
EP (1) | EP3588289B1 (zh) |
CN (1) | CN110728616A (zh) |
GB (1) | GB2570743B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114723598A (zh) * | 2020-12-18 | 2022-07-08 | 想象技术有限公司 | 图形处理系统和方法 |
CN115775295A (zh) * | 2023-01-10 | 2023-03-10 | 摩尔线程智能科技(北京)有限责任公司 | 用于基于图块的延迟渲染的装置和方法 |
CN117934260A (zh) * | 2024-03-25 | 2024-04-26 | 摩尔线程智能科技(北京)有限责任公司 | 渲染方法、图块分配装置、图形处理设备及计算设备 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11508110B2 (en) * | 2020-02-03 | 2022-11-22 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering |
GB2586297B (en) * | 2020-02-10 | 2022-03-02 | Imagination Tech Ltd | Data structures, methods and tiling engines for storing tiling information in a graphics processing system |
US11257179B2 (en) * | 2020-03-13 | 2022-02-22 | Apple Inc. | Graphics processing techniques based on frame portion cost estimates |
US11954757B2 (en) * | 2021-12-28 | 2024-04-09 | Advanced Micro Devices, Inc. | Method and apparatus for implementing a rasterizer in GPU operations |
EP4254339A1 (en) * | 2022-03-31 | 2023-10-04 | Imagination Technologies Limited | Reducing redundant rendering in a graphics system |
CN115049774B (zh) * | 2022-08-12 | 2022-11-01 | 深流微智能科技(深圳)有限公司 | 图形处理方法、处理器、存储介质及终端设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6618046B1 (en) * | 2000-09-29 | 2003-09-09 | Intel Corporation | System and method for estimating the rendering cost for images |
CN1538296A (zh) * | 2003-02-18 | 2004-10-20 | 图形处理单元的多线程内核 | |
CN102279978A (zh) * | 2010-06-08 | 2011-12-14 | 英特尔公司 | 用于图像处理的块渲染 |
US20120320069A1 (en) * | 2011-06-17 | 2012-12-20 | Samsung Electronics Co., Ltd. | Method and apparatus for tile based rendering using tile-to-tile locality |
WO2013130030A1 (en) * | 2012-02-27 | 2013-09-06 | Intel Corporation | Using cost estimation to improve performance of tile rendering for image processing |
US20160078667A1 (en) * | 2014-09-17 | 2016-03-17 | Samsung Electronics Co., Ltd. | Method and apparatus for processing rendering data |
US20180137677A1 (en) * | 2016-11-17 | 2018-05-17 | Samsung Electronics Co., Ltd. | Tile-based rendering method and apparatus |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5893095A (en) * | 1996-03-29 | 1999-04-06 | Virage, Inc. | Similarity engine for content-based retrieval of images |
US8472716B2 (en) * | 2007-12-05 | 2013-06-25 | Canon Kabushiki Kaisha | Block-based noise detection and reduction method with pixel level classification granularity |
US8933943B2 (en) * | 2008-04-30 | 2015-01-13 | Intel Corporation | Technique for performing load balancing for parallel rendering |
US8259111B2 (en) * | 2008-05-30 | 2012-09-04 | Advanced Micro Devices, Inc. | Merged shader for primitive amplification |
US8576243B2 (en) * | 2010-10-08 | 2013-11-05 | Hewlett-Packard Development Company, L.P. | Display-color function image conversion |
GB2494903B (en) * | 2011-09-22 | 2017-12-27 | Advanced Risc Mach Ltd | Graphics processing systems |
US20130229440A1 (en) * | 2012-03-01 | 2013-09-05 | Microsoft Corporation | State aware tile visualization |
EP2648107B1 (en) * | 2012-04-05 | 2016-09-28 | Siemens Healthcare GmbH | Volume rendering on shared memory systems with multiple processors by optimizing cache reuse |
US20140092087A1 (en) * | 2012-09-28 | 2014-04-03 | Takayuki Kazama | Adaptive load balancing in software emulation of gpu hardware |
US9899007B2 (en) * | 2012-12-28 | 2018-02-20 | Think Silicon Sa | Adaptive lossy framebuffer compression with controllable error rate |
KR102048885B1 (ko) * | 2013-05-09 | 2019-11-26 | 삼성전자 주식회사 | 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 렌더링 방법 |
US9514563B2 (en) * | 2013-08-30 | 2016-12-06 | Arm Limited | Graphics processing systems |
US9292903B2 (en) * | 2013-10-03 | 2016-03-22 | Google Inc. | Overlap aware reordering of rendering operations for efficiency |
WO2015184067A1 (en) * | 2014-05-28 | 2015-12-03 | Arris Enterprises, Inc. | Content aware scheduling in a hevc decoder operating on a multi-core processor platform |
CN106537446B (zh) * | 2014-06-30 | 2019-08-20 | 英特尔公司 | 具有任意块形状的自适应划分机制以用于基于块的渲染gpu架构 |
US9805248B2 (en) * | 2014-08-29 | 2017-10-31 | Definiens Ag | Applying pixelwise descriptors to a target image that are generated by segmenting objects in other images |
US9607352B2 (en) * | 2014-12-03 | 2017-03-28 | Intel Corporation | Prediction based primitive sorting for tile based rendering |
US9785332B1 (en) * | 2014-12-05 | 2017-10-10 | Amazon Technologies, Inc. | Conserving processing resources by controlling updates to damaged tiles of a content page |
GB2534225B (en) * | 2015-01-19 | 2017-02-22 | Imagination Tech Ltd | Rendering views of a scene in a graphics processing unit |
US10410398B2 (en) * | 2015-02-20 | 2019-09-10 | Qualcomm Incorporated | Systems and methods for reducing memory bandwidth using low quality tiles |
KR102354992B1 (ko) * | 2015-03-02 | 2022-01-24 | 삼성전자주식회사 | 양안 시차 영상에 대한 타일 기반 렌더링 방법 및 장치 |
KR102341267B1 (ko) * | 2015-05-04 | 2021-12-20 | 삼성전자주식회사 | 양안 시차 영상에 대한 렌더링 방법 및 장치 |
US9971791B2 (en) * | 2015-09-16 | 2018-05-15 | Adobe Systems Incorporated | Method and apparatus for clustering product media files |
GB2545503B (en) * | 2015-12-18 | 2020-04-08 | Imagination Tech Ltd | Lossy data compression |
GB2559042B (en) * | 2015-12-21 | 2019-06-05 | Imagination Tech Ltd | Allocation of tiles to processing engines in a graphics processing system |
US10542258B2 (en) * | 2016-01-25 | 2020-01-21 | Google Llc | Tile copying for video compression |
US9947068B2 (en) * | 2016-03-10 | 2018-04-17 | Gamefly Israel Ltd. | System and method for GPU scheduling |
GB2551689B (en) * | 2016-04-22 | 2021-05-12 | Advanced Risc Mach Ltd | Method and Apparatus for processing graphics |
WO2018035508A1 (en) * | 2016-08-19 | 2018-02-22 | Linear Algebra Technologies Limited | Path planning using sparse volumetric data |
KR20180056316A (ko) * | 2016-11-18 | 2018-05-28 | 삼성전자주식회사 | 타일-기반 렌더링을 수행하는 방법 및 장치 |
US10896064B2 (en) * | 2017-03-27 | 2021-01-19 | International Business Machines Corporation | Coordinated, topology-aware CPU-GPU-memory scheduling for containerized workloads |
US10838575B2 (en) * | 2017-06-15 | 2020-11-17 | Microsoft Technology Licensing, Llc | Adaptive tile-based user interface for inferring user interest |
KR102554419B1 (ko) * | 2017-12-26 | 2023-07-11 | 삼성전자주식회사 | 프리페칭된 그래픽스 데이터를 이용하여 타일 기반 렌더링을 수행하는 방법 및 장치 |
-
2018
- 2018-06-29 GB GB1810776.3A patent/GB2570743B/en active Active
-
2019
- 2019-06-26 EP EP19182548.8A patent/EP3588289B1/en active Active
- 2019-06-28 CN CN201910576290.7A patent/CN110728616A/zh active Pending
- 2019-06-29 US US16/457,978 patent/US11508028B2/en active Active
-
2022
- 2022-10-13 US US17/965,652 patent/US11803936B2/en active Active
-
2023
- 2023-10-30 US US18/385,265 patent/US20240062326A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6618046B1 (en) * | 2000-09-29 | 2003-09-09 | Intel Corporation | System and method for estimating the rendering cost for images |
CN1538296A (zh) * | 2003-02-18 | 2004-10-20 | 图形处理单元的多线程内核 | |
CN102279978A (zh) * | 2010-06-08 | 2011-12-14 | 英特尔公司 | 用于图像处理的块渲染 |
US20120320069A1 (en) * | 2011-06-17 | 2012-12-20 | Samsung Electronics Co., Ltd. | Method and apparatus for tile based rendering using tile-to-tile locality |
WO2013130030A1 (en) * | 2012-02-27 | 2013-09-06 | Intel Corporation | Using cost estimation to improve performance of tile rendering for image processing |
US20160078667A1 (en) * | 2014-09-17 | 2016-03-17 | Samsung Electronics Co., Ltd. | Method and apparatus for processing rendering data |
US20180137677A1 (en) * | 2016-11-17 | 2018-05-17 | Samsung Electronics Co., Ltd. | Tile-based rendering method and apparatus |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114723598A (zh) * | 2020-12-18 | 2022-07-08 | 想象技术有限公司 | 图形处理系统和方法 |
CN114723598B (zh) * | 2020-12-18 | 2024-05-24 | 想象技术有限公司 | 图形处理系统和方法 |
CN115775295A (zh) * | 2023-01-10 | 2023-03-10 | 摩尔线程智能科技(北京)有限责任公司 | 用于基于图块的延迟渲染的装置和方法 |
CN117934260A (zh) * | 2024-03-25 | 2024-04-26 | 摩尔线程智能科技(北京)有限责任公司 | 渲染方法、图块分配装置、图形处理设备及计算设备 |
CN117934260B (zh) * | 2024-03-25 | 2024-07-26 | 摩尔线程智能科技(北京)有限责任公司 | 渲染方法、图块分配装置、图形处理设备及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
US20240062326A1 (en) | 2024-02-22 |
US11508028B2 (en) | 2022-11-22 |
EP3588289A3 (en) | 2020-01-08 |
GB201810776D0 (en) | 2018-08-15 |
US11803936B2 (en) | 2023-10-31 |
US20230034968A1 (en) | 2023-02-02 |
GB2570743A (en) | 2019-08-07 |
US20200005423A1 (en) | 2020-01-02 |
EP3588289A2 (en) | 2020-01-01 |
GB2570743B (en) | 2021-06-23 |
EP3588289B1 (en) | 2022-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11803936B2 (en) | Tile assignment to processing cores within a graphics processing unit | |
US11710268B2 (en) | Graphics processing units and methods for controlling rendering complexity using cost indications for sets of tiles of a rendering space | |
US10249016B2 (en) | Graphics processing units and methods using cost indications for sets of tiles of a rendering space | |
US10475228B2 (en) | Allocation of tiles to processing engines in a graphics processing system | |
US10387990B2 (en) | Graphics processing units and methods for subdividing a set of one or more tiles of a rendering space for rendering | |
US9547931B2 (en) | System, method, and computer program product for pre-filtered anti-aliasing with deferred shading | |
US11887240B2 (en) | Multi-rendering in graphics processing units using render progression checks | |
US10055883B2 (en) | Frustum tests for sub-pixel shadows | |
US9659399B2 (en) | System, method, and computer program product for passing attribute structures between shader stages in a graphics pipeline | |
GB2580498A (en) | Graphics processing units and methods for controlling rendering complexity using cost indications for sets of tiles of a rendering space |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |