CN103870213B - 一种生成性能数据的图形处理管线及计算系统 - Google Patents

一种生成性能数据的图形处理管线及计算系统 Download PDF

Info

Publication number
CN103870213B
CN103870213B CN201310693427.XA CN201310693427A CN103870213B CN 103870213 B CN103870213 B CN 103870213B CN 201310693427 A CN201310693427 A CN 201310693427A CN 103870213 B CN103870213 B CN 103870213B
Authority
CN
China
Prior art keywords
processing pipeline
graphics processing
workload
event
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310693427.XA
Other languages
English (en)
Other versions
CN103870213A (zh
Inventor
罗杰·L·艾伦
济亚德·S·哈库拉
托马斯·梅尔文·奥格蒂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN103870213A publication Critical patent/CN103870213A/zh
Application granted granted Critical
Publication of CN103870213B publication Critical patent/CN103870213B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Abstract

经由管线化的状态包触发性能事件捕获。本发明的一个实施例阐述用于分析图形处理管线的性能的方法。在管线中将第一工作量和第二工作量组合在一起以生成组合的工作量。第一工作量与第一实例相关联并且第二工作量与第二实例相关联。生成用于组合的工作量的第一和第二初始事件,指示第一和第二工作量已在图形处理管线中的第一位置处开始处理。生成第一和第二最终事件,指示第一和第二工作量已在图形处理管线中的第二位置处完成处理。

Description

一种生成性能数据的图形处理管线及计算系统
技术领域
本发明总地涉及图形芯片性能分析,并且更具体地,涉及经由管线化的状态包(state bundle)触发性能事件捕获。
背景技术
图形处理硬件典型地包括称为图形处理管线的电路。图形处理管线可分成级(stage)。包括图形数据和指令的信息从最早的级通过图形处理管线到最晚的级,并且每级通过对信息实施各相关联的功能和操作来处理信息。级能够相互独立地进行操作,这使能不同级同时处理不同信息。以该方式同时处理不同信息增加了对图形处理管线的利用,改进性能。
图形处理管线可配置为提供与如何高效地在图形处理管线中处理图形数据相关的“性能数据”。这类性能数据可包括完成具体任务所要求的时间、在某个时间段期间所处理的数据的数量、以及其他相似的量度。典型地,针对工作的特定单元获得性能数据。这类工作的单元可以是“实例”,如本文所使用的,其是指全都在某个渲染“状态”实施的相关图形处理管线方法(诸如绘制调用)的集合。
采用一些常规图形处理管线架构,可逐实例地分析性能数据。开始监视性能的指令可以与期望得到其性能数据的实例一起发送到图形处理管线中。可使用实例被发送到图形处理管线中的时间和经处理的实例的结果退出图形处理管线的时间来确定处理实例需要多少时间。此外,还可对计数器进行记录,所述计算器用于对处理实例时所完成的工作的具体项进行计数,诸如着色的像素的数目等等。
然而,采用一些图形处理管线架构,图形处理管线可包括处于图形处理管线的中间位置的、称为分块器(tiler)单元的单元。分块器单元配置为从图形处理管线的第一部分接收图形数据并将图形数据组织成称为“图块(tile)”的相互排斥的构造。为了这么做,分块器单元可从被发送到图形处理管线中的数个实例中累积图形数据和指令、将实例细分并交错在一 起以产生组合的工作量、以及将组合的工作量发送到图形处理管线的第二部分。图形处理管线的第二部分逐图块地而非逐实例地处理数据。
分块器单元的存在可使如上文所述的常规性能监视几乎不可能进行,因为分块器单元的在图形处理管线下游处理的工作是基于图块的,而非基于实例的。换句话说,因为图形处理管线中的下游级在某时间正处理给定的图块而不是特定实例,所以用于图块进入和退出图形处理管线的给定级的时间的时间戳可提供与处理数个实例相关的总时间,而不是提供关于处理具体实例所要求的时间的信息。类似地,与图形处理管线的下游级相关联的计数器将提供与处理数个实例相关的计数,而不是提供与处理具体实例相关的计数。没有与如何在图形处理管线中处理具体实例相关的信息,调试图形处理管线以及分析改进图形处理管线性能的方式是非常困难的。
如前文所示出的,本领域所需要的是获得与基于图块的系统中的图形处理管线工作量相关的性能数据的方式。
发明内容
本发明的一个实施例阐述用于分析图形处理管线的性能的方法。在管线中将第一工作量和第二工作量组合在一起以生成组合的工作量。第一工作量与第一实例相关联并且第二工作量与第二实例相关联。生成用于组合的工作量的第一和第二初始事件,指示第一和第二工作量已在图形处理管线中的第一位置处开始处理。生成第一和第二最终事件,指示第一和第二工作量已在图形处理管线中的第二位置处完成处理。
所公开的方法的一个优点是,对于带有将实例细分成图块并将来自不同实例的图块交错的分块器单元的管线,可针对实例的组合集内的单个实例获得性能数据。
附图说明
因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。
图1是示出了配置为实现本发明的一个或多个方面的计算机系统的框 图;
图2是根据本发明的一个实施例的、用于图1的计算机系统的并行处理子系统的框图;
图3是根据本发明的一个实施例的、图2的通用处理集群内的流多处理器的一部分的框图;
图4是根据本发明的一个实施例的、图2的并行处理单元中的一个或多个能够经配置以实现的图形处理管线的概念图;
图5是根据本发明的一个实施例的、示出随着时间通过图形处理管线的数据流的示图;
图6A是指示多个块的图形帧的概念图,该多个块中的每一个表示不同实例,并且从图形上表示图形处理管线处理每个实例花费多少时间;
图6B是指示图6A中示出的、但被重新布置为强调在每个状态中的图形处理管线性能的实例的图形帧的概念图;
图7示出根据本发明的一个实施例的、带有分块器单元的图形处理管线;
图8A是根据本发明的一个实施例的、描绘图形处理管线的性能监视操作的示图,其描绘随着时间通过管线的数据流;
图8B是根据本发明的一个实施例的、描绘由图形处理管线中的本地性能监视器所生成的示例事件的框图;
图8C是根据本发明的一个实施例的、描绘由图形处理管线所生成的事件的框图;
图9是根据本发明的一个实施例的、用于分析图形处理管线的性能的方法步骤的流程图;
图10是根据本发明的一个实施例的、用于发射束(tract)并生成重演信号的方法步骤的流程图;以及
图11是根据本发明的一个实施例的、用于分析图形处理管线的性能的方法步骤的流程图。
具体实施方式
在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。
系统概述
图1为示出了配置为实现本发明的一个或多个方面的计算机系统100的框图。计算机系统100包括经由可以包括存储器桥105的互连路径通信的中央处理单元(CPU)102和系统存储器104。存储器桥105可以是例如北桥芯片,经由总线或其他通信路径106(例如超传输(HyperTransport)链路)连接到I/O(输入/输出)桥107。I/O桥107,其可以是例如南桥芯片,从一个或多个用户输入设备108(例如键盘、鼠标)接收用户输入并且经由通信路径106和存储器桥105将该输入转发到CPU102。并行处理子系统112经由总线或第二通信路径113(例如外围部件互连(PCI)Express、加速图形端口或超传输链路)耦连到存储器桥105。在一个实施例中,并行处理子系统112是将像素传递到显示设备110的图形子系统,所述显示设备110可以是任何常规的阴极射线管、液晶显示器、发光二极管显示器等。系统盘114也连接到I/O桥107并可配置为存储内容和应用和数据用于由CPU102和并行处理子系统112使用。系统盘114提供用于应用和数据的非易失性存储并可包括固定或可移动硬盘驱动器、闪速存储器设备以及压缩光盘只读存储器(CD-ROM)、数字通用光盘ROM(DVD-ROM)、蓝光、高清晰度DVD(HD-DVD)或其他磁、光、或固态存储设备。
交换器116提供I/O桥107与诸如网络适配器118以及各种插卡120和121的其他部件之间的连接。其他部件(未明确示出),包括通用串行总线(USB)或其他端口连接、压缩光盘(CD)驱动器、数字通用光盘(DVD)驱动器、胶片录制设备及类似部件,也可以连接到I/O桥107。图1所示的各种通信路径包括具体命名的通信路径106和113可以使用任何适合的协议实现,诸如PCI-Express、AGP(加速图形端口)、超传输或者任何其他总线或点到点通信协议,并且如本领域已知的,不同设备间的连接可使用不同协议。
在一个实施例中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路,并且构成图形处理单元(GPU)。在另一个实施例中,并行处理子系统112包含经优化用于通用处理的电路,同时保留底层(underlying)的计算架构,本文将更详细地进行描述。在又一个实施例中,可以将并行处理子系统112与一个或多个其他系统元件集成在单个子系统中,诸如结合存储器桥105、CPU102以及I/O桥107,以形成片上系统(SoC)。
编译器101可嵌入到设备驱动程序103内。编译器101按需要编译程 序指令用于由并行处理子系统112执行。在这类编译期间,编译器101可在编译的各阶段对程序指令施加变换。在本发明的另一实施例中,编译器101可以是独立的应用。
应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数目和布置、CPU102的数目以及并行处理子系统112的数目,可根据需要修改。例如,在一些实施例中,系统存储器104直接连接到CPU102而不是通过桥,并且其他设备经由存储器桥105和CPU102与系统存储器104通信。在其他替代性拓扑中,并行处理子系统112连接到I/O桥107或直接连接到CPU102,而不是连接到存储器桥105。而在其他实施例中,I/O桥107和存储器桥105可能被集成到单个芯片上而不是作为一个或多个分立设备存在。大型实施例可以包括两个或更多个CPU102以及两个或更多个并行处理子系统112。本文所示的特定部件是可选的;例如,任何数目的插卡或外围设备都可能得到支持。在一些实施例中,交换器116被去掉,网络适配器118和插卡120、121直接连接到I/O桥107。
图2示出了根据本发明的一个实施例的并行处理子系统112。如所示的,并行处理子系统112包括一个或多个并行处理单元(PPU)202,每个并行处理单元202都耦连到本地并行处理(PP)存储器204。通常,并行处理子系统包括U个PPU,其中U≥1。(本文中,类似对象的多个实例需要时以标识对象的参考数字和标识实例的括号中的数字来表示。)PPU202和并行处理存储器204可使用一个或多个集成电路设备来实现,诸如可编程处理器、专用集成电路(ASIC)或存储器设备,或者以任何其他技术可行的方式来实现。
再参考图1以及图2,在一些实施例中,并行处理子系统112中的一些或所有PPU202是具有渲染管线的图形处理器,其可以配置为实施与下述相关的各种操作:经由存储器桥105和第二通信路径113从CPU102和/或系统存储器104所供应的图形数据生成像素数据,与本地并行处理存储器204(可被用作图形存储器,包括例如常规帧缓冲区(buffer))交互以存储和更新像素数据,传递像素数据到显示设备110等等。在一些实施例中,并行处理子系统112可包括一个或多个作为图形处理器而操作的PPU202以及一个或多个用于通用计算的其他PPU202。这些PPU202可以是同样的或不同的,并且每个PPU202可具有一个或多个专用并行处理存储器设备或不具有专用并行处理存储器设备。并行处理子系统112中的一个 或多个PPU202可输出数据到显示设备110,或者并行处理子系统112中的每个PPU202可输出数据到一个或多个显示设备110。
在操作中,CPU102是计算机系统100的主处理器,控制和协调其他系统部件的操作。具体地,CPU102发出控制PPU202的操作的命令。在一些实施例中,CPU102写入用于每个PPU202的命令流到数据结构中(在图1或图2中未明确示出),该数据结构可位于系统存储器104、并行处理存储器204、或CPU102和PPU202都可访问的另一存储位置中。将指向每个数据结构的指针写到入栈缓冲区(pushbuffer)以发起对数据结构中的命令流的处理。PPU202从一个或多个入栈缓冲区读取命令流,然后相对于CPU102的操作异步地执行命令。可以经由设备驱动程序103由应用程序为每个入栈缓冲区指定执行优先级以控制对不同入栈缓冲区的调度。
现在返回参考图2和图1,每个PPU202包括经由连接到存储器桥105(或者,在一个替代性实施例中,直接连接到CPU102)的通信路径113与计算机系统100的其余部分通信的I/O(输入/输出)单元205。PPU202到计算机系统100的其余部分的连接也可以变化。在一些实施例中,并行处理子系统112可实现为可插入到计算机系统100的扩展槽中的插卡。在其他实施例中,PPU202可以和诸如存储器桥105或I/O桥107的总线桥集成在单个芯片上。而在其他实施例中,PPU202的一些或所有元件可以和CPU102集成在单个芯片上。
在一个实施例中,通信路径113是PCI Express链路,如本领域所知的,其中专用通道被分配到每个PPU202。也可以使用其他通信路径。I/O单元205生成用于在通信路径113上传送的包(或其他信号),并且还从通信路径113接收所有传入的包(或其他信号),将传入的包引导到PPU202的适当部件。例如,可将与处理任务相关的命令引导到主机接口206,而将与存储器操作相关的命令(例如,对并行处理存储器204的读取或写入)引导到存储器交叉开关单元210。主机接口206读取每个入栈缓冲区,并且将存储在入栈缓冲区中的命令流输出到前端212。
有利地,每个PPU202都实现高度并行处理架构。如详细示出的,PPU202(0)包括处理集群阵列230,该阵列230包括C个通用处理集群(GPC)208,其中C≥1。每个GPC208能够并发执行大量的(例如,几百或几千)线程,其中每个线程是程序的实例(instance)。在各种应用中,可分配不同的GPC208用于处理不同类型的程序或用于实施不同类型的计算。GPC208的分配可以取决于因每种类型的程序或计算所产生的工作量而变化。
GPC208从任务/工作单元207内的工作分布单元接收所要执行的处理任务。工作分布单元接收指向编码为任务元数据(TMD)(未示出)并存储在存储器中的处理任务的指针。指向TMD的指针包括在存储为入栈缓冲区并由前端单元212从主机接口206接收的命令流中。可以编码为TMD的处理任务包括所要处理的数据的索引,以及定义数据将被如何处理(例如,什么程序将被执行)的状态参数和命令。任务/工作单元207从前端212接收任务并确保在每一个TMD所指定的处理发起前,将GPC208配置为有效状态。可以为每个TMD指定用来调度处理任务的执行的优先级。还可从处理集群阵列230接收处理任务。可选地,TMD可包括控制将TMD添加到处理任务列表(或指向处理任务的指针的列表)的头部还是尾部的参数,从而提供除优先级以外的另一级别的控制。
存储器接口214包括D个分区单元215,每个分区单元215直接耦连到并行处理存储器204的一部分,其中D≥1。如所示的,分区单元215的数目一般等于动态随机存取存储器(DRAM)220的数目。在其他实施例中,分区单元215的数目也可以不等于存储器设备的数目。本领域的普通技术人员应该理解DRAM220可以用其他合适的存储设备来替代并且可以是一般常规的设计。因此省略了详细描述。诸如帧缓冲区或纹理映射图的渲染目标可以跨DRAM220加以存储,这允许分区单元215并行写入每个渲染目标的各部分以有效地使用并行处理存储器204的可用带宽。
任何一个GPC208都可以处理要被写到并行处理存储器204内的任何DRAM220的数据。交叉开关单元210配置为路由每个GPC208的输出到任何分区单元215的输入或到另一个GPC208用于进一步处理。GPC208通过交叉开关单元210与存储器接口214通信,以对各种外部存储器设备进行读取或写入。在一个实施例中,交叉开关单元210具有到存储器接口214的连接以和I/O单元205通信,以及到本地并行处理存储器204的连接,从而使得在不同GPC208内的处理核心能够与系统存储器104或对于PPU202而言非本地的其他存储器通信。在图2所示的实施例中,交叉开关单元210直接与I/O单元205连接。交叉开关单元210可使用虚拟信道来分开GPC208与分区单元215之间的业务流。
另外,GPC208可被编程以执行与种类繁多的应用相关的处理任务,包括但不限于,线性和非线性数据变换、视频和/或音频数据过滤、建模操作(例如,应用物理定律以确定对象的位置、速率和其他属性)、图像渲染操作(例如,曲面细分(tessellation)着色器、顶点着色器、几何着色器、 和/或像素着色器程序)等等。PPU202可将数据从系统存储器104和/或本地并行处理存储器204转移到内部(片上)存储器中,处理该数据,并且将结果数据写回到系统存储器104和/或本地并行处理存储器204,其中这样的数据可以由其他系统部件访问,所述其他系统部件包括CPU102或另一个并行处理子系统112。
PPU202可配备有任何容量(amount)的本地并行处理存储器204,包括没有本地存储器,并且可以以任何组合方式使用本地存储器和系统存储器。例如,在统一存储器架构(UMA)实施例中,PPU202可以是图形处理器。在这样的实施例中,将不提供或几乎不提供专用的图形(并行处理)存储器,并且PPU202会以排他或几乎排他的方式使用系统存储器。在UMA实施例中,PPU202可集成到桥式芯片中或处理器芯片中,或作为具有高速链路(例如,PCI Express)的分立芯片提供,所述高速链路经由桥式芯片或其他通信手段将PPU202连接到系统存储器。
如上所示,在并行处理子系统112中可以包括任何数目的PPU202。例如,可在单个插卡上提供多个PPU202、或可将多个插卡连接到通信路径113、或可将一个或多个PPU202集成到桥式芯片中。在多PPU系统中的PPU202可以彼此同样或不同。例如,不同的PPU202可能具有不同数目的处理核心、不同容量的本地并行处理存储器等等。在存在多个PPU202的情况下,可并行操作那些PPU从而以高于单个PPU202所可能达到的吞吐量来处理数据。包含一个或多个PPU202的系统可以以各种配置和形式因素来实现,包括台式电脑、笔记本电脑或手持式个人计算机、服务器、工作站、游戏控制台、嵌入式系统等等。
可以在GPC208上并发执行多个处理任务并且处理任务在执行期间可以生成一个或多个“子”处理任务。任务/工作单元207接收任务并动态调度处理任务和子处理任务用于由GPC208执行。
图3是根据本发明的一个实施例的、图2的GPC208内的流多处理器(SM)310的框图。每个GPC208可配置为并行执行大量线程,其中术语“线程”是指在特定输入数据集上执行的特定程序的实例。在一些实施例中,单指令、多数据(SIMD)指令发出技术用于在不提供多个独立指令单元的情况下支持大量线程的并行执行。在其他实施例中,单指令、多线程(SIMT)技术用于使用配置为向GPC208中的每一个内的处理引擎集发出指令的公共指令单元来支持大量一般来说同步的线程的并行执行。不同于所有处理引擎通常都执行同样指令的SIMD执行机制,SIMT执行通过 给定线程程序允许不同线程更容易跟随分散执行路径。本领域普通技术人员应该理解SIMD处理机制代表SIMT处理机制的功能子集。
经由将处理任务分布到一个或多个流多处理器(SM)310的管线管理器(未示出)来有利地控制GPC208的操作,其中每个SM310配置为处理一个或多个线程组。每个SM310包括指令L1高速缓存370,其配置为经由GPC208内的L1.5高速缓存(未示出)从存储器接收指令和常数。线程束(warp)调度器和指令单元312从指令L1高速缓存370接收指令和常数并根据指令和常数控制本地寄存器堆304和SM310功能单元。SM310功能单元包括N个exec(执行或处理)单元302和P个加载-存储单元(LSU)303。如本领域已知的,SM功能单元可被管线化,允许在前一个指令完成之前发出新指令。可提供功能执行单元的任何组合。在一个实施例中,功能单元支持各种各样的操作,包括整数和浮点运算(例如加法和乘法)、比较操作、布尔操作(AND、OR、XOR)、移位和各种代数函数的计算(例如平面插值、三角函数、指数函数和对数函数等等);以及相同功能单元硬件可均衡地用来实施不同的操作。
如本文之前所定义的,传送到特定GPC208的一系列指令构成线程,并且跨SM310内的并行处理引擎(未示出)的某一数目的并发执行线程的集合在本文中称为“线程束”或“线程组”。如本文所使用的,“线程组”是指对不同输入数据并发执行相同程序的一组线程,所述组的一个线程被指派到SM310内的不同处理引擎。线程组可以包括比SM310内的处理引擎数目少的线程,在这种情况下一些处理引擎将在该线程组正在被处理的周期期间处于闲置状态。线程组还可以包括比SM310内的处理引擎数目多的线程,在这种情况下处理将在连续的时钟周期内发生。因为每个SM310可以并发支持多达G个线程组,所以结果是在包括M个流多处理器310的GPC208中,在任何给定时间在GPC208中可以执行多达G*M个线程组的系统。
此外,多个相关线程组可以在SM310内同时活动(在执行的不同阶段)。该线程组集合在本文中称为“协作线程阵列”(“CTA”)或“线程阵列”。特定CTA的大小等于m*k,其中k是线程组中并发执行线程的数目并且通常是SM310内的并行处理引擎数目的整数倍,以及m是SM310内同时活动的线程组的数目。CTA的大小一般由编程者以及可用于CTA的硬件资源诸如存储器或寄存器的容量来确定。
在本发明的实施例中,使用计算系统的PPU202或其他处理器来使用 线程阵列执行通用计算是可取的。为线程阵列中的每个线程指派在线程的执行期间对于线程可访问的唯一的线程标识符(“线程ID”)。可被定义为一维或多维数值的线程ID控制线程处理行为的各方面。例如,线程ID可用于确定线程将要处理输入数据集的哪部分和/或确定线程将要产生或写输出数据集的哪部分。
每线程指令序列可包括定义线程阵列的代表性线程和一个或多个其他线程之间的协作行为的至少一个指令。例如,每线程指令序列可能包括在序列中的特定点处挂起用于代表性线程的操作执行直到诸如其他线程的一个或多个到达该特定点的时间为止的指令、用于代表性线程将数据存储在其他线程的一个或多个有权访问的共享存储器中的指令、用于代表性线程原子地读取和更新存储在其他线程的一个或多个基于它们的线程ID有权访问的共享存储器中的数据的指令等等。CTA程序还可以包括计算数据将从其读取的共享存储器中的地址的指令,该地址是线程ID的函数。通过定义合适的函数并提供同步技术,可以以可预测的方式由CTA的一个线程将数据写入共享存储器中的给定位置并由同一个CTA的不同线程从该位置读取数据。因此,数据在线程之间共享的任何期望模式可以得到支持,以及CTA中的任何线程可以与同一个CTA中的任何其他线程共享数据。如果存在数据在CTA的线程之间的共享,则其范围由CTA程序确定;因此,应该理解的是,在使用CTA的特定应用中,CTA的线程可能会或可能不会真正互相共享数据,这取决于CTA程序,术语“CTA”和“线程阵列”在本文作为同义词使用。
SM310提供具有不同级别的可访问性的片上(内部)数据存储。特殊寄存器(未示出)对于LSU303可读但不可写并且用于存储定义每个线程的“位置”的参数。在一个实施例中,特殊寄存器包括每线程(或SM310内的每exec单元302)一个的存储线程ID的寄存器;每个线程ID寄存器仅由各自的exec单元302可访问。特殊寄存器还可以包括附加寄存器,其对于执行由TMD所代表的同一个处理任务的所有线程(或由所有LSU303)可读,其存储CTA标识符、CTA维数、CTA所属网格(grid)的维数(或队列位置,如果TMD编码队列任务而不是网格任务的话)、以及CTA被指派到的TMD的标识符。
如果TMD是网格TMD,则TMD的执行会启动和执行固定数目的CTA以处理存储在队列中的固定量的数据。将CTA的数目指定为网格宽度、高度和深度的乘积。可以将固定量的数据存储在TMD中或TMD可以存储指 向将由CTA所处理的数据的指针。TMD还存储由CTA所执行的程序的开始地址。
如果TMD是队列TMD,那么使用TMD的队列特点,这意味着将要被处理的数据量不一定是固定的。队列条目存储用于由指派到TMD的CTA所处理的数据。队列条目还可以代表在线程执行期间由另一个TMD所生成的子任务,从而提供嵌套并行性。通常线程或包括线程的CTA的执行被挂起直到子任务的执行完成。可以将队列存储在TMD中或与TMD分开存储,在该情况下TMD存储指向该队列的队列指针。有利地,当代表子任务的TMD正在执行时可以将由子任务所生成的数据写到队列。队列可以实现为循环队列以使得数据的总量不限于队列的大小。
属于网格的CTA具有指示网格内各自CTA的位置的隐含网格宽度、高度和深度参数。在初始化期间响应于经由前端212从设备驱动程序103所接收的命令来写特殊寄存器并且在处理任务的执行期间特殊寄存器不改变。前端212调度每个处理任务用于执行。每个CTA与具体TMD相关联用于一个或多个任务的并发执行。此外,单个GPC208可以并发执行多个任务。
参数存储器(未示出)存储可由同一个CTA内的任何线程(或任何LSU303)读取但不可由其写入的运行时间参数(常数)。在一个实施例中,设备驱动程序103在引导SM310开始执行使用参数的任务之前将这些参数提供给参数存储器。任何CTA内的任何线程(或SM310内的任何exec单元302)可以通过存储器接口214访问全局存储器。可以将全局存储器的各部分存储在L1高速缓存320中。
每个线程将本地寄存器堆304用作暂存空间;每个寄存器被分配以专用于一个线程,并且在本地寄存器堆304的任何部分中的数据仅对于寄存器被分配到的线程可访问。本地寄存器堆304可以实现为物理上或逻辑上分为P个通道的寄存器堆,每个通道具有一定数目的条目(其中每个条目可以存储例如32位字)。将一个通道指派到N个exec单元302和P个下载-存储单元LSU303的每一个,并且利用用于执行同一个程序的不同线程的数据来填充不同通道中的相应条目以帮助SIMD执行。可以将通道的不同部分分配到G个并发线程组中的不同线程组,以使得本地寄存器堆304中的给定条目仅对于特定线程可访问。在一个实施例中,保留本地寄存器堆304内的某些条目用于存储线程标识符,实现特殊寄存器之一。此外,一致L1高速缓存320存储用于N个exec单元302和P个下载-存储单元 LSU303的每个通道的一致值或常数值。
共享存储器306对于单个CTA内的线程可访问;换言之,共享存储器306中的任何位置对于同一个CTA内的任何线程(或对于SM310内的任何处理引擎)可访问。共享存储器306可以实现为具有允许任何处理引擎对共享存储器中的任何位置读取或写入的互连的共享寄存器堆或共享片上高速缓存存储器。在其他实施例中,共享状态空间可能映射到片外存储器的每CTA区上并被高速缓存在L1高速缓存320中。参数存储器可以实现为在实现共享存储器306的同一个共享寄存器堆或共享高速缓存存储器内的指定部分,或者实现为LSU303对其具有只读访问权限的分开的共享寄存器堆或片上高速缓存存储器。在一个实施例中,实现参数存储器的区域还用于存储CTA ID和任务ID,以及CTA和网格维数或队列位置,实现特殊寄存器的各部分。SM310中的每个LSU303耦连到统一地址映射单元352,统一地址映射单元352将为在统一存储器空间中所指定的加载和存储指令所提供的地址转换为每个各异存储器空间中的地址。因此,指令可以用于通过指定统一存储器空间中的地址来访问本地、共享或全局存储器空间中的任何一个。
每个SM310中的L1高速缓存320可以用于高速缓存私有的每线程本地数据还有每应用全局数据。在一些实施例中,可以将每CTA共享数据高速缓存在L1高速缓存320中。LSU303经由存储器和高速缓存互连380耦连到共享存储器306和L1高速缓存320。
应该理解本文所述的核心架构是示例性的并且变化和修改都是可能的。GPC208内可包括任何数目的处理单元例如SM310。进一步地,如图2所示,PPU202可包括任何数目的GPC208,该任何数目的GPC208有利地在功能上相互类似使得执行行为不取决于哪个GPC208接收特定的处理任务。进一步地,每个GPC208有利地使用单独且各异的处理单元、L1高速缓存独立于其他GPC208进行操作以执行用于一个或多个应用程序的任务。
图形管线架构
图4是根据本发明的一个实施例的、图2的PPU202中的一个或多个能够配置为实现的图形处理管线400的概念图。例如,SM310中的一个可配置为实施顶点处理单元415、几何处理单元425、片段处理单元460中的一个或多个的功能。还可由GPC208内的其他处理引擎和相应的分区单元 215实施数据汇编器410、基元汇编器420、光栅化器455和光栅操作单元465的功能。可替代地,可使用用于一个或多个功能的专用处理单元来实现图形处理管线400。
数据汇编器410处理单元收集用于高阶表面、基元等的顶点数据,并将包括顶点属性的顶点数据输出到顶点处理单元415。顶点处理单元415是可编程执行单元,其配置为执行顶点着色器程序,按顶点着色器程序所指定的来亮化和变换顶点数据。例如,顶点处理单元415可被编程以将顶点数据从基于对象的坐标表示(对象空间)变换到可替代地基于诸如世界空间或规格化设备坐标(NDC)空间的坐标系。顶点处理单元415可读取由数据汇编器410所存储在L1高速缓存320、并行处理存储器204、或系统存储器104中的数据用于在处理顶点数据中使用。
基元汇编器420从顶点处理单元415接收顶点属性、按需要读取所存储的顶点属性、并构建图形基元用于由几何处理单元425处理。图形基元包括三角形、线段、点等等。几何处理单元425是可编程执行单元,其配置为执行几何着色器程序,按几何着色器程序所指定的来变换从基元汇编器420所接收的图形基元。例如,几何处理单元425可被编程以将图形基元细分成一个或多个新图形基元并计算用来将新图形基元光栅化的参数,诸如平面方程系数。
在一些实施例中,几何处理单元425还可在几何流中添加或删除元素。几何处理单元425将指定新图形基元的参数和顶点输出到视口缩放、剔除(cull)和裁剪(clip)单元450。几何处理单元425可读取存储在并行处理存储器204或系统存储器104中的数据用于在处理几何数据中使用。视口缩放、剔除和裁剪单元450实施裁剪、剔除和视口缩放,并将所处理的图形基元输出到光栅化器455。
光栅化器455扫描转换新图形基元并将片段和覆盖数据输出到片段处理单元460。此外,光栅化器455可配置为实施z剔除(z-culling)和其他基于z的优化。
片段处理单元460是可编程的执行单元,其配置为执行片段着色器程序、按片段着色器程序所指定的来变换从光栅化器455所接收的片段。例如,片段处理单元460可被编程以实施诸如透视校正、纹理映射、着色、混合等操作,以产生输出到光栅操作单元465的经着色的片段。片段处理 单元460可读取存储在并行处理存储器204或系统存储器104中的数据用于在处理片段数据中使用。可以像素、样本、或其他粒度对片段着色,这取决于所编程的采样率。
光栅操作单元465是处理单元,其实施诸如模板(stencil)、z测试、混合等的光栅操作,并输出像素数据作为经处理的图形数据用于存储在图形存储器中。经处理的图形数据可存储在图形存储器例如并行处理存储器204和/或系统存储器104中,用于在显示设备110上显示或用于由CPU102或并行处理子系统112进一步处理。在本发明的一些实施例中,光栅操作单元465配置为压缩写入到存储器的z或颜色数据以及解压缩从存储器中读取的z或颜色数据。
图形处理管线400配置为分析“实例”的性能特性,该“实例”是在某个“状态”实施的诸如“绘制调用”的相关方法的合集。方法包括由驱动程序103发送到命令图形处理管线400的绘制某些对象的调用。方法还包括改变渲染状态的指令。实例典型地包括设置特定渲染状态的一个或多个方法以及要在该渲染状态完成的一个或多个绘制调用。
为了分析实例的性能,驱动程序103发出等待空闲(wait-for-idle)方法,然后是“PM触发(PMTrigger)”方法,然后是实例,然后是等待空闲方法,然后是“PM触发”方法。“等待空闲”方法使管线在处理被发送到图形处理管线中的附加方法之前等待直到图形处理管线清理了数据和指令。PM触发(或“性能监视触发”)方法使图形处理管线400切换(进入或退出)性能监视模式,在该性能监视模式中图形处理管线400提供用于由图形处理管线400所处理的方法的性能数据。改变状态的方法使随后被发送到状态改变指令的方法在请求改变的状态被处理。驱动程序103发到图形处理管线400中的方法使图形处理管线400隔离实例用于分析,并处理该实例并生成性能数据。
针对实例在什么时间进入图形处理管线400、以及实例在什么时间退出图形处理管线400获得性能数据。这两个时间允许确定用于实例的处理时间。性能数据还可包括在处理实例的同时由图形处理管线400所完成的工作的具体单元的一个或多个计数。这类工作的单元可包括例如着色的像素。针对分块的工作量触发性能事件捕获
图5是根据本发明的一个实施例的、示出随着时间通过图形处理管线 400的数据流的示图。驱动程序103发送等待空闲方法502-1、PM触发方法504-1、实例506、第二等待空闲方法502-2和第二PM触发方法504-2。等待空闲方法502-1使管线400清除(flush)所有数据。因此,示图开始时在图形处理管线400中没有数据,如空闲区域508所指示。当图形处理管线400是清空的时,图形处理管线400开始处理实例506。块516表示通过图形处理管线400的各级的与实例506相关的数据流。线518-1和518-2分别指示实例进入和退出的时间。可以一起使用线518-1和518-2来确定用于实例506的总经过时间522。
图6A是指示多个块600、602、604、606、608、610、612和614的图形帧的概念图,该多个块中的每一个表示不同实例,并且从图形上表示图形处理管线400处理每个实例花费多少时间。图6A中所描绘的实例可包括用于绘制特定帧的实例。图形处理管线400在多个不同状态处理多个实例以绘制帧。在状态0中绘制与块600、602、614相对应的实例、在状态1中绘制与块604、606、610和612相对应的实例以及在状态2中绘制与块608相对应的实例。
图6B是指示图6A中示出的、但被重新布置为强调在每个状态中的图形处理管线400性能的实例的图形帧的概念图。性能分析可包括确定图形处理管线400在每个状态实施工作花费多少时间。因此,图6B指示用于在状态1中处理的时间总量620、用于在状态0中处理的时间总量622和用于在状态2中处理的时间总量624。
采用结合图5-6B所描述的图形处理管线,在特定状态上所花费的处理时间是易于确定的,因为是特定类型工作的计数,因为工作是逐实例地被处理的。然而,如针对其中讨论了实施分块的图形处理管线的图7-10所描述的,用于特定状态的处理时间是不易确定的,因为工作是逐图块被处理的。因此图7-10提供用于分析其中实施分块的图形管线的性能的技术。
图7示出根据本发明的一个实施例的、带有分块器单元753的图形处理管线700。如所示,图形处理管线700包括上游单元710、分块器单元753以及下游单元720。上游单元710可包括诸如数据汇编器(未示出)、顶点处理单元(未示出)、基元汇编器(未示出)、几何处理单元(未示出)和视口缩放、剔除和裁剪单元(未示出)的单元。下游单元720可包括诸如光栅化器(未示出)、片段处理单元(未示出)以及光栅操作单元765 的单元。分块器单元753从上游单元710接收基元。分块器单元753将可与不同实例相关联的基元加以组合,并基于基元属于哪些“图块”来重新组织基元。图块是基元与其相关联的屏幕的段。分块器单元753等待直到来自多个实例的基元已到达分块器单元753并确定如何将那些基元组合在一起。分块器单元753将基元组合成束用于由下游单元720处理。分块器单元753将束组合成图块,其中每个束表示源自相同实例的图块的一部分。
因为图块的性质,所以不会在下游单元中一次处理全体实例。用于图块的进入和退出时间不一定提供关于用于实例的处理时间的信息,并且无法以如针对图5-6B所描述的类似方式生成用于实例的总处理时间。为了允许确定用于带有分块器单元的图形处理管线的与性能相关的数据,本发明的实施例预期传播具有书签(bookmark)的本地性能监视器触发方法通过图形处理管线。耦连到图形处理管线内的各单元的本地性能监视器检测本地性能监视器触发方法和书签并利用与处理图块和实例相关的数据生成性能事件。
分块器单元753耦连到两个本地性能监视器780-1、780-2。本地性能监视器780-1耦连到分块器单元753的进入点并且本地性能监视器780-2耦连到分块器单元753的退出点。第三本地性能监视器780-3耦连到图形处理管线700的下游单元720中的光栅操作单元(ROP)765。
驱动程序103配置为发送本地性能触发方法(本文也共同称为“PM本地触发(书签)”)通过图形处理管线700。本地性能触发方法具有标识本地性能触发方法与其相关联的实例的书签。图形处理管线700中的单元配置为传播PM本地触发(书签)方法通过图形处理管线700。性能监视器780配置为检测PM本地触发(书签)并响应于PM本地触发(书签)的接收生成性能事件。
性能事件起标识束已到达图形处理管线700中的特定单元的时间的作用。性能事件包括标识哪个本地性能监视器生成事件的数据(“性能监视器ID”)、触发事件的生成的PM本地触发(书签)的书签值、表示性能事件的生成时间的时间戳、以及用于按需要记录附加数据的一个或多个计数器。时间戳允许确定束已通过生成性能事件的单元的时间。书签允许确定时间戳与其相关联的实例。性能监视器ID标识哪个单元生成事件。计数器可按需要被使用,并且其可用来记录例如已在特定时间量中实施了多少特定类 型工作的单元。事件还包括在先的书签值,其指示由本地性能监视器所发送的先前事件与哪个实例相关联。事件还包括用于书签和用于在先的书签的计数器,其指示与特定书签值相关联的事件已被发送的次数。书签和书签计数器一起指示特定束。
驱动程序103配置为在每个实例开始时发送一个PM本地触发(书签)方法。然而,因为可能存在多个与每个实例相关联的束,所以由驱动程序103所发送的PM本地触发(书签)方法仅使本地性能监视器780生成用于与特定实例相关联的第一束的事件。因此,分块器单元753配置为每当在与特定实例相关联的第一束之后的束被发送到下游单元720中就“重演”由驱动程序103所发送的PM本地触发(书签)方法。PM本地触发(书签)方法的“重演”是被发送用于第一束的PM本地触发(书签)方法的拷贝,所述第一束在被发送到下游单元720中的实例中。因此重演的PM本地触发(书签)还被传播通过下游单元720,并且还使下游单元720中的本地性能监视器780,诸如ROP765中的本地性能监视器780-3,生成包含与性能相关的数据的性能事件,诸如性能监视器ID、书签值、何时生成性能事件的时间戳、以及用于按需要记录附加数据的一个或多个计数器。
本地性能监视器780将性能事件发送到存储器用于由配置为分析性能数据的软件或硬件模块进行分析。在一个实施例中,运行在计算机上的独立应用可接收性能事件并生成性能度量(metric)。在另一实施例中,驱动程序103接收性能事件并生成性能度量。
图8A是根据本发明的一个实施例的、描绘图形处理管线700的性能监视操作的示图,其描绘随着时间通过图形处理管线的数据流。驱动程序103发送等待空闲方法、性能监视器触发方法、本地性能触发方法和实例、以及另一等待空闲方法和性能监视器触发方法。上游单元710处理与实例相关的数据。由上游单元710所处理的数据包括与实例1相关的数据814、与实例2相关的数据816、以及与实例3相关的数据818。进一步地,上游单元710传播采用数据814的本地性能触发方法、采用数据816的本地性能触发方法、以及采用数据818的本地性能触发方法。分块器单元753将数据814、816、818组合并将束824、826、828发射到下游单元720中。分块器单元753将本地性能触发方法发送到下游单元720中并重演本地性能触发方法。ROP765处理束824、826、828。
分块器单元753从上游单元710接收本地性能触发方法。本地性能监视器780-1一旦接收本地性能触发方法则生成事件829。分块器单元753将本地性能触发方法传播到下游单元720。当束824、826、828被发射时,本地性能监视器780-2生成事件825、827。事件825是当从分块器单元753传播本地性能触发方法时所生成的事件。事件827是当从分块器单元753传播重演时所生成的事件。事件835是当本地性能触发方法到达ROP765时所生成的事件。事件837是当重演方法到达ROP765时所生成的事件。
来自事件的成为每个束“边界(border)”的时间戳提供关于用于每个束的处理持续期的信息。可从来自由耦连到ROP765的本地性能监视器780-3所生成的事件的时间戳中减去来自由耦连到分块器单元753的退出点的本地性能监视器780-2所生成的事件的时间戳,以获得分块器单元753和ROP765之间的处理持续期。针对每个束,当束首先抵达特定单元(在特定单元处开始处理)和离开特定单元(在特定单元处结束处理)时生成事件。通过从来自当束在耦连到ROP765的本地性能监视器780-3处结束处理时所生成的事件的时间戳中减去当束在处于分块器单元753的结束处的本地性能监视器780-2处开始处理时所生成的时间戳,可获得该束在下游单元720中的处理持续期。
图8B是根据本发明的一个实施例的、描绘由图形处理管线700中的本地性能监视器780所生成的示范性事件的框图。图8B中列出的事件由多个本地性能监视器780所生成并以全局时间次序示出。可以看出,时间戳856从最顶事件到最底事件在增加。每个事件包括性能监视器ID852、事件ID854、时间戳856、在先书签数858和在先书签计数器860、书签数862和书签计数器864、以及一个或多个性能监视计数器866和868。
性能监视器ID852指示哪个性能监视器生成事件。事件ID854指示事件数。由性能监视器所生成的第一事件可具有为1的事件ID,由相同性能监视器所生成的第二事件可具有为2的事件ID,以此类推。时间戳856指示生成事件的时间。在图8B和8C中,以任意时间单位示出时间。事件可以以时钟周期、以时间单位、或以另一方式存储时间。
书签数862是由本地性能监视器780所检测、并采用PM本地触发(书签)传播通过图形处理管线700的书签值。本地性能监视器780存储用于每个书签值的计数器并包括事件中的书签计数器864。例如,当生成具有 第一书签值的第一事件时,计数值是1,当生成具有相同第一书签值的第二事件时,计数值是2。在先书签858指示在特定本地性能监视器780处在当前事件之前紧挨着生成的事件的书签数。因此,如果本地性能监视器生成具有书签为2的第一事件,并随后生成具有书签为3的第二事件,那么用于第二事件的在先书签数是2。在先书签数起指示哪个束由图形处理管线700的某一部分所先前处理的作用,并且书签数起指示哪个束由图形处理管线700的相同部分所接下来处理的作用。在先书签计数器860以类似于用于书签值862和书签计数器864的方式,存储采用特定在先书签值发出事件的次数。
具体书签862值和书签计数器864值的组合唯一地指示哪个束紧挨在事件之后,而具体在先书签858值和在先书签计数器860值的组合唯一地指示哪个束紧挨在事件之前。特殊在先书签值可用来指示在事件之前没有束,例如当管线由于等待空闲信号而是空的时。在图8B中,该特殊在先书签值采用“-”来指示。
性能监视计数器866、868是通用计数器,其可由本地性能监视器所使用以按需要记录任何值。在图8B和8C中未示出值,但可由性能监视计数器866、868对任何值加以计数。
事件825-1具有与实例1相对应的书签值,指示在事件825-1之后的束与实例1相关联。事件825-1中的书签计数器指示紧挨在事件825-1之后的束824是被发送到下游单元720中的、与实例1相关联的第一束。在先书签和在先书签计数器指示没有事物在与实例1相关联的被发送的第一束之前。事件825-1具有时间戳,其指示束824-1何时从分块器单元753被发送到下游单元720。
事件835-2具有与实例1相对应的在先书签值,指示由ROP765在事件835-2的生成之前所处理的束与实例1相关联。事件835-2还具有计数器,其指示与实例1相关联的哪个束与事件835-2相关联。计数器值指示由ROP765在事件835-2的生成之前所处理的束是与实例1相关联的第一束824-1。事件835-2还具有时间戳,其指示何时生成事件835-2。
图8C是根据本发明的一个实施例的、描绘由图形处理管线700所生成的事件的框图。综合起来,由分块器单元853所生成的事件825-1以及由ROP765所生成的事件835-2指示从束824被发送到下游单元720中直到 由ROP765进行的束824的处理为止的经过时间。当束824开始由下游单元720进行的处理时生成事件825-1,并且当束824结束由下游单元720进行的处理时生成事件835-2。类似地,事件825-2和事件835-3指示从束826被发送到下游单元720中直到由ROP765进行的束826的处理为止的经过时间。事件825-3和837-1指示用于束828的经过时间。其他事件825、827、835和837指示用于其他束的经过时间。
可以看出,可以将来自第一单元的事件与来自进一步在下游的第二单元的事件配对,以确定用于两个单元之间的束的经过时间。将来自第一单元的事件中的书签和书签计数器值与来自第二单元的事件中的在先书签和在先书签计数器值相比较。如果来自第一单元的事件中的书签862和书签计数器864中的值与来自第二单元的事件中的在先书签858和在先书签计数器860中的值相匹配,那么第一和第二事件成为束“边界”。第一事件提供用于束经过第一单元的时间的时间戳,并且第二事件提供用于束经过第二单元的时间的时间戳。由用于第一事件的书签862值提供束与其相关联的实例,并且由用于第一事件的书签计数值864提供束数。
事件825-1、835-2中的数据指示用于与实例1相关联的束1的经过时间是328–275=53个时间单位。事件825-2和835-3中的数据指示用于与实例2相关联的束1的经过时间是359–305=54个时间单位。事件825-3和837-1中的数据指示用于与实例3相关联的束1的经过时间是390–333=57个时间单位。可通过将用于由分块器单元753所发送的、与实例相关联的所有束的经过时间加起来来确定该实例在第一单元和第二单元之间的处理的总时间。
图9是根据本发明的一个实施例的、用于分析图形处理管线700的性能的方法步骤的流程图。虽然结合图1-4和7-8B描述了方法步骤,但本领域技术人员将理解的是,配置为以任何次序实施方法步骤的任何系统均在本发明的范围内。
如所示,方法900开始于步骤902,在该处驱动程序103提供采用一个或多个等待空闲方法、一个或多个PM触发方法、一个或多个PM本地触发(书签)方法和一个或多个实例的图形处理管线700。PM本地触发(书签)方法在每个实例之前,并且书签值是标识在PM本地触发(书签)方法后的实例的值。
在步骤904中,图形处理管线700中的上游单元710处理实例以生成数据。PM本地触发(书签)方法也抵达分块器单元753。在步骤906中,分块器单元753进入点检测PM本地触发(书签)方法。在步骤908中,耦连到分块器单元753进入点的第一本地性能监视器780-1生成用于由分块器单元753进入点所检测的PM本地触发(书签)方法的事件。在步骤910中,分块器单元753从上游单元710接收数据并将数据组合以形成组合的工作量。在步骤912中,分块器单元753发射用于组合的工作量的束并生成重演。下文针对图10更详细地描述步骤912。
在步骤914中,分块器单元753退出点检测PM本地触发(书签)方法和重演。在步骤916中,耦连到分块器单元753退出点的第二本地性能监视器780-2生成与由分块器单元753退出点所检测的PM本地触发(书签)方法和重演相关联的事件。在步骤918中,束传播通过下游单元720。在步骤920中,ROP765接收束并检测PM本地触发(书签)方法。在步骤922中,第三本地性能监视器780-3生成与由ROP765所接收的PM本地触发(书签)方法和重演相关联的事件。
图10是根据本发明的一个实施例的、用于实施图9的步骤912的方法步骤的流程图,其包括发射束并生成重演。虽然结合图1-4和7-8B描述了方法步骤,但本领域技术人员将理解的是,配置为以任何次序实施方法步骤的任何系统均在本发明的范围内。
如所示,方法1000开始于步骤1002,在该处分块器单元753将束发出到下游单元720。在步骤1004中,分块器单元753检查束是否是被发送到下游单元720的、与特定实例相关联的第一束。如果束是实例中的第一束,那么PM本地触发(书签)方法在图形处理管线700中,分块器单元753不生成重演,并且方法前进到步骤1006。在步骤1006中,分块器单元753将PM本地触发(书签)方法传播到下游单元720。在步骤1007中,分块器单元753检查分块器单元753是否要将另一束传播到下游单元720中。如果分块器单元753要传播另一束,那么方法循环回到步骤1002。
在步骤1004中,如果束不是实例中的第一束,那么方法1000前进到步骤1008。在步骤1008中,分块器单元753确定用于当前束的书签值。在步骤1010中,分块器单元753重演用于当前束的PM本地触发(书签)方法。方法随后前进到步骤1007。
图11是根据本发明的一个实施例的、用于分析图形处理管线700的性能的方法步骤的流程图。虽然结合图1-4和7-8B描述了方法步骤,但本领域技术人员将理解的是,配置为以任何次序实施方法步骤的任何系统均在本发明的范围内。
如所示,方法1100开始于步骤1102,在该处驱动程序103将等待空闲方法、PM触发方法、PM本地触发(书签)方法和实例发到图形处理管线700。管线开始处理实例并生成性能事件。在步骤1104中,驱动程序103接收指示图形处理管线700的性能数据的性能事件。在步骤1106中,驱动程序103分析性能事件以确定用于被发送到管线中的实例的性能数据。分析性能事件可包括分析不同事件上的时间戳以确定用于某工作量的处理的持续期。分析性能事件还可包括分析通用计数器以确定由图形处理管线700所实施的某类型工作的数量,诸如当处理各实例时所着色的像素的数目。
总之,上文描述的实施例提供特征用于促进具有分块器单元的图形处理管线的性能分析。驱动程序配置为将性能监视器触发方法发送到图形处理管线。本地性能监视器耦连到分块器单元,并耦连到管线中的下游位置,诸如ROP。本地性能监视器生成包括与性能相关的数据的“事件”,诸如一旦检测到性能监视器触发方法的时间戳。分块器单元确保性能监视器触发方法和标识实例的相应书签被发送用于与每个实例相关联的每个束。针对与实例相关联的第一束,原始性能监视器触发方法已经在管线中。然而,针对在第一束之后的与特定实例相关联的每个束,分块器单元生成“重演”性能监视器触发方法和相应书签。由本地性能监视器所生成的事件可被发送出到存储器并由计算机上运行的软件分析以确定用于每个束的处理的经过时间。可在事件中提供计数器,并且其可提供与针对特定束所处理的具体类型工作的数量相关的信息。
上文所描述的实施例的优点是,对于带有将实例细分成图块并将来自不同实例的图块交错的分块器单元的管线,可针对整个实例获得性能数据。
本发明的一个实施例可被实现为与计算机系统一起使用的程序产品。该程序产品的程序定义实施例的各功能(包括本文中描述的方法)并且可以被包含在各种计算机可读存储介质上。示例性计算机可读存储介质包括但不限于:(i)不可写的存储介质(例如,计算机内的只读存储器设备, 诸如可由压缩光盘只读存储器(CD-ROM)驱动器读取的CD-ROM盘、闪存存储器、只读存储器(ROM)芯片或任何类型的固态非易失性半导体存储器),在其上存储永久性信息;和(ii)可写的存储介质(例如,磁盘驱动器或硬盘驱动器内的软盘或者任何类型的固态随机存取半导体存储器),在其上存储可更改的信息。
以上已参照具体实施例对本发明进行了描述。然而,本领域普通技术人员将理解的是,可对此做出各种修改和改变而不脱离如随附权利要求书中所阐述的本发明的较宽精神和范围。因此,前面的描述以及附图应被视为是例示性而非限制性的意义。
因此,本发明的实施例的范围在下面的权利要求中阐述。

Claims (10)

1.一种配置为生成性能数据的图形处理管线,包括:
分块器单元,其配置为将所述图形处理管线中的第一工作量和第二工作量组合在一起以生成组合的工作量,其中所述第一工作量与第一实例相关联,并且所述第二工作量与第二实例相关联;
第一本地性能监视器,其耦连到所述分块器单元并配置为:
生成用于所述组合的工作量的第一初始事件,其中所述第一初始事件指示所述第一工作量已在所述图形处理管线中的第一位置处开始处理,以及
生成用于所述组合的工作量的第二初始事件,其中所述第二初始事件指示所述第二工作量已在所述图形处理管线中的所述第一位置处开始处理;以及
第二本地性能监视器,其配置为:
生成用于所述组合的工作量的第一最终事件,其中所述第一最终事件指示所述第一工作量已在所述图形处理管线中的第二位置处完成处理,以及
生成用于所述组合的工作量的第二最终事件,其中所述第二最终事件指示所述第二工作量已在所述图形处理管线中的所述第二位置处完成处理。
2.根据权利要求1所述的图形处理管线,其中所述第一初始事件、所述第二初始事件、所述第一最终事件以及所述第二最终事件中的每一个包括时间戳、性能监视器ID和书签值。
3.根据权利要求2所述的图形处理管线,其中所述分块器单元进一步配置为将第三工作量与所述第一工作量和所述第二工作量组合以生成所述组合的工作量,其中所述第三工作量与第三实例相关联。
4.根据权利要求3所述的图形处理管线,其中:
所述第一本地性能监视器进一步配置为生成用于所述组合的工作量的第三初始事件,其中所述第三初始事件指示所述第三工作量已在所述图形处理管线中的所述第一位置处开始处理;以及
所述第二本地性能监视器进一步配置为生成用于所述组合的工作量的第三最终事件,其中所述第三最终事件指示所述第三工作量已在所述图形处理管线中的所述第二位置处完成处理。
5.根据权利要求1所述的图形处理管线,其中所述分块器单元驻留在所述图形处理管线中的所述第一位置处,并且光栅操作单元驻留在所述图形处理管线中的所述第二位置处。
6.根据权利要求1所述的图形处理管线,其中所述第一实例包括被提供到所述图形处理管线的第一多个相关方法,并且所述第二实例包括被提供到所述图形处理管线的第二多个相关方法。
7.根据权利要求1所述的图形处理管线,进一步包括:
第三本地性能监视器,其配置为:
生成用于所述组合的工作量的第一中间事件,其中所述第一中间事件指示所述第一工作量已在所述图形处理管线中的第一中间位置处开始处理,以及
生成用于所述组合的工作量的第二中间事件,其中所述第二中间事件指示所述第二工作量已在所述图形处理管线中的所述第一中间位置处开始处理,
其中所述第一位置是所述分块器单元的进入点,所述第一中间位置是所述分块器单元的退出点,光栅操作单元驻留在所述第二位置处,并且所述第二本地性能监视器耦连到所述光栅操作单元。
8.根据权利要求7所述的图形处理管线,其中所述第一本地性能监视器、所述第二本地性能监视器和所述第三本地性能监视器进一步配置为确定针对所述第一工作量和所述第二工作量所完成的某类型工作的计数。
9.根据权利要求1所述的图形处理管线,其中所述分块器单元进一步配置为生成重演信号。
10.一种计算系统,包括:
图形处理管线,其配置为:
处理第一实例以生成第一工作量,处理第二实例以生成第二工作量,以及
将第一工作量和第二工作量加以组合以形成组合的工作量;
处理器,其耦连到所述图形处理管线;以及
存储器,其耦连到所述处理器,其中所述存储器包括具有指令的驱动程序,当所述指令由所述处理器执行时,使所述处理器:
将所述第一实例、所述第二实例、第一本地性能监视器触发方法和第二本地性能监视器触发方法发送到所述图形处理管线;
从所述图形处理管线接收指示所述第一工作量已在所述图形处理管线中的第一位置处开始处理的第一初始事件;
从所述图形处理管线接收指示所述第一工作量已在所述图形处理管线中的第二位置处完成处理的第一最终事件;
从所述图形处理管线接收指示所述第二工作量已在所述图形处理管线中的所述第一位置处开始处理的第二初始事件;以及
从所述图形处理管线接收指示所述第二工作量已在所述图形处理管线中的所述第二位置处完成处理的第二最终事件。
CN201310693427.XA 2012-12-18 2013-12-17 一种生成性能数据的图形处理管线及计算系统 Active CN103870213B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/719,034 US9030480B2 (en) 2012-12-18 2012-12-18 Triggering performance event capture via pipelined state bundles
US13/719,034 2012-12-18

Publications (2)

Publication Number Publication Date
CN103870213A CN103870213A (zh) 2014-06-18
CN103870213B true CN103870213B (zh) 2017-04-12

Family

ID=50821481

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310693427.XA Active CN103870213B (zh) 2012-12-18 2013-12-17 一种生成性能数据的图形处理管线及计算系统

Country Status (4)

Country Link
US (1) US9030480B2 (zh)
CN (1) CN103870213B (zh)
DE (1) DE102013017980B4 (zh)
TW (1) TWI528178B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9679342B2 (en) * 2013-07-12 2017-06-13 Arm Limited Result data stream coding for repeating workloads
US9910760B2 (en) * 2015-08-07 2018-03-06 Nvidia Corporation Method and apparatus for interception of synchronization objects in graphics application programming interfaces for frame debugging
KR102381945B1 (ko) * 2015-11-18 2022-04-01 삼성전자주식회사 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
CN107610039A (zh) * 2016-07-12 2018-01-19 联发科技股份有限公司 图像处理方法及图像处理装置
GB2555586B (en) * 2016-10-31 2019-01-02 Imagination Tech Ltd Performance profiling in a graphics unit
US10475149B2 (en) * 2017-09-25 2019-11-12 Intel Corporation Policies and architecture to dynamically offload VR processing to HMD based on external cues
US20230009205A1 (en) * 2021-07-12 2023-01-12 Qualcomm Incorporated Performance overhead optimization in gpu scoping
US11875057B2 (en) * 2021-07-20 2024-01-16 Nvidia Corporation Shared structure for a logic analyzer and programmable state machine

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371840A (en) * 1990-04-26 1994-12-06 Honeywell Inc. Polygon tiling engine
CN101067869A (zh) * 2005-12-05 2007-11-07 Arm挪威股份有限公司 处理图形的方法和设备
CN101794456A (zh) * 2009-01-15 2010-08-04 Arm有限公司 用于处理图形的方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6753878B1 (en) * 1999-03-08 2004-06-22 Hewlett-Packard Development Company, L.P. Parallel pipelined merge engines
US6885376B2 (en) * 2002-12-30 2005-04-26 Silicon Graphics, Inc. System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
US8497865B2 (en) * 2006-12-31 2013-07-30 Lucid Information Technology, Ltd. Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS
GB0425204D0 (en) * 2004-11-15 2004-12-15 Falanx Microsystems As Processing of 3-dimensional graphics
US8400454B2 (en) * 2005-03-30 2013-03-19 Ati Technologies, Inc. System and method for creating motion blur
US20070139421A1 (en) * 2005-12-21 2007-06-21 Wen Chen Methods and systems for performance monitoring in a graphics processing unit
US7778800B2 (en) * 2006-08-01 2010-08-17 Nvidia Corporation Method and system for calculating performance parameters for a processor
US8963932B1 (en) * 2006-08-01 2015-02-24 Nvidia Corporation Method and apparatus for visualizing component workloads in a unified shader GPU architecture
US7519797B1 (en) * 2006-11-02 2009-04-14 Nividia Corporation Hierarchical multi-precision pipeline counters
GB2461900B (en) * 2008-07-16 2012-11-07 Advanced Risc Mach Ltd Monitoring graphics processing
GB2473682B (en) * 2009-09-14 2011-11-16 Sony Comp Entertainment Europe A method of determining the state of a tile based deferred re ndering processor and apparatus thereof

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371840A (en) * 1990-04-26 1994-12-06 Honeywell Inc. Polygon tiling engine
CN101067869A (zh) * 2005-12-05 2007-11-07 Arm挪威股份有限公司 处理图形的方法和设备
CN101794456A (zh) * 2009-01-15 2010-08-04 Arm有限公司 用于处理图形的方法和装置

Also Published As

Publication number Publication date
CN103870213A (zh) 2014-06-18
TWI528178B (zh) 2016-04-01
TW201435581A (zh) 2014-09-16
US9030480B2 (en) 2015-05-12
US20140168231A1 (en) 2014-06-19
DE102013017980B4 (de) 2021-02-04
DE102013017980A1 (de) 2014-06-18

Similar Documents

Publication Publication Date Title
CN103870213B (zh) 一种生成性能数据的图形处理管线及计算系统
US11442795B2 (en) Convergence among concurrently executing threads
US9535815B2 (en) System, method, and computer program product for collecting execution statistics for graphics processing unit workloads
Tang et al. Collision-streams: Fast GPU-based collision detection for deformable models
TWI490782B (zh) 來源運算元收集器快取的方法和裝置
US9665970B2 (en) Variable-sized concurrent grouping for multiprocessing
US9478062B2 (en) Memory allocation in distributed memories for multiprocessing
CN104036537A (zh) 多分辨率一致光栅化
CN103886634A (zh) 利用每像素着色器线程的高效超级采样
CN104050706A (zh) 用于低功率图形渲染的像素着色器旁路
CN104050705A (zh) 处置光栅操作中的post-z覆盖数据
CN102708009B (zh) 一种基于cuda实现多任务共享gpu的方法
US20180329753A1 (en) Scheduling heterogenous computation on multithreaded processors
CN103810743A (zh) 在上游着色器中设置下游渲染状态
US11934867B2 (en) Techniques for divergent thread group execution scheduling
GB2491490A (en) Emitting coherent output from multiple execution threads using the printf command
CN103996216A (zh) 用于曲面细分和几何着色器的电力高效属性处置
CN1983164A (zh) 用于矢量处理的可扩展并行流水线浮点单元
CN102880509A (zh) 基于cuda的格网数字高程模型邻域分析的系统和方法
US11941743B2 (en) Generation of sample points in rendering applications using elementary interval stratification
Boyd Data-Parallel Computing: Data parallelism is a key concept in leveraging the power of today’s manycore GPUs.
US20220198739A1 (en) Parallelization for raytracing
CN116108952A (zh) 用于组合优化的并行处理
Marongiu et al. Controlling NUMA effects in embedded manycore applications with lightweight nested parallelism support
Lessley Index-Based Search Techniques for Visualization and Data Analysis Algorithms on Many-Core Systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant