CN101371247B - 用于图形处理器的并行阵列结构 - Google Patents

用于图形处理器的并行阵列结构 Download PDF

Info

Publication number
CN101371247B
CN101371247B CN200680047739.1A CN200680047739A CN101371247B CN 101371247 B CN101371247 B CN 101371247B CN 200680047739 A CN200680047739 A CN 200680047739A CN 101371247 B CN101371247 B CN 101371247B
Authority
CN
China
Prior art keywords
processing
pixel
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.)
Active
Application number
CN200680047739.1A
Other languages
English (en)
Other versions
CN101371247A (zh
Inventor
约翰·M·丹斯金
约翰·S·蒙特里
约翰·埃里克·林霍尔姆
史蒂文·E·莫尔纳
马克·J·弗伦奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN101371247A publication Critical patent/CN101371247A/zh
Application granted granted Critical
Publication of CN101371247B publication Critical patent/CN101371247B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures 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/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/06Use of more than one graphics processor to process data before displaying to one or more screens
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/122Tiling

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将所述输入转发到CPU 102。在基于像素的显示装置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 (6)

1.一种图形处理器,其包含:
多线程核心阵列,其包括多个处理群集,每一处理群集包括多个可操作以执行顶点着色器程序,几何着色器程序,和/或像素着色器程序的处理核心,所述像素着色器程序从覆盖数据产生像素数据,所述多个处理核心的每一个包括多个处理引擎;
光栅化器,其经配置以针对多个像素的每一者产生覆盖数据;以及
像素分配逻辑,其经配置以将所述覆盖数据从所述光栅化器传递到所述多线程核心阵列中的所述处理群集中的一者,
其中每一处理群集包括配置以引导所述处理核心执行所述顶点和/或几何着色器程序的几何模块;
其中每一处理群集包括配置以引导所述处理核心执行所述像素着色器程序的像素模块;
其中所述像素分配逻辑至少部分基于执行资源的可用性而选择将第一像素的所述覆盖数据传递到其的所述处理群集中的所述一者;
其中每一几何模块和像素模块联合控制所述处理核心的不同子集。
2.根据权利要求1所述的图形处理器,其中所述第一像素所在的图像区域被划分成多个瓦片,每一瓦片被指派给所述处理群集中的一者,且其中所述像素分配逻辑基于关于所述多个瓦片中的哪个瓦片包括所述第一像素的确定而选择所述处理群集中的所述一者。
3.根据权利要求2所述的图形处理器,其中所述多个瓦片中的至少两者被指派给所述处理群集中的每一者,其中对于每一处理群集,指派给其的所述瓦片并非彼此邻近。
4.根据权利要求1所述的图形处理器,其中所述处理群集的每一者经配置以将像素数据传递到帧缓冲器的多个分区中的相应一者。
5.根据权利要求1所述的图形处理器,其进一步包含交叉开关,所述交叉开关耦合到所述处理群集的每一者且经配置以将像素数据从所述处理群集传递到具有多个分区的帧缓冲器。
6.根据权利要求5所述的图形处理器,其中所述交叉开关经配置以使得由所述处理群集的任一者产生的像素数据可传递到所述帧缓冲器分区中的任一者。
CN200680047739.1A 2005-12-19 2006-12-18 用于图形处理器的并行阵列结构 Active CN101371247B (zh)

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 CN101371247A (zh) 2009-02-18
CN101371247B true 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)

Families Citing this family (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006117683A2 (en) 2005-01-25 2006-11-09 Lucid Information Technology, Ltd. Graphics processing and display system employing multiple graphics cores on a silicon chip of monolithic construction
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
JP2007512613A (ja) 2003-11-19 2007-05-17 ルシッド インフォメーション テクノロジー リミテッド Pcバス上の多重3−dグラフィックパイプラインのための方法およびシステム
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
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
US7777748B2 (en) * 2003-11-19 2010-08-17 Lucid Information Technology, Ltd. PC-level computing system with a multi-mode parallel graphics rendering subsystem employing an automatic mode controller, responsive to performance data collected during the run-time of graphics applications
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
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
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
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
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
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
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
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
US8773422B1 (en) 2007-12-04 2014-07-08 Nvidia Corporation System, method, and computer program product for grouping linearly ordered primitives
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
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
CN103136724B (zh) * 2011-11-30 2015-11-25 北大方正集团有限公司 加网方法和装置
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 삼성전자주식회사 렌더링 데이터 처리 장치 및 방법
US9104421B2 (en) * 2012-07-30 2015-08-11 Nvidia Corporation Training, power-gating, and dynamic frequency changing of a memory controller
US9165399B2 (en) * 2012-11-01 2015-10-20 Nvidia Corporation System, method, and computer program product for inputting modified coverage data into a pixel shader
US20140192052A1 (en) * 2013-01-09 2014-07-10 Advanced Micro Devices, Inc. 2d rendering on 3d graphics hardware
US9147447B2 (en) 2013-03-15 2015-09-29 Nvidia Corporation Ground-referenced single-ended memory interconnect
US9292898B2 (en) * 2013-03-15 2016-03-22 Intel Corporation Conditional end of thread mechanism
US9153539B2 (en) * 2013-03-15 2015-10-06 Nvidia Corporation Ground-referenced single-ended signaling connected graphics processing unit multi-chip module
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
US9171607B2 (en) 2013-03-15 2015-10-27 Nvidia Corporation Ground-referenced single-ended system-on-package
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
GB2521151B (en) 2013-12-10 2021-06-02 Advanced Risc Mach Ltd Configurable thread ordering for a data processing apparatus
GB2521155B (en) 2013-12-10 2021-06-02 Advanced Risc Mach Ltd Configuring thread scheduling on a multi-threaded data processing apparatus
KR102111740B1 (ko) * 2014-04-03 2020-05-15 삼성전자주식회사 영상 데이터를 처리하는 방법 및 디바이스.
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
US10783696B2 (en) 2014-04-05 2020-09-22 Sony Interactive Entertainment LLC Gradient adjustment for texture mapping to non-orthonormal grid
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
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
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
WO2016054122A1 (en) * 2014-09-30 2016-04-07 Microsoft Technology Licensing, Llc Displaying content on a display in power save mode
US9684950B2 (en) * 2014-12-18 2017-06-20 Qualcomm Incorporated Vision correction through graphics processing
US10013735B2 (en) * 2015-01-28 2018-07-03 Qualcomm Incorporated Graphics processing unit with bayer mapping
US20160335734A1 (en) * 2015-05-11 2016-11-17 Vixs Systems, Inc. Memory subsystem synchronization primitives
US10319348B2 (en) 2015-05-11 2019-06-11 Vixs Systems, Inc. Memory subsystem consumer trigger
US10768935B2 (en) * 2015-10-29 2020-09-08 Intel Corporation Boosting local memory performance in processor graphics
US10636110B2 (en) * 2016-06-28 2020-04-28 Intel Corporation Architecture for interleaved rasterization and pixel shading for virtual reality and multi-view systems
US10552211B2 (en) * 2016-09-02 2020-02-04 Intel Corporation Mechanism to increase thread parallelism in a graphics processor
CN107818069B (zh) 2016-09-12 2021-10-01 阿里巴巴集团控股有限公司 数据处理方法及系统
US11379941B2 (en) * 2016-09-22 2022-07-05 Advanced Micro Devices, Inc. Primitive shader
US10460513B2 (en) 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
CN107977227A (zh) 2016-10-21 2018-05-01 超威半导体公司 包括不同指令类型的独立硬件数据路径的管线
US10755468B2 (en) 2016-12-09 2020-08-25 Sony Interactive Entertainment Inc. Image processing apparatus, image processing method, and program to improve speed for calculating a color of pixels in image data
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
US10698392B2 (en) * 2018-06-22 2020-06-30 Applied Materials, Inc. Using graphics processing unit for substrate routing and throughput modeling
US10847117B1 (en) * 2019-05-13 2020-11-24 Adobe Inc. Controlling an augmented reality display with transparency control using multiple sets of video buffers
US20210272347A1 (en) * 2020-02-28 2021-09-02 Advanced Micro Devices, Inc. Fully utilized hardware in a multi-tenancy graphics processing unit
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
CN114463160B (zh) * 2022-01-30 2022-10-28 摩尔线程智能科技(北京)有限责任公司 一种图形流水线的并行处理方法、装置及可读存储介质
CN116263981B (zh) * 2022-04-20 2023-11-17 象帝先计算技术(重庆)有限公司 图形处理器、系统、装置、设备及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN1551048A (zh) * 2003-04-28 2004-12-01 ��ʽ���綫֥ 图像再现装置和图像再现方法
CN1691069A (zh) * 2004-04-20 2005-11-02 香港中文大学 采用多图形处理器加速方格片元过滤的实时体绘制方法
CN1702692A (zh) * 2004-05-03 2005-11-30 微软公司 提供增强的图形流水线的系统和方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
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
WO2000004436A1 (en) * 1998-07-17 2000-01-27 Intergraph Corporation 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
US7202872B2 (en) * 2003-10-29 2007-04-10 Via Technologies, Inc. Apparatus for compressing data in a bit stream or bit pattern
US7777748B2 (en) * 2003-11-19 2010-08-17 Lucid Information Technology, Ltd. PC-level computing system with a multi-mode parallel graphics rendering subsystem employing an automatic mode controller, responsive to performance data collected during the run-time of graphics applications
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
US7570267B2 (en) * 2004-05-03 2009-08-04 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

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN1551048A (zh) * 2003-04-28 2004-12-01 ��ʽ���綫֥ 图像再现装置和图像再现方法
CN1691069A (zh) * 2004-04-20 2005-11-02 香港中文大学 采用多图形处理器加速方格片元过滤的实时体绘制方法
CN1702692A (zh) * 2004-05-03 2005-11-30 微软公司 提供增强的图形流水线的系统和方法

Also Published As

Publication number Publication date
TWI368182B (en) 2012-07-11
GB2446546A (en) 2008-08-13
US7830392B1 (en) 2010-11-09
TW200745987A (en) 2007-12-16
GB0810493D0 (en) 2008-07-09
KR20080085888A (ko) 2008-09-24
US20120026171A1 (en) 2012-02-02
DE112006003473B4 (de) 2011-07-14
CN101371247A (zh) 2009-02-18
WO2007111743A2 (en) 2007-10-04
WO2007111743A3 (en) 2008-08-28
US7728841B1 (en) 2010-06-01
JP5345226B2 (ja) 2013-11-20
GB2446546B (en) 2011-05-04
KR101027621B1 (ko) 2011-04-06
JP2009520307A (ja) 2009-05-21
DE112006003473T5 (de) 2008-10-23
US8730249B2 (en) 2014-05-20
JP2012178158A (ja) 2012-09-13
US20070159488A1 (en) 2007-07-12

Similar Documents

Publication Publication Date Title
CN101371247B (zh) 用于图形处理器的并行阵列结构
US8074224B1 (en) Managing state information for a multi-threaded processor
US8174534B2 (en) Shader processing systems and methods
US7477260B1 (en) On-the-fly reordering of multi-cycle data transfers
US8077174B2 (en) Hierarchical processor array
US8111260B2 (en) Fast reconfiguration of graphics pipeline state
US10217183B2 (en) System, method, and computer program product for simultaneous execution of compute and graphics workloads
CN109978751A (zh) 多gpu帧渲染
CN104050706B (zh) 用于低功率图形渲染的像素着色器旁路
CN103810669B (zh) 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块
CN105321143A (zh) 来自片段着色程序的采样掩膜的控制
US7750915B1 (en) Concurrent access of data elements stored across multiple banks in a shared memory resource
US8429656B1 (en) Thread count throttling for efficient resource utilization
US8514235B2 (en) System and method for managing the computation of graphics shading operations
US20100123717A1 (en) Dynamic Scheduling in a Graphics Processor
US7747842B1 (en) Configurable output buffer ganging for a parallel processor
US20090027383A1 (en) Computing system parallelizing the operation of multiple graphics processing pipelines (GPPLs) and supporting depth-less based image recomposition
CN103810743A (zh) 在上游着色器中设置下游渲染状态
CN103885752A (zh) 多线程处理单元中可编程的混合
CN103886634A (zh) 利用每像素着色器线程的高效超级采样
US7865894B1 (en) Distributing processing tasks within a processor
CN103886547A (zh) 用于存储共享顶点的技术
TW201439975A (zh) 在光柵操作中處理後置z覆蓋率資料
US7484076B1 (en) Executing an SIMD instruction requiring P operations on an execution unit that performs Q operations at a time (Q<P)
CN108140233A (zh) 具有像素块级别粒度的图形处理单元抢占

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