CN108305313A - 用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法 - Google Patents
用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法 Download PDFInfo
- Publication number
- CN108305313A CN108305313A CN201810028127.2A CN201810028127A CN108305313A CN 108305313 A CN108305313 A CN 108305313A CN 201810028127 A CN201810028127 A CN 201810028127A CN 108305313 A CN108305313 A CN 108305313A
- Authority
- CN
- China
- Prior art keywords
- segment
- segments
- expense
- process cores
- processing unit
- 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.)
- Granted
Links
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/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
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- 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
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
一种图形处理单元被配置为使用被细分成多个图块的绘制空间来处理图形数据。图形处理单元包括被配置为处理图形数据的一个或多个处理核。图形处理单元还包括调度逻辑,该调度逻辑被配置为细分绘制空间的一个或多个图块的至少一个集合以形成多个子单元(例如,子图块)并且将这些子单元中的至少一些分配给不同的处理核以用于绘制。图块的细分可以对在绘制的结束附近出现的昂贵图块特别有用,以在绘制的结束附近调度昂贵的图块时减少对总绘制时间的影响。
Description
背景技术
图形处理系统通常被配置为例如从在计算机系统上运行的应用接收图形数据,并且绘制图形数据以提供绘制输出。例如,提供给图形处理系统的图形数据可以描述要绘制的三维(3D)场景内的几何结构,并且绘制输出可以是场景的经绘制图像。一些图形处理系统(其可以被称为“基于图块”的图形处理系统)使用被细分成多个图块的绘制空间。“图块”是绘制空间的区域,并且可以具有任意合适的形状,但是通常是矩形的(其中术语“矩形”包括正方形)。举一些示例,图块可以覆盖要绘制的图像的16×16像素块或32×32像素块。如本领域已知的那样,将绘制空间细分成图块具有许多益处。例如,将绘制空间细分成图块允许图像以逐图块的方式被绘制,其中针对图块的图形数据可以在图块的绘制期间被临时存储“在芯片上”。
基于图块的图形处理系统通常分两个阶段进行操作:几何图形处理阶段和绘制阶段。在几何图形处理阶段中,用于绘制的图形数据被分析以针对每个图块确定哪个图形数据项存在于该图块内。然后在绘制阶段中,可以通过处理那些被确定存在于该图块内的图形数据项来绘制图块(而不需要处理在几何图形处理阶段确定为不存在于该特定图块内的图形数据项)。图形数据项可以表示描述场景中的结构的表面的、并且被称为“图元”的几何形状。常见的基本形状是三角形,但是图元可以是其他2D形状,或者也可以是线条或点。对象可以由一个或多个(例如数百、数千或数百万个)这样的图元构成。
图1示出了可用于绘制3D场景的图像的图形处理系统100的一些元件。图形处理系统100包括图形处理单元(GPU)102和两个部分的存储器1041和1042。两个部分的存储器1041和1042可以是或可以不是相同物理存储器的一部分。
GPU 102包括预处理模块106、分块(tiling)单元108和绘制逻辑110,其中绘制逻辑110包括取回单元112和包括一个或多个处理核114的处理逻辑113。绘制逻辑110被配置为使用处理核114对绘制空间的图块的图形数据(例如,图元片段)实现隐藏表面移除(HSR)和纹理化和/或着色。
图形处理系统100被布置为使得在预处理模块106处接收由应用提供的图元序列。在几何图形处理阶段中,预处理模块106执行诸如包括剪切(clipping)和剔除(culling)的几何处理以移除不落入可视视图的图元的功能。预处理模块106也可以将图元投影到屏幕空间中。从预处理模块106输出的图元被传递给分块单元108,分块单元108确定在图形处理系统100的绘制空间的每个图块中存在哪些图元。分块单元108通过为图块创建控制流(或“显示列表”)来将图元分配给创建绘制空间的图块,其中图块的控制流包括在图块内存在的图元的指示。控制流和图元从分块单元108输出并存储在存储器1041中。
在绘制阶段中,绘制逻辑110绘制用于绘制空间的图块的图形数据以生成绘制的值,例如,经绘制的图像值。绘制逻辑110可以被配置为实现任意合适的绘制技术,诸如栅格化或射线跟踪(ray tracing)来执行绘制。为了绘制图块,取回单元112从存储器1041中取回图块的控制流以及与该图块相关的图元。例如,绘制单元可以根据延迟绘制技术来实现栅格化,使得一个或多个处理核114被用于执行隐藏表面移除从而移除隐藏在场景中的图元的片段,然后一个或多个处理核114被用于对剩余的图元片段应用纹理化和/或着色,从而形成经绘制的图像值。执行隐藏表面移除和纹理化/着色的方法是本领域已知的。术语“片段”是指为了绘制图像的像素而被处理的采样点处的图元的采样。在一些示例中,可以存在采样位置到像素的一对一映射。在其他示例中,可以有比像素更多的采样位置,并且这种过采样可以允许例如通过促进可以应用于用于绘制每个像素值的多个片段的抗锯齿(anti-aliasing)和其他滤波来允许像素值的更高质量的绘制。在经过HSR阶段的片段上执行的纹理化和/或着色确定可以被传递到存储器1042以存储在帧缓冲器中的经绘制图像的像素颜色值。纹理数据可以在绘制逻辑110处从存储器1041接收,以便将纹理化应用于图元片段,如本领域已知的那样。着色器程序可以被执行以将着色应用于图元片段。纹理化/着色处理可以包括对图元片段应用进一步的处理(例如,阿尔法混合和其他处理),如本领域已知的,以便确定图像的经绘制像素值。绘制逻辑110处理每个图块中的图元,并且当整个图像已经被绘制并存储在存储器1042中时,经绘制图像可以从图形处理系统100输出并以任意合适的方式使用,例如显示在显示器上或存储在存储器中或发送到另一设备等
在一些系统中,可以使用特定的处理核来执行在一个时间点的隐藏表面移除以及另一时间点的纹理化/着色。在一些其他系统中,一些处理核专用于执行隐藏表面移除,而另一些处理核专用于对图元片段执行纹理化和/或着色。
上述的图形处理系统100是延迟绘制系统,因为绘制逻辑110被配置为在将纹理化/着色处理应用于图元片段之前对图元片段执行HSR处理。其他图形处理系统在场景中不是延迟绘制系统,因为它们被配置为在对这些图元片段执行HSR之前执行图元片段的纹理化和/或着色。延迟绘制系统避免了对由隐藏表面移除处理移除的至少一些图元片段应用纹理化和/或着色的处理。
如果绘制逻辑110包括多于一个处理核114,则处理核可以并行处理不同的数据,从而提高绘制逻辑110的效率。在一些系统中,将图块分配给绘制逻辑110的处理核,使得用于绘制特定图块的图形数据在单个处理核中被处理。用于绘制不同图块的图形数据可以由不同的、单个处理核来处理。在单个处理核上处理特定图块(而不是跨越多个核来分布特定图块的处理)可以具有诸如改善的高速缓存命中率的益处。多个图块可以被分配给相同的处理核,这可以被称为具有“在飞行中的多个图块”。当绘制逻辑110已经处理了绘制的所有图块时,绘制完成。然后,绘制结果(例如,经绘制帧)可以被适当地使用(例如,被显示在显示器上或者被存储在存储器中或者被发送到另一设备等),并且绘制逻辑110可以处理后续绘制的图块。
发明内容
提供本发明内容是为了以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容部分不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。
图形处理单元被配置为使用被细分成多个图块的绘制空间来处理图形数据。图形处理单元包括被配置为处理图形数据的一个或多个处理核。所述图形处理单元还可以包括开销指示逻辑,所述开销指示逻辑被配置为获得所述绘制空间的多个一个或多个图块的集合中的每一个集合的开销指示,其中一个或多个图块的集合的所述开销指示建议处理一个或多个图块的集合的开销。图形处理单元还包括调度逻辑,该调度逻辑可以被配置为根据开销指示调度一个或多个图块的集合以用于在一个或多个处理核上处理。例如,以这种方式,根据在这些图块的处理中可能涉及多少工作来调度一个或多个图块的集合以在处理核上进行处理。例如,可能涉及大量工作的图块可以被调度在可能涉及较少工作的图块之前进行处理。这可以例如在处理绘制空间中所有图块的图形数据所花费的时间量方面提高图形处理系统的效率。
在一些示例中,调度逻辑可以被配置为细分绘制空间的一个或多个图块的至少一个集合以形成多个子单元(例如,子图块)并且将这些子单元中的至少一些分配给不同的处理核用于绘制。例如,调度逻辑可以被配置为细分绘制空间的图块中的至少一个以形成多个子图块并且将这些子图块中的至少一些分配给不同的处理核以用于绘制。图块的细分可以对在绘制的结束附近出现的昂贵图块特别有用,以在绘制的结束附近调度昂贵的图块时减少对总绘制时间的影响。
提供了一种图形处理单元,被配置为使用被划分为多个图块的绘制空间来处理图形数据,所述图形处理单元包括:一个或多个处理核,被配置为绘制图形数据;以及调度逻辑,被配置为调度一个或多个图块的集合用于在所述一个或多个处理核上绘制,其中所述调度逻辑被配置为对于所述绘制空间的所述一个或多个图块的集合中的至少一个集合细分所述一个或多个图块的集合以确定多个子单元,其中所述调度逻辑被配置为调度所述子单元以用于在所述一个或多个处理核上进行绘制。例如,可以提供一种图形处理单元,该图形处理单元被配置为使用被划分成多个图块的绘制空间来处理图形数据,所述图形处理单元包括:多个处理核,被配置为绘制图形数据;以及调度逻辑,被配置为将一个或多个图块的集合分配给所述处理核用于绘制,其中所述调度逻辑被配置为针对所述绘制空间的所述一个或多个图块的集合中的至少一个来细分所述一个或多个图块的集合以确定多个子单元,其中所述调度逻辑被配置为将从一个或多个图块的相同集合得到的所述子单元中的至少一些子单元分配给不同的处理核用于绘制。
此外,提供了一种在图形处理系统中处理图形数据的方法,所述图形处理系统包括被配置为绘制图形数据的一个或多个处理核,所述图形处理系统被配置为使用被细分成多个图块的绘制空间,并且所述方法包括:调度用于在所述一个或多个处理核上绘制的一个或多个图块的集合,并且针对所述绘制空间的所述一个或多个图块的集合中的至少一个图块,细分所述一个或多个图块的集合以确定多个子单元;以及调度子单元以在一个或多个处理核上进行绘制。例如,可以提供一种在图形处理系统中处理图形数据的方法,所述图形处理系统包括被配置为绘制图形数据的多个处理核,所述图形处理系统被配置为使用被细分成多个图块的绘制空间,所述方法包括:将一个或多个图块的集合分配给所述处理核用于绘制,并且针对所述绘制空间的所述一个或多个图块的集合中的至少一个,细分所述一个或多个图块的集合以确定多个子单元,其中从一个或多个图块的相同集合中得到的子单元中的至少一些子单元被分配给不同处理核用于绘制。
在一些示例中(例如其中图形处理系统包括单个处理核的示例),调度逻辑可以被配置为调度从一个或多个图块的特定集合得到的子单元,使得从特定集合得到的所有子单元被分配给单个处理核用于绘制,其中单个处理核可以被配置为能够:在处理子单元中的不同的子单元之间切换,并且存储部分处理的子单元的状态,同时在子单元中的不同的子单元上执行处理。
子单元中的一个或多个可以是一个或多个图块的子集。例如,一个或多个图块的特定集合可以包括多个图块,并且调度逻辑可以被配置为细分图块的特定集合以确定来自特定图块集合的一个或多个图块的多个子集。
子单元中的一个或多个可以是子图块。例如,一个或多个图块的特定集合可以包括单个图块,并且调度逻辑可以被配置为细分单个图块以确定从单个图块得到的多个子图块。
调度逻辑可以被配置为确定针对当前绘制一个或多个图块的集合中的哪一个要细分。例如,调度逻辑可以被配置为基于与先前绘制中的一个或多个图块的对应集合的处理开销有关的信息来确定要针对当前绘制一个或多个图块的集合中的哪一个要细分。调度逻辑可以被配置为基于仍要在当前绘制中绘制的图块的数目与图块的阈值数目之间的关系来确定针对当前绘制一个或多个图块的集合中的哪一个要细分。调度逻辑被配置为可以进一步基于所述处理核的数量来确定针对当前绘制一个或多个图块的集合中的哪一个要细分。
图形处理单元可进一步包括:开销指示逻辑,被配置为获得绘制空间的一个或多个图块的集合中的每一个的开销指示,其中一个或多个图块的集合的开销指示建议处理所述一个或多个图块的集合的开销,且其中所述调度逻辑被配置为基于所述开销指示来确定针对所述当前绘制所述一个或多个图块的集合中的哪一个要细分。开销指示逻辑可以被配置为确定绘制空间的图块中的每一个的开销指示。例如,开销指示逻辑可被配置为基于以下项中的一个或多个来来确定绘制空间的图块的开销指示:(i)图块中的图元的数目;(ii)与图块中的图元相关联的对象类型;(iii)图块中的图元的图块覆盖区域;(iv)一个或多个着色器程序的特性,所述着色器程序可以被执行用于绘制图块中的图元;(v)用户输入;以及(vi)先前绘制中对应的图块的处理开销。
开销指示逻辑可以被配置为量化开销指示。
调度逻辑可以被配置为根据度量来细分一个或多个图块的集合,根据该度量,如果与一个或多个图块的集合相关联的开销指示增加,则一个或多个图块的集合被细分的可能性增加。
调度逻辑可以被配置为根据度量来细分一个或多个图块的集合,根据该度量,如果当前绘制的仍然要被绘制的图块的数量减少,则一个或多个图块的集合被细分的可能性增加。
调度逻辑可以被配置为根据度量来细分一个或多个图块的集合,根据该度量,如果处理核的数量增加,则一个或多个图块的集合被细分的可能性增加。
调度逻辑可以被配置为通过确定指示用于相应的多个子图块的图块的有效区域的多个遮罩来细分图块以确定多个子图块,其中特定的处理核被配置为通过接收以下各项来接收被调度用于在特定处理核上绘制的特定子图块的数据:(i)特定图块的数据,特定的子图块从所述特定图块得到,以及(ii)特定的子图块的相应的遮罩。
调度逻辑可以被配置为通过确定用于相应子图块的控制流数据来细分图块以确定多个子图块,其中特定的处理核被配置为通过接收特定的子图块的控制流数据来接收被调度用于在特定的处理核上绘制的特定子图块的数据。
图形处理单元还可以包括多个高速缓存,其中处理核中的每一个可以访问高速缓存中的至少一个,并且其中调度逻辑可以被配置为将从相同的一个或多个图块的集合得到的子集分配给访问相同高速缓存的处理核。
图形处理单元可以包括几何图形处理逻辑和绘制逻辑,其中几何图形处理逻辑包括分块单元,分块单元被配置为为绘制空间的图块生成指示哪些图元存在于图块中的控制流,并且其中绘制逻辑包括处理核并且被配置为根据所生成的控制流绘制在绘制空间的图块中的图元。
在一些实施例中,提供了一种图形处理单元,其被配置为使用被细分成多个图块的绘制空间来处理图形数据,所述图形处理单元包括:多个处理核,被配置为绘制图形数据;开销指示逻辑,被配置为获得所述绘制空间的多个一个或多个图块的集合中的每一个的开销指示,其中所述一个或多个图块的集合的所述开销指示建议处理所述一个或多个图块的集合的开销;以及调度逻辑,被配置为根据所述开销指示将所述一个或多个图块的集合分配给所述处理核以用于绘制。
本文描述的图形处理单元可以以集成电路上的硬件被实施。可以提供一种在集成电路制造系统处制造如本文所述的图形处理单元的方法。可以提供集成电路定义数据集,当在集成电路制造系统中处理时,集成电路定义数据集将系统配置为制造如本文所述的图形处理单元。可以提供一种非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,其在被处理时使得布局处理系统生成在集成电路制造系统中使用的电路布局描述以制造如本文所述的图形处理单元。
可以提供一种集成电路制造系统,包括:
非暂态计算机可读存储介质,其上存储有描述如本文所述的图形处理单元的计算机可读集成电路描述;
布局处理系统,被配置为处理所述集成电路描述以生成实施所述图形处理单元的集成电路的电路布局描述;以及
集成电路生成系统,被配置为根据电路布局描述来制造图形处理单元。
可以提供用于执行本文描述的任意方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂时性计算机可读存储介质,所述计算机可读指令在计算机系统处执行时使所述计算机系统执行本文所述的方法中的任意一个。
对于本领域技术人员显而易见的是,上述特征可以适当地组合,并且可以与本文描述的示例方面中的任意一个组合。
附图说明
现在将参考附图详细描述示例,在附图中:
图1示出了现有技术的图形处理系统;
图2a是图示了1核GPU和10核GPU上理想化的图块工作负载分布的图;
图2b是图示了在图块工作负载的开销中具有小的变化的1核GPU和10核GPU上的图块工作负载分布的图;
图3示出了图形处理系统;
图4是使用图形处理系统来处理图形数据的方法的流程图;
图5a示出了绘制空间的图块集合;
图5b图示了绘制空间的图块集合的开销指示;
图6图示了当使用优先地首先填充空核的基于工作负载的调度方法时的6核GPU上的图块集合的执行的定时;
图7图示了当基于开销指示的调度方法被用于将这些集合分配给处理核时在6核GPU上的图块集合的执行的定时;
图8a图示了针对32×32采样位置的图块大小的在32个核上的工作负载分布;
图8b图示了针对16×16采样位置的图块大小的在32个核上的工作负载分布;
图9是另一示例中使用图形处理系统来处理图形数据的方法的流程图;
图10a示出了在第一示例中细分图块的处理;
图10b示出了在第二示例中细分图块的处理;
图11示出了其中实现图形处理系统的计算机系统;以及
图12示出了用于生成实施图形处理系统的集成电路的集成电路制造系统。
附图图示了各种示例。本领域技术人员将会理解,图中所图示的元素边界(例如,框、框组或其他形状)表示边界的一个示例。在一些示例中,可以将一个元素设计为多个元素,或者将多个元素设计为一个元素。在整个附图中,在适当的地方使用共同的附图标记来指示相似的特征。
具体实施方式
以示例的方式呈现以下描述,以使得本领域技术人员能够制造和使用本发明。本发明不限于本文描述的实施例,对于本领域技术人员来说,对所公开的实施例的各种修改将是显而易见的。
现在将仅通过示例的方式来描述实施例。
在图1所示的图形处理系统中,增加处理核的数量将易于在减少处理绘制的所有图块所花费的时间的方面改善图形处理单元的性能,因为图块的处理可以在处理核之间被划分。然而,增加处理核的数量易于增加GPU的大小(即硅面积)和GPU消耗的峰值处理能力。
图2a是图示了1核GPU和10核GPU上的理想化的图块工作负载分布的图。图2a中的垂直轴具有从绘制开始时间开始向下运行的时间。如果GPU 102使用单个处理核114来绘制绘制空间的所有图块,则块202表示由单个处理核执行的工作。在该示例中,绘制的结束时间在204处示出。在该理想化示例中,如果GPU 102使用十个处理核114来绘制绘制空间的所有图块,则块2060至2069表示由处理核执行的工作。在这个示例中,绘制的结束时间在208处被示出。在这个理想化的示例中,每个图块产生相同的处理开销,使得具有一个核的绘制时间是具有十个核的绘制时间的十倍长。
作为一个示例,考虑只由单个绘制构成的帧。这个绘制的大小可以是640×480像素,并且因此在该帧中可以有300个图块(布置为20×15的图块块),其中每个图块大小为32×32像素。如果所有的图块花费相同的时间“T”来处理,则一个集群GPU可能被期望花费大约300T的时间来完成绘制;而十个集群(cluster)GPU可能被期望花费大约30T的时间来完成绘制。因此,在这个理想情况下,在完成绘制时,十个集群GPU比一个集群GPU快十倍。应当注意,术语“集群”和“核”在本文中可以互换使用,两者均指代被配置为对进入数据执行处理操作的处理单元(包括诸如算术逻辑单元的处理部件)。此外,术语“帧”和“图像”在本文中可以互换使用。
然而,图2a所示的完美平衡工作负载很少会在真实图形工作负载中发生。即使当帧中的总工作负载保持不变时,如图2b所示,在每个块的工作中允许甚至是小的随机变化也可以显著地修改多个核上的帧的整体运行时间。图2b是图示在图块工作负载的开销中具有小的变化的1核GPU和10核GPU上的图块工作负载分布的图。在图2b中,三分之一的图块是“低开销”图块(显示为无影线的工作负荷),三分之一的图块是“中等开销”图块(用对角影线示出),而三分之一图块是“高开销”(用交叉影线示出)。图块的“开销”可以指处理图块花费的时间量(如在图2b中所示的示例中)。在其他上下文中,图块的开销可以涉及使用的处理资源的量、传送到存储器/从存储器传送的数据量、或用于处理图块的处理能力等。
在图2b中,如果GPU 102使用一个处理核114来绘制绘制空间的所有图块,则块212表示由单个处理核执行的工作。在这个示例中,绘制的结束时间在214处被示出,其与在图2a中示出的绘制的结束时间204相同。在该示例中,如果GPU 102使用十个处理核114来绘制绘制空间的所有图块,则块2160到2169表示由处理核执行的工作。在这个示例中,绘制的结束时间在218处示出。虚线208示出了图2a的理想化示例中的绘制的结束时间。当绘制的所有图块都被处理完毕后,绘制就完成了。在当前绘制可以开始执行之前,可能需要完成先前绘制,即在开始执行当前绘制的图块之前,当前绘制在等待先前绘制完成。在图2b中可以看出,当使用多个核时,图块的处理开销中的变化导致更长的绘制时间,即绘制的结束时间218在理想化绘制的结束时间208之后。绘制可以用于生成帧的像素值,使得完成绘制涉及将像素值存储在帧缓冲器中以表示帧,其然后可以以任意适当的方式(例如在显示器上显示、存储或发送等)被使用。在其他示例中,绘制可以不导致完成的帧,例如,绘制可以是可以在随后的绘制处理中使用的用于生成帧的子绘制。例如,子绘制可以是“绘制到纹理”,使得绘制的结果是纹理,然后可以将纹理应用于随后的绘制处理以生成图像。作为其他示例,子绘制可以是用于随后在绘制帧中使用的阴影图或环境图。
具有真实应用的GPU通常可以每个绘制运行许多图块(例如2000个图块),并且可以包含许多绘制(例如20个)。这给出了超过图2b所示的随机变化的范围之外的许多随机变化的范围。当图块被个体分配给特定的处理核时,可能存在在单个处理核上连续执行慢图块(即具有高处理开销的图块)的随机概率。在将多于一个空间相邻图块的组分配给处理核的系统中,可以存在比连续执行被分配给单个核的慢图块的随机概率可能更差的概率。如下面更详细描述的那样,这是因为慢图块通常对应于场景/对象的复杂区域,所以由于组中的图块在空间上相邻,所以如果组中的一个图块是昂贵的,则该组中的另一图块也将是昂贵的是可能。最慢的核代表绘制的限制因素,因此最后完成的核确定了执行绘制所花费的时间,以及通过扩展应用的帧率和硬件的效率。对数以千计的图块进行平均,可能预期随机分配方案将平均为相当良好的平衡,然而这往往是不正确的。针对此存在三个根本原因:
1)通过设计,基于图块的GPU通常旨在在相同集群上处理空间上的本地图块,以最大化高速缓存的效率。空间上的本地图块通常共享大量的数据,包括像纹理、指令、着色器等等的事物,这意味着从高速缓存一致性角度来看可以有利于将相邻的多个相邻图块保持在相同的集群内。这往往意味着在单个核上背靠背昂贵的图块的最坏情况调度不仅是可能的,而且是积极的加强。
2)诸如游戏等的图形应用中的工作负载通常不是跨帧均匀分布的。该帧的一些区域可能包含特别耗时计算的场景对象或效果(即,具有高处理开销)。常见的示例是半透明物体、穿透物体(具有由纹理或着色器定义的透明区域的物体)、需要将多个层混合在一起的效果、以及一些计算上昂贵、但是仅应用于场景的一些对象/区域的着色器效果。值得注意的是,穿透是一种技术,其中对象可以具有也可以不具有透明的区域,并且直到从纹理中计算或取回可见性的运行时才知道这些透明区域的存在或位置。一个常见的和非常昂贵的示例是树叶,其中叶子被绘制为由一个或多个图元表示的简单多边形(例如,矩形或三角形),叶子形状是通过使多边形的一些部分不可见而生成的,例如通过使一些图元片段在表示多边形的一个或多个图元内不可见。
3)如果存在剩余的其他图块太少以至于无法允许其他处理核在昂贵的图块的处理期间保持忙碌,则在绘制的结束时处理的昂贵的图块可能导致绘制所花费的时间的显著增加。允许这些其他核变得空闲是处理资源的低效使用,这增加了整个绘制的运行时间。
由于实时图形的性质,执行绘制的恒定流,并且运行时间的随机变化可能导致在向最终用户呈现的输出中创建结巴效果(stuttering effect)的不期望的效果。当屏幕以特定频率(例如60Hz)更新显示时,发生结巴。如果帧到帧的变化意味着在屏幕更新之前有时更新的帧是可用的(导致平滑的运动),但是在其他时间是不可用的(导致先前帧被重复),将会在最终输出图像存在可感知的结巴。
在本文描述的示例中,基于对不同的工作项目的开销估计来针对多核GPU的处理核来调度工作。具体地,对于绘制的每个图块,确定开销指示,然后基于开销指示来将图块分配给处理核。图块的开销指示指示或者至少启示了处理图块的开销。例如,开销指示可以指示处理图块的可能开销。以这种方式调度图块可以降低在绘制的结束附近开始高开销图块的处理的可能性。如上所述,开始处理绘制的结束附近的高开销块可能特别不利于整个绘制时间,因此减少这种发生的可能性可以改善(即减少)平均绘制时间。因此,具有较高开销指示的图块集合在具有较低开销指示的图块集合之前被优先调度。本文描述中,高开销指示意味着高处理开销,低开销指示意味着低处理开销。在一些示例中,用于一个或多个图块的集合的开销指示指示影响处理该一个或多个图块的集合的开销的一个或多个因素。
图3示出了可用于绘制3D场景的图像的图形处理系统300的一些元件。图形处理系统300包括图形处理单元(GPU)302和两个部分的存储器3041和3042。两个部分的存储器3041和3042可以是或可以不是相同物理存储器的一部分。GPU 302包括预处理模块306、分块单元308和绘制逻辑310,其中绘制逻辑310包括取回单元312、包括一个或多个处理核(3141至3146)的处理逻辑313、和包括一个或多个绘制队列318的调度逻辑316。绘制逻辑310被配置为使用处理逻辑313的处理核314来针对绘制空间的图块实现隐藏表面移除(HSR)和对图形数据(例如,图元片段)的纹理化和/或着色。分块单元308包括开销指示逻辑320。图形处理系统300还包括编译器322,其被配置为编译要在GPU 302上执行的程序(例如,着色器程序)。编译器322可以将编译的着色器程序写入中间存储器,其中GPU 302在运行时从中间存储器取回编译的着色器程序,但是为了简单起见,图3中未示出中间存储器。在图3所示的示例中,绘制逻辑310包括六个处理核3141到3146,但是在其他示例中,绘制逻辑310中可以包括任意合适数量的处理核,例如在1至256甚至更高的范围内。绘制逻辑310中的处理核的数量可以适应于适合图形处理系统的预期用途(例如,将用于对处理资源和硅大小具有严格约束的小型移动设备中的图形处理系统可以包括少量处理核(例如6个处理核),而对将在对处理资源和硅大小具有较小的严格限制的、诸如PC或服务器的大型设备中使用的图形处理系统可以包括较大数量的处理核(例如128个处理核))。
参考图4所示的流程图来描述图形处理系统300的操作。用于执行绘制的图形数据在GPU 302处例如从运行在与GPU 302相同的计算系统中的CPU上的游戏应用被接收。图形数据可以包括描述要绘制的场景中的对象的图元的图元数据。图形数据还可以指定要在图元数据上执行的一个或多个着色器程序以用于绘制图元。应当注意,指定位置的着色器(例如顶点着色器和几何着色器)在图元上执行;而指定图像将如何绘制的着色器(例如,像素着色器)在与覆盖像素的图元的一部分相对应的图元片段(或者更确切地说,覆盖采样位置)上执行。
在步骤S402中,编译器322编译与图元相关联的着色器程序并确定着色器程序的特征。所确定的特征包括表示着色器程序的复杂性的特征。具体地,特征被确定以便给出指示使用特定着色器程序处理图元的开销。例如,可以标识着色器程序的长度(例如要执行的操作的数量)。此外,如果着色器程序包含执行可变次数的循环,其中可变数量在运行时被确定,即在编译时不是已知数量,则着色器程序被标识为潜在的高开销。如果诸如这样的循环在运行时循环很多次,则这样的循环可能是非常昂贵的执行。作为另一示例,编译器可以确定着色器程序使用的资源、存储器读取或寄存器的数量,并将其用作与运行着色器程序相关联的处理开销的度量。举例来说,涉及大量从外部存储器采样的纹理中的采样的着色器可能比主要由算术指令组成的着色器要花费更长的时间。可以确定的其他特征包括着色器程序是否包括条件流程控制。
步骤S402可以在运行之前执行,即在离线处理中执行。例如,着色器程序可能在应用加载时被编译。具体而言,可以在绘制开始之前(例如,在分块阶段开始之前)以及在着色器与任意特定几何图形相关联之前编译着色器程序。然而,在其它示例中,在主绘制开始之前,例如响应于确定将使用着色器程序来处理图元,在运行时间期间编译着色器程序是可能的。编译器322可以标记可能存在于着色器程序中的大量可能昂贵的事物。编译器322被布置为将所确定的着色器程序的特性提供给分块单元308。编译器322被布置为将编译的着色器程序提供给绘制逻辑以在一个或多个处理核314上执行以用于处理图元。
由应用提供的图元序列可以在预处理模块306处被接收。在几何图形处理阶段,预处理模块306执行诸如包括剪切和剔除的几何处理的功能以移除不落入可见视图的图元。预处理模块306也可以将图元投影到屏幕空间中。从预处理模块306输出的图元被传递到分块单元308以进行如下所述的分块。
在步骤S404中,分块单元308确定哪些图元出现在图形处理系统300的绘制空间的每个图块内。分块单元308通过创建用于图块的控制流来将图元分配给绘制空间的图块,其中用于图块的控制流包括在图块内存在的图元的指示。控制流和图元从分块单元308输出并存储在存储器3041中。几何图形处理阶段(由预处理模块306和分块单元308执行)考虑跨整个图像的图元,即针对图像中的所有图块。然后在绘制阶段,绘制逻辑310绘制图像的图块并将针对经绘制的图块的输出存储在帧缓冲器的适当部分中,使得当图像的所有图块都被绘制时,帧缓冲器存储针对整个图像的经绘制的结果。在本文描述的示例中,在针对图像绘制图块之前在几何图形处理阶段中提供的、用于评估图像的所有数据的机会被用于确定可能对绘制阶段有用的关于图像的信息,例如,以提高绘制阶段的效率。在下面描述的示例中,基于在处理图块中将涉及的处理开销的估计,图块被调度用于由绘制逻辑进行处理。这可以减少在绘制的结束附近调度高开销图块的可能性。
在步骤S406中,开销指示逻辑320确定绘制空间的图块的开销指示。如上所述,图块的开销指示暗示了处理图块的开销。开销指示逻辑可以至少部分地基于在步骤S402中由编译器322确定的着色器程序的确定的特性来确定开销指示。此外,一般如下所述,可以针对一个或多个图块的集合确定开销指示,即可以针对图块确定开销指示和/或可以针对图块集合确定开销指示。为了简单起见,本文的一些解释是指存在图块的开销指示,但是通常应当理解,该解释可以扩展到具有用于图块集合的开销指示。
开销指示在不同的示例中可能会有所不同。在一些示例中,用于图块的开销指示可以是当由绘制逻辑310处理图块时将引起的处理开销的估计。如上所述,处理开销可以是处理时间的长度、所执行的计算操作的次数、所消耗的处理能力、从/向存储器读取/写入的次数、或处理图块的开销的任意其它合适度量。然而,在一些示例中,图块的开销指示可能不是处理开销的直接估计。一个或多个图块的集合的开销指示可以基于一个或多个图块的集合的内容。一个或多个图块的集合的开销指示可以基于影响处理该一个或多个图块的集合的开销的一个或多个因素。例如,开销指示可以是存在于图块中的许多图元。图块中该许多图元不是处理图块的开销的直接估计,而是表示处理图块中可能涉及的近似处理开销。例如,图块中的大量图元可能建议该图块将导致更大的处理开销。在广义上,图块的开销指示可以是建议处理图块的开销的任意参数,即提供用于区分图块的可能的处理开销的一些度量的参数。进一步指出的是,开销指示可能并不总是准确地反映处理图块的真实处理开销,但是它们的目的在于提供比在完全不确定开销指示时针对图块的处理开销的更好指示。
在简单的示例中,图块的开销指示是图块中存在的图元的数量。与相对较大数量的图元重叠的图块倾向于比具有相对较少数量的图元的图块导致更大的处理开销,因此图块中图元的数目是有用的开销指示,即使它并不总是反映绘制图块的准确的实际处理开销。此外,在图块单元308中,图块中的图元的数量是非常易于计算的,因为它可以直接从图块的控制流中观察到,即,在分块阶段的结束处的图块的控制流中包括的图元标识符的数目指示该图块中的图元的数目。所以在这个示例中,开销指示逻辑320不会给分块单元308增加很大的复杂性。
在稍微更复杂的示例中,开销指示逻辑320通过组合与存在于图块中的图元相关联的分数来确定图块的开销指示。与图元相关联的分数可以取决于对象类型,该图元是对象的一部分。例如,与不透明对象类型相关联的图元可能在绘制逻辑310中相对简单地进行处理,因此这些图元可能与低分相关联;而与其他对象类型相关联的图元(例如半透明或穿透对象类型或允许图元在绘制期间改变它们的深度的对象类型)可能在绘制逻辑310中相对复杂地进行处理,因此这些图元可能与高分相关联。具体而言,这些更复杂的对象类型(例如半透明和穿透以及允许对象在绘制期间改变深度的类型)的绘制可以利用混合或在绘制逻辑310中需要多次遍历的其他操作来解析由这些图元覆盖的像素。例如,与不透明对象类型相关联的每个图元可以被赋予1分,与半透明或穿透对象类型相关联的每个图元可以被赋予10分,并且在绘制期间可以改变深度的每个图元可以被赋予8分。这反映了在不同类型图元的处理开销中的可能的差异。图块中的图元的分数可以相加,或以另一种方式组合,以提供图块的开销指示。在不同的示例中,不同对象类型的分数可能与本文所描述的不同。
曲面细分(Tessellation)是一种允许在绘制期间将图形数据项(可以被称为“补丁”)扩展到许多图元中的技术。曲面细分对于表示复杂的(例如弯曲的)表面而言可能是有用的,但是可能导致大量的图元被绘制。图块的开销指示可以基于是否将曲面细分应用于图块中的补丁。作为示例,如果图块包括要被曲面细分的补丁,则图块的开销指示可以取决于由补丁的曲面细分产生的三角形的数量。
在其他示例中,开销指示可以以不同方式确定。例如,当确定图块的开销指示时,可以考虑图块中的图元的图块覆盖区域。图元的图块覆盖区域指示该图元可在图块内是可见的采样位置的数目,并且因此提供当在绘制逻辑310中处理图块中的图元时将被执行的处理量的指示。在一些示例中,用户可以提供用户输入来指导图块的开销指示的确定。在这个意义上,开销指示逻辑320可以经由输入接收用于图块的开销指示。例如,用户可以能够例如经由API扩展来直接指定图块的开销指示,以允许开发者使用与特定图块相关联的工作负载的先验知识来明确地提供图块开销以确保高效的性能。
驱动器机制可以将来自编译器322的信息传递给分块单元308,并且该信息可以包括由编译器322确定的着色器程序的特性。可选地,驱动器可以希望被用来标记必须被重新生成的几何图形(例如,诸如几何着色器和曲面细分着色器的流水线阶段可用于扩展图元以创建多个图元),并且在一些图形处理系统中,经扩展图元不在几何图形处理阶段之后存储,并且在绘制阶段使用之前必须被再生。类似地,驱动器也可以提供关于频率的信息,在该频率3D阴影将被执行,例如绘制阶段可能以更高的像素速率或更高的采样/片段速率绘制,这是更昂贵的过程。因此,该信息对于用于确定开销指示的开销指示逻辑320可能是有用的。
上述示例涉及与当前绘制的处理相关的因素,其可用于估计用于绘制绘制的不同图块的可能的处理开销。除了这些因素之外,开销指示逻辑320可以确定先前绘制(例如紧接在前的绘制,例如先前帧)的图块的处理开销(预测开销或实际开销),并且可以将它们用作确定针对当前绘制的图块的开销指示的因素。如果帧序列中的两个帧在序列中彼此靠近,例如如果它们是连续的帧,则帧序列中的两个帧可能是相似的,除非存在场景改变或内容突然改变。因此,先前帧中的特定图块的处理开销提供了当前帧中对应图块的处理开销的良好指示。不同帧中的“对应的图块”可以是在绘制空间内的相同位置的图块,或者可以相对于彼此移位例如表示场景中的内容的运动的量(例如,由运动矢量表示)。
为了总结上面描述的一些示例,开销指示逻辑320可以基于以下因素中的一个或多个来确定用于绘制空间的图块的开销指示:(i)图块中的图元的数量;(ii)与图块中的图元相关联的对象类型;(iii)图块中的图元的图块覆盖区域;(iv)将被执行用于在图块中绘制图元的一个或多个着色器程序的特性;(v)用户输入;以及(vi)先前绘制中对应的图块的处理开销。然而,显而易见的是,在其他示例中可以使用其他因素来确定开销指示。开销指示逻辑320可以基于多个因素例如根据任意合适的组合来确定用于图块的开销指示,所述合适的组合可以或者不可以加重支持一个因素而不是另一个因素。
如上所述,着色器程序的特性可以包括以下一个或多个:(i)着色器程序的长度;(ii)着色器程序所使用的资源或寄存器的数量;(iii)着色器程序是否包括有条件的流程控制;(iv)着色器程序是否包括循环,针对该循环编译时重复次数未定义;以及(v)着色器程序中使用的存储器读取和/或写入的数量。
如上所述,可以为一个或多个图块的每一个集合确定开销指示。可能是以下情况:一个或多个图块的每一个集合包括相同数量的图块。在一些示例中,一个或多个图块的集合各自包括单个图块。在其他示例中,一个或多个图块的集合各自包括多个图块。图块集合可以是绘制空间的图块块(例如,连续图块)。本文使用术语图块的“块”来指代多个空间上局部的或相邻的块。具体而言,一个或多个图块的集合可被布置为将图块集合的分配与绘制逻辑310中的处理核314进行匹配。例如,如果单个图块一次被分配给处理核314中的特定处理核,则该图块集合可以包括单个图块。然而,如果一次将多个图块的块(例如,2×2、4×2或4×4图块块)分配给处理核314中的特定的一些核,则这些图块集合可以包括对应的图块的块。如下所述,从高速缓存一致性角度来看,将图块的块分配给处理核314而不是将个体的图块分配给处理核314可能是有效的。
开销指示逻辑320可以量化开销指示。具体地,量化的开销指示可以被量化以由多个比特来表示,比特的数量在1到8的范围内。在极端的示例中,量化的开销指示各自具有单个比特,使得它们充当指示图块是高开销图块或低开销图块的标志。即使当开销指示量化到这种程度时,开销指示的使用针对调度图块的处理可能是有用的,因为其将易于在避免这种情况:高开销图块被调度用于在绘制的结束附近处理,如上所述可能导致绘制时间的特别长的延迟。量化开销指示减少了用于存储开销指示的数据量,并且如下面在一些示例中所解释的,通过减少其中实现的优先级队列的数量来简化调度逻辑316。
在步骤S408中,分块单元308在针对要被存储在存储器3041中的图块的控制流中包括所确定的开销指示。例如,分块单元308可以将所确定的开销指示包括在尾指针高速缓存中,其包括到用于相应图块的图元ID列表的末端的指针。在处理分块单元308中的绘制的几何图形的结束处,指针可以被包括在用于绘制空间的图块的尾部指针高速缓存中,并且此时开销指示逻辑320已经确定了图块的开销指示,所以这是一个很好的机会来将开销指示增加在控制流的适当位置,而不必显著地改变分块单元308的操作。在几何图形处理阶段结束时,用于图块的控制流(包括开销指示)被存储在存储器3041中。
在绘制阶段中,调度逻辑316接收用于当前绘制的绘制空间的图块的控制流。调度逻辑316被示出为是绘制逻辑310的一部分,但是在其他示例中,调度逻辑316可以被认为是图块定序器,该图块定序器在绘制逻辑310之外起作用并且确定要由绘制逻辑310处理的图块的顺序。在一些示例中,调度逻辑可以被实现为取回单元312的一部分。
在步骤S410中,调度逻辑316执行控制流的预先通过,以便于分析用于图块的开销指示以将图块分配给处理核314。以此方式,调度逻辑根据开销指示将一个或多个图块的集合分配给用于绘制的处理核。例如,调度逻辑316可以按照取决于开销指示的顺序将用于绘制的一个或多个图块的集合分配给处理核314。在另一示例中,调度逻辑316可以将具有最高开销指示的一个或多个图块的多个集合分配给不同的处理核314,从而在处理核314之中分配具有最高开销指示的图块集合。
在本文描述的示例中,调度逻辑316按照在相对低开销的图块之前执行相对高开销的图块的顺序调度图块集合用于在处理核314上进行处理。这是可能的,因为在基于图块的系统中,每个图块独立于所有其他图块被绘制。例如,调度逻辑316可以为处理核314中的每一个维护绘制队列318,以指示哪个图块将由相应的处理核314处理,以及它们将被处理的顺序。
调度逻辑316可针对每个不同的开销指示值形成用于图块的集合的优先级队列(不同于绘制队列318)。当开销指示已被量化以使得存在少量不同的开销指示值时,这尤其适用。将一个或多个图块的集合分配给处理核,用于按照根据优先级队列的内容的顺序进行绘制。例如,如果开销指示量化为2位值,则存在四个不同的量化开销指示值(0、1、2和3),因此调度逻辑316维持四个优先级队列。具有量化开销指示值为0的图块集合的指示被存储在优先级队列0中;具有量化开销指示值为1的图块集合的指示被存储在优先级队列1中;具有量化开销指示值为2的图块集合的指示被存储在优先级队列2中;并且具有量化的开销指示值为3的图块集合的指示被存储在优先级队列3中。当调度逻辑316来调度图块集合用于处理时(例如,通过将一个集合增加到与处理核314之一相关联的绘制队列318中),调度逻辑316将选择在优先级队列3中被标识的集合,除非优先级队列3是空的,在这种情况下,调度逻辑316将选择在优先级队列2中被标识的集合,除非优先级队列2是空的,在这种情况下,调度逻辑316将选择在优先级队列1中被标识的集合,除非优先级队列1是空的,在这种情况下,调度逻辑316将选择在优先级队列0中标识的集合,除非优先级队列0是空的,在这种情况下,不存在更多的集合来调度。
在步骤S412中,绘制逻辑310根据确定的调度来使用处理核314绘制图块。步骤S410和S412可以同时执行,使得在处理核绘制其他、先前分配的图块集合时,图块集合被分配给处理核。如上所述,在这个示例中,特定图块的处理由处理核314中的单个处理核来执行,即图块的处理不在多个处理核314之间划分。这有助于通过减少在处理核314之间传送数据的需要来提高高速缓存一致性和处理效率。步骤S412涉及取回单元312取回用于绘制图块的图元数据并且将数据提供给处理核314中的适当的处理核314(基于由调度逻辑316确定的调度)。处理逻辑313使用处理核314来对图块的图元数据执行操作以便绘制图块。处理逻辑313包括用于使用处理核314来执行图元数据的处理的诸如寄存器、高速缓存、控制逻辑等的其他组件(图3中未示出)。高速缓存可以在处理逻辑313中使用以存储由处理核314所使用的数据。可以使用任意合适的高速缓存结构(例如,多级或单级),并且具体地,可以存在耦合到至少一个处理核314但不是全部处理核314的一些高速缓存。为了给出一些示例,每个处理核314可以具有其自己的专用高速缓存,或者处理核中的每一对可以具有其自己的专用高速缓存。
处理逻辑313可执行延迟绘制,使得对图元执行隐藏表面移除以移除被隐藏而不被场景中其它图元查看的图元片段,然后在隐藏表面移除已被应用到那些图元片段之后,纹理化和/或着色被应用到图元片段。纹理化通常涉及从存储器读取纹理数据并将纹理应用于图元片段以便于确定所绘制的图元片段的颜色值。着色通常涉及在图元片段上执行着色器程序以将视觉效果增加到图元片段的绘制。这些着色器程序是由编译器322编译并提供给绘制逻辑310的上述着色器程序。执行隐藏表面移除、纹理化和着色的方法是本领域已知的,因此这些方法的细节未被本文详细描述。
在其他示例中,处理逻辑313可以执行非延迟绘制,使得将纹理化和/或着色被应用于图元片段,然后对经纹理化/着色图元片段执行隐藏表面移除以移除被隐藏以不被场景中的其他图元查看的图元片段。非延迟绘制方法可能比延迟绘制方法效率低,因为它们涉及最终隐藏在场景中的图元片段的不必要的着色和纹理化。
上面描述的延迟绘制和非延迟绘制系统都实现了曲面细分技术来绘制图元数据。在其他示例中,可以在绘制逻辑中使用其他绘制技术,例如射线跟踪技术可以被用于绘制图元数据。射线跟踪技术在本领域是已知的,因此本文不详细描述实施射线跟踪绘制技术的细节。
在步骤S414中,存储绘制的结果。例如,如果绘制的结果是帧,则绘制的帧可以被存储在存储器3042中。绘制的帧可以以任意合适的方式被使用。例如,可以在显示器上显示经绘制帧。经绘制帧可以被例如通过诸如因特网和/或移动电话网络的网络发送到另一设备。如果绘制是子绘制,则绘制的结果可以用于后续绘制,例如,子绘制的结果可以是将在后续绘制中应用的纹理、阴影图或环境。在这种情况下,绘制的结果可以被存储(例如存储在存储器3042中),并且随后被提供回绘制逻辑310以用于随后的绘制。备选地,绘制的结果可以被存储在GPU 302本身上。
现在参照图5a至图7描述示例。图5a示出具有896×512个像素的绘制空间502。每个图块是32×32像素块,使得如图5a所示,绘制空间502具有28列和16行图块。如图5a中的粗线所示,图块被组合在一起成为4×4块,其中每个图块的4×4块将由特定处理核314处理。通过在相同处理核上处理的图块的4×4块,处理核314使用的处理逻辑313中的高速缓存的高速缓存命中率可以被改善,因为与一个图块相关的图元数据更可能与附近(例如,相邻)图块相关,而非与绘制空间的遥远的图块相关。
在这个示例中,开销指示逻辑320通过确定开销指示或通过如上所述的经由API接收开销指示来获得绘制空间中的每个图块的开销指示。然后基于相应集合内的图块的开销指示针对4×4的图块集合中的每一个确定开销指示。为了给出一些示例,开销指示逻辑可通过确定以下各项来确定图块集合的开销指示:(i)该集合内的图块的开销指示的平均值,(ii)在该集合内的图块的开销指示的总和,(iii)该集合内的图块的开销指示的最大值,或(iv)该集合内具有高于阈值的开销指示的图块的数量。在其他示例中,集合内的图块的开销指示可以以其他方式组合以确定作为整体的该集合的开销指示。此外,在一些示例中,针对图块集合确定开销指示,而不首先确定集合内个体的图块的个体开销估计。
图5b显示了图5a中所示的图块的4×4集合的开销指示。在该示例中,针对每个图块确定开销指示,然后通过组合该图块集合内的个体图块的开销指示来确定图块的4×4集合的开销指示(例如,通过找到个体开销指示的总和),然后将开销指示量化为4位值。4位值在0至15的范围内。可以看出,在绘制空间502的右下方附近存在绘制相对昂贵的区域,例如因为该区域中的图形内容特别详细(例如在该区域中的大量图元,这可能涉及半透明或穿透图元)或用于绘制该区域的效果需要复杂的着色器程序。举一些示例,场景中的叶子、烟雾、火焰或其他粒子系统的区域的绘制可能是昂贵的。相反,绘制空间502的左上区域的绘制并不昂贵,例如因为这个区域中的图形数据是简单的,例如这个区域可以表示场景中具有很少细节的简单背景。
每组图块将被一个处理核完全处理,并且在这个示例中,图块集合的开销指示指示完成图块集合中的每一个的处理所花费的相对时间。如果要将图块集合将被分配给处理核,则简单的调度器可以依照跨核中的每一个的循环方案(round robin scheme)依次以光栅扫描顺序指定图块集合。
对这种循环调度方法的改进是优先将工作调度到处理具有最少排队工作的处理核。这种调度方法在本文被称为“基于工作负载的调度方法”。例如,调度逻辑316可以根据队列的占用情况在绘制期间将图块集合添加到处理核314的相应绘制队列。图6示出了当使用基于工作负载的调度方法时,6核GPU上的图块集合的执行的定时,其优先将工作调度到具有最少排队工作的处理核。在图6所示的简化示例中,图5b所示的图块集合的量化开销被用于表示实际处理时间。图6中所示的示例不使用开销指示来调度图块的绘制。图6所示的示例是一个简化的示例,以辅助当处理核变为空闲时在其中图块集合被分配给特定处理核的系统内的调度的解释。在这个简化的示例中,绘制队列是不必要的。然而,在更复杂的系统中,绘制队列用于存储在核准备好处理它之前分配给核的工作。例如,当处理核正在处理图块集合但在其相应的绘制队列中没有排队的图块集合时,则图块集合可以被调度给该核并被添加到相应的绘制队列。以这种方式,调度的操作比如果当处理核变为空闲时,图块集合被调度用于在该处理核上执行而稍微次优。然而,通过在绘制队列中为每个核排队至少一个图块集合,则可以实现一些处理效率,例如在由处理核处理的第一图块集合块已经完全完成之前,数据可以被取回并准备用于第二图块集合,使得处理核可以在完成对第一图块集合的处理时立即开始处理第二图块集合。
图块集合以光栅扫描顺序被分配给处理核,因此最初将来自绘制空间的顶行的前六个图块集合(图块0,0至5,0)分配给六个处理核3141到3146。如图6所示,图块集合花费一定的时间来处理,以匹配集合的相应开销指示。当处理核完成处理图块集合时,根据光栅扫描的下一图块集合被分配给该处理核(例如,当第一图块集合0,0已被处理时,在时间2之后,集合6,0被分配给处理核3141)。当处理核完成图块集合的处理时,根据光栅扫描下一行图块集合(图块集合0,1到6,1)被分配。该调度如图6所示继续,直到在时间31之后,用于当前绘制的绘制空间502中的所有图块集合已经被处理。因此,根据这个调度方案,绘制在31个时间间隔之后完成。时间间隔可以表示任意合适的时间量或时间量的指示(例如数千个时钟周期)。图6中的阴影线区域指示处理核空闲的时间。在这个示例中,用于绘制的处理核总共有31个空闲时隙。注意的是,在本文描述的示例中,在当前绘制已经完成之前,后续绘制不由处理核开始进行处理。因此,这31个空闲时隙在图形处理系统中表现为低效率,这可能给图形处理系统执行的绘制增加延迟。
如图6所示的基于工作负载的调度方案比简单的循环调度方案更好(在绘制效率方面),但是当由于不同图块的处理中涉及的工作量不同而造成处理核空闲(由阴影线区域示出)时仍然存在一些低效率。图6示出了低效率的量(即,空闲时隙的数量)很大程度上取决于在绘制昂贵/慢的图块集合多晚被接收到以及图块的处理开销的变化量。这些参数在运行时间之前是未知的,并取决于应用在运行时间提交的用于绘制的图像。
图7示出了当使用基于开销指示的调度方法来将集合分配给处理核时,在6核GPU上图块的集合的执行的定时。使用关于哪些图块集合可能是昂贵的知识可以用于首先调度最昂贵的图块,并且使用相对廉价/快速的图块组来填充绘制中稍后的间隙。调度不遵循光栅扫描;相反,当图块集合由于被分配给处理核(例如,因为处理核完成图块集合的处理),然后从尚未被分配给处理核的该绘制的图块集合中选择图块的集合时,所述选择基于所述图块集合的开销指示,而不是所述图块集合在所述绘制空间中的空间位置。例如,具有剩余图块集合的最高开销指示的图块集合被分配给处理核。这导致如图7所示的处理核314的整体更高效的使用,图7示出了与图6中相同的图块的处理,但是这次绘制在27个时间间隔之后结束,具有更少的空闲时隙。与图6中的31个空闲时隙相比图7显示了仅7个空闲时隙。因此,与利用图6所示的调度相比,利用基于开销指示的调度的绘制更快地完成。因此,基于开销指示的调度可以提供更高效的绘制处理。与图6的调度相比,通过图7的调度实现绘制时间的13%的减少,在示例中示出为绘制时间的减少取决于工作负载(昂贵图块的存在和分配)以及系统中处理核的数目。示例3D游戏和基准(benchmark)内容已经示出了总体帧绘制时间从0到30%范围内的减少(与图6中示出的基于工作负载的调度相比),一些异常值具有更高的减少量。特别是如果图形处理系统300实时绘制帧以用于实时显示给用户,并且特别是如果图形处理系统300在处理资源在严格约束下的设备上(例如在诸如智能手机或平板计算机的移动设备上)实现时,这可以是非常显著的改进。图7中所示的示例以与图6中所示的示例类似的方式进行简化,其中在处理核变为空闲时调度图块集合,使得绘制队列不被使用,但是应当理解,在更复杂的示例中,绘制队列可以用调度方法来实现,该调度方法基于开销指示将图块集合分配给处理核。
如上所述,即使图块的开销指示不能完美地指示处理图块的实际开销,使得较早调度较廉价的图块,系统仍将保持比传统方法更平衡,因为系统将在其周围进行重新平衡。所以,开销指示不需要被完美地估计,从而在减少用于绘制的绘制时间方面生成良好的结果。抓住所有昂贵的图块并且意外地包括结果是比预期更廉价的图块比保守地标识昂贵的图块要更好。
在参照图5a至图7描述的示例中,调度逻辑316基于图块集合的开销指示将图块集合分配给处理核314。此外,调度逻辑316可以确定特定图块集合内的图块的处理顺序。例如,可以以光栅扫描顺序或二维矩形顺序(boustrophedon order)、或者根据莫顿顺序(可以被称为Z顺序)、或者根据保留在连续处理的图块之间的空间位置的空间填充(filing)曲线来处理特定的图块集合内的图块。合适的空间填充曲线可以包括皮亚诺曲线和希尔伯特曲线以给出两个示例。在一些示例中,特定的图块集合内的图块可以基于该特定集合内的图块的开销指示的顺序被处理。
在上述示例中,一个或多个图块的集合的开销指示被用于调度用于由处理核314绘制的一个或多个图块的集合。通常,用于一个或多个图块的集合的开销指示可以被用于调度在一个或多个处理核上的一个或多个图块的集合的处理。在一些示例中,当选择要处理的下一个图块或图块集合时,调度逻辑316可以使用开销指示和距先前调度的图块(例如,为处理核314处理或调度的最后一个图块)的距离的组合,以在高速缓存一致性和调度优化之间找到平衡点。这些因素的相对重要性可能随着绘制的进行而变化。
由一个或多个处理核执行的处理可以如上述示例中那样进行绘制,或者可以是诸如视频编码的其他处理。在上述示例中,调度尝试避免在绘制的结束附近开始昂贵的图块的处理。在上述示例中,针对特定图块的调度决定不会改变特定图块被随后绘制的方式。
然而,在其他示例中,开销指示可以用于其他目的。例如,当帧已经被绘制时,可以将其传递给视频编码器,视频编码器根据视频编码技术对帧进行编码。编码的视频数据通常是帧的压缩表示,其适于传输(例如,用于在其上显示的显示器)和/或用于存储。作为视频编码的一部分,可以为帧的编码区域选择量化级别。在上述示例中确定的不同图块的开销指示可以用于帮助视频编码器选择合适的量化水平以用于对不同的图块进行编码。举例来说,可将一个或多个图块的集合的开销指示提供给具有所绘制的图像数据的视频编码器。
在其他示例中,可以使用开销指示来改变处理不同图块块的方式,例如,图块块被绘制的方式。举例来说,高开销指示可指示图块中存在许多细节(例如,当开销指示代表图块中的图元的数目时),在这种情况下,这些图块可以以更高级别的细节绘制(例如,可以在栅格化技术中处理每个像素的更多采样位置,或者可以在光线追踪技术中针对每个像素处理更多的光线)。替代地,如果在处理图块的定时上存在实时约束,则具有大量细节的图块(如由开销指示所指示)可以用较低级别的细节来处理,以确保它们及时被处理,以用于满足实时约束。例如,可以根据显示器的光栅扫描技术来绘制和直接显示图像。在这个示例中,每个图块可以具有绝限,通过该绝限每个图块必须被绘制以在显示器的光栅扫描继续进行时实时显示。如果图块在绝限之前未被绘制,则该图块可能无法在当前帧中被显示,其可能导致所显示的图像中出现结巴(shutter)效果。开销指示提供关于处理图块将要多久的指示,并且因此可以用于改变绘制图块的细节的级别,目的在于确保每个图块在其绝限之前被绘制以用于向显示器提供经绘制的图块。
通常,被配置为使用被细分成多个图块的绘制空间来处理图形数据的图形处理单元可以包括:一个或多个处理核,被配置为处理图形数据;开销指示逻辑,被配置为获得所述绘制空间的多个一个或多个图块的集合中的每一个的开销指示,其中所述一个或多个图块的集合的所述开销指示建议处理所述一个或多个图块的集合的开销;以及调度逻辑,被配置为根据所述开销指示来调度,所述一个或多个图块的集合用于在所述一个或多个处理核上进行处理。
在可能不基于图块的开销指示来调度图块的一些示例中,调度逻辑316可以细分用于绘制的一个或多个图块以形成用于绘制的较小的子图块。如下面详细描述的,在某些情况下,这可以帮助减少绘制的总绘制时间。例如,将昂贵的图块细分为子图块可以允许跨多个处理核进行更公平的工作分配。这种方法的应用对于每个绘制的结束是特别有益的,并且是在简单地减小所有绘制中的图块大小的情况下的改进。每个图块的开销直接取决于图块的大小,即较在其中小的图块在具有较少的总体工作,因此完成得更快。长时间运行的任务向绘制的结束调度的问题被减少,并且工作分组的较小大小固有地允许使用简单/常规的调度器进行更好的负载平衡。
图8a和8b提供了具有较小图块块大小的图示可以减少绘制的绘制时间的图示。图8a示出了在图形处理系统中由32个处理核(表示为802)完成的工作,用于使用大小为32×32像素的图块来绘制帧。对于每个处理核,黑线显示当处理核处于活动状态时,作为在图示中垂直向下增加的时间的函数。在图8a和8b中所示的示例中,根据图块的开销指示,图块还没有被调度用于绘制,并且因此具有高处理开销的图块可以被分配给接近绘制的结束的处理核。相反,在图8a和8b所示的示例中,根据循环调度方法来分配图块,该循环调度方法优先将工作调度到具有排队最少的工作的处理核(类似于图6中所示和上面描述的示例)。由于在图8a所示的示例中图块相对较大,如果涉及诸如大量半透明图元或例如长着色器程序的执行的大量昂贵的处理,在处理图块中涉及的工作可能相对较大。因此,在图8a中可以看出,一些处理核在绘制的结束处正在忙于地处理昂贵的图块,而其他处理核是空闲的,因为它们已经完成处理分配给它们的图块并且没有更多的图块可以分配给他们。绘制在时间804完成。
图8b示出了当绘制与图8a相同的帧时由图形处理系统中的32个处理核(表示为806)所完成的工作,但是这次使用大小为16×16像素的图块(即,图8a的示例中的图块大小的四分之一)。因为图块较小,所以每个个体的16×16图块涉及比个体32×32图块更少的处理,所以最昂贵的16×16图块比最昂贵的32×32图块花费更少,使得在绘制的结束附近被调度的昂贵的图块不花费长时间进行处理。绘制在时间808处以16x16图块完成。可以看出,时间808比时间804早。这说明在该示例中,与32×32图块相比,用16×16图块的绘制的总绘制时间更短。减小到16x16图块的大小有三个主要的效果:
1)工作分布跨处理核变得更加平衡(每个图块中有1/4的像素数量,所以最差情况下的慢图块可能是长度的1/4)。
2)16x16图块大小的绘制完成更早,因为32x32图块的高达40%的运行时间正在瓶颈/浪费等待慢速运行的少量图块。
3)在绘制中的工作总体上增加了,因为较小的图块大小是低效的(仅在一个图块中的图元现在可以出现在四个图块中,因为它们覆盖相同的屏幕区域)。这在图8a和图8b中可以看出,因为跨所有的处理核,用16x16图块比用32x32图块执行更多的处理(即,图8b中的黑线的面积大于图8a中的黑线的面积)。
这第三点意味着更小的图块可能意味着执行绘制的更大量的处理,这可能增加处理能力。这是为什么不总是有利于继续减少图块的大小的原因。
在当其他处理核处于空闲状态时,某些处理核仍然在处理图块的情况下,无效发生,因为他们已经完成处理分配给他们的当前绘制的图块。在绘制的结束时工作负载的不均衡越大,GPU核的效率/利用率越差,即处理核处于空闲状态的时间越多。该问题仅在绘制的结束时出现,因为尽管在大多数绘制过程中不同的图块可能涉及不同的工作量(即,对于不同的图块的处理开销可能不同),但调度逻辑316所使用的基本调度策略仍然在大多时候将工作分配给处理核314用于高利用率。在一些示例中,图块可以在绘制的结束附近但是不在绘制的开始附近被细分为更小的图块,因为它仅在绘制的结束时出现更大图块的问题。此外,这意味着在绘制开始附近的图块可以具有更大的图块大小,这在减少涉及处理绘制空间的区域的处理量方面是有利的。换句话说,朝向绘制的结束改变有效的图块大小,其中负载平衡最有利而不会导致跨整个绘制减小图块大小的一般代价。
此外,可能期望可选地将图块的细分仅应用于展示从绘制的结束实质上“突出(stick out)”的任务的那些绘制。如果任务在特定的处理核上执行了大量的时间,而其他处理核处于空闲状态,因为不再需要处理绘制的任务,则任务从绘制的结束实质上“突出”。绘制器是否展现这样的任务可以以几种方式确定,例如基于使用先前帧信息的启发式,使用以上通过开销指示逻辑320概述的任意方式生成的开销指示,或者基于仍然在当前绘制中被处理的图块的阈值数量,其中该阈值数量可以是固定的,或者可以与GPU中的处理核的总数或者GPU中的空闲处理核的数量有关。是否细分图块的决定可以基于仍然要调度的图块的数量(N)并基于空闲核的数量(M)。
图9是涉及细分图块的方法的流程图。几何图形处理阶段可以与以上参照图4描述的示例相同。换句话说,步骤S902至S908可以与上述步骤S402至S408相同,尽管在该示例中图块的开销指示的使用是可选的,所以在一些示例中可能不执行步骤S906和S908。
应当注意,图4和9中的流程图中所示的步骤可以按顺序发生,或者一些步骤可以同时执行,即并行执行。此外,这些步骤不一定以图中所示的顺序发生。
调度逻辑316确定如何将图块分配给处理核314,即如何将图块调度用于在处理核314上进行绘制。根据本文使用的术语,通过将图块分配给处理核进行绘制,可以调度图块用于在处理核上绘制。在步骤S910中,调度逻辑316确定哪些(如果有的话)图块将被细分用于当前绘制。例如,调度逻辑316可基于与先前绘制中的对应图块的处理开销有关的信息来确定要针对当前绘制细分哪些图块。如果先前绘制中的图块(例如,正在绘制的一系列帧中的直接先前帧)特别昂贵地处理(例如,因为它包括具有诸如半透明或穿透的对象类型的许多图元或因为图块的处理涉及长着色器程序的执行),则调度逻辑316可以确定针对当前绘制细分该块将是有益的。作为另一示例,如果图块在先前的绘制中被细分,则调度逻辑316可以确定图块也应当在当前的绘制中被细分。
作为另一示例,调度逻辑316可以基于还在当前绘制中仍被绘制的图块的数量与图块的阈值数量之间的关系来确定针对当前绘制要细分哪些图块。以这种方式,调度逻辑316可以确定图块仅在它们在绘制的结束附近时才被细分。调度逻辑316可以还基于所述处理核的数量来确定针对当前绘制哪些图块要细分。例如,如果存在更多的处理核,则被认为是“接近”绘制的结束可能意味着图块的阈值数量增加。
作为另一示例,调度逻辑316可以基于图块的开销指示来确定针对当前绘制哪些图块要细分。例如,只有昂贵的图块可能被细分,因为这些图块可能导致绘制被延迟,而一些处理核在绘制的结束时是空闲的。开销指示可以如上所述由开销指示逻辑320确定,并且可以如上所述被量化。
调度逻辑316可以使用度量来确定要为当前绘制细分哪些图块。例如,调度逻辑316可根据度量来细分图块,根据该度量,如果与图块相关联的开销指示增加,则图块被细分的可能性增加。替代地或另外地,调度逻辑316可根据度量来细分图块,根据该度量,如果当前绘制的仍然要被绘制的图块的数量减少,则图块被细分的可能性增加。替代地或附加地,调度逻辑316可以根据度量来细分图块,根据该度量,如果处理核的数量增加,则图块被细分的可能性增加。该度量可以考虑一个或多个因素,以允许调度逻辑316做出关于要细分哪些图块的决定。
步骤S910,用于确定要细分哪些图块可以在一个通道中预先执行,该通道决定所有将要处理的图块以及如何处理。在一些示例中,可以将细分处理作为每个图块上的循环来执行,使得对于每个图块,读取开销估计值并且作出关于图块是否应当细分的决定,然后循环继续执行以处理下一个图块。
在步骤S912中,调度逻辑316将细分在步骤S910中被确定为用于细分的图块。图块可以被细分成任意合适数量的图块,例如图块可以被细分成两个半个图块或四个四分之一个图块。例如,一个32x32的图块可以细分为四个16x16的子图块。没有要求系统限于模2值,所以图块可以被细分成例如三个子图块。类似地,不要求细分必须在处理核之间均等地细分图块。例如,包括32×32像素的图块可以被划分为五个空闲核。如果图块在核之间被平均划分,则将导致每个图块为204.8个像素。在实际的系统中,可以向不同的核提供略微不同的大小的子图块,例如使得每个核接收(可能是矩形的)像素块来进行处理,而不是在多个子图块中绘制相同的像素。尽管将图块细分成大小和形状相同的子图块可能会更简单,但并不要求将图块细分成大小相等或形状相同的子图块。
图10a示出了一个示例,其中32x32图块1002被细分以形成图10a中表示为1004、1006、1008和1010的四个16x16子图块。独立的子图块可以分配给不同的处理核进行绘制。在这个示例中,可以为子图块1004至1010中的每一个确定控制流数据。例如,可以为子图块1004至1010中的每一个确定分离的控制流数据。替代地,子图块1004至1010可以共享针对图块1002的控制流,并且然后针对在该控制流中标识的每个图元包括遮罩(例如,存在四个子图块的4位遮罩),以指示图元中四个子图块中的哪一个是有效的。如果特定的子图块(例如,子图块A 1004)被分配给特定的处理核(例如,处理核3141),则特定的处理核(例如3141)可以接收特定的子图块(例如1004)的控制流数据以便绘制特定的子图块(例如,1004)。
图10b示出了细分32×32图块1012的另一示例。在该示例中,细分过程不将图块1012分离到要提供给处理核314的更小的子图块。相反,整个图块1012(即,整个图块的控制流)连同掩模1014(其使用非常少的数据,例如在图块1012被细分为四分之一图块的示例中的2位遮罩)一起提供给适当的处理核,其指示图块1012的哪一部分对于特定的子图块有效。在更灵活的示例中,针对特定的子图块的遮罩可以包括每个像素一位,以指示每个特定的像素对于特定的子图块是否有效。这将使得图块被细分的方式中允许更多的灵活性,但是这意味着遮罩包括更多的数据(例如,每像素一个位,而不是整个图块(其可以例如包括1024个像素)仅两个位)。遮罩1014的影线区域表示无效区域,而遮罩1014的无影线区域表示图块1012的有效区域。换句话说,为了修改有效图块大小,可以提交具有遮罩的图块以指示图块的哪些像素应当由给定的处理核来处理。进一步扩展这个想法,我们可以通过将相同的图块提交到'N'个处理核并提供遮罩来指示每个处理核负责哪些像素,从而跨多个处理核分割任意图块的工作。
例如,调度逻辑316可确定多个遮罩(1014A,1014B,1014C和1014D),其指示图块1012针对相应多个子图块(A,B,C和D)的有效区域,其中特定的处理核被配置为通过接收以下各项来接收分配给特定处理核的特定子图块的数据:(i)针对特定块1012的数据,特定子图块从所述特定块得到,以及(ii)特定子图块的相应遮罩。例如,可以将子图块A分配给处理核3141,因此处理核3141将接收用于图块1012的控制流和遮罩1014A,遮罩1014A指示图块1012的左上象限对于子图块A是有效的;子图块B可以被分配给处理核3142,因此处理核3142将接收用于图块1012的控制流和遮罩1014B,遮罩1014B指示图块1012的右上象限对于子图块B是有效的;子图块C可以被分配给处理核3143,因此处理核3143将接收用于图块1012的控制流以及遮罩1014C,遮罩1014C指示图块1012的左下象限对于子图块C是有效的;并且可以将子图块D分配给处理核3144,因此处理核3144将接收用于图块1012的控制流和遮罩1014D,遮罩1014D指示图块1012的右下象限对于子图块D是有效的。
在步骤S914,将图块和子图块分配给处理核进行绘制。这可以以类似于上述的方式来完成,例如通过将图块或子图块的标识符添加到用于每个处理核314的绘制队列318。可以基于针对处理核排队的工作负载将图块和/或子图块分配给处理核,例如当针对特定处理核当前排队的图块和/或子图块的数目下降到阈值数目以下时,则可以将一个或多个图块和/或子图块分配给特定处理核。
从相同图块得到的子图块中的至少一些被分配给不同的处理核用于绘制。换句话说,从图块得到的子图块被分发给多个处理核314用于绘制。例如,从特定图块(例如,图块1012)得到的子图块(例如,子图块A到D)被分配给多个处理核(例如,分配给处理核3141到3144),即从该特定图块1012得到的一个或多个子图块(例如,子图块A)被分配给第一处理核(例如3141),并且从该特定图块1012得到的一个或多个分图块(例如,子图块B)被分配给第二处理核(例如3142),其中第一处理核(例如3141)是与第二处理核(例如3142)不同的处理核。
步骤S916和S918类似于上述的步骤S412和S414。在步骤S916中,处理核314绘制所分配的图块和所分配的子图块。如上所述例如通过对正在绘制的图块或子图块内存在的图元片段执行隐藏表面移除和纹理化/着色处理来执行绘制。
在步骤S918中,绘制的结果被存储在例如存储器3042中。
在不同的处理核上将图块细分为子图块并且处理子图块的方法可能比在单个处理核上处理完整的图块的效率更低(例如就所使用的处理能力的量而言),因为冗余数据可以在多个处理核中的每一个上针对图块被读取和处理,多个处理核处理从相同图块得到的子图块。然而,当处理开销低于未对系统进行负载平衡的代价时,细分一些图块(例如,在绘制的结束附近时细分昂贵的图块)的净效果可被认为是系统的总体改进。这就是为什么即使是图8a和8b所示的所有图块的图块大小被四等分(quartered)的极端示例,较小的图块大小仍比被慢速图块瓶颈的情况更快地出现。本文描述的混合细分方法,其中对于绘制的一些图块(例如,在绘制开始附近的图块和/或具有低开销指示的图块)使用较大的图块大小,并且对于其他图块(例如,绘制结束附近的图块和/或具有高开销指示的图块)例如通过细分较大的图块来使用较小的图块大小,导致比由于负载均衡改进的大图块大小更快的,并且比仅对图块中的一些导致开销的小图块大小更快的系统。反直觉地,低效率的来源已经被添加到绘制中的一小部分(通过对一些图块减少图块大小),以增加作为整体的系统的效率。
如上所述,调度逻辑316可以将图块分配给一个或多个图块的集合中的处理核314。此外,如上所述,处理核314中的每一个可以访问至少一个高速缓存,用于存储要用于绘制图块中的图元的数据(例如,图元数据或纹理数据)。调度逻辑316可以将从相同图块得到的子图块分配给可访问相同高速缓存的处理核314。以此方式,图块的数据可以存储在高速缓存中,并由处理核中的每一个用适当的遮罩1014来使用以绘制从该图块得到的不同的子图块。这可以减少高速缓存的数目,在高速缓存中存储图块的数据,这可以提高高速缓存系统的效率。类似地,当细分和调度用于不同核的图块时,可能需要知道底层高速缓存结构,例如以试图避免调度从相同图块得到的子图块使得它们在使用不同高速缓存的核上被处理。
在上面描述的示例中,图块被细分为子图块。然而,可以使用相同的细分处理来将图块的集合块细分为较小的图块子集。通常,一个或多个图块的集合可被细分成多个子单元,其中该细分可以是将图块细分成多个子图块(使得“子单元”是子图块),或者将图块集合细分成一个或多个图块的子集(使得“子单元”是一个或多个图块的子集)。在一个或多个图块的集合中(在任意细分之前)的图块的数目是实现选择,例如在一些实现中,单个图块被调度到处理核,而在其他实现中,图块组被调度到处理核。
作为示例,可以将六个图块(例如,3×2图块的块)的集合提交给单个处理核,并且每个集合可以具有为其存储的开销估计(例如,量化的开销估计)。集合内的个体图块可以或可以不具有为其存储的个体的开销估算。可将图块集合细分为更小的图块子集(例如,每三个图块的两个子集、每两个图块的三个子集、或每一个图块的六个子集,以给出一些示例)以发送到多个可用处理核。例如,如果在绘制的结束时提交的最后一个图块集合是3x2图块的块,并且该集合的开销估计是非常高的(例如,因为在所有的图块开销上的预传递没有被执行),则在考虑是否将任意图块进一步细分为子图块之前,将该图块集合细分成要由多个核(例如六个核)处理的多个图块的子集(例如,六个单个图块)可以更高效。
在细分水平上存在高速缓存效率的折衷,这对于每一图块集合是有意义的,这可以取决于处理该图块集合的估计开销和底层架构高速缓存布局。例如,如果四个处理核连接到相同的高速缓存,则将图块集合分割成四个子单元可能存在相对较小的代价,但是如果将图块集合分割成多于四个子单元(例如分割成六个子单元),则可能存在相对较大的代价,因为该图块集合然后将跨越到另一高速缓存中(即,该图块集合的数据将需要被写入到另一高速缓存中)。
处理逻辑313可以包括大量的处理核314,例如在一些示例中,处理逻辑313可以包括至少100个处理核。当图块的数目并不比处理核的数目大得多时,图块在绘制的“结束附近”被调度将变得更有可能,因此更昂贵的图块更有可能延迟绘制完成时间变得更有可能。因此,在这样大量的处理核314的情况下,细分一个或多个图块的集合,特别是一个或多个图块的昂贵集合可能变得更有益。
在上述细分方法中,调度逻辑316将图块细分成更小的子图块。然而,在其他示例中,分块单元308可以处理具有比绘制中的其他图块的大小更小的一些图块,以实现类似的结果,因为一些图块可以具有比其他图块更小的有效图块大小。例如,如果要以光栅扫描顺序(即,不根据开销指示)分配图块,则分块单元将知道哪些图块将在绘制的结束附近(例如,绘制空间的图块的底部行)被分配给处理核,因此,将这些图块细分为更小的图块使得控制流数据在分块单元308中针对绘制的结束附近的子图块被确定可能是有用的。在其他示例中,分块单元308可以基于其他因素来决定哪些图块将以更小的图块大小被绘制。在这个示例中,更大的图块在调度逻辑316中不被细分,而是在几何图形处理阶段和绘制阶段中用比其他图块更小的大小来处理一些图块,因此在某种意义上这些图块可以被认为是在分块阶段被细分。
在上述示例中,图形处理系统300包括多个处理核314。然而,在一些示例中,图形处理系统可以仅包括单个处理核。上述的细分方法可以用于细分全部由单个处理核处理的工作。因此,调度逻辑可以将从图块得到的所有子图块分配给单个处理核。这可能是有用的,例如,如果处理核能够在处理不同的子图块之间切换。例如,处理核可以能够在对子单元中的不同子单元执行处理的同时存储部分处理的子图块的状态(例如,深度缓冲器和标签缓冲器的状态)。以这种方式,处理核可以被认为具有“多个在飞行中的子图块”。具有在飞行中多个子图块可以比具有在飞行中的单个大图块更高效(在一些场景中),因为处理核所执行的处理的并行性可以得到改进。在授权专利GB2520365中描述了在绘制逻辑中具有在飞行中的多个图块的概念,并且这个概念可以扩展到具有在飞行中的多个子图块。类似的优点可以实现。
例如,图形处理系统可以被配置为允许图元的处理以在特定的子图块的所有图元已经完成处理之前,在不同的子图块的图元之间切换(从而允许图形处理系统具有“飞行中的多个子图块“,即,在给定的时间针对其图元被部分处理的多个子图块)。为了实现这一点,图形处理系统可以包括用于存储飞行中的相应子图块的深度的多个深度缓冲器以及用于存储针对用于部分处理的子图块而不同的子图块正在被处理的其他状态数据的其他存储器(例如,用于存储图元的标签的多个标签缓冲器,针对多个标签缓冲器,深度被存储在多个深度缓冲器中的相应深度缓冲器中)。如果系统一次处理单个完整图块的子图块,则存储不一定会增加(与在没有细分的情况下处理完整图块相比),因为完整图块的存储(例如深度高速缓存和针对其他状态数据的高速缓存)可以被细分和重新分配到子图块。通过将图块细分为子图块来在单个处理核内分割工作意味着执行更多数量的较小通道,这可以允许工作更流畅地通过处理核。例如,对于具有深度测试结果的整个图块填充更大的缓冲器(例如深度缓冲器和标记缓冲器)可能需要足够长的时间以使着色引擎不能工作(或开始不工作),从而减少着色引擎的效率。相比之下,可以更快速地将子图块的深度测试的结果写入更小的缓冲器(对应于子图块),因此当图形处理系统处理子图块而不是图块时,着色引擎不太可能会耗尽工作。此外,图块区域内的依赖关系(例如重叠穿透图元)可能造成处理流程中的停顿(stall);而细分图块可以允许并行处理子图块,使得如果一个子图块停顿,则可以处理不同的子图块。这减少了整个系统停顿的可能性。
处理子图块而不是图块可能会稍微降低处理效率(例如SIMD处理效率),因为跨越多个子图块的图元将被处理为可以在不同时间运行的多个分离的任务,使得任务占用可以减少。然而,通过减少总绘制时间的优势,例如对于在核中运行剩下的最后一个图块,在绘制的结束时这个缺点可以被超过。因此,在一些示例中,细分可以仅被用于绘制的结束附近的图块。
在以上描述中,描述了基于用于图块的开销指示来确定在处理逻辑313中处理图块的顺序的方法,并且描述了细分要被绘制的一个或多个图块的集合的方法。这些方法可以分离或组合使用。也就是说,每个方法本身都是有用的,并且可以减少在没有其他方法的情况下实现时的绘制时间。特别是如果存在在处理逻辑313中实现的大量的处理核(例如≥100个处理核)时,与仅使用一种方法相比,一起使用两种方法可以减少绘制时间。当一起使用两种方法时,首先处理更高开销的图块,并且如果在一些处理核空闲的同时某些图块可能延迟绘制完成时间,则某些图块被细分。
图11示出了其中可以实现本文描述的图形处理系统的计算机系统。计算机系统包括CPU 1102、GPU 302、存储器1106以及诸如显示器1110、扬声器1112和相机1114的其他设备1108。计算机系统的组件可以经由通信总线1118彼此通信。存储库1116(对应于存储器3041和3042)被实现为存储器1106的一部分。
图3的图形处理系统300被示出为包括多个功能块。这仅仅是示意性的,并不是旨在定义这些实体的不同逻辑元件之间的严格划分。每个功能块可以以任意合适的方式提供。应当理解,本文描述为由图形处理单元形成的中间值不需要由图形处理单元在任意时刻物理地生成,并且可以仅仅表示逻辑值,该逻辑值便于描述由图形处理单元执行的在其输入和输出之间的处理。
本文描述的图形处理单元可以以集成电路上的硬件来实现。本文描述的图形处理单元可以被配置为执行本文描述的任意方法。通常,上述任意功能、方法、技术或组件可以以软件、固件、硬件(例如,固定逻辑电路)或其任意组合来实现。本文可以使用术语“模块”、“功能”、“组件”、“元件”、“单元”、“块”和“逻辑”来总体表示软件、固件、硬件或其任意组合。在软件实现的情况下,模块、功能、组件、元件、单元、块或逻辑表示在处理器上执行时执行指定任务的程序代码。本文描述的算法和方法可以由执行使得处理器执行算法/方法的代码的一个或多个处理器来执行。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪速存储器、硬盘存储器以及可以使用磁、光学和其他技术来存储指令或其他数据、并可以被机器访问的其他存储器设备。
本文使用的术语计算机程序代码和计算机可读指令是指用于处理器的任意种类的可执行代码,包括以机器语言、解释型语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(诸如硬件描述语言或网表),以及以诸如C、Java或OpenCL的编程语言代码表达的代码。可执行代码可以是例如任意类型的软件、固件、脚本、模块或库,其当在虚拟机或其他软件环境处适当地执行、处理、解释、编译、执行时,使得计算机系统的处理器执行由代码指定的任务,在该计算机系统处可执行代码被支持。
处理器、计算机或计算机系统可以是具有处理能力使得可以执行指令的任意类型的设备、机器或专用电路、或其集合或其一部分。处理器可以是任意种类的通用或专用处理器,诸如CPU、GPU、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列、可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。
还旨在涵盖定义如本文描述的硬件的配置的软件,诸如HDL(硬件描述语言)软件,其用于设计集成电路或用于配置可编程芯片以执行期望的功能。也就是说,可以提供一种计算机可读存储介质,在其上编码有集成电路定义数据集形式的计算机可读程序代码,当在集成电路制造系统中处理时,将该系统配置为:制造被配置为执行本文描述的方法中的任意一个的图形处理单元,或者制造包括本文描述的任意装置的图形处理单元。集成电路定义数据集可以是例如集成电路描述。
因此,可以提供一种在集成电路制造系统处制造如本文所述的图形处理单元的方法。此外,可以提供一种集成电路定义数据集,其在集成电路制造系统中处理时导致制造图形处理单元的方法被执行。
集成电路定义数据集可以以计算机代码的形式,例如作为网表、用于配置可编程芯片的代码、作为定义在任意级别处的、包括寄存器传输级(RTL)代码的集成电路的硬件描述语言、作为诸如Verilog或VHDL的高级电路表示、以及作为诸如OASIS(RTM)和GDSII的低级电路表示。逻辑上定义集成电路(例如RTL)的较高级表示可以在计算机系统处被处理,计算机系统被配置用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义和用于组合这些元件的规则,以便于生成由该表示所定义的集成电路的制造定义。如通常在计算机系统处执行以定义机器的软件的情况那样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便于计算机系统被配置用于生成集成电路的制造定义以执行定义集成电路的代码以便生成该集成电路的制造定义。
现在将参照图12描述在集成电路制造系统处处理集成电路定义数据集以便配置系统以制造图形处理单元的示例。
图12示出了被配置为制造如本文中的示例中的任一者中所描述的图形处理单元的集成电路(IC)制造系统1202的示例。具体而言,IC制造系统1202包括布局处理系统1204和集成电路生成系统1206。IC制造系统1202被配置为接收IC定义数据集(例如,定义如本文的任意示例中描述的图形处理单元)、处理IC定义数据集、并且根据IC定义数据集来生成IC(例如,其实施本文任意示例中描述的图形处理单元)。IC定义数据集的处理将IC制造系统1002配置为制造实施如本文任意示例中所描述的图形处理单元的集成电路。
布局处理系统1204被配置为接收并处理IC定义数据集以确定电路布局。从IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定例如在逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP组件)方面要生成的电路的门级表示。通过确定逻辑组件的位置信息,可以从电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以优化电路布局。当布局处理系统1204已经确定电路布局时,其可以向IC生成系统1206输出电路布局定义。电路布局定义可以是例如电路布局描述。
如现有技术中已知的,IC生成系统1206根据电路布局定义生成IC。例如,IC生成系统1206可以实现半导体器件制造处理以生成IC,其可以涉及光刻和化学处理步骤的多步骤顺序,在该步骤期间电子电路在由半导体材料制成的晶片上被逐渐形成。电路布局定义可以是掩模的形式,其可以在用于根据电路定义来产生IC的光刻处理中使用。替代地,提供给IC生成系统1206的电路布局定义可以是计算机可读代码的形式,IC生成系统1206可以使用计算机可读代码以形成用于生成IC的适当的掩模。
IC制造系统1202所执行的不同处理可以全部在一个位置例如由一方来实现。替代地,IC制造系统1202可以是分布式系统,使得一些处理可以在不同位置执行,并且可以由不同方执行。例如,以下各项的阶段中的一些可以在不同位置和/或由不同方执行:(i)合成表示IC定义数据集的RTL代码以形成要生成的电路的门级表示,(ii)基于门级表示来生成电路布局,(iii)根据电路布局来形成掩模,以及(iv)使用掩模来制造集成电路。
在其他示例中,集成电路制造系统处的集成电路定义数据集可以将系统配置为制造图形处理单元,而不处理IC定义数据集以确定电路布局。例如,集成电路定义数据集可以定义诸如FPGA的可重新配置处理器的配置,并且该数据集的处理可以配置IC制造系统以生成具有该定义的配置的可重新配置的处理器(例如,通过将配置数据加载到FPGA)。
在一些实施例中,集成电路制造定义数据集在集成电路制造系统中处理时可以使集成电路制造系统生成如本文所述的设备。例如,通过集成电路制造定义数据集以以上关于图12所描述的方式的集成电路制造系统的配置可使得如本文所描述的设备被制造。
在一些示例中,集成电路定义数据集可以包括在数据集处定义的硬件上运行的软件或者与数据集上定义的硬件相结合运行的软件。在图12所示的示例中,IC生成系统还可以由集成电路定义数据集配置,以在制造集成电路时根据在集成电路定义数据集处定义的程序代码来将固件加载到该集成电路上,或者以其他方式向程序代码提供集成电路,以与集成电路一起使用。
与已知实现相比,在本申请中阐述的概念在设备、装置、模块和/或系统中(以及本文实现的方法中)的实现可以引起性能改进。性能改进可以包括增加的计算性能、减少的延迟、增加的吞吐量和/或降低的功耗中的一个或多个。在这种设备、装置、模块和系统(例如在集成电路中)的制造的过程中,性能改进可以与物理实现折中,从而改进制造的方法。例如,性能改进可以与布局区域交易,从而与已知实现的性能匹配,但使用更少的硅。这可以例如通过以串行化方式重用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,本申请中提出的概念引起了在设备、装置、模块和系统(例如减小的硅面积)的物理实现的中的改进。这可以通过例如在预定区域预算内制造模块的多个实例来完成。
申请人在此独立地公开了本文描述的每个个体的特征以及两个或更多个这种特征的任意组合,只要这些特征或组合能够根据本领域技术人员的普通通用知识基于本说明书作为整体来执行,而不管这些特征或特征组合是否解决了本文所公开的任意问题。鉴于上述描述,对于本领域技术人员来说显而易见的是,可以在本发明的范围内进行各种修改。
Claims (23)
1.一种图形处理单元,被配置为使用绘制空间来处理图形数据,所述绘制空间被划分为多个图块,所述图形处理单元包括:
一个或多个处理核,被配置为绘制图形数据;以及
调度逻辑,被配置为调度一个或多个图块的集合以用于在所述一个或多个处理核上绘制,其中所述调度逻辑被配置为,针对所述绘制空间的所述一个或多个图块的集合中的至少一个集合,对所述一个或多个图块的集合进行细分以确定多个子单元,其中所述调度逻辑被配置为调度所述子单元以用于在所述一个或多个处理核上绘制。
2.根据权利要求1所述的图形处理单元,其中所述一个或多个处理核包括被配置为绘制图形数据的多个处理核,并且其中所述调度逻辑被配置为调度所述子单元,所述子单元是从相同的一个或多个图块的集合得到的,使得所述子单元中的至少一些子单元被分配给不同的处理核用于绘制。
3.根据权利要求1所述的图形处理单元,其中所述调度逻辑被配置为调度从一个或多个图块的特定集合得到的所述子单元,使得从所述特定集合得到的所有所述子单元被分配给单个处理核用于绘制,其中所述单个处理核被配置为能够:
在处理所述子单元中的不同子单元之间切换,以及
存储经部分处理的子单元的状态,同时在所述子单元中的不同的子单元上执行处理。
4.根据前述权利要求中的任一项所述的图形处理单元,其中所述子单元中的一个或多个子单元是一个或多个图块的子集。
5.根据权利要求4所述的图形处理单元,其中一个或多个图块的特定集合包括多个图块,并且其中所述调度逻辑被配置为细分图块的所述特定集合,以从图块的所述特定集合来确定一个或多个图块的多个子集。
6.根据前述权利要求中的任一项所述的图形处理单元,其中所述子单元中的一个或多个子单元是子图块。
7.根据权利要求6所述的图形处理单元,其中一个或多个图块的特定集合包括单个图块,并且其中所述调度逻辑被配置为细分所述单个图块,以确定从所述单个图块得到的多个子图块。
8.根据前述权利要求中的任一项所述的图形处理单元,其中所述调度逻辑被配置为确定所述一个或多个图块的集合中的哪一个集合要针对当前绘制而细分。
9.根据权利要求6所述的图形处理单元,其中所述调度逻辑被配置为基于与先前绘制中对应的一个或多个图块的集合的处理开销有关的信息,来确定所述一个或多个图块的集合中的哪一个集合要针对当前绘制而细分。
10.根据权利要求8或9所述的图形处理单元,其中所述调度逻辑被配置为基于在所述当前绘制中仍然要被绘制的所述图块的数目与图块的阈值数目之间的关系,来确定所述一个或多个图块的集合中的哪一个集合要针对所述当前绘制而细分。
11.根据权利要求10所述的图形处理单元,其中所述调度逻辑被配置为进一步基于所述处理核的数目,来确定所述一个或多个图块的集合中的哪一个集合要针对所述当前绘制而细分。
12.根据权利要求8至11中任一项所述的图形处理单元,还包括开销指示逻辑,所述开销指示逻辑被配置为获取针对所述绘制空间的所述一个或多个图块的集合中的每一个集合的开销指示,其中针对一个或多个图块的集合的所述开销指示表明处理所述一个或多个图块的集合的开销,
并且其中所述调度逻辑被配置为基于所述开销指示来确定所述一个或多个图块的集合中的哪一个集合要针对所述当前绘制而细分。
13.根据权利要求12所述的图形处理单元,其中所述开销指示逻辑被配置为确定针对所述绘制空间的所述图块中的每一个图块的开销指示。
14.根据权利要求12或13所述的图形处理单元,其中所述开销指示逻辑被配置为基于以下因素中的一个或多个因素来确定针对所述绘制空间的图块的开销指示:
(i)所述图块中的图元的数目;
(ii)与所述图块中的所述图元相关联的对象类型;
(iii)所述图块中的所述图元的图块覆盖区域;
(iv)一个或多个着色器程序的特性,所述着色器程序将被执行用于绘制所述图块中的所述图元;
(v)用户输入;以及
(vi)先前绘制中的对应图块的处理开销。
15.根据权利要求14所述的图形处理单元,其中着色器程序的所述特性包括以下一项或多项:
(i)所述着色器程序的长度;
(ii)所述着色器程序所使用的资源或寄存器的量;
(iii)所述着色器程序是否包括有条件的流程控制;
(iv)所述着色器程序是否包括循环,在编译时针对所述循环重复的次数未被定义;
(v)所述着色器程序中使用的存储器读取和/或写入的量。
16.根据权利要求12至15中任一项所述的图形处理单元,其中所述开销指示逻辑被配置为量化所述开销指示。
17.根据权利要求12到16中任一项所述的图形处理单元,其中所述调度逻辑被配置为:根据度量来细分一个或多个图块的集合,根据所述度量,如果与所述一个或多个图块的集合相关联的开销指示增加,则一个或多个图块的集合被细分的可能性增加。
18.根据前述权利要求中的任一项所述的图形处理单元,其中所述调度逻辑被配置为:根据度量来细分一个或多个图块的集合,根据所述度量,如果所述当前绘制的、仍然要被绘制的所述图块的数目减少,则一个或多个图块的集合被细分的可能性降低。
19.根据前述权利要求中的任一项所述的图形处理单元,其中调度逻辑被配置为:根据度量来细分一个或多个图块的集合,根据所述度量,如果所述处理核的数目增加,则一个或多个图块的集合被细分的可能性增加。
20.根据前述权利要求中的任一项所述的图形处理单元,其中所述调度逻辑被配置为通过确定多个掩码来细分图块,以确定多个子图块,所述掩码指示所述图块的、针对相应的所述多个子图块的有效范围,其中特定处理核被配置为通过接收以下项来接收被调度的特定子图块的数据用于在所述特定处理核上绘制:(i)特定图块的数据,所述特定子图块从所述特定图块得到,以及(ii)所述特定子图块的相应的掩码。
21.根据权利要求1到19中任一项所述的图形处理单元,其中所述调度逻辑被配置为通过确定用于所述相应子图块的控制流数据,来细分图块以确定多个子图块,其中特定处理核被配置为通过接收所述特定子图块的所述控制流数据,来接收被调度用于在所述特定处理核上绘制的特定子图块的数据。
22.一种图形处理系统中的处理图形数据的方法,所述图形处理系统包括一个或多个处理核,所述一个或多个处理核被配置为绘制图形数据,所述图形处理系统被配置为使用被细分成多个图块的绘制空间,所述方法包括:
调度一个或多个图块的集合以用于在所述一个或多个处理核上绘制,以及针对所述绘制空间的所述一个或多个图块的集合中的至少一个集合,细分所述一个或多个图块的集合以确定多个子单元;以及
调度所述子单元以用于在所述一个或多个处理核上绘制。
23.一种集成电路制造系统,包括:
计算机可读存储介质,在其上存储有集成电路的计算机可读描述,所述计算机可读描述描述了根据权利要求1至21中任一项所述的图形处理单元;
布局处理系统,被配置为处理所述集成电路描述以便生成集成电路的电路布局描述,所述电路布局描述实施根据权利要求1至21中任一项所述的图形处理单元;以及
集成电路生成系统,被配置为根据所述电路布局描述来制造所述图形处理单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1700563.8A GB2558885B (en) | 2017-01-12 | 2017-01-12 | Graphics processing units and methods for subdividing a set of one or more tiles of a rendering space for rendering |
GB1700563.8 | 2017-01-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108305313A true CN108305313A (zh) | 2018-07-20 |
CN108305313B CN108305313B (zh) | 2022-12-13 |
Family
ID=58463452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810028127.2A Active CN108305313B (zh) | 2017-01-12 | 2018-01-11 | 用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10387990B2 (zh) |
EP (1) | EP3349180B1 (zh) |
CN (1) | CN108305313B (zh) |
GB (1) | GB2558885B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112017104A (zh) * | 2019-05-30 | 2020-12-01 | 畅想科技有限公司 | 图形处理系统中的功能安全 |
CN114898024A (zh) * | 2021-01-26 | 2022-08-12 | 想象技术有限公司 | 用于帧的安全关键渲染的方法和系统 |
CN116894754A (zh) * | 2022-03-30 | 2023-10-17 | 想象技术有限公司 | 多核绘制拆分 |
WO2024174870A1 (zh) * | 2023-02-20 | 2024-08-29 | 摩尔线程智能科技(北京)有限责任公司 | 基于图块的光栅化方法和设备、图像渲染方法和设备 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10691464B1 (en) | 2019-01-18 | 2020-06-23 | quadric.io | Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit |
GB2579112B (en) | 2019-05-31 | 2021-04-21 | Imagination Tech Ltd | Graphics processing units and methods using render progression checks |
US11257179B2 (en) | 2020-03-13 | 2022-02-22 | Apple Inc. | Graphics processing techniques based on frame portion cost estimates |
US11200060B1 (en) * | 2020-12-23 | 2021-12-14 | Advanced Micro Devices, Inc. | Broadcast synchronization for dynamically adaptable arrays |
CN115220905A (zh) * | 2021-04-19 | 2022-10-21 | 苏州苏大维格科技集团股份有限公司 | 直写光刻数据处理系统和方法 |
CN115550713B (zh) * | 2022-11-29 | 2023-04-28 | 杭州星犀科技有限公司 | 音视频直播渲染方法、装置、设备及介质 |
US12067959B1 (en) * | 2023-02-22 | 2024-08-20 | Meta Platforms Technologies, Llc | Partial rendering and tearing avoidance |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090303245A1 (en) * | 2008-04-30 | 2009-12-10 | Alexei Soupikov | Technique for performing load balancing for parallel rendering |
CN101877116A (zh) * | 2008-11-20 | 2010-11-03 | 威盛电子股份有限公司 | 绘图处理单元、执行单元以及工作管理方法 |
WO2013130030A1 (en) * | 2012-02-27 | 2013-09-06 | Intel Corporation | Using cost estimation to improve performance of tile rendering for image processing |
EP2648107A1 (en) * | 2012-04-05 | 2013-10-09 | Siemens Aktiengesellschaft | Volume rendering on shared memory systems with multiple processors by optimizing cache reuse |
US20140267259A1 (en) * | 2013-03-15 | 2014-09-18 | Qualcomm Incorporated | Tile-based rendering |
CN104103084A (zh) * | 2013-04-02 | 2014-10-15 | 想象技术有限公司 | 基于图块的图形 |
CN104424621A (zh) * | 2013-08-30 | 2015-03-18 | Arm有限公司 | 图形处理系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6191800B1 (en) * | 1998-08-11 | 2001-02-20 | International Business Machines Corporation | Dynamic balancing of graphics workloads using a tiling strategy |
US7385608B1 (en) * | 2003-12-31 | 2008-06-10 | 3Dlabs Inc. Ltd. | State tracking methodology |
US7616207B1 (en) * | 2005-04-25 | 2009-11-10 | Nvidia Corporation | Graphics processing system including at least three bus devices |
US8310492B2 (en) * | 2009-09-03 | 2012-11-13 | Ati Technologies Ulc | Hardware-based scheduling of GPU work |
US8593466B2 (en) | 2010-06-08 | 2013-11-26 | Intel Corporation | Tile rendering for image processing |
US20120218277A1 (en) * | 2011-02-25 | 2012-08-30 | ST-Ericcson SA | Display list mechanism and scalable display engine structures |
GB2520365B (en) * | 2013-12-13 | 2015-12-09 | Imagination Tech Ltd | Primitive processing in a graphics processing system |
KR101957556B1 (ko) * | 2014-05-28 | 2019-03-12 | 애리스 엔터프라이지즈 엘엘씨 | 멀티코어 프로세서 플랫폼에서 동작하는 hevc 디코더에서의 콘텐츠 인식 스케줄링 |
CN106537446B (zh) | 2014-06-30 | 2019-08-20 | 英特尔公司 | 具有任意块形状的自适应划分机制以用于基于块的渲染gpu架构 |
-
2017
- 2017-01-12 GB GB1700563.8A patent/GB2558885B/en active Active
-
2018
- 2018-01-09 EP EP18150886.2A patent/EP3349180B1/en active Active
- 2018-01-11 US US15/868,014 patent/US10387990B2/en active Active
- 2018-01-11 CN CN201810028127.2A patent/CN108305313B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090303245A1 (en) * | 2008-04-30 | 2009-12-10 | Alexei Soupikov | Technique for performing load balancing for parallel rendering |
CN101877116A (zh) * | 2008-11-20 | 2010-11-03 | 威盛电子股份有限公司 | 绘图处理单元、执行单元以及工作管理方法 |
WO2013130030A1 (en) * | 2012-02-27 | 2013-09-06 | Intel Corporation | Using cost estimation to improve performance of tile rendering for image processing |
EP2648107A1 (en) * | 2012-04-05 | 2013-10-09 | Siemens Aktiengesellschaft | Volume rendering on shared memory systems with multiple processors by optimizing cache reuse |
US20140267259A1 (en) * | 2013-03-15 | 2014-09-18 | Qualcomm Incorporated | Tile-based rendering |
CN104103084A (zh) * | 2013-04-02 | 2014-10-15 | 想象技术有限公司 | 基于图块的图形 |
CN104424621A (zh) * | 2013-08-30 | 2015-03-18 | Arm有限公司 | 图形处理系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112017104A (zh) * | 2019-05-30 | 2020-12-01 | 畅想科技有限公司 | 图形处理系统中的功能安全 |
CN112017104B (zh) * | 2019-05-30 | 2022-06-14 | 畅想科技有限公司 | 用于执行基于图块的渲染的方法和图形处理系统 |
CN114898024A (zh) * | 2021-01-26 | 2022-08-12 | 想象技术有限公司 | 用于帧的安全关键渲染的方法和系统 |
CN114898024B (zh) * | 2021-01-26 | 2023-10-24 | 想象技术有限公司 | 用于帧的安全关键渲染的方法和系统 |
CN116894754A (zh) * | 2022-03-30 | 2023-10-17 | 想象技术有限公司 | 多核绘制拆分 |
WO2024174870A1 (zh) * | 2023-02-20 | 2024-08-29 | 摩尔线程智能科技(北京)有限责任公司 | 基于图块的光栅化方法和设备、图像渲染方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN108305313B (zh) | 2022-12-13 |
EP3349180A1 (en) | 2018-07-18 |
GB2558885A (en) | 2018-07-25 |
GB2558885B (en) | 2021-04-07 |
GB201700563D0 (en) | 2017-03-01 |
EP3349180B1 (en) | 2020-05-27 |
US10387990B2 (en) | 2019-08-20 |
US20180197269A1 (en) | 2018-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108305313A (zh) | 用于细分绘制空间的一个或多个图块的集合的、用于绘制的图形处理单元和方法 | |
US11710268B2 (en) | Graphics processing units and methods for controlling rendering complexity using cost indications for sets of tiles of a rendering space | |
EP3588289B1 (en) | Tile assignment to processing cores within a graphics processing unit | |
US10249016B2 (en) | Graphics processing units and methods using cost indications for sets of tiles of a rendering space | |
CN106575228B (zh) | 图形处理中的渲染目标命令重新排序 | |
CN104050706B (zh) | 用于低功率图形渲染的像素着色器旁路 | |
CN109564700A (zh) | 用于取决于纹理的丢弃操作的分级式Z剔除(HiZ)优化 | |
US11610358B2 (en) | Data structures, methods and tiling engines for hierarchically storing tiling information in a graphics processing system | |
CN109478310A (zh) | 在计算环境中使用纹素着色器的多分辨率延迟着色 | |
KR101609079B1 (ko) | 그래픽 프로세싱 유닛에서의 명령 선별 | |
CN103886634A (zh) | 利用每像素着色器线程的高效超级采样 | |
CN110352403A (zh) | 图形处理器寄存器重命名机制 | |
EP3866118A1 (en) | Methods and tiling engines for tiling primitives in a graphics processing system | |
GB2580498A (en) | Graphics processing units and methods for controlling rendering complexity using cost indications for sets of tiles of a rendering space | |
US20230230308A1 (en) | Graphics processing system and method of rendering | |
US12148084B2 (en) | Graphics processing units and methods for controlling rendering complexity using cost indications for sets of tiles of a rendering space | |
GB2613649A (en) | Graphics processing system and method of rendering | |
GB2592046A (en) | Methods and tiling engines for tiling primitives in a graphics processing system |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |