CN102982503B - 绘图处理单元 - Google Patents

绘图处理单元 Download PDF

Info

Publication number
CN102982503B
CN102982503B CN201210536179.3A CN201210536179A CN102982503B CN 102982503 B CN102982503 B CN 102982503B CN 201210536179 A CN201210536179 A CN 201210536179A CN 102982503 B CN102982503 B CN 102982503B
Authority
CN
China
Prior art keywords
instruction
flash memory
performance element
thread
order
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
CN201210536179.3A
Other languages
English (en)
Other versions
CN102982503A (zh
Inventor
洪洲
焦阳
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.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
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
Priority claimed from US12/764,256 external-priority patent/US8564604B2/en
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN102982503A publication Critical patent/CN102982503A/zh
Application granted granted Critical
Publication of CN102982503B publication Critical patent/CN102982503B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Generation (AREA)

Abstract

本发明涉及增进绘图处理单元的总处理量的方法与系统,此系统包含可执行多个线程的执行单元,该执行单元可同时处理对常数闪速存储器、顶点属性闪速存储器、至少一个共同暂存器文件以及执行单元数据路径的存取要求。

Description

绘图处理单元
本案是申请日为2011年3月30日、申请号为201110078514.5、发明名称为“增进绘图处理单元的总处理量的方法与系统”的发明专利申请的分案申请。
技术领域
本发明涉及改善绘图处理单元的总处理量的方法与系统,特别是涉及可同时处理多个线程的多个存取要求的执行单元改善方法和系统。
背景技术
众所皆知,三维计算机绘图技术着重于将三维(3D)物体以二维(2D)影像的方式呈现出来,并显示于诸如阴极线真空管(CRT)屏幕或液晶屏幕(LCD)之类的显示装置上。此三维物体可以是简单的几何基元(primitive),例如点、线段、三角形或是多边形(polygon)。较为复杂的物体则是以一系列相连的平面多边形的方式呈现在显示装置上,例如一连串的平面三角形。所有的图形基元都可以单一顶点或一组顶点的方式来表示,例如以座标(X,Y,Z)来定义一个点,或是线段的某一端点,或是多边形的某一个顶点。
为了产生用来代表三维物体的二维投影数据使物体可呈现在显示装置上,图形基元的顶点需要经过一连串的操作,以及绘图显像管线的多个阶段来处理。一般的管线是由一连串相连的处理单元或阶段所组成,上一阶段的输出可做为下一阶段的输入。对于绘图处理单元而言,管线阶段包括以下:逐一顶点操作,基元合成操作,像素操作,像素合成操作,光栅扫描(rasterization)操作以及碎型(fragment)操作等等。
在典型的绘图显示系统中,可利用影像数据库来储存场景中物体的叙述符。物体可以多个小多边形来表示,这些小多边形是涵盖物体表面的多边形,如同墙面上的磁砖。每一个多边形又可以顶点座标清单以及表面材质特性来表示,甚或再包括每一顶点相对于表面的法线向量。顶点座标清单可以是模型空间的XYZ座标,表面材质特性可包括颜色,纹理或亮度等。对于具有复杂曲面的三维物体,通常是以三角形或四边形来表示,而四边形又可拆解为一对三角形。
当使用者决定了观看的角度,转换引擎单元便将物体座标转换至相对于观赏角度。此外,使用者可以指定视野范围,所产生的影像的大小,以及可见物体的后方是否包含某一背景或是将背景删除。
当视野区域选定之后,裁剪单元将位于视野区域之外的多边形剔除,并且将部份位于视野区域之外部份位于视野区域之内的多边形加以裁剪。裁减后的多边形对应至原多边形位于视野区域之内的部份,其裁减后的边缘对应至视野区域的边界。接着多边形的顶点会传递到下一个管线阶段,包含每一顶点在视野区域的座标(XY)以及其相对的深度值(Z)。之后一般的绘图处理系统会进行光源模型处理,再将多边形以及其颜色值传递至光栅扫描器。
对每一个多边形而言,光栅扫描器会判断哪些像素位在此多边形,并将其对应的颜色值和深度值写入帧缓冲器(frame buffer)。光栅扫描器会比较目前处理的多边形其像素的深度值与原先储存在帧缓冲器相对应位置的像素的深度值,如果多边形像素的深度值较小,表示其位于帧缓冲器所储存的像素的前方,则以多边形像素的深度值取代原帧缓冲器的深度值,因为目前处理的多边形会遮蔽原先储存于帧缓冲器内的多边形。上述步骤会持续重复直到所有的多边形都已显像处理过。之后,影像控制器会将帧缓冲器的内容以逐一扫描线的方式呈现在显示装置上。
实现即时显像的典型方式是以像素来显示多边形,此像素可能位于多边形之内或之外,所产生的多边形边缘在静态显示之下可能产生不规则外观,而在动态显示之下则是模糊的影像。其问题的背后成因在于锯齿(aliasing)效应,而用以降低此效应的方法就称为反锯齿(anti-aliasing)技术。
以屏幕为基础的反锯齿方法并不需要欲显像的物体的相关信息,因为此种方法只需要绘图管线的输出样本。其中一种典型的反锯齿方法是利用扫描线反锯齿技术,称为多取样反锯齿(Multi-Sample Anti-Aliasing,MSAA)方法,此方法在每一次传递时都对单一像素作一个以上的取样。从每一个像素所取样出来的样本,或称做次像素的数量即是所谓的取样率,一般来说取样率越高就会耗费越多的存储器流量。
虽然上文仅简略说明绘图处理单元的各个元件的大致操作,本领域的技术人员应可理解绘图数据的处理十分繁复,因此提高处理效能与降低设计复杂度为常见考量和需求。若能提高绘图处理单元的数据总处理量(throughput),不仅可达到提高处理效能的目的,亦可在维持一定效能之下,减少硬件需求的复杂度。
发明内容
本发明的一实施例提供一种绘图处理单元,包含:一执行单元,用以处理可编程着色器操作,并可用以同时处理多个线程的处理操作;一第一存储器单元,用以形成一暂存器文件来调节该多个线程的暂存器操作,该存储器单元包含多个存储库,其中多个第一存储库分配给多个第一线程,多个第二存储库分配给多个第二线程;一第二存储器单元,用以形成一常数闪速存储器来调节该执行单元的该多个线程所对应的多个着色器操作的常数存取,该常数闪速存储器用以储存对应于该多个着色器操作的多个内文,并用以储存该多个内文的多个常数的多个版本;以及一第三存储器单元,用以形成一顶点属性闪速存储器来调节该执行单元的该多个线程所对应的多个着色器操作的顶点属性存取。
本发明的另一实施例提供一种绘图处理单元,包含:一执行单元,可用以执行多线程操作,该执行单元包含一线程控制器,该线程控制器包含一第一指令撷取仲裁器和一第二指令撷取仲裁器;其中该第一指令撷取仲裁器用以代表该执行单元的多个第一线程来撷取指令;以及该第二指令撷取仲裁器用以代表该执行单元的多个第二线程来撷取指令。
本发明的又一实施例一种适用于执行单元的指令处理方法,包含:对应于多个有效线程的一第一有效线程,从一指令闪速存储器撷取一执行单元的一第一指令;传播该第一指令给该多个有效线程;维持该第一指令于对应于该多个有效线程至少其中一个的一指令队列中;解码该指令队列中的一第二指令;以及发送该第二指令的数据存取要求给至少下列一个:一常数闪速存储器、一顶点属性闪速存储器、一共同暂存器文件和一执行单元数据路径。
附图说明
图1为现有技术的计算机系统的绘图管线的部份元件的功能方块图。
图2为本发明一实施例的绘图处理管线的部分元件方块图。
图3为本发明一实施例的绘图处理器的方块图。
图4为本发明一实施例的执行单元的内部方块图。
图5为本发明一实施例的常数闪速存储器的功能方块图。
图6为本发明另一实施例的执行单元的内部方块图。
图7为本发明一实施例的操作流程图。
附图符号说明
100:绘图处理管线
110:顶点着色器
120:几何着色器
130:三角形设置单元
140:跨距/像砖产生器
150:属性设置单元
160:像素着色器
170:帧缓冲器
200:绘图处理管线
250:存储器单元
252:命令串流处理器
254:顶点着色器
256:几何着色器
257:三角形设置单元
258:跨距/像砖产生器
259:属性设置单元
260:像素着色器
262:帧缓冲器
304:执行单元集区控制单元
306:执行单元集区
308:顶点着色器
310:几何着色器
312:像素着色器
318:跨距/像砖产生器
320:三角形设置单元
322:属性设置单元
400、600:执行单元
402、604:线程控制器
404、606:指令撷取仲裁器0
406、608:指令撷取仲裁器1
408、602:指令闪速存储器
410、624:常数闪速存储器
412:L2闪速存储器存取单元
413:指令传播总线
414、628:顶点属性闪速存储器
416、632:共同暂存器文件0
417、610、612:偶数线程
418、634:共同暂存器文件1
419、614、616:奇数线程
420、636:执行单元数据路径
422、638:算术逻辑单元0
424、640:算术逻辑单元1
426、642:内插器
428、644:输出缓冲器
500:常数闪速存储器
502:头标表
504:对照表
506:闪速存储器
508、626、630:先进先出缓冲器
618:常数闪速存储器仲裁器
620:共同暂存器文件仲裁器
622:顶点属性闪速存储器仲裁器
940:存取对应的存储器地址
具体实施方式
以下将结合附图来说明本发明的各个实施例,虽然本发明是藉由这些实施例来说明,但本发明不局限于下面所揭示的实施例,下述实施例的变形、改进与等同实施方式皆属于本发明的范围。
本发明提供一种可提高绘图处理单元的数据总处理量的系统和方法。在详细探讨本发明的各个实施例之前,请先参见图1,其绘示绘图处理管线100的的部分元件方块图,特别是绘图处理管线100的基本元件。这些基本元件包含顶点着色器110、几何着色器120、三角形设置单元(triangle setupunit)130、跨距与像砖产生器(span and tile generator)140、属性设置单元150、像素着色器160以及帧缓冲器170。上述元件的基本功能和操作为本领域的现有技术,故在此不多加赘述。简而言之,绘图基元可以位置数据(X、Y、Z和W座标)还有亮度及纹理数据来定义,以上所有数据可传送至顶点着色器110。如所已知,顶点着色器110可对从命令清单所接收的绘图数据执行各种转换,例如从世界座标转换至视野座标,再到投影座标,最后是屏幕座标。顶点着色器110可执行的各项功能为本领域技术人员所熟习,在此不加以叙述。顶点着色器110输出几何基元给几何着色器120。
几何着色器120所产生的几何和其他绘图数据会传送到三角形设置单元130来执行三角形设置操作,其细部功能和实现方式可依据需求有所不同。一般来说,三角形设置单元130接收三角形基元的顶点信息,并依据基元的类型执行各项操作,例如某些几何转换。
对每一顶点而言,所提供的几何信息包含X、Y、Z和W座标,其中X、Y、Z为几何座标,而W为齐次(hoogenous)座标。如本领域技术人员所熟习,相关转换可能是例如从模型空间到世界空间,再到视野空间,投影空间,然后是齐次空间以及正规化装置座标(normalized device coordinates,NDC),最后是屏幕空间。请注意,为了简化说明之便,本发明的叙述省略部分绘图管线元件,但这些绘图管线元件的操作应为本领域技术人员所熟习。举例来说,本发明未揭示光栅扫描管线的所有阶段,但本领域的技术人员应可理解其包含未揭示的管线阶段。
以上所述的绘图管线阶段通常实现于绘图处理单元或绘图处理装置的中。某些管线阶段依循已公开的应用程序界面(application program interface,API)的规范,或是多个应用程序界面群组所制定的需求限制。上述应用程序界面可能是例如3D API。下文将以另一观点阐述绘图管线的实现。
请参见图2,其绘示本发明一实施例的绘图处理管线200的部分元件方块图。首先是命令串流处理器(command stream processor,CSP)252,主要用以从存储器接收或读取顶点。顶点可用以形成几何基元和管线的工作项目。命令串流处理器252从存储器读取数据,并利用这些数据来产生绘图管线的三角形、线段、点或其他基元,这些几何信息组合完毕之后接着被传送到顶点着色器254。某些绘图API常有的限制在于,诸如顶点着色器之类的着色器是使用者可编程阶段,也就是说使用这些API的程序设计者可以自行设计着色器,以及编程着色器可执行的操作。因此,在图2中以圆角标示的管线阶段即为可编程的阶段,例如顶点着色器254,这些可编程阶段可藉由绘图处理器的处理核心单元的可编程执行单元(或集区)的指令执行来实现。顶点着色器254藉由执行例如转换、扫描或打光等操作来处理顶点,然后传送给几何着色器256。几何着色器256所接收的输入为一完整基元的所有顶点,并将这些顶点以单一拓朴的形式输出,例如三角形串,线段串或是点清单等。此外几何着色器256还可执行诸如镶嵌和阴影锥生成等操作。
几何着色器256输出数据至三角形设置阶段257,其用以执行例如三角形删除(triangle trivial rejection)、行列式(determinant)计算、剔除(culling)、前属性设置(pre-attribute setup)、边缘函数计算以及安全频带剪裁(guardbandclipping),其操作为本领域技术容易所熟知,在此不赘述。三角形设置阶段257输出信息至跨距与像砖产生器258,其用以将不需呈现于屏幕上的三角形剔除以及执行其他操作。本领域的技术人员应可理解绘图管线还包含其他处理阶段,例如深度测试。深度测试可以据三角形的深度值来决定此三角形是否会显示于屏幕之上,若不需显示则剔除此三角形。其他未讨论的管线阶段为本领域的已知技术,故在此省略。
如果三角形设置阶段257所处理的三角形没有被跨距与像砖产生器258或其他管线阶段所剔除,则属性设置(attribute setup)阶段259会对这些三角形做属性设置操作。属性设置阶段259会产生后续管线阶段所需的属性的内插函数清单,并且对管线阶段所处理的几何基元的各项属性值作处理。
像素着色器260则是在属性设置阶段259每次输出可覆盖一个完整基元的各个顶点时被启动。如所已知,像素着色器260可执行内插或其他操作来决定输出至帧缓冲器262的像素颜色值。图2的各元件的功能操作为本领域技术人员所熟知,在此不赘述,因此上述各元件的内部操作亦省略讨论。
接着请参见图3,其为本发明一实施例的绘图处理器环境的方块图。图3仅绘示有助于理解本发明的相关元件,并未完整绘示绘图处理器的所有元件,本领域的技术人员应可自图3理解相关绘图处理器的一般功能和架构。
于本实施例中,为叙述简洁之便,绘图处理单元300的部份元件被省略,但本领域的技术人员应可理解其中还包含其他硬件或逻辑元件。绘图处理单元300包含执行单元集区306和执行单元集区控制单元304。执行单元集区306包含多个可编程的执行单元,而执行单元集区控制单元304用以掌控执行单元集区306的执行单元的线程管理,以及系统使用者和绘图处理单元300的其他元件的相互沟通。执行单元集区控制单元304还包含闪速存储器次系统,其具有可供执行单元集区306使用的一个或多个闪速存储器,并可用以储存数据或一般的存储器存取,例如顶点着色器线程可储存数据以供后续的三角形设置单元使用。此外,执行单元集区306的每一个执行单元可各自具有执行单元缓冲器,用以储存此执行单元本身的后续线程所需使用的数据。
如上所述,绘图管线的可编程阶段包含顶点着色器308、几何着色器310、像素着色器312都是在执行单元集区306所执行。由于执行单元集区306通常是可执行多线程操作的处理核心单元,执行单元集区控制单元304需负责执行单元集区306的线程调度。当执行单元集区控制单元304接收到执行某一可编程着色器的要求时,其会指示执行单元集区306中的某一执行单元建立一个新线程来执行着色器要求。执行单元集区控制单元304可管理执行单元集区306的相互载入,以及将某一着色器的资源转移给另一着色器来改善管线整理效能,相关管理技术为已知技术,在此不赘述。举例来说,如果以绘图处理单元300的数据总处理量来看,像素着色器312是造成瓶颈的源头,那么执行单元集区控制单元304可以配置更多的执行单元资源给像素着色器312来做改善。
图4为本发明一实施例的执行单元400的部份元件方块图。本实施例的单一执行单元400可同时执行多个指令,因此执行单元的集区可同时执行多个着色器线程。执行单元400包含线程控制器402,用以管理分派给执行单元400的任务,以及其中的有效(active)线程和休眠(sleeping)线程。有效线程是指对应于该任务的线程已经准备好可执行,也就是说,线程所需要的数据可被取得因此执行单元可以执行该线程。而休眠线程则是指线程控制器402所指派的任务尚未准备好,亦即休眠线程处在等待绘图管线其他元件传送数据的状态。线程控制器402包含指令撷取仲裁器0404和指令撷取仲裁器1406,而在本实施例中线程则可分为偶数线程和奇数线程。举例而言,如果执行单元400可执行16个线程,其中8个线程,也就是偶数线程可分派给指令撷取仲裁器0404,而剩下8个奇数线程则分派给指令撷取仲裁器1406。将所有线程分成两组并且具有个别的指令撷取仲裁器可减少指令撷取所造成的指令延迟,进而增进执行单元400的数据总处理量。当然,于其他实施例中线程可以其它方式分组或配置。
指令撷取仲裁器404和406可以各自独立替执行单元400的有效线程仲裁其要求来撷取指令,仲裁方式是依据提出要求的线程的时序。自线程接收到指令要求之后,指令撷取仲裁器404和406从指令闪速存储器408撷取指令。指令闪速存储器408可包含指令闪速控制器,用以执行闪速命中测试来判断所要求的指令是否存在指令闪速存储器408之内。如果指令不在指令闪速存储器408之内,或是闪速命中测试的结果是误失,就必须通过二阶L2闪速存储器存取单元412从二阶L2闪速存储器或其他存储器索取指令。撷取到的指令会在指令传播总线413上传播给偶数线程417和奇数线程419,如此一来,若有一个以上的线程要求相同指令时,至少可以减少一次指令撷取,进而减少指令延迟。也就是说,如果有不只一个线程向指令闪速存储器408要求同一个指令,不需要分别为各个线程撷取和传送指令,因为所要求的指令是通过指令传播总线413回传至指令闪速存储器408,而执行单元400中无论是偶数线程417或奇数线程419都可存取指令传播总线413。
指令撷取到之后,偶数线程417和奇数线程419之内的线程会判断所撷取的指令是否需要与常数闪速存储器410、顶点属性闪速存储器414、共同存储器文件0416和共同存储器文件1418相互动。举例来说,材质特性可能储存于常数闪速存储器410,还有其他对某一内文而言不会改变的参数,以及所要渲染的物体的所有顶点的常数。此外光源特性也是储存于常数闪速存储器410,因为这些参数通常在帧产生的过程中是稳定不变的。如所绘示,共同暂存器文件分成偶数和奇数群组,与线程划分为偶数和奇数群组相同。如果指令需要从常数闪速存储器410存取数据,那么在所需的数据准备好之前,指令不会被发送出去。同样地,如果指令需要常数闪速存储器410的数据,指令在数据从常数闪速存储器410获得数据之前不会被发送。更进一步,如果所需的数据是位于绘图处理单元之内,但位于执行单元外部,在取得这些外部数据之前指令不会被发送。举个例子,某个指令需要从执行单元外部的元件撷取纹理数据并储存于暂存器,线程就必须等待所要求的数据成功撷取并回传。
当指令的执行所需的数据已经准备完备,线程控制器402可以发送指令以供执行单元数据路径420来执行。执行单元数据路径420包含算术逻辑单元0422、算术逻辑单元1424和内插器426。当执行单元数据路径420对指令的执行结束后,所产生的结果可以从执行单元400的输出缓冲器428作输出,进而传送至执行单元400外绘图处理单元内的元件,或是执行单元内的其他元件,例如顶点属性闪速存储器414。举例而言,若某个指令的执行需要更新顶点属性闪速存储器414内的数据,这些数据就可以在执行单元数据路径420执行完毕后,通过输出缓冲器428传送至顶点属性闪速存储器414。在另一个范例中,执行单元数据路径420可以计算纹理座标或其他参数,然后通过输出缓冲器428输出至纹理单元或其他执行单元外部的元件。
请注意本发明各实施例中并未绘示所有的元件和数据路径,以利于文字说明的简洁之便。例如线程控制器可以耦接至执行单元集区控制单元,以用于接收执行单元需管理的任务。再者,某些元件可能需要从L2闪速存储器获取数据,而L2闪速存储器可能位于执行单元外部。因此,L2闪速存储器存取单元所代表的是存取L2闪速存储器或其他存储器的机制。
接着请参见图5,其绘示本发明一个实施例的常数闪速存储器的方块图,此闪速存储器可用于执行单元内。由于执行单元可以同时处理对应于多种类型的着色器操作的多个执行线程,例如像素着色器、顶点着色器和几何着色器,执行单元地须维持多组常数以供执行单元数据路径来使用。举例来说,一个同时执行像素着色器和顶点着色器的执行线程的执行单元需要维持像素着色器常数和顶点着色器常数。此外执行单元还必须维持常数的多个内文以及每个常数内文的多个版本。例如执行单元内有两条执行线程在执行像素着色器操作,而执行线程内存在多个不同的内文,因此执行单元必须维持至少两组不同内文的像素着色器常数。根据上述原因,本实施例的常数闪速存储器可用以维持不同类型的着色器执行线程的至少两组常数内文,同理执行单元也必须维持各内文的常数的多个变化版本。举例来说,如果存储器中的顶点着色器内文的一个常数被顶点着色器执行线程所改变,常数闪速存储器可以维持此常数的先前版本以及从存储器中撷取更新后的版本。如此一来,执行单元内的其他顶点着色器执行线程可以根据需求存取此常数的先前版本或更新版本。
常数闪速存储器500包含头标表502、闪速存储器506、对照表504。着色器内文的各个常数可以根据头标表502的定义储存在闪速存储器内。例如,头标表502可以根据着色器类型、内文或内文识别符概括常数的分组。在本实施例中,对应于同一着色器类型和内文识别符的常数连续地将基底地址存入闪速存储器。像素着色器可以直接向常数闪速存储器500对某个常数提出要求,但不需要有关该常数位置的信息。着色器执行线程只需要知道该常数在某个内文内位置即可向常数闪速存储器500提出要求。在图5的实施例中,如果像素着色器执行线程内有一个内文识别符为0的内文,那么只需要提出对内文识别符0的常数要求,常数闪速存储器500就会回传头标表502中对应的基底地址或其附近的第一常数。同样地,如果顶点着色器执行线程内有一个内文识别符为1的内文,那么只需要提出对内文识别符1的常数要求,常数闪速存储器500就会回传头标表502中对应的基底地址或其附近的第二常数。
另外,常数闪速存储器500也可以储存常数经过执行单元内的执行续处理的多个版本。本实施例的对照表504可维持有关经过各着色器执行线程处理的常数的数据,还有追踪每个常数的各版本,举例来说,对照表504的第一个项目包含经过顶点着色器执行线程处理的顶点着色器常数A。因此,常数闪速存储器500可已在闪速存储器中维持此常数的每个版本,以备在其他执行线程需要时可以使用。常数值的多个版本可依上述范例来维持。
常数闪速存储器500还包含先进先出缓冲器FIFO508,用以传送数据给执行单元所处理的着色器线程或是其他线程。FIFO508可以配置为任何大小而包含不同数目的项目,以符合常数闪速存储器500所在的执行单元的实际需要。举例来说,当某一着色器线程向常数闪速存储器500要求常数时,可利用头标表502和对照表504来定位此常数并传送给FIFO508。FIFO508接着可以传播讯号给执行单元的其他元件以示意此常数已准备好。因为执行单元可同时处理多个指令,FIFO508允许在先前线程所要求的常数撷取完成并准备传送之前,其他线程即可发送其他常数要求。常数闪速存储器500的总数据处理量可因此提高,因为常数闪速存储器500可服务的线程要求数量增加了。请注意本发明的常数闪速存储器500的头标表502、对照表504和FIFO508可以任何形式来实现,本领域的技术人员应可理解本实施例仅为其中一种实现方式。
图6绘示本发明图4的执行单元的另一实施例方块图。除了线程控制器604、指令撷取器0606和指令撷取器1608之外,本实施例还包含执行单元600内有效线程610、612、614和616,以及对应的指令队列。为表述简洁之便,图6并未绘示所有的有效线程和指令队列,本领域的技术人员应可理解执行单元600可能包含较多或较少数量的有效线程。在本实施例中执行单元600可同时处理至少八条有效线程,而有效线程又可分为偶数群组和奇数群组。换个角度来说,执行单元600可已包含至少八个指令队列,分别对应至上述至少八条有效线程。本实施例中有效线程分别包含可保持四个指令的指令队列。指令撷取器0606和指令撷取器1608替有效线程向指令闪速存储器602撷取指令,其中指令撷取器0606代表偶数有效线程610、612,而指令撷取器1608代表奇数有效线程614、616。
请注意对应于有效线程的指令队列可用以根据从指令闪速存储器或其他存储器撷取指令的延迟量,因而维持较多或较少数量的指令,而不一定是四个指令。每条有效现成的指令都是在实际执行之前预先撷取(prefetch),藉此减少发送指令要求给指令闪速存储器的延迟,还有在指令不存在于指令闪速存储器时,从L2闪速存储器或其他存储器获得指令所造成的延迟。再者,请注意将有效线程的指令的撷取与指令的解码和执行分离处理可以改善执行单元的效能和总处理量。撷取到的指令可以通过指令传播总线617传播给偶数线程和奇数线程。如此一来,若有一个以上的线程要求相同指令时,至少可以减少一次指令撷取,进而减少指令延迟。也就是说,如果有不只一个线程向指令闪速存储器602要求同一个指令,不需要分别为各个线程撷取和传送指令,因为所要求的指令是通过指令传播总线617回传至指令闪速存储器602,而执行单元600中无论是偶数线程或奇数线程都可存取指令传播总线617。
每个有效线程还包含指令预解码器(predecoder),用以判断下一个要处理的指令是否包含常数的撷取或储存,或是顶点属性数据的撷取或储存,或是需要与共同暂存器文件632、634其中一个互动。如果指令预解码器发现指令包含常数的撷取或储存,或是需要与常数闪速存储器624互动,那么该指令所在的有效线程所对应的指令预解码器可以向常数闪速存储器仲裁器618发送要求。常数闪速存储器仲裁器618是用以仲裁常数闪速存储器624的存取。在本实施例中,常数闪速存储器仲裁器618会对常数闪速存储器624提出要求。如上所述,常数闪速存储器624会处理常数撷取要求,并将所要求的常数储存于常数闪速存储器624的FIFO626。
相似地,如果指令队列的指令要求顶点属性数据的撷取或储存,或是需要与顶点属性闪速存储器622互动,那么指令预解码器可以向顶点属性闪速存储器仲裁器622发送要求。顶点属性闪速存储器628会处理常数撷取要求,并将所要求的顶点属性数据储存于与顶点属性闪速存储器628耦接的FIFO630。如果指令需要与共同暂存器文件632、634其中一个互动,那么该指令所在的有效线程所对应的指令预解码器可以向共同暂存器仲裁器620发送要求。共同暂存器仲裁器620是用以仲裁共同暂存器文件0632或是共同暂存器文件1634的存取要求,其可以根据指令是来自偶数线程或是奇数线程,发送指令要求给共同暂存器文件0632或共同暂存器文件1634。
请注意根据图6的执行单元架构,因为常数闪速存储器624、共同暂存器文件0632和共同暂存器文件1634、顶点属性闪速存储器628的存取要求可以在指令于执行单元数据路径636执行之前先发送和处理,如此一来减少了处理瓶颈,执行单元的总处理量可以获得提升。举例来说,如果指令包含常数撷取要求,而且常数闪速存储器需要从L2闪速存储器或是其他存储器撷取所要求的常数,那么可能需要多耗费数个时脉周期来完成。然而本发明的执行单元则不需要暂停线程来等待常数撷取,因为执行单元可以同时处理其他指令,例如对共同暂存器文件0632和共同暂存器文件1634,或是顶点属性闪速存储器628的要求。
如上所述,执行单元600还包含执行单元数据路径636,用以利用从常数闪速存储器624、共同暂存器文件0632、共同暂存器文件1634,或是顶点属性闪速存储器628所撷取的数据执行指令。线程控制器604在指令执行所需的数据准备完成之后可发送指令给执行单元数据路径636。举例来说,在指令需要向常数闪速存储器624要求常数的情况下,当所要求的常数已经储存在常数闪速存储器FIFO626时,那么线程控制器604可以发送指令给执行单元数据路径636,而执行单元数据路径636可以从常数闪速存储器FIFO626读取数据,并且把数据通过数据输出缓冲器644输出。同样地,在指令需要与共同暂存器文件0632或共同暂存器文件1634其中一个互动的情况下,当指令准备好可被执行单元数据路径636所执行时,线程控制器604可以发送指令给执行单元数据路径636。换句话说,当指令执行所需的数据准备好时,线程控制器604可以发送指令以供执行。
除此之外,为了更近一步改善执行单元的总处理量,本发明可以对执行单元数据路径636进行量测以最佳化指令的执行。举例来说,可以将两个指令合并来改善执行单元的总处理量,一个是对某一个共同暂存器文件的两个数值做运算的算术指令,一个是接续将运算结果存入另一个共同暂存器文件的指令。合并后的指令只需执行算术运算并将结果存入目的暂存器,减少了将算术指令储存于共同暂存器文件的执行。实现方式是分析指令队列内的指令,或是在编译器(compiler)将软件程序码转译为机器指令时来进行。举例来说,编译器在将软件程序码转译为机器指令可进行识别来判断是否有如上述先执行算术指令,接续将结果搬移至另一个共同暂存器文件的情况,在这种情况下,编译器可以产生单一指令来合并算术指令和搬移结果的指令,而非产生两个分离的指令。
在本发明的另一个实施例中,执行单元的线程所执行的共同算术指令包含纹理座标的计算和将纹理座标存入共同暂存器文件的某一个暂存器。一般来说,此线程执行完纹理座标计算之后的下一个指令会是采样指令,或是将纹理座标输出至纹理单元或是其他元件的输出指令,纹理座标的输出是通过数据输出缓冲器来实现的。利用上述的架构,这两个指令可以合并成一个指令,计算纹理座标和输出至指令的纹理单元或是其他管线元件。因此,本发明的架构下的执行单元可以允许至少五个操作同时间进行。举例来说,执行单元可以同时执行常数闪速存储器撷取、顶点属性闪速存储器撷取、常数暂存器文件0撷取、常数暂存器文件1撷取、以及自执行单元路径输出数据,输出可以是如上述将纹理座标输出至纹理单元或是其他元件。
图7绘示本发明一实施例的方法流程图,其中各项步骤可由执行单元或是执行单元的元件来执行,例如通过对应于各着色器的线程来执行被分派的指令。首先于步骤702,一开始可分支为两个平行流程,第一个流程描述指令撷取和队列于线程阶层的仲裁,第二个流程描述指令阶层的执行仲裁和调度。线程阶层起始于步骤718,决定需指令预取的有效线程,其方式可依据执行单元内有效线程的时序,选择替最旧(oldest)的线程预取指令。另一种方式是选择自上一次预取之后等待时间最长的线程,本领域的技术人员应可理解尚有其它选择方式。
步骤720中,从指令闪速存储器中替所选择的有效线程撷取指令,如果指令不存在于指令闪速存储器,则必须从L2闪速存储器或是其他存储器中撷取指令。所撷取到的指令会通过传播总线传送给有效线程,如步骤722所示。所有的有效线程皆可通过传播总线获取指令,因此若有一个以上的线程要求相同的指令,可以减少重复撷取相同指令所产生的延迟。也就是说,在不同线程要求相同指令的情况下,不需要逐一为每个线程撷取指令,因为所有线程都可通过传播总线获取指令,不管线程是属于偶数群组或奇数群组。
接着在步骤724中有效线程会将指令放入其指令队列,如上所述,执行单元中的每个有效线程都具有各自的指令队列,指令队列的大小可储存一定数量的指令来减少向指令闪速存储器撷取指令的延迟。
指令阶层的流程起始于步骤704,解码或是预解码某一有效线程所要执行的下一个指令,据此决定该指令所需的操作类型。步骤706中判断指令操作的类型,例如常数闪速存储器存取要求、顶点属性闪速存储器存取要求、共同暂存器文件存取要求、或是执行单元数据路径可直接执行的操作。于步骤712中,如果指令需要撷取或储存常数,或是与常数闪速存储器之间有互动,将该指令传送至常数闪速存储器。于步骤710中,如果指令需要撷取或储存顶点属性,或是与顶点属性闪速存储器之间有互动,将该指令传送至顶点属性闪速存储器。于步骤708中,如果指令需要与共同暂存器文件之间有互动,将该指令传送至共同暂存器文件。于步骤714中,如果执行单元数据路径可直接执行指令,将该指令传送至执行单元数据路径。当执行单元数据路径对指令执行完毕,步骤716将数据输出至目的地,例如纹理单元之类执行单元内的元件,或是执行单元的外部元件。
本发明的各实施例皆可以硬件、软件、韧体或是上述的任意组合来实现。于部分实施例中,数据的压缩可以通过执行软件或固件来实现,而软件或固件可以是储存于存储器中并可由适当的指令执行系统来执行。于其他实施例中,本发明可以硬件方式来实现诸如三角形设置或属性设置阶段,硬件可能是以下各类的任意组合:离散逻辑电路、特殊应用整合电路(ASIC)、可编程门阵列(PGA)、场域可编程门阵列(FPGA)。
本发明的流程方法实施例所包含的各项操作或方块应解读为程序码的模块、片段或部分,其包含可实现特定逻辑功能或步骤的一或多个指令。任何可实现本发明各实施例的目的和功能的其他变形或替换实施例仍属于本发明所涵盖的范围,在不脱离本发明精神之下,其他实施例亦可依据功能特性改变操作顺序或同步执行。上述各项操作也可理解为可实现特定逻辑功能或步骤的硬件逻辑电路的模块或部分。
本领域的技术人员应可理解,上述所提的执行单元还可包含额外的元件以实现各项功能和操作。虽然本发明以多个实施例揭示如上,但本领域技术人员应可理解上述实施例的各种替换、变更或改进仍属于本发明的范围。

Claims (8)

1.一种绘图处理单元,包含:
一执行单元,可用以执行多线程操作,该执行单元包含一线程控制器,该线程控制器包含一第一指令撷取仲裁器和一第二指令撷取仲裁器;以及
一常数闪速存储器,用以调节该执行单元的多个线程所对应的多个着色器操作的常数存取,该常数闪速存储器用以储存对应于该多个着色器操作的多个内文,并用以储存该多个内文的多个常数的多个版本,
其中该第一指令撷取仲裁器用以代表该执行单元的多个第一线程来撷取指令;以及
其中该第二指令撷取仲裁器用以代表该执行单元的多个第二线程来撷取指令。
2.如权利要求1所述的绘图处理单元,其中该执行单元可用以处理至少八个有效线程,其中第一部分有效线程被分配给该第一指令撷取仲裁器,其余部分有效线程被分配给该第二指令撷取仲裁器,该第一部分有效线程包含至少四个。
3.如权利要求2所述的绘图处理单元,还包含:
一指令闪速存储器,用以传送指令给该至少八个有效线程;
其中该第一指令撷取仲裁器用以代表该第一部分有效线程从该指令闪速存储器撷取指令,该第二指令撷取仲裁器用以代表该其余部分有效线程从该指令闪速存储器撷取指令;
其中该第一指令撷取仲裁器和该第二指令撷取仲裁器可用以传播所撷取的指令给该至少八个有效线程。
4.如权利要求3所述的绘图处理单元,其中该至少八个有效线程的每一个还包含:
一指令队列,用以维持该指令闪速存储器所传送的第一指令;以及
一指令预解码器,用以决定该指令队列中的一第二指令的数据存取要求类型。
5.如权利要求4所述的绘图处理单元,其中该第二指令的数据存取要求类型包含至少下列一个:常数闪速存储器要求、顶点属性闪速存储器要求、共同暂存器文件要求和一执行单元数据路径可直接执行的要求。
6.如权利要求4所述的绘图处理单元,其中该指令预解码器还用以发送该第二指令的要求给至少下列一个:常数闪速存储器仲裁器、顶点属性闪速存储器仲裁器、共同暂存器文件仲裁器和执行单元数据路径。
7.如权利要求4所述的绘图处理单元,其中该执行单元可同时撷取该第一指令以及决定该指令队列中的该第二指令的该数据存取要求的类型。
8.如权利要求4所述的绘图处理单元,其中该线程控制器用以发送一第三指令给一执行单元数据路径。
CN201210536179.3A 2010-04-21 2011-03-30 绘图处理单元 Active CN102982503B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/764,256 US8564604B2 (en) 2007-06-12 2010-04-21 Systems and methods for improving throughput of a graphics processing unit
US12/764,256 2010-04-21
CN201110078514.5A CN102136128B (zh) 2010-04-21 2011-03-30 增进绘图处理单元的总处理量的方法与系统

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201110078514.5A Division CN102136128B (zh) 2010-04-21 2011-03-30 增进绘图处理单元的总处理量的方法与系统

Publications (2)

Publication Number Publication Date
CN102982503A CN102982503A (zh) 2013-03-20
CN102982503B true CN102982503B (zh) 2015-10-21

Family

ID=44310115

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201210536179.3A Active CN102982503B (zh) 2010-04-21 2011-03-30 绘图处理单元
CN201110078514.5A Active CN102136128B (zh) 2010-04-21 2011-03-30 增进绘图处理单元的总处理量的方法与系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201110078514.5A Active CN102136128B (zh) 2010-04-21 2011-03-30 增进绘图处理单元的总处理量的方法与系统

Country Status (2)

Country Link
CN (2) CN102982503B (zh)
TW (1) TWI474280B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013130030A1 (en) 2012-02-27 2013-09-06 Intel Corporation Using cost estimation to improve performance of tile rendering for image processing
US9741154B2 (en) 2012-11-21 2017-08-22 Intel Corporation Recording the results of visibility tests at the input geometry object granularity
US9495721B2 (en) 2012-12-21 2016-11-15 Nvidia Corporation Efficient super-sampling with per-pixel shader threads
CN105118089B (zh) * 2015-08-19 2018-03-20 上海兆芯集成电路有限公司 三维图形管道中的可程序化像素设定方法及使用其的装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1928918A (zh) * 2005-10-14 2007-03-14 威盛电子股份有限公司 图形处理装置及于图形处理装置中执行着色操作的方法
CN100359506C (zh) * 2001-12-20 2008-01-02 杉桥技术公司 能够高效处理汇聚设备应用的多线程处理器

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958028A (en) * 1997-07-22 1999-09-28 National Instruments Corporation GPIB system and method which allows multiple thread access to global variables
US6895497B2 (en) * 2002-03-06 2005-05-17 Hewlett-Packard Development Company, L.P. Multidispatch CPU integrated circuit having virtualized and modular resources and adjustable dispatch priority
US7310722B2 (en) * 2003-12-18 2007-12-18 Nvidia Corporation Across-thread out of order instruction dispatch in a multithreaded graphics processor
US7454599B2 (en) * 2005-09-19 2008-11-18 Via Technologies, Inc. Selecting multiple threads for substantially concurrent processing
CN101145239A (zh) * 2006-06-20 2008-03-19 威盛电子股份有限公司 绘图处理单元及处理边框颜色信息的方法
US20080198166A1 (en) * 2007-02-16 2008-08-21 Via Technologies, Inc. Multi-threads vertex shader, graphics processing unit, and flow control method
US8086825B2 (en) * 2007-12-31 2011-12-27 Advanced Micro Devices, Inc. Processing pipeline having stage-specific thread selection and method thereof
US9214007B2 (en) * 2008-01-25 2015-12-15 Via Technologies, Inc. Graphics processor having unified cache system
US20090189896A1 (en) * 2008-01-25 2009-07-30 Via Technologies, Inc. Graphics Processor having Unified Shader Unit
GB2457265B (en) * 2008-02-07 2010-06-09 Imagination Tech Ltd Prioritising of instruction fetching in microprocessor systems
US20090289947A1 (en) * 2008-05-20 2009-11-26 Himax Technologies Limited System and method for processing data sent from a graphic engine

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100359506C (zh) * 2001-12-20 2008-01-02 杉桥技术公司 能够高效处理汇聚设备应用的多线程处理器
CN1928918A (zh) * 2005-10-14 2007-03-14 威盛电子股份有限公司 图形处理装置及于图形处理装置中执行着色操作的方法

Also Published As

Publication number Publication date
TW201137786A (en) 2011-11-01
CN102136128A (zh) 2011-07-27
TWI474280B (zh) 2015-02-21
CN102136128B (zh) 2014-05-21
CN102982503A (zh) 2013-03-20

Similar Documents

Publication Publication Date Title
US20230169717A1 (en) Unified rasterization and ray tracing rendering environments
US9779536B2 (en) Graphics processing
CN1957376B (zh) 可缩放着色器结构
US8013857B2 (en) Method for hybrid rasterization and raytracing with consistent programmable shading
JP5624733B2 (ja) グラフィックス処理システム
US9202303B2 (en) System and method for compositing path color in path rendering
KR101004110B1 (ko) 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩
US20110242119A1 (en) GPU Work Creation and Stateless Graphics in OPENGL
CN110458905A (zh) 用于层级自适应曲面细分的设备和方法
US5325485A (en) Method and apparatus for displaying primitives processed by a parallel processor system in a sequential order
US11954782B2 (en) Hybrid render with preferred primitive batch binning and sorting
US20100201703A1 (en) Systems and Methods for Improving Throughput of a Graphics Processing Unit
TW201428676A (zh) 在上游著色器內設定下游著色狀態
CN102982503B (zh) 绘图处理单元
US20180197268A1 (en) Graphics processing
US11010939B2 (en) Rendering of cubic Bezier curves in a graphics processing unit (GPU)
US11250611B1 (en) Graphics processing
CN110192225B (zh) 无序像素着色器导出
US11189073B2 (en) Graphics processing
US10062140B2 (en) Graphics processing systems
US20230401667A1 (en) Graphics processing systems
US20240169639A1 (en) Graphics processors
US11321803B2 (en) Graphics processing primitive patch testing
US20240169649A1 (en) Graphics processors
US20240070962A1 (en) Graphics processing method and system

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