专利名称:绘图处理装置及其方法
技术领域:
本发明涉及一种绘图处理,特别是涉及处理单元的一分享集区中,平衡多重着色器层的加载系统及方法。
背景技术:
众所周知,三维(“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,图1显示于一计算机图形系统中,一绘图管线内的特定组件的功能流程图。一绘图管线内的组件可于不同系统中变化,并且可以各种方式说明。如一般所知,一主机计算机10(或于一主机计算机上执行的一图形应用程序接口)可通过一命令流处理器12产生一命令列。该命令列包括一系列的图形命令及数据,以绘制一图形显示器上的一“环境”。该绘图管线内的组件可操作数据及命令于一命令列内,以绘制一屏幕于一图形显示器上。
在此方面,一剖析器14可接收来自该命令流处理器12的命令、通过数据剖析以解译命令、及传递定义图形像素的数据沿(或到)该绘图管线。在这方面,图形像素可以位置数据(例如X,Y,Z,及W坐标)、明暗、及纹理信息定义。每一像素的所有讯息可通过来自该命令流处理器12的该剖析器14被检索,以及被传递至一顶点着色器16。该顶点着色器16可执行不同的转换于从该命令列所接收的图形数据上。就此而言,该数据可从世界坐标被转换至模型视景坐标(Model View coordinates)、投影坐标(Projection coordinates)、及最后至屏幕坐标(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显示本发明一实施例的部份组件方块图。图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显示依据本发明实施例所建构的一绘图处理器的示范处理器环境。尽管并没有显示绘图处理所需的所有组件,但图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位的顶点高速缓存溢出数据传送给彼此。此外,为更进一步处理,两组5 12位顶点高速缓存写入被说明为由该计算核心105(输出M1及M2)到该执行单元集区控制单元125的输出。
在叙述对该计算核心105之外部数据交换后,将注意转至图4,图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,图5显示依据本发明一实施例的执行单元集区及调度器方块图。当通过一顶点着色器(vertexshader)320、几何着色器(geometry shader)330、及像素着色器(pixel shader)340产生各种着色任务时,将分别被传送至各自的执行单元(经由接口310及调度器300)以被执行。
当个别任务产生时,该调度器300将那些任务分配至各种执行单元中可用的执行绪。当任务完成时,该调度器300更进一步管理相关执行绪的释放。通过该调度器300的部份完成此执行绪执行管理。就此而言,该调度器300的部份负责将顶点着色器、几何着色器、及像素着色器的任务/执行绪分配至各种执行单元,且该部份亦执行相关联的“簿记”(bookkeeping)。该调度器具体地保有全部执行单元的执行绪及存储器的一资源表(未具体图示说明)。该调度器(scheduler)300明确地知道哪些执行绪已经被分配任务并且被占用、哪些执行绪于执行绪终止后已经被释放、多少一般暂存文件存储器缓存器被占用、及每一执行单元中有多少闲置空间是可利用的。
因此当一任务被分配至一执行单元(如302)时,该调度器300将此任务标示为忙碌,并减去总共可用的一般暂存文件存储器以使每一执行绪相差适当的暂存文件标记数量。该标记通过该顶点着色器、几何着色器、及像素着色器的状态设置或决定。每一着色器层还可具有不同的标记尺寸。举例来说,一顶点着色器执行绪可能要求10组一般暂存文件缓存器,而一像素着色器执行绪可能只要求5组这样的缓存器。
当一执行绪完成被分配的任务时,执行该执行绪的执行单元传送一适当讯号至该调度器300。该调度器300将依次更新它的资源表以标示该执行绪为闲置,并将总共执行绪的一般暂存文件空间加回该可用空间。当所有执行绪为忙碌或全部一般暂存文件存储器均已被配置(或剩余过少暂存空间而无法容纳一额外执行绪),于是该执行单元被认为已满,该调度器300将不再分配任何额外或新执行绪至那执行单元。
亦提供一执行绪控制器(thread controller)(未具体说明)于每一执行单元之内,而此执行绪控制器负责管理或标示每一执行绪为有效(如执行中)或为可用。多重执行绪执行装置及多重执行绪执行的管理已为人所知,因此不须于此进一步描述关于个别执行单元的执行绪执行管理。
该调度器300可被配置以进行二阶的调度,一第一阶或低阶调度及一第二阶或高阶调度。该第一阶调度,将顶点着色器、几何着色器、及像素着色器的任务,分配至各着色器层所指定的该执行单元集区。意即,顶点着色器任务被分配至指定为该顶点着色器层的执行单元集区。此第一阶调度为该顶点着色器、几何着色器、及像素着色器分别执行以选择一特定执行单元及一执行绪以处理一任务要求(如被调度的任务)。各种执行绪的分配可以一循环型式(round-robin style)处理。例如若将3执行单元分配至该几何着色器层,于是来自于该几何着色器的一第一任务将被传送至该第一执行单元的一执行绪,一第二任务到该第二执行单元,诸如此类。
该第二阶调度是关于管理执行单元的分配至各着色器层,以便于该顶点着色器、几何着色器、及像素着色器层中执行有效的加载平衡。
应当了解的是,于某些实施例中,可执行单一阶调度,因此于一加载平衡基础上分别分配任务。于此系统中,所有执行单元皆为可用,以处理来自于任一着色器层的任务。的确,于任一特定时间,每一执行单元可具有执行绪活动,为每一着色器层执行任务。但应当了解到此一实施例的调度算法,比起有效率的二阶调度方法,于实行上更为复杂。
应当了解到第一及第二阶调度的解耦(decoupling)并不表示应用执行单元的配置必须于该第二阶(2nd)调度中执行。事实上,可执行一精细(finer-grain)加载平衡配置,例如,根据每一执行绪(如为顶点着色器操作而配置80个执行绪、为像素着色器操作而配置120个执行绪等等)。因此,欲分开第一及第二阶调度,仅表示加载平衡及任务要求分配处理的决策解耦。于此所提供的叙述,作为说明的目的,并依此基本认识应可理解。
本发明的某些实施例更具体地指出由该调度器300所执行的第二阶调度操作。于一较高阶中,该调度器300明确地操作以将各种执行单元302、304、...、306个别配置及分配至该顶点着色器320、几何着色器330、及像素着色器340之一。该调度器300更进一步被配置以执行一加载平衡操作,包括各种执行单元的一动态重新分配及重新配置,以作为该顶点着色器320、几何着色器330、及像素着色器340所须的各自工作量。
该2nd调度器的一目的为使三个着色器层(顶点着色器(VS)、几何着色器(GS)、及像素着色器(PS))的加载达到合理的平衡,以让整个执行单元(EU)集区达到最佳的整体效能。有许多因素影响着该顶点着色器、几何着色器、及像素着色器的载入,例如顶点着色器、几何着色器、及像素着色器的每一任务的执行指令数目、指令执行效率、该初始输入像素对几何着色器输出像素比、及像素对像素比,都被三角形的尺寸、三角形的选择及剔除率等所影响,而这些因素可能经常改变。该执行单元集区的效能,可通过由该顶点着色器、几何着色器、及像素着色器所输出的顶点、像素、及像素数目,或通过整体执行单元的使用来测量。当整体执行单元使用率达到最高水准时,该执行单元集区达到最佳效能。整体执行单元使用率,可通过总指令流量(于每一周期内被执行的总指令数),或通过一平均执行单元指令发送率(每一执行单元于每一周期内所执行的平均指令数)来测量。分配至该顶点着色器、几何着色器、及像素着色器的执行单元数量分别为nVS、nGS、及nPS,而每一执行单元的平均指令流量分别为0<rVS≤rVSmax、0<rGS≤rGSmax、及0<rPS≤rPSmax,需注意针对不同着色器层而言,能达到的每一执行单元的最大指令流量rVSmax、rGSmax、rPSmax也随着色器设计特性而不同。当执行单元的总数为NTOT时,可以得到nVS+nGS+nPS=NTOT。等式(1)假设通过该顶点着色器、几何着色器、及像素着色器所产生或聚集的顶点、像素、及像素之间的比例为常数,且该着色器程序未改变,因此,针对每一着色器层而言,每一着色器实例(聚集)的平均执行指令为常数,于不同着色器层间的总执行指令比例将为常数,以及于不同着色器层间的指令流量ni×ri比例将为常数,则可以得到nVS×rVSCVS=nGS×rGSCGS=nPS×rPSCPS.]]>等式(2)可达到所要求的效能,当f(nVS,nGS,nPS)=nVS×rVS+nGS×rGS+nPS×rPS等式(3)达到最大值时。
同样地,通过每一执行单元的每一着色器层或每一执行单元的“消耗率”所产生的顶点/像素/像素或输出数据的平均流量,若使用ri表示,因为通过该顶点着色器、几何着色器、及像素着色器所产生的顶点、像素、及像素(或输出数据)之间的比例为常数ni×ri,尽管具有不同Ci值,这些等式是相同的。假设ni为实数。从(2)可得nGS=rVS/CVSrGS/CGSnVS,]]>nPS=rVS/CVSrPS/CPSnVS,]]>取代等式(1)中nGS及nPS,则nVS=NTOT1+rVS/CVSrGS/CGS+rVS/CVSrPS/CPS,]]>等式(4)因此可得到nGS=NTOT1+rGS/CGSrVS/CVS+rGS/CGSrPS/CPS,]]>等式(5)以及nPS=NTOT1+rPS/CPSrVS/CVS+rPS/CPSrGS/CGS.]]>等式(6)代替(3)的(4)、(5)、及(6),则可得
f=nVS×rVS+nGS×rGS+nPS×rPS=CVS+CGS+CPSCVS/rVS+CGS/rGS+CPS/rPSNTOT]]>等式(7)因为rVS,rGS,rPS>0,函数f为单调递增,则当rVS=rVSmax及rGS=rGSmax及rPS=rPSmax时,f达到最大值。假设rVS=rVSmax,rGS=rGSmax,rPS=rPSmax,则(2)成为nVS×rVSmaxCVS=nGS×rGSmaxCGS=nPS×rPSmaxCPS,---(2′)]]>则得到顶点着色器、几何着色器、及像素着色器的理想目标分配,达到最大效能nVS_T=NTOT1+rVSmax/CVSrGSmax/CGS+rVSmax/CVSrPSmax/CPS,]]>等式(4’)nGS_T=NTOT1+rGSmax/CGSrVSmax/CVS+rGSmax/CGSrPSmax/CPS,]]>等式(5’)nPS_T=NTOT1+rPSmax/CPSrVSmax/CVS+rPSmax/CPSrGSmax/CGS.]]>等式(6’)然而,因为分配至每一着色器层的执行单元或执行绪为整数,可能会牺牲掉一些精准度(granularity)。针对根据小单元的分配架构,例如应用执行绪、或应用执行绪的小区块的调度,可使用整数部份Int(ni_T)以近似ni_T。因为分数部份为Frac(nVS_T)+Frac(nGS_T)+Frac(nPS_T)=frac_sum≤2,可将剩余执行绪或执行绪区块frac_sum依序分配至该顶点着色器、几何着色器、及像素着色器。不过,针对根据大单元的分配架构,例如应用执行单元的调度,最好为剩余的执行单元数frac_sum(0~2)找出最佳分配。找出最佳分配,意谓找出Ni=Int(ni_T)或Int(ni_T)+1,使f(NVS,NGS,NPS)=NVS×rVS+NGS×rGS+NPS×rPS到达最大值。 假设NVS×rVSCVS=NGS×rGSCGS=NPS×rPSCPS=H,]]>因此f(NVS,NGS,NPS)=CVS×H+CGS×H+CPS×H=(CVS+CGS+CPS)×H,问题转变成找出H的最大值。对于frac_sum==2而言,仅有一着色器层为Ni=Int(ni_T),且剩余为Ni=Int(ni_T)+1,于是选择具有最大值Hk=Int(nk_T)×rkmaxCk]]>(或等效最大值 ,更好且需更少计算)以作为Nk=Int(nk_T)的着色器层,而剩余着色器层为Ni≠k=Int(ni_T)+1。对于frac_sum==0而言,所有着色器层具有Ni=Int(ni_T)=ni_T,则已找出最佳分配Ni=ni_T。因此,表示该系统以此方法达到最佳效能。对于两个着色器层(例如顶点着色器及像素着色器)或大于三个着色器层(例如三角化之前顶点着色器、三角化、三角化之后顶点着色器、几何着色器、及像素着色器等)的类似情况而言,可以得到n0+n1+......nm-1=NTOT,等式(8)n0×r0_maxC0=n1×r1_maxC1=......=nm-1×rm-1_maxCm-1,]]>等式(9)接着针对n0,n1......nm-1分解(8)及(9),达到具有最大效能的所有着色器层的理想目标分配n0_T=NTOT1+r0_max/C0r1_max/C1+r0_max/C0r2_max/C2+...+r0_max/C0rm-1_max/Cm-1,]]>n1_T=NTOT1+r1_max/C1r0_max/C0+r1_max/C1r2_max/C2+...+r1_max/C1rm-1_max/Cm-1,......]]>nm-1_T=NTOT1+rm-1_max/Cm-1r0_max/C0+rm-1_max/Cm-1r1_max/C1+...+rm-1_max/Cm-1rm-2_max/Cm-2.]]>frac_sum=Frac(n0_T)+Frac(n1_T)+...+Frac(nm-1_T)≤m-1。于frac_sum==m-1的情况下,仅有一着色器层为Ni=Int(ni_T),且剩余为Ni=Int(ni_T)+1,于是选择具有最大值Hk=Int(nk_T)×rkmaxCk]]>(或最大值 )以作为Nk=Int(nk_T)的着色器层,而剩余着色器层为Ni≠k=Int(ni_T)+1。对于frac_sum==m-2而言,两个着色器层为Ni=Int(ni_T),且剩余为Ni=Int(ni_T)+1,于是选择具1st及2nd大值Hk=Int(nk_T)×rkmaxck]]>(或最大值 )以作为Nk=Int(nk_T)的着色器层,而剩余着色器层为Ni≠k=Int(ni_T)+1诸如此类,...该架构,应于具有执行多重着色层(或其它可编程程序)计算单元集区的多核心或多处理器系统中工作,每一层执行一核心或程序,且为此一连串核心的一部份,前一层的输出作为下一层的输入等等。虽然为根据大单元的分配架构,例如应用执行单元的调度,且特别的是当单元的总数不大(例如8~10之类)时,可使用一尝试错误法,且于一单元(执行单元)的小数量的每一调整上,限制切换的单元数,这提供一合理有效的收敛阶层函数(stepping function),并使一调度器易于管理。
与本发明的范畴及精神一致,可以利用多种调度计划。而这样的计划可为一简单的尝试错误计划。更加进步的一调度计划则可具效能预测。对于基本计划而言,假设一初始配置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可被配置以估算一可能的效能增加或减少,而导致执行单元的预测性重新分配。于此实施例中,与其实际执行重新分配再接着测量实际效能增加或减少,不如利用一效能预测或估算。这样的预测估算可以通过考虑种种原因而实现,例如各种执行单元的一可用资源(如存储器空间、执行绪、可用缓存器等等)。于一实施例中,该预测估算根据指令流量及目前为瓶颈的着色器层而达成,并利用一般暂存文件存储器及执行绪使用,以确定该瓶颈着色器层。当这样的预测或估算被认为是一个可积极增进效能的重新配置时,接着执行该重新配置。应当了解的是,于多数这样的实施例中,该预测或估算的效能变化具有一些既有的准确性缺点。然而,可以了解到造成不准确估算的缺点少于需要执行重新分配的代价,使得于某些情况下,这样的实施例为可行的选择。
应当了解的是,于某些实施例中,该2nd阶调度器中有两种不同的调度配置,该调度器通过一调度控制缓存器配置。一为静态调度配置,该驱动器静态地编程该执行单元配置。该驱动器,可根据硬件效能计数器于先前显示或整批绘图期间所收集的某些静态数据,决定如何分配执行单元。第二为动态调度配置,硬件动态地完成执行单元分配。于动态调度配置中,该驱动器要提供一初始分配(不然,若无特定,该硬件选择硬件预设分配并从那里开始),然后传送命令以通知该硬件于某一情况下重新评估该分配,或强迫一分配并且改回至静态配置。
应该更进一步地了解到,对各种不同着色器单元的执行单元的初始分配为一周期性执行的操作。就此而言,当该绘图处理器进行状态变动时,各种着色器单元可能完全被重新分配,以于新绘图状态下执行操作。例如,对于具不同着色特性的绘制目标的着色特性变动、可能变动的明暗条件、于一绘图场景中可被绘制的一新目标、以及其它可能发生的多种事件,而造成该绘图处理器的状态变化,因此基本上重新开始处理。有各种方法及机制用以通知这样的一个状态变化,包括通过软件驱动器产生讯号,该驱动器可被用以发送该执行单元的此批分配至该调度器。
现在参考图6,图6显示该调度器300内部某些组件的方块图。首先,该调度器300包括能根据一预先决定的分配比例,完成将执行单元的一初始分配到各种着色器单元的逻辑电路。于绘图处理器中,此预先决定的分配比例可为固定,或选择性地由该软件驱动器发送至至该绘图处理器。
再者,于某些实施例中,具有两种配置,且于静态模式中,该软件驱动器控制该执行单元分配。于动态模式中,该硬件可根据实时瓶颈状态自己决定。该软件驱动器可根据由硬件效能计数器于先前显示或整批绘图期间所收集是某些统计数据做决定。该调度器300还包括逻辑电路360,根据实时效能参数或各个着色器单元所测量的效能,被配置以完成执行单元的动态重新配置。如前所述,若现在并无着色器单元为瓶颈,则目前并不需要执行一执行单元的重新分配,因为这样做并不会增加该绘图处理器的整体效能。因此,该调度器包括逻辑电路362,被配置以确定是否有瓶颈存在于任一着色器单元中。一种方法是检查或确定每一着色器层中这些执行单元满的程度。有许多方法可确认这样的瓶颈。一种方法为确认情况,例如所有执行绪为忙碌的情况,或所有存储器被占用的情况。如上所述,于一实施例中,每一执行单元被配置具有32个内部执行绪以供执行。若该调度器300确定被分配至一特定着色器的相关执行单元的所有执行绪(或大体上所有执行绪)目前为忙碌,则那个特定着色器单元可被认定全满。当所有属于一着色器层的执行单元皆全满时,则该着色器层被视为全满。当这一个着色器层已满而下一管线层并非全满时,该着色器层被视为瓶颈。同样地,可用其它资源评估一特定着色器单元是否满了。例如,每一执行单元可具有一既定数量的配置存储器或暂存空间。于利用或消耗某些既定数量的存储器或暂存空间之后,该调度器300可确认那个别执行单元若已全满。
需说明的是,于一实施例中,通过配置于该着色器层的执行单元满的程度及次一管线层的状态以确定一着色器层的瓶颈。若所有配置于该着色器层的执行单元已满且次一管线层(另一着色层或一固定功能区块)的状态并非全满时,该着色器层被视为瓶颈。
该调度器300还包括逻辑电路364用以将执行单元重新分配至一不同着色器。应当了解的是,此一重新分配包括需要执行的步骤以停止分配属于被分配至该执行单元的先前着色器层的任何新任务,并开始为现有的任务/执行绪排出该执行单元。既然执行单元硬件支持两组着色器内容,于之前的着色器内容结束前,允许属于被分配至该执行单元的新着色器层的任务开始进来(这是为预防由于着色器层改变的管线停滞)。例如,假设执行单元1302及执行单元2304目前分配至该顶点着色器320。更进一步假设该像素着色器340由该调度器330确定于瓶颈情况中,且该调度器330更进一步寻找以将执行单元2304重新分配至该像素着色器340。在把任务从该像素着色器340传送至最近分配的执行单元之前。或者,该调度器330可停止传送新任务至执行单元304,然后一旦目前于执行单元304的全部任务已完成进行,则执行单元304可被重新分配至像素着色器340,且可开始分配一新任务(前面所提)。
于一实施例中,该调度器300还包括逻辑电路366用以确定一最不忙碌、非瓶颈的执行单元。于一实施例中利用此逻辑电路366,该调度器300可从其余执行单元中利用或选择该最不忙碌的(未被分配至为瓶颈着色器单元的执行单元)。此判断可用任一各种方式实现,包括评估个别执行单元的可用资源(如执行绪、存储器、暂存空间)、评估目前分配至个别执行单元的数量等等。于一实施例中,利用一最近为瓶颈着色器层完成判断(如前所述)。
最后,该调度器300包括逻辑电路368用以比较或测量不同执行单元的效能。如上所述,本发明某些实施例利用一调度器300执行一各种执行单元的尝试错误重新分配。于之前,及之后,针对此重新分配,该调度器测量该执行单元的效能,并且特别是各种着色器单元所聚集的执行单元,以评估重新分配前后的整体效能。除了于个别基础上评估该执行单元之外,整体效能亦可以其它方法评估。例如,评估像素着色器的输出(有时被指为消耗率),以确定或测量已完成处理操作(意即准备好传送至一显示缓冲存储器以显示的像素)的像素数量。或者,亦可评估每一个别着色器单元的输出,以估算整理效能,特别是于不使用或略过一个或多个着色器单元的情形下。
现在参考图7A-7D,图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-8,图8A-8共同显示依据本发明另一实施例的高阶操作流程图。如于图7A-7D中所说明的实施例一样,该调度器依一预先决定的分配比例,对各种着色器单元执行一所有执行单元的初始分配(步骤502)。之后,该系统于一既定时间内,依此比例处理着色器任务(步骤504)。之后,执行一检查以确定是否任一着色器单元为瓶颈(步骤506)。若是如此,于目前配置下测量及记录目前效能(步骤508)。之后,该系统继续进行,取决于哪一个特定着色器单元被确定为瓶颈(步骤510)。举例来说,若该顶点着色器被确定为瓶颈,则该系统将一目前分配至该像素着色器的执行单元,通过重新分配至目前为瓶颈的顶点着色器以继续进行(步骤512)。之后,该系统测量该效能(于重新分配之后)(步骤512)、及确定(步骤516)该效能是否增进。若确定效能并没有增进,则该系统取消该重新分配(步骤518),并且将一目前分配至该几何着色器的执行单元,用以代替该为瓶颈的顶点着色器。于重新分配之后,该系统再次测量效能(步骤520),及确定该效能是否增进(步骤522)。若没有,则再次取消该重新分配(步骤524)。图8C及8D说明当瓶颈被确定在几何着色器或像素着色器时,各自采取的类似步骤。
现在参考图9,图9显示依据本发明实施例的某高阶操作流程图。如前所述,状态的变化,或其它事件,于一绘图管线中,可导致一重置或一重新开始的情况。此一事件可由软件触发或通知,或由专属硬件检测(步骤602)。于一实施例中,在此一状态变化被表示或者检测到之后,从因为状态改变而受到影响的每一着色器层最上端,利用管线传送一命令标记(步骤604)。之后,该系统等待,直到所有有效着色器层的底端接收此标记,而在那时,该系统重置某些记录,并重新开始某些计时计数器(步骤606)。之后,该系统等待一时间T(步骤608)。在这个时候,于此新绘图状态下,该系统开始处理图形,并开始动态分配及管理各种着色器层,如上述实施例中的概括说明。
于图9图的实施例中,该系统检测或确定(于步骤610)任一着色器单元或着色器层是否为瓶颈。此确定可以各种方式实现,而一方法是显示于图10(将讨论如下)。若无着色器层受阻(见步骤612),则该绘图管线的瓶颈于它处,管线的固定功能部份(见步骤614)。然而,若一着色器层被确定受阻(或为瓶颈),则该系统为瓶颈的着色器层记录一平均指令发送率(步骤616)。那就是,该系统测量及记录每单位时间所执行的一平均指令数量。关于非瓶颈着色器层(亦被称为饥饿着色器层(starving shader stage),因为具有可用的资源用以处理),该系统从该层将将一执行单元切换至该瓶颈层之后,估计或预测最大总指令流量,并比较预测及目前所测量的流量。若该预测流量大于目前所测量流量,则该层具有将执行单元的一切换至该为瓶颈的着色器层的资格(步骤618)。该系统确定(步骤620)一个或多个执行单元或着色器层具切换的资格。若没有,则整合结束(步骤622)。然而,若一个或多个执行单元或着色器层具此切换资格,则该系统在预测及目前流量之间找出具有最大比例的着色器层,并将一执行单元由那层切换至瓶颈层(步骤624)。之后,该系统从受到切换影响着色器层的最上端利用管线传送一命令标记(步骤626),并等待直到所有有效着色器层的底端接收此标记,然后再次重新开始适当的计数器,及重置适当的记录(步骤628)。
现在参考图10,图10显示某高阶操作处理流程图,以确定目前哪一着色器层为瓶颈。如前所述以及如本领域的技术人员所熟知,于任一特定时间或对某些绘图操作而言,可能不使用一个或多个不同着色器层。因此,图10的方法确定(步骤702)该像素着色器是否为致能。若为如此,接着该方法确定该像素着色器的所有执行单元是否已满,及该像素着色器的一输出缓冲存储器是否未满。有关于确定所有像素着色器执行单元是否已满,该系统可调查该执行单元的资源,例如所有执行绪现在是否为忙碌、执行单元的所有暂存空间是否已满、执行单元的存储器资源是否已满等等。因此,可利用这些因素的不同或变化,与本发明的实施例一致,以完成此确定(步骤704)。若所有这些资源全满,且该输出缓冲存储器未满,则指出该像素着色器为瓶颈(步骤706)。就此而言,该输出缓冲存储器具有能力从该像素着色器接收更多输出,但该像素着色器并未产生足够输出,所以该像素着色器中并没有更多可用的资源以产生额外输出。
同样地,该方法确定该几何着色器是否为致能(步骤712)。若为如此,该方法确定所有几何着色器执行单元是否已满,及该几何着色器输出顶点快取记体是否未满(步骤714)。若符合此条件,则该系统确定该几何着色器为瓶颈(步骤716)。
同样地,该方法确定(于步骤722)该顶点着色器是否为致能。若为如此,该方法确定所有顶点着色器执行单元是否已满,及任一几何着色器执行单元是否未满(步骤724)。当该几何着色器于该顶点着色器的下游(于管线中)时,几何着色器执行单元中的执行能力无疑表示该几何着色器不为瓶颈,且具有能力由该顶点着色器接收额外数据或输出。然而,若该顶点着色器的所有执行单元全满,此为该顶点着色器为瓶颈的一指示(步骤728),因为该顶点着色器无法够快地处理信息,以传送该几何着色器层的可用资源。
若图10的各种决策区块允许该流程到达步骤730,则可确定无着色器层为瓶颈。本质上,若所有致能的着色器层具有可用的处理资源、或对于并不具有可用资源的任一着色器层而言,从那着色器层的输出或紧接的下游单元具有可用的处理能力。
现在参考图11,图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显示与本发明实施例一致的高阶方块图。图12类似于已知的图1,且两图的比较说明本发明的进步。简而言之,提供一独特硬件元素916,包括执行单元分享集区,以处理顶点着色、几何着色、以及像素着色的个别运算。
现在请参考图13,相关联于图12。如同本文前面提到的,执行单元的集区916包括多个类似执行单元,其中每一个可被配置,以处理多重执行绪。于一特定时间,当其它执行单元(或者执行绪)被配置以执行几何着色及/或顶点着色时,某些执行单元(或者甚至某些执行绪)可被配置以执行像素着色操作。不同执行单元(或者执行绪)的配置、动态重新配置,可于工作量、积压、以及/或者需求的基础上执行。也就是,当着色操作的需求产生时,可分配没有使用的执行单元(或者执行绪)以执行那些操作。当执行单元(或者他们的资源)变的无法利用时(因为使用在执行运算),则系统可更聪明地执行这些执行单元或者他们的资源的调度。
例如,假设执行单元(或执行绪)均被配置且被分配以执行指定着色任务。该系统可以监控着色操作积压的要求(等待处理)。假设像素着色操作的积压开始大量增加,而顶点或几何着色要求尚未变成积压时,该系统可以重新配置执行单元的配置(或执行绪)以重新配置一些顶点或者几何着色操作到像素着色操作。这样一个加载平衡可以通过管线增加整体流量。
如图13所显示,逻辑电路940可被提供以管理及/或调度执行单元(或者执行绪),以执行顶点着色操作。逻辑电路950可被提供以管理及/或调度执行单元(或者执行绪),以执行几何着色操作。同样的,逻辑电路960可被提供以管理及/或调度执行单元(或者执行绪),以执行像素着色操作。另外,额外的逻辑电路930可被提供以整体管理及/或调度执行单元(或者执行绪)。此整体管理或者调度可以各种方式执行,及以各种因素为基础。因素可包括相对需求、积压、资源损耗等等。
虽然本发明已以较佳实施例披露如上,然其并非用以限定本发明,本领域的技术人员在不脱离本发明的精神和范围的前提下可做若干的更动与润饰,因此本发明的保护范围以本发明的权利要求为准。
权利要求
1.一种绘图处理方法,包括将至少一执行单元,分配至每一多个着色器单元,这些着色器单元包括一顶点着色器、一几何着色器及一像素着色器,其中,将一执行单元分配至一特定着色器单元,以针对该特定着色单元执行处理任务;确定这些着色器单元其中之一为瓶颈;以及将至少一执行单元,从一非瓶颈的着色器单元,重新分配至被确定为瓶颈的着色器单元。
2.如权利要求1所述的绘图处理方法,其中该确定步骤还包括,评估被分配至一指定着色器单元所分配的执行单元的资源可用性。
3.如权利要求2所述的绘图处理方法,其中,该评估资源可用性的步骤包括,确定于一执行单元中,可用的执行绪数量。
4.如权利要求2所述的绘图处理方法,其中,该评估资源可用性的步骤包括,从评估一执行单元中可用的暂存空间及存储器空间的群组选择其一。
5.如权利要求1所述的绘图处理方法,其中还包括当一执行单元由一非瓶颈的着色器单元,重新分配至一被确定为瓶颈的着色器单元时,确定整体效能是否将会改进。
6.如权利要求5所述的绘图处理方法,其中,确定整体效能是否将会改进包括,执行一尝试错误重新分配、以及只有当效能指标被明显改进时才维持该重新分配。
7.如权利要求5所述的绘图处理方法,其中,确定整体效能是否将会改进包括,针对一特定执行单元的重新分配估计一指令流量、以及只有当估计的指令流量超过于重新分配前的一实际测量指令流量时,才执行重新分配。
8.一种绘图处理装置,包括多个执行单元;及逻辑电路,被配置以个别分配该执行单元,以执行通过一顶点着色器、一几何着色器、或一像素着色器其中之一所要求的处理任务,其中一旦一特定执行单元被分配至该顶点着色器、几何着色器、或像素着色器其中之一时,保持分配至那着色器直到重新配置为止,该逻辑电路还进一步被配置,根据共同执行顶点着色任务的执行单元的一相关工作量、共同执行几何着色任务的执行单元的一相关工作量、及共同执行像素着色任务的执行单元的一相关工作量,以将执行单元个别重新分配。
9.如权利要求8所述的绘图处理装置,其中该逻辑电路更具体地被配置,将该顶点着色器、几何着色器、或像素着色器中最不忙碌的执行单元,重新分配至另一个被确定为瓶颈的该顶点着色器、几何着色器、或像素着色器之一。
10.如权利要求8所述的绘图处理装置,还包括逻辑电路,被配置以从该像素着色器测量出的一输出消耗率,其中,该逻辑电路被还具体地配置以反复方式,从一较不忙碌着色器单元,将执行单元分配至一瓶颈着色器单元,直到达到最高点或最大的消耗率。
11.如权利要求8所述的绘图处理装置,还包括逻辑电路,被配置以确定于该顶点着色器、该几何着色器、或该像素着色器的任一或多个中,是否具有一效能瓶颈。
12.如权利要求8所述的绘图处理装置,还包括逻辑电路,被配置以确定是否有一效能瓶颈于该顶点着色器中,当被分配至该几何单元的至少一执行单元具可用性时,该逻辑电路被配置以确定分配至该顶点着色器的所有执行单元是否全满;逻辑电路,被配置以确定是否有一效能瓶颈于该几何着色器中,当一输出顶点高速缓存未满时,该逻辑电路被配置以确定分配至该几何着色器的所有执行单元是否全满;及逻辑电路,被配置以确定是否有一效能瓶颈于该像素着色器中,当一像素着色器输出缓冲存储器未满时,该逻辑电路被配置以确定分配至该像素着色器的所有执行单元是否全满。
13.一种用于计算绘图操作的方法,包括从每一顶点着色器、几何着色器及像素着色器之中,于时间内接受多个计算要求;将上述个别的计算要求,分配至个别的多个执行单元;以及于时间内比较性的评估,共同被分配以执行该顶点着色器计算要求的所有执行单元效能、共同被分配以执行该几何着色器计算要求的所有执行单元效能、以及,共同被分配以执行来自于该像素着色器计算要求的所有执行单元效能。
14.如权利要求13所述的用于计算绘图操作的方法,还包括,根据一比较性的评估操作的结果,将一新计算要求分配至该执行单元其中之一。
15.如权利要求14所述的用于计算绘图操作的方法,其中将该新计算要求分配至一最不忙碌的执行单元。
16.如权利要求13所述的用于计算绘图操作的方法,还包括,根据一比较性的评估操作的结果,将一现有的计算要求重新分配至一个不同的执行单元。
17.如权利要求16所述的用于计算绘图操作的方法,其中将该现有的计算要求重新分配至最不忙碌的一执行单元。
18.一种绘图处理装置,包括多个执行单元;及一调度器,被配置以分配这些执行单元,以执行任务,该任务包括顶点着色操作、几何着色操作、及像素着色操作,该调度器被配置于这些执行单元中,根据要求像素着色操作的一像素着色器所输出的像素比例,动态地重新分配该任务。
19.如权利要求18所述的绘图处理装置,其中该调度器被配置根据一预先决定的分配比例,完成执行单元的一初始分配。
20.如权利要求18所述的绘图处理装置,其中,该调度器还包括重新分配逻辑电路,该逻辑电路被配置以将执行单元,由一饥饿着色器单元,重新分配至一被确定为瓶颈的着色器单元。
21.如权利要求20所述的绘图处理装置,其中,该重新分配逻辑电路还包括测量一目前指令执行率的逻辑电路、以及,当目前分配于该饥饿着色器单元的一执行单元,被重新分配至另一着色器单元时,被配置以估计一指令执行率的逻辑电路,该重新分配逻辑电路更进一步被配置,只要该重新分配逻辑电路确定该估计指令率超过该测量指令率,则将一执行单元从该饥饿着色器单元重新分配。
22.一种用于绘图处理的方法,包括将至少一执行单元,分配至每一多个着色器单元,其中,将一执行单元分配至一特定着色器单元,以针对该着色器单元执行处理任务;确定这些着色器单元其中之一为瓶颈;以及将至少一执行单元,从一非瓶颈的着色器单元,重新分配至被确定为瓶颈的着色器单元。
全文摘要
本发明系有关于绘图处理单元的一顶点着色器、一几何着色器及一像素着色器中,管理或执行资源的动态配置或重新配置的新方法与装置。于一实施例中,一种用于绘图处理的方法,包括将至少一执行单元,分配至每一多个着色器单元,这些着色器单元包括一顶点着色器、一几何着色器及一像素着色器,其中,将一执行单元分配至一指定着色器单元,以针对那着色单元执行处理任务;确定这些着色器单元其中之一为瓶颈;以及将至少一执行单元,从一非瓶颈着色器单元重新分配至被确定为瓶颈着色器单元。
文档编号G06T15/00GK1983325SQ20061013615
公开日2007年6月20日 申请日期2006年10月13日 优先权日2005年10月14日
发明者焦阳, 苏奕荣 申请人:威盛电子股份有限公司