CN117616398A - Gpu范围界定中的性能开销优化 - Google Patents
Gpu范围界定中的性能开销优化 Download PDFInfo
- Publication number
- CN117616398A CN117616398A CN202280048028.5A CN202280048028A CN117616398A CN 117616398 A CN117616398 A CN 117616398A CN 202280048028 A CN202280048028 A CN 202280048028A CN 117616398 A CN117616398 A CN 117616398A
- Authority
- CN
- China
- Prior art keywords
- clusters
- workload
- processing
- gpu
- performance counters
- 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
- 238000005457 optimization Methods 0.000 title description 6
- 238000012545 processing Methods 0.000 claims abstract description 239
- 238000000034 method Methods 0.000 claims abstract description 159
- 230000015654 memory Effects 0.000 claims description 75
- 230000005540 biological transmission Effects 0.000 claims description 7
- 239000003550 marker Substances 0.000 claims description 6
- 230000008569 process Effects 0.000 abstract description 55
- 238000009877 rendering Methods 0.000 description 73
- 238000010586 diagram Methods 0.000 description 62
- 230000006870 function Effects 0.000 description 19
- 230000007246 mechanism Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 102100038126 Tenascin Human genes 0.000 description 2
- 108010008125 Tenascin Proteins 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 235000021474 generally recognized As safe (food) Nutrition 0.000 description 1
- 235000021473 generally recognized as safe (food ingredients) Nutrition 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3485—Performance evaluation by tracing or monitoring for I/O devices
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Image Generation (AREA)
Abstract
本公开涉及用于图形处理的方法和设备,包括装置(例如,GPU)。该装置可在GPU管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载。该装置还可在该多个集群中的每个集群处对该第一工作负载的处理期间使多个性能计数器递增。此外,该装置可在该多个集群中的每个集群处确定该第一工作负载是否完成处理。该装置还可在确定该第一工作负载完成处理时,读取针对该多个性能计数器中的每个性能计数器的该多个集群中的每个集群的值。附加地,该装置可传输针对该多个性能计数器中的所有性能计数器的该多个集群中的每个集群的所读取的值的指示。
Description
相关申请的交叉引用
本申请要求于2021年7月12日提交的名称为“GPU范围界定中的性能开销优化(PERFORMANCE OVERHEAD OPTIMIZATION IN GPU SCOPING)”的美国非临时专利申请序列17/373,718号的权益,该美国非临时专利申请以引用的方式全文明确并入本文。
技术领域
本公开总体上涉及处理系统,并且更具体地,涉及用于图形处理的一种或多种技术。
背景技术
计算设备通常执行图形和/或显示处理(例如,利用图形处理单元(GPU)、中央处理单元(CPU)、显示处理器等)以渲染和显示视觉内容。此类计算设备可包括例如计算机工作站、移动电话(诸如智能电话)、嵌入式系统、个人计算机、平板计算机和视频游戏控制台。GPU被配置为执行图形处理管线(pipeline),该图形处理管线包括一个或多个处理级(stage),这些处理级一起操作以执行图形处理命令并输出帧。中央处理单元(CPU)可以通过向GPU发出一个或多个图形处理命令来控制该GPU的操作。现代CPU通常能够并发地执行多个应用,每个应用可能需要在执行期间利用GPU。显示处理器被配置成将从CPU接收的数字信息转换成模拟值,并且可以向显示面板发出命令以显示可视内容。提供用于在显示器上可视呈现的内容的设备可以利用GPU和/或显示处理器。
设备的GPU被配置为执行在图形处理管线中的过程。此外,显示处理器或显示处理单元(DPU)可以被配置为执行显示处理的过程。然而,随着无线通信和更小的手持设备的出现,已经发展出针对改善的图形或显示处理的增加的需求。
发明内容
下面给出了一个或多个方面的简化总结,以便提供对这些方面的基本理解。该概述不是对所有预期方面的广泛概述,并且既不旨在识别所有方面的关键或重要元素,也不旨在描述任何或所有方面的范围。其唯一目的是以简化形式给出一个或多个方面的一些概念,作为稍后给出的更详细的描述的前序。
在本公开的一个方面,提供了一种方法、计算机可读介质和装置。该装置可以是图形处理单元(GPU)或可执行图形处理的任何装置。该装置可在多个集群中的每个集群处接收多个工作负载中的第一工作负载,其中在接收到该第一工作负载之后在该多个集群中的每个集群处处理该第一工作负载。该装置还可在图形处理单元(GPU)管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载。附加地,该装置可在该多个集群中的每个集群处对该第一工作负载的该处理期间使多个性能计数器递增。该装置还可在该多个集群中的每个集群处确定该第一工作负载是否完成处理。该装置还可在确定该第一工作负载在该多个集群中的一个集群处完成处理时,将该第一工作负载从该多个集群中的该一个集群传输到该多个集群中的后续集群。此外,该装置可在该多个集群中的每个集群处完成对该第一工作负载的处理时,将该第一工作负载完成处理的指示从该多个集群中的每个集群传输到调试控制器(DBGC)。该装置还可在确定该第一工作负载完成处理时,读取针对该多个性能计数器中的每个性能计数器的该多个集群中的每个集群的值。该装置还可在读取该多个集群中的每个集群的该值之后,将针对该多个性能计数器中的每个性能计数器的该多个集群中的每个集群的该值存储在存储器或缓冲器中。此外,该装置可传输针对该多个性能计数器中的所有性能计数器的该多个集群中的每个集群的所读取的值的指示。该装置还可当对于该第一工作负载,针对该多个集群中的每个集群完成该多个性能计数器的读取时,在该多个集群中的每个集群处处理该多个工作负载中的第二工作负载。
在附图和以下描述中阐述了本公开的一个或多个示例的细节。本公开的其他特征、目的和优点将从描述和附图以及权利要求中显而易见。
附图说明
图1是示出根据本公开的一种或多种技术的示例内容生成系统的框图。
图2示出了根据本公开的一种或多种技术的示例GPU。
图3示出了根据本公开的一种或多种技术的示例图像或表面。
图4是示出了根据本公开的一种或多种技术的示例GPU管线和性能计数器的示图。
图5是示出了根据本公开的一种或多种技术的针对GPU的不同模式的示例剖析的示图。
图6是示出了根据本公开的一种或多种技术的GPU中的示例硬件集群的示图。
图7A示出了根据本公开的一种或多种技术的示例性能计数器范围界定的示图。
图7B示出了根据本公开的一种或多种技术的示例性能计数器范围界定的示图。
图8是示出了根据本公开的一种或多种技术的针对GPU的不同模式的示例剖析的示图。
图9是示出了根据本公开的一种或多种技术的针对GPU的不同模式的示例剖析的示图。
图10是示出了根据本公开的一种或多种技术的在GPU管线、GPU组件和存储器/缓冲器之间的示例通信的通信流程图。
图11是根据本公开的一种或多种技术的图形处理的示例方法的流程图。
图12是根据本公开的一种或多种技术的图形处理的示例方法的流程图。
具体实施方式
图形处理的一些方面可通过在定义的工作负载边界处读取GPU管线中的不同性能计数器来利用GPU范围界定。在GPU范围界定的一些方面,前述性能计数器可被放置在GPU管线的块中并且可被用来计算特定块中的每个工作负载的不同操作的数量(例如,工作负载的总处理时间)。在一些实例中,可能有必要在GPU管线的每个级处捕获这些性能计数器。在GPU的一些模式(例如,正常任务模式)中,可将多个工作负载批次发送到GPU管线,这可导致多个工作负载同时(例如,以管线方式)共存于GPU管线中。在GPU管线块处理多个工作负载批次的情况下,如果不能在GPU管线中限制为一次一个工作负载(即,绘制调用或级),则可能很难针对单个工作负载准确获得每绘制调用或每级的性能度量。例如,可通过在每个绘制调用或级之后在命令流中引入等待空闲(WFI)机制来实现在GPU管线中限制为一次一个绘制调用或级。然而,这可能会在性能方面增加很大的开销,因为完整的GPU管线可能需要完成一个工作负载(即,绘制调用或级)并且变得空闲,之后可将下一个工作负载发送到GPU管线。本公开的各方面可准确地从GPU子块捕获针对工作负载的性能计数器,而无需两个或更多个工作负载的任何混合。本公开的各方面可允许这种情况发生,同时允许在GPU管线中一次存在多个工作负载。此外,本公开的各方面可减少性能上的开销,同时在GPU管线中执行多个工作负载的情况下在工作负载边界处捕获性能计数器。本公开的各方面可允许这种情况发生,而无需在每个工作负载之后将任何WFI机制插入到命令流中。附加地,本公开的各方面可减少性能开销,同时将性能计数器的范围界定在工作负载(即,绘制调用或级)边界处。在一些实例中,可允许GPU块一次处理单个工作负载批次,并且可对下一个批次产生背压,直到当前工作负载完成并且其性能计数器在工作负载边界处被发送到存储器。这可通过将GPU硬件管线划分成多个集群来实现,使得所有集群可处理单独的工作批次,其中在集群中可一次一个工作负载或批次处于活动状态。
系统、装置、计算机程序产品和方法的各个方面将在下文中参考附图进行更全面的描述。然而,本公开内容可以以许多不同的形式来体现,以及不应当被解释为限于贯穿本公开内容所呈现的任何特定的结构或功能。相反,提供这些方面使得本公开内容将是透彻和完整的,并且将向本领域技术人员充分传达本公开内容的范围。基于本文的教导,本领域技术人员应当理解,本公开内容的范围旨在覆盖本文公开的系统、装置、计算机程序产品和方法的任何方面,无论其是独立于本公开内容的其他方面实现的还是与本公开内容的其他方面组合实现的。例如,可以使用本文中阐述的任何数量个方面来实现装置或实践方法。此外,本公开内容的范围旨在涵盖使用除了本文中所阐述的公开内容的各个方面之外或不同于本文中所阐述的公开内容的各个方面的其他结构、功能、或者结构和功能来实施的这样的装置或方法。本文所公开的任何方面可以通过权利要求的一个或多个元素来体现。
尽管本文中描述了各个方面,但是这些方面的许多变型和置换落在本公开内容的范围内。尽管提及了本公开的各方面的一些潜在益处和优点,但是本公开的范围并不旨在限于特定的益处、用途或目标。确切而言,本公开内容的各方面旨在广泛地适用于不同的无线技术、系统配置、网络和传输协议,其中的一些是通过示例的方式在附图和下文的描述中说明的。详细描述和附图仅仅例示本公开而非限定本公开,本公开的范围由所附权利要求及其等效技术方案来定义。
参考各种装置和方法呈现了若干个方面。这些装置和方法是通过各种块、组件、电路、过程、算法等(被统称为“元素”)在以下具体实施方式中描述并且在附图中示出的。可以使用电子硬件、计算机软件或者其任意组合来实现这样的元素。这些要素是作为硬件还是软件来实现取决于特定的应用程序和强加于整个系统的设计约束。
例如,元素、或元素的任何部分、或元素的任何组合可以被实现为包括一个或多个处理器(其还可以被称为处理单元)的“处理系统”。处理器的示例包括微处理器、微控制器、图形处理单元(GPU)、通用GPU(GPGPU)、中央处理单元(CPU)、应用处理器、数字信号处理器(DSP)、精简指令集计算(RISC)处理器、片上系统(SOC)、基带处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门控逻辑、分立硬件电路和其他配置为执行本公开中描述的各种功能的合适硬件。在处理系统中的一个或多个处理器可以执行软件。软件可以广义地解释为指令、指令集、代码、代码段、程序代码、程序、子程序、软件组件、应用、软件应用、软件包、例程、子例程、对象、可执行文件、执行线程、过程、函数等,无论是指软件、固件、中间件、微代码、硬件描述语言还是其他名称。术语应用可以是指软件。如本文所描述的,一种或多种技术可以指被配置成执行一个或多个功能的应用,即软件。在此类示例中,应用可被存储在存储器(例如,处理器的片上存储器、系统存储器或任何其他存储器)上。本文所描述的硬件(诸如处理器)可以被配置成执行应用。例如,应用可以被描述为包括代码,该代码在由硬件执行时使该硬件执行本文所描述的一种或多种技术。作为示例,硬件可以从存储器访问代码并执行从存储器访问的代码,以执行本文所描述的一种或多种技术。在一些示例中,在本公开中标识各组件。在此类示例中,各组件可以是硬件、软件或其组合。各组件可以是单独的组件或单个组件的子组件。
相应地,在本文中所描述的一个或多个示例中,所描述的功能可以在硬件、软件或其任何组合中来实现。如果用软件来实现,则功能可以作为一个或多个指令或代码来在计算机可读介质上进行存储或编码。计算机可读介质包括计算机储存介质。存储介质可以是能被计算机存取的任何可用介质。通过举例而非限制的方式,这样的计算机可读介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、光盘存储装置、磁盘存储装置、其它磁存储设备、上述类型的计算机可读介质的组合、或者可以用于以能够由计算机存取的指令或数据结构的形式存储计算机可执行代码的任何其它介质。
概括而言,本公开内容描述了如下的技术:在单个设备或多个设备中具有图形处理管线,从而改善对图形内容的渲染和/或减少处理单元(即,被配置为执行本文中所描述的一种或多种技术的任何处理单元,比如GPU)的负载。例如,本公开描述了用于在利用图形处理的任何设备中进行图形处理的技术。贯穿本公开描述了其他示例益处。
如本文所使用的,术语“内容”的实例可以是指“图形内容”、“图像”,反之亦然。不管这些术语是用作形容词、名词还是其他词类,都是如此。在一些示例中,如本文所使用的,术语“图形内容”可以指由图形处理管线的一个或多个过程产生的内容。在一些示例中,如本文所使用的,术语“图形内容”可以指由被配置成执行图形处理的处理单元产生的内容。在一些示例中,如本文所使用的,术语“图形内容”可以指由图形处理单元产生的内容。
在一些示例中,如本文所使用的,术语“显示内容”可以是指由被配置为执行显示处理的处理单元生成的内容。在一些示例中,如本文所使用的,术语“显示内容”可以指由显示处理单元生成的内容。可以对图形内容进行处理以变成显示内容。例如,图形处理单元可以将图形内容(诸如帧)输出到缓冲器(其可以被称为帧缓冲器)。显示处理单元可以从缓冲器读取图形内容(诸如一个或多个帧),并在其上执行一个或多个显示处理技术以生成显示内容。例如,显示处理单元可以被配置成在一个或多个渲染层上执行合成以生成帧。作为另一示例,显示处理单元可以被配置成将两个或更多个层一起合成、混合或以其他方式组合成单个帧。显示处理单元可被配置成对帧执行缩放,例如,放大或缩小。在一些示例中,帧可以指层。在其他示例中,帧可以指已经被混合在一起以形成该帧的两个或更多个层,即,该帧包括两个或更多个层,并且包括两个或更多个层的该帧可以随后被混合。
图1是示出了被配置为实现本公开内容的一种或多种技术的示例内容生成系统100的框图。内容生成系统100包括设备104。设备104可包括用于执行本文所描述的各种功能的一个或多个组件或电路。在一些示例中,设备104的一个或多个组件可以是SOC的各组件。设备104可包括被配置成执行本公开的一种或多种技术的一个或多个组件。在所示的示例中,设备104可包括处理单元120、内容编码器/解码器122和系统存储器124。在一些方面中,设备104可以包括多个可选组件,例如,通信接口126、收发器132、接收器128、发送器130、显示处理器127和一个或多个显示器131。对显示器131的引用可以指一个或多个显示器131。例如,显示器131可包括单个显示器或多个显示器。显示器131可包括第一显示器和第二显示器。第一显示器可以是左眼显示器,而第二显示器可以是右眼显示器。在一些示例中,第一和第二显示器可以接收用于在其上呈现的不同帧。在其他示例中,第一和第二显示器可以接收用于在其上呈现的相同帧。在进一步的示例中,图形处理的结果可以不在设备上显示,例如,第一和第二显示器可以不接收用于在其上呈现的任何帧。相反,帧或图形处理结果可以被传递到另一设备。在一些方面,这可以被称为分割渲染。
处理单元120可以包括内部存储器121。处理单元120可以被配置为执行图形处理,例如在图形处理管线107中。内容编码器/解码器122可包括内部存储器123。在一些示例中,设备104可包括显示处理器(诸如显示处理器127),以对在由一个或多个显示器131呈现之前由处理单元120生成的一个或多个帧执行一个或多个显示处理技术。显示处理器127可被配置成执行显示处理。例如,显示处理器127可被配置成对由处理单元120生成的一个或多个帧执行一个或多个显示处理技术。该一个或多个显示器131可被配置成显示或以其他方式呈现由显示处理器127处理的帧。在一些示例中,一个或多个显示器131可以包括以下各项中的一个或多个:液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器、投影显示设备、增强现实显示设备、虚拟现实显示设备、头戴式显示器或任何其他类型的显示设备。
在处理单元120和内容编码器/解码器122外部的存储器(诸如系统存储器124)可以是对于处理单元120和内容编码器/解码器122可访问的。例如,处理单元120和内容编码器/解码器122可以被配置成从外部存储器(诸如系统存储器124)读取和/或写入外部存储器。处理单元120和内容编码器/解码器122可通过总线通信地耦接到系统存储器124。在一些示例中,处理单元120和内容编码器/解码器122可经由该总线或不同连接彼此通信地耦接。
内容编码器/解码器122可以被配置为从任何源(比如系统存储器124和/或通信接口126)接收图形内容。系统存储器124可被配置成存储接收到的经编码或经解码的图形内容。内容编码器/解码器122可被配置成以经编码像素数据的形式例如从系统存储器124和/或通信接口126接收经编码的或经解码的图形内容。内容编码器/解码器122可被配置成对任何图形内容进行编码或解码。
内部存储器121或系统存储器124可以包括一个或多个易失性或非易失性存储器或存储设备。在一些示例中,内部存储器121或系统存储器124可包括RAM、SRAM、DRAM、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、磁性数据介质或光学存储介质或任何其他类型的存储器。
根据一些示例,内部存储器121或系统存储器124可以是非暂态存储介质。术语“非暂态”可指示存储介质未被实施在载波或传播信号中。然而,术语“非暂态”不应被解释为意味着内部存储器121或系统存储器124是不可移动的或者其内容是静态的。作为一个示例,系统存储器124可以从设备104移除并移动到另一设备。作为另一示例,系统存储器124可能不可从设备104移除。
处理单元120可以是中央处理单元(CPU)、图形处理单元(GPU)、通用GPU(GPGPU)、或可以被配置为执行图形处理的任何其它处理单元。在一些示例中,处理单元120可被集成到设备104的主板中。在一些示例中,处理单元120可以存在于安装在设备104的主板中的端口中的图形卡上,或者可以以其他方式纳入被配置成与设备104互操作的外围设备中。处理单元120可包括一个或多个处理器,诸如一个或多个微处理器、GPU、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、离散逻辑、软件、硬件、固件、其他等效的集成或离散逻辑电路系统或其任何组合。如果技术是部分地在软件中实现的,则处理单元120可以将用于软件的指令存储在合适的非暂态计算机可读存储介质(例如,内部存储器121)中,并且可以使用一个或多个处理器执行在硬件中的指令,以执行本公开内容的技术。前述任何一种(包括硬件、软件、硬件和软件的组合等)可以被认为是一个或多个处理器。
内容编码器/解码器122可以是被配置为执行内容解码的任何处理单元。在一些示例中,内容编码器/解码器122可以被集成到设备104的主板中。内容编码器/解码器122可包括一个或多个处理器,诸如一个或多个微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、算术逻辑单元(ALU)、数字信号处理器(DSP)、视频处理器、离散逻辑、软件、硬件、固件、其他等效的集成或离散逻辑电路系统或其任何组合。如果技术部分地在软件中实现,则内容编码器/解码器122可以将用于软件的指令存储在合适的非暂态计算机可读存储介质(例如,内部存储器123)中,并且可以使用一个或多个处理器执行在硬件中的指令,以执行本公开内容的技术。前述任何一种(包括硬件、软件、硬件和软件的组合等)可以被认为是一个或多个处理器。
在一些方面,内容生成系统100可以包括可选的通信接口126。通信接口126可包括接收器128和发送器130。接收器128可被配置成执行本文中关于设备104描述的任何接收功能。附加地,接收器128可以被配置为从另一设备接收信息,例如,眼睛或头部位置信息、渲染命令或定位信息。发送器130可被配置成执行本文中关于设备104描述的任何传输功能。例如,发送器130可被配置成向另一设备传输信息,该信息可包括对内容的请求。接收器128和发送器130可组合成收发器132。在此类示例中,收发器132可被配置成执行本文中关于设备104描述的任何接收功能和/或传输功能。
再次参考图1,在某些方面,处理单元120可包括确定组件198,该确定组件被配置为在多个集群中的每个集群处接收多个工作负载中的第一工作负载,其中在接收到该第一工作负载之后在该多个集群中的每个集群处处理该第一工作负载。确定组件198还可被配置为在图形处理单元(GPU)管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载。确定组件198还可被配置为在多个集群中的每个集群处对第一工作负载的处理期间使多个性能计数器递增。确定组件198还可被配置为在多个集群中的每个集群处确定第一工作负载是否完成处理。确定组件198还可被配置为在确定第一工作负载在多个集群中的一个集群处完成处理时,将该第一工作负载从该多个集群中的该一个集群传输到该多个集群中的后续集群。确定组件198还可被配置为在多个集群中的每个集群处完成对第一工作负载的处理时,将该第一工作负载完成处理的指示从该多个集群中的每个集群传输到调试控制器(DBGC)。确定组件198还可被配置为在确定第一工作负载完成处理时,读取针对多个性能计数器中的每个性能计数器的多个集群中的每个集群的值。确定组件198还可被配置为在读取多个集群中的每个集群的值之后,将针对多个性能计数器中的每个性能计数器的该多个集群中的每个集群的该值存储在存储器或缓冲器中。确定组件198还可被配置为传输针对多个性能计数器中的所有性能计数器的多个集群中的每个集群的所读取的值的指示。确定组件198还可被配置为当对于该第一工作负载,针对多个集群中的每个集群完成多个性能计数器的读取时,在该多个集群中的每个集群处处理该多个工作负载中的第二工作负载。尽管以下描述可以集中于图形处理,但是本文中描述的概念可以适用于其他类似的处理技术。
如本文所描述的,诸如设备104之类的设备可以是指被配置为执行本文描述的一种或多种技术的任何设备、装置或系统。例如,设备可以是服务器、基站、用户装备、客户端设备、站、接入点、计算机(例如,个人计算机、台式计算机、膝上型计算机、平板计算机、计算机工作站、或大型计算机)、最终产品、装置、电话、智能电话、服务器、视频游戏平台或控制台、手持式设备(例如,便携式视频游戏设备或个人数字助理(PDA))、可穿戴计算设备(例如,智能手表、增强现实设备或虚拟现实设备)、非可穿戴设备、显示器或显示设备、电视、电视机顶盒、中间网络设备、数字媒体播放器、视频流设备、内容流设备、车载计算机、任何移动设备、被配置成生成图形内容的任何设备、或被配置成执行本文所描述的一种或多种技术的任何设备。本文中的过程可以被描述为由特定组件(例如,GPU)来执行,但是在进一步的实施方案中,可以是使用与所公开的实施方案一致的其它组件(例如,CPU)来执行的。
GPU可以对GPU管线中的多种类型的数据或数据分组进行处理。例如,在某些方面,GPU可以处理两种类型的数据或数据分组,例如,上下文寄存器分组和绘制调用数据。上下文寄存器分组可以是一组全局状态信息,例如,关于全局寄存器、着色程序或常量数据的信息,它们可以调整将如何处理图形上下文。例如,上下文寄存器分组可以包括关于色彩格式的信息。在上下文寄存器分组的某些方面,可以存在指示哪个工作负载属于上下文寄存器的位。此外,可以同时和/或并行运行多个函数或程序。例如,函数或程序可以描述某个操作,例如,颜色模式或颜色格式。因此,上下文寄存器可以定义GPU的多种状态。
上下文状态可以用于确定个体(individual)处理单元(例如,顶点提取器(VFD)、顶点着色器(VS)、着色器处理器或几何形状处理器)如何运行、和/或处理单元以哪种模式运行。为了这样做,GPU可以使用上下文寄存器和编程数据。在一些方面,GPU可以基于模式或状态的上下文寄存器定义在管线中生成工作负载,例如,顶点或像素工作负载。某些处理单元(例如,VFD)可以使用这些状态来确定某些功能,例如,如何组装顶点。由于这些模式或状态可能会改变,因此GPU可能需要改变对应的上下文。附加地,与模式或状态相对应的工作负载可以遵循改变的模式或状态。
图2示出根据本公开的一种或多种技术的示例GPU 200。如图2所示,GPU 200包括命令处理器(CP)210、绘制调用分组212、VFD 220、VS 222、顶点高速缓存(VPC)224、三角形设置引擎(TSE)226、光栅化器(RAS)228、Z过程引擎(ZPE)230、像素插值器(PI)232、片段着色器(FS)234、渲染后端(RB)236、二级(L2)高速缓存(UCHE)238和系统存储器240。虽然图2显示了GPU 200包括处理单元220-238,但GPU 200可以包括多个附加处理单元。附加地,处理单元220-238仅是示例,并且可以由GPU根据本公开内容来使用处理单元的任何组合或顺序。GPU 200还包括命令缓冲器250、上下文寄存器分组260和上下文状态261。
如图2所示,GPU可以利用CP(例如CP 210)或硬件加速器将命令缓冲器解析为上下文寄存器分组(例如上下文寄存器分组260)和/或绘制调用数据分组(例如绘制调用分组212)。CP 210然后可以通过单独的路径将上下文寄存器分组260或绘制调用数据分组212发送到GPU中的处理单元或块。进一步地,命令缓冲器250可以交替上下文寄存器和绘制调用的不同状态。例如,命令缓冲器可以以下方式构造:上下文N的上下文寄存器、上下文N的(多个)绘制调用、上下文N+1的上下文寄存器和上下文N+1的(多个)绘制调用。
GPU可以以多种不同的方式渲染图像。在一些实例中,GPU可以使用渲染和/或图块渲染来渲染图像。在图块渲染GPU中,可以将图像划分或分离为不同的部分或图块(tile)。在划分图像后,每个部分或图块可以单独渲染。图块渲染GPU可以将计算机图形图像划分为网格格式,使得网格的每个部分(即,图块)被单独渲染。在一些方面,在分箱过程(binningpass)期间,可以将图像划分成不同的箱或图块。在一些方面,在分箱过程期间,可以构建可见性流,其中可以识别可见图元或绘制调用。与图块渲染相反,直接渲染不会将帧划分成更小的箱或图块。相反,在直接渲染中,整个帧是一次渲染的。附加地,一些类型的GPU可允许图块渲染和直接渲染两者。
在一些方面中,GPU可以将绘制或渲染过程应用于不同的箱或图块。例如,GPU可针对一个箱进行渲染,并为箱中的图元或像素执行所有绘制。在针对箱进行渲染的过程期间,可以在GMEM中定位渲染目标。在一些实例中,在针对一个箱进行渲染之后,可以将渲染目标的内容移动到系统存储器,并且释放GMEM以渲染下一个箱。附加地,GPU可以针对另一个箱进行渲染,并且针对该箱中的图元或像素执行绘制。因此,在一些方面中,可能存在覆盖一个表面中的所有绘制的少量箱(例如,四个箱)。此外,GPU可以循环通过一个箱中的所有绘制,但执行可见绘制调用的绘制,即包含可见几何图形的绘制调用。在一些方面,可以生成可见性流,例如,在分箱过程中,以确定图像或场景中每个图元的可见性信息。例如,这种可见性流可以标识某个图元是否可见。在一些方面中,该信息可以用于移除不可见的图元,例如在渲染过程中。此外,至少一些被识别为可见的图元可以在渲染过程中渲染。
在图块渲染的一些方面,可以有多个处理阶段或过程(pass)。例如,可以在两个过程中执行渲染,例如可见性或箱可见性过程(bin-visibility pass)和渲染或箱渲染过程(bin-rendering pass)。在可见性过程期间,GPU可以输入渲染工作负载,记录图元或三角形的位置,并且然后确定哪些图元或三角形落入哪个箱或区域中。在可见性过程的某些方面中,GPU还可以识别或标记可见性流中每个图元或三角形的可见性。在渲染过程期间,GPU可以输入可见性流并一次处理一个箱或区域。在一些方面,可以分析可见性流以确定哪些图元或图元顶点可见或不可见。因而,可以处理可见的图元或图元顶点。通过这样做,GPU可以减少处理或渲染不可见的图元或三角形的不必要的工作负载。
在一些方面,在可见性过程期间,可以处理某些类型的图元几何体,例如,仅位置几何体。附加地,根据图元或三角形的位置或定位,可以将图元分类到不同的箱或区域中。在一些情况下,将图元或三角形分类到不同的箱中可以是通过确定用于这些图元或三角形的可见性信息来执行的。例如,GPU可确定每个箱或区域中的每个图元的可见性信息或将其写入例如系统存储器中。该可见性信息可用于确定或生成可见性流。在渲染过程中,每个箱中的图元可以单独渲染。在这些情况下,可见性流可以是从用于丢弃对于该箱不可见的图元的存储器中提取的。
GPU或GPU架构的一些方面可以提供用于渲染(例如,软件渲染和硬件渲染)的多个不同的选项。在软件渲染中,驱动器或CPU可以通过处理每个视图一次来复制整个帧几何图形。附加地,一些不同的状态可以根据视图而改变。因此,在软件渲染中,软件可以通过改变可被用于针对图像中的每个视点进行渲染的一些状态,来复制整个工作负载。在某些方面中,由于GPU可能针对图像中的每个视点多次提交相同的工作负载,因此可能存在增加的开销量。在硬件渲染中,硬件或GPU可能负责复制或处理图像中每个视点的几何图形。因此,硬件可以管理针对图像中每个视点的图元或三角形的复制或处理。
图3示出了图像或表面300,其包括被划分为多个箱的多个图元。如图3中所示,图像或表面300包括区域302,该区域包括图元321、322、323和324。图元321、322、323和324被划分或放置到不同的箱中,例如,箱310、311、312、313、314和315。图3示出针对图元321-324使用多个视点进行图块渲染的示例。例如,图元321-324在第一视点350和第二视点351中。因此,GPU处理或渲染包括区域302的图像或表面300可利用多视点或多视图渲染。
如本文中所指示的,GPU或图形处理器单元可以使用图块渲染架构来降低功耗或节省存储器带宽。如上文进一步所述,这种渲染方法可以将场景划分为多个箱,以及包括识别每个箱中的可见的三角形的可见性通路。因此,在图块渲染中,完整屏幕可以被划分为多个箱或图块。然后,可以多次渲染场景,例如,针对每个箱渲染一次或多次。在图形渲染的各方面中,一些图形应用可能一次或多次地针对单个目标(即,渲染目标)进行渲染。例如,在图形渲染中,系统存储器上的帧缓冲器可以被更新多次。帧缓冲器可以是存储器或随机存取存储器(RAM)的一部分(例如,包含位图或存储),以帮助存储用于GPU的显示数据。帧缓冲器还可以是包含数据的完整帧的存储器缓冲器。附加地,帧缓冲器可以是逻辑缓冲器。在一些方面,更新帧缓冲器可以在箱或图块渲染中执行,其中,如上所述,表面被分成多个箱或图块,然后每个箱或块可以被单独渲染。此外,在图块渲染中,可以将帧缓冲器划分为多个箱或图块。
图形处理的一些方面可利用GPU范围界定。例如,可通过在定义的工作负载边界处读取GPU管线中的不同性能计数器来执行GPU范围界定。在GPU范围确定的一些方面,可针对不同的工作负载和应用来计算GPU的性能。各工作负载批次可以是各种大小,诸如单个绘制调用的大小或完整的过程或级的大小。参考图块渲染架构,这些工作负载还可对应于完整的分箱过程或完整的渲染过程。
在GPU范围界定的一些方面,前述性能计数器可被放置在GPU管线的块中并且可被用来计算特定块中的每个工作负载的不同操作的数量(例如,工作负载的总处理时间)。附加地,GPU管线的每个级的性能计数器可对应于特定GPU架构。在一些实例中,可能有必要在GPU管线的每个级处捕获这些性能计数器。此外,可能有必要单独捕获GPU管线的每个级处的每个过程和绘制调用的时序。
图4是示出了示例GPU管线和性能计数器402的示图400。如图4所示,示图400包括输入汇编器410、顶点着色器420、外壳着色器430和曲面细分器440。示图400还包括域着色器450、几何着色器460、光栅化器470、像素着色器480和输出合并器490。如图4中所描绘的,示图400中的这些组件中的每个组件可连接到性能计数器402。例如,组件410-490中的每个组件可基于组件处的处理来使性能计数器402递增。
在GPU的一些模式(例如,正常任务模式)中,可将多个工作负载批次发送到GPU管线,这可导致多个工作负载同时(例如,以管线方式)共存于GPU管线中。在GPU管线块处理多个工作负载批次的情况下,如果不能在GPU管线中限制为一次一个工作负载(即,绘制调用或级),则可能很难针对单个工作负载准确获得每绘制调用或每级的性能度量。例如,可通过在每个绘制调用或级之后在命令流中引入等待空闲(WFI)机制来实现在GPU管线中限制为一次一个绘制调用或级。然而,这可能会在性能方面增加很大的开销,因为完整的GPU管线可能需要完成一个工作负载(即,绘制调用或级)并且变得空闲,之后可将下一个工作负载发送到GPU管线。
图5分别示出了GPU处针对不同模式的剖析(profiling)的示图500、510、520和530。例如,示图500和510对应于GPU处的级模式,并且示图520和530对应于GPU处的绘制模式。如图5所示,示图500包括可见性过程、未解析部分、渲染部分和解析部分。示图500对应于剖析关闭的级模式。如图5所示,示图510包括可见性过程、未解析部分、渲染部分和解析部分。示图510还包括等待空闲(WFI)机制和将性能计数器写入(Wr)到存储器中。更具体地,“Wr”表示由于将性能计数器写入到存储器中而产生的开销。示图510对应于在每个级之后使用WFI进行的级模式剖析。
如图5进一步所示,示图520包括多个绘制(例如,绘制1、绘制2、……、绘制n)以及解析部分和未解析部分。示图520对应于剖析关闭的绘制模式。如图5中所描绘的,示图530还包括多个绘制(例如,绘制1、绘制2、……、绘制n)以及解析部分和未解析部分。示图530还包括WFI机制和Wr(由于将性能计数器写入到存储器中而产生的开销)。示图530对应于利用WFI的绘制模式和剖析。图5描绘了由于在每个工作负载之后引入GPU WFI机制而增加的开销。此外,由于在命令流中插入昂贵的WFI机制,开销可能增加。
基于上述内容,准确地从GPU子块捕获针对工作负载的性能计数器而无需两个或更多个工作负载的任何混合可能是有益的。当允许在GPU管线中一次存在多个工作负载时,发生这种情况可能是有益的。此外,减少性能上的开销,同时在GPU管线中执行多个工作负载的情况下在工作负载边界处捕获性能计数器可能是有益的。在每个工作负载之后无需将任何等待空闲(WFI)机制插入到命令流中也可能是有益的。
本公开的各方面可准确地从GPU子块捕获针对工作负载的性能计数器,而无需两个或更多个工作负载的任何混合。本公开的各方面可允许这种情况发生,同时允许在GPU管线中一次存在多个工作负载。此外,本公开的各方面可减少性能上的开销,同时在GPU管线中执行多个工作负载的情况下在工作负载边界处捕获性能计数器。本公开的各方面可允许这种情况发生,而无需在每个工作负载之后将任何WFI机制插入到命令流中。
附加地,本公开的各方面可减少性能开销,同时将性能计数器的范围界定在工作负载(即,绘制调用或级)边界处。在一些实例中,可允许GPU块一次处理单个工作负载批次,并且可对下一个批次产生背压,直到当前工作负载完成并且其性能计数器在工作负载边界处被发送到存储器。这可通过将GPU硬件管线划分成多个集群来实现,使得所有集群可处理单独的批次或工作负载,其中在集群中可一次一个工作负载或批次处于活动状态。
图6是示出了GPU中的示例硬件集群的示图600。如图6所示,示图600包括命令处理器(CP)610和GPU硬件(HW)管线集群620,该GPU HW管线集群包括前端(FE)622、顶点着色器前端(SP_VS)624、图元控制器后端(PC_VS)626、光栅化器(GRAS)628、像素着色器(PS)630、像素着色器2(SP_PS)632和像素着色器高速缓存(VPC_PS)634。示图600还包括性能计数器(即,寄存器主干管理(RBBM))640、调试控制器(DBGC)650、通用缓冲器接口(GBIF)660和UCHE 690。图6描绘了在GPU架构中GPU管线被划分成的不同硬件集群620。在一些实例中,如果下游集群块不能取得任何进展,则可通过下游集群块对上游集群产生背压。这些集群620可以是一组GPU块或单个GPU块。本公开的各方面可重用这些集群620的集合。
本公开的各方面可设计一种用以诸如当集群中的所有块的性能计数器未被读出且发送到当前批次的存储器接口时,对该集群中的GPU硬件管线的下一个批次产生背压的机制。为此,本公开的各方面可包括多个不同的步骤或特征。例如,本公开的各方面可包括用以在两个工作负载之间的命令流中提供清晰断点的驱动程序,其可能需要界定清晰断点的性能范围。这些断点可以是在每个绘制调用或级之后插入的全局事件。这些全局事件可能已经是针对绘制调用的现有上下文完成(context-done),并且可能是针对级新引入的软事件。附加地,工作负载可以是绘制调用,也可以是不同类型的级,例如可见性过程、解析过程等。
在本公开的各方面,命令处理器(CP)可允许一次执行每集群的单个批次。此时,集群中的所有块可能尚未完成一个批次,并且调试控制器(DBGC)可能尚未从寄存器主干管理(RBBM)读出这些块的性能计数器。此外,CP可能不会将下一个批次编程发送到该集群的块。在该块从CP接收到完整的编程之前,GPU块可能不会启动下一个批次执行。
在完成工作负载之后,GPU硬件管线中的每个块可将工作负载结束时的全局事件的副本(例如,针对绘制调用的上下文完成和针对级的软事件)发送到DBGC,指示该块完成一个工作负载批次,并且DBGC可开始从RBBM读取与该块相关联的性能计数器。DBGC可利用其现有的跟踪缓冲器来缓冲从RBBM针对块读取的性能计数器,然后将它们发送到存储器接口或跟踪总线。在DBGC从RBBM读取与块相关联的所有性能计数器之后,其可向CP发送指示,该指示表明DBGC已完成对集群中的相应块的所有性能计数器的读取。在CP从DBGC接收到针对集群中的所有块的指示之后,其可将针对该块集群的下一个批次编程解禁。所有批次都可能持续发生这种情况。
图7A和图7B分别示出了性能计数器范围界定过程的示图700和750。如图7A所示,示图700包括命令流710,该命令流包括可见性过程、未解析部分和D1-D4。示图700还包括GPU管线720,该GPU管线包括CP 721、FE 722、SP_VS 724、PC_VS 726和PS 730。此外,示图700还包括D1上下文完成736、RBBM 740、DBGC 742和GBIF 744。如图7A中所描绘的,DBGC742可包括在读取集群的所有性能计数器时到CP 721的每集群反馈路径。此外,DBGC 742可对RBBM 740读取集群性能计数器。此外,GBIF 744可向存储器进行写入。图7A示出了命令流710发送不同类型的工作负载(例如,绘制调用和级)。在这些工作负载的边界处,由CP 721插入如针对绘制调用的上下文完成的全局事件,并且由驱动程序插入指示级的开始或停止的软事件。
如图7B所示,示图750包括命令流760,该命令流包括可见性过程、可见性开始软事件、可见性停止软事件、未解析部分、未解析开始软事件和未解析停止软事件。示图750还包括GPU管线770,该GPU管线包括CP 771、FE 772、SP_VS 774、PC_VS 776和PS 780。此外,示图750包括可见性停止软事件786、RBBM 790、DBGC 792和GBIF 794。如图7B中所描绘的,DBGC792可包括在读取集群的所有性能计数器时到CP 771的每集群反馈路径。DBGC 792还可对RBBM 790读取集群性能计数器。附加地,GBIF 794可向存储器进行写入。图7B示出了命令流760发送不同类型的工作负载(例如,绘制调用和级)。此外,在这些工作负载的边界处,由CP771插入如针对绘制调用的上下文完成的全局事件,并且由驱动程序插入指示级的开始或停止的软事件。
在一些方面,在DBGC未从RBBM读取集群的所有性能计数器并将其发送到存储器接口(MIF)或存储在其跟踪缓冲器中的时间内,使用DBGC和CP进行的性能计数器范围界定可能会停止(stall)GPU集群的编程,从而对管线产生背压。在本公开的各方面,命令处理器(CP)可确保一次向GPU集群发送单个工作负载编程(即,批次),而针对该集群的下一个批次在CP内部受到限制(throttled),直到第一批次完成。这可称为每集群单批次。一旦集群中的块完成一个批次,其就可等待CP对下一个批次编程进行编程。一旦对下一个批次进行编程,就可开始处理下一个批次,直到对下一个批次编程进行编程为止,并且可在对上游管线产生背压的同时继续等待。集群可将数据路径上的当前批次的数据传递到管线中的后续集群。如果下一个集群已从CP接收到该批次的完整编程,则下一个集群可开始处理该批次。例如,如果GPU管线中存在七(7)个集群(例如,集群0至集群6),则集群0可能正在处理批次6,集群1可能正在处理批次5等,并且集群6可能正在处理批次0。以此方式,每个集群可能正在处理单独的工作负载批次,这可允许在GPU管线中同时执行多个工作负载批次。通过这样做,管线中的上游集群可处理最新的批次,而下游集群可处理较旧的批次。
在一些方面,可使用GPU内部的称为调试控制器(DBGC)的调试块将所有块的性能计数器发送到存储器接口。在工作负载结束时,CP可发送管线事件,诸如在绘制调用结束时的上下文完成或者在级结束时的软件定义的软事件。这些事件可在工作负载完成时从一个GPU块沿管线向下发送到下一个GPU块。DBGC可从所有GPU管线块接收这些管线事件的副本。在DBGC在工作负载结束时从块接收到此事件副本之后,其可开始读取该块的性能计数器并将它们发送到存储器接口。在读取集群中的所有块的所有性能计数器之后,DBGC可向CP发送针对该集群的性能计数器读取完成的指示。
在CP从DBGC接收到针对集群的该指示之后,其可将针对该集群的下一个批次编程解禁。在该架构中,CP可禁止批次编程的最后一个部分,即编程结束。在没有接收到编程结束的情况下,块可能不会开始处理新的编程。因此,实际上,CP可能会禁止针对块的单个寄存器写入(例如,最后一个寄存器写入),同时维持每集群单个批次。因此,发送下一个批次编程的开销可以忽略不计。与使用命令流等待空闲(WFI)机制的传统方法的完整GPU管线中的一个批次相比,本公开的前述方法(例如,将GPU管线划分为多个集群并允许所有集群一次独立处理单独的单个批次)可允许在GPU管线中处理多个批次。如本文所指示的,这可减少总体性能开销。
图8和图9分别示出了针对不同GPU模式的剖析(例如,级模式和绘制模式剖析)的示图800-820和示图900-920。例如,图8中的示图800、810和820对应于GPU处的级模式剖析,并且图9中的示图900、910和920对应于GPU处的绘制模式剖析。如图8所示,示图800包括可见性过程、未解析部分、渲染部分和解析部分。示图800对应于剖析关闭的级模式。如图8所示,示图810包括可见性过程、未解析部分、渲染部分和解析部分。示图810还包括等待空闲(WFI)机制和将性能计数器写入(Wr)到存储器中。如先前所指示的,“Wr”表示由于将性能计数器写入到存储器中而产生的开销。示图810对应于在每个级之后使用WFI进行的级模式剖析。示图820包括可见性过程、未解析部分、渲染部分和解析部分,以及每个部分之间的“Wr”部分,以表示由于将性能计数器写入到存储器中而产生的开销。示图820对应于使用本公开的各方面进行的级模式剖析。
如图9所示,示图900包括多个不同的绘制(例如,绘制1、绘制2、……、绘制n)以及解析部分和未解析部分。示图900对应于剖析关闭的绘制模式。如图9中所描绘的,示图910还包括多个绘制(例如,绘制1、绘制2、……、绘制n)以及解析部分和未解析部分。示图910还包括WFI机制和Wr(由于将性能计数器写入到存储器中而产生的开销)。示图910对应于使用WFI进行的绘制模式和剖析。示图920包括多个绘制(例如,绘制1、绘制2、……、绘制n)、解析部分和未解析部分,以及每个部分之间的“Wr”部分,以表示由于将性能计数器写入到存储器中而产生的开销。示图920对应于使用本公开的各方面进行的绘制模式和剖析。
图8和图9示出利用本公开的各方面导致在使用范围应用程序(scopeapplication)剖析GPU性能计数器时开销的减少。如图8中所描绘的,在级模式中,当使用本公开的各方面时,开销可减少到小于10%,相比之下,在一些情况下当使用较旧的WFI插入机制时,开销可能超过100%。如图9所示,在绘制模式中,当使用本公开的各方面时,增益可能甚至更高。例如,与其他用例相比,利用本公开的各方面可将开销减少到小于10%。
图10是根据本公开的一种或多种技术的图形处理的通信流程图1000。如图10所示,图1000包括根据本公开的一种或多种技术的在GPU管线1002、GPU组件1004(GPU管线中的另一组件)和缓冲器或存储器1006之间的示例通信。
在1010处,GPU管线1002可在多个集群中的每个集群处接收多个工作负载中的第一工作负载(例如,工作负载1012),其中在接收到该第一工作负载之后在该多个集群中的每个集群处处理该第一工作负载。在一些实例中,多个工作负载中的每个工作负载可对应于多个绘制调用中的一个绘制调用。
在1020处,GPU管线1002可在图形处理单元(GPU)管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载。在一些方面,可将GPU管线中的多个组件分配到多个集群中,其中可基于该多个组件到该多个集群中的该分配而在该多个集群中的每个集群处处理第一工作负载。此外,在多个集群中的每个集群处对第一工作负载的处理期间,可在该多个集群中的每个集群处实现级模式边界标记。
在1030处,GPU管线1002可在多个集群中的每个集群处对第一工作负载的处理期间使多个性能计数器递增。另外,可将对应于递增的多个性能计数器的信息存储在GPU管线的寄存器主干管理(RBBM)组件处。
在1040处,GPU管线1002可在多个集群中的每个集群处确定第一工作负载是否完成处理。
在1050处,GPU管线1002可在确定第一工作负载在多个集群中的一个集群处完成处理时,将该第一工作负载从该多个集群中的该一个集群传输到该多个集群中的后续集群。第一工作负载从多个集群中的一个集群到多个集群中的后续集群的传输可与命令流相关联。
在1060处,GPU管线1002可在多个集群中的每个集群处完成对第一工作负载的处理时,将该第一工作负载完成处理的指示从该多个集群中的每个集群传输到调试控制器(DBGC)。
在1070处,GPU管线1002可在确定第一工作负载完成处理时,读取针对多个性能计数器中的每个性能计数器的多个集群中的每个集群的值。
在1080处,GPU管线1002可在读取多个集群中的每个集群的值之后,将针对多个性能计数器中的每个性能计数器的多个集群中的每个集群的值(例如,值1082)存储在存储器或缓冲器(例如,缓冲器/存储器1006)中。
在1090处,GPU管线1002可传输针对多个性能计数器中的所有性能计数器的多个集群中的每个集群的所读取的值的指示。可将针对多个性能计数器中的所有性能计数器的多个集群中的每个集群的所读取的值的指示从调试控制器(DBGC)传输到命令处理器(CP)。
在1092处,当对于第一工作负载,针对多个集群中的每个集群完成多个性能计数器的读取时,GPU管线1002可在多个集群中的每个集群处处理多个工作负载中的第二工作负载。当对于多个工作负载中的先前工作负载,针对多个集群中的每个集群完成多个性能计数器的读取时,可在多个集群中的每个集群处处理多个工作负载中的后续工作负载。此外,可在多个集群中的每个集群处处理多个工作负载中的所有工作负载。
图11是根据本公开的一种或多种技术的图形处理的示例方法的流程图1100。该方法可由装置(诸如用于图形处理的装置)、GPU、另一图形处理器、GPU管线、无线通信设备和/或如结合图1至图10的示例所使用的可执行图形处理的任何装置执行。
在1102处,该装置可在GPU管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载。例如,如图10的1020中所描述的,GPU管线1002可在GPU管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载。此外,图1中的处理单元120可执行步骤1102。在一些方面,可将GPU管线中的多个组件分配到多个集群中,其中可基于该多个组件到该多个集群中的该分配而在该多个集群中的每个集群处处理第一工作负载。此外,在多个集群中的每个集群处对第一工作负载的处理期间,可在该多个集群中的每个集群处实现级模式边界标记。
在1104处,该装置可在多个集群中的每个集群处对第一工作负载的处理期间使多个性能计数器递增。例如,如图10的1030中所描述的,GPU管线1002可在多个集群中的每个集群处对第一工作负载的处理期间使多个性能计数器递增。此外,图1中的处理单元120可执行步骤1104。另外,可将对应于递增的多个性能计数器的信息存储在GPU管线的寄存器主干管理(RBBM)组件处。
在1106处,该装置可在多个集群中的每个集群处确定第一工作负载是否完成处理。例如,如图10的1040中所描述的,GPU管线1002可在多个集群中的每个集群处确定第一工作负载是否完成处理。此外,图1中的处理单元120可执行步骤1106。
在1108处,该装置可在确定第一工作负载完成处理时,针对多个性能计数器中的每个性能计数器读取多个集群中的每个集群的值。例如,如图10的1070中所描述的,GPU管线1002可在确定第一工作负载完成处理时,针对多个性能计数器中的每个性能计数器读取多个集群中的每个集群的值。此外,图1中的处理单元120可执行步骤1108。
在1110处,该装置可传输针对多个性能计数器中的所有性能计数器的多个集群中的每个集群的所读取的值的指示。例如,如图10的1090中所描述的,GPU管线1002可传输针对多个性能计数器中的所有性能计数器的多个集群中的每个集群的所读取的值的指示。此外,图1中的处理单元120可执行步骤1110。可将针对多个性能计数器中的所有性能计数器的多个集群中的每个集群的所读取的值的指示从调试控制器(DBGC)传输到命令处理器(CP)。
图12是根据本公开的一种或多种技术的图形处理的示例方法的流程图1200。该方法可由装置(诸如用于图形处理的装置)、GPU、另一图形处理器、GPU管线、无线通信设备和/或如结合图1至图10的示例所使用的可执行图形处理的任何装置执行。
在1202处,该装置可在多个集群中的每个集群处接收多个工作负载中的第一工作负载,其中在接收到该第一工作负载之后在该多个集群中的每个集群处处理该第一工作负载。例如,如图10的1010中所描述的,GPU管线1002可在多个集群中的每个集群处接收多个工作负载中的第一工作负载,其中在接收到该第一工作负载之后在该多个集群中的每个集群处处理该第一工作负载。此外,图1中的处理单元120可执行步骤1202。在一些实例中,多个工作负载中的每个工作负载可对应于多个绘制调用中的一个绘制调用。
在1204处,该装置可在GPU管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载。例如,如图10的1020中所描述的,GPU管线1002可在GPU管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载。此外,图1中的处理单元120可执行步骤1204。在一些方面,可将GPU管线中的多个组件分配到多个集群中,其中可基于该多个组件到该多个集群中的该分配而在该多个集群中的每个集群处处理第一工作负载。此外,在多个集群中的每个集群处对第一工作负载的处理期间,可在该多个集群中的每个集群处实现级模式边界标记。
在1206处,该装置可在多个集群中的每个集群处对第一工作负载的处理期间使多个性能计数器递增。例如,如图10的1030中所描述的,GPU管线1002可在多个集群中的每个集群处对第一工作负载的处理期间使多个性能计数器递增。此外,图1中的处理单元120可执行步骤1206。另外,可将对应于递增的多个性能计数器的信息存储在GPU管线的寄存器主干管理(RBBM)组件处。
在1208处,该装置可在多个集群中的每个集群处确定第一工作负载是否完成处理。例如,如图10的1040中所描述的,GPU管线1002可在多个集群中的每个集群处确定第一工作负载是否完成处理。此外,图1中的处理单元120可执行步骤1208。
在1210处,该装置可在确定第一工作负载在多个集群中的一个集群处完成处理时,将该第一工作负载从该多个集群中的该一个集群传输到该多个集群中的后续集群。例如,如图10的1050中所描述的,GPU管线1002可在确定第一工作负载在多个集群中的一个集群处完成处理时,将该第一工作负载从该多个集群中的该一个集群传输到该多个集群中的后续集群。此外,图1中的处理单元120可执行步骤1210。第一工作负载从多个集群中的一个集群到多个集群中的后续集群的传输可与命令流相关联。
在1212处,该装置可在多个集群中的每个集群处完成对第一工作负载的处理时,将该第一工作负载完成处理的指示从该多个集群中的每个集群传输到调试控制器(DBGC)。例如,如图10的1060中所描述的,GPU管线1002可在多个集群中的每个集群处完成对第一工作负载的处理时,将该第一工作负载完成处理的指示从该多个集群中的每个集群传输到调试控制器(DBGC)。此外,图1中的处理单元120可执行步骤1212。
在1214处,该装置可在确定第一工作负载完成处理时,读取针对多个性能计数器中的每个性能计数器的多个集群中的每个集群的值。例如,如图10的1070中所描述的,GPU管线1002可在确定第一工作负载完成处理时,读取针对多个性能计数器中的每个性能计数器的多个集群中的每个集群的值。此外,图1中的处理单元120可执行步骤1214。
在1216处,该装置可在读取多个集群中的每个集群的值之后,将针对多个性能计数器中的每个性能计数器的该多个集群中的每个集群的该值存储在存储器或缓冲器中。例如,如图10的1080中所描述的,GPU管线1002可在读取多个集群中的每个集群的值之后,将针对多个性能计数器中的每个性能计数器的该多个集群中的每个集群的该值存储在存储器或缓冲器中。此外,图1中的处理单元120可执行步骤1216。
在1218处,该装置可传输针对多个性能计数器中的所有性能计数器的多个集群中的每个集群的所读取的值的指示。例如,如图10的1090中所描述的,GPU管线1002可传输针对多个性能计数器中的所有性能计数器的多个集群中的每个集群的所读取的值的指示。此外,图1中的处理单元120可执行步骤1218。可将针对多个性能计数器中的所有性能计数器的多个集群中的每个集群的所读取的值的指示从调试控制器(DBGC)传输到命令处理器(CP)。
在1220处,当对于第一工作负载,针对多个集群中的每个集群完成多个性能计数器的读取时,该装置可在多个集群中的每个集群处处理多个工作负载中的第二工作负载。例如,如图10的1092中所描述的,当对于第一工作负载,针对多个集群中的每个集群完成多个性能计数器的读取时,GPU管线1002可在多个集群中的每个集群处处理多个工作负载中的第二工作负载。此外,图1中的处理单元120可执行步骤1220。当对于多个工作负载中的先前工作负载,针对多个集群中的每个集群完成多个性能计数器的读取时,可在多个集群中的每个集群处处理多个工作负载中的后续工作负载。此外,可在多个集群中的每个集群处处理多个工作负载中的所有工作负载。
在配置中,提供了用于图形处理的方法或装置。该装置可以是GPU、图形处理器或可执行图形处理的某个其他处理器。在各方面,该装置可以是设备104内的处理单元120,或者可以是设备104或另一设备内的某个其他硬件。该装置(例如,处理单元120)可包括:用于在图形处理单元(GPU)管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载的部件;用于在多个集群中的每个集群处对第一工作负载的处理期间使多个性能计数器递增的部件;用于在多个集群中的每个集群处确定第一工作负载是否完成处理的部件;用于在确定第一工作负载完成处理时,读取针对多个性能计数器中的每个性能计数器的多个集群中的每个集群的值的部件;用于传输针对多个性能计数器中的所有性能计数器的多个集群中的每个集群的所读取的值的指示的部件;用于当对于第一工作负载,针对多个集群中的每个集群完成多个性能计数器的读取时,在多个集群中的每个集群处处理多个工作负载中的第二工作负载的部件;用于在确定第一工作负载在多个集群中的一个集群处完成处理时,将第一工作负载从多个集群中的一个集群传输到多个集群中的后续集群的部件;用于在多个集群中的每个集群处完成对第一工作负载的处理时,将第一工作负载完成处理的指示从多个集群中的每个集群传输到调试控制器(DBGC)的部件;用于在读取多个集群中的每个集群的值之后,将针对多个性能计数器中的每个性能计数器的多个集群中的每个集群的值存储在存储器或缓冲器中的部件;和用于在多个集群中的每个集群处接收多个工作负载中的第一工作负载的部件,其中在接收到第一工作负载之后在多个集群中的每个集群处处理第一工作负载。
可以实现本文描述的主题以实现一个或多个益处或优点。例如,所描述的图形处理技术可由GPU、图形处理器或可执行图形处理以实现本文所描述的用于GPU范围界定的性能开销优化技术的某个其他处理器使用。与其它图形处理技术相比,这还可以以低成本来实现。此外,本文中的图形处理技术可以改进或加速数据处理或执行。进一步地,本文中的图形处理技术可以改善资源或数据利用和/或资源效率。附加地,本公开的各方面可利用用于GPU范围界定的性能开销优化技术,以便提高存储器带宽效率和/或增加GPU处的处理速度。
应当理解的是,所公开的过程/流程图中框的特定次序或层次只是对示例方法的说明。应当理解的是,基于设计偏好可以重新排列过程/流程图中框的特定次序或层次。进一步地,一些框可以组合或者省略。所附的方法权利要求以样本次序给出了各个框的元素,但是并不意味着受限于所给出的特定次序或层次。
提供前面的描述是为了使本领域的任何技术人员能够实践这里描述的各个方面。对这些方面的各种修改对于本领域技术人员而言将是显而易见的,并且本文中所定义的通用原理可以应用于其它方面。因此,权利要求并不旨在限于本文所示出的各方面,而是应被赋予与权利要求的语言相一致的全部范围,其中,除非特别说明,否则以单数形式对元素的引用并不旨在表示“一个且仅一个”,而是表示“一个或多个”。措辞“示例性”在本文中用于意指“用作示例、实例、或例示”。本文中被描述为“示例性的”任何方面未必被解释为比其它方面优选或具有优势。
除非另有明确声明,否则术语“一些”指代一个或多个,并且在上下文没有另外规定的情况下,术语“或”可以被解释为“和/或”。诸如“A、B或C中的至少一个”、“A、B或C中的一个或多个”、“A、B和C中的至少一个”、“A、B和C中的一个或多个”以及“A、B、C或者其任意组合”之类的组合,包括A、B和/或C的任意组合,其可以包括多个A、多个B或者多个C。具体而言,诸如“A、B或C中的至少一个”、“A、B或C中的一个或多个”、“A、B和C中的至少一个”、“A、B和C中的一个或多个”以及“A、B、C或其任何组合”的组合可以是只有A、只有B、只有C、A和B、A和C、B和C或A和B和C,其中任何此类组合可以包含A、B或C的一个或多个成员或多个成员。贯穿本公开描述的各个方面的元素的对于本领域普通技术人员来说是已知的或稍后将是已知的所有结构和功能等同方案通过引用的方式明确地并入本文,并且旨在被权利要求所涵盖。此外,本文所公开的任何内容都不是旨在奉献给公众的,无论这种公开是否在权利要求中明确地记载。“模块”、“机制”、“元素”、“设备”等词不能替代“部件”一词。照此,没有权利要求元素要被解释为功能部件,除非元素是明确地使用短语“用于......的装置”来记载的。
在一个或多个示例中,本文中所描述的功能可以在硬件、软件、固件或其任何组合中实现。例如,尽管贯穿本公开内容使用了术语“处理单元”,但是这样的处理单元可以在硬件、软件、固件或其任何组合中实现。如果在本文中描述的任何功能、处理单元、技术或其他模块以软件实现,则在本文中描述的功能、处理单元、技术或其他模块可以作为一个或多个指令或代码存储在计算机可读介质上或在计算机可读介质上传输。
根据本公开,在上下文没有另外规定的情况下术语“或”可被解读为“和/或”。附加地,虽然诸如“一个或多个”或“至少一个”等短语可能已经用于本文所公开的一些特征而不是其他特征,但是没有使用这种语言的特征可以被解读为在上下文没有另外规定的情况下具有此类隐含含义。
在一个或多个示例中,本文中所描述的功能可以在硬件、软件、固件或其任何组合中实现。例如,尽管贯穿本公开内容使用了术语“处理单元”,但是这样的处理单元可以在硬件、软件、固件或其任何组合中实现。如果在本文中描述的任何功能、处理单元、技术或其他模块以软件实现,则在本文中描述的功能、处理单元、技术或其他模块可以作为一个或多个指令或代码存储在计算机可读介质上或在计算机可读介质上传输。计算机可读介质可包括计算机数据存储介质和通信介质,这些介质包括促成计算机程序从一地向另一地转移的任何介质。以此方式,计算机可读介质一般可对应于(1)非暂态的有形计算机可读存储介质或(2)诸如信号或载波之类的通信介质。数据存储介质可以是能够由一个或多个计算机或者一个或多个处理器访问以取回用于实现在本公开中描述的技术的指令、代码和/或数据结构的任何可用介质。通过示例而非限制的方式,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置、磁盘存储装置或其他磁存储设备。本文使用的磁盘和光盘包括:压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光来再现数据。上述的组合应当也被包括在计算机可读介质的范围内。计算机程序产品可以包括计算机可读介质。
代码可以由一个或多个处理器来执行,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、算术逻辑单元(ALU)、现场可编程逻辑阵列(FPGA)、或其他等效的集成的或分立的逻辑电路系统。相应地,如本文所使用的术语“处理器”可以指任何上述结构或适于实现本文所描述的技术的任何其他结构。同样,这些技术可以在一个或多个电路或逻辑元件中被完全实现。
本公开内容的技术可以在各种各样的设备或装置中实现,包括无线手机、集成电路(IC)或IC组(例如,芯片组)。本公开中描述了各种组件、模块或单元,以强调配置成执行所公开技术的设备的功能方面,但不一定需要由不同的硬件单元来实现。确切而言,如上所述,各个单元可以被组合在任何硬件单元中,或者由可互操作的硬件单元的集合(包括如上所述的一个或多个处理器)结合合适的软件和/或固件来提供。相应地,如本文所使用的术语“处理器”可以指任何上述结构或适于实现本文所描述的技术的任何其他结构。同样,这些技术可以在一个或多个电路或逻辑元件中被完全实现。
以下方面仅是说明性的并且可以与本文描述的其他方面或教导相结合,而不受限制。
方面1是一种用于图形处理的装置,该装置包括存储器和至少一个处理器,该至少一个处理器耦合到该存储器并且被配置为:在图形处理单元(GPU)管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载;在该多个集群中的每个集群处对该第一工作负载的该处理期间使多个性能计数器递增;在该多个集群中的每个集群处确定该第一工作负载是否完成处理;在确定该第一工作负载完成处理时,读取针对该多个性能计数器中的每个性能计数器的该多个集群中的每个集群的值;以及传输针对该多个性能计数器中的所有性能计数器的该多个集群中的每个集群的所读取的值的指示。
方面2是根据方面1所述的装置,其中该至少一个处理器还被配置为:当对于该第一工作负载,针对该多个集群中的每个集群完成该多个性能计数器的该读取时,在该多个集群中的每个集群处处理该多个工作负载中的第二工作负载。
方面3是根据方面1和2中任一项所述的装置,其中当对于该多个工作负载中的先前工作负载,针对该多个集群中的每个集群完成该多个性能计数器的读取时,在该多个集群中的每个集群处处理该多个工作负载中的后续工作负载。
方面4是根据方面1至3中任一项所述的装置,其中在该多个集群中的每个集群处处理该多个工作负载中的所有工作负载。
方面5是根据方面1至4中任一项所述的装置,其中该至少一个处理器还被配置为:在确定该第一工作负载在该多个集群中的一个集群处完成处理时,将该第一工作负载从该多个集群中的该一个集群传输到该多个集群中的后续集群。
方面6是根据方面1至5中任一项所述的方法,其中该第一工作负载从该多个集群中的该一个集群到该多个集群中的该后续集群的该传输与命令流相关联。
方面7是根据方面1至6中任一项所述的方法,其中在该多个集群中的每个集群处对该第一工作负载的该处理期间,在该多个集群中的每个集群处实现级模式边界标记。
方面8是根据方面1至7中任一项所述的方法,其中该至少一个处理器还被配置为:在该多个集群中的每个集群处完成对该第一工作负载的处理时,将该第一工作负载完成处理的指示从该多个集群中的每个集群传输到调试控制器(DBGC)。
方面9是根据方面1至8中任一项所述的方法,其中将对应于该递增的多个性能计数器的信息存储在该GPU管线的寄存器主干管理(RBBM)组件处。
方面10是根据方面1至9中任一项所述的方法,其中该至少一个处理器还被配置为:在读取该多个集群中的每个集群的该值之后,将针对该多个性能计数器中的每个性能计数器的该多个集群中的每个集群的该值存储在存储器或缓冲器中。
方面11是根据方面1至10中任一项所述的方法,其中将针对该多个性能计数器中的所有性能计数器的该多个集群中的每个集群的所读取的值的该指示从调试控制器(DBGC)传输到命令处理器(CP)。
方面12是根据方面1至11中任一项所述的方法,其中将该GPU管线中的多个组件分配到该多个集群中,其中基于该多个组件到该多个集群中的所述分配而在该多个集群中的每个集群处处理该第一工作负载。
方面13是根据方面1至12中任一项所述的方法,其中该至少一个处理器还被配置为:在该多个集群中的每个集群处接收该多个工作负载中的该第一工作负载,其中在接收到该第一工作负载之后在该多个集群中的每个集群处处理该第一工作负载。
方面14是根据方面1至13中任一项所述的方法,其中该多个工作负载中的每个工作负载对应于多个绘制调用中的一个绘制调用。
方面15是根据方面1至14中任一项所述的方法,该方法还包括耦合到该至少一个处理器的收发器。
方面16是一种用于实现根据方面1至15中任一项所述的图形处理的方法。
方面17是一种用于图形处理的装置,该装置包括用于实现方面1至15中的任一项的部件。
方面18是一种存储计算机可执行代码的计算机可读介质,该代码在由至少一个处理器执行时使该至少一个处理器实现方面1至15中的任一项。
Claims (30)
1.一种用于图形处理的装置,所述装置包括:
存储器;和
至少一个处理器,所述至少一个处理器耦合到所述存储器并且被配置为:
在图形处理单元(GPU)管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载;
在所述多个集群中的每个集群处对所述第一工作负载的所述处理期间使多个性能计数器递增;
在所述多个集群中的每个集群处确定所述第一工作负载是否完成处理;
在确定所述第一工作负载完成处理时,读取针对所述多个性能计数器中的每个性能计数器的所述多个集群中的每个集群的值;以及
传输针对所述多个性能计数器中的所有性能计数器的所述多个集群中的每个集群的所读取的值的指示。
2.根据权利要求1所述的装置,其中所述至少一个处理器还被配置为:
当对于所述第一工作负载,针对所述多个集群中的每个集群完成所述多个性能计数器的读取时,在所述多个集群中的每个集群处处理所述多个工作负载中的第二工作负载。
3.根据权利要求2所述的装置,其中当对于所述多个工作负载中的先前工作负载,针对所述多个集群中的每个集群完成所述多个性能计数器的读取时,在所述多个集群中的每个集群处处理所述多个工作负载中的后续工作负载。
4.根据权利要求2所述的装置,其中在所述多个集群中的每个集群处处理所述多个工作负载中的所有工作负载。
5.根据权利要求1所述的装置,其中所述至少一个处理器还被配置为:
在确定所述第一工作负载在所述多个集群中的一个集群处完成处理时,将所述第一工作负载从所述多个集群中的所述一个集群传输到所述多个集群中的后续集群。
6.根据权利要求5所述的装置,其中所述第一工作负载从所述多个集群中的所述一个集群到所述多个集群中的所述后续集群的所述传输与命令流相关联。
7.根据权利要求1所述的装置,其中在所述多个集群中的每个集群处对所述第一工作负载的处理期间,在所述多个集群中的每个集群处实现级模式边界标记。
8.根据权利要求1所述的装置,其中所述至少一个处理器还被配置为:
在所述多个集群中的每个集群处完成对所述第一工作负载的处理时,将所述第一工作负载完成处理的指示从所述多个集群中的每个集群传输到调试控制器(DBGC)。
9.根据权利要求1所述的装置,其中将对应于递增的多个性能计数器的信息存储在所述GPU管线的寄存器主干管理(RBBM)组件处。
10.根据权利要求1所述的装置,其中所述至少一个处理器还被配置为:
在读取所述多个集群中的每个集群的所述值之后,将针对所述多个性能计数器中的每个性能计数器的所述多个集群中的每个集群的所述值存储在存储器或缓冲器中。
11.根据权利要求1所述的装置,其中将针对所述多个性能计数器中的所有性能计数器的所述多个集群中的每个集群的所读取的值的所述指示从调试控制器(DBGC)传输到命令处理器(CP)。
12.根据权利要求1所述的装置,其中将所述GPU管线中的多个组件分配到所述多个集群中,其中基于所述多个组件到所述多个集群中的分配而在所述多个集群中的每个集群处处理所述第一工作负载。
13.根据权利要求1所述的装置,其中所述至少一个处理器还被配置为:
在所述多个集群中的每个集群处接收所述多个工作负载中的所述第一工作负载,其中在接收到所述第一工作负载之后在所述多个集群中的每个集群处处理所述第一工作负载。
14.根据权利要求1所述的装置,其中所述多个工作负载中的每个工作负载对应于多个绘制调用中的一个绘制调用。
15.根据权利要求1所述的装置,所述装置还包括耦合到所述至少一个处理器的收发器。
16.一种图形处理的方法,所述方法包括:
在图形处理单元(GPU)管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载;
在所述多个集群中的每个集群处对所述第一工作负载的所述处理期间使多个性能计数器递增;
在所述多个集群中的每个集群处确定所述第一工作负载是否完成处理;
在确定所述第一工作负载完成处理时,读取针对所述多个性能计数器中的每个性能计数器的所述多个集群中的每个集群的值;以及
传输针对所述多个性能计数器中的所有性能计数器的所述多个集群中的每个集群的所读取的值的指示。
17.根据权利要求16所述的方法,所述方法还包括:
当对于所述第一工作负载,针对所述多个集群中的每个集群完成所述多个性能计数器的读取时,在所述多个集群中的每个集群处处理所述多个工作负载中的第二工作负载。
18.根据权利要求17所述的方法,其中当对于所述多个工作负载中的先前工作负载,针对所述多个集群中的每个集群完成所述多个性能计数器的读取时,在所述多个集群中的每个集群处处理所述多个工作负载中的后续工作负载。
19.根据权利要求17所述的方法,其中在所述多个集群中的每个集群处处理所述多个工作负载中的所有工作负载。
20.根据权利要求16所述的方法,所述方法还包括:
在确定所述第一工作负载在所述多个集群中的一个集群处完成处理时,将所述第一工作负载从所述多个集群中的所述一个集群传输到所述多个集群中的后续集群。
21.根据权利要求20所述的方法,其中所述第一工作负载从所述多个集群中的所述一个集群到所述多个集群中的所述后续集群的所述传输与命令流相关联。
22.根据权利要求16所述的方法,其中在所述多个集群中的每个集群处对所述第一工作负载的所述处理期间,在所述多个集群中的每个集群处实现级模式边界标记。
23.根据权利要求16所述的方法,所述方法还包括:
在所述多个集群中的每个集群处完成对所述第一工作负载的处理时,将所述第一工作负载完成处理的指示从所述多个集群中的每个集群传输到调试控制器(DBGC)。
24.根据权利要求16所述的方法,其中将对应于递增的多个性能计数器的信息存储在所述GPU管线的寄存器主干管理(RBBM)组件处。
25.根据权利要求16所述的方法,所述方法还包括:
在读取所述多个集群中的每个集群的所述值之后,将针对所述多个性能计数器中的每个性能计数器的所述多个集群中的每个集群的所述值存储在存储器或缓冲器中。
26.根据权利要求16所述的方法,其中将针对所述多个性能计数器中的所有性能计数器的所述多个集群中的每个集群的所读取的值的所述指示从调试控制器(DBGC)传输到命令处理器(CP)。
27.根据权利要求16所述的方法,其中将所述GPU管线中的多个组件分配到所述多个集群中,其中基于所述多个组件到所述多个集群中的分配而在所述多个集群中的每个集群处处理所述第一工作负载。
28.根据权利要求16所述的方法,所述方法还包括:
在所述多个集群中的每个集群处接收所述多个工作负载中的所述第一工作负载,其中在接收到所述第一工作负载之后在所述多个集群中的每个集群处处理所述第一工作负载。
29.一种用于图形处理的装置,所述装置包括:
用于在图形处理单元(GPU)管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载的部件;
用于在所述多个集群中的每个集群处对所述第一工作负载的所述处理期间使多个性能计数器递增的部件;
用于在所述多个集群中的每个集群处确定所述第一工作负载是否完成处理的部件;
用于在确定所述第一工作负载完成处理时,读取针对所述多个性能计数器中的每个性能计数器的所述多个集群中的每个集群的值的部件;和
用于传输针对所述多个性能计数器中的所有性能计数器的所述多个集群中的每个集群的所读取的值的指示的部件。
30.一种存储用于图形处理的计算机可执行代码的计算机可读介质,所述代码在由处理器执行时使所述处理器:
在图形处理单元(GPU)管线中的多个集群中的每个集群处处理多个工作负载中的第一工作负载;
在所述多个集群中的每个集群处对所述第一工作负载的所述处理期间使多个性能计数器递增;
在所述多个集群中的每个集群处确定所述第一工作负载是否完成处理;
在确定所述第一工作负载完成处理时,读取针对所述多个性能计数器中的每个性能计数器的所述多个集群中的每个集群的值;以及
传输针对所述多个性能计数器中的所有性能计数器的所述多个集群中的每个集群的所读取的值的指示。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/373,718 | 2021-07-12 | ||
US17/373,718 US12002142B2 (en) | 2021-07-12 | 2021-07-12 | Performance overhead optimization in GPU scoping |
PCT/US2022/033532 WO2023287540A1 (en) | 2021-07-12 | 2022-06-15 | Performance overhead optimization in gpu scoping |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117616398A true CN117616398A (zh) | 2024-02-27 |
Family
ID=82403496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280048028.5A Pending CN117616398A (zh) | 2021-07-12 | 2022-06-15 | Gpu范围界定中的性能开销优化 |
Country Status (6)
Country | Link |
---|---|
US (1) | US12002142B2 (zh) |
EP (1) | EP4371007A1 (zh) |
KR (1) | KR20240026992A (zh) |
CN (1) | CN117616398A (zh) |
TW (1) | TW202307783A (zh) |
WO (1) | WO2023287540A1 (zh) |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9594599B1 (en) * | 2009-10-14 | 2017-03-14 | Nvidia Corporation | Method and system for distributing work batches to processing units based on a number of enabled streaming multiprocessors |
US8890880B2 (en) | 2009-12-16 | 2014-11-18 | Intel Corporation | Graphics pipeline scheduling architecture utilizing performance counters |
US10535185B2 (en) | 2012-04-04 | 2020-01-14 | Qualcomm Incorporated | Patched shading in graphics processing |
US20140089699A1 (en) | 2012-09-27 | 2014-03-27 | Advanced Micro Devices | Power management system and method for a processor |
US9030480B2 (en) * | 2012-12-18 | 2015-05-12 | Nvidia Corporation | Triggering performance event capture via pipelined state bundles |
KR20150019457A (ko) * | 2013-08-14 | 2015-02-25 | 삼성전자주식회사 | 시스템 온 칩, 이의 동작 방법, 및 이를 포함하는 시스템 |
US9600392B2 (en) * | 2014-08-11 | 2017-03-21 | International Business Machines Corporation | Tracking pipelined activity during off-core memory accesses to evaluate the impact of processor core frequency changes |
US10019271B2 (en) * | 2015-09-24 | 2018-07-10 | Mediatek, Inc. | Dynamic runtime data collection and performance tuning |
US10956220B2 (en) * | 2017-06-04 | 2021-03-23 | Apple Inc. | Scheduler for amp architecture using a closed loop performance and thermal controller |
US10909738B2 (en) * | 2018-01-05 | 2021-02-02 | Nvidia Corporation | Real-time hardware-assisted GPU tuning using machine learning |
US11120521B2 (en) | 2018-12-28 | 2021-09-14 | Intel Corporation | Techniques for graphics processing unit profiling using binary instrumentation |
US10748239B1 (en) | 2019-03-01 | 2020-08-18 | Qualcomm Incorporated | Methods and apparatus for GPU context register management |
US20200311859A1 (en) | 2019-03-28 | 2020-10-01 | Qualcomm Incorporated | Methods and apparatus for improving gpu pipeline utilization |
US11966785B2 (en) * | 2020-07-30 | 2024-04-23 | Arm Limited | Hardware resource configuration for processing system |
US20220035684A1 (en) * | 2020-08-03 | 2022-02-03 | Nvidia Corporation | Dynamic load balancing of operations for real-time deep learning analytics |
US20220156874A1 (en) * | 2020-11-13 | 2022-05-19 | Advanced Micro Devices, Inc. | Processing system with selective priority-based two-level binning |
-
2021
- 2021-07-12 US US17/373,718 patent/US12002142B2/en active Active
-
2022
- 2022-06-15 WO PCT/US2022/033532 patent/WO2023287540A1/en active Application Filing
- 2022-06-15 KR KR1020247000594A patent/KR20240026992A/ko unknown
- 2022-06-15 CN CN202280048028.5A patent/CN117616398A/zh active Pending
- 2022-06-15 TW TW111122187A patent/TW202307783A/zh unknown
- 2022-06-15 EP EP22738247.0A patent/EP4371007A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230009205A1 (en) | 2023-01-12 |
WO2023287540A1 (en) | 2023-01-19 |
US12002142B2 (en) | 2024-06-04 |
EP4371007A1 (en) | 2024-05-22 |
TW202307783A (zh) | 2023-02-16 |
KR20240026992A (ko) | 2024-02-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116391205A (zh) | 用于图形处理单元混合渲染的装置和方法 | |
US20230290034A1 (en) | Fast incremental shared constants | |
US11037358B1 (en) | Methods and apparatus for reducing memory bandwidth in multi-pass tessellation | |
CN116348904A (zh) | 用simo方法优化gpu内核以用于利用gpu高速缓存进行缩小 | |
US11080928B2 (en) | Methods and apparatus for visibility stream management | |
CN117616398A (zh) | Gpu范围界定中的性能开销优化 | |
US11087431B2 (en) | Methods and apparatus for reducing draw command information | |
US11373267B2 (en) | Methods and apparatus for reducing the transfer of rendering information | |
US20230377240A1 (en) | Run-time mechanism for optimal shader | |
US11893654B2 (en) | Optimization of depth and shadow pass rendering in tile based architectures | |
WO2021042331A1 (en) | Methods and apparatus for graphics and display pipeline management | |
CN117501302A (zh) | 常数数据存储 | |
CN116368527A (zh) | 基于gpu硬件的深度缓冲器方向跟踪 | |
CN116457830A (zh) | 基于区域不连续性的运动估计 | |
CN117980956A (zh) | 动态可变速率着色 | |
WO2024064032A1 (en) | Improving visibility generation in tile based gpu architectures | |
CN117980955A (zh) | 与样本空间相关联的聚焦分箱渲染 |
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 |