CN116745801A - 基于图形流水线中的镶嵌因子来节流调节外壳着色器 - Google Patents
基于图形流水线中的镶嵌因子来节流调节外壳着色器 Download PDFInfo
- Publication number
- CN116745801A CN116745801A CN202180084587.7A CN202180084587A CN116745801A CN 116745801 A CN116745801 A CN 116745801A CN 202180084587 A CN202180084587 A CN 202180084587A CN 116745801 A CN116745801 A CN 116745801A
- Authority
- CN
- China
- Prior art keywords
- shader
- counter
- thread group
- primitives
- primitive
- 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
- 239000000872 buffer Substances 0.000 claims abstract description 44
- 230000004044 response Effects 0.000 claims abstract description 17
- 230000001934 delay Effects 0.000 claims abstract description 3
- 238000000034 method Methods 0.000 claims description 56
- 230000008569 process Effects 0.000 claims description 20
- 238000010304 firing Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 64
- 230000015654 memory Effects 0.000 description 25
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Classifications
-
- 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/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- 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
- 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/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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/504—Resource capping
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
一种处理系统(300)包括外壳着色器电路(121至123),该外壳着色器电路启动包括一个或多个图元的线程组。该外壳着色器电路还生成指示这些图元的细分的镶嵌因子。该处理系统还包括节流调节电路(430),该节流调节电路基于这些镶嵌因子来估计域着色器(224)的图元启动时间间隔,并且基于该域着色器的该图元启动时间间隔和外壳着色器延迟来选择性地节流调节从该外壳着色器电路启动这些线程组。在一些情况下,该节流调节电路包括响应于从缓冲器启动线程组而递增的第一计数器(435)和基于该域着色器的所测量的延迟来修改该第一计数器的第二计数器(440)。
Description
背景技术
图形处理单元(GPU)实现同时处理从命令缓冲器检索的命令的副本的图形处理流水线。图形流水线包括使用图形流水线的资源执行的一个或多个着色器和一个或多个固定功能硬件块。图形流水线通常划分为对补丁或其他图元(诸如,由顶点和边缘形成并且表示图像的部分的三角形)执行几何操作的几何部分。几何部分中的着色器可包括顶点着色器、外壳着色器、域着色器和几何着色器。当由流水线的几何部分产生的图元(例如,通过一个或多个扫描转换器)栅格化以形成表示图像的部分的像素的集合时,图形流水线的几何部分完成。对像素的后续处理称为像素处理,并且包括由着色器(诸如,使用图形流水线的资源来执行的像素着色器)执行的操作。GPU和其他多线程处理单元通常实现作为单波对多个数据集同时执行单个程序的多个实例的多个处理元件(其也称为处理器核心或计算单元)。分级执行模型用于匹配在硬件中实现的分级结构。执行模型限定由所有波(也称为波前、线程、流或工作项)执行的指令的内核。
附图说明
通过参考附图,本公开可以被更好地理解,并且其许多特征和优点对于本领域技术人员是显而易见的。在不同附图中使用相同的附图标记表示类似或相同的项目。
图1是根据一些实施方案的处理系统的框图。
图2描绘根据一些实施方案的能够处理高阶几何图元以在预定分辨率下生成三维(3D)场景的栅格化图像的图形流水线。
图3是根据一些实施方案的选择性地节流调节由外壳着色器电路启动的线程组的处理系统的第一部分的框图。
图4是根据一些实施方案的选择性地节流调节由外壳着色器电路启动的线程组的处理系统的第二部分的框图。
图5是根据一些实施方案的使用总计数和错误计数来估计域着色器的图元启动时间间隔的方法的第一部分的流程图。
图6是根据一些实施方案的使用总计数和错误计数来估计域着色器的图元启动时间间隔的方法的第二部分的流程图。
图7是根据一些实施方案的选择性地节流调节从外壳着色器进行波启动的方法的流程图。
具体实施方式
图形流水线的几何部分中的外壳着色器电路启动由外壳着色器处理的补丁的控制点的波。外壳着色器还生成指示补丁的细分的镶嵌因子。由外壳着色器处理的补丁和镶嵌因子被传递到图形流水线中的镶嵌器。在于域着色器中处理镶嵌式图元之前,镶嵌器使用镶嵌因子来将补丁细分成其他图元诸如三角形。因此,域着色器通常处理比外壳着色器更大数量的图元。例如,如果针对由外壳着色器处理的四边形补丁的镶嵌因子为十六,则域着色器响应于从外壳着色器接收补丁而处理512个三角形。补丁由外壳着色器电路基于尝试使用图形流水线的尽可能多的资源的贪心算法来启动。基于贪心算法来启动外壳着色器波可使域着色器缺乏处理镶嵌式图元所需的资源。一些图形流水线被配置为通过约束可分配给外壳着色器以用于处理波的计算单元的数量来限制在途波的数量。然而,当由外壳着色器启动的图元放大几乎不存在时(例如,当镶嵌因子小于或等于一时),对可用计算单元数量的静态限制降低图形流水线的性能。
图1至图7公开通过基于由第一类型的第一着色器和第二类型的第二着色器消耗的图形流水线资源的量度来选择性地从第一着色器启动波来维持由第一着色器和第二着色器消耗的图形流水线资源之间的平衡的系统和技术。在一些实施方案中,第一着色器是外壳着色器并且第二着色器是从镶嵌器接收图元的域着色器。外壳着色器生成镶嵌因子,并且镶嵌器基于镶嵌因子来细分(或镶嵌)图元以生成多个较高分辨率图元。针对由外壳着色器电路启动的补丁的镶嵌因子被保存在向域着色器提供图元的缓冲器中。节流调节电路使用镶嵌因子来估计由域着色器从该域着色器启动所有图元所需的时间间隔,例如,在域着色器中处理较高分辨率图元所需的周期的数量。该时间间隔在本文中称为“图元启动时间间隔”。节流调节电路的一些实施方案包括存储指示与缓冲器中的对应条目相关联的波的高分辨率图元的数量(或处理高分辨率图元所需的周期)的信息的寄存器组。所存储的信息用于设定计数器的表示域着色器的图元启动时间间隔的值。例如,总计数器递增被估计用于处理与写入到镶嵌器以供处理的缓冲器条目相关联的寄存器中的高分辨率图元的周期的数量。响应于域着色器启动逻辑部件完成对与补丁相关联的较高分辨率图元的处理,总计数器迭代地(按域着色器启动逻辑部件的估计图元处理速率)递减。在一些实施方案中,错误计数器用于基于在从域着色器启动之前在域着色器中处理图元所需的实际时间的测量结果来修改总计数器。响应于所测量的延迟大于对应于总计数器的值的延迟(例如,由于域着色器上的背压)而增加错误计数器的值。响应于所测量的处理时间小于或等于总计数器的值而减少错误计数器的值(或将其设定为零)。然后,所组合的总计数器和错误计数器基于完成的补丁的镶嵌因子来递减。基于总计数器和错误计数器(如果存在)的值来选择性地从外壳着色器启动波。
图1是根据一些实施方案的处理系统100的框图。处理系统100包括或可访问使用非暂态计算机可读介质诸如动态随机存取存储器(DRAM)实现的存储器105或其他存储部件。然而,在一些情况下,存储器105使用其他类型的存储器(包括静态随机存取存储器(SRAM)、非易失性RAM等)来实现。存储器105被称为外部存储器,因为它是在处理系统100中实现的处理单元的外部实现的。处理系统100还包括总线110以支持处理系统100诸如存储器105中实现的实体之间的通信。处理系统100的一些实施方案包括其他总线、桥接件、交换机、路由器等,其在清楚的情况下未在图1中示出。
在不同的实施方案中,本文中描述的技术用于多种并行处理器(例如,向量处理器、图形处理单元(GPU)、通用GPU(GPGPU)、非标量处理器、高度并行处理器、人工智能(AI)处理器、推理引擎、机器学习处理器、其他多线程处理单元等)中的任一种处理器。图1示出了根据一些实施方案的并行处理器,特别是图形处理单元(GPU)115的示例。图形处理单元(GPU)115渲染用于在显示器120上呈现的图像。例如,GPU 115渲染对象以产生提供给显示器120的像素值,该显示器使用像素值来显示表示所渲染对象的图像。GPU 115实现并发或并行地执行指令的多个计算单元(CU)121、122、123(本文中统称为“计算单元121至123”)。在一些实施方案中,计算单元121至123包括一个或多个单指令多数据(SIMD)单元并且计算单元121至123被聚集到工作组处理器、着色器阵列、着色器引擎等中。在GPU 115中实现的计算单元121至123的数量是设计选择的问题,并且GPU 115的一些实施方案包括比图1所示更多或更少的计算单元。计算单元121至123可用于实现图形流水线,如本文所讨论的。GPU115的一些实施方案用于通用计算。GPU 115执行指令,诸如存储在存储器105中的程序代码125,并且GPU 115将信息诸如所执行指令的结果存储在存储器105中。
处理系统100还包括中央处理单元(CPU)130,其连接到总线110并且因此经由总线110与GPU 115和存储器105通信。CPU 130实现并发地或并行地执行指令的多个处理器核心131、132、133(本文中统称为“处理器核心131至133”)。在CPU 130中实现的处理器核心131至133的数量是设计选择的问题,并且一些实施方案包括比图1所示更多或更少的处理器核心。处理器核心131至133执行指令(诸如存储在存储器105中的程序代码135),并且CPU 130将信息(诸如所执行指令的结果)存储在存储器105中。CPU 130还能够通过向GPU 115发出绘制调用来发起图形处理。CPU 130的一些实施方案实现同时或并行地执行指令的多个处理器核心(为了清楚起见图1中未示出)。
输入/输出(I/O)引擎145处理与显示器120以及处理系统100的其他元件(诸如,键盘、鼠标、打印机、外部盘等)相关联的输入或输出操作。I/O引擎145被耦接到总线110,使得I/O引擎145与存储器105、GPU 115或CPU 130通信。在例示的实施方案中,I/O引擎145读取存储在外部存储部件150上的信息,该外部存储部件是使用非暂态计算机可读介质诸如光盘(CD)、数字视频盘(DVD)等来实现的。I/O引擎145还能够将信息写入外部存储部件150,诸如GPU 115或CPU 130的处理结果。
处理系统100实现用于在流水线的多个阶段中执行指令的流水线电路。流水线电路是在计算单元121至123或处理器核心131至133的一些实施方案中实现的。在一些实施方案中,流水线电路用于实现执行不同类型的着色器的图形流水线,这些不同类型的着色器包括但不限于顶点着色器、外壳着色器、域着色器、几何着色器和像素着色器。处理系统100的一些实施方案包括启动包括一个或多个图元的线程组的外壳着色器电路。例如,GPU 115中的计算单元121至123可用于实现外壳着色器电路,以及用于其他着色器和节流调节波启动的电路,如本文所讨论。外壳着色器电路还生成指示图元的细分的镶嵌因子。处理系统100中的节流调节电路基于镶嵌因子来估计域着色器的图元启动时间间隔,并且基于域着色器的延迟和外壳着色器延迟来选择性地节流调节从外壳着色器电路启动线程组。在一些情况下,节流调节电路包括响应于从缓冲器启动线程组而递增的第一计数器,以及基于域着色器的所测量延迟来修改第一计数器的第二计数器。
图2描绘根据一些实施方案的能够处理高阶几何图元以在预定分辨率下生成三维(3D)场景的栅格化图像的图形流水线200。图形流水线200是在图1所示的处理系统100的一些实施方案中实现的。图形流水线200的所示出的实施方案根据DX11规范来实现。图形流水线200的其他实施方案根据其他应用程序编程接口(API)诸如Vulkan、Metal、DX12等来实现。图形流水线200被细分成包括图形流水线200在栅格化之前的部分的几何处理部分201和包括图形流水线200在栅格化之后的部分的像素处理部分202。
图形流水线200可访问存储资源205,诸如用于实现缓冲器并且存储顶点数据、纹理数据等的一个或多个存储器或高速缓存存储器的层级结构。在例示的实施方案中,存储资源205包括用于存储数据的加载数据存储(LDS)206电路和用于存储在由图形流水线200渲染期间使用的寄存器值的矢量通用寄存器(VGPR)。使用图1所示的系统存储器105的一些实施方案来实现存储资源205。
输入汇编程序210从存储资源205访问用于定义表示场景的模型的部分的对象的信息。图元的示例在图2中被示出为三角形211,但在图形流水线200的一些实施方案中处理其他类型的图元。三角形203包括通过一个或多个边缘214连接的一个或多个顶点212(为了清楚起见,图2中仅示出每一类中的一个)。顶点212在图形流水线200的几何处理部分201期间被着色。
在例示的实施方案中以软件实现的顶点着色器215在逻辑上接收图元的单个顶点212作为输入并且输出单个顶点。着色器诸如顶点着色器215的一些实施方案实现大规模单指令多数据(SIMD)处理,使得同时处理多个顶点。图形流水线200实现统一着色器模型,使得图形流水线200中所包括的所有着色器在共享大规模SIMD计算单元上具有相同的执行平台。因此,包括顶点着色器215的着色器使用本文称为统一着色器池216的公共资源集来实现。
外壳着色器218对用于定义输入补丁的输入高阶补丁或控制点进行操作。外壳着色器218输出镶嵌因子和其他补丁数据诸如在外壳着色器218中处理的补丁的控制点。镶嵌因子存储在存储资源205中,因此镶嵌因子可被图形流水线200中的其他实体访问。在一些实施方案中,由外壳着色器218生成的图元被提供给镶嵌器220。镶嵌器220从外壳着色器218接收对象(诸如补丁),并且例如通过基于由外壳着色器218生成的镶嵌因子对输入对象进行镶嵌来生成识别对应于输入对象的图元的信息。镶嵌将输入的高阶图元(诸如补丁)细分为一组低阶输出图元,该组低阶输出图元表示更精细的细节级别,例如,如指定由镶嵌过程产生的图元粒度的镶嵌因子所指示的那样。因此,场景的模型由较少数量的较高阶图元表示(以节省存储器或带宽),并且通过对较高阶图元进行镶嵌来添加附加的细节。
域着色器224输入域位置和(可选地)其他补丁数据。域着色器224对所提供的信息进行操作,并且基于输入域位置和其他信息生成用于输出的单个顶点。在例示的实施方案中,域着色器224基于三角形211和镶嵌因子生成图元222。域着色器224响应于完成处理而启动图元222。几何着色器226从域着色器224接收输入图元并且输出由几何着色器226基于输入图元来生成的多达四个图元(每输入图元)。在例示的实施方案中,几何着色器226基于镶嵌式图元222生成输出图元228。
一个图元流被提供给一个或多个扫描转换器230,并且在一些实施方案中,多达四个图元流被级联到存储资源205中的缓冲器。扫描转换器230执行着色操作和其他操作,诸如裁剪、透视划分、剪切和视口选择等。扫描转换器230生成一组232像素,该组像素随后在图形流水线200的像素处理部分202中被处理。
在例示的实施方案中,像素着色器234输入像素流(例如,包括像素组232)并且响应于输入像素流而输出零或另一像素流。输出合并器块236对从像素着色器234接收的像素执行混合、深度、模板或其他操作。
图形流水线200中的一些或所有着色器使用存储在存储资源205中的纹理数据执行纹理映射。例如,像素着色器234可以从存储资源205读取纹理数据并且使用纹理数据来对一个或多个像素进行着色。然后将着色的像素提供给显示器以呈现给用户。
图3是根据一些实施方案的选择性地节流调节由外壳着色器电路启动的线程组的处理系统300的第一部分的框图。处理系统300的第一部分是在图1所示的处理系统100和图2所示的图形流水线200的一些实施方案中实现的。
缓冲器的集合301、302、303、304(本文中统称为“缓冲器301至304”)用于存储与由外壳着色器电路(诸如,图2所示的外壳着色器218)启动的线程组相关联的元数据。缓冲器301至304与启动包括图元(诸如补丁)的一个或多个波的线程组的不同外壳着色器电路(为了清楚起见,图3中未示出)相关联。响应于启动线程组以在计算单元或SIMD上执行,外壳着色器电路向缓冲器301至304中的对应缓冲器提供与线程组相关联的元数据。因此,缓冲器301至304中的每个条目包括对应线程组的元数据。
缓冲器301至304与计数器的集合311、312、313、314(本文中统称为“计数器集合311至314”)相关联,这些计数器的集合具有表示用于在外壳着色器中处理对应线程组的所测量时间间隔或延迟的值。计数器集合311至314中的每个计数器与缓冲器301至304中的对应缓冲器中的条目相关联。例如,计数器集合311中的第一计数器与缓冲器301中的第一条目相关联。当元数据响应于外壳着色器电路启动线程组而添加到缓冲器301至304中的一个缓冲器中的对应条目时,计数器开始计数(例如,递增或递减)。
另一个缓冲器的集合321至324具有存储指示对应线程组已完成处理的值的条目。例如,响应于由对应外壳着色器电路启动的线程组完成在计算单元上的执行而写入缓冲器321中的条目。缓冲器中的条目用于停止由计数器集合311至314中的一个计数器集合中的对应计数器进行的计数。因此,计数器保存表示线程组的所测量的延迟的值,例如作为用于处理线程组的周期的数量。如本文关于图4所讨论,经由节点1将计数器集合311至314中的计数器的值的子集提供到处理系统300的第二部分。
仲裁器330按外壳着色器电路调度线程组的顺序从缓冲器301至304选择线程组元数据。例如,如果第一线程组由与缓冲器301相关联的外壳着色器电路进行调度并且第二线程组随后由与缓冲器302相关联的外壳着色器电路进行调度,则仲裁器330在从缓冲器302选择线程组元数据之前从缓冲器301选择线程组元数据。如本文关于图4所讨论,仲裁器330经由节点2向提取线程组的镶嵌因子的电路提供与线程组相关联的元数据。
图4是根据一些实施方案的选择性地节流调节由外壳着色器电路启动的线程组的处理系统300的第二部分的框图。处理系统300的第二部分是在图1所示的处理系统100和图2所示的图形流水线200的一些实施方案中实现的。
图4所示的处理系统300的第二部分包括电路405,该电路从存储器410提取镶嵌因子并且对镶嵌因子和从图3所示的仲裁器330接收的元数据执行处理。处理从仲裁器330接收的元数据包括解析所接收的线程组以识别线程组中所包括的图元(诸如补丁)。然后,向缓冲器415提供补丁、镶嵌因子和相关联的元数据。缓冲器415中的每个条目包括补丁及其相关联的镶嵌因子和元数据。然后,向补丁分配器420提供缓冲器415的条目中的信息,该补丁分配器将信息分配给与一个或多个镶嵌器(诸如图2所示的镶嵌器220)和域着色器(诸如图2所示的域着色器224)相关联的输出缓冲器。
电路405还向外壳着色器节流调节电路430中的寄存器425提供针对线程组中的图元或补丁的镶嵌因子。寄存器的集合425中的每个寄存器存储对基于应用于缓冲器415的对应条目中的线程组的补丁的镶嵌因子的值来从补丁生成的图元(诸如,三角形)的数量的估计。外壳着色器节流调节电路430还包括用于节流调节从外壳着色器启动的线程组的两个计数器。第一计数器435具有表示域着色器电路的图元启动时间间隔(例如,由域着色器用于处理和启动与由外壳着色器提供的一个或多个图元相关联的图元的集合的时间间隔)的总计数的值。第一计数器435响应于从缓冲器415向补丁分配器420提供补丁(以及相关联的镶嵌因子和元数据)而递增。在一些实施方案中,第一计数器435递增由寄存器的集合425中的对应寄存器指示的量。例如,第一计数器435可递增寄存器中的对应于从缓冲器415中的条目提供的补丁的图元或补丁的数量。
外壳着色器节流调节电路430中的第二计数器440具有表示错误计数的值,该值指示补丁的所测量的下游延迟(例如,用于由域着色器处理图元的时间间隔)和由镶嵌因子(例如,由基于镶嵌因子从补丁生成的图元的数量)指示的预测下游图元启动时间间隔之间的差值。在一些实施方案中,第二计数器440基于与线程组相关联的读取使能信号是在第二计数器440已倒计数至预定值(诸如零)之前还是之后到达来递增或递减。如本文所讨论,第二计数器440中的值用于基于所测量的域着色器延迟来修改第一计数器435,使得第一计数器435中的值指示域着色器在镶嵌之后处理图元所需的图元启动时间间隔。
外壳着色器节流调节电路430基于计数器的值来确定外壳着色器的延迟,这些计数器的值指示从外壳着色器启动的线程组的所测量的延迟。(经由节点1)从与在外壳着色器中处理图元的着色器引擎相关联的寄存器接收计数器的值,例如,图3所示的计数器集合311至314中的计数器中的值。在例示的实施方案中,计数器的值将延迟指示为处理对应线程组所需的时钟周期的数量。比较电路445检索预定数量的计数器值诸如用于由外壳着色器启动的最后八个线程组的八个计数器值,并且使用所检索的值来确定外壳着色器的平均延迟。延迟比较电路445将外壳着色器的平均延迟与域着色器的由第一计数器435中的总计数指示的图元启动时间间隔进行比较。如本文所讨论,外壳着色器节流调节电路430然后基于该比较来选择性地节流调节从外壳着色器电路启动线程组。
图5是根据一些实施方案的使用总计数和错误计数来估计域着色器的图元启动时间间隔的方法500的第一部分的流程图。方法500是在图1所示的处理系统100、图2所示的图形流水线200以及图3和图4所示的处理系统300的一些实施方案中实现的。在例示的实施方案中,节流调节电路用于实现方法500。
在框505处,节流调节电路截取线程组的写入数据,之后将其写入到FIFO缓冲器诸如图4所示的缓冲器415中。节流调节电路使用该信息来估计基于与线程组相关联的镶嵌因子(tf1,tf2)来生成的图元的数量。例如,图元的数量等于:
2*inside_tf1*inside_tf2(对于四边形补丁)
floor(1.5*inside_tf1^2)(对于三角形)
factor1*factor2(对于等值线)
然后,将图元的数量存储在对应于FIFO缓冲器中用于存储线程组数据的条目的寄存器(例如,图4所示的寄存器425中的一个寄存器)中。
在框510处,响应于对应线程组正被写入,使指示总计数的第一计数器递增图元的数量。在第一读取操作时,指示错误计数的第二计数器加载有等于缓冲器中当前位置的图元的数量的值。
在框515处,针对第一计数器(总计数)和第二计数器(错误计数)开始倒计数(或递减)。在一些实施方案中,第一计数器和第二计数器按镶嵌器的图元率和镶嵌器的数量的乘积来倒计数。
在决策框520处,节流调节电路确定第二计数器(错误计数)的值是否在节流调节电路接收到读取使能信号之前已达到零。如果没有,则方法500流到框540。如果第二计数器在接收到读取使能信号之前达到零,这指示域着色器的图元启动时间间隔已被低估,则方法500流到框525。
在框525处,节流调节电路在每个时钟周期使第二计数器(错误计数)递增,直到接收到读取使能信号。如果第二计数器的值达到最大值,则第二计数器的值被限制到最大值,使得第二计数器不滚计(roll over)。在框530处,节流调节电路接收读取使能信号。在框535处,节流调节电路将第二计数器的值添加到第一计数器的当前值。然后,方法500流到框515。
在框540处,节流调节电路在第二计数器的值达到零之前接收读取使能信号。然后,方法500流到将框540连接到图6中的决策框605的节点1。
图6是根据一些实施方案的使用总计数和错误计数来估计域着色器的图元启动时间间隔的方法500的第二部分的流程图。决策框605经由节点1连接到图5中的框540。
在决策框605处,节流调节电路确定在接收到读取使能信号时错误计数是否等于零。如果是,则方法500流到框610,并且将下一个位置加载到第二计数器中。然后,方法500经由节点2流到图5中的框515。
如果在接收到读取使能信号时错误计数不等于零(即,错误计数的值大于零),则方法500流到框615。大于零的错误计数指示域着色器的图元启动时间间隔已被高估。因此,在框615处,节流调节电路从第一计数器中的值(总计数)减去第二计数器中的值。然后,方法500经由节点2流到图5中的框515。
因此,第一计数器具有指示写入线程组和接收后续读取使能信号之间的周期的数量的值。因此,第一计数器中的总计数指示处理线程组中镶嵌后生成的图元所需的总域着色器时间/延迟。因此,总计数可用于将域着色器延迟与外壳着色器延迟进行比较,并且选择性地节流调节从外壳着色器启动波,以维持外壳着色器和域着色器中的线程组消耗速率之间的平衡。
图7是根据一些实施方案的选择性地节流调节从外壳着色器进行波启动的方法700的流程图。方法700是在图1所示的处理系统100、图2所示的图形流水线200以及图3和图4所示的处理系统300的一些实施方案中实现的。在例示的实施方案中,节流调节电路用于实现方法500。
在框705处,节流调节电路确定由节流调节电路中的第一计数器指示的总计数,该总计数指示域着色器的图元启动时间间隔。在框710处,如本文中所讨论,节流调节电路例如使用与由着色器引擎处理的线程组相关联的计数器的值来确定平均外壳着色器延迟。
在决策框715处,节流调节电路将总计数与外壳着色器延迟进行比较,并且确定总计数是否大于外壳着色器延迟的八倍。如果是,则该比较指示外壳着色器正领先于域着色器运行并且应当进行节流调节。因此,方法700流到框720,并且节流调节外壳着色器以实现每着色器引擎两个在途线程组。如果总计数小于或等于外壳着色器延迟的八倍,则方法700流到决策框725。
在决策框725处,节流调节电路将总计数与外壳着色器延迟进行比较,并且确定总计数是否大于外壳着色器延迟的四倍。如果是,则该比较指示外壳着色器正领先于域着色器运行,但领先程度并不像总计数大于外壳着色器延迟的八倍的情况那样。尽管如此,外壳着色器应当进行节流调节。因此,方法700流到框730,并且节流调节外壳着色器以实现每着色器引擎四个在途线程组。如果总计数小于或等于外壳着色器延迟的四倍,则方法700流到决策框735。
在决策框735处,节流调节电路将总计数与外壳着色器延迟进行比较,并且确定总计数是否大于外壳着色器延迟的两倍。如果是,则该比较指示外壳着色器正领先于域着色器运行,但领先程度并不像总计数大于外壳着色器延迟的四倍的情况那样。尽管如此,外壳着色器应当进行节流调节。因此,方法700流到框740,并且节流调节外壳着色器以实现每着色器引擎八个在途线程组。如果总计数小于或等于外壳着色器延迟的两倍,则方法700流到框745并且停用外壳着色器的节流调节。
计算机可读存储介质可以包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何非暂态存储介质或非暂态存储介质的组合。此类存储介质可以包括但不限于光学介质(例如,光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓冲存储器)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器)、或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入计算系统(例如,系统RAM或ROM)中,固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的闪存存储器),或者经由有线或无线网络(例如,网络可访问存储装置(NAS))耦接到计算机系统。
在一些实施方案中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器实现。软件包括可执行指令的一个或多个集合,该可执行指令存储在或以其他方式有形地体现在非暂态计算机可读存储介质上。软件可包括指令和某些数据,这些指令和数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂态计算机可读存储介质可包括例如磁盘或光盘存储设备、固态存储设备诸如闪存存储器、高速缓冲存储器、随机存取存储器(RAM)或其他一个或多个非易失性存储器设备等。存储在非暂态计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码、或者被一个或多个处理器解释或以其他方式执行的其他指令格式。
应当注意,并非以上在一般描述中描述的所有活动或元件都是必需的,特定活动或设备的一部分可能不是必需的,并且可以执行一个或多个另外的活动,或者除了所描述的那些之外还包括元件。更进一步地,列出活动的顺序不一定是执行它们的顺序。另外,已经参考具体实施方案描述了这些概念。然而,本领域普通技术人员理解,在不脱离如以下权利要求中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而非限制性的,并且所有此类修改旨在被包括在本公开的范围内。
上文已经关于具体实施方案描述了益处、其他优点和问题的解决方案。然而,益处、优点、问题的解决方案以及可以导致任何益处、优点或解决方案出现或变得更显著的任何特征不应被解释为任何或所有权利要求的关键的、必需的或基本的特征。此外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以以受益于本文中的教导内容的本领域的技术人员显而易见的不同但等效的方式来修改和实践。除了以下权利要求书中所描述的之外,不旨在对本文所示的构造或设计的细节进行限制。因此,显而易见的是,可以改变或修改上文公开的特定实施方案,并且所有此类变化被认为是在所公开的主题的范围内。因此,本文寻求的保护如以下权利要求中所阐述。
Claims (20)
1.一种设备,包括:
外壳着色器电路,所述外壳着色器电路被配置为启动包括一个或多个图元的线程组并且生成指示所述图元的细分的镶嵌因子;以及
节流调节电路,所述节流调节电路被配置为基于所述镶嵌因子来估计域着色器的图元启动时间间隔,并且基于所述图元启动时间间隔和外壳着色器的延迟来选择性地节流调节从所述外壳着色器电路启动所述线程组。
2.根据权利要求1所述的设备,还包括:
镶嵌器,所述镶嵌器被配置为基于所述镶嵌因子来将所述图元细分成较高分辨率图元,其中所述节流调节电路被配置为基于所述镶嵌因子来估计在所述域着色器处处理所述较高分辨率图元的周期的数量并且基于所述周期的数量来估计针对所述线程组的所述域着色器的所述图元启动时间间隔。
3.根据权利要求2所述的设备,还包括:
缓冲器,所述缓冲器包括被配置为存储由所述外壳着色器电路启动的所述线程组的条目;以及
寄存器的集合,所述寄存器的集合对应于所述缓冲器中的所述条目,其中所述寄存器的集合存储指示针对所述条目中的所述线程组估计的所述图元启动时间间隔的信息。
4.根据权利要求3所述的设备,其中所述寄存器的所述集合中的每个寄存器被配置为存储指示与所述寄存器相关联的所述线程组中的所述较高分辨率图元的数量和处理与所述寄存器相关联的所述线程组中的所述较高分辨率图元所需的周期的数量中的至少一者的信息。
5.根据权利要求4所述的设备,其中所述节流调节电路还包括:
第一计数器,所述第一计数器响应于从所述缓冲器启动线程组而递增,其中所述第一计数器递增由所述寄存器的集合中的对应寄存器指示的量;以及
第二计数器,所述第二计数器被配置为基于所述域着色器的所测量的延迟来修改所述第一计数器。
6.根据权利要求5所述的设备,其中所述第一计数器指示供所述域着色器在镶嵌之后处理图元的所述图元启动时间间隔。
7.根据权利要求6所述的设备,其中所述第二计数器基于与所述线程组相关联的读取使能信号是在所述第二计数器已倒计数至零之前还是之后到达来递增或递减。
8.根据权利要求1所述的设备,其中所述节流调节电路被配置为基于计数器的值来确定所述外壳着色器的所述延迟,所述计数器的值指示从所述外壳着色器电路启动的所述线程组中的图元的数量。
9.根据权利要求8所述的设备,其中所述节流调节电路被配置为基于所述域着色器的所述图元启动时间间隔与所述外壳着色器的所述延迟的比较来确定由所述外壳着色器电路启动的线程组的数量。
10.一种方法,包括:
从外壳着色器电路启动包括一个或多个图元的线程组;
在所述外壳着色器电路处生成指示所述图元的细分的镶嵌因子;
基于所述镶嵌因子来估计域着色器的图元启动时间间隔;以及
基于所述图元启动时间间隔和所述外壳着色器电路的延迟来选择性地节流调节从所述外壳着色器电路启动所述线程组。
11.根据权利要求10所述的方法,还包括:
基于所述镶嵌因子来将所述图元细分成较高分辨率图元;
基于所述镶嵌因子来估计在所述域着色器处处理所述较高分辨率图元的周期的数量;以及
基于所述周期的数量来估计针对所述线程组的所述图元启动时间间隔。
12.根据权利要求11所述的方法,还包括:
将由所述外壳着色器电路启动的所述线程组存储在缓冲器的条目中;以及
将指示针对所述条目中的所述线程组估计的所述图元启动时间间隔的信息存储在对应于所述缓冲器中的所述条目的寄存器的集合中。
13.根据权利要求12所述的方法,还包括:
将指示与所述寄存器相关联的所述线程组中的所述较高分辨率图元的数量和处理与所述寄存器相关联的所述线程组中的所述较高分辨率图元所需的周期的数量中的至少一者的信息存储在所述寄存器的所述集合中的每个寄存器中。
14.根据权利要求13所述的方法,还包括:
响应于从所述缓冲器启动线程组而使第一计数器递增,其中所述第一计数器递增由所述寄存器的集合中的对应寄存器指示的量;以及
利用存储在第二计数器中的值来修改所述第一计数器,其中所述值是基于所述域着色器的所测量的图元启动时间间隔来确定的。
15.根据权利要求14所述的方法,还包括:
响应于启动所述线程组而接收与所述线程组相关联的读取使能信号;以及
基于所述读取使能信号是在所述第二计数器已倒计数至零之前还是之后到达来选择性地使所述第二计数器递增或递减。
16.根据权利要求10所述的方法,还包括:
基于计数器的值来确定所述外壳着色器电路的所述延迟,所述计数器的值指示从所述外壳着色器电路启动的所述线程组中的图元的数量。
17.根据权利要求16所述的方法,其中选择性地节流调节所述线程组的所述启动包括:基于所述域着色器的所述图元启动时间间隔与所述外壳着色器电路的所述延迟的比较来确定由所述外壳着色器电路启动的线程组的数量。
18.一种设备,包括:
寄存器的集合,所述寄存器的集合被配置为存储指示针对由外壳着色器电路启动并且存储在缓冲器中的线程组估计的域着色器延迟的信息;
第一计数器,所述第一计数器响应于从所述缓冲器启动线程组而递增,其中所述第一计数器递增由所述寄存器的集合中的对应寄存器指示的量;
第二计数器,所述第二计数器被配置为基于域着色器的所测量的图元启动时间间隔来修改所述第一计数器;以及
延迟比较电路,所述延迟比较电路被配置为比较所述图元启动时间间隔与外壳着色器的延迟,其中从所述外壳着色器电路启动所述线程组基于所述比较来选择性地进行节流调节。
19.根据权利要求18所述的设备,其中所述第一计数器指示供所述域着色器在镶嵌之后处理图元的所述图元启动时间间隔。
20.根据权利要求19所述的设备,其中所述第二计数器是基于与所述线程组相关联的读取使能信号是在所述第二计数器已倒计数至零之前还是之后到达来递增或递减的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/121,965 | 2020-12-15 | ||
US17/121,965 US11508124B2 (en) | 2020-12-15 | 2020-12-15 | Throttling hull shaders based on tessellation factors in a graphics pipeline |
PCT/US2021/061387 WO2022132435A1 (en) | 2020-12-15 | 2021-12-01 | Throttling hull shaders based on tessellation factors in a graphics pipeline |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116745801A true CN116745801A (zh) | 2023-09-12 |
Family
ID=81941846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180084587.7A Pending CN116745801A (zh) | 2020-12-15 | 2021-12-01 | 基于图形流水线中的镶嵌因子来节流调节外壳着色器 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11508124B2 (zh) |
EP (1) | EP4264534A1 (zh) |
JP (1) | JP2023553151A (zh) |
KR (1) | KR20230125231A (zh) |
CN (1) | CN116745801A (zh) |
WO (1) | WO2022132435A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11069119B1 (en) * | 2020-02-28 | 2021-07-20 | Verizon Patent And Licensing Inc. | Methods and systems for constructing a shader |
US11508124B2 (en) * | 2020-12-15 | 2022-11-22 | Advanced Micro Devices, Inc. | Throttling hull shaders based on tessellation factors in a graphics pipeline |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9659339B2 (en) * | 2003-10-29 | 2017-05-23 | Nvidia Corporation | Programmable graphics processor for multithreaded execution of programs |
JP4260734B2 (ja) | 2004-12-21 | 2009-04-30 | 株式会社ソニー・コンピュータエンタテインメント | 描画処理装置、ラスタライザ、および描画処理方法 |
US7890738B2 (en) * | 2005-01-20 | 2011-02-15 | International Business Machines Corporation | Method and logical apparatus for managing processing system resource use for speculative execution |
US20070139421A1 (en) | 2005-12-21 | 2007-06-21 | Wen Chen | Methods and systems for performance monitoring in a graphics processing unit |
US8355028B2 (en) | 2007-07-30 | 2013-01-15 | Qualcomm Incorporated | Scheme for varying packing and linking in graphics systems |
US8006070B2 (en) * | 2007-12-05 | 2011-08-23 | International Business Machines Corporation | Method and apparatus for inhibiting fetch throttling when a processor encounters a low confidence branch instruction in an information handling system |
US8259111B2 (en) | 2008-05-30 | 2012-09-04 | Advanced Micro Devices, Inc. | Merged shader for primitive amplification |
US8633928B2 (en) | 2009-08-13 | 2014-01-21 | Intel Corporation | Reducing the bandwidth of sampler loads in shaders |
US9142057B2 (en) | 2009-09-03 | 2015-09-22 | Advanced Micro Devices, Inc. | Processing unit with a plurality of shader engines |
US8499305B2 (en) * | 2010-10-15 | 2013-07-30 | Via Technologies, Inc. | Systems and methods for performing multi-program general purpose shader kickoff |
US9442780B2 (en) | 2011-07-19 | 2016-09-13 | Qualcomm Incorporated | Synchronization of shader operation |
US9390554B2 (en) * | 2011-12-29 | 2016-07-12 | Advanced Micro Devices, Inc. | Off chip memory for distributed tessellation |
US9196079B2 (en) | 2011-12-30 | 2015-11-24 | Advanced Micro Devices, Inc. | Accelerated compute tessellation by compact topological data structure |
US9123167B2 (en) * | 2012-09-29 | 2015-09-01 | Intel Corporation | Shader serialization and instance unrolling |
US9177351B2 (en) | 2012-10-09 | 2015-11-03 | Qualcomm Incorporated | Multi-primitive graphics rendering pipeline |
US9594560B2 (en) | 2013-09-27 | 2017-03-14 | Intel Corporation | Estimating scalability value for a specific domain of a multicore processor based on active state residency of the domain, stall duration of the domain, memory bandwidth of the domain, and a plurality of coefficients based on a workload to execute on the domain |
KR102100161B1 (ko) | 2014-02-04 | 2020-04-14 | 삼성전자주식회사 | Gpu 데이터 캐싱 방법 및 그에 따른 데이터 프로세싱 시스템 |
US9530174B2 (en) | 2014-05-30 | 2016-12-27 | Apple Inc. | Selective GPU throttling |
US10025367B2 (en) | 2014-08-19 | 2018-07-17 | Intel Corporation | Dynamic scaling of graphics processor execution resources |
KR102327144B1 (ko) | 2014-11-26 | 2021-11-16 | 삼성전자주식회사 | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법 |
US10176014B2 (en) * | 2015-07-27 | 2019-01-08 | Futurewei Technologies, Inc. | System and method for multithreaded processing |
US10474462B2 (en) * | 2016-02-29 | 2019-11-12 | Qualcomm Incorporated | Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions |
US10664942B2 (en) | 2016-10-21 | 2020-05-26 | Advanced Micro Devices, Inc. | Reconfigurable virtual graphics and compute processor pipeline |
US10388056B2 (en) | 2017-01-26 | 2019-08-20 | Advanced Micro Devices, Inc. | Split frame rendering |
US10552321B2 (en) | 2017-08-04 | 2020-02-04 | Microsoft Technology Licensing, Llc | Flexible buffer sizing in graphics processors |
US10558499B2 (en) * | 2017-10-26 | 2020-02-11 | Advanced Micro Devices, Inc. | Wave creation control with dynamic resource allocation |
GB2571271B (en) * | 2018-02-21 | 2020-02-26 | Advanced Risc Mach Ltd | Graphics processing |
US10540260B2 (en) * | 2018-02-23 | 2020-01-21 | Intel Corporation | Dynamic instruction latency management in SIMD machines |
US11275613B2 (en) * | 2018-04-16 | 2022-03-15 | Advanced Micro Devices, Inc. | Enforcing central processing unit quality of service guarantees when servicing accelerator requests |
US10719268B2 (en) | 2018-06-29 | 2020-07-21 | Microsoft Technology Licensing, Llc | Techniques for safely and efficiently enqueueing and dequeueing data on a graphics processor |
US11720993B2 (en) | 2018-09-21 | 2023-08-08 | Advanced Micro Devices, Inc. | Dynamic kernel memory space allocation |
US11508124B2 (en) * | 2020-12-15 | 2022-11-22 | Advanced Micro Devices, Inc. | Throttling hull shaders based on tessellation factors in a graphics pipeline |
-
2020
- 2020-12-15 US US17/121,965 patent/US11508124B2/en active Active
-
2021
- 2021-12-01 KR KR1020237024083A patent/KR20230125231A/ko unknown
- 2021-12-01 CN CN202180084587.7A patent/CN116745801A/zh active Pending
- 2021-12-01 WO PCT/US2021/061387 patent/WO2022132435A1/en active Application Filing
- 2021-12-01 JP JP2023535510A patent/JP2023553151A/ja active Pending
- 2021-12-01 EP EP21907447.3A patent/EP4264534A1/en active Pending
-
2022
- 2022-10-26 US US17/974,199 patent/US11948251B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
KR20230125231A (ko) | 2023-08-29 |
US11508124B2 (en) | 2022-11-22 |
US20220189112A1 (en) | 2022-06-16 |
EP4264534A1 (en) | 2023-10-25 |
US20230169728A1 (en) | 2023-06-01 |
WO2022132435A1 (en) | 2022-06-23 |
US11948251B2 (en) | 2024-04-02 |
JP2023553151A (ja) | 2023-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9293109B2 (en) | Technique for storing shared vertices | |
KR101091374B1 (ko) | 테셀레이션을 단일 패스로 수행하기 위한 방법 및 시스템 | |
US9734548B2 (en) | Caching of adaptively sized cache tiles in a unified L2 cache with surface compression | |
US9830741B2 (en) | Setting downstream render state in an upstream shader | |
US9418616B2 (en) | Technique for storing shared vertices | |
US11948251B2 (en) | Throttling hull shaders based on tessellation factors in a graphics pipeline | |
US9558573B2 (en) | Optimizing triangle topology for path rendering | |
CN111316239B (zh) | 利用动态资源分配的波创建控制 | |
KR20220100877A (ko) | 대역폭 테셀레이션 팩터 감소 | |
CN116745800A (zh) | 针对高速缓存行的未命中请求的选择性生成 | |
US9406101B2 (en) | Technique for improving the performance of a tessellation pipeline | |
US9111360B2 (en) | Technique for improving the performance of a tessellation pipeline | |
US11710207B2 (en) | Wave throttling based on a parameter buffer | |
US11776085B2 (en) | Throttling shaders based on resource usage in a graphics pipeline | |
US20180181306A1 (en) | Method and apparatus of copying data to remote memory | |
US20230094115A1 (en) | Load multiple primitives per thread in a graphics pipeline |
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 |