CN117377973A - 基于参数缓冲器的波节流调节 - Google Patents
基于参数缓冲器的波节流调节 Download PDFInfo
- Publication number
- CN117377973A CN117377973A CN202280022164.7A CN202280022164A CN117377973A CN 117377973 A CN117377973 A CN 117377973A CN 202280022164 A CN202280022164 A CN 202280022164A CN 117377973 A CN117377973 A CN 117377973A
- Authority
- CN
- China
- Prior art keywords
- wave
- counter
- shader
- wave group
- execution
- 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 title claims description 46
- 238000012545 processing Methods 0.000 claims abstract description 48
- 230000004044 response Effects 0.000 claims abstract description 40
- 238000000034 method Methods 0.000 claims description 24
- 230000004913 activation Effects 0.000 claims 1
- 230000015654 memory Effects 0.000 description 23
- 238000004519 manufacturing process Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000003750 conditioning effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000011664 signaling 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
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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
Abstract
一种图形流水线(300),包括生成第一波组的第一着色器(305)、启动该第一波组以供执行的着色器处理器输入(SPI)(310)、以及基于在一个或多个着色器中处理该第一波组的结果来生成第二波以供执行的扫描转换器(360)。基于飞行中的第一波组和在至少一个第二着色器上待决执行的第二波的比较来选择性地节流调节该第一波组。高速缓存(340)保持响应于该第一波组在该着色器上完成执行而被写入到该高速缓存的信息。响应于由该第二波发出的读取请求而从该高速缓存读取信息。在一些情况下,通过比较有多少第一波组在飞行中以及有多少对该高速缓存的读取请求是待决的来选择性地节流调节该第一波组。
Description
背景技术
图形处理单元(GPU)实现图形处理流水线,该图形处理流水线同时处理从命令缓冲器检索的命令的副本。GPU和其他多线程处理单元通常实施将多个数据集上的单个程序的多个实例作为单个波同时执行的多个处理元件(其也被称为处理器内核或计算单元)。分级执行模型用于匹配在硬件中实现的分级结构。执行模型限定由所有波(也称为波前、线程、流或工作项)执行的指令的内核。GPU中的图形流水线包括使用图形流水线的资源(诸如计算单元、存储器和高速缓存)执行的一个或多个着色器。图形流水线通常被划分为几何部分,该几何部分对补丁或表示图像的部分的其他图元执行几何操作。几何部分中的着色器可包括顶点着色器、外壳着色器、域着色器和几何着色器。当由流水线的几何部分产生的图元被光栅化(例如,通过一个或多个扫描转换器)以形成表示图像的部分的像素集合时,图形流水线的几何部分完成。对像素的后续处理称为像素处理,并且包括由着色器(诸如,使用图形流水线的资源执行的像素着色器)执行的操作。
附图说明
通过参考附图,本公开可以被更好地理解,并且其许多特征和优点对于本领域技术人员是显而易见的。在不同附图中使用相同的附图标记表示类似或相同的项目。
图1是根据一些实施方案的处理系统的框图。
图2描绘根据一些实施方案的能够处理高阶几何图元以在预定分辨率下生成三维(3D)场景的栅格化图像的图形流水线。
图3是根据一些实施方案的选择性地节流调节由几何着色器启动的波或波组的图形流水线的一部分的框图。
图4是根据一些实施方案的选择性地节流调节波或波组的管理电路的第一实施方案的框图。
图5是根据一些实施方案的选择性地节流调节波或波组的管理电路的第二实施方案的框图。
图6是根据一些实施方案的选择性地启动几何着色器波或波组的方法的流程图。
具体实施方式
在分派波组(其包括一个或多个波)以供由着色器集线器中的计算单元实现的一个或多个着色器处理之前,几何引擎在存储器或高速缓存中保留空间以存储通过在着色器中处理波组而生成的输出。例如,几何引擎可向PC管理器传输保留请求,以获得保持参数缓冲器的空间。PC管理器在2级(L2)高速缓存中保留所请求的空间,并且向几何引擎返回识别L2高速缓存中的所保留的空间的信息。响应于接收到保留确认,几何引擎将波组提供给着色器处理器输入(SPI),该着色器处理器输入启动波组以供由着色器集线器中的计算单元处理。来自着色器输出的属性被存储在L2高速缓存中的所保留的空间中。位置被提供给汇编图元(诸如三角形)并经由图元集线器将图元发送给扫描转换器的图元汇编器。扫描转换器生成返回到SPI的像素波,该SPI从L2高速缓存提取属性。着色器集线器中的计算单元然后使用从L2高速缓存检索到的属性对像素波执行像素处理。因此,在由几何引擎生成的图形着色器波组与由扫描转换器生成的像素波之间存在相依性。如果几何引擎启动将太多数据写入到L2高速缓存的太多波组,该相依性可使得L2高速缓存中的其他数据类型的空间不足,这导致过度高速缓存颠簸并且降低图形流水线的性能。
图1至图6公开了用于通过基于由扫描转换器生成的飞行中的GS工作与待决像素着色器(PS)工作的比较而选择性地节流调节由着色器处理器输入(SPI)启动的几何着色器(GS)波组(或与其他着色器诸如顶点着色器相关联的波组)来减少由几何着色器和像素着色器共享的高速缓存的颠簸的系统和技术。扫描转换器向SPI提供从高速缓存读取信息的请求。管理电路的一些实施方案维持用于以下三个事件的计数器:(1)针对GS波组的启动的第一计数器,(2)针对通过写入到高速缓存已经在着色器上完成执行的GS波组的第二计数器,以及(3)针对从高速缓存读取由扫描转换器生成的PS波的请求的数量的第三计数器。计数器响应于写入到窗口化先进先出(FIFO)缓冲器中的对应事件而递增,并且响应于从窗口化FIFO读出的对应事件而递减。管理电路基于第一计数器与第二计数器之间的差值来确定飞行中的GS工作的量。管理电路基于第二计数器与第三计数器之间的差值来确定待决的PS工作的量。如果飞行中的GS工作的量高于待决的PS工作的量,则管理电路节流调节由SPI启动的波组。否则,SPI根据算法诸如贪婪算法自由地启动波组。在一些实施方案中,修改用于节流调节波组的标准,使得在飞行中的GS工作的量高于待决的PS工作的量加上用以降低节流调节使图形流水线工作停滞的可能性的附加因子的情况下,管理电路节流调节由SPI启动的波组。例如,可基于由待决的PS工作请求的读取的数量的突发性的测量来确定附加因子。
图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的一些实施方案中实现的。在一些实施方案中,包括计算单元121至123的流水线电路用于实现执行不同类型的着色器的图形流水线,这些着色器包括但不限于顶点着色器、外壳着色器、域着色器、几何着色器和像素着色器。处理系统100的一些实施方案包括一个或多个高速缓存,该一个或多个高速缓存保持由着色器响应于完成波或波组(诸如几何着色器波组)的执行而写入到高速缓存的信息。写入到高速缓存的信息随后在执行其他波或波组(诸如像素着色器波)期间被读出。几何着色器的一些实施方案生成第一波组,并且着色器处理器输入(SPI)启动第一波组以由着色器执行。扫描转换器基于在一个或多个着色器中处理第一波组的结果而生成用于在着色器上执行的第二波。基于飞行中的第一波组和在至少一个着色器上待决执行的第二波的比较来选择性地节流调节第一波组。高速缓存保持响应于第一波组在着色器上完成执行而被写入到该高速缓存的信息。响应于由该第二波发出的读取请求而从该高速缓存读取信息。在一些情况下,通过比较有多少第一波组在飞行中以及有多少对该高速缓存的读取请求是待决的来选择性地节流调节该第一波组。
图2描绘根据一些实施方案的能够处理高阶几何图元以在预定分辨率下生成三维(3D)场景的栅格化图像的图形流水线200。图形流水线200是在图1所示的处理系统100的一些实施方案中实现的。图形流水线200的所示出的实施方案根据DX11规范来实现。图形流水线200的其他实施方案根据其他应用程序编程接口(API)诸如Vulkan、Metal、DX12等来实现。图形流水线200被细分成包括图形流水线200在栅格化之前的部分的几何处理部分201和包括图形流水线200在栅格化之后的部分的像素处理部分202。
图形流水线200可访问存储资源205,诸如用于实现缓冲器并且存储顶点数据、纹理数据等的一个或多个存储器或高速缓存的层级结构。在例示的实施方案中,存储资源205包括用于存储数据的加载数据存储(LDS)206电路。存储资源205也包括高速缓存频繁使用的数据的一个或多个高速缓存207。高速缓存207用于实现参数缓冲器。如本文所讨论的,在图形流水线200的着色器上执行的波或波组通过将处理波或波组的结果写入到高速缓存207中而完成执行。沿图形流水线200进一步向下的着色器可发出从高速缓存207读取信息的读取请求,诸如由先前在着色器上完成执行的波或波组处理的结果。使用图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中的其他实体访问。
镶嵌器220从外壳着色器218接收对象(诸如补丁)。在一些实施方案中,由外壳着色器218生成的图元被提供给镶嵌器220。镶嵌器220例如通过基于由外壳着色器218生成的镶嵌因子对输入对象进行镶嵌来生成识别对应于输入对象的图元的信息。镶嵌将输入的高阶图元(诸如补丁)细分为一组低阶输出图元,该组低阶输出图元表示更精细的细节级别,例如,如指定由镶嵌过程产生的图元粒度的镶嵌因子所指示的那样。因此,场景的模型由较少数量的较高阶图元表示(以节省存储器或带宽),并且通过对较高阶图元进行镶嵌来添加附加的细节。
域着色器224输入域位置和(可选地)其他补丁数据。域着色器224对所提供的信息进行操作,并且基于输入域位置和其他信息生成用于输出的单个顶点。在例示的实施方案中,域着色器224基于三角形211和镶嵌因子生成图元222。域着色器224响应于完成处理而启动图元222。
几何着色器226从域着色器224接收输入图元并且输出由几何着色器226基于输入图元来生成的多达四个图元(每输入图元)。在例示的实施方案中,几何着色器226基于镶嵌式图元222生成输出图元228。几何着色器226的一些实施方案生成由对应着色器处理器输入(SPI,为了清楚起见未在图2中示出)启动的波组(本文中被称为“GS波组”)。响应于在着色器引擎上完成执行,波组将输出写回到高速缓存207。
一个图元流被提供给一个或多个扫描转换器230,并且在一些实施方案中,多达四个图元流被级联到存储资源205中的缓冲器。扫描转换器230执行着色操作和其他操作,诸如裁剪、透视划分、剪切和视口选择等。扫描转换器230生成一组232像素,该组像素随后在图形流水线200的像素处理部分202中被处理。扫描转换器230的一些实施方案例如通过将请求传输到在图形流水线200中实现的SPI来提供从高速缓存207读取信息的请求。
在例示的实施方案中,像素着色器234输入像素流(例如,包括像素组232)并且响应于输入像素流而输出零或另一像素流。输出合并器块236对从像素着色器234接收的像素执行混合、深度、模板或其他操作。
图形流水线200中的一些或所有着色器使用存储在存储资源205中的纹理数据执行纹理映射。例如,像素着色器234可以从存储资源205读取纹理数据并且使用纹理数据来对一个或多个像素进行着色。然后将着色的像素提供给显示器以呈现给用户。
图3是根据一些实施方案的选择性地节流调节由几何着色器启动的波或波组的图形流水线300的一部分的框图。图形流水线300是在图1所示的处理系统100和图2所示的图形流水线200的一些实施方案中实现的。
几何引擎305生成用于几何着色器的波或波组。由几何引擎305生成的波或波组因此被称为GS波组。然而,在一些实施方案中,波或波组由或针对其他着色器(诸如顶点着色器)生成,在这种情况下,波或波组由其他名称(诸如VS波组)指代。几何引擎305将GS波组提供给SPI 310,该SPI选择性地启动或节流调节GS波组,如本文所讨论的。几何引擎305还向管理电路315提供信息以发信号通知GS波组的启动,如箭头320所指示的。管理电路315响应于将启动事件写入到窗口化缓冲器330中而递增第一计数器325。管理电路315还响应于从窗口化缓冲器330读出启动事件而递减第一计数器325。
SPI 310启动GS波组用于在着色器集线器335中的一个或多个着色器上执行。GS波组由着色器集线器335执行,并且响应于完成执行,GS波组将结果写入高速缓存340。着色器集线器335响应于将结果写入到高速缓存340而向SPI 310发信号通知GS波组已经完成执行。着色器集线器335向SPI 310传输GS波组完成的指示,该SPI向管理电路315传输信号(本文被称为“完成”信号或“结束”信号)以指示GS波组已经完成执行,如箭头345所指示的。管理电路315响应于执行完成事件被写入到窗口化缓冲器330中而递增第二计数器326。管理电路315还响应于从窗口化缓冲器330读出执行完成事件而递减第二计数器326。
图元汇编器350通过处理GS波组来生成图元并且将这些图元提供到纵横器(crossbar)355(也被称为图元集线器),该纵横器将经汇编的图元提供到扫描转换器360。扫描转换器360生成像素着色器(PS)波以由着色器集线器335中的着色器执行。扫描转换器360因此发信号通知SPI 310,如365所指示的,并且SPI 310可启动PS波以用于在着色器集线器335处执行。SPI 310还生成从高速缓存340读取信息的读取请求,该信息由着色器集线器335使用以处理PS波。响应于生成读请求,SPI 310向管理电路315传输信号以指示读请求对于高速缓存340是待决的,如箭头370所指示的。管理电路315响应于读取请求事件正被写入到窗口化缓冲器330中而递增第三计数器327。管理电路315还响应于正从窗口化缓冲器330读出读取请求事件而递减第三计数器327。直到SPI 310从管理电路315接收到“GS波结束”信号,读取请求才离开SPI 310。
管理电路315的一些实施方案基于飞行中的GS波组和待决的PS波的数量的比较来选择性地节流调节来自SPI 310的启动(或者指示SPI 310选择性地节流调节这些启动)。管理电路315基于第一计数器325与第二计数器326之间的差值来确定飞行中的第一波组的第一数量。管理电路315还基于第二计数器326与第三计数器327之间的差值来确定在着色器集线器335中的着色器上待决执行的PS波的第二数量。管理电路315响应于第一数量低于第二数量而节流调节(或指示SPI 310节流调节)GS波组。管理电路315的一些实施方案确定附加“突发性”因子,该附加“突发性”因子被应用于降低GS波组的节流调节将使图形流水线300工作停滞的可能性。基于与PS波相关联的读取请求的突发性的估计来确定附加因子。在这种情况下,管理电路315响应于第一数量低于第二数量与附加突发性因子之和而节流调节(或指示SPI 310节流调节)GS波组。
图4是根据一些实施方案的选择性地节流调节波或波组的管理电路400的第一实施方案的框图。管理电路400的第一实施方案被用于实现图3所示的管理电路315的一些实施方案。管理电路400从事件生成电路405接收与事件相关联的信息。在一些实施方案中,该信息包括指示启动事件、完成执行事件、读取请求事件等的信令。
窗口化缓冲器410存储表示窗口化缓冲器410的条目中的事件的信息。窗口化缓冲器410的一些实施方案被实现为先进先出(FIFO)缓冲器,使得从事件生成电路405接收到的事件被添加(或推送)到窗口化缓冲器410的尾部处的条目并且从窗口化缓冲器410的头部处的条目被移除(或弹出)。
管理电路400包括计数器的集合415,这些计数器被用于响应于条目被添加到窗口化缓冲器410而对事件进行计数。在例示的实施方案中,集合415包括:启动计数器416,该启动计数器对启动以在一个或多个着色器中执行的GS波或波组进行计数;产生计数器417,该产生计数器对通过写入到高速缓存而完成执行的GS波或波组进行计数;和消耗计数器418,该消耗计数器对例如针对PS波的对高速缓存的读取请求进行计数。启动计数器416、产生计数器417和消耗计数器418响应于对应事件被添加到窗口化缓冲器410而递增。当空闲时,集合415中的计数器416-418重置为0(或其他预先确定的值)。
管理电路400也包括计数器的集合420,这些计数器被用于对包括在窗口化缓冲器410中的启动事件、产生事件和消耗事件的数量进行计数。集合420包括启动事件计数器421,该启动事件计数器以写入到窗口化缓冲器410的启动事件的数量递增,并且以从窗口化缓冲器410读取的启动事件的数量递减。集合420也包括产生事件计数器422,该产生事件计数器以写入到窗口化缓冲器410的产生事件的数量递增,并且以从窗口化缓冲器410读取的产生事件的数量递减。集合420还包括消耗事件计数器423,该消耗事件计数器以写入到窗口化缓冲器410的消耗事件的数量递增,并且以从窗口化缓冲器410读取的消耗事件的数量递减。
管理电路400还包括用于事件类型(例如,启动事件、产生事件和消耗事件)中的每个事件类型的事件运行计数器425。事件运行计数器425对每个事件的突发性进行计数。每当在窗口化缓冲器410的写入侧上中断事件运行时,用于事件的事件运行计数器425递增一。例如,如果有50个启动事件而没有任何产生事件或消耗事件,则事件运行计数器425中的LaunchRunCounter递增一。如果在50次启动之后,在接下来的50个循环中存在50个启动事件和50个产生事件,则LaunchRunCounter具有值51并且ProduceRunCounter具有值50。
管理电路400使用计数器415、420、425的值来计算指示事件的突发性的参数。平均突发电路430计算每事件度量:
AverageBurst=EventCount/EventRunCount。
高速率电路435计算另一个每事件度量:
HighRate=EventCount+Event>AverageBurst。
由平均突发电路430和高速率电路435生成的值被提供给启动决定电路440,该启动决定电路使用该信息结合计数器415、420、425的值来选择性地节流调节GS波或波组的启动。
启动决定电路440的一些实施方案基于飞行中的GS工作和待决的PS工作的比较来选择性地节流调节GS波或波组的启动。基于启动计数器416与产生计数器417中的值之间的差值来估计飞行中的GS工作(WorkInFlight)。基于产生计数器417与消耗计数器418中的值之间的差值来估计待决的PS工作(WorkReady)。如果飞行中的GS工作大于待决的PS工作,则启动决定电路440节流调节GS波或波组的启动。在一些实施方案中,如果满足以下标准,则启动决定电路440节流调节GS波或波组的启动:
WorkInFlight>WorkReady+HighRate[Read]
附加因子(HighRate[Read])被包括以说明待决的PS工作(例如,对PS波的读取请求)的潜在突发性。
图5是根据一些实施方案的选择性地节流调节波或波组的管理电路500的第二实施方案的框图。管理电路500的第二实施方案被用于实现图3所示的管理电路315的一些实施方案。管理电路500从事件生成电路505接收与事件相关联的信息。在一些实施方案中,该信息包括指示启动事件、完成执行事件、读取请求事件等的信令。管理电路500包括计数器的集合515,这些计数器被用于响应于条目被添加到窗口化缓冲器510而对事件进行计数。集合515包括启动计数器516、产生计数器517和消耗计数器518。管理电路500还包括计数器521、522、523的集合520,这些计数器被用于对包括在窗口化缓冲器510中的启动事件、产生事件和消耗事件的数量进行计数。事件运行计数器525对包括启动事件、产生事件和消耗事件的每个事件的突发性进行计数。
管理电路500使用计数器515、520、525的值来计算指示事件的突发性的参数。平均突发电路530计算每事件度量:
AverageBurst=EventCount/EventRunCount。
高速率电路535计算另一个每事件度量:
HighRate=EventCount+EventAverageBurst。
低速率电路540计算另一个每事件度量:
LowRate=EventCount-EventAverageBurst。
由平均突发电路530、高速率电路535和低速率电路540生成的值被提供给启动决定电路545,该启动决定电路使用该信息结合计数器515、520、525的值来选择性地节流调节GS波或波组的启动。
启动决定电路545的一些实施方案基于飞行中的GS工作和待决的PS工作的比较来选择性地节流调节GS波或波组的启动。基于启动计数器516与产生计数器517中的值之间的差值来估计飞行中的GS工作(WorkInFlight)。基于产生计数器517与消耗计数器518中的值之间的差值来估计待决的PS工作(WorkReady)。在例示的实施方案中,启动决定电路545将消耗速率定义为:
ConsumeRate=HighRate[Consume]–LowRate[Produce]
然后,启动决定电路545例如使用以下定义来估计或预测准备好的工作量:
ReadyForecast=WorkReady–ConsumeRate
如果满足以下标准,则启动决定电路545节流调节GS波或波组的启动:
WorkInFlight>LowRate[Launch]–ReadyForecast
如果不满足该标准,则启动附加的GS波或波组。
图6是根据一些实施方案的选择性地启动GS波或波组的方法600的流程图。方法600是在图1所示的处理系统100、图2所示的图形流水线200、图3所示的图像流水线300、图4所示的管理电路400和图5所示的管理电路500的一些实施方案中实现的。
在框605处,管理电路对GS波组启动进行计数。在框610处,管理电路对GS波组完成进行计数。在框615处,管理电路对针对PS波的读取请求进行计数。在决策框620处,管理电路将飞行中的GS工作的量(基于GS波组启动和完成的数量来确定的)与待决的PS工作的量(基于GS波组完成和针对PS波的读取请求的数量来确定的)进行比较。在一些实施方案中,管理电路将飞行中的GS工作的量与待决的PS工作的量和说明PS工作的突发性的附加因子之和进行比较,如本文所讨论的。如果飞行中的GS工作超过待决的PS工作(可能被附加因子增强),则方法600流动到框625,并且管理电路节流调节GS波组的启动。如果飞行中的GS工作小于待决的PS工作(可能被附加因子增强),则方法600流动到框630,并且管理电路不节流调节GS波组的启动。
计算机可读存储介质可以包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何非暂态存储介质或非暂态存储介质的组合。此类存储介质可以包括但不限于光学介质(例如,光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器)、或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入计算系统(例如,系统RAM或ROM)中,固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的闪存存储器),或者经由有线或无线网络(例如,网络可访问存储装置(NAS))耦接到计算机系统。
在一些实施方案中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器实现。软件包括可执行指令的一个或多个集合,该可执行指令存储在或以其他方式有形地体现在非暂态计算机可读存储介质上。软件可包括指令和某些数据,这些指令和数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂态计算机可读存储介质可包括例如磁盘或光盘存储设备、固态存储设备诸如闪存存储器、高速缓存、随机存取存储器(RAM)或其他一个或多个非易失性存储器设备等。存储在非暂态计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码、或者被一个或多个处理器解释或以其他方式执行的其他指令格式。
应当注意,并非以上在一般描述中描述的所有活动或元件都是必需的,特定活动或设备的一部分可能不是必需的,并且可以执行一个或多个另外的活动,或者除了所描述的那些之外还包括元件。更进一步地,列出活动的顺序不一定是执行它们的顺序。另外,已经参考具体实施方案描述了这些概念。然而,本领域普通技术人员理解,在不脱离如以下权利要求中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而非限制性的,并且所有此类修改旨在被包括在本公开的范围内。
上文已经关于具体实施方案描述了益处、其他优点和问题的解决方案。然而,益处、优点、问题的解决方案以及可以导致任何益处、优点或解决方案出现或变得更显著的任何特征不应被解释为任何或所有权利要求的关键的、必需的或基本的特征。此外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以以受益于本文中的教导内容的本领域的技术人员显而易见的不同但等效的方式来修改和实践。除了以下权利要求书中所描述的之外,不旨在对本文所示的构造或设计的细节进行限制。因此,显而易见的是,可以改变或修改上文公开的特定实施方案,并且所有此类变化被认为是在所公开的主题的范围内。因此,本文寻求的保护如以下权利要求中所阐述。
Claims (20)
1.一种装置,包括:
第一着色器,所述第一着色器被配置为生成第一波组;
着色器处理器输入(SPI),所述SPI被配置为启动所述第一波组;和
扫描转换器,所述扫描转换器被配置为基于在至少一个第二着色器中处理所述第一波组的结果来生成第二波,其中基于飞行中的第一波组与在所述至少一个第二着色器上待决执行的第二波的比较来选择性地节流调节所述第一波组。
2.根据权利要求1所述的装置,还包括:
高速缓存,所述高速缓存被配置为保持响应于所述第一波组在所述至少一个第二着色器上完成执行而存储的信息,其中所述信息由对应第二波读取。
3.根据权利要求2所述的装置,还包括:
第一计数器,所述第一计数器被配置为对所述第一波组的启动进行计数;
第二计数器,所述第二计数器被配置为对通过写入到所述高速缓存已经在所述至少一个第二着色器上完成执行的所述第一波组进行计数;和
第三计数器,所述第三计数器被配置为对来自所述第二波的从所述高速缓存进行读取的请求进行计数。
4.根据权利要求3所述的装置,其中所述第一计数器、所述第二计数器和所述第三计数器分别响应于启动事件、执行完成事件和读取请求事件被写入到窗口化缓冲器中而递增。
5.根据权利要求4所述的装置,其中所述第一计数器、所述第二计数器和所述第三计数器分别响应于所述启动事件、所述执行完成事件和所述读取请求事件从所述窗口化缓冲器中被读出而递减。
6.根据权利要求5所述的装置,还包括:
管理电路,所述管理电路被配置为基于所述第一计数器与所述第二计数器之间的差值来确定飞行中的第一波组的第一数量,并且被配置为基于所述第二计数器与所述第三计数器之间的差值来确定在所述至少一个第二着色器上待决执行的第二波的第二数量。
7.根据权利要求6所述的装置,其中所述管理电路被配置为响应于所述第一数量低于所述第二数量而节流调节由所述SPI启动的所述第一波组。
8.根据权利要求7所述的装置,其中所述管理电路被配置为响应于所述第一数量低于所述第二数量加上附加因子而节流调节由所述SPI启动的所述第一波组,所述附加因子是基于与所述第二波相关联的读取请求的突发性来估计的。
9.根据权利要求8所述的装置,其中所述管理电路被配置为确定所述附加因子以降低节流调节使图形流水线工作停滞的可能性。
10.一种方法,包括:
在第一着色器处生成用于由着色器处理器输入(SPI)启动的第一波组;
在扫描转换器处基于在至少一个第二着色器中处理所述第一波组的结果来生成第二波;以及
基于飞行中的第一波组和在所述至少一个第二着色器上待决执行的第二波的比较来选择性地节流调节所述第一波组。
11.根据权利要求10所述的方法,还包括:
响应于所述第一波组在所述至少一个第二着色器上完成执行而将信息写入到高速缓存,其中所述信息由对应第二波读取。
12.根据权利要求11所述的方法,还包括:
在第一计数器处对所述第一波组的启动进行计数;
在第二计数器处对通过写入到所述高速缓存已经在所述至少一个第二着色器上完成执行的所述第一波组进行计数;以及
在第三计数器处对来自所述第二波的从所述高速缓存进行读取的请求进行计数。
13.根据权利要求12所述的方法,还包括:
将启动事件写入到窗口化缓冲器,其中对所述第一波组的所述启动进行计数包括响应于将所述启动事件写入到所述窗口化缓冲器而递增所述第一计数器;以及
从所述窗口化缓冲器读取所述启动事件,其中对所述第一波组的所述启动进行计数包括响应于从所述窗口化缓冲器读取所述启动事件而递减所述第一计数器。
14.根据权利要求13所述的方法,还包括以下中的一者:
将执行完成事件写入到所述窗口化缓冲器,其中对已经完成执行的所述第一波组进行计数包括响应于将所述执行完成事件写入到所述窗口化缓冲器而递增所述第二计数器;以及
从所述窗口化缓冲器读取所述执行完成事件,其中对已经完成执行的所述第一波组进行计数包括响应于从所述窗口化缓冲器读取所述执行完成事件而递减所述第二计数器。
15.根据权利要求13所述的方法,还包括:
将读取请求事件写入到所述窗口化缓冲器,其中对来自所述第二波的所述请求进行计数包括响应于将所述读取请求事件写入到所述窗口化缓冲器而递增所述第三计数器;以及
从所述窗口化缓冲器读取所述读取请求事件,其中对来自所述第二波的所述请求进行计数包括响应于从所述窗口化缓冲器读取所述读取请求事件而递减所述第三计数器。
16.根据权利要求15所述的方法,还包括:
基于所述第一计数器与所述第二计数器之间的差值来确定飞行中的第一波组的第一数量;以及
基于所述第二计数器与所述第三计数器之间的差值来确定在所述至少一个第二着色器上待决执行的第二波的第二数量。
17.根据权利要求16所述的方法,其中选择性地节流调节所述第一波组包括响应于所述第一数量低于所述第二数量而节流调节由所述SPI启动的所述第一波组。
18.根据权利要求17所述的方法,其中选择性地节流调节所述第一波组包括响应于所述第一数量低于所述第二数量加上基于所述读取请求的突发性来估计的附加因子而节流调节由所述SPI启动的所述第一波组。
19.根据权利要求18所述的方法,还包括:
确定所述附加因子以降低节流调节使图形流水线工作停滞的可能性。
20.一种装置,包括:
第一着色器,所述第一着色器被配置为生成第一波组;
扫描转换器,所述扫描转换器被配置为基于在至少一个第二着色器中处理所述第一波组的结果来生成第二波;和
高速缓存,所述高速缓存被配置为保持响应于所述第一波组在所述至少一个第二着色器上完成执行而存储的信息,其中基于已经启动并且尚未通过写入到所述高速缓存而完成执行的所述第一波组的第一数量与来自在所述至少一个第二着色器上待决执行的第二波的对所述高速缓存的读取请求的第二数量的比较来选择性地节流调节所述第一波组。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/217,050 US11710207B2 (en) | 2021-03-30 | 2021-03-30 | Wave throttling based on a parameter buffer |
US17/217,050 | 2021-03-30 | ||
PCT/US2022/017156 WO2022211926A1 (en) | 2021-03-30 | 2022-02-21 | Wave throttling based on a parameter buffer |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117377973A true CN117377973A (zh) | 2024-01-09 |
Family
ID=83448240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280022164.7A Pending CN117377973A (zh) | 2021-03-30 | 2022-02-21 | 基于参数缓冲器的波节流调节 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11710207B2 (zh) |
EP (1) | EP4315228A1 (zh) |
JP (1) | JP2024512466A (zh) |
KR (1) | KR20240004302A (zh) |
CN (1) | CN117377973A (zh) |
WO (1) | WO2022211926A1 (zh) |
Family Cites Families (35)
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 |
US7594095B1 (en) * | 2005-11-29 | 2009-09-22 | Nvidia Corporation | Multithreaded SIMD parallel processor with launching of groups of threads |
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 |
US9965321B2 (en) * | 2011-12-09 | 2018-05-08 | Nvidia Corporation | Error checking in out-of-order task scheduling |
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 |
US10127707B2 (en) * | 2016-06-27 | 2018-11-13 | Intel Corporation | Discard mechanism for tile-based rendering |
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 |
US10713746B2 (en) * | 2018-01-29 | 2020-07-14 | Microsoft Technology Licensing, Llc | FIFO queue, memory resource, and task management for graphics processing |
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 |
-
2021
- 2021-03-30 US US17/217,050 patent/US11710207B2/en active Active
-
2022
- 2022-02-21 KR KR1020237035150A patent/KR20240004302A/ko unknown
- 2022-02-21 WO PCT/US2022/017156 patent/WO2022211926A1/en active Application Filing
- 2022-02-21 EP EP22781816.8A patent/EP4315228A1/en active Pending
- 2022-02-21 JP JP2023556932A patent/JP2024512466A/ja active Pending
- 2022-02-21 CN CN202280022164.7A patent/CN117377973A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11710207B2 (en) | 2023-07-25 |
US20220318944A1 (en) | 2022-10-06 |
KR20240004302A (ko) | 2024-01-11 |
WO2022211926A1 (en) | 2022-10-06 |
JP2024512466A (ja) | 2024-03-19 |
EP4315228A1 (en) | 2024-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20040075654A1 (en) | 3-D digital image processor and method for visibility processing for use in the same | |
US11948251B2 (en) | Throttling hull shaders based on tessellation factors in a graphics pipeline | |
KR20220100877A (ko) | 대역폭 테셀레이션 팩터 감소 | |
CN111316239B (zh) | 利用动态资源分配的波创建控制 | |
CN116745800A (zh) | 针对高速缓存行的未命中请求的选择性生成 | |
US20220156874A1 (en) | Processing system with selective priority-based two-level binning | |
US11710207B2 (en) | Wave throttling based on a parameter buffer | |
US11562459B2 (en) | Selectively writing back dirty cache lines concurrently with processing | |
US9406101B2 (en) | Technique for improving the performance of a tessellation pipeline | |
US20220237851A1 (en) | Spatial partitioning in a multi-tenancy graphics processing unit | |
US9111360B2 (en) | Technique for improving the performance of a tessellation pipeline | |
US11776085B2 (en) | Throttling shaders based on resource usage in a graphics pipeline | |
US20230205602A1 (en) | Priority inversion mitigation |
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 |