CN103793876A - 分布式拼接式进行高速缓存 - Google Patents
分布式拼接式进行高速缓存 Download PDFInfo
- Publication number
- CN103793876A CN103793876A CN201310516622.5A CN201310516622A CN103793876A CN 103793876 A CN103793876 A CN 103793876A CN 201310516622 A CN201310516622 A CN 201310516622A CN 103793876 A CN103793876 A CN 103793876A
- Authority
- CN
- China
- Prior art keywords
- primitive
- pixels
- unit
- concatenation unit
- screen space
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本发明的一个实施例阐述配置为实现分布式进行高速缓存拼接的图形子系统。图形子系统包括一个或多个世界空间管线、一个或多个屏幕空间管线、一个或多个拼接单元、以及交叉开关单元。每个世界空间管线实现在不同的处理实体中并耦连到不同的拼接单元。每个屏幕空间管线实现在不同的处理实体中并耦连到交叉开关单元。拼接单元配置为接收来自世界空间管线的基元、基于基元生成高速缓存像素块批次以及将基元传送到屏幕空间管线。所公开的方法的一个优点是以应用编程接口次序在高度并行拼接架构中处理基元。另一优点是以高速缓存像素块次序处理基元,其减少存储器带宽消耗并改进高速缓存存储器的利用率。
Description
相关申请的交叉引用
本申请要求于2012年10月26日所提交的序列号为61/719,271的、标题为“An approach for Tiled Caching”的美国临时专利申请的优先权,本文通过援引的方式对该相关申请的主题加以合并。
技术领域
本发明的实施例总地涉及三维(3D)图形处理,并且,更具体地,涉及分布式拼接式进行高速缓存。
背景技术
用于渲染三维图形的系统典型地接收由应用程序员所提供的命令并处理命令以生成像素用于显示。这类系统一般包括世界空间管线和屏幕空间管线。世界空间管线处理基元并将所处理的基元传送到屏幕空间管线。屏幕空间管线接收基元并生成最终像素用于显示。屏幕空间管线以应用编程接口(API)次序处理基元使得如应用程序员所期望来产生最终像素值。更具体地,屏幕空间管线内的各种单元的输出取决于那些单元处理所接收的基元的次序。如果以不正确的次序处理基元,那么屏幕空间管线的输出诸如最终颜色值将不会如应用程序员所期望的。因此,为了产生如应用程序员所期望的结果,以与由应用程序员所提供的命令一致的次序(“API次序”)处理基元。
一些图形系统实现拼接架构(tiling architecture),其中渲染目标分成像素块(tile)。在这类图形系统中所处理的工作被重新布置,使得工作以像素块次序被处理。换句话说,首先处理与第一像素块相关联的工作,随后处理与第二像素块相关联的工作,随后处理与第三像素块相关联的工作,如此等等。即使采用这类架构,由于上文所讨论的原因也应以API次序处理屏幕空间管线中的工作。因此,设计采用拼接架构的系统时的挑战是配置拼接单元和在生成像素块中所涉及的其他单元,使得可在屏幕空间管线中维持API次序。
除前述内容以外,较先进的拼接架构还可包括多个配置为实现世界空间管线和/或屏幕空间管线的不同实例的处理实体。这类高度并行的拼接架构的全然复杂性呈现出甚至更大的挑战以在不同屏幕空间管线中维持适当的API次序。
如前述内容示出的,本领域所需要的是用于在高度并行拼接架构的屏幕空间管线中维持API次序的方法。
发明内容
本发明的一个实施例阐述配置为实现分布式拼接式进行高速缓存的图形子系统。图形子系统包括一个或多个世界空间管线、一个或多个屏幕空间管线、一个或多个拼接单元、以及交叉开关单元。每个世界空间管线实现在不同的处理实体中并且耦连到不同的拼接单元。每个屏幕空间管线实现在不同的处理实体中并且耦连到交叉开关单元。拼接单元配置为从世界空间管线接收基元、基于基元生成高速缓存像素块批次(batch)、以及将基元传送到屏幕空间管线。
本发明的另一实施例阐述配置为实现分布式拼接式进行高速缓存的图形子系统。图形子系统包括一个或多个世界空间管线、一个或多个屏幕空间管线、一个或多个拼接单元、以及交叉开关单元。每个世界空间管线实现在不同的处理实体中并且耦连到交叉开关单元。每个屏幕空间管线实现在不同的处理实体中并且耦连不同的拼接单元。进一步地,每个拼接单元配置为从交叉开关单元接收基元、基于那些基元生成高速缓存像素块批次、以及将高速缓存像素块批次传送到屏幕空间管线。
所公开的方法的一个优点是在高度并行拼接架构中以应用编程接口次序处理基元。另一优点是以高速缓存像素块次序处理基元,其减少存储器带宽消耗并改进高速缓存存储器利用率。
附图说明
因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明的更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。
图1是示出了配置为实现本发明的一个或多个方面的计算机系统的框图;
图2是根据本发明的一个实施例的、包括在图1的并行处理子系统中的并行处理单元的框图;
图3A是根据本发明的一个实施例的、包括在图2的并行处理单元中的通用处理集群的框图;
图3B是根据本发明的一个实施例的、可实现在图2的并行处理单元内的图形处理管线的示意图;
图4是根据本发明的一个实施例的、可配置图3B的图形处理管线对其进行生成和处理的高速缓存像素块的示意图;
图5示出根据本发明的一个实施例的、配置为实现分布式拼接式进行高速缓存的图形子系统;
图6是当图形子系统在运行时基元流过图形子系统的例示;
图7是根据本发明的一个实施例的、用于分布式拼接式进行高速缓存的方法步骤的流程图;
图8示出根据本发明的另一实施例的、配置为实现分布式拼接式进行高速缓存的图形子系统;
图9是当图形子系统在运行时基元流过图形子系统的例示;以及
图10是根据本发明的一个实施例的、用于分布式拼接式进行高速缓存的方法步骤的流程图。
具体实施方式
在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。
系统概述
图1为示出了配置为实现本发明的一个或多个方面的计算机系统100的框图。如所示,计算机系统100包括但不限于经由存储器桥105和通信路径113耦连到并行处理子系统112的中央处理单元(CPU)102和系统存储器104。存储器桥105经由通信路径106进一步耦连到I/O(输入/输出)桥107,并且I/O桥107转而耦连到交换器116。
在操作中,I/O桥107配置为从诸如键盘或鼠标的输入设备108接收用户输入信息,并且经由通信路径106和存储器桥105将该输入信息转发到CPU102用于处理。交换器116配置为提供I/O桥107与计算机系统100的其他部件之间的连接,该其他部件诸如网络适配器118以及各种插卡120和121。
还如所示,I/O桥107耦连到可配置为存储内容和应用和数据用于由CPU102和并行处理子系统112使用的系统盘114。一般来说,系统盘114提供用于应用和数据的非易失性存储并可包括固定或可移动硬盘驱动器、闪存设备和CD-ROM(压缩光盘只读存储器)、DVD-ROM(数字通用光盘-ROM)、蓝光、HD-DVD(高清晰度DVD)、或其他磁、光、或固态存储设备。最后,虽然未明确示出,但诸如通用串行总线或其他端口连接、压缩光盘驱动器、数字通用光盘驱动器、胶片录制设备及类似部件的其他部件,也可以连接到I/O桥107。
在各种实施例中,存储器桥105可以是北桥芯片,并且I/O桥107可以是南桥芯片。另外,通信路径106和113以及计算机系统100内的其他通信路径可以使用任何技术上合适的协议实现,包括但不限于AGP(加速图形端口)、超传输或者任何其他本领域已知的总线或点到点通信协议。
在一些实施例中,并行处理子系统112包括图形子系统,其将像素递送到显示设备110,该显示设备110可以是任何常规的阴极射线管、液晶显示器、发光二极管显示器等。在这类实施例中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路。如下文在图2中以更多细节所描述的,可跨包括在并行处理子系统112内的一个或多个并行处理单元(PPU)包含这类电路。在其他实施例中,并行处理子系统112包含经优化用于通用和/或计算处理的电路。再者,可跨包括在并行处理子系统112内的一个或多个PPU包含这类配置为实施这类通用和/或计算操作的电路。在又一些实施例中,包括在并行处理子系统112内的一个或多个PPU可配置为实施图形处理、通用处理和计算处理操作。系统存储器104包括至少一个设备驱动程序103,其配置为管理并行处理子系统112内的一个或多个PPU的处理操作。
在各种实施例中,并行处理子系统112可与图1的一个或多个其他元件集成以形成单个系统。例如,并行处理子系统112可与单个芯片上的CPU102和其他连接电路集成以形成片上系统(SoC)。
应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数目和布置、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。
图2是根据本发明的一个实施例的、包括在图1的并行处理子系统112中的并行处理单元(PPU)202的框图。虽然图2描绘一个PPU202,但如上文所指示的,并行处理子系统112可包括任何数目的PPU202。如所示,PPU202耦连到本地并行处理(PP)存储器204。PPU202和PP存储器204可使用一个或多个集成电路设备来实现,诸如可编程处理器、专用集成电路(ASIC)或存储器设备,或者以任何其他技术上可行的方式来实现。
在一些实施例中,PPU202包括图形处理单元(GPU),其可配置为实现图形渲染管线以实施与基于由CPU102和/或系统存储器104所供应的图形数据来生成像素数据相关的各种操作。当处理图形数据时,PP存储器204可用作图形存储器,其存储一个或多个常规帧缓冲区,并且如果需要的话也存储一个或多个其他渲染目标。此外,PP存储器204可用来存储和更新像素数据并将最终像素数据或显示帧递送到显示设备110用于显示。在一些实施例中,PPU202还可经配置用于通用处理和计算操作。
在操作中,CPU102是计算机系统100的主处理器,控制和协调其他系统部件的操作。具体地,CPU102发出控制PPU202的操作的命令。在一些实施例中,CPU102写入用于PPU202的命令流到数据结构中(在图1或图2中未明确示出),该数据结构可位于系统存储器104、PP存储器204、或CPU102和PPU202都可访问的另一存储位置中。将指向数据结构的指针写到入栈缓冲区(pushbuffer)以发起对数据结构中的命令流的处理。PPU202从入栈缓冲区读取命令流,然后相对于CPU102的操作异步地执行命令。在生成多个帧缓冲区的实施例中,可以经由设备驱动程序103由应用程序为每个入栈缓冲区指定执行优先级以控制对不同入栈缓冲区的调度。
还如所示,PPU202包括经由通信路径113和存储器桥105与计算机系统100的其余部分通信的I/O(输入/输出)单元205。I/O单元205生成用于在通信路径113上传送的包(或其他信号),并且还从通信路径113接收所有传入的包(或其他信号),将传入的包引导到PPU202的适当部件。例如,可将与处理任务相关的命令引导到主机接口206,而可将与存储器操作相关的命令(例如,对PP存储器204的读取或写入)引导到交叉开关单元210。主机接口206读取每个入栈缓冲区,并且将存储在入栈缓冲区中的命令流传送到前端212。
如上文结合图1所提及的,PPU202到计算机系统100的其余部分的连接可以变化。在一些实施例中,包括至少一个PPU202的并行处理子系统112实现为可插入到计算机系统100的扩展槽中的插卡。在其他实施例中,PPU202可采用诸如存储器桥105或I/O桥107的总线桥来集成在单个芯片上。再者,还有在其他实施例中,PPU202的一些或所有元件可与CPU102一起包括在单个集成电路或芯片系统(SoC)中。
在操作中,前端212将从主机接口206所接收的处理任务传送到任务/工作单元207内的工作分布单元(未示出)。工作分布单元接收指向编码为任务元数据(TMD)并存储在存储器中的处理任务的指针。指向TMD的指针包括在存储为入栈缓冲区并由前端单元212从主机接口206接收的命令流中。可以编码为TMD的处理任务包括与所要处理的数据相关联的索引,以及定义数据将被如何处理的状态参数和命令。例如,状态参数和命令可定义要在数据上执行的程序。任务/工作单元207从前端212接收任务并确保在由每一个TMD所指定的处理任务发起前,将GPC208配置为有效状态。可以为每个TMD指定用来调度处理任务的执行的优先级。还可从处理集群阵列230接收处理任务。可选地,TMD可包括控制将TMD添加到处理任务列表(或到指向处理任务的指针的列表)的头部还是尾部的参数,从而提供在执行优先级之上的另一级别的控制。
有利地,PPU202基于处理集群阵列230实现高度并行处理架构,该阵列230包括一套C个通用处理集群(GPC)208,其中C≥1。每个GPC208能够并发执行大量的(例如,几百或几千)线程,其中每个线程是程序的实例(instance)。在各种应用中,可分配不同的GPC208用于处理不同类型的程序或用于实施不同类型的计算。GPC208的分配可以取决于因每种类型的程序或计算所产生的工作量而变化。
存储器接口214包括一套D个分区单元215,其中D≥1。每个分区单元215耦连到驻留在PPM存储器204内的一个或多个动态随机存取存储器(DRAM)220。在一个实施例中,分区单元215的数目等于DRAM220的数目,并且每个分区单元215耦连到不同的DRAM220。在其他实施例中,分区单元215的数目也可以不同于DRAM220的数目。本领域的普通技术人员将理解,DRAM220可以采用任何其他技术上合适的存储设备来替代。在操作中,诸如纹理映射图和帧缓冲区的各种渲染目标可以跨DRAM220而被存储,这允许分区单元215并行写入每个渲染目标的各部分以高效地使用PP存储器204的可用带宽。
给定的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)流。
再者,GPC208可被编程以执行与种类繁多的应用相关的处理任务,包括但不限于,线性和非线性数据变换、视频和/或音频数据过滤、建模操作(例如,应用物理定律以确定对象的位置、速率和其他属性)、图像渲染操作(例如,曲面细分(tessellation)着色器、顶点着色器、几何着色器、和/或像素/片段着色器程序)、通用计算操作等等。在操作中,PPU202配置为将数据从系统存储器104和/或PP存储器204转移到一个或多个片上存储器单元中,处理该数据,并且将结果数据写回到系统存储器104和/或PP存储器204。结果数据可以随后由其他系统部件访问,所述其他系统部件包括CPU102、并行处理子系统112内的另一PPU202、或计算机系统100内的另一并行处理子系统112。
如上所示,在并行处理子系统112中可以包括任何数目的PPU202。例如,可在单个插卡上提供多个PPU202,或可将多个插卡连接到通信路径113,或可将一个或多个PPU202集成到桥式芯片中。在多PPU系统中的PPU202可以彼此同样或不同。例如,不同的PPU202可能具有不同数目的处理核心和/或不同容量的PP存储器204。在存在多个PPU202的实现方案中,可并行操作那些PPU从而以高于单个PPU202所可能达到的吞吐量来处理数据。包含一个或多个PPU202的系统可以以各种配置和形状因素来实现,包括但不限于台式电脑、笔记本电脑、手持式个人计算机或其他手持式设备、服务器、工作站、游戏控制台、嵌入式系统等等。
图3A是根据本发明的一个实施例的、包括在图2的PPU202中的GPC208的框图。在操作中,GPC208可配置为并行执行大量线程以实施图形、一般处理和/或计算操作。如本文所使用的,“线程”是指在特定输入数据集上执行的特定程序的实例。在一些实施例中,单指令、多数据(SIMD)指令发出技术用来在不提供多个独立指令单元的情况下支持大量线程的并行执行。在其他实施例中,单指令、多线程(SIMT)技术用来使用配置为向GPC208内的处理引擎集发出指令的公共指令单元来支持大量一般来说同步的线程的并行执行。不同于所有处理引擎通常都执行同样指令的SIMD执行机制,SIMT执行通过给定程序允许不同线程更容易跟随分散执行路径。本领域普通技术人员将理解SIMD处理机制代表SIMT处理机制的功能子集。
经由将从任务/工作单元207内的工作分布单元(未示出)所接收的处理任务分布到一个或多个流多处理器(SM)310的管线管理器305来控制GPC208的操作。管线管理器305还可配置为通过为由SM310所输出的所处理数据指定目的地来控制工作分布交叉开关330。
在一个实施例中,GPC208包括一套M个SM310,其中M≥1。并且,每个SM310包括一套功能执行单元(未示出),诸如执行单元和加载-存储单元。针对任何的功能执行单元的处理操作可被管线化,其使新指令能够在前一个指令已完成执行之前被发出用于执行。可提供给定SM310内的功能执行单元的任何组合。在各种实施例中,功能执行单元可配置为支持各种各样的不同操作,包括整数和浮点运算(例如加法和乘法)、比较操作、布尔操作(AND、OR、XOR)、移位和各种代数函数的计算(例如平面插值与三角函数、指数函数和对数函数等等)。有利地,相同的功能执行单元可配置为实施不同的操作。
在操作中,每个SM310配置为处理一个或多个线程组。如本文所使用的,“线程组”或“线程束”是指对不同输入数据并发执行相同程序的一组线程,所述组的一个线程被指派到SM310内的不同执行单元。线程组可以包括比SM310内的执行单元数目少的线程,在这种情况下在该线程组正在被处理的周期期间一些执行单元可闲置。线程组还可以包括比SM310内的执行单元数目多的线程,在这种情况下处理可在连续的时钟周期上发生。因为每个SM310可以并发支持多达G个线程组,结果是在任何给定时间在GPC208中可以执行多达G*M个线程组。
另外,多个相关线程组可以在SM310内同时活动(在执行的不同阶段)。该线程组的集合在本文中称为“协作线程阵列”(“CTA”)或“线程阵列”。特定CTA的大小等于m*k,其中k是线程组中并发执行线程的数目,其典型地是SM310内的执行单元数目的整数倍,以及m是SM310内同时活动的线程组的数目。
虽然在图3A中未示出,但每个SM310包含一级(L1)高速缓存,或使用在SM310之外的相应L1高速缓存中的空间,以支持此外由执行单元所实施的加载和存储操作。每个SM310都还有权访问在PPU202中的所有GPC208之间共享的二级(L2)高速缓存(未示出)。L2高速缓存可用来在线程之间转移数据。最后,SM310还有权访问片外“全局”存储器,所述“全局”存储器可以包括PP存储器204和/或系统存储器104。将理解的是,PPU202外部的任何存储器可用作全局存储器。另外,如图3A所示,一点五级(L1.5)高速缓存335可以包括在GPC208内,并配置为接收并保持由SM310经由存储器接口214从存储器所请求的数据。这类数据可包括但不限于指令、一致(uniform)数据和常量数据。在GPC208内具有多个SM310的实施例中,SM310可有利地共享高速缓存在L1.5高速缓存335中的公共指令和数据。
每个GPC208可以具有配置为将虚拟地址映射到物理地址中的相关联的存储器管理单元(MMU)320。在各种实施例中,MMU320可以驻留在GPC208或存储器接口214二者之一内。MMU320包括用来将虚拟地址映射到像素块或存储器页的物理地址的页表条目(PTE)集和可选地包括高速缓存行索引。MMU320可以包括地址转译后备缓冲区(TLB)或包括可以驻留在SM310内、在一个或多个L1高速缓存内、或在GPC208内的高速缓存。
在图形和计算应用中,GPC208可经配置使得每个SM310耦连到纹理单元315用于实施纹理映射操作,诸如确定纹理样本位置、读取纹理数据以及过滤纹理数据。
在操作中,为了将所处理的任务提供给另一个GPC208用于进一步处理或为了经由交叉开关单元210将所处理的任务存储在L2高速缓存(未示出)、并行处理存储器204或系统存储器104中,每个SM310将所处理的任务传送到工作分布交叉开关330。另外,预光栅操作(preROP)单元325配置为从SM310接收数据、将数据引导到分区单元215内的一个或多个光栅操作(ROP)单元、针对颜色混合实施优化、组织像素颜色数据和实施地址转译。
应该理解本文所述的核心架构是示例性的并且变化和修改都是可能的。此外,任何数目的处理单元诸如SM310、纹理单元315、或preROP单元325可以包括在GPC208内。进一步地,如上文结合图2所描述的,PPU202可以包括任何数目的GPC208,所述GPC208配置为在功能上彼此相似以使得执行行为不取决于哪个GPC208接收特定处理任务。进一步地,每个GPC208独立于PPU202中的其他GPC208进行操作以为一个或多个应用程序执行任务。鉴于前述内容,本领域普通技术人员将理解图1-3A所描述的架构决不限制本发明的范围。
图形管线架构
图3B是根据本发明的一个实施例的、可实现在图2的PPU202内的图形处理管线350的示意图。如所示,图形处理管线350包括但不限于基元分布器(PD)355;顶点属性获取单元(VAF)360;顶点、曲面细分、几何处理单元(VTG)365;视窗缩放、剔除和裁剪单元(VPC)370;拼接单元375、设立单元(设立)380、光栅化器(光栅)385;还被标识为像素着色单元(PS)390的片段处理单元,以及光栅操作单元(ROP)395。
PD355从前端212收集与高阶表面、图形基元等相关联的顶点数据并将顶点数据传送到VAF360。
VAF360从共享存储器检索与传入的顶点中的每一个相关联的顶点属性,并将顶点数据与相关联的顶点属性一起存储到共享存储器中。
VTG365是可编程执行单元,其配置为执行顶点着色器程序、曲面细分程序和几何程序。这些程序处理从VAF360所接收的顶点数据和顶点属性,并产生图形基元以及在用于图形基元的每个顶点处的颜色值、表面法向矢量和透明度值,用于在图形处理管线350内进一步处理。虽然未明确示出,但在一些实施例中,VTG365可包括顶点处理单元、曲面细分初始化处理单元、任务生成单元、任务分布器、拓扑生成单元、曲面细分处理单元以及几何处理单元中的一个或多个。
顶点处理单元是可编程执行单元,其配置为执行顶点着色器程序,按顶点着色器程序的指定来照明和变换顶点数据。例如,顶点处理单元可被编程以将顶点数据从基于对象的坐标表示(对象空间)变换到诸如世界空间或规格化设备坐标(NDC)空间的可替代的坐标系。顶点处理单元可读取由VAF存储在共享存储器中的顶点数据和顶点属性并可处理顶点数据和顶点属性。顶点处理单元415将所处理的顶点存储在共享存储器中。
曲面细分初始化处理单元是可编程执行单元,其配置为执行曲面细分初始化着色器程序。曲面细分初始化处理单元处理由顶点处理单元所产生的顶点并生成称为补丁(patch)的图形基元。曲面细分初始化处理单元还生成各种补丁属性。曲面细分初始化处理单元随后将补丁数据和补丁属性存储在共享存储器中。在一些实施例中,曲面细分初始化着色器程序可称为外壳着色器(hull shader)或曲面细分控制着色器。
任务生成单元从共享存储器检索用于顶点和补丁的数据和属性。任务生成单元生成用于处理顶点和补丁的任务以由图形处理管线350中的后续级处理。
任务分布器重新分布由任务生成单元所产生的任务。由顶点着色器程序和曲面细分初始化程序的各种示例所产生的任务可在一个图形处理管线350和另一个之间显著变化。任务分布器重新分布这些任务,使得每个图形处理管线350在后续的管线级期间具有近似相同的工作量。
拓扑生成单元检索由任务分布器所分布的任务。拓扑生成单元将包括与补丁相关联的顶点的顶点编入索引,并计算用于曲面细分顶点和连接经曲面细分的顶点以形成图形基元的索引的(U,V)坐标。拓扑生成单元随后将被编入索引的顶点存储在共享存储器中。
曲面细分处理单元是可编程执行单元,其配置为执行曲面细分着色器程序。曲面细分处理单元从共享存储器读取输入数据并将输出数据写到共享存储器。共享存储器中的该输出数据被传递到下一着色器级、几何处理单元445作为输入数据。在一些实施例中,曲面细分着色器程序可称为域着色器或曲面细分评估着色器。
几何处理单元是可编程执行单元,其配置为执行几何着色器程序,从而变换图形基元。顶点被分组以构建图形基元用于处理,其中图形基元包括三角形、线段、点等等。例如,几何处理单元可被编程以将图形基元细分成一个或多个新图形基元并计算用来将新图形基元光栅化的参数,诸如平面方程系数。
几何处理单元将指定新图形基元的参数和顶点传送到VPC370。几何处理单元可读取存储在共享存储器中的数据用于在处理几何数据中使用。VPC370实施剪裁、剔除、透视校正和视窗变换以确定在最终所渲染的图像中的那些图形基元是潜在可视的以及哪些图形基元不是潜在可视的。VPC370随后将所处理的图形基元传送到拼接单元375。
如本文所进一步描述的,拼接单元375是驻留在世界空间管线352和屏幕空间管线354之间的图形基元排序引擎。图形基元在世界空间管线352中被处理并随后被传送到拼接单元375。屏幕空间分成高速缓存像素块,其中每个高速缓存像素块与屏幕空间的一部分相关联。针对每个图形基元,拼接单元375标识与图形基元相交的高速缓存像素块集,即在本文称为“拼接”的过程。在拼接某数目的图形基元之后,拼接单元375在高速缓存像素块基础上处理图形基元,其中与特定高速缓存像素块相关联的图形基元被传送到设立单元380。拼接单元375一次一个高速缓存像素块地将图形基元传送到设立单元380。与多个高速缓存像素块相交的图形基元典型地在世界空间管线352中被处理一次,但随后被多次传送到屏幕空间管线354。
这类技术改进在于屏幕空间管线354中的处理期间的高速缓存存储器局部性,其中与第一高速缓存像素块相关联的多个存储器操作访问L2高速缓存的区域,或在对第一高速缓存像素块的屏幕空间处理期间可保持驻留的任何其他技术上可行的高速缓存存储器的区域。一旦由屏幕空间管线354处理与第一高速缓存像素块相关联的图形基元,则可转储(flush)与第一高速缓存像素块相关联的L2高速缓存的部分,并且拼接单元可传送与第二高速缓存像素块相关联的图形基元。与第二高速缓存像素块相关联的多个存储器操作可随后访问在对第二高速缓存像素块的屏幕空间处理期间可保持驻留的L2高速缓存的区域。因此,到L2高速缓存和到渲染目标的整体存储器业务可减少。在一些实施例中,针对给定的图形基元实施一次世界空间计算,而不论在屏幕空间中与图形基元相交的高速缓存像素块的数目。
设立单元380经由拼接单元375从VPC370接收顶点数据,并计算与图形基元相关联的参数,包括但不限于边沿方程、部分平面方程以及深度平面方程。设立单元380随后将所处理的图形基元传送到光栅化器385。
光栅化器385扫描转换新图形基元并将片段和覆盖数据传送到像素着色单元390。另外,光栅化器385可配置为实施z剔除(z-culling)和其他基于z的优化。
像素着色单元390是可编程执行单元,其配置为执行片段着色器程序,按片段着色器程序的指定来变换从光栅化器385所接收的片段。片段着色器程序可以像素级别粒度对片段着色,其中这类着色器程序可称为像素着色器程序。可替代地,片段着色器程序可以样本级别粒度对片段着色,其中每个像素包括多个样本,并且每个样本表示像素的一部分。可替代地,片段着色器程序可以任何其他技术上可行的粒度对片段着色,这取决于程控采样率。
在各种实施例中,片段处理单元460可被编程以实施诸如透视校正、纹理映射、着色、混合等操作,以产生传送到ROP395的经着色的片段。像素着色单元390可读取存储在共享存储器中的数据。
ROP395是处理单元,其实施诸如模板(stencil)、z测试、混合等的光栅操作,并经由存储器接口214传送像素数据作为所处理的图形数据用于存储在图形存储器中,其中图形存储器典型地被结构化为一个或多个渲染目标。所处理的图形数据可存储在图形存储器、并行处理存储器204、或系统存储器104中用于在显示设备110上显示或用于由CPU102或并行处理子系统112进一步处理。在一些实施例中,ROP395配置为压缩写入到存储器的z或颜色数据以及解压缩从存储器读取的z或颜色数据。在各种实施例中,ROP395可位于存储器接口214中、GPC208中、GPC之外的处理集群阵列230中、或PPU202内的分立单元(未示出)中。
可由PPU202内的一个或多个处理元件实现图形处理管线。例如,图3A的SM310中的一个可配置为实施VTG365和像素着色单元390中的一个或多个的功能。PD355、VAF360、VPC450、拼接单元375、设立单元380、光栅化器385和ROP395的功能还可由特定GPC208内的处理元件结合相应分区单元215来实施。可替代地,可使用用于上文所列出的功能中的一个或多个的专用固定功能处理元件来实现图形处理管线350。在各种实施例中,PPU202可配置为实现一个或多个图形处理管线350。
在一些实施例中,图形处理管线350可分成世界空间管线352和屏幕空间管线354。世界空间管线352处理3D空间中的图形对象,其中每个图形对象的位置相对于其他图形对象和相对于3D坐标系是已知的。屏幕空间管线354处理已从3D坐标系投影到表示显示设备110的表面的2D平面表面上的图形对象。例如,世界空间管线352可包括图形处理管线350中的从PD355到VPC370的管线级。屏幕空间管线354可包括图形处理管线350中的从设立单元380到ROP395的管线级。拼接单元375将跟随在世界空间管线352的最后级也就是VPC370之后。拼接单元375将在屏幕空间管线354的第一级也就是设立单元380之前。
在一些实施例中,世界空间管线352可进一步分成alpha阶段管线和beta阶段管线。例如,alpha阶段管线可包括图形处理管线350中的从PD355到任务生成单元的管线级。beta阶段管线可包括图形处理管线350中的从拓扑生成单元到VPC370的管线级。图形处理管线350在于alpha阶段管线中的处理期间实施第一操作集以及在于beta阶段管线中的处理期间实施第二操作集。如本文所使用的,操作集定义为由单个线程、线程组或由一致动作的多个线程组所执行的一个或多个指令。
在采用多个图形处理管线350的系统中,可划分与图形对象集相关联的顶点数据和顶点属性,使得每个图形处理管线350具有近似相同的经过alpha阶段的工作量。alpha阶段处理可显著扩展顶点数据和顶点属性的量,使得由任务生成单元所产生的顶点数据和顶点属性的量显著大于由PD355和VAF360所处理的顶点数据和顶点属性的量。进一步地,与一个图形处理管线350相关联的任务生成单元可比与另一图形处理管线350相关联的任务生成单元产生显著更多数量的顶点数据和顶点属性,甚至在两个图形处理管线350在alpha节点管线的开始处处理相同数量的属性的情况下。在这类情况下,任务分布器重新分布由alpha阶段管线所产生的属性,使得每个图形处理管线350在beta阶段管线的开始处具有近似相同的工作量。
请注意,如本文所使用的,对共享存储器的引用可包括任何一个或多个技术上可行的存储器,包括但不限于,由一个或多个SM310所共享的本地存储器,或经由存储器接口214可访问的存储器,诸如高速缓存存储器、并行处理存储器204或系统存储器104。还请注意,如本文所使用的,对高速缓存存储器的引用可包括任何一个或多个技术上可行的存储器,包括但不限于,L1高速缓存、L1.5高速缓存以及L2高速缓存。
拼接式进行高速缓存
图4是根据本发明的一个实施例的、可配置图3B的图形处理管线350以对其进行生成和处理的高速缓存像素块410(0)的示意图。如所示,高速缓存像素块410(0)表示屏幕空间400的一部分并分成多个光栅像素块420。
屏幕空间400表示配置为存储由图形处理管线350内的功能单元所传送的所渲染的图像数据和其他数据的一个或多个存储器缓冲区。在一些实施例中,一个或多个存储器缓冲区可配置为一个或多个渲染目标。屏幕空间表示配置为存储由图形处理管线所渲染的图像的存储器缓冲区。屏幕空间400可与任何数目的渲染目标相关联,其中每个渲染目标可独立于其他渲染目标配置为包括任何数目的字段。渲染目标内的每个字段可独立于其他字段配置为包括任何数目的位。每个渲染目标可包括多个像元(像素),并且每个像素可转而包括多个样本。在一些实施例中,每个高速缓存像素块的大小可基于与屏幕空间相关联的渲染目标的大小和配置。在操作中,一旦渲染完成,那么一个或多个渲染目标中的像素可被传送到显示设备以显示所渲染的图像。
以示例的方式,用于屏幕空间400的渲染目标集可包括八个渲染目标。第一渲染目标可包括四个字段,其表示与相应片段相关联的包括红、绿和蓝分量颜色的颜色和透明度信息。第二渲染目标可包括两个字段,其表示与相应片段相关联的深度和模板信息。第三渲染目标可包括三个字段,其表示与相应片段相关联的表面法向矢量信息,包括x轴法向矢量、y轴法向矢量和z轴法向矢量。剩余五个渲染目标可配置为存储与相应片段相关联的附加信息。这类配置可包括用于各种信息的存储,各种信息包括但不限于3D位置数据、漫射照明信息和高光照明信息。
每个高速缓存像素块410表示屏幕空间400的一部分。为了清楚起见,图4仅示出五个高速缓存像素块410(0)-410(4)。在一些实施例中,高速缓存像素块在X和Y屏幕空间中可具有任意大小。例如,如果高速缓存像素块驻留在还用来存储其他数据的高速缓存存储器中,那么可定制高速缓存像素块大小以仅消耗高速缓存存储器的特定部分。高速缓存像素块的大小可基于若干因素,包括与屏幕空间400相关联的渲染目标的数量和配置、每像素的样本数量以及存储在高速缓存像素块中的数据是否被压缩。一般来说,高速缓存像素块被定制大小以增加高速缓存像素块数据保持驻留在高速缓存存储器中直到与高速缓存像素块相关联的所有图形基元被完全处理为止的可能性。
光栅像素块420表示高速缓存像素块410(0)的一部分。如所示,高速缓存像素块410(0)包括以四个光栅像素块420宽和四个光栅像素块420高的阵列布置的十六个光栅像素块420(0)-420(15)。在包括多个GPC208的系统中,可在可用的GPC208中划分与给定高速缓存像素块410(0)相关联的处理。在示出的示例中,如果高速缓存像素块410(0)的十六个光栅像素块由四个不同的GPC208所处理,那么可指派每个GPC208处理高速缓存像素块410(0)的十六个光栅像素块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内的任何其他处理实体中对给定的高速缓存像素块内的不同光栅像素块的处理加以分布。
分布式拼接式进行高速缓存
图5-10描绘实现分布式拼接式进行高速缓存的图形子系统架构的两个实施例。分布式拼接式进行高速缓存是其中提供多个GPC208用于增加的处理性能的技术。多个GPC208实现多个世界空间管线352和多个屏幕空间管线354用于高度并行的图形处理。图5-7描述其中拼接单元520位于交叉开关单元530的世界空间侧的分布式拼接式进行高速缓存的方法。图8-10描述其中拼接单元820位于交叉开关单元530的屏幕空间侧的分布式拼接式进行高速缓存的方法。
产生自多个GPC208的存在的附加复杂性意味着就关于图3B所描述的各种单元而言,结合图5-10所描述的图形子系统中的相应单元的某些方面被修改。这些修改允许图形子系统以API次序处理基元,以解释(accountfor)某些数据相关性,以及解释与多个GPC208的引入相关的其他复杂性。现在提供这两个实施例的详细描述。
图5示出根据本发明的一个实施例的、配置为实现分布式拼接式进行高速缓存的图形子系统500。如所示,图形子系统500包括第一世界空间管线352(0)、第二世界空间管线352(1)、第三世界空间管线352(2)、第一包围框单元510(0)、第二包围框单元510(1)、第三包围框单元510(2)、第一拼接单元520(0)、第二拼接单元520(1)、第三拼接单元520(2)、交叉开关单元530(“XBAR”)、第一屏幕空间工作分布交叉开关540(0)、第二屏幕空间工作分布交叉开关540(1)、第三屏幕空间工作分布交叉开关540(2)、第一屏幕空间管线354(0)、第二屏幕空间管线354(1)以及第三屏幕空间管线354(2)。虽然图形子系统500被示出为包括屏幕空间管线354和世界空间管线352的三个实例,但本文所提供的教导应用到具有任何数目的世界空间管线352和屏幕空间管线354的图形管线。
前端单元(未示出)从设备驱动程序(未示出)接收命令并调度任务用于由每个世界空间管线352处理。在一个实施例中,前端单元以轮叫(round robin)次序将任务分布到第一世界空间管线352(0)、第二世界空间管线352(1)和第三世界空间管线352(2)。
第一世界空间管线352(0)、第二世界空间管线352(1)和第三世界空间管线352(2)以如上文关于图1-4所描述的类似方式发挥作用。换句话说,第一世界空间管线352(0)、第二世界空间管线352(1)和第三世界空间管线352(2)响应于从前端单元所接收的工作来生成基元。世界空间管线352将基元传送到相关联的包围框单元510。
包围框单元510与每个世界空间管线352相关联。针对传送到包围框单元510的每个基元,包围框单元510计算包围框,该包围框确定基元与哪些光栅像素块420重叠,以及因此基元应被传送到哪个屏幕空间管线354。包围框单元510还将包围框传送到拼接单元520。第一世界空间管线352(0)、第二世界空间管线352(1)和第三世界空间管线352(2)中的每一个可将基元传送到第一屏幕空间管线354(0)、第二屏幕空间管线354(1)或第三屏幕空间管线354(2)中的任何一个或全部。
每个拼接单元520与相应世界空间管线352相关联并从相应世界空间管线352接收基元。每个拼接单元520接收基元直到拼接单元决定实施转储操作为止。当发生触发条件时每个拼接单元520决定实施转储操作。一个这类的触发条件是由拼接单元520所维持的资源计数器指示特定资源超过预设的阈值。当任何拼接单元520决定实施转储操作时,该拼接单元520将转储信号传送到所有其他拼接单元520,使那些其他拼接单元520也实施转储操作。当拼接单元520决定实施转储操作时,拼接单元520基于拼接单元520已接收的基元来生成高速缓存像素块批次并将高速缓存像素块批次传送到交叉开关单元530。进一步地,当拼接单元520决定实施转储操作时,拼接单元520重置与拼接单元520相关联的所有资源计数器。
交叉开关单元530接收基元并将每个基元传送到一个或多个屏幕空间工作分布交叉开关单元540(SWDX)。当屏幕空间工作分布交叉开关单元540接收基元时,屏幕空间工作分布交叉开关单元540将基元重新排序成应用编程接口次序(API次序)用于由相应屏幕空间管线354处理。
屏幕空间管线354接收基元并如上文关于图1-4所描述来处理基元。每个屏幕空间管线354与不同的、互斥的光栅像素块420集相关联。因此,每个屏幕空间管线354处理和与该屏幕空间管线354相关联的光栅像素块集重叠的基元。
世界空间管线352和屏幕空间管线354的功能性由诸如上文所描述的通用处理集群(GPC)208的处理实体来实现。在一个实施例中,第一世界空间管线352(0)可实现在第一GPC208(0)中,第二世界空间管线352(1)可实现在第二GPC208(1)中,并且第三世界空间管线352(2)可实现在第三GPC208(2)中。实现世界空间管线352的GPC208也可实现屏幕空间管线354。例如,第一GPC208(0)可实现第一世界空间管线352(0)和第一屏幕空间管线354(0)二者。然而,每个屏幕空间管线354由不同GPC208来实现并且每个世界空间管线352由不同GPC208来实现。
现在提供拼接单元520和屏幕空间工作分布交叉开关单元540的操作的详细描述。拼接单元520从相应世界空间管线352接收基元。基元被按批次接收。批次以应用编程接口(API)次序、并且以轮叫方式传送到每个世界空间管线352。例如,基元的第一批次传送到第一世界空间管线352(0),随后基元的第二批次传送到第二世界空间管线352(1),随后基元的第三批次传送到第三世界空间管线352(2),如此等等。因此,通过以API次序轮转通过世界空间管线352维持了基元的批次的API次序。
另外,拼接单元520通过实现令牌机制来以API次序接收批次。在操作期间的任何时间点处,拼接单元520中的一个占有令牌522。占有令牌522的拼接单元520能够从相应世界空间管线352接收基元,而不占有令牌522的拼接单元520无法接收基元。如果拼接单元520确定由于基元的批次使拼接单元520超过如下文所描述的某些局部或全局资源所以拼接单元520无法接受基元的批次,那么占有令牌522的拼接单元520还能够实施转储操作。当拼接单元520接收基元的批次时,拼接单元520被认为具有以API次序的基元的最当前的批次。在接收基元的批次之后,该拼接单元520随后将令牌522传递到下一拼接单元520,使该下一拼接单元520能够接收基元。当下一拼接单元520接收以API次序的基元的下一批次时,该拼接单元520将令牌522传递到下一拼接单元,如此等等。如令牌传递箭头524所指示的,以轮转次序来传递令牌522,其允许每个拼接单元520具有接受基元的一段时间。
除了能够接受基元以外,令牌522还允许拼接单元520实施转储操作。当拼接单元520决定实施转储操作时,拼接单元520具有基元的一个或多个批次。因为基元的批次以轮流的API次序传递到拼接单元520,所以每个拼接单元520包括的基元的批次可具有“间隙(gap)”。例如,第一拼接单元520(0)可接收基元的第一批次和基元的第四批次,但不接收以API次序的基元的第二或第三批次,其分别传送到第二拼接单元520(1)和第三拼接单元520(2)。
因为从每个拼接单元520所传送的基元以API次序可包括间隙,所以当一个拼接单元520实施转储操作时,所有其他拼接单元520也实施转储操作。使所有拼接单元520同时实施转储操作允许屏幕空间工作分布交叉开关540以API次序接收来自所有批次的基元而没有间隙,因为每个拼接单元520“覆盖”其他拼接单元的间隙。换句话说,即使单独的拼接单元520可能以API次序具有间隙,但当拼接单元520一起实施转储操作时,由拼接单元520所传送的基元包括所有基元而没有间隙。
当拼接单元520决定实施转储操作时,拼接单元520生成高速缓存像素块批次,并将高速缓存像素块批次向下游传送到交叉开关530,用于分布到屏幕空间管线354。针对每个屏幕空间管线354,屏幕空间工作分布交叉开关540接收包括基元的高速缓存像素块批次并针对每个高速缓存像素块将基元重新组织到API次序中。
为生成高速缓存像素块批次,每个拼接单元520接受并存储基元直到拼接单元520决定实施转储操作为止。每个高速缓存像素块批次与不同高速缓存像素块相关联并包括与该高速缓存像素块重叠的基元。在一个实施例中,拼接单元520通过将高速缓存像素块的边界与从包围框单元510所接收的包围框相比较来确定基元与哪个高速缓存像素块重叠。一经接收基元的批次,拼接单元520更新与基元的批次相关联的数个资源计数器。如果资源计数器中的任何一个指示资源已超过阈值,那么拼接单元520实施转储操作。
资源计数器配置为跟踪与由拼接单元520所接收的基元相关联的各种资源的利用率等级。资源是全局资源或局部资源二者之一。全局资源是由所有拼接单元520所共享的资源池。局部资源是由每个拼接单元520所独立维持的并且不共享。现在提供这类资源的数个示例。
一个类型的局部资源是用于存储基元的基元存储空间。每个拼接单元520包括被独立于用于其他拼接单元520的基元存储空间来维持的基元存储空间。当拼接单元520接收基元时,基元存储空间中的一些被基元占用。
一个类型的全局资源是顶点属性循环缓冲区。顶点属性循环缓冲区包括循环缓冲区条目,该循环缓冲区条目包括顶点属性。顶点属性循环缓冲区可用于图形子系统500中的单元以读取与基元相关联的顶点属性。顶点属性循环缓冲区中的每个循环缓冲区条目占用可变的存储空间量。每个拼接单元520维持由与拼接单元520中的基元相关联的循环缓冲区条目所占用的空间量的计数。
在一个实施例中,顶点属性循环缓冲区可被结构化为较小的逐世界空间管线(per-world-space-pipeline)循环缓冲区的集合。每个逐世界空间管线循环缓冲区与不同的世界空间管线352相关联。如果与逐世界空间管线循环缓冲区中的任何一个相关联的存储器空间超过阈值,那么相关联的拼接单元实施转储操作。
另一类型的全局资源是常量缓冲区表索引池。在应用编程接口级别,应用程序员被许可将常量与着色器程序相关联。不同的着色器程序可以与不同常量相关联。每个常量是当实施与着色器程序相关联的计算时可被访问的值。常量缓冲区表索引池是常量通过其与着色器程序相关联的全局资源。
当拼接单元520实施转储操作时,包括基元的高速缓存像素块批次到达交叉开关单元530,其将高速缓存像素块批次中的基元传送到屏幕空间工作分布交叉开关单元540。屏幕空间工作分布交叉开关540将每个高速缓存像素块内的基元重新组织到API次序中。屏幕空间工作分布交叉开关540将包括以API次序所布置的基元的高速缓存像素块批次输出到屏幕空间管线354用于由屏幕空间管线354处理。
由于图形子系统500的基本架构已被描述,所以提供图形子系统500的操作的示例。示例描绘基元流过图5中所描述的图形子系统500。
图6是当图形子系统500在运行时基元流过图形子系统500的例示。如所示,图形子系统500包括第一世界空间管线352(0)、第二世界空间管线352(1)、第三世界空间管线352(2)、第一拼接单元520(0)、第二拼接单元520(1)、第三拼接单元520(2)、交叉开关单元530(“XBAR”)、第一屏幕空间工作分布交叉开关540(0)、第二屏幕空间工作分布交叉开关540(1)、第三屏幕空间工作分布交叉开关540(2)、第一屏幕空间管线354(0)、第二屏幕空间管线354(1)以及第三屏幕空间管线354(2)。
在操作中,基元的第一批次602(0-1)被传送到第一世界空间管线352(0)并由第一世界空间管线352(0)所处理。随后,基元的第二批次602(1-1)被传送到第二世界空间管线352(1)并由第二世界空间管线352(1)所处理,并且基元的第三批次602(2-1)被传送到第三世界空间管线352(2)并由第三世界空间管线352(2)所处理。类似地,基元的第四批次602(0-0)、基元的第五批次602(1-0)和基元的第六批次602(2-0)被分别传送到第一世界空间管线352(0)、第二世界空间管线352(1)和第三世界空间管线352(2)。基元的批次602中的基元中的每一个由从“1”到“9”的数字所标示,指示基元的API次序,其中“1”指示以API次序的最早基元并且“9”指示以API次序的最晚基元。
第一世界空间管线352(0)处理两个批次:第一批次602(0-1)和第四批次602(0-0)。第一批次602(0-1)包括基元1和2,并且第四批次602(0-0)包括基元7。当第一世界空间管线352(0)已经完成处理第一批次602(0-1)时,第一世界空间管线352(0)请求第一拼接单元520(0)接受第一批次602(0-1)。第一拼接单元520(0)确定如果第一拼接单元520(0)要接受第一批次602(0-1)的话没有资源计数将在阈值之上,并且因此接受第一批次602(0-1)。
以API次序的基元的下一批次是第二批次602(1-1),在第二世界空间管线352(1)中。第二世界空间管线352(1)处理基元3和基元4并请求第二拼接单元520(1)接受基元3和基元4。第二拼接单元520(1)确定如果第二拼接单元520(1)要接受第二批次602(1-1)的话没有资源计数将在阈值之上,并且因此接受第二批次602(1-1)。在接受第二批次602(1-1)之后,处理以API次序的基元的下一批次。
基元的下一批次是第三批次602(2-1),在第三世界空间管线352(2)中。第三世界空间管线352(2)处理基元5和基元6并请求第三拼接单元520(2)处理基元5和基元6。第三拼接单元520(2)确定如果第三拼接单元520(2)要接受第三批次602(2-1)的话没有资源计数将在阈值之上,并且因此接受第三批次602(2-1)。在接受第三批次602(2-1)之后,处理以API次序的基元的下一批次。
因为处理基元604的次序是轮叫的,所以要被处理的下一批次是第一世界空间管线352(0)中的第四批次602(0-0),其包括基元7。第一世界空间管线352(0)处理第四批次602(0-0)并请求第一拼接单元520(0)接受第四批次602(0-0)。第一拼接单元520(0)确定如果第一拼接单元520(0)要接受第四批次602(0-0)的话没有资源计数将在阈值之上,并且因此接受第四批次602(0-0)。在接受第四批次602(0-0)之后,处理以API次序的基元的下一批次。
基元的下一批次是第五批次602(1-0),在第二世界空间管线352(1)中,其包括基元8。第二世界空间管线352(1)处理第五批次602(1-0)。第二拼接单元520(1)确定如果第二拼接单元520(1)要接受第五批次602(1-0)的话没有资源计数将在阈值之上,并且因此接受第五批次602(1-0)。在接受第五批次602(1-0)之后,处理以API次序的基元的下一批次。
基元的下一批次是第六批次602(2-0),在第三世界空间管线352(2)中,其包括基元9。第三世界空间管线352(2)处理第六批次602(2-0)。第三拼接单元520(2)确定如果第三拼接单元520(2)要接受第六批次602(2-0)的话没有资源计数将在阈值之上,并且因此接受第六批次602(2-0)。在接受第六批次602(2-0)之后,处理以API次序的基元的下一批次。
以API次序的基元的下一批次未在图6中示出。然而,当第一世界空间管线352(0)请求第一拼接单元520(0)接受基元的下一批次时,第一拼接单元520(0)确定资源计数将超过阈值并因此第一拼接单元520(0)决定实施转储操作。当第一拼接单元520(0)决定实施转储操作时,第一拼接单元520(0)将命令传送到第二拼接单元520(1)和第三拼接单元520(2)以使其也实施转储操作。因此,第一拼接单元520(0)、第二拼接单元520(1)和第三拼接单元520(2)全部实施转储操作。
当拼接单元520实施转储操作时,拼接单元520确定拼接单元520中的基元640与哪个高速缓存像素块410重叠。拼接单元520随后生成高速缓存像素块批次,其中每个高速缓存像素块批次包括与特定高速缓存像素块相关联的基元。
第一拼接单元520(0)确定基元1和基元7与高速缓存像素块0重叠,并且生成与高速缓存像素块0相关联的、包括基元1和基元7的高速缓存像素块批次。第一拼接单元520(0)还确定基元2与高速缓存像素块1重叠,并且生成与高速缓存像素块1相关联的、包括基元2的高速缓存像素块批次。最后,第一拼接单元520(0)确定第一拼接单元520(0)中没有基元与高速缓存像素块2重叠。
第二拼接单元520(1)确定基元3与高速缓存像素块0重叠,并且生成与高速缓存像素块0相关联的、包括基元3的高速缓存像素块批次。第二拼接单元520(1)还确定基元4和基元8与高速缓存像素块2重叠,以及第二拼接单元520(1)中没有基元与高速缓存像素块1重叠。第二拼接单元520(1)相应地生成高速缓存像素块批次并将高速缓存像素块批次传送到交叉开关单元530。
最后,第三拼接单元520(2)确定基元5和基元9与高速缓存像素块1重叠、基元6与高速缓存像素块2重叠、以及没有基元与高速缓存像素块0重叠。第三拼接单元520(2)相应地生成适当的高速缓存像素块批次并将高速缓存像素块批次传送到交叉开关单元530。
交叉开关单元530基于基元与哪个光栅像素块重叠,将基元传送到适当的屏幕空间工作分布交叉开关540。例如,交叉开关单元530将基元1传送到第一屏幕空间工作分布交叉开关540(0)以及第三屏幕空间工作分布交叉开关540(2),因为基元1与和第一屏幕空间管线相关联的光栅像素块420重叠。屏幕空间工作分布交叉开关540中所描绘的其他基元604如图6所示分布。
如所示,第一屏幕空间工作分布交叉开关540(0)和第三屏幕空间工作分布交叉开关540(2)中的基元中的一些不按照API次序。例如,在第一屏幕空间工作分布交叉开关540(0)中的高速缓存像素块0中,基元被排序如下:基元1,然后基元7,然后基元3。另外,在第三屏幕空间工作分布交叉开关540(2)中的高速缓存像素块2中,基元被排序如下:基元4,然后基元8,然后基元6。屏幕空间工作分布交叉开关540在每个高速缓存像素块中将基元重新排序到API次序中。在屏幕空间工作分布交叉开关540将这些基元重新排序之后,屏幕空间工作分布交叉开关540将基元传送到相应屏幕空间管线354。如所示,第一屏幕空间管线354(0)中的第一高速缓存像素块包括以基元1、然后基元3、然后基元7的次序的基元。类似地,在第三屏幕空间管线354(2)中的第三高速缓存像素块中,基元被排序为基元4,然后基元6,然后基元8。因此,每个高速缓存像素块中的所有基元均按照API次序。屏幕空间管线354以该次序处理基元。
图7是根据本发明的一个实施例的、用于实施分布式拼接式进行高速缓存的方法步骤的流程图。虽然结合图1-6描述方法步骤,但本领域技术人员将理解的是,配置为以任何次序实施方法步骤的任何系统落在本发明的范围内。
如所示,方法700开始于步骤702,其中世界空间管线352将基元的批次分布到与处理实体相关联的拼接单元520,该拼接单元520被标示为接收以API次序的基元的下一批次。在步骤704,接收基元的批次的拼接单元520将基元的批次中的每个基元与一个或多个高速缓存像素块相关联。在步骤706,拼接单元520基于所接收的基元更新一个或多个资源计数器。在步骤708,拼接单元确定是否资源计数器中的一个超过阈值。如果资源计数器不超过阈值,那么在步骤709,拼接单元520将令牌522传送到下一拼接单元520。随后,方法700返回步骤708。如果资源计数器确实超过阈值,那么方法前进到步骤710。
在步骤710,确定资源计数超过阈值的拼接单元520用信号通知所有其他拼接单元520以转储。在步骤712,每个拼接单元520将每个基元传送到一个或多个屏幕空间工作分布交叉开关540,该一个或多个屏幕空间工作分布交叉开关540与和这些基元重叠的光栅像素块420相关联。在步骤714,每个屏幕空间工作分布交叉开关540针对每个高速缓存像素块将基元重新组织到API次序中。从任何特定拼接单元520所接收的基元已经按照API次序。然而,从不同拼接单元520所接收的基元可能不按照API次序并将因此被重新布置到API次序中。在步骤716,屏幕空间工作分布交叉开关540将基元传送到屏幕空间管线354用于处理。
图8-10示出其中拼接单元820位于交叉开关单元530的屏幕空间侧的图形子系统800的配置。现在详细描述图形子系统800的架构和操作。
图8示出根据本发明的另一实施例的、配置为实现分布式拼接式进行高速缓存的图形子系统800。如所示,图形子系统800包括第一世界空间管线352(0)、第二世界空间管线352(1)、第三世界空间管线352(2)、第一包围框单元510(0)、第二包围框单元510(1)、第三包围框单元510(2)、交叉开关单元530(“XBAR”)、第一屏幕空间工作分布交叉开关540(0)、第二屏幕空间工作分布交叉开关540(1)、第三屏幕空间工作分布交叉开关540(2)、第一拼接单元820(0)、第二拼接单元820(1)、第三拼接单元820(2)、第一屏幕空间管线354(0)、第二屏幕空间管线354(1)以及第三屏幕空间管线354(2)。
以与图5中所描绘的图形子系统500类似的方式,图形子系统800包括屏幕空间管线354和世界空间管线352的至少三个实例用于增加的性能。世界空间管线352和屏幕空间管线354的功能性类似于图1-5中所公开的相应单元的功能性。然而,拼接单元820位于交叉开关单元530的屏幕空间侧,而不是位于交叉开关单元530的世界空间段。因此,拼接操作(即将基元与高速缓存像素块相关联并生成高速缓存像素块批次)不发生,直到在基元已被传送到交叉开关单元530的屏幕空间侧之后以及在已由屏幕空间工作分布交叉开关540将来自世界空间管线352的基元布置到API次序中之后为止。
第一世界空间管线352(0)、第二世界空间管线352(1)和第三世界空间管线352(2)以与上文关于图1-4所描述的类似的方式发挥作用。换句话说,第一世界空间管线352(0)、第二世界空间管线352(1)和第三世界空间管线352(2)响应于从前端单元所接收的工作而生成基元。
世界空间管线352将这些基元通过交叉开关单元530到传送一个或多个屏幕空间管线354,该一个或多个屏幕空间管线354与和这些基元重叠的光栅像素块相关联。与屏幕空间管线354相关联的屏幕空间工作分布交叉开关540接收基元,将基元重新排序到API次序中,并且将基元提供到拼接单元820。
每个拼接单元820从屏幕空间工作分布交叉开关540接收基元并基于基元生成高速缓存像素块批次。拼接单元820通过聚合基元来生成高速缓存像素块批次,这些基元与和高速缓存像素块批次相关联的高速缓存像素块重叠。拼接单元820可通过将从包围框单元510所接收的包围框与高速缓存像素块的边界相比较来确定哪些基元与特定高速缓存像素块重叠。正如同图5中所描述的拼接单元520,图8中所描绘的拼接单元820针对局部和全局资源类型二者维持资源计数。每个拼接单元820独立于每个其他拼接单元820来维持针对局部资源的资源计数。当一个拼接单元820确定资源计数溢出时,拼接单元820实施转储操作。不同于图5所描绘的拼接单元520,图8中所描绘的拼接单元820在当最初的拼接单元820实施转储操作时,不将致使其他拼接单元820实施转储操作的信号传送到那些拼接单元。每个拼接单元820能够独立地实施转储操作,因为不同于图5所描绘的拼接单元520,不存在形成间隙的可能性。换句话说,世界空间管线352简单地将基元传送到其为基元所预定目的地的屏幕空间管线354。仅与特定屏幕空间管线354相关联的基元被传送到任何特定拼接单元820,使得拼接单元820具有在任何特定的基元序列中所需要的所有基元。
因为拼接单元820是从世界空间管线352和包围框单元510跨过交叉开关单元530的,所以交叉开关单元530将包围框传送到拼接单元820以许可拼接单元820确定基元与哪些高速缓存像素块相关联。交叉开关单元530还将其他有用信息传送到拼接单元820。例如,交叉开关单元530将由与基元相关联的循环缓冲区条目所占用的空间量传送到拼接单元820以许可拼接单元820更新与循环缓冲区相关联的资源计数器。交叉开关单元530或其他单元还可将与上文关于图5所讨论的局部和全局资源相关的附加信息传送到拼接单元820,以许可拼接单元820更新相关联的资源计数器。拼接单元820将拼接单元820接收的基元组织到高速缓存像素块批次中,每个高速缓存像素块批次包括以API次序的基元。
由于已描述图形子系统800的基本架构,所以提供图形子系统800的操作的示例。示例描绘基元流过图8所描述的图形子系统800。
图9是当图形子系统800在运行时基元流过图形子系统800的例示。如所示,图形子系统800包括第一世界空间管线352(0)、第二世界空间管线352(1)、第三世界空间管线352(2)、交叉开关单元530(“XBAR”)、第一屏幕空间工作分布交叉开关540(0)、第二屏幕空间工作分布交叉开关540(1)、第三屏幕空间工作分布交叉开关540(2)、第一拼接单元820(0)、第二拼接单元820(1)、第三拼接单元820(2)、第一屏幕空间管线354(0)、第二屏幕空间管线354(1)以及第三屏幕空间管线354(2)。
基元的第一批次902(0-1)被传送到第一世界空间管线352(0)并由第一世界空间管线352(0)所处理。基元的第二批次902(1-1)被传送到第二世界空间管线352(1)并由第二世界空间管线352(1)所处理,并且基元的第三批次902(2-1)被传送到第三世界空间管线352(2)并由第三世界空间管线352(2)所处理。类似地,基元的第四批次902(0-0)、基元的第五批次902(1-0)和基元的第六批次902(2-0)被分别传送到第一世界空间管线352(0)、第二世界空间管线352(1)和第三世界空间管线352(2)。基元的批次902中的基元中的每一个由从“1”到“9”的数字所标示,指示基元的API次序,其中“1”指示以API次序的最早基元并且“9”指示以API次序的最晚基元。
在世界空间管线352处理基元并将基元传送到交叉开关单元530之后,屏幕空间工作分布交叉开关540接收预定目的地为屏幕空间管线354的基元。屏幕空间工作分布交叉开关540将所接收的基元重新排序到API次序中。第一屏幕空间工作分布交叉开关540(0)接收基元1、基元7、基元3和基元6,并且将基元重新排序到API次序中。第二屏幕空间工作分布交叉开关540(1)接收基元1、基元4、基元8、基元5和基元6,并将基元重新排序到API次序中。第三屏幕空间工作分布交叉开关540(2)接收基元2、基元7、基元3、基元6和基元9,并将基元重新排序到API次序中。每个屏幕空间工作分布交叉开关540还接收与每个基元904相关联的包围框906并将包围框906传递到相应拼接单元820。如所示,拼接单元820中的每一个中的基元904按照API次序。
拼接单元820将基元904组织到高速缓存像素块批次908中并将高速缓存像素块批次传送到屏幕空间管线354用于处理。第一屏幕空间管线354(0)中的高速缓存像素块批次包括第一高速缓存像素块批次908、第二高速缓存像素块批次908和第三高速缓存像素块批次908,第一高速缓存像素块批次908包括基元1和基元3,第二高速缓存像素块批次908包括基元6,第三高速缓存像素块批次908包括基元7。第二屏幕空间管线354(1)包括第一高速缓存像素块批次908、第二高速缓存像素块批次908和第三高速缓存像素块批次908,第一高速缓存像素块批次908包括基元1,第二高速缓存像素块批次908包括基元5、基元6和基元8,第三高速缓存像素块批次908包括基元4。最后,第三屏幕空间管线354(2)包括第一高速缓存像素块批次908、第二高速缓存像素块批次908和第三高速缓存像素块批次908,第一高速缓存像素块批次908包括基元2,第二高速缓存像素块批次908包括基元9,第三高速缓存像素块批次908包括基元3、基元6、和基元7。高速缓存像素块批次908中的每一个中的所有基元按照API次序。
图10是根据本发明的一个实施例的、用于分布式拼接式进行高速缓存的方法步骤的流程图。虽然已结合图1-4和8-9描述方法步骤,但本领域技术人员将理解的是,配置为以任何次序实施方法步骤的任何系统在本发明的范围内。
如所示,方法1000开始于步骤1002,其中包围框单元510从世界空间管线352接收基元。在步骤1004中,包围框单元510确定与和基元重叠的光栅像素块相关联的一个或多个屏幕空间管线354。在步骤1006,交叉开关单元530将基元传送到一个或多个拼接单元,经过屏幕空间工作分布交叉开关540,其将基元重新排序到API次序中。当拼接单元820接收基元时,拼接单元820更新与基元相关联的资源计数器。在步骤1010,拼接单元820确定是否资源计数器中的一个指示资源超过阈值。如果资源超过阈值,那么方法前进到步骤1012。在步骤1012中,拼接单元820实施转储操作,其中拼接单元820将基元传送到屏幕空间管线354并针对拼接单元820重置所有资源计数器。如果资源不超过阈值,那么方法返回到步骤1002。
总而言之,公开了用于在包括多个处理实体并实现拼接式进行高速缓存的高度并行图形处理架构中处理基元的技术。这类高度并行架构实现世界空间管线和屏幕空间管线的多个实例。交叉开关将基元从世界空间管线传送到屏幕空间管线。
在第一实施例中,拼接单元存在于交叉开关的世界空间侧。针对每个世界空间管线提供一个拼接单元。每个拼接单元累积从相应世界空间管线所接收的基元直到拼接单元做出实施转储操作的确定为止。特定拼接单元可在当资源计数器指示与特定资源相关联的资源计数超过阈值时决定实施转储操作。当一个拼接单元实施转储操作时,该拼接单元将信号传送到所有其他拼接单元,使那些拼接单元也实施转储操作。
每个拼接单元通过以高速缓存像素块次序将基元传送到屏幕空间管线来实施转储操作。在每个屏幕空间管线内,屏幕空间工作分布交叉开关将基元重新组织到API次序中,用于由处于屏幕空间工作分布交叉开关下游的屏幕空间管线中的单元进行后续处理。
所公开的方法的一个优点是以应用编程接口次序在高度并行拼接架构中处理基元。另一优点是以高速缓存像素块次序处理基元,其减少存储器带宽消耗并改进高速缓存存储器的利用率。进一步的优点是多个拼接单元不实施冗余的工作。换句话说,因为每个基元仅由一个世界空间管线所处理,所以每个基元仅被提供到单个拼接单元。因此,每个基元不需要由多于一个拼接单元来处理。
在第二实施例中,拼接单元存在于交叉开关的屏幕空间侧。针对每个屏幕空间管线提供一个拼接单元。另外,在交叉开关和拼接单元之间提供屏幕空间工作分布交叉开关。针对每个屏幕空间管线提供一个屏幕空间工作分布交叉开关。交叉开关单元将基元传送到屏幕空间工作分布交叉开关,其将基元重新布置到应用编程接口次序中并将那些基元传送到相应拼接单元。每个拼接单元累积从相关联的屏幕空间工作分布交叉开关单元所接收的基元直到拼接单元做出实施转储操作的确定为止。拼接单元可在当资源计数器指示与特定资源相关联的资源计数超过阈值时做出这类确定。进一步地,每个拼接单元确定何时独立于其他拼接单元来实施转储操作。也就是说,针对一个拼接单元来实施转储操作的决策不使其他拼接单元实施转储操作。每个拼接单元通过以高速缓存像素块次序将基元传送到相应屏幕空间管线中的单元来实施转储操作。因为拼接单元以应用编程接口次序接收基元,所以在拼接单元实施转储操作之后不需要基元的进一步重新排序。
所公开的方法的一个优点是以应用编程接口次序在高度并行拼接架构中处理基元。另一优点是因为每个拼接单元与独立的光栅像素块集相关联,所以每个拼接单元可独立地操作。更具体地,每个拼接单元被指派特定的光栅像素块集,该特定的光栅像素块集不与被指派到任何其他拼接单元的光栅像素块重叠。因此,每个拼接单元基于由拼接单元所接收的基元而不基于由其他拼接单元所接收的基元进行操作。进一步的优点是以高速缓存像素块次序处理基元,其减少存储器带宽消耗并改进高速缓存存储器的利用率。
本发明的一个实施例可被实施为与计算机系统一起使用的程序产品。该程序产品的程序定义实施例的各功能(包括本文中描述的方法)并且可以被包含在各种计算机可读存储介质上。示例性计算机可读存储介质包括但不限于:(i)不可写的存储介质(例如,计算机内的只读存储器设备,诸如可由光盘只读存储器(CD-ROM)驱动器读取的CD-ROM盘、闪存、只读存储器(ROM)芯片或任何类型的固态非易失性半导体存储器),在其上存储永久性信息;和(ii)可写的存储介质(例如,磁盘驱动器或硬盘驱动器内的软盘或者任何类型的固态随机存取半导体存储器),在其上存储可更改的信息。
以上已参照具体实施例对本发明进行了描述。然而,本领域普通技术人员将理解的是,可对此做出各种修改和改变而不脱离如随附权利要求书中所阐述的本发明的较宽精神和范围。因此,前面的描述以及附图应被视为是例示性而非限制性的意义。
因此,本发明的实施例的范围在下面的权利要求中阐述。
Claims (11)
1.一种图形子系统,包括:
多个世界空间管线,其中每个世界空间管线实现在不同的处理实体中并耦连到交叉开关单元;以及
多个屏幕空间管线,其中每个屏幕空间管线实现在不同的处理实体中并耦连到多个拼接单元中的不同的相应拼接单元,
其中每个拼接单元配置为从所述交叉开关单元接收基元,将所述基元聚合到一个或多个高速缓存像素块批次中,并将所述一个或多个高速缓存像素块批次传送到与所述拼接单元相对应的所述屏幕空间管线。
2.根据权利要求1所述的图形子系统,其中被包括在所述多个拼接单元中的第一拼接单元与被包括在所述多个屏幕空间管线中的第一屏幕空间管线相关联。
3.根据权利要求2所述的图形子系统,其中所述第一拼接单元配置为确定资源计数超过阈值。
4.根据权利要求3所述的图形子系统,其中:
第一高速缓存像素块批次包括与第一高速缓存像素块重叠的多个基元;以及
所述第一拼接单元进一步配置为一经确定所述资源计数超过所述阈值则实施转储操作,通过:
通过将一个或多个基元与所述第一高速缓存像素块相比较,生成所述第一高速缓存像素块批次,
确定所述一个或多个基元中的每一个与所述第一高速缓存像素块相交,
将所述一个或多个基元包括在所述第一高速缓存像素块批次中,以及
重置所述资源计数,
其中实施所述转储操作不使被包括在所述多个拼接单元中的其他拼接单元也实施转储操作。
5.根据权利要求4所述的图形子系统,其中所述资源计数是在顶点属性循环缓冲区中所占用的总空间量的指示,所述顶点属性循环缓冲区配置为包括多个循环缓冲区条目,每个循环缓冲区条目包括与由所述多个屏幕空间管线所处理的多个基元相关联的顶点属性。
6.根据权利要求5所述的图形子系统,进一步包括资源计数器,所述资源计数器配置为按第一循环缓冲区条目大小增量所述总空间量,所述第一循环缓冲区条目大小与由所述多个屏幕空间管线所处理所述多个基元中的第一基元相关联。
7.根据权利要求6所述的图形子系统,其中:
所述交叉开关进一步配置为将所述第一循环缓冲区条目大小从所述多个世界空间管线中的世界空间管线传送到所述第一拼接单元;
所述第一拼接单元进一步包括所述资源计数器;以及
所述第一拼接单元进一步配置为:
一经接收所述第一基元则增量所述资源计数器,以及
当所述总空间量超过所述阈值时实施所述转储操作。
8.根据权利要求4所述的图形子系统,其中所述多个屏幕空间管线包括与第一光栅像素块集相关联的第一屏幕空间管线,所述第一光栅像素块集包括与第一基元重叠的、被包括在所述第一高速缓存像素块中的一个或多个光栅像素块。
9.根据权利要求8所述的图形子系统,其中所述交叉开关单元配置为将所述第一基元传送到所述第一屏幕空间管线。
10.根据权利要求9所述的图形子系统,进一步包括第一屏幕空间工作分布交叉开关,所述第一屏幕空间工作分布交叉开关与被包括在所述多个屏幕空间管线中的第一屏幕空间管线相关联并配置为从所述交叉开关单元接收基元,将所接收的基元在高速缓存像素块基础上重新排序到应用编程接口次序中,并且将所重新排序的基元传送到与所述第一屏幕空间工作分布交叉开关相关联的、所述多个拼接单元中的第一拼接单元。
11.根据权利要求7所述的图形子系统,其中所述资源计数器配置为跟踪全局资源,被包括在所述多个拼接中的第二拼接单元包括配置为跟踪所述全局资源的第二资源计数器,并且转储所述拼接单元使所述资源计数器重置但不使所述第二资源计数器重置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261719271P | 2012-10-26 | 2012-10-26 | |
US61/719,271 | 2012-10-26 | ||
US14/058,053 US10032243B2 (en) | 2012-10-26 | 2013-10-18 | Distributed tiled caching |
US14/058,053 | 2013-10-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103793876A true CN103793876A (zh) | 2014-05-14 |
Family
ID=50479795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310516622.5A Pending CN103793876A (zh) | 2012-10-26 | 2013-10-28 | 分布式拼接式进行高速缓存 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10032243B2 (zh) |
CN (1) | CN103793876A (zh) |
DE (1) | DE102013017640B4 (zh) |
TW (1) | TW201432609A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219424A (zh) * | 2014-09-10 | 2014-12-17 | 北京淳中视讯科技有限公司 | 图像拼接处理器的制备方法 |
CN104954388A (zh) * | 2015-07-14 | 2015-09-30 | 电子科技大学 | 面向视频流数据的分布式多内存副本存储系统及方法 |
CN106897043A (zh) * | 2017-02-28 | 2017-06-27 | 广州偕作信息科技有限公司 | 应用于拼接屏的数据超高分显示系统及显示方法 |
CN107924306A (zh) * | 2015-08-14 | 2018-04-17 | 高通股份有限公司 | 使用simd指令的表查找 |
CN112948336A (zh) * | 2021-03-30 | 2021-06-11 | 联想凌拓科技有限公司 | 数据加速方法及缓存单元、电子设备及存储介质 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10169906B2 (en) | 2013-03-29 | 2019-01-01 | Advanced Micro Devices, Inc. | Hybrid render with deferred primitive batch binning |
US10957094B2 (en) | 2013-03-29 | 2021-03-23 | Advanced Micro Devices, Inc. | Hybrid render with preferred primitive batch binning and sorting |
KR102109130B1 (ko) * | 2013-08-12 | 2020-05-08 | 삼성전자주식회사 | 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들 |
US9612833B2 (en) * | 2014-02-28 | 2017-04-04 | Intel Corporation | Handling compressed data over distributed cache fabric |
GB2526598B (en) * | 2014-05-29 | 2018-11-28 | Imagination Tech Ltd | Allocation of primitives to primitive blocks |
GB2524121B (en) | 2014-06-17 | 2016-03-02 | Imagination Tech Ltd | Assigning primitives to tiles in a graphics processing system |
GB2532495B (en) * | 2014-11-21 | 2018-05-02 | Advanced Risc Mach Ltd | Graphics processing systems |
US9659407B2 (en) * | 2015-01-26 | 2017-05-23 | MediaTek Singapore, Pte. Lte. | Preemptive flushing of spatial selective bins for deferred graphics processing |
US10535114B2 (en) * | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
US10430989B2 (en) * | 2015-11-25 | 2019-10-01 | Nvidia Corporation | Multi-pass rendering in a screen space pipeline |
GB2546810B (en) | 2016-02-01 | 2019-10-16 | Imagination Tech Ltd | Sparse rendering |
US10120187B2 (en) | 2016-02-18 | 2018-11-06 | Nvidia Corporation | Sub-frame scanout for latency reduction in virtual reality applications |
US10455211B2 (en) * | 2017-05-25 | 2019-10-22 | Advanced Micro Devices, Inc. | Method and apparatus of image processing |
GB2578320B (en) | 2018-10-23 | 2023-07-05 | Advanced Risc Mach Ltd | Graphics processing |
WO2021034772A1 (en) * | 2019-08-18 | 2021-02-25 | Nvidia Corporation | Ray-tracing for auto exposure |
US20210398349A1 (en) * | 2020-06-22 | 2021-12-23 | Advanced Micro Devices, Inc. | Fine grained replay control in binning hardware |
US20230298261A1 (en) * | 2022-03-21 | 2023-09-21 | Advanced Micro Devices, Inc. | Distributed visibility stream generation for coarse grain binning |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040100471A1 (en) * | 2002-11-27 | 2004-05-27 | Leather Mark M. | Dividing work among multiple graphics pipelines using a super-tiling technique |
US20110090220A1 (en) * | 2009-10-15 | 2011-04-21 | Molnar Steven E | Order-preserving distributed rasterizer |
US20120229464A1 (en) * | 2011-03-09 | 2012-09-13 | Steven Fishwick | Compression of a tessellated primitive index list in a tile rendering system |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6697063B1 (en) | 1997-01-03 | 2004-02-24 | Nvidia U.S. Investment Company | Rendering pipeline |
US7102646B1 (en) | 1997-11-25 | 2006-09-05 | Nvidia U.S. Investment Company | Demand-based memory system for graphics applications |
US6856320B1 (en) | 1997-11-25 | 2005-02-15 | Nvidia U.S. Investment Company | Demand-based memory system for graphics applications |
US6323860B1 (en) | 1999-03-17 | 2001-11-27 | Nvidia Corporation | Circuit and method for deferring the binding of render states to primitives in a graphics system |
US6535209B1 (en) | 1999-03-17 | 2003-03-18 | Nvidia Us Investments Co. | Data stream splitting and storage in graphics data processing |
US6791559B2 (en) | 2001-02-28 | 2004-09-14 | 3Dlabs Inc., Ltd | Parameter circular buffers |
US7317718B1 (en) | 2002-12-06 | 2008-01-08 | Juniper Networks, Inc. | Flexible counter update and retrieval |
GB0524804D0 (en) | 2005-12-05 | 2006-01-11 | Falanx Microsystems As | Method of and apparatus for processing graphics |
US8087029B1 (en) | 2006-10-23 | 2011-12-27 | Nvidia Corporation | Thread-type-based load balancing in a multithreaded processor |
GB2452300B (en) | 2007-08-30 | 2009-11-04 | Imagination Tech Ltd | Predicated geometry processing in a tile based rendering system |
US8605102B1 (en) * | 2009-10-08 | 2013-12-10 | Nvidia Corporation | Rasterization tile coalescer and reorder buffer |
US8558842B1 (en) * | 2009-10-14 | 2013-10-15 | Nvidia Corporation | Parallel duplicate primitive vertex detection and batching |
-
2013
- 2013-10-18 US US14/058,053 patent/US10032243B2/en active Active
- 2013-10-25 TW TW102138732A patent/TW201432609A/zh unknown
- 2013-10-25 DE DE102013017640.9A patent/DE102013017640B4/de active Active
- 2013-10-28 CN CN201310516622.5A patent/CN103793876A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040100471A1 (en) * | 2002-11-27 | 2004-05-27 | Leather Mark M. | Dividing work among multiple graphics pipelines using a super-tiling technique |
US20110090220A1 (en) * | 2009-10-15 | 2011-04-21 | Molnar Steven E | Order-preserving distributed rasterizer |
US20120229464A1 (en) * | 2011-03-09 | 2012-09-13 | Steven Fishwick | Compression of a tessellated primitive index list in a tile rendering system |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104219424A (zh) * | 2014-09-10 | 2014-12-17 | 北京淳中视讯科技有限公司 | 图像拼接处理器的制备方法 |
CN104954388A (zh) * | 2015-07-14 | 2015-09-30 | 电子科技大学 | 面向视频流数据的分布式多内存副本存储系统及方法 |
CN104954388B (zh) * | 2015-07-14 | 2018-03-20 | 电子科技大学 | 面向视频流数据的分布式多内存副本存储系统及方法 |
CN107924306A (zh) * | 2015-08-14 | 2018-04-17 | 高通股份有限公司 | 使用simd指令的表查找 |
CN107924306B (zh) * | 2015-08-14 | 2021-07-20 | 高通股份有限公司 | 使用simd指令的表查找 |
CN106897043A (zh) * | 2017-02-28 | 2017-06-27 | 广州偕作信息科技有限公司 | 应用于拼接屏的数据超高分显示系统及显示方法 |
CN112948336A (zh) * | 2021-03-30 | 2021-06-11 | 联想凌拓科技有限公司 | 数据加速方法及缓存单元、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
TW201432609A (zh) | 2014-08-16 |
US10032243B2 (en) | 2018-07-24 |
US20140118364A1 (en) | 2014-05-01 |
DE102013017640A1 (de) | 2014-04-30 |
DE102013017640B4 (de) | 2022-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103793876A (zh) | 分布式拼接式进行高速缓存 | |
CN103793893B (zh) | 采用限缓冲区处理的世界和屏幕空间管线间基元重新排序 | |
US10706608B2 (en) | Tree traversal with backtracking in constant time | |
CN109978751A (zh) | 多gpu帧渲染 | |
CN103886547A (zh) | 用于存储共享顶点的技术 | |
US11106261B2 (en) | Optimal operating point estimator for hardware operating under a shared power/thermal constraint | |
CN104050706B (zh) | 用于低功率图形渲染的像素着色器旁路 | |
US8072460B2 (en) | System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture | |
CN103810669A (zh) | 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块 | |
CN110008009B (zh) | 在运行时绑定常量以提高资源利用率 | |
TWI498819B (zh) | 執行成型記憶體存取作業的系統和方法 | |
CN110766778B (zh) | 使用散列执行并行路径空间滤波的方法和系统 | |
CN104036537A (zh) | 多分辨率一致光栅化 | |
CN111210498B (zh) | 降低多边形网格的细节水平以减少被渲染几何的复杂度 | |
CN103810743A (zh) | 在上游着色器中设置下游渲染状态 | |
US9953455B2 (en) | Handling post-Z coverage data in raster operations | |
CN103885752A (zh) | 多线程处理单元中可编程的混合 | |
CN103886538A (zh) | 用于存储共享顶点的技术 | |
CN104050033A (zh) | 用于有索引的屏障的硬件调度的系统和方法 | |
CN103886634A (zh) | 利用每像素着色器线程的高效超级采样 | |
CN103885893A (zh) | 用于访问内容寻址存储器的技术 | |
CN103729167A (zh) | 用于改进多线程处理单元中的性能的技术 | |
CN103460188A (zh) | 用于基于活跃分析的再具体化以减少寄存器不足并提高并行度的技术 | |
CN103885902A (zh) | 用于经由纹理硬件实施存储器访问操作的技术 | |
US11663767B2 (en) | Power efficient attribute handling for tessellation and geometry shaders |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140514 |
|
RJ01 | Rejection of invention patent application after publication |