CN101371247A - 用于图形处理器的并行阵列结构 - Google Patents
用于图形处理器的并行阵列结构 Download PDFInfo
- Publication number
- CN101371247A CN101371247A CNA2006800477391A CN200680047739A CN101371247A CN 101371247 A CN101371247 A CN 101371247A CN A2006800477391 A CNA2006800477391 A CN A2006800477391A CN 200680047739 A CN200680047739 A CN 200680047739A CN 101371247 A CN101371247 A CN 101371247A
- Authority
- CN
- China
- Prior art keywords
- pixel
- processing
- data
- core
- frame buffer
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 97
- 239000000872 buffer Substances 0.000 claims abstract description 61
- 238000005192 partition Methods 0.000 claims abstract description 15
- 238000009826 distribution Methods 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 22
- 238000009877 rendering Methods 0.000 description 24
- 238000003860 storage Methods 0.000 description 18
- 230000008878 coupling Effects 0.000 description 11
- 238000010168 coupling process Methods 0.000 description 11
- 238000005859 coupling reaction Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 10
- 238000004040 coloring Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000005286 illumination Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000008676 import Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000001143 conditioned effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 241001465754 Metazoa Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8015—One dimensional arrays, e.g. rings, linear arrays, buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/363—Graphics controllers
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/06—Use of more than one graphics processor to process data before displaying to one or more screens
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/122—Tiling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本发明提供一种用于图形处理器的并行阵列结构,其包括:多线程核心阵列,其包括多个处理群集,每一处理群集包括至少一个可操作以执行像素着色器程序的处理核心,所述像素着色器程序从覆盖数据产生像素数据;光栅化器,其经配置以针对多个像素的每一者产生覆盖数据;以及像素分配逻辑,其经配置以将所述覆盖数据从所述光栅化器传递到所述多线程核心阵列中的所述处理群集中的一者。所述像素分配逻辑至少部分基于第一像素在图像区域中的位置而选择将所述第一像素的所述覆盖数据传递到其的所述处理群集中的一者。所述处理群集可在没有交叉开关的情况下直接映射到所述帧缓冲器分区,使得将像素数据直接从所述处理群集传递到适当的帧缓冲器分区。或者,耦合到所述处理群集的每一者的交叉开关经配置以将像素数据从所述处理群集传递到具有多个分区的帧缓冲器。所述交叉开关经配置以使得由所述处理群集的任一者产生的像素数据可传递到所述帧缓冲器分区中的任一者。
Description
相关申请案的交叉参考
本申请案主张2005年12月19日申请的第60/752,265号美国临时申请案的优先权,所述临时申请案的全文出于所有目的而以引用的方式并入本文中。
本申请案与下列共同转让的共同待决的美国专利申请案相关:2005年11月29日申请的第11/290,303号申请案;2005年11月29日申请的第11/289,828号申请案;和2005年12月19日申请的第11/311,993号申请案,所述申请案的全文均出于所有目的而以引用的方式并入本文中。
技术领域
本发明大体上涉及图形处理器,且明确地说,涉及用于图形处理器的并行阵列结构。
背景技术
当需要执行多个独立计算时,并行处理技术会增强处理器或多处理器***的处理量。可将计算划分成通过程序定义的若干任务,其中将每一任务作为单独线程执行。(如本文使用的,“线程”大体上是指使用特定输入数据来执行特定程序的实例,且“程序”是指从输入数据产生结果数据的可执行指令序列。)使用处理器内部的不同处理引擎来同时执行并行线程。
许多现有处理器结构支持并行处理。最早的此类结构使用联网在一起的多个离散处理器。更近一些,已经在单个芯片上制作了多个处理核心。采用各种方式控制这些核心。在称为多指令多数据(MIMD)机器的一些实例中,每一核心独立地取出其自己的指令并将所述指令发布到其自己的处理引擎(或多个引擎)。在称为单指令多数据(SIMD)机器的其它实例中,核心具有单个指令单元,其将同一指令并行发布到多个处理引擎,所述多个处理引擎对不同输入操作数执行所述指令。SIMD机器通常在芯片面积方面具有优点(因为仅需要一个指令单元)且因此在成本方面具有优点;缺点是并行性只能使得可同时执行同一指令的多个实例。
常规的图形处理器使用非常宽的SIMD结构来实现图像渲染应用中的高处理量。此类应用通常需要对大量物体(顶点或像素)执行相同程序(顶点着色器或像素着色器)。由于每一物体是独立于所有其它物体但使用同一操作序列加以处理的,所以SIMD结构以合理的成本提供相当可观的性能增强。通常,GPU包括一个执行顶点着色器程序的SIMD核心和另一个执行像素着色器程序的具有可比大小的SIMD核心。在高端GPU中,有时提供多组SIMD核心以支持甚至更高程度的并行性。
这些设计具有若干缺点。首先,单独设计并测试用于顶点和着色器程序的单独处理核心,从而常常导致至少一些重复劳动。其次,顶点操作与像素操作之间的图形处理负荷的划分在很大程度上因应用而不同。如此项技术中所已知的,可通过下列方式向图像添加细节:使用许多小基元,这会增加顶点着色器核心的负荷;和/或使用复合的纹理映射与像素着色操作,这会增加像素着色器核心的负荷。在大多数情况下,负荷并未得到完美平衡,且一个核心或另一个核心并未得到充分利用。举例来说,在像素密集应用中,像素着色器核心可以最大处理量运行,而顶点核心处于闲置,等待已经处理的顶点移动进入管线的像素着色器级。相反,在顶点密集应用中,顶点着色器核心可以最大处理量运行,而像素核心处于闲置,等待新顶点得以供应。在任一情况下,实际上浪费了可用处理循环的某部分。
因此,将需要提供一种图形处理器,其可适应于不同着色器上的变化负荷,同时维持较高程度的并行性。
发明内容
本发明实施例提供图形处理器,其使用可缩放多线程核心阵列以在渲染操作期间执行顶点着色器程序、几何着色器程序和/或像素着色器程序的任何组合。所述核心阵列包括布置成一个或一个以上群集的许多多线程处理核心,其中同一群集中的核心由共享核心接口控制。
在待执行像素着色器程序的实施例中,有利地基于像素在图像区域内的位置而选择待在其中执行所述程序的群集或核心。在一个实施例中,将屏幕分成瓦片,其中将每一瓦片指派给处理群集中的一者或另一者(或指派给处理群集内的特定核心)。指派给给定处理群集或核心的瓦片有利地散布在整个屏幕上,以提供近似负荷平衡。
在一些实施例中,处理核心或群集包括光栅操作单元,其将新近产生的像素数据与帧缓冲器中的现有数据集成。可将帧缓冲器分割为与处理群集的数目匹配,其中每一群集将其全部数据写入到一个分区中。在其它实施例中,帧缓冲器的分区数目不需要与使用中的处理群集的数目匹配。交叉开关或类似电路结构可提供处理群集与帧缓冲器分区之间的可配置耦合,使得可将任何处理群集耦合到任何帧缓冲器分区;在一些实施例中,省略所述交叉开关,从而改进存储器局域性。
下列详细描述连同附图将提供对本发明的性质和优点的更好了解。
附图说明
图1是根据本发明实施例的计算机***的方框图;
图2是根据本发明实施例的可在图形处理器中实施的渲染管线的方框图;
图3是根据本发明实施例的用于图形处理器的多线程核心阵列的方框图;
图4说明根据本发明实施例的将图像区域分成许多瓦片的一种可能瓦片分割;
图5是说明根据本发明实施例的处理群集与帧缓冲器之间的耦合的简化方框图;以及
图6是说明根据本发明另一实施例的处理群集与帧缓冲器之间的耦合的简化方框图。
具体实施方式
***概述
图1是根据本发明实施例的计算机***100的方框图。计算机***100包括中央处理单元(CPU)102和***存储器104,其经由包括存储器桥接器105的总线路径进行通信。存储器桥接器105经由总线路径106而连接到I/O(输入/输出)桥接器107。I/O桥接器107从一个或一个以上用户输入装置108(例如,键盘、鼠标)接收用户输入,并经由总线106和存储器桥接器105将所述输入转发到CPU102。在基于像素的显示装置110(例如,常规的基于CRT或LCD的监视器)上提供视觉输出,所述显示装置在图形子***112的控制下操作,所述图形子***112经由总线113而耦合到存储器桥接器105。***盘114也连接到I/O桥接器107。开关116提供I/O桥接器107与其它组件(例如网络适配器118和各种插卡120、121)之间的连接。包括USB或其它端口连接、CD驱动器、DVD驱动器等的其它组件(未明确展示)也可连接到I/O桥接器107。可使用总线协议(例如PCI(***组件互连)、PCI Express(PCI-E)、AGP(加速图形端口)、超级传送(HyperTransport)或任何其它总线协议)来实施各种组件间的总线连接,且不同装置之间的连接可使用不同协议,如此项技术中所已知的。
图形处理子***112包括图形处理单元(GPU)122和图形存储器124,其可(例如)使用一个或一个以上集成电路装置(例如可编程处理器、专用集成电路(ASIC)和存储器装置)来实施。GPU 122可经配置以执行与从由CPU 102和/或***存储器104经由存储器桥接器105和总线113供应的图形数据产生像素数据、与图形存储器124交互以存储并更新像素数据等相关的各种任务。举例来说,GPU 122可从由在CPU 102上执行的各种程序提供的2D或3D场景数据产生像素数据。GPU 122还可在具有或不具有进一步处理的情况下将经由存储器桥接器105接收的像素数据存储到图形存储器124。GPU 122还包括扫描输出模块,其经配置以将像素数据从图形存储器124传递到显示装置110。
CPU 102作为***100的主处理器进行操作,控制并协调其它***组件的操作。明确地说,CPU 102发布控制GPU 122的操作的命令。在一些实施例中,CPU 102将用于GPU 122的命令流写入到命令缓冲器中,所述缓冲器可位于***存储器104、图形存储器124或可由CPU 102和GPU 122两者存取的另一存储位置中。GPU 122从所述命令缓冲器读取命令流,并与CPU 102的操作不同步地执行命令。所述命令可包括用于产生图像的常规渲染命令以及通用计算命令,所述通用计算命令使得在CPU 102上执行的应用程序能够利用GPU 122的计算功率以进行可能与图像产生不相关的数据处理。
将了解,本文所示的***是说明性的且能够作出多种改变和修改。可根据需要修改总线拓扑结构,其中包括桥接器的数目和布置。举例来说,在一些实施例中,***存储器104直接连接到CPU 102而非通过桥接器连接到CPU 102,且其它装置经由存储器桥接器105和CPU 102而与***存储器104通信。在其它替代拓扑结构中,图形子***112连接到I/O桥接器107,而非连接到存储器桥接器105。在另外实施例中,I/O桥接器107和存储器桥接器105可集成到单个芯片中。本文所示的特定组件是可选的;举例来说,可支持任何数目的插卡或***装置。在一些实施例中,去除开关116,且网络适配器118和插卡120、121直接连接到I/O桥接器107。
还可改变GPU 122与***100的其余部分的连接。在一些实施例中,将图形***112实施为插卡,其可***到***100的扩充槽中。在其它实施例中,在单个芯片上将GPU与总线桥接器(例如存储器桥接器105或I/O桥接器107)集成。
GPU可具备任何量的局部图形存储器(包括没有局部存储器),且可使用局部存储器与***存储器的任何组合。举例来说,在统一存储器结构(UMA)实施例中,不提供专用图形存储器装置,且GPU专门或几乎专门使用***存储器。在UMA实施例中,可将GPU集成到总线桥接器芯片中或将其提供作为离散芯片,其中高速总线(例如,PCI-E)将GPU连接到桥接器芯片和***存储器。
还将了解,***中可通过例如在单个图形卡上包括多个GPU或通过将多个图形卡连接到总线113而包括任何数目的GPU。多个GPU可并行操作以产生用于同一显示装置或不同显示装置的图像。
另外,体现本发明各方面的GPU可并入到各种装置中,所述装置包括通用计算机***、视频游戏控制台和其它专用计算机***、DVD播放器、手持装置(例如移动电话或个人数字助理)等。
渲染管线概述
图2是根据本发明实施例可在图1的GPU 122中实施的渲染管线200的方框图。在此实施例中,使用下述结构来实施渲染管线200:在所述结构中,使用同一并行处理硬件(本文中称为“多线程核心阵列”202)来执行任何适用的顶点着色器程序、几何着色器程序和像素着色器程序。下文进一步描述多线程核心阵列202。
除了多线程核心阵列202以外,渲染管线200还包括前端204和数据汇编器206、设定模块208、光栅化器210、颜色组合模块212和光栅操作模块(ROP)214,其每一者均可使用常规的集成电路技术或其它技术来实施。
前端204(例如)从图1的CPU 102接收状态信息(STATE)、渲染命令(CMD)和几何数据(GDATA)。在一些实施例中,代替直接提供几何数据,CPU 102提供对***存储器104中存储几何数据的位置的参考;数据汇编器206从***存储器104检索所述数据。状态信息、渲染命令和几何数据可具有一般常规性质,且可用于定义所需的一个或多个渲染图像,其中包括几何结构、照明、着色、纹理、运动和/或场景的相机参数。
在一个实施例中,几何数据包括对场景中可能出现的物体(例如,桌子、椅子、人或动物)的许多物体定义。有利地将物体建模为多个基元(例如点、线、三角形和/或其它多边形)群组,可通过参考其顶点来定义所述基元。在物体坐标***中为每一顶点指定一位置,其表示所述顶点相对于所建模物体的位置。除了位置以外,每一顶点还可具有与其相关联的各种其它属性。一般来说,顶点的属性可包括在每顶点基础上指定的任何特性;举例来说,在一些实施例中,顶点属性包括用于确定质量(例如颜色、纹理、透明度、照明、着色、和顶点及其相关联的几何基元的动画)的标量或向量属性。
如已经陈述的,基元通常通过参考其顶点来定义,且单个顶点可包括在任何数目的基元中。在一些实施例中,向每一顶点指派附标(其可以是任何唯一识别符),且通过为组成基元的顶点提供有序附标列表来定义所述基元。还可使用用于定义基元的其它技术(包括例如三角形条带或扇形等常规技术)。
状态信息和渲染命令为渲染管线200的各个级定义处理参数和动作。前端204经由控制路径(未明确展示)将状态信息和渲染命令引导到渲染管线200的其它组件。如此项技术中已知的,这些组件可通过存储或更新在处理期间存取的各控制寄存器中的值来对所接收的状态信息作出响应,且可通过处理在管线中所接收的数据来对渲染命令作出响应。
前端204将几何数据引导到数据汇编器206。数据汇编器206对几何数据进行格式化,并准备将所述数据传递到多线程核心阵列202中的几何模块218。
几何模块218引导多线程核心阵列202中的可编程处理引擎(未明确展示)对顶点数据执行顶点和/或几何着色器程序,其中响应于前端204所提供的状态信息而选择所述程序。可通过渲染应用程序来指定顶点和/或几何着色器程序(如此项技术中所已知的),且可将不同着色器程序应用于不同顶点和/或基元。待使用的着色器程序可存储在***存储器或图形存储器中,并经由适当的渲染命令和状态信息而向多线程核心阵列202加以识别,如此项技术中所已知的。在一些实施例中,顶点着色器和/或几何着色器程序可执行多遍,其中在每一遍期间执行不同的处理操作。每一顶点和/或几何着色器程序确定遍数和将在每一遍期间执行的操作。顶点和/或几何着色器程序可使用各种各样的数学和逻辑运算来对顶点和其它数据实施算法,且所述程序可包括条件或分支执行路径以及直接和间接存储器存取。
顶点着色器程序和几何着色器程序可用于实施各种视觉效应,其中包括照明和着色效应。举例来说,在简单的实施例中,顶点程序将顶点从其3D物体坐标***变换成3D裁剪空间或世界空间坐标***。此变换定义场景中的不同物体的相对位置。在一个实施例中,可通过在定义每一物体的渲染命令和/或数据中包括用于从所述物体的物体坐标***转换成裁剪空间坐标的变换矩阵来编程所述变换。顶点着色器程序将此变换矩阵应用于组成物体的基元的每一顶点。更多的复合顶点着色器程序可用于实施各种视觉效应,其中包括照明和着色、程序几何和动画操作。此类每顶点操作的许多实例在此项技术中是已知的,且省略了详细描述,因为其对于了解本发明来说并不重要。
几何着色器程序与顶点着色器程序的不同之处在于几何着色器程序对基元(顶点群组)而非各个顶点进行操作。因此,在一些实例中,几何程序可创建新的顶点且/或从正被处理的物体组处移除顶点或基元。在一些实施例中,可交替通过顶点着色器程序和几何着色器程序以处理几何数据。
在一些实施例中,使用多线程核心阵列202中的相同可编程处理引擎来执行顶点着色器程序和几何着色器程序。因此,在一些时候,给定处理引擎可操作作为顶点着色器,接收并执行顶点程序指令,且在其它时候,同一处理引擎可操作作为几何着色器,接收并执行几何程序指令。处理引擎可为多线程的,且执行不同类型的着色器程序的不同线程可在多线程核心阵列202中同时运行。
在已经执行顶点和/或几何着色器程序之后,几何模块218将经处理的几何数据(GDATA′)传到设定模块208。设定模块208可具有一般常规设计,且其从每一基元的裁剪空间或屏幕空间坐标产生边缘等式;所述边缘等式可有利地用于确定屏幕空间中的点是处于基元内部还是外部。
设定模块208将每一基元(PRIM)提供给光栅化器210。光栅化器210可具有一般常规设计,且其(例如)使用常规扫描转换算法来确定基元覆盖哪些像素(如果存在的话)。如本文所使用的,“像素”(或“片段”)大体上是指2D屏幕空间中将为其确定单个颜色值的区域;像素的数目和布置可以是渲染管线200的可配置参数,且可与或不与特定显示装置的屏幕分辨率相互关联。如此项技术中已知的,可在像素内的多个位置处对像素颜色进行取样(例如,使用常规超取样或多取样技术),且在一些实施例中,在像素着色器内操纵超样取或多取样。
在确定基元覆盖哪些基元之后,光栅化器210向颜色组合模块212提供所述基元(PRIM)连同由所述基元覆盖的像素的屏幕坐标(X,Y)列表。颜色组合模块212将从光栅化器210接收的基元和覆盖信息与基元的顶点的属性(例如,颜色分量、纹理坐标、表面法线)相关联,并产生平面等式(或其它适当的等式),其依据屏幕坐标空间中的位置而定义一些或所有所述属性。
这些属性等式可有利地用于像素着色器程序以在基元内的任何位置处内插属性值;可使用常规技术来产生所述等式。举例来说,在一个实施例中,颜色组合模块212为每一属性U的具有形式U=Ax+By+C的平面等式产生系数A、B和C。
颜色组合模块212向多线程核心阵列202中的像素模块224提供用于覆盖至少一个像素的每一基元的属性等式(EQS,其可包括(例如)平面等式系数A、B和C)和所覆盖像素的屏幕坐标(X,Y)列表。像素模块224引导多线程核心阵列202中的可编程处理引擎(未明确展示)对由基元覆盖的每一像素执行一个或一个以上像素着色器程序,其中响应于由前端204提供的状态信息而选择所述程序。如同顶点着色器程序和几何着色器程序一样,渲染应用程序可指定将用于任何给定像素组的像素着色器程序。像素着色器程序可用于实施各种视觉效应,其中包括照明和着色效应、倒影、纹理掺合、程序纹理产生等。此类每顶点操作的许多实例在此项技术中是已知的,且省略了详细说明,因为其对于了解本发明来说并不重要。像素着色器程序可使用各种各样的数学和逻辑运算对像素和其它数据实施算法,且所述程序可包括条件或分支执行路径以及直接和间接存储器存取。
像素着色器程序有利地在多线程核心阵列202中使用还执行顶点和/或几何着色器程序的相同可编程处理引擎加以执行。因此,在一些时候,给定处理引擎可作为顶点着色器操作,接收并执行顶点程序指令;在其它时候,同一处理引擎可作为几何着色器操作,接收并执行几何程序指令;且在另外时候,同一处理引擎可作为像素着色器操作,接收并执行像素着色器程序指令。应了解,多线程核心阵列可提供像素与顶点处理之间的自然负荷平衡:在应用是几何密集(例如,许多小基元)的情况下,多线程核心阵列202中的处理循环的较大部分将趋向于致力于顶点和/或几何着色器,且在应用是像素密集(例如,使用具有多个纹理等的复合像素着色器程序来着色较少且较大的基元)的情况下,处理循环的较大部分将趋向于致力于像素着色器。
一旦对像素或像素群组的处理已完成,像素模块224便将经处理的像素(PDATA)提供给ROP 214。ROP 214可具有一般常规设计,且其将从像素模块224接收的像素值与帧缓冲器226中的在构造中的图像的像素集成,所述帧缓冲器226可位于(例如)图形存储器124中。在一些实施例中,ROP 214可遮蔽像素或将新像素与先前写入到所渲染图像中的像素掺合。深度缓冲器、α缓冲器和模板缓冲器也可用于确定每一传入像素对所渲染图像的贡献(如果存在的话)。将对应于每一传入像素值与任何先前存储的像素值的适当组合的像素数据PDATA′写回到帧缓冲器226中。一旦图像已完成,可将帧缓冲器226扫描输出到显示装置和/或使其经受进一步处理。
将了解,本文描述的渲染管线是说明性的且能够作出多种改变和修改。管线可包括与所示单元不同的单元,且处理事件的顺序可与本文描述的顺序有所不同。举例来说,在一些实施例中,光栅化可在各级中采用“粗”光栅化器加以执行,所述“粗”光栅化器以区块(例如,16×16个像素)为单位处理整个屏幕以确定三角形覆盖(或部分覆盖)哪些区块(如果存在的话);接着采用“细”光栅化器加以执行,所述“细”光栅化器处理经确定为被至少部分覆盖的任何区块内的各个像素。在一个此类实施例中,细光栅化器包含在像素模块224内。在另一实施例中,在将像素数据转发到ROP 214之前,可在像素模块224内执行常规上由ROP执行的一些操作。
此外,可并行操作本文描述的模块的一些或全部的多个实例。在一个此类实施例中,多线程核心阵列202包括两个或两个以上几何模块218和相等数目的像素模块224,所述几何模块218和像素模块224并行操作。每一几何模块和像素模块联合控制多线程核心阵列202中的处理引擎的不同子集。
多线程核心阵列配置
在一个实施例中,多线程核心阵列202提供高度并行结构,其支持同时执行顶点、几何和/或像素着色器程序的大量实例的各种组合。图3是根据本发明实施例的多线程核心阵列202的方框图。
在此实施例中,多线程核心阵列202包括某数目(N个)的处理群集302。本文中,用识别物体的参考数字和在需要时识别实例的***数字来表示类似物体的多个实例。可提供任何数目N(例如,1、4、8或任何其它数目)的处理群集。在图3中,详细展示一个处理群集302;应了解,其它处理群集302可具有类似或相同的设计。
每一处理群集302包括几何控制器304(实施图2的几何模块218)和像素控制器306(实施图2的像素模块224)。几何控制器304和像素控制器306每一者与核心接口308通信。核心接口308控制一定数目(M个)的核心310,所述核心310包括多线程核心阵列202的处理引擎。任何数目M(例如,1、2、4或任何其它数目)的核心310可连接到单个核心接口。每一核心310有利地实施为多线程执行核心,其能够支持大量(例如,100或更多)同时执行线程(其中术语“线程”是指对特定输入数据组执行的特定程序的实例),其中包括顶点线程、几何线程和像素线程的组合。在一个实施例中,每一核心310实施P路SIMD结构以并行执行P条线程,其中P是任意整数(例如,8、16、32)且能够同时管理一定数目G(例如,18、24等)的具有P条线程的群组。对核心310的详细描述可在2005年12月19日申请的第60/752,265号美国临时申请案中找到,所述临时申请案的全文出于所有目的而以引用的方式并入本文中。
核心接口308还控制在核心310间共享的纹理管线314。纹理管线314可具有一般常规设计,且有利地包括经配置以接收纹理坐标、从存储器取出对应于纹理坐标的纹理数据和根据各种算法对纹理数据进行过滤的逻辑电路。可使用包括双线性和三线性过滤的常规过滤算法。当核心310在其一个线程中遇到纹理指令时,其经由核心接口308将纹理坐标提供给纹理管线314。纹理管线314处理所述纹理指令并经由核心接口308将结果返回到核心310。由管线314进行的纹理处理可消耗相当大数目的时钟循环,且在线程正等待纹理结果的同时,核心310有利地继续执行其它线程。
在操作中,数据汇编器206(图2)将几何数据GDATA提供给处理群集302。在一个实施例中,数据汇编器206将传入的几何数据流划分成多个部分,并(例如)基于执行资源的可用性而选择哪个处理群集302将接收所述几何数据的下一部分。将所述部分传递到选定处理群集302中的几何控制器304。
几何控制器304将所接收的数据转发到核心接口308(其将顶点数据加载到核心310中),接着指示核心310发起适当的顶点着色器程序。在完成顶点着色器程序后,核心接口308向几何控制器304发信号。如果将执行几何着色器程序,那么几何控制器304指示核心接口308发起几何着色器程序。在一些实施例中,在完成顶点着色器程序后将经处理的顶点数据返回到几何控制器304,且几何控制器304指示核心接口308在执行几何着色器程序之前重新加载数据。在完成顶点着色器程序和/或几何着色器程序之后,几何控制器304将经处理的几何数据(GDATA′)提供给图2的设定模块208。
在像素级处,颜色组合模块212(图2)将用于基元的属性等式EQS和由所述基元覆盖的像素的像素坐标(X,Y)提供给处理群集302。在一个实施例中,颜色组合模块212将传入的覆盖数据流划分成多个部分,并(例如)基于执行资源的可用性或屏幕坐标中的基元位置而选择哪个处理群集302将接收所述数据的下一部分。将所述部分传递到选定处理群集302中的像素控制器306。
像素控制器306将数据传递到核心接口308(其将顶点数据加载到核心310中),接着指示核心310发起像素着色器程序。在核心310为多线程的情况下,像素着色器程序、几何着色器程序和顶点着色器程序全部可在同一核心310中同时执行。在完成像素着色器程序后,核心接口308将经处理的像素数据传递到像素控制器306,所述像素控制器306将像素数据PDATA转发给ROP单元214(图2)。
将了解,本文描述的多线程核心阵列是说明性的且能够作出多种改变和修改。可提供任何数目的处理群集,且每一处理群集可包括任何数目的核心。在一些实施例中,一些类型的着色器可被限制为在一些处理群集中或在一些核心中执行;举例来说,几何着色器可被限制为在每一处理群集的核心310(0)中执行。此类设计选择可受硬件大小和复杂性对性能的考虑因素驱使,如此项技术中所已知的。共享纹理管线也是可选的;在一些实施例中,每一核心可具有其自己的纹理管线或可利用通用功能单元以执行纹理计算。
可采用各种方式将待处理的数据分配给处理群集。在一个实施例中,数据汇编器(或其它几何数据来源)和颜色组合模块(或其它像素着色器输入数据来源)接收指示处理群集或各个核心的可用性的信息,以操纵各种类型的额外线程并选择用于每一线程的目的地处理群集或核心。在另一实施例中,将输入数据从一个处理群集转发到下一处理群集,直到具有用以处理所述数据的容量的处理群集接受所述数据为止。在又一实施例中,基于输入数据的特性(例如待处理像素的屏幕坐标)而选择处理群集。
多线程核心阵列还可用于执行可能与渲染图像相关或不相关的通用计算。在一个实施例中,可用数据并行分解表达的任何计算均可通过多线程核心阵列操纵作为在单个核心中执行的线程阵列。此类计算的结果可写入到帧缓冲器中并读回到***存储器中。
像素着色器工作的分派
根据本发明实施例,基于像素在图像区域内的位置而将待由像素着色器程序处理的像素引导到处理群集302(图3)。举例来说,可将图像区域划分成许多瓦片。每一瓦片以下列方式而与所述处理群集302中的一者相关联:与一个群集相关联的瓦片散布在整个图像区域上(即,与一个处理群集相关联的至少一些瓦片并不彼此邻近)。
图4说明根据本发明实施例的将图像区域400分成大量瓦片402的一种可能瓦片分割。每一瓦片402可能是(例如)16×16个像素或任何其它适宜大小。在此实施例中,图3的多线程核心阵列202包括八个处理群集302(0)到302(7)。图4中的每一瓦片402包括数字i(0到7),其指示哪个处理核心302(i)处理所述瓦片中的像素。从图4中可看到,向每一处理群集302指派图像区域400内的相等(或接近相等)数目的瓦片402,且指派给每一群集302的瓦片并不彼此邻近。预期对于许多图形应用程序,以此方式分配工作将提供处理群集302间的近似负荷平衡。适当的像素分配逻辑可包括在渲染管线200中,例如包括在图2的颜色组合模块212中。
将了解,图4所示的瓦片分割是说明性的且能够作出多种改变和修改。瓦片可具有任何大小。在一些实施例中,瓦片的大小和数目是可配置的,其中基于应用特征(例如多取样模式是否在使用中)而选择瓦片大小。指派给每一处理群集的瓦片的布置可根据需要而变化。
可将瓦片指派给任何数目的处理群集,多达特定GPU中存在的总数目。在一些实施例中,将瓦片指派给部分处理群集。因此,GPU可仅使用其处理群集中的一些处理群集处理像素线程来渲染图像。只要至少一个处理群集可用,GPU便将能够渲染图像,尽管处理量降低。以停用一些群集处理像素线程的方式运行可用于(例如)在降低功率模式中操作(一些核心或群集可被断电,而其它核心或群集操作),确定最小性能要求(不需要不同GPU的可用性),且/或提供一个或另一个所述核心中的缺陷容耐性。
在一些替代实施例中,将瓦片指派给特定核心310而非处理群集302。
像素着色器与帧缓冲器的耦合
在一些实施例中,代替图2中所建议的集中式ROP 214,图3中的每一像素控制器306包括其自己的ROP,所述ROP将像素传送到图2的帧缓冲器226。在此些实施例中,提供从处理群集302到帧缓冲器的耦合。
在具有N个处理群集的一个实施例中,将帧缓冲器226分割成N个分区。每一群集302耦合到所述N个分区中的不同一者。
图5是说明根据本发明实施例的处理群集302与帧缓冲器500之间的耦合的简化方框图。应了解,图2的帧缓冲器226可能包括多个帧缓冲器500,其中每一帧缓冲器500针对同一图像在每像素基础上存储指定数量。举例来说,在一个实施例中,帧缓冲器226包括Z缓冲器、颜色分量缓冲器(例如,用于红色、绿色和蓝色颜色分量)和透明度(α)缓冲器。应了解,可提供任何数目的帧缓冲器500,且如本文所使用的“像素”是指图像内的取样位置,其可能对应于或不对应于给定显示装置中的活动像素的数目。出于简化目的,仅展示一个帧缓冲器500;应了解,可将相同分割应用于图像的每一帧缓冲器。
帧缓冲器500被分割(物理上或逻辑上)成N个分区502,其中每一分区充分大而足以存储图像中的像素的至少1/N的数据。N个处理群集302的每一者耦合到所述N个分区502中的一者。因此,处理群集302(0)将其输出像素数据全部存储在分区502(0)中,处理群集302(1)将其输出像素数据全部存储在分区502(1)中,且以此类推。应注意,在由给定处理群集302处理的瓦片并不邻近的情况下,给定帧缓冲器分区502中的数据将来自非邻近瓦片。显示(扫描输出)逻辑在存取帧缓冲器500时有利地观察到数据的正确显示排序;明确地说,不需要按顺序读出分区。
如上所述,在一些实施例中,可使用部分处理核心302来产生像素。在图5所示的实施例中,只有处理群集302(0)向帧缓冲器分区502(0)提供像素。因此,如果不操作处理群集302(0)以产生像素,那么将不使用帧缓冲器分区502(0)。可对图像区域进行瓦片重新分割或可在处理群集302(1)到302(N-1)间重新指派瓦片,使得在N-1个处理群集间划分所述区域。在一些实施例中,可能需要降低取样分辨率,例如如果帧缓冲器分区502(1)到502(N-1)并未提供足够的空间来以原始取样分辨率存储用于图像的像素数据的全部。在分区是逻辑而非物理形式的实施例中,可重新分割帧缓冲器500以与可用的处理群集302的数目匹配。
在替代实施例中,每一处理群集可存取多个帧缓冲器分区。图6是说明根据本发明实施例的处理群集302与帧缓冲器600之间的耦合的简化方框图。应了解,图2的帧缓冲器226可包括多个帧缓冲器600,其中每一帧缓冲器600针对同一像素在每像素基础上存储指定数量,如上文参考帧缓冲器500所描述的。应了解,可提供任何数目的帧缓冲器600。出于简化目的,仅展示一个帧缓冲器600;应了解,可将分割应用于图像的每一帧缓冲器。
帧缓冲器600被分割(物理上或逻辑上)成数目B的分区602,其中B可等于或不同于处理群集302的数目N。处理群集302经由交叉开关604而耦合到分区602。每一群集302可将像素数据写入到所述B个分区602的任一者(或一者以上)中。
在此实施例中,交叉开关604是可配置的,从而允许根据需要而修改处理群集302到帧缓冲器分区602的耦合。举例来说,如上所述,在一些实施例中,可使用部分处理核心302来产生像素。在图6所示的实施例中,如果停用处理核心302(0),那么可重新配置交叉开关604,使得所有帧缓冲器分区602仍可由处理核心302中的一者或另一者存取。显示(扫描输出)逻辑有利地是可配置的,使得正确地扫描输出帧缓冲器数据而不管交叉开关604的配置或对处理核心302的瓦片指派如何。
在存在多个帧缓冲器(例如Z、颜色、α等)的情况下,可以所描述的方式将每一帧缓冲器分割成B个分区。在一些实施例中,分区的数目对于所有帧缓冲器并不相同;举例来说,Z缓冲器可具有比颜色缓冲器多或少的分区。
另外的实施例
尽管已经相对于具体实施例描述了本发明,但所属领域的技术人员将认识到,能够作出许多修改。因此,虽然已经相对于具体实施例描述了本发明,但将了解,本发明既定涵盖属于所附权利要求书的范围内的所有修改和等效物。
Claims (7)
1.一种图形处理器,其包含:
多线程核心阵列,其包括多个处理群集,每一处理群集包括至少一个可操作以执行像素着色器程序的处理核心,所述像素着色器程序从覆盖数据产生像素数据;
光栅化器,其经配置以针对多个像素的每一者产生覆盖数据;以及
像素分配逻辑,其经配置以将所述覆盖数据从所述光栅化器传递到所述多线程核心阵列中的所述处理群集中的一者,
其中所述像素分配逻辑至少部分基于第一像素在图像区域内的位置而选择将所述第一像素的所述覆盖数据传递到其的所述处理群集中的所述一者。
2.根据权利要求1所述的图形处理器,其中所述图像区域被划分成多个瓦片,每一瓦片被指派给所述处理群集中的一者,且其中所述像素分配逻辑基于关于所述多个瓦片中的哪个瓦片包括所述第一像素的确定而选择所述处理群集中的所述一者。
3.根据权利要求2所述的图形处理器,其中所述多个瓦片中的至少两者被指派给所述处理群集中的每一者,其中对于每一处理群集,指派给其的所述瓦片并非彼此邻近。
4.根据权利要求1所述的图形处理器,其中所述处理群集的每一者经配置以将像素数据传递到帧缓冲器的多个分区中的相应一者。
5.根据权利要求1所述的图形处理器,其进一步包含交叉开关,所述交叉开关耦合到所述处理群集的每一者且经配置以将像素数据从所述处理群集传递到具有多个分区的帧缓冲器。
6.根据权利要求5所述的图形处理器,其中所述交叉开关经配置以使得由所述处理群集的任一者产生的像素数据可传递到所述帧缓冲器分区中的任一者。
7.根据权利要求1所述的图形处理器,其中每一处理核心还可操作以执行顶点着色器程序和几何着色器程序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US75226505P | 2005-12-19 | 2005-12-19 | |
US60/752,265 | 2005-12-19 | ||
PCT/US2006/062258 WO2007111743A2 (en) | 2005-12-19 | 2006-12-18 | Parallel array architecture for a graphics processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101371247A true CN101371247A (zh) | 2009-02-18 |
CN101371247B CN101371247B (zh) | 2014-06-04 |
Family
ID=38541600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680047739.1A Active CN101371247B (zh) | 2005-12-19 | 2006-12-18 | 用于图形处理器的并行阵列结构 |
Country Status (8)
Country | Link |
---|---|
US (4) | US7728841B1 (zh) |
JP (2) | JP2009520307A (zh) |
KR (1) | KR101027621B1 (zh) |
CN (1) | CN101371247B (zh) |
DE (1) | DE112006003473B4 (zh) |
GB (1) | GB2446546B (zh) |
TW (1) | TWI368182B (zh) |
WO (1) | WO2007111743A2 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136724A (zh) * | 2011-11-30 | 2013-06-05 | 北大方正集团有限公司 | 加网方法和装置 |
CN103576833A (zh) * | 2012-07-30 | 2014-02-12 | 辉达公司 | 存储器控制器的训练、功率门控和动态频率改变 |
CN103810728A (zh) * | 2012-11-01 | 2014-05-21 | 辉达公司 | 用于将经修改的覆盖数据输入像素着色器的***和方法 |
CN104050627A (zh) * | 2013-03-15 | 2014-09-17 | 英特尔公司 | 线程机制的条件结束 |
CN107004399A (zh) * | 2014-12-18 | 2017-08-01 | 高通股份有限公司 | 通过图形处理进行的视力校正 |
CN109196550A (zh) * | 2016-06-28 | 2019-01-11 | 英特尔公司 | 用于针对虚拟现实和多视图***进行交织光栅化和像素着色的架构 |
CN109844802A (zh) * | 2016-09-02 | 2019-06-04 | 英特尔公司 | 用于在图形处理器中提高线程并行性的机制 |
CN111935538A (zh) * | 2019-05-13 | 2020-11-13 | 奥多比公司 | 使用多组视频缓冲器用透明度控制来控制增强现实显示器 |
CN114463160A (zh) * | 2022-01-30 | 2022-05-10 | 摩尔线程智能科技(北京)有限责任公司 | 一种图形流水线的并行处理方法、装置及可读存储介质 |
CN114895638A (zh) * | 2018-06-22 | 2022-08-12 | 应用材料公司 | 将图形处理单元用于基板路由及吞吐量建模 |
Families Citing this family (84)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US8085273B2 (en) | 2003-11-19 | 2011-12-27 | Lucid Information Technology, Ltd | Multi-mode parallel graphics rendering system employing real-time automatic scene profiling and mode control |
JP2007512613A (ja) | 2003-11-19 | 2007-05-17 | ルシッド インフォメーション テクノロジー リミテッド | Pcバス上の多重3−dグラフィックパイプラインのための方法およびシステム |
US20080094403A1 (en) * | 2003-11-19 | 2008-04-24 | Reuven Bakalash | Computing system capable of parallelizing the operation graphics processing units (GPUs) supported on a CPU/GPU fusion-architecture chip and one or more external graphics cards, employing a software-implemented multi-mode parallel graphics rendering subsystem |
US20090027383A1 (en) | 2003-11-19 | 2009-01-29 | Lucid Information Technology, Ltd. | Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition |
US20070291040A1 (en) * | 2005-01-25 | 2007-12-20 | Reuven Bakalash | Multi-mode parallel graphics rendering system supporting dynamic profiling of graphics-based applications and automatic control of parallel modes of operation |
US7961194B2 (en) | 2003-11-19 | 2011-06-14 | Lucid Information Technology, Ltd. | Method of controlling in real time the switching of modes of parallel operation of a multi-mode parallel graphics processing subsystem embodied within a host computing system |
US20080246772A1 (en) * | 2003-11-19 | 2008-10-09 | Lucid Information Technology, Ltd. | Multi-mode parallel graphics rendering system (MMPGRS) employing multiple graphics processing pipelines (GPPLS) and real-time performance data collection and analysis during the automatic control of the mode of parallel operation of said GPPLS |
US8190669B1 (en) | 2004-10-20 | 2012-05-29 | Nvidia Corporation | Multipurpose arithmetic functional unit |
US20090096798A1 (en) * | 2005-01-25 | 2009-04-16 | Reuven Bakalash | Graphics Processing and Display System Employing Multiple Graphics Cores on a Silicon Chip of Monolithic Construction |
EP1846834A2 (en) | 2005-01-25 | 2007-10-24 | Lucid Information Technology, Ltd. | Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction |
ES2351611T3 (es) * | 2006-07-12 | 2011-02-08 | The Procter And Gamble Company | Sistemas espesantes basados en tensioactivo de red de gel para composiciones de decoloración y coloración del cabello. |
US8051123B1 (en) | 2006-12-15 | 2011-11-01 | Nvidia Corporation | Multipurpose functional unit with double-precision and filtering operations |
KR101349171B1 (ko) * | 2007-01-17 | 2014-01-09 | 삼성전자주식회사 | 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법 |
US8996846B2 (en) | 2007-09-27 | 2015-03-31 | Nvidia Corporation | System, method and computer program product for performing a scan operation |
US8284188B1 (en) | 2007-10-29 | 2012-10-09 | Nvidia Corporation | Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects |
US8264484B1 (en) | 2007-10-29 | 2012-09-11 | Nvidia Corporation | System, method, and computer program product for organizing a plurality of rays utilizing a bounding volume |
US8065288B1 (en) | 2007-11-09 | 2011-11-22 | Nvidia Corporation | System, method, and computer program product for testing a query against multiple sets of objects utilizing a single instruction multiple data (SIMD) processing architecture |
US8661226B2 (en) * | 2007-11-15 | 2014-02-25 | Nvidia Corporation | System, method, and computer program product for performing a scan operation on a sequence of single-bit values using a parallel processor architecture |
US8243083B1 (en) | 2007-12-04 | 2012-08-14 | Nvidia Corporation | System, method, and computer program product for converting a scan algorithm to a segmented scan algorithm in an operator-independent manner |
US8773422B1 (en) | 2007-12-04 | 2014-07-08 | Nvidia Corporation | System, method, and computer program product for grouping linearly ordered primitives |
US8106914B2 (en) | 2007-12-07 | 2012-01-31 | Nvidia Corporation | Fused multiply-add functional unit |
US9678775B1 (en) * | 2008-04-09 | 2017-06-13 | Nvidia Corporation | Allocating memory for local variables of a multi-threaded program for execution in a single-threaded environment |
US8274516B2 (en) * | 2008-08-04 | 2012-09-25 | Microsoft Corporation | GPU scene composition and animation |
US8271734B1 (en) * | 2008-12-05 | 2012-09-18 | Nvidia Corporation | Method and system for converting data formats using a shared cache coupled between clients and an external memory |
US8947444B1 (en) * | 2008-12-09 | 2015-02-03 | Nvidia Corporation | Distributed vertex attribute fetch |
US8321492B1 (en) * | 2008-12-11 | 2012-11-27 | Nvidia Corporation | System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm |
AU2008258132B2 (en) * | 2008-12-15 | 2011-11-10 | Canon Kabushiki Kaisha | Load balancing in multiple processor rendering systems |
US20100277488A1 (en) * | 2009-04-30 | 2010-11-04 | Kevin Myers | Deferred Material Rasterization |
US8619087B2 (en) * | 2009-10-06 | 2013-12-31 | Nvidia Corporation | Inter-shader attribute buffer optimization |
US8259007B2 (en) * | 2009-10-26 | 2012-09-04 | Metron Aviation, Inc. | Cell clustering and optimization for space partitioning |
US20110153984A1 (en) * | 2009-12-21 | 2011-06-23 | Andrew Wolfe | Dynamic voltage change for multi-core processing |
KR20110089649A (ko) * | 2010-02-01 | 2011-08-09 | 삼성전자주식회사 | 병렬 연산 처리 방법 및 장치 |
US20120019541A1 (en) * | 2010-07-20 | 2012-01-26 | Advanced Micro Devices, Inc. | Multi-Primitive System |
US8704732B2 (en) * | 2010-09-29 | 2014-04-22 | Qualcomm Incorporated | Image synchronization for multiple displays |
US8499305B2 (en) * | 2010-10-15 | 2013-07-30 | Via Technologies, Inc. | Systems and methods for performing multi-program general purpose shader kickoff |
KR101799978B1 (ko) | 2011-06-17 | 2017-11-22 | 삼성전자주식회사 | 타일 근접성을 사용하는 타일 기반 렌더링 방법 및 장치 |
US9092267B2 (en) | 2011-06-20 | 2015-07-28 | Qualcomm Incorporated | Memory sharing in graphics processing unit |
US8752018B2 (en) * | 2011-06-21 | 2014-06-10 | Nvidia Corporation | Emitting coherent output from multiple threads for printf |
US10740254B2 (en) * | 2012-01-03 | 2020-08-11 | Nvidia Corporation | System and method for frame buffer copy during partial power down of memory |
US8611437B2 (en) | 2012-01-26 | 2013-12-17 | Nvidia Corporation | Ground referenced single-ended signaling |
US9338036B2 (en) | 2012-01-30 | 2016-05-10 | Nvidia Corporation | Data-driven charge-pump transmitter for differential signaling |
US9965821B2 (en) | 2012-03-09 | 2018-05-08 | Nvidia Corporation | Fully parallel in-place construction of 3D acceleration structures in a graphics processing unit |
US9510772B2 (en) | 2012-04-10 | 2016-12-06 | Cardionxt, Inc. | System and method for localizing medical instruments during cardiovascular medical procedures |
JP5949188B2 (ja) | 2012-06-08 | 2016-07-06 | 日本電気株式会社 | 密結合マルチプロセッサシステム |
KR20140005388A (ko) * | 2012-06-26 | 2014-01-15 | 삼성전자주식회사 | 렌더링 데이터 처리 장치 및 방법 |
US20140192052A1 (en) * | 2013-01-09 | 2014-07-10 | Advanced Micro Devices, Inc. | 2d rendering on 3d graphics hardware |
US9153314B2 (en) | 2013-03-15 | 2015-10-06 | Nvidia Corporation | Ground-referenced single-ended memory interconnect |
US9269179B2 (en) * | 2013-03-15 | 2016-02-23 | Nvidia Corporation | System, method, and computer program product for generating primitive specific attributes |
US9147447B2 (en) | 2013-03-15 | 2015-09-29 | Nvidia Corporation | Ground-referenced single-ended memory interconnect |
US9171607B2 (en) | 2013-03-15 | 2015-10-27 | Nvidia Corporation | Ground-referenced single-ended system-on-package |
US9153539B2 (en) * | 2013-03-15 | 2015-10-06 | Nvidia Corporation | Ground-referenced single-ended signaling connected graphics processing unit multi-chip module |
US9170980B2 (en) * | 2013-03-15 | 2015-10-27 | Nvidia Corporation | Ground-referenced single-ended signaling connected graphics processing unit multi-chip module |
US9501859B2 (en) * | 2013-07-19 | 2016-11-22 | Adobe Systems Incorporated | Triangle rasterization |
WO2015027191A1 (en) | 2013-08-22 | 2015-02-26 | Cardionxt, Inc. | Methods, systems, and apparatus for identification and characterization of rotors associated with atrial fibrillation |
GB2521155B (en) | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configuring thread scheduling on a multi-threaded data processing apparatus |
GB2521151B (en) | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configurable thread ordering for a data processing apparatus |
KR102111740B1 (ko) * | 2014-04-03 | 2020-05-15 | 삼성전자주식회사 | 영상 데이터를 처리하는 방법 및 디바이스. |
US9710881B2 (en) | 2014-04-05 | 2017-07-18 | Sony Interactive Entertainment America Llc | Varying effective resolution by screen location by altering rasterization parameters |
US11302054B2 (en) | 2014-04-05 | 2022-04-12 | Sony Interactive Entertainment Europe Limited | Varying effective resolution by screen location by changing active color sample count within multiple render targets |
US10068311B2 (en) * | 2014-04-05 | 2018-09-04 | Sony Interacive Entertainment LLC | Varying effective resolution by screen location by changing active color sample count within multiple render targets |
US10783696B2 (en) | 2014-04-05 | 2020-09-22 | Sony Interactive Entertainment LLC | Gradient adjustment for texture mapping to non-orthonormal grid |
US9928564B2 (en) * | 2014-06-26 | 2018-03-27 | Intel Corporation | Efficient hardware mechanism to ensure shared resource data coherency across draw calls |
US20160093069A1 (en) * | 2014-09-26 | 2016-03-31 | Subramaniam Maiyuran | Method and apparatus for pixel hashing |
US10217401B2 (en) * | 2014-09-30 | 2019-02-26 | Microsoft Technology Licensing, Llc | Displaying content on a display in power save mode |
US10013735B2 (en) * | 2015-01-28 | 2018-07-03 | Qualcomm Incorporated | Graphics processing unit with bayer mapping |
US10319348B2 (en) | 2015-05-11 | 2019-06-11 | Vixs Systems, Inc. | Memory subsystem consumer trigger |
US20160335734A1 (en) * | 2015-05-11 | 2016-11-17 | Vixs Systems, Inc. | Memory subsystem synchronization primitives |
US10768935B2 (en) * | 2015-10-29 | 2020-09-08 | Intel Corporation | Boosting local memory performance in processor graphics |
CN107818069B (zh) | 2016-09-12 | 2021-10-01 | 阿里巴巴集团控股有限公司 | 数据处理方法及*** |
US10460513B2 (en) | 2016-09-22 | 2019-10-29 | Advanced Micro Devices, Inc. | Combined world-space pipeline shader stages |
US11379941B2 (en) * | 2016-09-22 | 2022-07-05 | Advanced Micro Devices, Inc. | Primitive shader |
CN107977227B (zh) | 2016-10-21 | 2024-07-02 | 超威半导体公司 | 包括不同指令类型的独立硬件数据路径的管线 |
WO2018105655A1 (ja) * | 2016-12-09 | 2018-06-14 | 株式会社ソニー・インタラクティブエンタテインメント | 画像処理装置、画像処理方法およびプログラム |
US10650566B2 (en) * | 2017-02-15 | 2020-05-12 | Microsoft Technology Licensing, Llc | Multiple shader processes in graphics processing |
US10204394B2 (en) * | 2017-04-10 | 2019-02-12 | Intel Corporation | Multi-frame renderer |
US10417734B2 (en) * | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10417731B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10257487B1 (en) | 2018-01-16 | 2019-04-09 | Qualcomm Incorporated | Power efficient video playback based on display hardware feedback |
US10409359B2 (en) * | 2018-01-17 | 2019-09-10 | Qualcomm Incorporated | Dynamic bin ordering for load synchronization |
KR20220033635A (ko) * | 2020-09-09 | 2022-03-17 | 삼성디스플레이 주식회사 | 표시 장치 및 이의 구동 방법 |
CN112802192B (zh) * | 2021-03-05 | 2022-01-28 | 艾迪普科技股份有限公司 | 一种可实时交互的三维图形图像播放器 |
WO2022251333A2 (en) * | 2021-05-28 | 2022-12-01 | MemComputing, Inc. | Memory graphics processing unit |
CN116263981B (zh) * | 2022-04-20 | 2023-11-17 | 象帝先计算技术(重庆)有限公司 | 图形处理器、***、装置、设备及方法 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5408646A (en) * | 1991-03-29 | 1995-04-18 | International Business Machines Corp. | Multipath torus switching apparatus |
US5857109A (en) * | 1992-11-05 | 1999-01-05 | Giga Operations Corporation | Programmable logic device for real time video processing |
US5408606A (en) * | 1993-01-07 | 1995-04-18 | Evans & Sutherland Computer Corp. | Computer graphics system with parallel processing using a switch structure |
US5794016A (en) * | 1995-12-11 | 1998-08-11 | Dynamic Pictures, Inc. | Parallel-processor graphics architecture |
US6181355B1 (en) * | 1998-07-17 | 2001-01-30 | 3Dlabs Inc. Ltd. | Graphics processing with transcendental function generator |
US6693719B1 (en) * | 1998-09-16 | 2004-02-17 | Texas Instruments Incorporated | Path to trapezoid decomposition of polygons for printing files in a page description language |
US6636222B1 (en) * | 1999-11-09 | 2003-10-21 | Broadcom Corporation | Video and graphics system with an MPEG video decoder for concurrent multi-row decoding |
AU3829500A (en) * | 1999-04-09 | 2000-11-14 | Clearspeed Technology Limited | Parallel data processing apparatus |
US7233331B2 (en) * | 2000-03-16 | 2007-06-19 | Square Enix Co., Ltd. | Parallel object task engine and processing method |
US6924807B2 (en) * | 2000-03-23 | 2005-08-02 | Sony Computer Entertainment Inc. | Image processing apparatus and method |
US7184059B1 (en) * | 2000-08-23 | 2007-02-27 | Nintendo Co., Ltd. | Graphics system with copy out conversions between embedded frame buffer and main memory |
US6853380B2 (en) * | 2002-03-04 | 2005-02-08 | Hewlett-Packard Development Company, L.P. | Graphical display system and method |
US20030234749A1 (en) * | 2002-06-20 | 2003-12-25 | Johnny Marks | System and method for communicating graphics image data over a communication network for display on a single logical screen |
US7075542B1 (en) * | 2002-11-12 | 2006-07-11 | Ati Technologies Inc. | Selectable multi-performance configuration |
US7633506B1 (en) * | 2002-11-27 | 2009-12-15 | Ati Technologies Ulc | Parallel pipeline graphics system |
JP3966832B2 (ja) * | 2003-04-28 | 2007-08-29 | 株式会社東芝 | 描画処理装置、及び、描画処理方法 |
US7202872B2 (en) * | 2003-10-29 | 2007-04-10 | Via Technologies, Inc. | Apparatus for compressing data in a bit stream or bit pattern |
US20080246772A1 (en) * | 2003-11-19 | 2008-10-09 | Lucid Information Technology, Ltd. | Multi-mode parallel graphics rendering system (MMPGRS) employing multiple graphics processing pipelines (GPPLS) and real-time performance data collection and analysis during the automatic control of the mode of parallel operation of said GPPLS |
US7719540B2 (en) * | 2004-03-31 | 2010-05-18 | Intel Corporation | Render-cache controller for multithreading, multi-core graphics processor |
US20050231533A1 (en) * | 2004-04-20 | 2005-10-20 | Lin Chen | Apparatus and method for performing divide by w operations in a graphics system |
US7154500B2 (en) * | 2004-04-20 | 2006-12-26 | The Chinese University Of Hong Kong | Block-based fragment filtration with feasible multi-GPU acceleration for real-time volume rendering on conventional personal computer |
US7570267B2 (en) * | 2004-05-03 | 2009-08-04 | Microsoft Corporation | Systems and methods for providing an enhanced graphics pipeline |
US7671862B1 (en) * | 2004-05-03 | 2010-03-02 | Microsoft Corporation | Systems and methods for providing an enhanced graphics pipeline |
US7603544B2 (en) * | 2004-12-23 | 2009-10-13 | Intel Corporation | Dynamic allocation of a buffer across multiple clients in multi-threaded processor without performing a complete flush of data associated with allocation |
-
2006
- 2006-06-01 US US11/446,046 patent/US7728841B1/en active Active
- 2006-12-15 US US11/611,745 patent/US20070159488A1/en not_active Abandoned
- 2006-12-18 KR KR1020087017716A patent/KR101027621B1/ko active IP Right Grant
- 2006-12-18 GB GB0810493A patent/GB2446546B/en active Active
- 2006-12-18 WO PCT/US2006/062258 patent/WO2007111743A2/en active Application Filing
- 2006-12-18 US US11/612,415 patent/US7830392B1/en active Active
- 2006-12-18 TW TW095147476A patent/TWI368182B/zh active
- 2006-12-18 DE DE112006003473T patent/DE112006003473B4/de active Active
- 2006-12-18 JP JP2008547710A patent/JP2009520307A/ja active Pending
- 2006-12-18 CN CN200680047739.1A patent/CN101371247B/zh active Active
-
2011
- 2011-10-07 US US13/269,462 patent/US8730249B2/en active Active
-
2012
- 2012-02-27 JP JP2012040562A patent/JP5345226B2/ja active Active
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136724A (zh) * | 2011-11-30 | 2013-06-05 | 北大方正集团有限公司 | 加网方法和装置 |
CN103136724B (zh) * | 2011-11-30 | 2015-11-25 | 北大方正集团有限公司 | 加网方法和装置 |
CN103576833A (zh) * | 2012-07-30 | 2014-02-12 | 辉达公司 | 存储器控制器的训练、功率门控和动态频率改变 |
CN103576833B (zh) * | 2012-07-30 | 2016-12-28 | 辉达公司 | 存储器控制器的训练、功率门控和动态频率改变 |
CN103810728A (zh) * | 2012-11-01 | 2014-05-21 | 辉达公司 | 用于将经修改的覆盖数据输入像素着色器的***和方法 |
CN104050627A (zh) * | 2013-03-15 | 2014-09-17 | 英特尔公司 | 线程机制的条件结束 |
CN104050627B (zh) * | 2013-03-15 | 2017-07-21 | 英特尔公司 | 线程机制的条件结束 |
CN107004399A (zh) * | 2014-12-18 | 2017-08-01 | 高通股份有限公司 | 通过图形处理进行的视力校正 |
CN109196550A (zh) * | 2016-06-28 | 2019-01-11 | 英特尔公司 | 用于针对虚拟现实和多视图***进行交织光栅化和像素着色的架构 |
CN109196550B (zh) * | 2016-06-28 | 2024-03-15 | 英特尔公司 | 用于针对虚拟现实和多视图***进行交织光栅化和像素着色的架构 |
CN109844802A (zh) * | 2016-09-02 | 2019-06-04 | 英特尔公司 | 用于在图形处理器中提高线程并行性的机制 |
CN109844802B (zh) * | 2016-09-02 | 2024-03-26 | 英特尔公司 | 用于在图形处理器中提高线程并行性的机制 |
CN114895638A (zh) * | 2018-06-22 | 2022-08-12 | 应用材料公司 | 将图形处理单元用于基板路由及吞吐量建模 |
CN111935538A (zh) * | 2019-05-13 | 2020-11-13 | 奥多比公司 | 使用多组视频缓冲器用透明度控制来控制增强现实显示器 |
CN111935538B (zh) * | 2019-05-13 | 2023-01-13 | 奥多比公司 | 数字内容覆盖的方法、计算设备及显示处理器 |
CN114463160A (zh) * | 2022-01-30 | 2022-05-10 | 摩尔线程智能科技(北京)有限责任公司 | 一种图形流水线的并行处理方法、装置及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20070159488A1 (en) | 2007-07-12 |
US8730249B2 (en) | 2014-05-20 |
US7830392B1 (en) | 2010-11-09 |
JP5345226B2 (ja) | 2013-11-20 |
US20120026171A1 (en) | 2012-02-02 |
CN101371247B (zh) | 2014-06-04 |
GB2446546B (en) | 2011-05-04 |
GB2446546A (en) | 2008-08-13 |
US7728841B1 (en) | 2010-06-01 |
WO2007111743A2 (en) | 2007-10-04 |
DE112006003473T5 (de) | 2008-10-23 |
GB0810493D0 (en) | 2008-07-09 |
JP2012178158A (ja) | 2012-09-13 |
TW200745987A (en) | 2007-12-16 |
TWI368182B (en) | 2012-07-11 |
WO2007111743A3 (en) | 2008-08-28 |
KR101027621B1 (ko) | 2011-04-06 |
KR20080085888A (ko) | 2008-09-24 |
JP2009520307A (ja) | 2009-05-21 |
DE112006003473B4 (de) | 2011-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101371247B (zh) | 用于图形处理器的并行阵列结构 | |
US8111260B2 (en) | Fast reconfiguration of graphics pipeline state | |
US8074224B1 (en) | Managing state information for a multi-threaded processor | |
US7477260B1 (en) | On-the-fly reordering of multi-cycle data transfers | |
US7692660B2 (en) | Guided performance optimization for graphics pipeline state management | |
US8237705B2 (en) | Hierarchical processor array | |
CN109978751A (zh) | 多gpu帧渲染 | |
US8174534B2 (en) | Shader processing systems and methods | |
CN104050706B (zh) | 用于低功率图形渲染的像素着色器旁路 | |
CN103810669B (zh) | 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块 | |
US20090128550A1 (en) | Computing system supporting parallel 3D graphics processes based on the division of objects in 3D scenes | |
US20100123717A1 (en) | Dynamic Scheduling in a Graphics Processor | |
US8429656B1 (en) | Thread count throttling for efficient resource utilization | |
US6940512B2 (en) | Image processing apparatus and method of same | |
TW201439975A (zh) | 在光柵操作中處理後置z覆蓋率資料 | |
CN103886634A (zh) | 利用每像素着色器线程的高效超级采样 | |
CN103810743A (zh) | 在上游着色器中设置下游渲染状态 | |
US7484076B1 (en) | Executing an SIMD instruction requiring P operations on an execution unit that performs Q operations at a time (Q<P) | |
US8363059B2 (en) | Rendering processing apparatus, parallel processing apparatus, and exclusive control method | |
CN108140233A (zh) | 具有像素块级别粒度的图形处理单元抢占 | |
CN103871019A (zh) | 优化三角形拓扑用于路径渲染 | |
CN103679786B (zh) | 图形处理单元可编程着色器的纹元数据结构和其操作方法 | |
US20240104685A1 (en) | Device and method of implementing subpass interleaving of tiled image rendering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |