CN1928918B - 图形处理装置及于图形处理装置中执行着色操作的方法 - Google Patents
图形处理装置及于图形处理装置中执行着色操作的方法 Download PDFInfo
- Publication number
- CN1928918B CN1928918B CN2006101317029A CN200610131702A CN1928918B CN 1928918 B CN1928918 B CN 1928918B CN 2006101317029 A CN2006101317029 A CN 2006101317029A CN 200610131702 A CN200610131702 A CN 200610131702A CN 1928918 B CN1928918 B CN 1928918B
- Authority
- CN
- China
- Prior art keywords
- tinter
- thread
- performance element
- scheduling
- layer
- 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
Links
Images
Landscapes
- Image Generation (AREA)
Abstract
本发明是有关于图形处理单元的顶点着色器、几何着色器及像素着色器中,管理或执行资源的动态配置或重新配置的新方法与装置。本发明的实施例具体地包括多个执行单元,其中每一执行单元以多重线程操作配置。提供逻辑电路以接收来自于多个着色器层中每层的要求,以执行与着色器相关的计算,以及,排程该等执行单元的线程,以执行与被要求的着色器相关计算。该执行单元集区的线程各自被排程以执行与着色器相关的计算,如此一来,特定线程可在时间内被排程,以执行不同着色器层的着色器操作。
Description
技术领域
本发明是有关于一种计算机绘图系统,且特别有关于管理图形着色操作计算的系统及方法。
背景技术
如大家所知,三维(“3-D”)计算机图形的技术是有关3-D对象的二维(“2-D”)图像的产生或绘制,以显示或呈现于显示装置或屏幕上,例如阴极射线管(CRT)或液晶显示器(LCD)。该对象可为简单几何像素,例如一个点、线段、三角形或多角形。更复杂的对象则可以通过一系列的相连平面多角形绘制于显示装置上,举例来说,例如通过一系列的相连平面三角形以呈现该对象。所有几何像素最后可根据一顶点或一组顶点被描述,例如坐标(X,Y,Z)定义一个点,例如线段的终点,或多角形的一角。
为产生数据集以显示如3-D像素的2-D投影代表于计算机屏幕或其它显示装置上,该像素的顶点通过一系列的操作、或图形绘制管线内的处理层而处理之。一同属管线仅仅是一系列串接处理单元、或阶层,其中前一层的输出作为随后层的输入。图形处理器的内容中,这些阶层包括,例如:每一顶点操作、像素组合操作、像素操作、纹理操作、光栅化操作、及片段操作。
于已知图形显示系统中,图像数据库(如命令列)可储存场景中对象的描述。该对象以一些小多角形描述,与覆盖对象表面类似,能以一些小砖瓦覆盖一道墙或其它表面。每一多角形被描述以顶点坐标(X,Y,Z于模型坐标系统中)列、一些材料面特性(即颜色、纹理、光泽度等等)的规格、及于每一顶点上至该表面的垂直向量。对具复杂曲线面的3-D对象而言,一般该多角形为三角形或四角形,而之后便能被分解为一对三角形。
变换引擎变换该对象坐标以反应来自于使用者输入由使用者所选择的观测角度。该使用者另外可指定观测范围、欲产生图像的尺寸、及观测容量的后端以依照要求包含或消除背景。
一旦观测区域被选定,剪辑逻辑电路便消除该观测区域外的多角形(即三角形),以及“剪辑”部分于观测区域内而部分于观测区域外的多角形。这些被剪辑的多角形将与于观测区域内的部分多角形一致,具有符合观测区域边缘的新边缘。该多角形顶点接着被传送至下一层于对应于该观测屏幕(于X,Y坐标)及每一顶点(Z坐标)相关深度的坐标中。于典型系统中,其次应用该明暗模型以考虑光源。接着该多角形及其颜色值被传送至光栅处理器。
该光栅处理器决定位于每一多角形中的像素,并且试着写入相关的颜色值及深度(Z值)至显示缓冲存储器。该光栅处理器比较该深度(Z值)与多角形中已经处理过并可能已经被写入该显示缓冲存储器的像素深度。当新多角形像素的深度较小时,表示它在已被写入该显示缓冲存储器的多角形前面,接着以此值取代该显示缓冲存储器中的值,因为该新多角形将会遮掩之前被处理及写入该显示缓冲存储器的多角形。重复该步骤直至所有多角形均被光栅化。此时,视频控制器以光栅次序,每次一扫描线显示显示缓冲存储器的内容于显示器上。
与先前技术一致,现在请参考图1,是显示于计算机图形系统中,绘图管线内的特定元件的功能流程图。绘图管线内的元件可于不同系统中变化,并且可以各种方式说明。如一般所知,主机计算机10(或于主机计算机上执行的图形应用程序接口)可通过命令流处理器12产生命令列。该命令列包括一系列的图形命令及数据,以绘制图形显示器上的“环境”。该绘图管线内的元件可操作数据及命令于命令列内,以绘制屏幕于图形显示器上。
在此方面,剖析器14可接收来自该命令流处理器12的命令、通过数据剖析以解译命令、及传递定义图形像素的数据沿(或到)该绘图管线。在这方面,图形像素可以位置数据(例如X,Y,Z,及W坐标)、明暗、及纹理信息定义。每一像素的所有消息可通过来自该命令流处理器12的该剖析器14被检索,以及被传递至顶点着色器16。该顶点着色器16可执行不同的转换于从该命令列所接收的图形数据上。就此而言,该数据可从世界坐标被转换至模型视景坐标(Model View coordinates)、投影坐标(Projectioncoordinates)、及最后至屏幕坐标(Screen coordinates)。由于该顶点着色器16所执行的函数处理已为本领域技术人员所熟知,因此不需进一步描述。之后,该图形数据可被传递至该光栅处理器18上,如上述总结操作之。
尔后,执行Z测试20于像素中的每一像素。于对应像素位置比较目前Z值(即目前像素的特定像素的Z值)与存储Z值以执行Z测试。于特定像素位置,该存储Z值提供先前已绘制图元深度值。当该目前Z值所指示的深度,比起该存储Z值,更接近观察角度时,则该目前Z值将取代该存储Z值,然后目前图形信息(即颜色)将取代对应的显示缓冲存储器像素位置(依该像素着色器22所决定)中的颜色信息。当比起该存储Z值,该目前Z值并没有更接近目前视角时,则该显示缓冲存储器及Z缓冲存储器内容均不需被取代,因为之前被绘制的像素将被视为在目前的像素前面。比起之前存储像素,更接近视角的被绘制及决定的像素像素,其相关于该像素的信息被传递至该像素着色器22上,然后于较接近目前视角的像素内,决定每一像素的颜色信息。
最佳化绘图管线的性能,可要求与管道低效能的来源有关的信息。于管线中图形数据的复杂度及大小暗示着管道低效能、延迟及瓶颈,会显著影响管线的性能。在此方面,识别上述数据流或处理问题的来源是有帮助的。
发明内容
本发明是揭露于图形处理单元的顶点着色器、几何着色器及像素着色器中,管理或执行资源的动态配置或重新配置的新方法与装置。本发明的实施例具体地包括多个执行单元,其中每一执行单元以多重线程操作配置。提供逻辑电路接收来自多个着色器层中每一层的要求,以执行与着色器相关的计算,以及排程该多个执行单元中的线程,以执行与被要求着色器相关的计算。该执行单元集区中的线程各自排程以执行与着色器相关的计算,因此特定线程可在时间内被排程,以执行不同着色器层的着色器操作。更进一步,于特定执行单元中,某些线程可被分配至一着色器的任务,而其它线程可同时被分配至另一着色器单元的任务。因为已知系统是利用专属着色器硬件,并未揭露动态及稳健线程分配。
本发明提供一种于图形处理装置中执行着色操作的方法,包括:提供包括多个执行单元的执行单元集区,其中每一执行单元以多重线程操作配置;接收来自多个着色器层的要求,以执行与着色器相关的计算;及排程该执行单元集区中的线程,以执行与该被要求着色器相关的计算;而于特定执行单元的线程中,某些线程可被分配至一着色器的任务,其它线程可同时被分配至另一着色器单元的任务。
本发明还具体地提供一种图形处理装置,包括:多个执行单元及排程逻辑电路。其中,每一执行单元以多重线程配置,而该排程逻辑电路,反应来自于多个的着色器层中每层的要求,以执行与着色器相关的计算,而且被配置以排程与着色器相关的计算至该等执行单元之中可用的处理线程。
本发明更进一步提供一种用于计算图形操作的方法。该方法包括:提供包括多个执行单元的执行单元集区,其中,每一执行单元以多重线程操作配置;从每一顶点着色器、几何着色器及像素着色器之中,于时间内接受多个计算要求;及分别分配上述的计算要求至该执行单元的可用线程。
本发明更进一步的目标为提供一种图形处理装置,包括:多个执行单元;及配置的排程器,其中该排程器于多个多重线程执行单元中配置线程以执行任务。其中该任务包括顶点着色操作、几何着色操作、及像素着色操作。进一步地,该排程器被配置,从根据效能参数的该等线程中,动态地重新配置任务。
通过以下图示及详细描述的检视,其它系统、装置、方法、特征、及优点于此技术中将显而易见。这一类更多的系统、装置、方法、特征、及优点均包括于此描述内、均于目前本发明揭露范围之内、以及均受所附的申请专利范围所保护。
附图说明
图1是显示已知的固定功能图形处理器的部分方块图;
图2是显示与本发明实施例一致的图形处理器阶层或部分方块图;
图3是显示与本发明实施例一致的图形处理器的处理器环境部分方块图;
图4是显示图形处理器的计算核心电路的元件方块图;
图5是显示与本发明实施例一致的执行单元集区及排程器方块图;
图6是显示与本发明某些实施例一致的排程器的部分方块图;
图7A、7B、7C、7D是共同显示依据本发明其它实施例的高阶操作流程图;
图8A、8B、8C、8D是共同显示依据本发明其它实施例的高阶操作流程图;
图9是显示依据本发明另一实施例的高阶功能操作流程图;
图10是显示高阶功能操作方法的流程图,用以确定任一着色器层是否为瓶颈;
图11是显示依据本发明实施例的执行单元中部分单元方块图;
图12及13是显示本发明实施例的高阶特征图。
[主要元件标号说明]
105~计算核心电路; 110~纹理过滤单元;
115~像素包装器; 120~命令流处理器;
125~集区控制单元; 130~回写单元;
135~纹理地址产生器; 140~三角形设置单元。
具体实施方式
以下将列举实施例,并配合所附图示详细说明。与图示有关的实施例叙述,非用以限定本发明至该实施例或揭露的实施例。相反地,用以包括所有选择、修改及等效设计。
现在参考图2,是显示本发明一实施例的部分元件方块图。图2具体地显示包括管线图形处理器的主要元件,被配置以执行或完成本发明的实施例。该第一元件被指定为输入组译器52,基本上接收或读取来自于存储器的顶点,该顶点用于形成几何图形,并为管线产生工作项目。就此而言,该输入组译器52读取来自于存储器的数据并由那些数据产生三角形、线、点、或其它像素并引入管线。一旦组译该几何信息后,即传送至该顶点着色器54。该顶点着色器54通过执行操作,如转换、扫描、及照明,以处理顶点。之后,该顶点着色器54将数据传送至该几何着色器56。该几何着色器56接收顶点为输入,并作为完整像素,因此能够输出的多个顶点以形成单一拓扑(topology),例如:三角形串行、线串行、点串行等。该几何着色器56可被进一步配置以执行各种算法,例如:细分(tessellation)、阴影范围(shadow volume)产生等。该几何着色器56接着将信息输出至光栅处理器58,负责剪辑、像素设置、并决定何时及/或如何引动该像素着色器60。该像素着色器60,为每个由该光栅处理器输出的像素所含盖的像素而被引动。如大家所知,该像素着色器60执行内插及其它操作,以共同地决定像素颜色并输出至显示缓冲存储器62。于图2中,各元件的功能操作为本领域技术人员所熟知,因此不须于此赘述。于此将更进一步说明,本发明用以执行动态排程为目的的系统及方法,及用以执行关于该顶点着色器54、该几何着色器56及该像素着色器60的操作及任务的分享处理的重复处理架构。因此,该等单元内的特定建置及操作不须于此叙述,以获得及体会对与本发明的充份理解。
现在参考图3,是显示依据本发明实施例所建构的图形处理器的示范处理器环境。尽管并没有显示图形处理所需的所有元件,但图3所显示的元件足以使本领域技术人员了解此图形处理器相关的一般功能及架构。该处理环境中心为计算核心电路105,用以处理各种指令。该计算核心电路105为多议题处理器,能于单一时序信号周期之内处理多重指令。
如图3所示,该图形处理器的相关元件包括该计算核心电路105、纹理过滤单元110、像素包装器115、命令流处理器120、回写单元130、及纹理地址产生器135。于图3中亦包括执行单元(EU)集区控制单元125,该单元并包括顶点高速缓存及/或流高速缓存。该计算核心电路105接收来自于各元件的输入,然后输出至其它元件。
举例而言,如图3所示,该纹理过滤单元110提供纹理像素数据至该计算核心电路105(输入A及B)。于某些实施例中,所提供的该纹理像素数据为512位数据,因此符合以下所定义的数据结构。
该像素包装器115提供顶点着色器输入至该计算核心电路105(输入C及D),亦为512位数据格式。此外,该像素包装器115向该执行单元集区控制单元125要求像素着色器任务,该执行单元集区控制单元125提供指定执行单元号码及线程号码至该像素包装器115。由于像素包装器及纹理过滤单元为于本领域技术人员所知,因此省略这些元件的进一步讨论。尽管图3所显示的像素及纹理像素封包为512位数据封包,须了解该封包的大小随实施例而改变,是取决于该图形处理器所须的工作特性。
该命令流处理器120提供三角形顶点索引至该执行单元集区控制单元125。于图3的实施例中,该索引为256位。该执行单元集区控制单元125组译来自命令流高速缓存的顶点着色器输入,并将数据传送至该计算核心电路105(输入E)。该执行单元集区控制单元125亦组译几何着色器输入,并将该输入提供至该计算核心电路105(输入F)。该执行单元集区控制单元125亦控制该执行单元输入235及该执行单元输出220。换句话说,该执行单元集区控制单元125控制至该计算核心电路105各自的流入及流出。
经处理之后,该计算核心电路105提供像素着色器输出(输出J1及J2)至该回写单元130。该像素着色器输出包括红/绿/蓝/透明度(alpha)(RGBA)信息。于此揭露实施例所提供的数据结构中,该像素着色器输出可被提供为两组512位数据流。其它位宽度亦可于其它实施例中实现。
类似于该像素着色器输出,该计算核心电路105输出包括UVRQ信息的纹理坐标(输出K1及K2)至该纹理地址产生器135。该纹理地址产生器135发送纹理要求(T#Req)至该计算核心电路105(输入X),而该计算核心电路105输出(输出W)该纹理数据(T#data)至该纹理地址产生器135。由于该纹理地址产生器135及该回写单元130的各种范例为本领域技术人员所知,因此省略这些元件的进一步讨论。再者,尽管所显示的UVRQ及RGBA为512位,须了解此参数亦可随其它实施例而改变。于图3的实施例中,该总线被分为两组512位信道,每组信道包含4点像素的128位RGBA颜色值及128位UVRQ纹理坐标。
该计算核心电路105及该执行单元集区控制单元125亦可将512位的顶点高速缓存溢出数据传送给彼此。此外,为更进一步处理,两组512位顶点高速缓存写入被说明为由该计算核心电路105(输出M1及M2)到该执行单元集区控制单元125的输出。
在叙述对该计算核心电路105的外部数据交换后,将注意转至图4,是显示该计算核心电路105的各种元件方块图。如图4所示,该计算核心电路105包括通过存储器接口仲裁器245,以耦接一个二阶(L2)高速缓存210的存储器存取单元205。
该L2高速缓存210接收来自于该执行单元集区控制单元125(图3)的顶点高速缓存溢出量(输入G),并将顶点高速缓存溢出量(输出H)提供至该执行单元集区控制单元125(图3)。此外,该L2高速缓存210接收来自于该纹理地址产生器135(图3)的T#要求(输入X),并将该T#数据(输出W)提供至该纹理地址产生器135(图3)以对应该接收的要求。
该存储器接口仲裁器245提供控制接口至该区域视频存储器(显示缓冲存储器)。虽然并未图标,总线接口单元(BIU),通过如PCI高速总线,以提供接口至该系统。该存储器接口仲裁器245和总线接口单元提供了在该存储器与执行单元(EU)集区L2高速缓存210之间的接口。于某些实施例中,该执行单元集区L2高速缓存,通过该存储器存取单元205,以连接至该存储器接口仲裁器245及该总线接口单元。该存储器存取单元205,将来自于该L2高速缓存210及其它区块的虚拟存储器地址,转换至物理存储器。
该存储器接口仲裁器245,为该L2高速缓存210提供存储器存取(如读取/写入存取)以读取指令/常数/数据/纹理,及直接存储器存取(如加载/储存以指示暂时存取、暂存器溢出量、顶点高速缓存内容溢出量等。
该计算核心电路105亦包括执行单元集区230,其包括多重执行单元(EUs)240a、...、240h(于此统一称为240),各自包括执行单元控制及区域存储器(未图标)。该等执行单元240的每个各自能于单一时序信号周期之内处理多重指令。因此,该执行单元集区230,能于尖峰时同时处理大量多重线程。这些执行单元240以及其极大的并行处理能力将详述于下。虽然图4显示8个执行单元240,须了解执行单元的数目不必局限于8,于其它实施例中可为较大或较小的数目。
该计算核心电路105,还包括执行单元输入235及执行单元输出220,各自被配置,以提供输入至该执行单元集区230,及接收来自于该执行单元集区230的输出。该执行单元输入235及该执行单元输出220可为交叉式总线(crossbar)、总线或其它已知输入机制。
该执行单元输入235接收来自于该执行单元集区控制单元125(图3)的顶点着色器输入(E)及几何着色器输入(F),并将信息提供至该执行单元集区230,以经由各个执行单元240处理。此外,该执行单元输入235接收该像素着色器输入(输入C及D)及该纹理像素封包(输入A及B),并将那些封包传送至该执行单元集区230以经由各个执行单元240处理。此外,该执行单元输入235接收来自于该L2高速缓存210的信息(L2 read),并于需要时将该信息提供至该执行单元集区230。
于图4的实施例中,该执行单元输出被分为偶输出225a及奇输出225b。类似于该执行单元输入235,该执行单元输出225可为交叉式总线、总线或其它已知架构。该执行单元偶输出225a处理来自于偶数执行单元240a、240c、240e、240g的输出,而该执行单元奇输出225b处理来自于奇数执行单元240b、240d、240f、240h的输出。此两个执行单元输出225a及225b共同接收来自于该执行单元集区230的输出,例如UVRQ及RGBA。于那些输出之中,可被指示以回到该L2高速缓存210,或通过J1及J2从该计算核心电路105输出至该回写单元130(图1),或通过K1及K2输出至该纹理地址产生器135(图3)。
在利用本发明的实施例来说明并叙述基本架构元件后,将叙述某些附加及/或选择性元件及实施例的操作方面。如上综述,本发明的实施例揭露可增进图形处理器整体效能的系统及方法。就此而言,图形处理器的整体效能,与通过该图形处理器的管线而处理的数据量成比例。如上所述,本发明的实施例利用顶点着色器、几何着色器、及像素着色器。该操作反而通过执行单元集区301、302、...、304及相同指令组执行,而非分别以不同设计及指令组的着色器单元来实现那些元件的功能。这些执行单元于设计上完全相同,并且可以编程的操作配置。于一较佳实施例中,每一执行单元具多重线程操作的能力,且更具体地能同时管理64个线程的操作。于其它实施例中,可实现不同数量的线程。请参考图5,是显示依据本发明一实施例的执行单元集区及排程器方块图。当通过顶点着色器(vertex shader)320、几何着色器(geometry shader)330、及像素着色器(pixel shader)340产生各种着色任务时,将分别被传送至各自的执行单元(经由接口310及排程器300)以被执行。
当个别任务产生时,该排程器300将那些任务分配至各种执行单元中可用的线程。当任务完成时,该排程器300更进一步管理相关线程的释放。通过该排程器300的部分完成此线程执行管理。就此而言,该排程器(scheduler)300的部分负责将顶点着色器、几何着色器、及像素着色器的任务/线程分配至各种执行单元,且该部分亦执行相关联的“簿记”(bookkeeping)。该排程器具体地保有全部执行单元的线程及存储器的资源表372(见图6)。该排程器300明确地知道哪些线程已经被分配任务并且被占用、哪些线程于线程终止后已经被释放、多少一般暂存文件存储器暂存器被占用、及每一执行单元中有多少闲置空间是可利用的。因此,提供逻辑电路374以监控及管理此表的内容。
因此当任务被分配至执行单元(如302)时,该排程器300将此任务标示为忙碌,并减去总共可用的一般暂存文件存储器以使每一线程相差适当的暂存文件标记数量。该标记通过该顶点着色器、几何着色器、及像素着色器的状态设置或决定。每一着色器层更可具有不同的标记尺寸。举例来说,顶点着色器线程可能要求10组一般暂存文件暂存器,而像素着色器线程可能只要求5组这样的暂存器。
当线程完成被分配的任务时,执行该线程的执行单元传送适当信号至该排程器300。该排程器300将依次更新它的资源表以标示该线程为闲置,并将总共线程的一般暂存文件空间加回该可用空间。当所有线程为忙碌或全部一般暂存文件存储器均已被配置(或剩余过少暂存空间而无法容纳额外线程),于是该执行单元被认为已满,该排程器300将不再分配任何额外或新线程至那执行单元。
亦提供线程控制器(thread controller)(未具体说明)于每一执行单元之内,而此线程控制器负责管理或标示每一线程为有效(如执行中)或为可用。多重线程执行装置及多重线程执行的管理已为人所知,因此不须于此进一步描述关于个别执行单元的线程执行管理。
该排程器300可被配置以进行二阶的排程,第一阶或低阶排程及第二阶或高阶排程。该第一阶排程,将顶点着色器、几何着色器、及像素着色器的任务,分配至各着色器层所指定的该执行单元集区。意即,顶点着色器任务被分配至指定为该顶点着色器层的执行单元集区。此第一阶排程为该顶点着色器、几何着色器、及像素着色器分别执行以选择特定执行单元及线程以处理任务要求(如被排程的任务)。各种线程的分配可以循环型式(round-robinstyle)处理。例如:若将3执行单元分配至该几何着色器层,于是来自于该几何着色器的第一任务将被传送至该第一执行单元的线程,第二任务到该第二执行单元,诸如此类。
该第二阶排程是关于管理执行单元的分配至各着色器层,以便于该顶点着色器、几何着色器、及像素着色器层中执行有效的加载平衡。
应当了解的是,于某些实施例中,可执行单一阶排程,因此于加载平衡基础上分别分配任务。于此系统中,所有执行单元皆为可用,以处理来自于任一着色器层的任务。的确,于任一特定时间,每一执行单元可具有线程活动,为每一着色器层执行任务。但应当了解到此一实施例的排程算法,比起有效率的二阶排程方法,于实行上更为复杂。
应当了解到第一及第二阶排程的解耦(decoupling)并不表示应用执行单元的配置必须于该第二阶(2nd)排程中执行。事实上,可执行精细(finer-grain)加载平衡配置,例如,根据每一线程(如:为顶点着色器操作而配置80个线程、为像素着色器操作而配置120个线程等等)。因此,欲分开第一及第二阶排程,仅表示加载平衡及任务要求分配处理的决策解耦。于此所提供的叙述,作为说明的目的,并依此基本认识应可理解。
本发明的某些实施例更具体地指出由该排程器300所执行的第二阶排程操作。于一较高阶中,该排程器300明确地操作以将各种执行单元302、304、...、306个别配置及分配至该顶点着色器320、几何着色器330、及像素着色器340之一。该排程器300更进一步被配置以执行加载平衡操作,包括各种执行单元的动态重新分配及重新配置,以作为该顶点着色器320、几何着色器330、及像素着色器340所须的各自工作量。
该第二阶排程器的一目的为使三个着色器层(顶点着色器(VS)、几何着色器(GS)、及像素着色器(PS))的加载达到合理的平衡,以让整个执行单元(EU)集区达到最佳的整体效能。有许多因素影响着该顶点着色器、几何着色器、及像素着色器的载入,例如顶点着色器、几何着色器、及像素着色器的每一任务的执行指令数目、指令执行效率、该初始输入像素对几何着色器输出像素比、及像素对像素比,都被三角形的尺寸、三角形的选择及剔除率等所影响,而这些因素可能经常改变。该执行单元集区的效能,可通过由该顶点着色器、几何着色器、及像素着色器所输出的顶点、像素、及像素数目,或通过整体执行单元的使用来测量。当整体执行单元使用率达到最高水准时,该执行单元集区达到最佳效能。整体执行单元使用率,可通过总指令流量(于每一周期内被执行的总指令数),或通过平均执行单元指令发送率(每一执行单元于每一周期内所执行的平均指令数)来测量。
与本发明的范畴及精神一致,可以利用多种排程计划。而这样的计划可为简单的尝试错误计划。更加进步的排程计划则可具效能预测。对于基本计划而言,假设初始配置L0。首先,找出瓶颈在哪里(假设着色器层A)。接着选择最近为瓶颈的一着色器层(例如B层),并且将执行单元由B层切换至A层。这成为配置L1。然后,于时间T之后,测量最终的流出率(或L1的总指令流量)。若L1效能少于(或等于)L0效能,则重复该重新配置以找出另一着色器层并切换之。基本上,加载平衡可被视为设法找出最佳或较佳的执行单元配置。当执行单元由另一层切换至A层时,执行检查以了解结果是否比L0好。若该结果并非更好,则继续该流程直到循环完所有其它层为止。当测试完所有其它层并且仍然找不到较佳的配置时,该加载平衡以配置L0结束。当找出较佳配置且新瓶颈发生时(例如A’层),则A’层成为该较佳配置,然后A,层成为需要除去瓶颈的目标层。然而若L1大于L0,则已找到较好的配置。若是这样的话,则继续寻找瓶颈在哪里(例如A’层)。
接着,试图将该执行单元由其它层切换至A’层,并与前次已知配置的m(m为着色器层的数量)记录相比较。若符合那些记录的当中一个,则跳过它直到根据最近瓶颈的规则找出新配置。于一实施例中,试图将执行单元由另一层切换至A’层,且该新配置符合前次已知记录之一,则该记录的流量或流出率信息将用于决策-若比L0好,于此情况下,该实施例将切换至那个配置。然而若是更差的话,则该实施例继续寻找其它配置。关于切换的决策,与先前段落所叙述是相同的。差别为,它是预先记录效能信息以做出决策,而不是切换后再于实际情况下测量该效能。
在上述例子里,该流程起始于配置L0。配置至着色器层A、B、C、...的执行单元数量分别为N_A、N_B、N_C、...(其中N为整数),而A层被确定为瓶颈。例如B为最近瓶颈的着色器层,接着此实施例的流程首先将执行单元由B切换至A(A为目标层)。那时,该配置为L1,着色器层A、B、C、...等分别为N_A+1、N_B-1、N_C、...。若该结果没有比L0好,则下一个最近瓶颈层为C,然后该流程改为将执行单元由C切换至A(基于L0)。那时,该配置(L2)于是成为N_A+1、N_B、N_C-1、...。而这与将执行单元由C切换至B(基于L1)同样有效,且在切换至L2之前,并不需要回到L0。因此所有尝试可根据目前的配置及一次切换执行单元的步骤(或具有相同尺寸的执行单元或者线程的一群组)。切换执行单元,或切换具有相同尺寸的执行单元或者线程的群组,保证每一配置的变化占一个步骤,且该流程可于一步骤中返回每一迭代的原始配置(L0)。
进一步地,当一新配置被发现比L0好时,结束目标着色器层A的目前迭代。然后该瓶颈的着色器层A’成为新目标且重复该流程。
应当了解到,于此方法中,本实施例不能直接跳越至已知的最佳配置。的确,从上述解说中,该计划保证在每一配置变化之间并没有跳越。相反地,寻找及整合发生在相同流程中。每次该流程将执行单元从一层切换至另一层时,便测量效能以及与此回合较佳配置的结果互相比较,以决定继续或停止。先前的记录对于防止不必要的切换是有帮助的。
对于这样一个基本计划,已知最近配置的m笔记录可与它们的效能数据(最后的流出率或总指令流量)一起储存。此外,当管线中有一些变化时,重新开始该整合流程,意即着色程序改变、由那些着色层输入/输出的比率改变所造成的流程变化等等。
与本发明的范畴及精神一致,比起上述的基本尝试错误方法,可实现更先进的可预测排程计划。于此方法下,根据某些已知因素(例如:每一着色器层中每一执行单元的最大发送率或指令流量)以计算预计(或预测)效能,并且由此决定是否切换着色器层。
为进一步说明此高阶操作,考虑一图形处理器的实施例,其具有8个执行单元的集区。作为初始配置,前两个执行单元可被配置至顶点着色器320,而次两个执行单元可被配置至几何着色器330,而最后四个执行单元可被配置至像素着色器340。当通过各种着色器单元产生个别任务时,将那些任务分配至指定执行单元(例如通过第一阶排程)的个别(可用)线程。当任务完成后,接着将线程分配至那些被释放(并且再次变为可用)的任务。一旦执行单元被配置到一特定着色器,该排程器保留该配置,直到该排程器300将该执行单元重新配置至另一着色器。本发明实施例用以有效进行执行单元的动态重新分配及重新配置的系统及方法。
如上所述,图形处理器的整体效能,与经由该绘图管线所处理的数据量成比例。当通过图形处理器于管线化模式(例如:于光栅化之前执行的顶点操作、于像素着色之前所执行的光栅化等等)而处理数据时,该图形处理器的整体效能被管线中最慢(或最拥塞的)的元件所限制。因此本发明实施例的排程器动态重新分配执行单元以增进该绘图管线中,顶点着色器、几何着色器、及像素着色器整体效能。与此目的一致,当这些单元其中之一为瓶颈时,该排程器300,将目前分配至其它着色器单元之一的较不忙碌执行单元,重新分配至现在已拥塞的着色器单元。尽管方法将详述如下,对于共同处理来自于顶点着色器、几何着色器、及像素着色器的数据而言,此重新分配可依次以各种策略或实施例达到执行单元的最佳配置。一配置,尽可能达到着色器单元都不为瓶颈的目的(表示就整个图形处理器而言,绘图管线中剩下的固定功能部分为瓶颈,表示该执行单元的配置并未导致图形处理器整体为瓶颈)。
关于执行单元的动态排程及重新分配,与本发明实施例一致,可以了解到在顶点着色器320、几何着色器330、及像素着色器340上的相对需求,将随时间而有所变化,这取决于一些因素,包括:像素相对尺寸与像素尺寸的比较、明暗条件、纹理条件等等。对于具有一大像素对像素比率的像素而言,与该顶点着色器320比较,该像素着色器340的操作一般而言将消耗更多资源。同样地,对于具有一小像素对像素比率的像素而言,与该顶点着色器320比较,该像素着色器340的操作一般而言将消耗较少资源。其它因素可包括顶点着色器、几何着色器、及像素着色器的程序长度(因为单元可程控),及被执行指令的类型等等。
在讨论具体实施之前,应当理解的是,依照本发明实施例,可以执行各种用以动态重新分配不同执行单元的策略。例如:依照本发明的一实施例,可使用尝试错误法。在此实施例中,若特定着色器单元被确认为瓶颈,该系统及方法将测量及记录管线(或至少此三个着色器层)的整体效能。各种测量及估计整体效能的方法将详述如下。
在记录目前的效能后,该排程器300可将目前分配至两个不为瓶颈着色器单元其中之一的执行单元,重新分配至目前已拥塞的着色器单元。在重新分配生效后,该系统及方法可随后采取整体效能测量,以估计该重新配置是否增进或降低整体效能。若整体效能降低,则该排程器取消此重新分配(并从剩下不为瓶颈执行单元之中,随意地重新分配执行单元)。采取适当的测量保证任务配置不重复,或不会花费过多资源或时间于执行改变执行单元分配的管理任务上,应当了解的是,这一尝试错误法可有效达到执行单元与各种着色器层的最佳配置。
于其它实施例中,该排程器300可被配置以估算可能的效能增加或减少,而导致执行单元的预测性重新分配。于此实施例中,与其实际执行重新分配再接着测量实际效能增加或减少,不如利用效能预测或估算。这样的预测估算可以通过考虑种种原因而实现,例如各种执行单元的可用资源(如存储器空间、线程、可用暂存器等等)。于一实施例中,该预测估算根据指令流量及目前为瓶颈的着色器层而达成,并利用一般暂存文件存储器及线程使用,以确定该瓶颈着色器层。当这样的预测或估算被认为是一个可积极增进效能的重新配置时,接着执行该重新配置。应当了解的是,于多数这样的实施例中,该预测或估算的效能变化具有一些既有的准确性缺点。然而,可以了解到造成不准确估算的缺点少于需要执行重新分配的代价,使得于某些情况下,这样的实施例为可行的选择。
应当了解的是,于某些实施例中,该第二阶排程器中有两种不同的排程配置,该排程器通过排程控制暂存器配置。第一为静态排程配置,该驱动器静态地编程该执行单元配置。该驱动器,可根据硬件效能计数器于先前显示或整批绘图期间所收集的某些静态数据,决定如何分配执行单元。第二为动态排程配置,硬件动态地完成执行单元分配。于动态排程配置中,该驱动器要提供初始分配(不然,若无特定,该硬件选择硬件预设分配并从那里开始),然后传送命令以通知该硬件于某一情况下重新评估该分配,或强迫分配并且改回至静态配置。
应该更进一步地了解到,对各种不同着色器单元的执行单元的初始分配为周期性执行的操作。就此而言,当该图形处理器进行状态变动时,各种着色器单元可能完全被重新分配,以于新绘图状态下执行操作。例如,对于具不同着色特性的绘制目标的着色特性变动、可能变动的明暗条件、于绘图场景中可被绘制的新目标、以及其它可能发生的多种事件,而造成该图形处理器的状态变化,因此基本上重新开始处理。有各种方法及机制用以通知这样的一个状态变化,包括通过软件驱动器产生信号,该驱动器可被用以发送该执行单元的此批分配至该排程器。
现在参考图6,是显示该排程器300内部某些元件的方块图。首先,该排程器300包括能根据既定比例,完成将执行单元的初始分配到各种着色器单元的逻辑电路。于图形处理器中,此既定比例可为固定,或选择性地由该软件驱动器发送至该图形处理器。
再者,于某些实施例中,具有两种配置,且于静态模式中,该软件驱动器控制该执行单元分配。于动态模式中,该硬件可根据实时的瓶颈状态自己决定。该软件驱动器可根据由硬件效能计数器于先前显示或整批绘图期间所收集的某些统计数据做决定。该排程器300还包括逻辑电路360,根据实时效能参数或各个着色器单元所测量的效能,被配置以完成执行单元的动态重新配置。如前所述,若现在并无着色器单元为瓶颈,则目前并不需要执行执行单元的重新分配,因为这样做并不会增加该图形处理器的整体效能。因此,该排程器包括逻辑电路362,被配置以确定是否有瓶颈存在于任一着色器单元中。一种方法是检查或确定每一着色器层中该等执行单元满的程度。有许多方法可确认这样的瓶颈。一种方法为确认情况,例如:所有线程为忙碌的情况,或所有存储器被占用的情况。如上所述,于一实施例中,每一执行单元被配置具有32个内部线程以供执行。若该排程器300确定被分配至特定着色器的相关执行单元的所有线程(或大体上所有线程)目前为忙碌,则那个特定着色器单元可被认定全满。当所有属于一着色器层的执行单元皆全满时,则该着色器层被视为全满。当这一个着色器层已满而下一管线层并非全满时,该着色器层被视为瓶颈。同样地,可用其它资源评估特定着色器单元是否满了。例如,每一执行单元可具有既定数量的配置存储器或暂存空间。于利用或消耗某些既定数量的存储器或暂存空间之后,该排程器300可确认那个别执行单元若已全满。
需说明的是,于一实施例中,通过配置于该着色器层的执行单元满的程度及次一管线层的状态以确定一着色器层的瓶颈。若所有配置于该着色器层的执行单元已满且次一管线层(另一着色层或固定功能区块)的状态并非全满时,该着色器层被视为瓶颈。
该排程器300还包括逻辑电路364用以将执行单元重新分配至不同着色器。应当了解的是,此一重新分配包括需要执行的步骤以停止分配属于被分配至该执行单元的先前着色器层的任何新任务,并开始为现有的任务/线程排出该执行单元。既然执行单元硬件支持两组着色器内容,于之前的着色器内容结束前,允许属于被分配至该执行单元的新着色器层的任务开始进来(这是为预防由于着色器层改变的管线停滞)。例如,假设执行单元1 302及执行单元2 304目前分配至该顶点着色器320。更进一步假设该像素着色器340由该排程器330确定处于瓶颈情况中,且该排程器330更进一步寻找以将执行单元2 304重新分配至该像素着色器340。在把任务从该像素着色器340传送至最近分配的执行单元之前。或者,该排程器330可停止传送新任务至执行单元304,然后一旦目前于执行单元304的全部任务已完成进行,则执行单元304可被重新分配至像素着色器340,且可开始分配新任务(前面所提)。
于一实施例中,该排程器300还包括逻辑电路366用以确定最不忙碌、不为瓶颈的执行单元。于一实施例中利用此逻辑电路366,该排程器300可从其余执行单元中利用或选择该最不忙碌的(未被分配至为瓶颈着色器单元的执行单元)。此判断可用任一各种方式达成,包括评估个别执行单元的可用资源(如线程、存储器、暂存空间)、评估目前分配至个别执行单元的数量等等。于一实施例中,利用最近为瓶颈的着色器层完成判断(如前所述)。
最后,该排程器300包括逻辑电路368用以比较或测量不同执行单元的效能。如上所述,本发明某些实施例利用排程器300执行各种执行单元的尝试错误重新分配。于之前,及之后,针对此重新分配,该排程器测量该执行单元的效能,并且特别是各种着色器单元所聚集的执行单元,以评估重新分配前后的整体效能。除了于个别基础上评估该执行单元之外,整体效能亦可以其它方法评估。例如,评估像素着色器的输出(有时被指为流出率),以确定或测量已完成处理操作(意即准备好传送至显示缓冲存储器以显示的像素)的像素数量。或者,亦可评估每一个别着色器单元的输出,以估算整理效能,特别是于不使用或略过一或多个着色器单元的情形下。
现在参考图7A-7D,是共同显示依据本发明实施例的高阶操作流程图。于第一步骤402中,该排程器依既定比例,将执行单元分配至各种着色器单元中。例如,于配置中具有8个执行单元,则2个可分配至则顶点着色器,2个可分配至该几何着色器,而其余4个一开始则分配至则像素着色器。之后,允许该执行单元处理接踵而来的要求或任务于某一段期间内(步骤404)。之后,该排程器检查确定是否任一着色器单元为瓶颈。若没有,该系统于进行相似比较之前,允许恢复处理于另一既定时间(步骤406)。若该排程器实际上确定该着色器层其中之一瓶颈,则该系统以目前执行单元的配置及分配,测量及记录目前效能(步骤408)。之后,要采取的步骤取决于哪一个着色器单元被认为瓶颈了。若确定(步骤410)该顶点着色器为瓶颈,则本发明的一实施例,从该几何着色器或该像素着色器之中,选择可用的执行单元,以重新配置或重新分配。如步骤412所说明(图7B),本发明的一实施例从其它着色器层的最近不为瓶颈中选择。那表示,若找到先前的瓶颈,且该几何着色器的执行单元被重新分配,则在该几何着色器或该像素着色器之间,步骤412将由该像素着色器选择执行单元(若该几何着色器近来为瓶颈)。
与图7B的叙述一致,该排程器评估该被提出的配置或分配是否已于之前测试过(步骤413)。如前所述,本发明的一实施例,于各种着色器区块之间,执行动态重新配置执行单元的尝试错误方法。若步骤413确定配置或被提出的配置并未于之前测试过,接着进行步骤414,从该几何着色器或像素着色器中,执行执行单元的适当重新分配给该顶点着色器。另一方面,若步骤413确定提出的配置之前已试过,该排程器接着测量及比较目前的效能及先前被提出配置所记录的效能(步骤415)。比起先前被提出配置生效后而实现的效能,若目前的效能较好(步骤416),则保留目前来自于该几何着色器或像素着色器的执行单元的配置或分配(步骤417)。然而,比起目前效能,若先前配置造成较好的效能,则该排程器继续执行该执行单元的重新分配(步骤414)。应当了解的是,于图7A及7B(关于为瓶颈顶点着色器层的重新分配)所说明的配置方法,在该顶点着色器仍为瓶颈时,该系统因此不会在各种执行单元的重新分配间反复来回,因此仅于各种操作配置中反复测试时消耗资源。
返回图7A的步骤410,可知若该几何着色器、或像素着色器被确定为瓶颈,则该流程各自进入图7C及7D。在这些图中每一说明的操作,类似于图7B有关于瓶颈顶点着色器而叙述的操作。因此,通过参考图7B的说明,理解到那些方法的操作。
现在参考图8A-8D,是共同显示依据本发明另一实施例的高阶操作流程图。如于图7A-7D中所说明的实施例一样,该排程器依既定比例,对各种着色器单元执行所有执行单元的初始分配(步骤502)。之后,该系统于既定时间内,依此比例处理着色器任务(步骤504)。之后,执行检查以确定是否任一着色器单元为瓶颈(步骤506)。若是如此,于目前配置下测量及记录目前效能(步骤508)。之后,该系统继续进行,是取决于哪一个特定着色器单元被确定为瓶颈(步骤510)。举例来说,若该顶点着色器被确定为瓶颈,则该系统将目前分配至该像素着色器的执行单元,通过重新分配至目前为瓶颈的顶点着色器以继续进行(步骤512)。之后,该系统测量该效能(于重新分配之后)(步骤512)、及确定(步骤516)该效能是否增进。若确定效能并没有增进,则该系统取消该重新分配(步骤518),并且将目前分配至该几何着色器的执行单元,用以代替该为瓶颈的顶点着色器。于重新分配之后,该系统再次测量效能(步骤520),及确定该效能是否增进(步骤522)。若没有,则再次取消该重新分配(步骤524)。图8C及8D说明当瓶颈被确定在几何着色器或像素着色器时,各自采取的类似步骤。
现在参考图9,是显示依据本发明实施例的某高阶操作流程图。如前所述,状态的变化,或其它事件,于绘图管线中,可导致重置或重新开始的情况。此事件可由软件触发或通知,或由专属硬件检测(步骤602)。于一实施例中,在此状态变化被表示或者检测到之后,从因为状态改变而受到影响的每一着色器层最上端,利用管线传送命令标记(步骤604)。之后,该系统等待,直到所有有效着色器层的底端接收此标记,而在那时,该系统重置某些记录,并重新开始某些计时计数器(步骤606)。之后,该系统等待时间T(步骤608)。在这个时候,于此新绘图状态下,该系统开始处理图形,并开始动态分配及管理各种着色器层,如上述实施例中的概括说明。
于图9的实施例中,该系统检测或确定(于步骤610)任一着色器单元或着色器层是否为瓶颈。此确定可以各种方式达成,而一方法是显示于图10(将讨论如下)。若无着色器层受阻(见步骤612),则该绘图管线的瓶颈于它处,管线的固定功能部分(见步骤614)。然而,若着色器层被确定受阻(或为瓶颈),则该系统为瓶颈的着色器层记录平均指令发送率(步骤616)。那就是,该系统测量及记录每单位时间所执行的平均指令数量。关于不为瓶颈着色器层(亦被称为饥饿着色器层(starving shader stage),因为具有可用的资源用以处理),该系统从该层将执行单元切换至该瓶颈层之后,估计或预测最大总指令流量,并比较预测及目前所测量的流量。若该预测流量大于目前所测量流量,则该层具将执行单元的切换至该瓶颈着色器层的资格(步骤618)。该系统确定(步骤620)一个或多个执行单元或着色器层具切换的资格。若没有,则整合结束(步骤622)。然而,若一个或多个执行单元或着色器层具此切换资格,则该系统在预测及目前流量之间找出具最大比例的着色器层,并将执行单元由那层切换至瓶颈层(步骤624)。之后,该系统从受到切换影响着色器层的最上端利用管线传送命令标记(步骤626),并等待直到所有有效着色器层的底端接收此标记,然后再次重新开始适当的计数器,及重置适当的记录(步骤628)。
现在参考图10,是显示某高阶操作处理流程图,以确定目前哪一着色器层为瓶颈。如前所述,且将被本领域技术人员所熟知,于任一特定时间或对某些绘图操作而言,可能不使用一或多个不同着色器层。因此,图10的方法确定(步骤702)该像素着色器是否为致能。若为如此,接着该方法确定该像素着色器的所有执行单元是否已满,及该像素着色器的输出缓冲存储器是否未满。有关于确定所有像素着色器执行单元是否已满,该系统可调查该执行单元的资源,例如:所有线程现在是否为忙碌、执行单元的所有暂存空间是否已满、执行单元的存储器资源是否已满等等。因此,可利用这些因素的不同或变化,与本发明的实施例一致,以完成此确定(步骤704)。若所有这些资源全满,且该输出缓冲存储器未满,则指出该像素着色器为瓶颈(步骤706)。就此而言,该输出缓冲存储器具有能力从该像素着色器接收更多输出,但该像素着色器并未产生足够输出,所以该像素着色器中并没有更多可用的资源以产生额外输出。
同样地,该方法确定该几何着色器是否为致能(步骤712)。若为如此,该方法确定所有几何着色器执行单元是否已满,及该几何着色器输出顶点快取存储器是否未满(步骤714)。若符合此条件,则该系统确定该几何着色器为瓶颈(步骤716)。
同样地,该方法确定(于步骤722)该顶点着色器是否为致能。若为如此,该方法确定所有顶点着色器执行单元是否已满,及任一几何着色器执行单元是否未满(步骤724)。当该几何着色器于该顶点着色器的下游(于管线中)时,几何着色器执行单元中的执行能力无疑表示该几何着色器不为瓶颈,且具有能力由该顶点着色器接收额外数据或输出。然而,若该顶点着色器的所有执行单元全满,此为该顶点着色器为瓶颈的指示(步骤728),因为该顶点着色器无法够快地处理信息,以传送该几何着色器层的可用资源。
若图10的各种决策区块允许该流程到达步骤730,则可确定无着色器层为瓶颈。本质上,若所有致能的着色器层具有可用的处理资源、或对于并不具有可用资源的任一着色器层而言,从那着色器层的输出或紧接的下游单元具有可用的处理能力。关于着色器是否为瓶颈的确认,本发明的实施例可包括效能逻辑电路,被配置以确定是否有效能瓶颈,于顶点着色器、几何着色器、或像素着色器之一或多个之中,以达成此估计。此效能逻辑电路可被配置以评估不同项目或效能衡量,以完成效能估算(例如瓶颈)。
现在参考图11,是显示依据本发明实施例的执行单元800中,某些单元及逻辑电路方块图。如上所述,每一执行单元800包括必要逻辑电路810,以执行多个独立线程。于一实施例中,每一执行单元800具有必要逻辑电路,以执行32个独立、并列的线程。其它实施例可支持额外或较少的线程。每一执行单元800还包括:存储器资源820、及暂存空间830。此外,每一执行单元800包括控制逻辑电路或执行单元管理器840。该执行单元管理器840用以管理及控制执行单元的各种操作,以完成各种功能和特征如此处的说明。例如:该执行单元管理器840包括逻辑电路842配置以分配可用的线程,为了完成被分配至该执行单元的任务。线程的分配,包括不同资源(包括存储器及暂存器)的结合及分配,以支持线程的操作。同样地,该执行单元管理器840包括逻辑电路844,一旦该分配的任务完成,为了随后而来的任务再利用线程。更进一步还提供逻辑电路846,以估计指令流量,与图9步骤618的简短说明有关。同样地,提供逻辑电路848以测量实际指令执行率,如图9的步骤616所述。
对本领域技术人员而言,应当了解的是,可于执行单元中包括额外的元件,用以完成各种不同任务及操作,一致于所提供实施例的叙述。
应当了解的是,与图7及8有关的说明流程图已被简化,目的为说明实施例的某些操作。于各种实施例中,当然可以包括额外的步骤及评估,在此不特别加以说明。
总而言之,在此已说明一种新的系统及方法,于汇图管线的若干着色器层中,执行执行单元集区的有效加载平衡。于上述实施例中执行二阶排程,藉此执行第一阶排程于该线程阶(如分配某些线程于特定执行单元中以执行某些任务),且执行第二阶排程于执行单元阶(如分配某些执行单元至某些特定着色器层)。实施例亦已说明该第二阶排程可为静态(例如由软件驱动器控制),或动态(例如由绘图硬件实时控制)。实施例还更详述用以执行动态排程的各种方法。一种实现方法为加载平衡排程(根据工作量平衡排程)。另一种方法为根据指令流量(或发送率)的计算而排程/配置。又另一实施例说明排程及分配执行单元至各种着色器层的尝试错误法。然而应当了解的是,可完成额外的实施例,以符合本发明的范畴及精神。
此处所使用的名词“逻辑电路”被定义为专用硬件(即电子或半导体电路),及一般用途的硬件,经由软件编程以完成某些专用或已定义的功能或操作。
于流程图中,任何处理叙述及方块应当被理解为表示模块、区段、或是包括一或多个可执行指令的部分程序,以执行过程中的特定功能及步骤,且于本发明所揭露较佳实施例的范畴内,包括可供选择的实施,可不依顺序执行功能,包括大体上同时发生或以相反顺序,取决于牵涉的功能性,通过本发明揭露的相关技术可比理解。
虽然示范的实施例已被显示及说明,可以针对所揭露进行一些改变、修正、或是交换。所有的这些、修正、或是交换,应该于所揭露的范畴内被看到。例如:于此叙述的动态排程已注意到实施例具在有三个着色器(顶点着色器、几何着色器、及像图着色器)。应当了解的是,本发明的实施例可于只有两个着色器(例如顶点着色器与像素着色器)、或超过三个着色器情况下执行。
举例来说,于一实施例中,提供一种方法,通过提供执行单元集区,其包括多个执行单元,于图形处理装置中执行着色操作,其中每一执行单元被配置以多重线程操作。排程单元,由多个着色器层,个别接收要求,以执行着色相关运算。并且于该等执行单元集区中排程线程,以执行着色相关运算。于一实施例中,该执行单元集区的线程个别排程,以执行着色相关运算。因此,特定线程,可于时间内被排程,以于不同的着色器层中执行着色器操作。
于一实施例中,这个方法接收要求,特别是接收来自于顶点着色器层、几何着色器层、以及像素着色器层的每一要求。于另一实施例中,这个排程更特别地包括排程被要求的着色器相关计算,因此最大化相关绘图处理管线的整体流量。于另一实施例中,这个排程可更特别地包括排程被要求的着色器相关计算,于通过该顶点着色器层、该几何着色器层、以及该素着色器层所要求的着色器相关计算中,提供一个相关平衡排程于执行单元上。
于另一实施例中,提供一种图形处理装置,包括多个执行单元,每一执行单元可以多重线程操作配置。排程逻辑电路被配置,将着色相关运算排程至该等执行单元内可利用的处理线程,该排程逻辑电路,响应来自于每一多个着色器层的要求,以执行着色相关运算。于此实施例中,集区的执行单元可被分享,因此特定线程可于时间内被排程,以于不同着色器层执行着色操作(也就是,执行单元及特定线程并非不变的)。于一实施例中,该排程逻辑电路更特别地被配置于每一执行单元基础上排程要求,因此于任一特定时间,特定执行单元的可利用线程能被排程以处理来自于特定着色器层的要求,
又于另外一实施例中,提供一种计算绘图操作的方法,包括提供一组包含多个执行单元的执行单元集区,其中每一执行单元可以多重线程操作配置。这个方法,于期间内接收来自每一顶点着色器、几何着色器、以及像素着色器多个运算要求。另外,这个方法将个别的该运算要求分配至执行单元内可利用的线程。
已经详尽叙述过某些实施例,请参考图12,是显示与本发明实施例一致的高阶方块图。图12类似于已知的图1,且两图的比较说明本发明的进步。简而言之,提供独特硬件元素916,包括执行单元分享集区,以处理顶点着色、几何着色、以及像素着色的个别运算。
现在请参考图13,相关联于图12。如同本文前面提到的,执行单元的集区916包括多个类似执行单元,其中每一个可被配置,以处理多重线程。于特定时间,当其它执行单元(或者线程)被配置以执行几何着色及/或顶点着色时,某些执行单元(或者甚至某些线程)可被配置以执行像素着色操作。不同执行单元(或者线程)的配置、动态重新配置,可于工作量、积压、以及/或者需求的基础上执行。也就是,当着色操作的需求产生时,可分配没有使用的执行单元(或者线程)以执行那些操作。当执行单元(或者他们的资源)变的无法利用时(因为使用在执行运算),则系统可更聪明地执行这些执行单元或者他们的资源的排程。
例如,假设执行单元(或线程)均被配置且被分配以执行指定着色任务。该系统可以监控着色操作积压的要求(等待处理)。假设像素着色操作的积压开始大量增加,而顶点或几何着色要求尚未变成积压时,该系统可以重新配置执行单元的配置(或线程)以重新配置一些顶点或者几何着色操作到像素着色操作。这样一个加载平衡可以通过管线增加整体流量。
如图13所显示,逻辑电路940可被提供以管理及/或排程执行单元(或者线程),以执行顶点着色操作。逻辑电路950可被提供以管理及/或排程执行单元(或者线程),以执行几何着色操作。同样的,逻辑电路960可被提供以管理及/或排程执行单元(或者线程),以执行像素着色操作。另外,额外的逻辑电路930可被提供以整体管理及/或排程执行单元(或者线程)。此整体管理或者排程可以各种方式执行,及以各种因素为基础。因素可包括相对需求、积压、资源损耗等等。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围当视所附的权利要求范围所界定者为准。
Claims (24)
1.一种于图形处理装置中执行着色操作的方法,包括:
提供执行单元集区,包括多个执行单元,其中每一执行单元同时处理多重线程;
接收来自多个着色器层中每一层的要求,以执行与着色器相关的计算;以及
排程该执行单元集区中的线程,以执行与该被要求着色器相关的计算;
其中,于特定执行单元的线程中,某些线程可被分配至一着色器的任务,其它线程可同时被分配至另一着色器单元的任务。
2.根据权利要求1所述的于图形处理装置中执行着色操作的方法,其中该执行单元集区中的线程各自排程以执行与着色器相关的计算,以使特定线程可在特定时间内被排程,以执行不同着色器层的着色器操作。
3.根据权利要求1所述的于图形处理装置中执行着色操作的方法,还包括根据无效线程的配置及有效线程的释放而更新资源表,指示该线程的新状态。
4.根据权利要求1所述的于图形处理装置中执行着色操作的方法,其中该接收要求的步骤更加具体地包括从每一顶点着色器层、几何着色器层及像素着色器层中接收要求。
5.根据权利要求1所述的于图形处理装置中执行着色操作的方法,其中该排程步骤更加具体地包括排程与着色器相关的计算,以将相关绘图处理管线的流量最大化。
6.根据权利要求1所述的于图形处理装置中执行着色操作的方法,其中,该排程步骤更加具体地包括排程与着色器相关的计算,在从顶点着色器层、几何着色器层及像素着色器层所要求的着色器相关计算中,提供相对地平衡排程于该等执行单元上。
7.根据权利要求1所述的于图形处理装置中执行着色操作的方法,其中,该排程步骤更加具体地包括评估资源的可用性。
8.根据权利要求7所述的于图形处理装置中执行着色操作的方法,其中,该评估还包括评估执行单元中可用的暂存空间或存储器空间的可利用性、并且根据资源的可用性,以排程与着色器相关的计算。
9.根据权利要求1所述的于图形处理装置中执行着色操作的方法,其中还包括当执行单元由非瓶颈的着色器层重新被分配至瓶颈的着色器层时,确定整体效能是否将会改进。
10.根据权利要求9所述的于图形处理装置中执行着色操作的方法,其中确定整体效能是否将会改进包括:执行尝试错误的重新分配、以及只有当效能指标被明显改进时才维持该重新分配。
11.根据权利要求9所述的于图形处理装置中执行着色操作的方法,其中确定整体效能是否将会改进包括:估计指令流量以作为特定执行单元的重新分配、以及只有当估计的指令流量超过实际测量的指令流量时,才执行重新分配。
12.一种图形处理装置,包括:
多个执行单元,每一执行单元同时处理多重线程;以及
排程逻辑电路,被配置以排程与着色器相关的计算至该等执行单元之中可用的处理线程,该排程逻辑电路反映来自于多个着色器层中每层的要求,以执行与着色器相关的计算,
其中,于特定执行单元的线程中,某些线程可被分配至一着色器的任务,其它线程可同时被分配至另一着色器单元的任务。
13.根据权利要求12所述的图形处理装置,其中更进一步包括维持资源表的逻辑电路,该资源表确认每一执行单元的有效线程、存储器配置及使用,其中,该排程逻辑电路被配置,以评估与着色器相关计算有关的该资源表的内容。
14.根据权利要求13所述的图形处理装置,其中,该维持资源表的逻辑电路更进一步地被配置,根据无效线程的配置及有效线程的释放而更新该资源表,以指明该线程的新状态。
15.根据权利要求12所述的图形处理装置,还包括线程控制器,被配置根据无效线程的配置及有效线程的释放而更新该资源表,以指明该线程的新状态。
16.根据权利要求12所述的图形处理装置,其中该排程逻辑电路以排程要求配置,因此特定线程可在特定时间内被排程,以执行不同着色器层的着色器操作。
17.根据权利要求12所述的图形处理装置,其中该排程逻辑电路,更具体地于每一执行单元基础上,以排程要求配置,如此一来,于特定执行单元的可用线程能于任一特定时间被排程,以处理来自于特定着色器层的要求。
18.根据权利要求12所述的图形处理装置,还包括执行逻辑电路被配置,以确定是否有执行瓶颈存在于该顶点着色器、该几何着色器、或该像素着色器之中。
19.根据权利要求12所述的图形处理装置,其中所述多个着色器包括顶点着色操作、几何着色操作、及像素着色器,该排程逻辑电路被配置,从根据效能参数的该等线程中,动态地重新配置任务。
20.一种用于计算图形操作的方法,包括:
提供执行单元集区,包括多个执行单元,其中每一执行单元同时处理多重线程;
从每一顶点着色器、几何着色器及像素着色器之中,于特定时间内接受多个计算要求;以及
分别分配上述的计算要求至该执行单元的可用线程,
其中,于特定执行单元的线程中,某些线程可被分配至一着色器的任务,其它线程可同时被分配至另一着色器单元的任务。
21.根据权利要求20所述的用于计算图形操作的方法,还包括于特定时间内评估执行单元的效能参数,以及基于评估的效能参数,来分配新计算要求。
22.根据权利要求21所述的用于计算图形操作的方法,其中该新计算要求被分配到至少一执行单元的线程,该执行单元确定为最不忙执行单元其中之一。
23.根据权利要求21所述的用于计算图形操作的方法,其中从群组的指标中测量该效能参数,该群组包括:
通过该顶点着色器、该几何着色器、及该像素着色器的一些顶点、像素及像素输出;以及
执行单元的整体利用。
24.根据权利要求23所述的用于计算图形操作的方法,其中该执行单元的整体利用从群组的指标中测量,该群组包括:总指令流量及平均执行单元指令发送率。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US72678105P | 2005-10-14 | 2005-10-14 | |
US60/726,781 | 2005-10-14 | ||
US75538505P | 2005-12-30 | 2005-12-30 | |
US60/755,385 | 2005-12-30 | ||
US11/406,536 US20070091088A1 (en) | 2005-10-14 | 2006-04-19 | System and method for managing the computation of graphics shading operations |
US11/406,536 | 2006-04-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1928918A CN1928918A (zh) | 2007-03-14 |
CN1928918B true CN1928918B (zh) | 2012-10-10 |
Family
ID=37858874
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006101317029A Active CN1928918B (zh) | 2005-10-14 | 2006-09-29 | 图形处理装置及于图形处理装置中执行着色操作的方法 |
CNB2006101361549A Active CN100550050C (zh) | 2005-10-14 | 2006-10-13 | 绘图处理装置及其方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006101361549A Active CN100550050C (zh) | 2005-10-14 | 2006-10-13 | 绘图处理装置及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN1928918B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8144149B2 (en) | 2005-10-14 | 2012-03-27 | Via Technologies, Inc. | System and method for dynamically load balancing multiple shader stages in a shared pool of processing units |
CN101325063B (zh) | 2007-06-12 | 2011-02-16 | 建兴电子科技股份有限公司 | 全息储存系统中寻找定位点位置的方法 |
JP4907487B2 (ja) * | 2007-10-24 | 2012-03-28 | 株式会社リコー | 画像処理装置、画像処理方法及び該方法を実行させるためのプログラムを格納したコンピュータ読み取り可能な記録媒体 |
US8922565B2 (en) * | 2007-11-30 | 2014-12-30 | Qualcomm Incorporated | System and method for using a secondary processor in a graphics system |
US8174534B2 (en) * | 2007-12-06 | 2012-05-08 | Via Technologies, Inc. | Shader processing systems and methods |
US8963930B2 (en) | 2007-12-12 | 2015-02-24 | Via Technologies, Inc. | Triangle setup and attribute setup integration with programmable execution unit |
US9214007B2 (en) | 2008-01-25 | 2015-12-15 | Via Technologies, Inc. | Graphics processor having unified cache system |
US20100079469A1 (en) * | 2008-09-30 | 2010-04-01 | Lake Adam T | Rendering tremmed nurbs on programmable graphics architectures |
CN101739704B (zh) * | 2008-11-21 | 2012-05-02 | 台达电子工业股份有限公司 | 多边形快速填色方法 |
US8289341B2 (en) * | 2009-06-29 | 2012-10-16 | Intel Corporation | Texture sampling |
US8514235B2 (en) * | 2010-04-21 | 2013-08-20 | Via Technologies, Inc. | System and method for managing the computation of graphics shading operations |
TWI474280B (zh) * | 2010-04-21 | 2015-02-21 | Via Tech Inc | 增進繪圖處理單元之總處理量的方法與系統 |
CN104067309A (zh) * | 2011-12-28 | 2014-09-24 | 英特尔公司 | 流水线化的图像处理序列发生器 |
DE112011106062T5 (de) * | 2011-12-28 | 2014-09-25 | Intel Corporation | Bildstrom-Pipeline-Controller zur Bereitstellung von Bildprimitiven auf einer Berechnungsstruktur |
US9720858B2 (en) * | 2012-12-19 | 2017-08-01 | Nvidia Corporation | Technique for performing memory access operations via texture hardware |
US9697006B2 (en) * | 2012-12-19 | 2017-07-04 | Nvidia Corporation | Technique for performing memory access operations via texture hardware |
US9286647B2 (en) * | 2013-03-12 | 2016-03-15 | Nvidia Corporation | Pixel shader bypass for low power graphics rendering |
US10310830B2 (en) * | 2017-06-02 | 2019-06-04 | Apple Inc. | Shader profiler |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050154861A1 (en) * | 2004-01-13 | 2005-07-14 | International Business Machines Corporation | Method and data processing system having dynamic profile-directed feedback at runtime |
US6952214B2 (en) * | 2002-07-12 | 2005-10-04 | Sun Microsystems, Inc. | Method for context switching a graphics accelerator comprising multiple rendering pipelines |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6651176B1 (en) * | 1999-12-08 | 2003-11-18 | Hewlett-Packard Development Company, L.P. | Systems and methods for variable control of power dissipation in a pipelined processor |
US7187383B2 (en) * | 2002-03-01 | 2007-03-06 | 3D Labs Inc., Ltd | Yield enhancement of complex chips |
US7719540B2 (en) * | 2004-03-31 | 2010-05-18 | Intel Corporation | Render-cache controller for multithreading, multi-core graphics processor |
US7385607B2 (en) * | 2004-04-12 | 2008-06-10 | Nvidia Corporation | Scalable shader architecture |
-
2006
- 2006-09-29 CN CN2006101317029A patent/CN1928918B/zh active Active
- 2006-10-13 CN CNB2006101361549A patent/CN100550050C/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6952214B2 (en) * | 2002-07-12 | 2005-10-04 | Sun Microsystems, Inc. | Method for context switching a graphics accelerator comprising multiple rendering pipelines |
US20050154861A1 (en) * | 2004-01-13 | 2005-07-14 | International Business Machines Corporation | Method and data processing system having dynamic profile-directed feedback at runtime |
Non-Patent Citations (2)
Title |
---|
. |
附图2 |
Also Published As
Publication number | Publication date |
---|---|
CN100550050C (zh) | 2009-10-14 |
CN1928918A (zh) | 2007-03-14 |
CN1983325A (zh) | 2007-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1928918B (zh) | 图形处理装置及于图形处理装置中执行着色操作的方法 | |
CN110796588B (zh) | 同时计算和图形调度 | |
TWI322391B (en) | Graphics processing apparatus and method for performing shading operation | |
US8144149B2 (en) | System and method for dynamically load balancing multiple shader stages in a shared pool of processing units | |
CN101124613B (zh) | 片段着色管线中增加按比例缩放性的图形处理子系统及方法 | |
US8108872B1 (en) | Thread-type-based resource allocation in a multithreaded processor | |
CN101859257B (zh) | 用于无死锁管线操作的系统及方法 | |
US6587110B1 (en) | Image processing unit, image processing system using the same, and image processing method | |
US8087029B1 (en) | Thread-type-based load balancing in a multithreaded processor | |
CN101371247B (zh) | 用于图形处理器的并行阵列结构 | |
CN103207774A (zh) | 用于解决线程发散的方法和系统 | |
CN103810669B (zh) | 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块 | |
CN103729167A (zh) | 用于改进多线程处理单元中的性能的技术 | |
US20150067691A1 (en) | System, method, and computer program product for prioritized access for multithreaded processing | |
CN104036537A (zh) | 多分辨率一致光栅化 | |
CN104050033A (zh) | 用于有索引的屏障的硬件调度的系统和方法 | |
CN103886634A (zh) | 利用每像素着色器线程的高效超级采样 | |
CN104050705A (zh) | 处置光栅操作中的post-z覆盖数据 | |
TWI633516B (zh) | 曲面細分及幾何著色器的功率效率屬性處理 | |
US11429534B2 (en) | Addressing cache slices in a last level cache | |
CN101178806B (zh) | 计算机中管理纹理数据的系统与方法 | |
US11934867B2 (en) | Techniques for divergent thread group execution scheduling | |
CN103870213A (zh) | 经由管线化的状态包触发性能事件捕获 | |
CN103207810A (zh) | 计算任务状态封装 | |
CN103294449B (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 |