在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块的制作方法

文档序号:6516829阅读:182来源:国知局
在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块的制作方法
【专利摘要】本发明的一个实施例包括用于在图形系统中适应性定制高速缓存像素块大小的技术。与图形系统相关联的设备驱动程序将与高速缓存像素块相关联的高速缓存像素块大小设置为第一大小。检测从包括第一渲染目标集的第一渲染目标配置到包括第二渲染目标集的第二渲染目标配置的改变。设备驱动程序基于第二渲染目标配置将高速缓存像素块大小设置为第二大小。所公开的方法的一个优点是高速缓存像素块大小被适应性定制,导致较少高速缓存像素块用于较不复杂的渲染目标配置。适应性定制高速缓存像素块大小产生更高效的处理器利用率和降低的能力要求。另外,统一的L2高速缓存像素块允许高速缓存存储器在高速缓存像素块数据和其他数据之间的动态分区。
【专利说明】在统一 L2高速缓存中高速缓存经适应性定制大小的高速缓存像素块
[0001]相关串请的交叉引用
[0002]本申请要求于2012年10月26日所提交的序列号为61/719,271的、标题为“Anapproach for Tiled Caching”的美国临时专利申请的优先权,本文通过援引的方式对该相关申请的主题加以合并。
【技术领域】
[0003]本发明的实施例总地涉及图形处理,并且,更具体地,涉及采用表面压缩在统一 L2高速缓存(cache)中高速缓存经适应性定制大小的高速缓存像素块。
【背景技术】
[0004]—些用于渲染图形图像的图形子系统实现拼接架构(tiling architecture),在该情况下诸如帧缓冲区的一个或多个渲染目标被分成称为像素块(tile)的屏幕空间分区。在这类拼接架构中,图形子系统重新布置工作使得与任何特定像素块相关联的工作留在片上高速缓存中的时间比采用未以该方式重新布置工作的架构的更长。该重新布置与非拼接架构相比有助于改进存储器带宽。
[0005]典型地,随着图像的渲染的进展,渲染目标集随时间改变。例如,第一遍可使用渲染目标的第一配置来部分地渲染图像。第二遍可使用渲染目标的第二配置来进一步渲染图像。第三遍可使用第三渲染目标集来完成图像的最终渲染。在渲染过程期间,计算机图形子系统可使用多达五十个或更多个不同渲染目标配置来渲染最终图像。每个不同渲染目标配置会消耗不同量的存储器。为了增加工作留在片上高速缓存中的可能性,像素块典型地被定制大小以容纳在图像渲染期间所使用的渲染目标的最复杂的配置。结果,像素块被定制大小以容纳在最终图像的渲染期间所使用的各种渲染目标配置的全部一从最复杂的到最不复杂的渲染目标配置。
[0006]上文的方法的一个缺点是像素块被无效率地定制大小用于较不复杂的渲染目标配置。此外,较不复杂的渲染目标配置不需要较复杂的渲染目标配置所需的较小的像素块大小以使工作在渲染过程期间保持驻留在高速缓存中。与采用较大的像素块大小需要较少的像素块以覆盖完整的屏幕空间相比,采用较小的像素块大小需要较多像素块以覆盖相同屏幕空间。较小的像素块大小导致计算开销增加,因为计算要求随像素块数目的增加而增力口。结果,针对较不复杂的渲染目标配置浪费了计算能力。
[0007]如前述内容示出的,本领域所需要的是用于更高效地在采用拼接架构的图形子系统中利用高速缓存存储器的技术。

【发明内容】

[0008]本发明的一个实施例阐述用于在图形系统中适应性定制高速缓存像素块大小的方法。方法包括将与第一高速缓存像素块相关联的高速缓存像素块大小设置为第一大小。方法进一步包括检测从包括第一渲染目标集的第一渲染目标配置到包括第二渲染目标集的第二渲染目标配置的改变。方法进一步包括基于第二渲染目标配置将高速缓存像素块大小设置为第二大小。
[0009]其他实施例包括但不限于计算机可读介质,其包括指令,该指令使处理单元能够实现所公开的方法的一个或多个方面。其他实施例包括但不限于包括配置为实现所公开的方法的一个或多个方面的处理单元的子系统以及配置为实现所公开的方法的一个或多个方面的系统。
[0010]所公开的方法的一个优点是高速缓存像素块大小基于渲染目标配置和高速缓存配置而被适应性定制大小。选择较小的高速缓存像素块大小用于较复杂的渲染目标配置,而选择较大的高速缓存像素块大小用于较不复杂的渲染目标配置。通过基于渲染目标配置来适应性定制高速缓存像素块大小,需要较少计算能力来处理高速缓存像素块,这导致更高效的处理器利用率和降低的能力要求。
【专利附图】

【附图说明】
[0011]因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明的更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。
[0012]图1是示出了配置为实现本发明的一个或多个方面的计算机系统的框图;
[0013]图2是根据本发明的一个实施例的、包括在图1的并行处理子系统中的并行处理单元的框图;
[0014]图3A是根据本发明的一个实施例的、包括在图2的并行处理单元中的通用处理集群的框图;
[0015]图3B是根据本发明的一个实施例的、可实现在图2的并行处理单元内的图形处理管线的示意图;
[0016]图4是根据本发明的一个实施例的、可配置图3B的图形处理管线对其进行生成和处理的高速缓存像素块的示意图;
[0017]图5示出根据本发明的一个实施例的、如存储在图2的DRAM中的一个或多个中的渲染目标集;
[0018]图6示出根据本发明的一个实施例的、与渲染计算机图形图像相关联的一系列渲染目标配置;以及
[0019]图7阐述根据本发明的一个实施例的、用于适应性定制高速缓存像素块大小的方法步骤的流程图。
【具体实施方式】
[0020]在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。
[0021]系统概述[0022]图1为示出了配置为实现本发明的一个或多个方面的计算机系统100的框图。如所示,计算机系统100包括但不限于经由存储器桥105和通信路径113耦连到并行处理子系统112的中央处理单元(CPU)102和系统存储器104。存储器桥105经由通信路径106进一步耦连到I/O (输入/输出)桥107,并且I/O桥107转而耦连到交换器116。
[0023]在操作中,I/O桥107配置为从诸如键盘或鼠标的输入设备108接收用户输入信息,并且经由通信路径106和存储器桥105将该输入信息转发到CPU102用于处理。交换器116配置为提供I/O桥107与计算机系统100的其他部件之间的连接,该其他部件诸如网络适配器118以及各种插卡120和121。
[0024]还如所示,I/O桥107耦连到可配置为存储内容和应用和数据用于由CPU102和并行处理子系统112使用的系统盘114。一般来说,系统盘114提供用于应用和数据的非易失性存储并可包括固定或可移动硬盘驱动器、闪存设备和⑶-ROM (压缩光盘只读存储器)、DVD-ROM (数字通用光盘-ROM)、蓝光、HD-DVD (高清晰度DVD)、或其他磁、光、或固态存储设备。最后,虽然未明确示出,但诸如通用串行总线或其他端口连接、压缩光盘驱动器、数字通用光盘驱动器、胶片录制设备及类似部件的其他部件,也可以连接到I/O桥107。
[0025]在各种实施例中,存储器桥105可以是北桥芯片,并且I/O桥107可以是南桥芯片。另外,通信路径106和113以及计算机系统100内的其他通信路径可以使用任何技术上合适的协议实现,包括但不限于AGP (加速图形端口)、超传输或者任何其他本领域已知的总线或点到点通信协议。
[0026]在一些实施例中,并行处理子系统112包括图形子系统,其将像素递送到显示设备110,该显示设备110可以是任何常规的阴极射线管、液晶显示器、发光二极管显示器等。在这类实施例中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路。如下文在图2中以更多细节所描述的,可跨包括在并行处理子系统112内的一个或多个并行处理单元(PPU)包含这类电路。在其他实施例中,并行处理子系统112包含经优化用于通用和/或计算处理的电路。再者,可跨包括在并行处理子系统112内的一个或多个PTO包含这类配置为实施这类通用和/或计算操作的电路。在又一些实施例中,包括在并行处理子系统112内的一个或多个PTO可配置为实施图形处理、通用处理和计算处理操作。系统存储器104包括至少一个设备驱动程序103,其配置为管理并行处理子系统112内的一个或多个PPU的处理操作。
[0027]在各种实施例中,并行处理子系统112可与图1的一个或多个其他元件集成以形成单个系统。例如,并行处理子系统112可与单个芯片上的CPU102和其他连接电路集成以形成片上系统(SoC)。
[0028]应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数目和布置、CPU102的数目以及并行处理子系统112的数目,可根据需要修改。例如,在一些实施例中,系统存储器104可直接连接到CPU102而不是通过存储器桥105,并且其他设备将经由存储器桥105和CPU102与系统存储器104通信。在其他替代性拓扑中,并行处理子系统112可连接到I/O桥107或直接连接到CPU102,而不是连接到存储器桥105。而在其他实施例中,I/O桥107和存储器桥105可被集成到单个芯片中而不是作为一个或多个分立设备存在。最后,在某些实施例中,图1中示出的一个或多个部件可以不存在。例如,可去掉交换器116,网络适配器118和插卡120、121将直接连接到I/O桥107。[0029]图2是根据本发明的一个实施例的、包括在图1的并行处理子系统112中的并行处理单元(PPU)202的框图。虽然图2描绘一个PPU202,但如上文所指示的,并行处理子系统112可包括任何数目的PPU202。如所示,PPU202耦连到本地并行处理(PP)存储器204。PPU202和PP存储器204可使用一个或多个集成电路设备来实现,诸如可编程处理器、专用集成电路(ASIC)或存储器设备,或者以任何其他技术上可行的方式来实现。
[0030]在一些实施例中,PPU202包括图形处理单元(GPU),其可配置为实现图形渲染管线以实施与基于由CPU102和/或系统存储器104所供应的图形数据来生成像素数据相关的各种操作。当处理图形数据时,PP存储器204可用作图形存储器,其存储一个或多个常规帧缓冲区,并且如果需要的话也存储一个或多个其他渲染目标。此外,PP存储器204可用来存储和更新像素数据并将最终像素数据或显示帧递送到显示设备110用于显示。在一些实施例中,PPU202还可经配置用于通用处理和计算操作。
[0031]在操作中,CPU102是计算机系统100的主处理器,控制和协调其他系统部件的操作。具体地,CPU102发出控制PPU202的操作的命令。在一些实施例中,CPU102写入用于PPU202的命令流到数据结构中(在图1或图2中未明确示出),该数据结构可位于系统存储器104、PP存储器204、或CPU102和PPU202都可访问的另一存储位置中。将指向数据结构的指针写到入栈缓冲区(pushbuffer)以发起对数据结构中的命令流的处理。PPU202从入栈缓冲区读取命令流,然后相对于CPU102的操作异步地执行命令。在生成多个帧缓冲区的实施例中,可以经由设备驱动程序103由应用程序为每个入栈缓冲区指定执行优先级以控制对不同入栈缓冲区的调度。
[0032]还如所示,PPU202包括经由通信路径113和存储器桥105与计算机系统100的其余部分通信的I/o (输入/输出)单元205。I/O单元205生成用于在通信路径113上传送的包(或其他信号),并且还从通信路径113接收所有传入的包(或其他信号),将传入的包引导到PPU202的适当部件。例如,可将与处理任务相关的命令引导到主机接口 206,而可将与存储器操作相关的命令(例如,对PP存储器204的读取或写入)引导到交叉开关单元210。主机接口 206读取每个入栈缓冲区,并且将存储在入栈缓冲区中的命令流传送到前端212。
[0033]如上文结合图1所提及的,PTO202到计算机系统100的其余部分的连接可以变化。在一些实施例中,包括至少一个PPU202的并行处理子系统112实现为可插入到计算机系统100的扩展槽中的插卡。在其他实施例中,PPU202可采用诸如存储器桥105或I/O桥107的总线桥来集成在单个芯片上。再者,还有在其他实施例中,PPU202的一些或所有元件可与CPU102 —起包括在单个集成电路或芯片系统(SoC)中。
[0034]在操作中,前端212将从主机接口 206所接收的处理任务传送到任务/工作单元207内的工作分布单元(未示出)。工作分布单元接收指向编码为任务元数据(TMD)并存储在存储器中的处理任务的指针。指向TMD的指针包括在存储为入栈缓冲区并由前端单元212从主机接口 206接收的命令流中。可以编码为TMD的处理任务包括与所要处理的数据相关联的索引,以及定义数据将被如何处理的状态参数和命令。例如,状态参数和命令可定义要在数据上执行的程序。任务/工作单元207从前端212接收任务并确保在由每一个TMD所指定的处理任务发起前,将GPC208配置为有效状态。可以为每个TMD指定用来调度处理任务的执行的优先级。还可从处理集群阵列230接收处理任务。可选地,TMD可包括控制将TMD添加到处理任务列表(或到指向处理任务的指针的列表)的头部还是尾部的参数,从而提供在执行优先级之上的另一级别的控制。
[0035]有利地,PPU202基于处理集群阵列230实现高度并行处理架构,该阵列230包括一套C个通用处理集群(GPC) 208,其中C > I。每个GPC208能够并发执行大量的(例如,几百或几千)线程,其中每个线程是程序的实例(instance)。在各种应用中,可分配不同的GPC208用于处理不同类型的程序或用于实施不同类型的计算。GPC208的分配可以取决于因每种类型的程序或计算所产生的工作量而变化。
[0036]存储器接口 214包括一套D个分区单元215,其中D≥I。每个分区单元215耦连到驻留在PPM存储器204内的一个或多个动态随机存取存储器(DRAM)220。在一个实施例中,分区单元215的数目等于DRAM220的数目,并且每个分区单元215耦连到不同的DRAM220。在其他实施例中,分区单元215的数目也可以不同于DRAM220的数目。本领域的普通技术人员将理解,DRAM220可以采用任何其他技术上合适的存储设备来替代。在操作中,诸如纹理映射图和帧缓冲区的各种渲染目标可以跨DRAM220而被存储,这允许分区单元215并行写入每个渲染目标的各部分以高效地使用PP存储器204的可用带宽。
[0037]给定的GPC208可以处理要被写到PP存储器204内的任何DRAM220的数据。交叉开关单元210配置为路由每个GPC208的输出到任何分区单元215的输入或到任何其他GPC208用于进一步处理。GPC208经由交叉开关单元210与存储器接口 214通信,以对各种DRAM220进行读取或写入。在一个实施例中,交叉开关单元210具有到I/O单元205的连接,以及经由存储器接口 214到PP存储器204的连接,从而使在不同GPC208内的处理核心能够与系统存储器104或对于PPU202而言非本地的其他存储器通信。在图2的实施例中,交叉开关单元210直接与I/O单元205连接。在各种实施例中,交叉开关单元210可使用虚拟信道来分开GPC208与分区单元215之间的业务(traffic)流。
[0038]再者,GPC 208可被编程以执行与种类繁多的应用相关的处理任务,包括但不限于,线性和非线性数据变换、视频和/或音频数据过滤、建模操作(例如,应用物理定律以确定对象的位置、速率和其他属性)、图像渲染操作(例如,曲面细分(tessellation)着色器、顶点着色器、几何着色器、和/或像素/片段着色器程序)、通用计算操作等等。在操作中,PPU202配置为将数据从系统存储器104和/或PP存储器204转移到一个或多个片上存储器单元中,处理该数据,并且将结果数据写回到系统存储器104和/或PP存储器204。结果数据可以随后由其他系统部件访问,所述其他系统部件包括CPU102、并行处理子系统112内的另一 PPU202、或计算机系统100内的另一并行处理子系统112。
[0039]如上所示,在并行处理子系统112中可以包括任何数目的PPU202。例如,可在单个插卡上提供多个PPU202,或可将多个插卡连接到通信路径113,或可将一个或多个PPU202集成到桥式芯片中。在多PPU系统中的PPU202可以彼此同样或不同。例如,不同的PPU202可能具有不同数目的处理核心和/或不同容量的PP存储器204。在存在多个PPU202的实现方案中,可并行操作那些PI3U从而以高于单个PPU202所可能达到的吞吐量来处理数据。包含一个或多个PPU202的系统可以以各种配置和形状因素来实现,包括但不限于台式电脑、笔记本电脑、手持式个人计算机或其他手持式设备、服务器、工作站、游戏控制台、嵌入式系统等等。
[0040]图3A是根据本发明的一个实施例的、包括在图2的PPU202中的GPC208的框图。在操作中,GPC208可配置为并行执行大量线程以实施图形、一般处理和/或计算操作。如本文所使用的,“线程”是指在特定输入数据集上执行的特定程序的实例。在一些实施例中,单指令、多数据(SMD)指令发出技术用来在不提供多个独立指令单元的情况下支持大量线程的并行执行。在其他实施例中,单指令、多线程(SMT)技术用来使用配置为向GPC208内的处理引擎集发出指令的公共指令单元来支持大量一般来说同步的线程的并行执行。不同于所有处理引擎通常都执行同样指令的SMD执行机制,SIMT执行通过给定程序允许不同线程更容易跟随分散执行路径。本领域普通技术人员将理解SMD处理机制代表SMT处理机制的功能子集。
[0041]经由将从任务/工作单元207内的工作分布单元(未示出)所接收的处理任务分布到一个或多个流多处理器(SM) 310的管线管理器305来控制GPC208的操作。管线管理器305还可配置为通过为由SM310所输出的所处理数据指定目的地来控制工作分布交叉开关330。
[0042]在一个实施例中,GPC208包括一套M个SM310,其中M≥I。并且,每个SM310包括一套功能执行单元(未示出),诸如执行单元和加载-存储单元。针对任何的功能执行单元的处理操作可被管线化,其使新指令能够在前一个指令已完成执行之前被发出用于执行。可提供给定SM310内的功能执行单元的任何组合。在各种实施例中,功能执行单元可配置为支持各种各样的不同操作,包括整数和浮点运算(例如加法和乘法)、比较操作、布尔操作(AND、OR、X0R)、移位和各种代数函数的计算(例如平面插值与三角函数、指数函数和对数函数等等)。有利地,相同的功能执行单元可配置为实施不同的操作。
[0043]在操作中,每个SM310配置为处理一个或多个线程组。如本文所使用的,“线程组”或“线程束”是指对不同输入数据并发执行相同程序的一组线程,所述组的一个线程被指派到SM310内的不同执行单元。线程组可以包括比SM310内的执行单元数目少的线程,在这种情况下在该线程组正在被处理的周期期间一些执行单元可闲置。线程组还可以包括比SM310内的执行单元数目多的线程,在这种情况下处理可在连续的时钟周期上发生。因为每个SM310可以并发支持多达G个线程组,结果是在任何给定时间在GPC208中可以执行多达G*M个线程组。
[0044]另外,多个相关线程组可以在SM310内同时活动(在执行的不同阶段)。该线程组的集合在本文中称为“协作线程阵列”(“CTA”)或“线程阵列”。特定CTA的大小等于m*k,其中k是线程组中并发执行线程的数目,其典型地是SM310内的执行单元数目的整数倍,以及m是SM310内同时活动的线程组的数目。
[0045]虽然在图3A中未示出,但每个SM310包含一级(LI)高速缓存,或使用在SM310之外的相应LI高速缓存中的空间,以支持此外由执行单元所实施的加载和存储操作。每个SM310都还有权访问在PPU202中的所有GPC208之间共享的二级(L2)高速缓存(未示出)。L2高速缓存可用来在线程之间转移数据。最后,SM310还有权访问片外“全局”存储器,所述“全局”存储器可以包括PP存储器204和/或系统存储器104。将理解的是,PPU202外部的任何存储器可用作全局存储器。另外,如图3A所示,一点五级(L1.5)高速缓存335可以包括在GPC208内,并配置为接收并保持由SM310经由存储器接口 214从存储器所请求的数据。这类数据可包括但不限于指令、一致(uniform)数据和常量数据。在GPC208内具有多个SM310的实施例中,SM310可有利地共享高速缓存在L1.5高速缓存335中的公共指令和数据。[0046]每个GPC208可以具有配置为将虚拟地址映射到物理地址中的相关联的存储器管理单元(MMU) 320。在各种实施例中,MMU320可以驻留在GPC208或存储器接口 214 二者之一内。MMU320包括用来将虚拟地址映射到像素块或存储器页的物理地址的页表条目(PTE)集和可选地包括高速缓存行索引。MMU320可以包括地址转译后备缓冲区(TLB)或包括可以驻留在SM310内、在一个或多个LI高速缓存内、或在GPC208内的高速缓存。
[0047]在图形和计算应用中,GPC208可经配置使得每个SM310耦连到纹理单元315用于实施纹理映射操作,诸如确定纹理样本位置、读取纹理数据以及过滤纹理数据。
[0048]在操作中,为了将所处理的任务提供给另一个GPC208用于进一步处理或为了经由交叉开关单元210将所处理的任务存储在L2高速缓存(未示出)、并行处理存储器204或系统存储器104中,每个SM310将所处理的任务传送到工作分布交叉开关330。另外,预光栅操作(preROP)单元325配置为从SM310接收数据、将数据引导到分区单元215内的一个或多个光栅操作(ROP)单元、针对颜色混合实施优化、组织像素颜色数据和实施地址转译。
[0049]应该理解本文所述的核心架构是示例性的并且变化和修改都是可能的。此外,任何数目的处理单元诸如SM310、纹理单元315、或preROP单元325可以包括在GPC208内。进一步地,如上文结合图2所描述的,PPU202可以包括任何数目的GPC208,所述GPC208配置为在功能上彼此相似以使得执行行为不取决于哪个GPC208接收特定处理任务。进一步地,每个GPC208独立于PPU202中的其他GPC208进行操作以为一个或多个应用程序执行任务。鉴于前述内容,本领域普通技术人员将理解图1-3A所描述的架构决不限制本发明的范围。
[0050]图形管线架构
[0051]图3B是根据本发明的一个实施例的、可实现在图2的PPU202内的图形处理管线350的示意图。如所示,图形处理管线350包括但不限于基元分布器(PD) 355 ;顶点属性获取单元(VAF) 360 ;顶点、曲面细分、几何处理单元(VTG) 365 ;视窗缩放、剔除和裁剪单元(VPC) 370 ;拼接单元375、设立单元(设立)380、光栅化器(光栅)385 ;还被标识为像素着色单元(PS) 390的片段处理单元,以及光栅操作单元(ROP) 395。
[0052]PD355从前端212收集与高阶表面、图形基元等相关联的顶点数据并将顶点数据传送到VAF360。
[0053]VAF360从共享存储器检索与传入的顶点中的每一个相关联的顶点属性,并将顶点数据与相关联的顶点属性一起存储到共享存储器中。
[0054]VTG365是可编程执行单元,其配置为执行顶点着色器程序、曲面细分程序和几何程序。这些程序处理从VAF360所接收的顶点数据和顶点属性,并产生图形基元以及在用于图形基元的每个顶点处的颜色值、表面法向矢量和透明度值,用于在图形处理管线350内进一步处理。虽然未明确示出,但在一些实施例中,VTG365可包括顶点处理单元、曲面细分初始化处理单元、任务生成单元、任务分布器、拓扑生成单元、曲面细分处理单元以及几何处理单元中的一个或多个。
[0055]顶点处理单元是可编程执行单元,其配置为执行顶点着色器程序,按顶点着色器程序的指定来照明和变换顶点数据。例如,顶点处理单元可被编程以将顶点数据从基于对象的坐标表示(对象空间)变换到诸如世界空间或规格化设备坐标(NDC)空间的可替代的坐标系。顶点处理单元可读取由VAF存储在共享存储器中的顶点数据和顶点属性并可处理顶点数据和顶点属性。顶点处理单元415将所处理的顶点存储在共享存储器中。
[0056]曲面细分初始化处理单元是可编程执行单元,其配置为执行曲面细分初始化着色器程序。曲面细分初始化处理单元处理由顶点处理单元所产生的顶点并生成称为补丁(patch)的图形基元。曲面细分初始化处理单元还生成各种补丁属性。曲面细分初始化处理单元随后将补丁数据和补丁属性存储在共享存储器中。在一些实施例中,曲面细分初始化着色器程序可称为外壳着色器(hull shader)或曲面细分控制着色器。
[0057]任务生成单元从共享存储器检索用于顶点和补丁的数据和属性。任务生成单元生成用于处理顶点和补丁的任务以由图形处理管线350中的后续级处理。
[0058]任务分布器重新分布由任务生成单元所产生的任务。由顶点着色器程序和曲面细分初始化程序的各种示例所产生的任务可在一个图形处理管线350和另一个之间显著变化。任务分布器重新分布这些任务,使得每个图形处理管线350在后续的管线级期间具有近似相同的工作量。
[0059]拓扑生成单元检索由任务分布器所分布的任务。拓扑生成单元将包括与补丁相关联的顶点的顶点编入索引,并计算用于曲面细分顶点和连接经曲面细分的顶点以形成图形基元的索引的(U,V)坐标。拓扑生成单元随后将被编入索引的顶点存储在共享存储器中。
[0060]曲面细分处理单元是可编程执行单元,其配置为执行曲面细分着色器程序。曲面细分处理单元从共享存储器读取输入数据并将输出数据写到共享存储器。共享存储器中的该输出数据被传递到下一着色器级、几何处理单元445作为输入数据。在一些实施例中,曲面细分着色器程序可称为域着色器或曲面细分评估着色器。
[0061]几何处理单元是可编程执行单元,其配置为执行几何着色器程序,从而变换图形基元。顶点被分组以构建图形基元用于处理,其中图形基元包括三角形、线段、点等等。例如,几何处理单元可被编程以将图形基元细分成一个或多个新图形基元并计算用来将新图形基元光栅化的参数,诸如平面方程系数。
[0062]几何处理单元将指定新图形基元的参数和顶点传送到VPC370。几何处理单元可读取存储在共享存储器中的数据用于在处理几何数据中使用。VPC370实施剪裁、剔除、透视校正和视窗变换以确定在最终所渲染的图像中的那些图形基元是潜在可视的以及哪些图形基元不是潜在可视的。VPC370随后将所处理的图形基元传送到拼接单元375。
[0063]如本文所进一步描述的,拼接单元375是驻留在世界空间管线352和屏幕空间管线354之间的图形基元排序引擎。图形基元在世界空间管线352中被处理并随后被传送到拼接单元375。屏幕空间分成高速缓存像素块,其中每个高速缓存像素块与屏幕空间的一部分相关联。针对每个图形基元,拼接单元375标识与图形基元相交的高速缓存像素块集,即在本文称为“拼接”的过程。在拼接某数目的图形基元之后,拼接单元375在高速缓存像素块基础上处理图形基元,其中与特定高速缓存像素块相关联的图形基元被传送到设立单元380。拼接单元375 —次一个高速缓存像素块地将图形基元传送到设立单元380。与多个高速缓存像素块相交的图形基元典型地在世界空间管线352中被处理一次,但随后被多次传送到屏幕空间管线354。
[0064]这类技术改进在于屏幕空间管线354中的处理期间的高速缓存存储器局部性,其中与第一高速缓存像素块相关联的多个存储器操作访问L2高速缓存的区域,或在对第一高速缓存像素块的屏幕空间处理期间可保持驻留的任何其他技术上可行的高速缓存存储器的区域。一旦由屏幕空间管线354处理与第一高速缓存像素块相关联的图形基元,则可转储(flush)与第一高速缓存像素块相关联的L2高速缓存的部分,并且拼接单元可传送与第二高速缓存像素块相关联的图形基元。与第二高速缓存像素块相关联的多个存储器操作可随后访问在对第二高速缓存像素块的屏幕空间处理期间可保持驻留的L2高速缓存的区域。因此,到L2高速缓存和到渲染目标的整体存储器业务可减少。在一些实施例中,针对给定的图形基元实施一次世界空间计算,而不论在屏幕空间中与图形基元相交的高速缓存像素块的数目。
[0065]设立单元380经由拼接单元375从VPC370接收顶点数据,并计算与图形基元相关联的参数,包括但不限于边沿方程、部分平面方程以及深度平面方程。设立单元380随后将所处理的图形基元传送到光栅化器385。
[0066]光栅化器385扫描转换新图形基元并将片段和覆盖数据传送到像素着色单元390。另外,光栅化器385可配置为实施z剔除(z-culling)和其他基于z的优化。
[0067]像素着色单元390是可编程执行单元,其配置为执行片段着色器程序,按片段着色器程序的指定来变换从光栅化器385所接收的片段。片段着色器程序可以像素级别粒度对片段着色,其中这类着色器程序可称为像素着色器程序。可替代地,片段着色器程序可以样本级别粒度对片段着色,其中每个像素包括多个样本,并且每个样本表示像素的一部分。可替代地,片段着色器程序可以任何其他技术上可行的粒度对片段着色,这取决于程控采样率。
[0068]在各种实施例中,片段处理单元460可被编程以实施诸如透视校正、纹理映射、着色、混合等操作,以产生传送到R0P395的经着色的片段。像素着色单元390可读取存储在共享存储器中的数据。
[0069]R0P395是处理单元,其实施诸如模板(stencil)、z测试、混合等的光栅操作,并经由存储器接口 214传送像素数据作为所处理的图形数据用于存储在图形存储器中,其中图形存储器典型地被结构化为一个或多个渲染目标。所处理的图形数据可存储在图形存储器、并行处理存储器204、或系统存储器104中用于在显示设备110上显示或用于由CPU102或并行处理子系统112进一步处理。在一些实施例中,R0P395配置为压缩写入到存储器的z或颜色数据以及解压缩从存储器读取的z或颜色数据。在各种实施例中,R0P395可位于存储器接口 214中、GPC208中、GPC之外的处理集群阵列230中、或PPU202内的分立单元(未示出)中。
[0070]可由PPU202内的一个或多个处理元件实现图形处理管线。例如,图3A的SM310中的一个可配置为实施VTG365和像素着色单元390中的一个或多个的功能。H)355、VAF360、VPC450、拼接单元375、设立单元380、光栅化器385和R0P395的功能还可由特定GPC208内的处理元件结合相应分区单元215来实施。可替代地,可使用用于上文所列出的功能中的一个或多个的专用固定功能处理元件来实现图形处理管线350。在各种实施例中,PTO202可配置为实现一个或多个图形处理管线350。
[0071]在一些实施例中,图形处理管线350可分成世界空间管线352和屏幕空间管线354。世界空间管线352处理3D空间中的图形对象,其中每个图形对象的位置相对于其他图形对象和相对于3D坐标系是已知的。屏幕空间管线354处理已从3D坐标系投影到表示显示设备110的表面的2D平面表面上的图形对象。例如,世界空间管线352可包括图形处理管线350中的从TO355到VPC370的管线级。屏幕空间管线354可包括图形处理管线350中的从设立单元380到ROP395的管线级。拼接单元375将跟随在世界空间管线352的最后级也就是VPC370之后。拼接单元375将在屏幕空间管线354的第一级也就是设立单元380之前。
[0072]在一些实施例中,世界空间管线352可进一步分成alpha阶段管线和beta阶段管线。例如,alpha阶段管线可包括图形处理管线350中的从TO355到任务生成单元的管线级。beta阶段管线可包括图形处理管线350中的从拓扑生成单元到VPC370的管线级。图形处理管线350在于alpha阶段管线中的处理期间实施第一操作集以及在于beta阶段管线中的处理期间实施第二操作集。如本文所使用的,操作集定义为由单个线程、线程组或由一致动作的多个线程组所执行的一个或多个指令。
[0073]在采用多个图形处理管线350的系统中,可划分与图形对象集相关联的顶点数据和顶点属性,使得每个图形处理管线350具有近似相同的经过alpha阶段的工作量。alpha阶段处理可显著扩展顶点数据和顶点属性的量,使得由任务生成单元所产生的顶点数据和顶点属性的量显著大于由PD355和VAF360所处理的顶点数据和顶点属性的量。进一步地,与一个图形处理管线350相关联的任务生成单元可比与另一图形处理管线350相关联的任务生成单元产生显著更多数量的顶点数据和顶点属性,甚至在两个图形处理管线350在alpha节点管线的开始处处理相同数量的属性的情况下。在这类情况下,任务分布器重新分布由alpha阶段管线所产生的属性,使得每个图形处理管线350在beta阶段管线的开始处具有近似相同的工作量。
[0074]请注意,如本文所使用的,对共享存储器的引用可包括任何一个或多个技术上可行的存储器,包括但不限于,由一个或多个SM310所共享的本地存储器,或经由存储器接口214可访问的存储器,诸如高速缓存存储器、并行处理存储器204或系统存储器104。还请注意,如本文所使用的,对高速缓存存储器的弓I用可包括任何一个或多个技术上可行的存储器,包括但不限于,LI高速缓存、L1.5高速缓存以及L2高速缓存。
[0075]拼接式进行高速缓存
[0076]图4是根据本发明的一个实施例的、可配置图3B的图形处理管线350以对其进行生成和处理的高速缓存像素块410 (O)的示意图。如所示,高速缓存像素块410 (O)表示屏幕空间400的一部分并分成多个光栅像素块420。
[0077]屏幕空间400表示配置为存储由图形处理管线350内的功能单元所传送的所渲染的图像数据和其他数据的一个或多个存储器缓冲区。在一些实施例中,一个或多个存储器缓冲区可配置为一个或多个渲染目标。屏幕空间表示配置为存储由图形处理管线所渲染的图像的存储器缓冲区。屏幕空间400可与任何数目的渲染目标相关联,其中每个渲染目标可独立于其他渲染目标配置为包括任何数目的字段。渲染目标内的每个字段可独立于其他字段配置为包括任何数目的位。每个渲染目标可包括多个像元(像素),并且每个像素可转而包括多个样本。在一些实施例中,每个高速缓存像素块的大小可基于与屏幕空间相关联的渲染目标的大小和配置。在操作中,一旦渲染完成,那么一个或多个渲染目标中的像素可被传送到显示设备以显示所渲染的图像。
[0078]以示例的方式,用于屏幕空间400的渲染目标集可包括八个渲染目标。第一渲染目标可包括四个字段,其表示与相应片段相关联的包括红、绿和蓝分量颜色的颜色和透明度信息。第二渲染目标可包括两个字段,其表示与相应片段相关联的深度和模板信息。第三渲染目标可包括三个字段,其表示与相应片段相关联的表面法向矢量信息,包括X轴法向矢量、y轴法向矢量和Z轴法向矢量。剩余五个渲染目标可配置为存储与相应片段相关联的附加信息。这类配置可包括用于各种信息的存储,各种信息包括但不限于3D位置数据、漫射照明信息和高光照明信息。
[0079]每个高速缓存像素块410表示屏幕空间400的一部分。为了清楚起见,图4仅示出五个高速缓存像素块410 (0)-410 (4)。在一些实施例中,高速缓存像素块在X和Y屏幕空间中可具有任意大小。例如,如果高速缓存像素块驻留在还用来存储其他数据的高速缓存存储器中,那么可定制高速缓存像素块大小以仅消耗高速缓存存储器的特定部分。高速缓存像素块的大小可基于若干因素,包括与屏幕空间400相关联的渲染目标的数量和配置、每像素的样本数量以及存储在高速缓存像素块中的数据是否被压缩。一般来说,高速缓存像素块被定制大小以增加高速缓存像素块数据保持驻留在高速缓存存储器中直到与高速缓存像素块相关联的所有图形基元被完全处理为止的可能性。
[0080]光栅像素块420表示高速缓存像素块410 (O)的一部分。如所示,高速缓存像素块410 (O)包括以四个光栅像素块420宽和四个光栅像素块420高的阵列布置的十六个光栅像素块420 (0)-420 (15)。在包括多个GPC208的系统中,可在可用的GPC208中划分与给定高速缓存像素块410 (O)相关联的处理。在示出的示例中,如果高速缓存像素块410 (O)的十六个光栅像素块由四个不同的GPC208所处理,那么可指派每个GPC208处理高速缓存像素块410 (O)的十六个光栅像素块420中的四个。具体来讲,可指派第一 GPC208处理光栅像素块420 (0),420 (7),420 (10)和420 (13)。可指派第二 GPC208处理光栅像素块420 (1),420 (4),420 (11)和420 (14)。可指派第三GPC208处理光栅像素块420
(2),420 (5),420 (8)和420 (15)。随后将指派第四GPC208处理光栅像素块420 (3),420
(6),420 (9)和420 (12)。在其他实施例中,可以以任何技术上可行的方式在GPC208或被包括在计算机系统100内的任何其他处理实体中对给定的高速缓存像素块内的不同光栅像素块的处理加以分布。
[0081]经适应性定制大小的高速缓存像素块
[0082]图4的高速缓存像素块被定制大小以容纳特定渲染目标配置。渲染目标配置包括一个或多个渲染目标,其每一个包括一个或多个字段。基于给定的渲染目标配置的渲染目标内的各种字段的大小来计算高速缓存像素块大小。
[0083]图5示出根据本发明的一个实施例的、存储在图2的DRAM220中的一个或多个的渲染目标集500。如所示,渲染目标集500包括五个单独的渲染目标510 (0)-510 (4)。
[0084]第一渲染目标510 (O)包括四个字段,其表不与相应样本或片段相关联的第一颜色和透明度信息集。如所示,四个字段包括红色值515、绿色值520、蓝色值525和alpha或称透明度值530。红色值515、绿色值520、蓝色值525和alpha值530中的每一个包括一个字节的数据。该第一渲染目标510 (O)可被标示为CO,指示第一渲染目标510 (O)包括第一颜色和alpha信息集。
[0085]第二渲染目标510 (I)包括四个字段,其表示与相应样本或片段相关联的第二颜色和透明度信息集。如所示,四个字段包括红色值535、绿色值540、蓝色值545和alpha或称透明度值550。红色值535、绿色值540、蓝色值545和alpha值550中的每一个包括一个字节的数据。该第二渲染目标520 (I)可被标示为Cl,指示第二渲染目标510 (I)包括第二颜色和alpha信息集。
[0086]第三渲染目标510 (2)包括两个字段,其表示与相应样本或片段相关联的第一深度和模板信息集。如所示,两个字段包括z或称深度值555以及包括模板掩码560。如所示,z值555包括三个字节的数据,而模板掩码560包括一个字节的数据。该第三渲染目标520 (2)可被标示为Z0,指示第三渲染目标510 (2)包括第一 z和模板信息集。
[0087]第四渲染目标510 (3)包括两个字段,其表示与相应样本或片段相关联的第二深度和模板信息集。如所示,两个字段包括z或称深度值565和包括模板掩码570。如所示,z值565包括三个字节的数据,而模板掩码570包括一个字节的数据。该第四渲染目标520
(3)可被标示为Z1,指示第四渲染目标510 (3)包括第二 z和模板信息集。
[0088]第五渲染目标510 (4)包括四个字段,其表示与相应样本或片段相关联的表面法向矢量信息。如所示,四个字段包括X轴法向矢量575、y轴法向矢量580和Z轴法向矢量585。在用于第五渲染目标510 (4)的特定配置中,第四字段是未使用的字段590。x轴法向矢量575、y轴法向矢量580和z轴法向矢量585以及未使用的字段590中的每一个包括一个字节的数据。该第五渲染目标520 (4)可被标示为NO,指示第五渲染目标510 (4)包括第一表面法向信息集。
[0089]渲染目标配置随图像渲染的进展而改变。每个渲染目标配置包括用于图像渲染的特定阶段的渲染目标集。高速缓存像素块可在当前渲染目标配置和新渲染目标配置之间的分界处被转储和重新定制大小。在一些实施例中,在新渲染目标配置是当前渲染目标配置的子集的情况下,高速缓存像素块可不被转储和重新定制大小。
[0090]图6示出根据本发明的一个实施例的、与渲染计算机图形图像相关联的一系列渲染目标配置600。如所示,一系列渲染目标配置600包括按照给定顺序的八个渲染目标配置610 (O) -610 (7)。
[0091]随着计算机图形图像的渲染的开始,第一渲染目标配置610 (O)指定在该渲染阶段期间使用第一颜色/alpha渲染目标CO、第一 Z/模板渲染目标ZO和法向矢量渲染目标NO。因此,该第一渲染目标配置610 (O)被标示为C0Z0N0。
[0092]基于第一渲染目标配置610 (O)来计算高速缓存像素块大小。首先,由高速缓存像素块所消耗的高速缓存存储器量除以第一渲染目标配置610 (O)中的每个位置所需的存储器空间,这得到高速缓存像素块中的像素的数目。可依据字节的数量、或以任何其他合适的量度来测量存储器空间。该像素数目随后用来确定高速缓存像素块大小。在一个示例中,高速缓存存储器的大小是153,600字节并且高速缓存存储器的二分之一由高速缓存像素块所占用。由高速缓存像素块所占用的存储器的量将是153,600/2或76,800字节。由渲染目标配置610 (O)中的每个位置所占用的字节的数目将是三个渲染目标X每渲染目标四字节,或12个字节。那么高速缓存像素块中的像素的数目将是76,800/12或6400个像素。对于正方形高速缓存像素块,高速缓存像素块将是64001/2或80个像素宽X80个像素高。可替代地,高速缓存像素块大小可以是技术上可行的非正方形格式,诸如64个像素宽XlOO个像素高。
[0093]随着计算机图形图像的渲染继续,第二渲染目标配置610 (I)指定在该渲染阶段期间使用第二颜色/alpha渲染目标Cl和第二 Z/模板渲染目标Zl。因此,该第二渲染目标配置610(1)被标示为(:121。因为渲染目标配置已改变,所以转储高速缓存像素块,并且计算新高速缓存像素块大小。
[0094]基于第二渲染目标配置610 (I)来计算新高速缓存像素块大小。在一个示例中,高速缓存存储器的大小是153,600字节并且高速缓存存储器的二分之一,76,800字节,由高速缓存像素块所占用。由渲染目标配置610 (I)中的每个位置所占用的字节的数目将是两个渲染目标X每渲染目标四字节,或8个字节。那么高速缓存像素块中的像素的数目将是76,800/8或9600个像素。对于正方形高速缓存像素块,高速缓存像素块将是96001/2,其上舍入到98个像素宽X98个像素高。可替代地,高速缓存像素块大小可以是技术上可行的非正方形格式,诸如75个像素宽X128个像素高。
[0095]随着计算机图形图像的渲染继续,第三渲染目标配置610 (2)指定在该渲染阶段期间使用第一颜色/alpha渲染目标CO和第一 Z/模板渲染目标Z0。因此,该第三渲染目标配置610(2)被标示为0)20。因为渲染目标配置已改变,所以转储高速缓存像素块,并且计算新高速缓存像素块大小。在该情况下,与第三渲染目标配置610 (2)相对应的字节的数目与用于第二渲染目标配置610 (I)的相同。因此,高速缓存像素块的大小不从第二渲染目标配置610 (I)改变到第三渲染目标配置610 (2)。
[0096]随着计算机图形图像的渲染继续,第四渲染目标配置610 (3)指定在该渲染阶段期间使用第一颜色/alpha渲染目标CO、第二颜色/alpha渲染目标Cl和第一 Z/模板渲染目标Z0。因此,该第四渲染目标配置610(3)被标示为C0C1Z0。因为渲染目标配置已改变,所以转储高速缓存像素块,并且计算新高速缓存像素块大小。在该情况下,与第四渲染目标配置610 (3)相对应的字节的数目与用于第一渲染目标配置610 (O)的相同。因此,如上文结合第一渲染目标配置610 (O)所描述的,计算高速缓存像素块大小。
[0097]随着计算机图形图像的渲染继续,第五到第八渲染目标配置610 (4)-610 (7)分别指定C0Z0、C0C1Z0、COCl和C0C1Z0的渲染目标配置。在一个实施例中,随着渲染前进通过渲染目标配置610中的每次改变,可转储高速缓存像素块并可计算新高速缓存像素块,如上文所描述的。然而,转储和重新定制高速缓存像素块大小可能是高计算代价的,并且在正转储当前高速缓存像素块时可能延迟进行采用新渲染目标配置610的渲染。另外,转储减少可在高速缓存像素块中被拼接在一起的图形基元的数目,相应地减少了拼接的益处。
[0098]因此,在另一实施例中,如果新渲染目标配置610表示当前渲染目标配置610的子集,那么高速缓存像素块既不被转储也不被重新定制大小。该方法包括新渲染目标配置610与当前渲染目标配置610相同的情况。这类方法可导致高速缓存存储器的较低效的使用。另一方面,可减少高速缓存像素块转储和重新定制大小,其可导致较高的效率和性能改进,超出对减少的高速缓存存储器使用效率的弥补。在又一实施例中,产生自改变高速缓存像素块大小的高速缓存存储器效率的改进可与针对不转储和重新定制高速缓存像素块大小的性能改进相比较。随后可根据该比较做出是保持当前高速缓存像素块配置还是转储并重新定制闻速缓存像素块大小的决策。
[0099]采用该后者的方法,第五到第八渲染目标配置610 (4)-610 (7)中的每一个是第四渲染目标配置610 (3)的子集。这样,在渲染前进通过第五到第八渲染目标配置610
(4)-610 (7)的同时,高速缓存像素块大小可保持如针对第四渲染目标配置610 (3)所配置的那样。可替代地,可转储并重新定制高速缓存像素块大小,并且在任何或所有第五到第八渲染目标配置610 (4)-610 (7)中改变。
[0100]在一个实施例中,可根据被当前所选择的抗锯齿模式来修改高速缓存像素块大小。在抗锯齿模式中,多个样本可被存储用于每个像素位置并后续被混合,在最终所渲染的图像中导致改进的图像质量。可使用标记诸如AA-1、AA-2、AA-4或AA-8,其指示每个像素分别包括1、2、4或8个样本,来数字地指定抗锯齿模式。因此,与当不使用抗锯齿时的高速缓存像素块像素相比较,每个高速缓存像素块像素可分别消耗1、2、4或8倍的字节数量。当计算高速缓存像素块大小时,高速缓存像素块大小的计算可将抗锯齿模式纳入考虑。例如,在每像素占用12个字节的渲染目标配置中,高速缓存像素块可包括76,800字节。如上文所描述的,不采用抗锯齿模式,这样的高速缓存像素块将包括6400个像素。采用抗锯齿模式,高速缓存像素块针对AA-1、AA-2、AA-4、或AA-8模式将分别包括6400、3200、1600、或800个像素。如果高速缓存像素块是正方形的,那么每个高速缓存像素块将分别被格式化为80X80、57X57、40X40、或 29X29 个像素。
[0101]在一些实施例中,高速缓存像素块可以是较大的以利用可在较高抗锯齿模式下压缩用于每个像素的样本数据的事实。例如,与当不使用抗锯齿时的高速缓存像素块像素相比较,抗锯齿模式AA-1、AA-2、AA-4、或AA-8可能分别消耗1、2、3、或5倍的字节数量。当计算高速缓存像素块大小时高速缓存像素块大小的计算可将抗锯齿模式纳入考虑。在每像素占用12个字节的渲染目标配置中,高速缓存像素块可包括76,800字节。如上文所描述的,不采用抗锯齿模式,这样的高速缓存像素块将包括6400个像素。采用抗锯齿模式,高速缓存像素块针对44-1、44-2、44-4、或4々-8模式将分别包括6400、3200、2134、或1280个像素。如果高速缓存像素块是正方形的,那么每个高速缓存像素块将分别被格式化为80X80、57X57、47X47、或 36X36 个像素。
[0102]在又一实施例中,可使用表面压缩来进一步增加高速缓存像素块大小。来自光栅操作单元395的表面数据,诸如ZROP和CROP数据,可以以经压缩的方式存储在渲染目标510中。这类经压缩的表面数据可转移到L2高速缓存和转移自L2高速缓存而不用解压缩和重新压缩数据,这减少渲染目标和L2高速缓存之间的业务。经压缩的表面数据可以以经压缩的格式存储在L2高速缓存中,这减少L2高速缓存中的存储器消耗。可使用与表面压缩相关联的、所估计的或实际的压缩比,以类似于上文结合抗锯齿模式所描述的方法的方式,来修改高速缓存像素块大小计算。
[0103]在另一实施例中,在闻速缓存像素块驻留在统一的闻速缓存存储器中的情况下,诸如本文所描述的L2高速缓存,则高速缓存控制器可进一步利用到渲染目标510和来自渲染目标510的其他高速缓存业务,以进一步减少片外存储器带宽并增加性能。在EVICT_NORMAL逐出策略之下高速缓存像素块可存储在L2高速缓存存储器中,其中高速缓存像素块服从标准逐出规则,该标准逐出规则可应用到存储在L2高速缓存中的具有相同逐出策略的其他数据,该其他数据诸如与ROP单元395、VAF360和纹理单元(未示出)相关的数据。随着用于特定高速缓存像素块的图形基元被处理,流多处理器310(经由全局加载和全局存储操作)、R0P395和纹理单元可实施与屏幕的特定区域相关联的、影响高速缓存像素块的存储器操作。所有这类存储器操作可经由相同L2高速缓存来实施。
[0104]如上文所描述的,经由统一的L2高速缓存来高速缓存数据允许高速缓存控制器在各种使用中动态地分配高速缓存,各种使用包括但不限于高速缓存像素块数据、顶点属性数据和纹理数据。例如高速缓存控制器可分配较高百分比的高速缓存存储器用于除高速缓存像素块数据之外的诸如纹理数据的数据,这导致对该其他数据的改进的高速缓存性能。这样,高速缓存控制器不局限于静态L2高速缓存分区,或不局限于包括用于高速缓存像素块数据的单独的专用高速缓存和用于其他数据的第二专用高速缓存的架构,该其他数据诸如顶点属性数据和纹理数据。而是,高速缓存控制器基于针对高速缓存存储器资源的当前需求,动态地选择单个统一的L2高速缓存在高速缓存像素块数据和其他数据之间的分区。
[0105]因为高速缓存像素块数据访问服从与其他L2数据业务流相同的EVICT_N0RMAL逐出策略,所以L2高速缓存不包括在这些不同业务流之间的静态分区。因此,利用高速缓存数据的时间和空间局部性,高速缓存控制器可组合L2高速缓存和渲染目标存储器的各部分之间的业务以进一步减少L2高速缓存和渲染目标510之间的业务。
[0106]在一个示例中,高速缓存控制器可组合被从ZROP单元、CROP单元或来自SM310的全局存储器访问中任何一个引导到相同渲染目标位置的写事务。在高速缓存像素块驻留在L2高速缓存中的同时,高速缓存控制器可经由回写策略在L2高速缓存中组合这些写事务。高速缓存控制器随后在单个事务中将数据从L2高速缓存写入到渲染目标510。该方法将利用空间局部性用于与渲染目标数据相关联的写事务。
[0107]在另一个示例中,因为正方形或矩形形状的高速缓存像素块表示渲染目标510中的相邻像素的区域,所以高速缓存控制器很可能从渲染目标中读取相邻的存储器地址。这类数据可从渲染目标510获取一次并存储在L2高速缓存中。随后当数据驻留在L2高速缓存中时可多次访问所读取的数据。该方法将利用空间局部性用于与渲染目标数据相关联的读事务。
[0108]在又一示例中,在图像渲染期间被引导到渲染目标510中的相同位置的存储器读事务可能在时间上紧挨着出现。重叠的基元可能访问相同纹理,其中纹理坐标对齐到高速缓存像素块坐标。在这类情况下,渲染目标510中的纹理存储器将被多次访问,其中访问在时间上将彼此接近。高速缓存控制器可将这些访问组合到被引导到渲染目标510中的纹理存储器的单个读事务中。该方法将利用渲染目标数据的时间局部性。除纹理访问之外,还可取得时间局部性的类似优点用于由R0P395进行的读和写访问以及由SM310进行的一般全局加载和全局存储访问。在一些实施例中,可使用相同方法用于访问与并非渲染目标的表面相关联的纹理存储器。
[0109]应理解的是,本文所描述的架构仅是示意性的,并且变形和修改是可能的。在一个示例中,本文围绕给定配置中的具体渲染目标集500来描述技术。然而,可使用任何数目的渲染目标500来采用所描述的技术。每个渲染目标510可独立于其他渲染目标配置为包括任何数目的字段。这类字段可包括但不限于3D位置、漫射照明信息和高光照明信息。渲染目标510内的每个字段可独立于其他字段配置为包括任何数目的位。在另一个示例中,虽然在一系列的渲染目标配置600中示出具体渲染目标配置610,但可指定任何技术上可行的渲染目标配置610。在又一示例中,在特定图像的渲染期间,可采用任何系列的渲染目标配置600,其中可指定任何数量的渲染目标配置610,并且任何渲染目标配置610可在任何其他渲染目标配置610之前或之后。
[0110]图7阐述根据本发明的一个实施例的、用于适应性定制高速缓存像素块大小的方法步骤的流程图。虽然结合图1-6的系统描述方法步骤,但本领域普通技术人员将理解的是,配置为以任何次序实施方法步骤的任何系统在本发明的范围内。
[0111]如所示,方法700开始于步骤702,其中设备驱动程序103检测不同于当前渲染目标配置的新渲染目标配置。渲染目标配置中的改变可以是由于新图像渲染过程的开始或由于在图像渲染过程期间从当前渲染目标配置到新渲染目标配置的改变。在步骤704,设备驱动程序103确定新渲染目标配置是否是当前渲染目标配置的子集。如果新渲染目标配置是当前渲染目标配置的子集,那么方法700终止。
[0112]然而,如果新渲染目标配置不是当前渲染目标配置的子集,那么方法700前进到步骤706,其中设备驱动程序103计算由高速缓存像素块所占用的高速缓存存储器空间。例如,高速缓存像素块可占用总可用高速缓存存储器的二分之一或三分之一。在步骤708,设备驱动程序103计算由每个像素所占用的存储器空间的量。例如,设备驱动程序103可将由新渲染目标配置中的每个渲染目标的每个字段所占用的字节数目相加。
[0113]在步骤710,设备驱动程序103对步骤708的存储器空间计算应用抗锯齿模式因子。在一个示例中,针对AA-1、AA-2、AA-4、或AA-8模式,设备驱动程序103可将每像素的存储器空间分别乘以1、2、4、或8倍的因子。在另一示例中,针对AA-1、AA-2、AA-4、或AA-8模式,设备驱动程序103可将每像素的存储器空间分别乘以1、2、3、或5倍的因子,这解释在较高抗锯齿模式中压缩像素的能力。在步骤712,设备驱动程序103对步骤708的存储器空间计算应用表面压缩因子。例如,设备驱动程序103可将每像素的存储器空间乘以基于ZROP数据或CROP数据的所估计的或实际的压缩因子的因子。
[0114]在步骤714,设备驱动程序103基于以下因素中的一个或多个来计算高速缓存像素块中的像素的数目:高速缓存存储器配置、新渲染目标配置、抗锯齿因子和表面压缩因子。在步骤716,设备驱动程序103计算高速缓存像素块大小。在步骤718,设备驱动程序103将高速缓存像素块大小设置为从步骤716中所计算的高速缓存像素块大小。方法700随后终止。
[0115]总而言之,当在渲染目标配置中检测到改变时高速缓存像素块被重新定制大小。高速缓存像素块的大小基于渲染目标配置以及高速缓存配置。计算每个渲染目标中的单个位置所需要的字节的总和。高速缓存存储器中的可用于高速缓存像素块的字节的数量除以该总和以确定高速缓存像素块中的像素的数目。如果高速缓存像素块是正方形的,那么计算像素的数目的平方根并将其上舍入到最接近整数,得到高速缓存像素块的宽度和高度。如果高速缓存像素块是非正方形的,那么选择宽度和高度,其中宽度和高度的积至少等于像素的数目。
[0116]可选择高速缓存像素块大小以在高速缓存存储器中容纳多个高速缓存像素块,使得在另一高速缓存像素块正被处理的同时可接收用于一个或多个高速缓存像素块的任务。在高速缓存像素块驻留在通用高速缓存中的情况中,高速缓存像素块大小可被设置为仅消耗高速缓存的一部分,诸如高速缓存存储器的二分之一或三分之一,这留下剩余的高速缓存存储器用于其他高速缓存客户端。高速缓存像素块数据可经压缩以进一步减少高速缓存像素块大小,以利用以较高抗锯齿模式和诸如ZROP和CROP压缩的表面压缩的数据效率。
[0117]所公开的方法的一个优点是高速缓存像素块大小基于渲染目标配置和高速缓存配置而被适应性定制。选择较小的高速缓存像素块大小用于较复杂的渲染目标配置,而选择较大的高速缓存像素块大小用于较不复杂的渲染目标配置。通过基于渲染目标配置来适应性定制高速缓存像素块大小,需要较少计算能力来处理高速缓存像素块,这导致更高效的处理器利用率和降低的能力要求。所公开的方法的另一优点是,当经压缩的高速缓存像素块数据存储在高速缓存中时,高速缓存像素块大小可进一步减少,从而甚至进一步增加可用的高速缓存存储器。可替代地,高速缓存像素块大小可保持相同大小,并且每个高速缓存像素块可覆盖屏幕表面的较大部分。结果,高速缓存像素块的总数可减少,这导致与拼接相关的较小的处理开销。另外,统一的L2高速缓存像素块允许高速缓存在高速缓存像素块数据和其他数据之间的动态分区,其中L2高速缓存被分配到各类数据的部分可基于当前需求而变化。最后,通过将由多个客户端所发出的读和写操作组合到相同渲染目标来通过获取渲染目标数据一次并重新使用该数据多次以利用空间和时间局部性,高速缓存控制器可减少渲染目标访问的数量。
[0118]本发明的一个实施例可被实施为与计算机系统一起使用的程序产品。该程序产品的程序定义实施例的各功能(包括本文中描述的方法)并且可以被包含在各种计算机可读存储介质上。示例性计算机可读存储介质包括但不限于:(i)不可写的存储介质(例如,计算机内的只读存储器设备,诸如可由光盘只读存储器(⑶-ROM)驱动器读取的⑶-ROM盘、闪存、只读存储器(ROM)芯片或任何类型的固态非易失性半导体存储器),在其上存储永久性信息jP(ii)可写的存储介质(例如,磁盘驱动器或硬盘驱动器内的软盘或者任何类型的固态随机存取半导体存储器),在其上存储可更改的信息。
[0119]以上已参照具体实施例对本发明进行了描述。然而,本领域普通技术人员将理解的是,可对此做出各种修改和改变而不脱离如随附权利要求书中所阐述的本发明的较宽精神和范围。因此,前面的描述以及附图应被视为是例示性而非限制性的意义。
[0120]因此,本发明的实施例的范围在下面的权利要求中阐述。
【权利要求】
1.一种用于在图形系统中适应性定制高速缓存像素块大小的方法,所述方法包括: 将与第一高速缓存像素块相关联的高速缓存像素块大小设置为第一大小; 检测从包括第一多个渲染目标的第一渲染目标配置到包括第二多个渲染目标的第二渲染目标配置的改变;以及 基于所述第二渲染目标配置将所述高速缓存像素块大小设置为第二大小。
2.根据权利要求1所述的方法,进一步包括确定所述第二多个渲染目标不包括所述第一多个渲染目标的子集。
3.根据权利要求1所述的方法,其中所述第一大小和所述第二大小中的至少一个与不具有正方形规模的高速缓存像素块相对应。
4.根据权利要求1所述的方法,其中所述第二大小进一步基于其中驻留所述第一高速缓存像素块的高速缓存存储器的配置。
5.根据权利要求4所述的方法,其中所述第一大小和所述第二大小中的至少一个被设置为确保所述第一高速缓存像素块至多占用所述高速缓存存储器的第一部分。
6.根据权利要求1所述的方法,进一步包括基于与抗锯齿模式相关联的压缩因子来修改所述高速缓存像素块大小。
7.—种图形系统,包括: 高速缓存存储器,包括: 包括高速缓存像素块的第一部分,以及 第二部分;以及 与所述高速缓存存储器相关联的高速缓存控制器,配置为: 确定驻留在所述第一高速缓存像素块中的第一数据项和驻留在所述高速缓存存储器的第二部分中的第二数据项被弓I导到第一渲染目标中的相同位置;以及 在单个事务中将所述第一数据项和所述第二数据项写入到所述第一渲染目标。
8.根据权利要求7所述的图形系统,其中所述高速缓存控制器进一步配置为: 确定驻留在第一渲染目标中的第一数据项和驻留在所述第一渲染目标中的第二数据项被调度以加载到所述第一高速缓存像素块中,其中所述第一数据项和所述第二数据项存储在所述第一渲染目标中的相邻位置中;以及 在单个事务中从所述第一渲染目标读取所述第一数据项和所述第二数据项。
9.根据权利要求7所述的图形系统,其中所述高速缓存控制器进一步配置为: 确定第一图形基元取决于驻留在第一渲染目标中的第一数据项; 确定第二图形基元取决于所述第一数据项;以及 在单个事务中从所述第一渲染目标读取所述第一数据项。
10.根据权利要求7所述的图形系统,进一步包括: 处理单元;以及 第一存储器,其耦连到所述处理单元并存储设备驱动程序,所述设备驱动程序配置为通过以下各项在所述图形系统中适应性定制高速缓存像素块大小: 将与第一高速缓存像素块相关联的高速缓存像素块大小设置为第一大小; 检测从包括第一多个渲染目标的第一渲染目标配置到包括第二多个渲染目标的第二渲染目标配置的改变;以及基于所述第二渲染目标配置将所述高速缓存像素块大小设置为第二大小。
【文档编号】G06T1/20GK103810669SQ201310517195
【公开日】2014年5月21日 申请日期:2013年10月28日 优先权日:2012年10月26日
【发明者】济亚德·S·哈库拉, 鲁斯兰·季米特洛夫, 埃米特·M·克里加里夫, 安德烈·霍达科夫斯基 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1