CN1912922A - 多重执行资源图形处理器 - Google Patents
多重执行资源图形处理器 Download PDFInfo
- Publication number
- CN1912922A CN1912922A CNA2006100579255A CN200610057925A CN1912922A CN 1912922 A CN1912922 A CN 1912922A CN A2006100579255 A CNA2006100579255 A CN A2006100579255A CN 200610057925 A CN200610057925 A CN 200610057925A CN 1912922 A CN1912922 A CN 1912922A
- Authority
- CN
- China
- Prior art keywords
- performance element
- data
- dynamic scheduling
- graphics processor
- level
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种动态排程平行图形处理器,包括一散布器,用来产生要被处理的数个图形对象,以及分配与分散这些产生的图形对象给一或多个执行单元来进行处理。每个执行单元会被耦合至该散布器分散器,且接收一指令来处理一图形对象。该执行单元会借助排程该图形对象的处理以及在该图形对象上执行指令操作来推动该对象本体经过一或多个处理级。该动态排程平行图形处理器包含一或多个固定功能单元,被耦合至该散布器,被配置成用来在一图形对象上执行一或多个预设的操作。一输入/输出单元,被耦合至该散布器、该些一或多个固定功能单元、以及该数个执行单元,且被配置成用来存取该动态排程平行图形处理器外面的存储器。
Description
技术领域
本发明涉及一种计算机处理器及计算机网络的架构,特别是涉及一种用于产生及动态排程多重流动数据处理任务的系统与方法,用来在一平行处理器中执行。
背景技术
微处理器设计人员与厂商不断地专注于改进微处理器效能,以便执行越加复杂的软件,进而提高功效。虽然改进处理可借助缩小硅几何大小而有助于提高微处理器的速度,不过,处理器的设计方式,尤其是指令执行核心,仍然关系到处理器效能。
有许多微处理器都使用指令管线排列技术(instruction pipelining)来提高指令总处理量。一指令管线可利用一种组合线(assembly line)方式经过数个不同的指令执行相来同时处理数项指令。以非限制范例为例,可以将数个个别的功能单元,例如译码单元,进一步管线排列成数个硬件级,每一级均会在一分离的指令中实施该指令译码过程中的某个步骤。因此,利用多个不同的管线级便可深化处理器硬件管线。
用于改进指令执行速度的另一种方法称为“乱序(out-of-order)”执行法。乱序执行法执行指令的顺序不同于编译器发送该些指令的顺序,以便缩短含有该些指令的程序的整体执行等待时间。乱序指令执行法的其中一种方式是使用被称为“缓存器记分板(register scoreboarding)”的技术,其中,指令会被依序发送,但是却以乱序的方式来执行。乱序排程的另一种形式为运用被称为“动态排程”的技术。对提供动态排程的处理器来说,甚至会对发送指令给执行硬件的顺序进行重新排程,使其异于原来的程序顺序。虽然这些指令执行结果可能乱序,不过该些指令实际上已退出程序顺序。而且,乱序技术中的指令管线排列处理,例如动态排程,可在相同的微处理器中被分开使用或一起使用。
动态排程平行指令执行可能包含特殊的关联表,用来登记指令与功能单元的状态以及某项特殊指令结果作为所规定指令的输入操作数的可用性。排程硬件会使用该些表来发送、执行、以及完成个别的指令。
动态排程平行指令执行的范畴为指令层平行度(instruction levelparallelism,ILP),该项技术已经延伸至多重线程(超线程处理或是同步多重线程处理(simultaneous multithreading,SMT)。此项技术提供硬件辅助的多重线程派发及执行,从而在一平行功能单元中可在每个频率中处理多重指令。动态排程硬件可从该些多重现役线程中提供同步指令发送。
排程硬件可利用记分板来登记线程与指令状态,以便追踪指令发送与执行的相依性并且定义指令发送与执行的时间。此外,线程可能会因为冗长的等待时间快取错失或是其它的I/O原因而被暂止。不过,以一非限制性范例为例,该记分板可能由指令状态、功能单元状态、以及缓存器结果状态所组成。此三份表格都会在指令执行过程中借助在每个频率循环中更新它们的字段来进行互动。为传送某道指令的级与变化状态,应该满足特定的条件并且在每一级中实行特定的操作。
缓存器更名是在已经预设架构缓存器名称空间(architecture registernamespace)时用来克服名称相依性问题的另一项技术,其允许数个指令被并行执行。根据缓存器更名技术,每当某一缓存器分配到某数值时,便可分派一新的缓存器。当译码某道指令时,硬件便会检查目的地字段,并且重新命名该架构缓存器名称空间。以一非限制范例为例,假设缓存器R3分配到某数值的话,便可分派一新的缓存器复制体R3’,而在后面指令中对缓存器R3所进行的所有读取操作则均会被导向复制体R3’(以复制名称取代架构名称)。
继续此非限制性范例,当缓存器R3新分配到某数值的话,便可分派另一缓存器复制体R3”,而后面的参考值则均会被导向新的复制体R3”。此过程会针对所有输入指令来进行。此过程不仅会消除名称相依性,还可让该处理器看似具有更多的缓存器并且可提高指令层平行度,进而可操作更多的平行单元。
重排序缓冲器(reorder buffer)也可能会使用缓存器更名技术,以便扩充架构缓存器空间并且产生和不同命令相关联的同一缓存器的多重复制。如此便能够让乱序执行具有有序的结果。
当译码某道指令时,可能会分配和该适当功能单元相关联的重排序缓冲器登录项。该被译码指令的目的地缓存器可能与该被分派的重排序缓冲器登录项有关,其会导致更改该缓存器的名称。该处理器硬件可产生一卷标来唯一识别此结果。该标签可储存于该重排序缓冲器登录项之中。当后续的指令参考到该更名目的地缓存器时,其便可接收该重排序缓冲器登录项中所储存的数值或标签,端视是否收到该数据而定。
重排序缓冲器可被组态成一内容寻址式存储器(content addressablememory,CAM),其中可利用该卷标进行数据搜寻。应用中,后续指令的目的地缓存器编号可被套用至一重排序缓冲器,并且也可确认含有此缓存器编号的登录项。确认之后,便可传回已算出的数值。假使该数值尚未算出,便可传回上述的标签来取代。假使有多个登录项含有此缓存器编号的话,那么便可确认最新的登录项。假使没有登录项含有该必要的缓存器编号的话,那么便可使用架构缓存器文件。当结果产生时,则可将该结果与卷标散布给所有的功能单元。
另一种处理方式包含实时排程及多重处理器系统。此组态包含数个松散耦合的多指令多数据(MIMD)微处理器,每个处理器均具有自己的存储器与输入输出(I/O)信道。在该些系统上可同时执行数项任务及子任务(线程)。不过,该些任务可能包含特定排序类型的同步化,以保持预期的处理型样。另外,各种处理型样可能需要不同的同步化。
和指令层平行度处理器不同的是在线程中,实时排程处理器会针对任务进行处理器分配(资源分派)。利用指令层平行度组态,在专属的功能单元中其中一部份可能重复,其意谓着,为分散所进行的指令分配非常简单,其相依于可用槽(slot)的数量及指令类型。
不过,对多指令多数据型的多重处理器系统来说,所有处理器通常是相似的,而且具有比较复杂的任务分配策略。至少其中一种非限制方式是将该多指令多数据结构视为一处理器群,其意谓着,将处理器看待成一结合资源,并且相依于存储器与计算资源的可用性来将处理分配给处理器。
此环境中,至少有两种方法可用来分散任务与线程。第一种为静态分配法,当每种任务或线程被预先分配给某个特殊处理器或某群处理器时便会进行此法。第二种组态为动态分配法,和上述者相似,本法需要相依于可用资源及任务优先权来将任务分配给该处理器群中的任何处理器。在此组态中,该多重处理器群可能具有特殊的派发线索,其中多项任务及多项线程正在等待分配及执行,并且供完成输入输出使用。另外,在此组态中,线程是任务的一部份,而某些任务可分割成数个线程,以便利用特定的数据同步及顺序来平行执行。因此,该些线程通常可与该处理的其余部份分开执行。另外,应用软件可能为一组线程,该些线程会在相同的地址空间但使用不同的处理器来同时合作及执行。因此,在不同处理器上同时执行的线程可产生动态的效能增益。
在一多重处理器组态中,可依照负载共享技术来实现线程排程。负载共享可能需要将负载均匀地分散于该微处理器群中的各个微处理器之上。这样才能确保没有任何微处理器是闲置的。
多重处理器线程排程可能会使用上述某些静态排程技术,例如当将某个线程分配给某个特定处理器时。不过,在将数个特定的线程分配给某个特定处理器时,其它的处理器可能会闲置,而该被分配的处理器则相当忙碌,从而导致该已分配的线程必须闲置等待其所分配到的处理器有空为止。因此,静态排程经常会造成处理器效率不高。
处理器的动态排程可以对象导向的图形管线来实行。对象是一种结构性数据项,代表沿着一逻辑管线往下移动的事物,例如三角形的顶点、贴片(patch)、像素、或是视频数据。在逻辑层处,数值数据与控制数据均可为该对象的一部份,不过实际的实行方式则可分开处理两者。
在一图形模型中,有数种对象可在该数据流中进行处理。第一种为状态对象,其含有硬件控制信息及描影码(shader code)。第二,可处理顶点对象,其含有和该数值控制数据相关的数组顶点。第三,在该数据流模型中可处理基本对象(primitive object),其含有和基本对象有关的数组数值数据与控制数据。更明确地说,一基础对象可能含有贴片对象、三角形对象、直线对象及/或点物件。第四,碎形对象可为该数据流模型的一部份,其含有和像素有关的数组数值数据与控制数据。最后,在数据流模型中还可处理其它类型的对象,例如视频数据。
每种对象均可具有可在其上实行的一组可能操作以及一(逻辑电路上)固定的数据布置。对象可能具有不同的大小与状态,其也可能被称为数层或数级,用来代表该些对象在管线处理中所抵达的位置。
以一非限制范例为例,可将某对象的各层例示在一三角形对象上,此对象刚开始具有三个顶点,指向顶点几何与属性数据的实际位置。当解出该些参考值时(检查快取以及在必要时从应用程序接口(API)缓冲器中检索数据),便可更新该对象层,使之经其它级来传送该对象。经更新的层通常可反映该对象结构中特定数据的可用性,以便进行立即处理。大部份情况中,一经更新的层会包含前面的层。
熟知本技术的人士会了解,一对象通常会有两种布置。第一为逻辑布置,其包含所有的数据结构。从对象产生时刻起至结束为止,该逻辑布置可能会保持不变。第二种对象布置为实体布置,其显示的为可供立即处理使用的数据结构,其可运行用来匹配最上层中的逻辑布置。
逻辑布置与实体布置两者均可以讯框及缓冲器-逻辑讯框及实体缓冲器来表示。逻辑讯框可被映像至实体缓冲器,以便让数据结构可供立即处理使用。每个对象一开始均含有数个逻辑讯框,而其中一个讯框可被映像至一实体缓冲器。用于后级中的所有其它讯框则可不被映像,以便节省芯片上的存储器资源。并且,讯框与缓冲器两者均可具有可变的大小,彼此间可弹性映像。
一对象可能会参考系统中其它对象内所保有的数据。管线怠惰评估技术(Pipeline lazy evaluation scheme)会追踪该些相依性,并且使用该些相依性来计算随选对象(object on demand)内所储存的数值。相同类型的对象可在平行独立的线索中来处理。或者,可产生一种复合对象,其含有数个顶点对象、碎形对象、或是基础对象,以便在单指令多数据(SIMD)模式中进行处理。
对图形处理应用而言,上述的特点具有历史内含固定函数及可程序硬件型管线解决方式。不过,该些线性解决方式经常会因该图形管线的静态组态而导致效率不明显。当如上述的某个特殊级的频宽在讯框产生的执行时间期间没有改变时,便会造成该处理器效率不明显且出现闲置时间,从而降低整体的效率。在涉及多个平行处理器的应用中,效率不彰的情形会更加恶化。
因此,目前为止,必须要解决由数个平行多重线程处理器所组成的多指令多数据结构中动态产生及多重逻辑图形管线执行管理的问题。本人还进一步在平行处理中改进资源利用率,以达到更高的效能,此问题以前可能起因于不良分派及不良排程协议分辨率。
发明内容
本发明的目的在于提供一种平行图形处理器的动态排程单元与方法,其可处理顶点本体、三角本体、以及像素本体,此均为非限制性范例。本发明提供和顶点、三角形、以及像素有关的多重数据串处理任务的动态排程。也就是说,一平行处理器会同时平行处理该些本体。
为了实现上述目的,本发明提供了一种平行图形处理器的动态排程单元,包括一散布器,其会产生图形对象进行处理。该散布器会分配与分散该些产生要进行处理的图形对象给一或多个执行单元。每个执行单元会接收一指令来处理一图形对象且将借助排程该图形对象的处理及在该图形对象上执行指令操作来推动该对象经过每个处理级。
该动态排程单元包含一或多个固定功能单元,被耦合至该散布器,被配置成用来在一图形对象上执行一或多个预设的操作。一输入/输出单元,被耦合至该散布器、该些一或多个固定功能单元以及该数个执行单元,且被配置成用来存取该动态排程单元外面的存储器。此动态排程单元会分派资源来提高处理效率,从而改善效能。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为本发明的对象导向架构的抽象硬件模型示意图;
图2为图1的对象导向架构模型中的三层动态排程示意图;
图3为利用和图1的单元相关的额外操作单元来显示图1的对象导向架构模型的示意图;
图4为图3的队列与快取控制器示意图;
图5为由图1的对象导向架构来执行的顶点处理序列中该对象导向架构互动的执行示意图;
图6、图7为图1模型的三角形处理序列的对象导向架构互动示意图;
图8、图9为图1模型的像素处理序列的对象导向架构互动示意图;
图10为一非限制性范例示意图,图中描绘的是在该全域散布器及图1的执行单元之间分派一三角形本体。
其中,附图标记:
10 对象导向架构模型object-oriented architecture
model
12 全域散布器(全域排程及任务及含表的分散器)global
spreader(global scheduler and task distributor)
13 数据传输通信系统data transport communication
system
15 执行单元(执行方块队列及快取控制器)execution
block
17 执行单元execution block
19 执行单元execution block
21 固定功能硬件与快取单元存储器Fixed function
hardware and cache unit
23 共同输入输出服务与大量快取存储器I/O common
service and bulk cache block
32 流管线线程控制器numeric streampipe thread
controller
34 数据移动控制器data move controller
41 基础对象表primitive table
43 顶点描述符表vertex descriptor table
46 输入顶点缓冲器与索引缓冲器input vertex buffer
and index buffer
48 执行单元execution block
49 执行单元execution block
50 像素封包器pixel packer
51 队列快取控制器queue cache controller
52 数据管理移动机制data management move machine
54 区域快取存储器local cache
56 线程控制器thread controller
57 流动数值管线及相关的缓存器单元stream numeric
pipe and associated register unit
61 微片旁通式队列tile bypass queue
63 重排序缓冲器reorder buffer
64 输出微片产生器output tile generator
71 通信单元communication unit
73 输入input portion
75 输出output portion
77 控制器communication controller
78 本体描述符表(具有控制器PB(Priority buffer,优先
缓冲))entity descriptor table
79 CTRL总线CTRL bus
82 级剖析器stage parser
83 级指标表stage pointer table
85 输入输出及移动描述符缓存器表I/O and move
descriptor register table
87 数据管理微程序存储器data management
microprogram memory
88 快取存储器cache memory
91 数值处理描述符缓存器表numerical process
descriptor register table
94 地址更名逻辑表单元address rename logic table
101 非限制性范例流程图nonlimiting example flowchart
步骤S104 检查输入三角形封包
步骤S106 检查顶点描述符表
步骤S108 产生区域参考值
步骤S109 产生全域参考值
步骤S111 定义候选执行单元以供分派
步骤S115 定义最小资源数量
步骤S118 产生本体分派要求
步骤S120 检查第一候选执行单元的状态
步骤S122 检查第二候选执行单元的状态
步骤S124 检查第三候选执行单元的状态
步骤S126 传送本体分派要求给执行单元
具体实施方式
不同于静态排程的如上述,在线程执行期间可运用动态排程,使之可由该应用软件来动态变更某处理中的线程数量。动态排程还可促成闲置处理器分配来执行特定的线程。此方式可改善可用处理器的运用情形,所以可改善系统的效率。
图1为本发明的对象导向架构模型10的抽象硬件示意图。图1的对象导向架构模型10包含一具有一群执行单元的通用处理部份,其可提供区域排程、数据交换、以及本体或是对象处理。
图1的对象导向架构模型10可为以动态排程指令执行概念为主的平行图形处理来致动动态排程,其可使用于超纯数(superscalar)机之中。此概念可延伸至数个线程及数个微线程,其为要在图形数据对象上执行的碎形码。如本文所述,该动态排程方式会映像至逻辑图形管线,其中每个部份均会处理一特定类型的图形数据对象并且执行含有数个微线程的线程。更明确地说,该图形管线的粗粒级可匹配某一层对象种类(例如顶点、几何形状、以及像素)上的线程,其中细粒级则相当于微线程。
对象导向架构模型10包含一全域排程器(global scheduler)及任务分散器(task distributor),下文中称为全域散布器(global spreader)12。全域散布器12具有数个附属的顶点与索引流缓冲器、一顶点对象表、以及一基础对象表,下文将更详细的说明(图3)。全域散布器12会通过一数据传输通信系统13被耦合至对象导向架构模型10的各个组件,正如熟悉本技术的人士了解的。该数据传输通信系统13会耦合该架构的所有组件,如图1所示。
执行单元15、17、19会提供区域排程、数据交换、以及本体处理,由全域散布器12来分配。下文将更详细地讨论执行单元15、17、19的逻辑构造及运行。
固定功能硬件与快取单元存储器21包含用于实行图形处理的固定功能级(例如网格化、纹理处理、以及输出像素处理部份)的专属图形资源。此外,图1的对象导向架构模型10中内含一共享输入输出服务与大量快取存储器23,其可被配置成包括一命令流处理器、存储器与总线存取、数个大量快取、以及一显示单元,以上均为非限制性范例。
虽然如下文,全域散布器12可运用数据传输通信系统13与一或多个执行单元15、17、19进行沟通,不过,该执行单元15、17、19也可根据全域散布器12分配给该些执行单元执行的各项任务与处理通过数据传输13来彼此沟通。
全域散布器12可与对象导向架构模型10中所有的执行单元进行互动,并且利用频率分辨率来追踪该些执行单元15、17、19中可用的资源。全域散布器12的任务分散组态可完全地程序化并且可依据每个执行单元的设定文件的逐个讯框监视结果来进行调适。
图2为图1的对象导向架构模型10中的三层动态排程示意图。在全域排程层处,全域散布器12可配合各表格运行并且还涉及新本体产生与逻辑讯框分配,以及涉及分散至各个执行单元15、17、19及物理存储器分派(在全域排程层中)。因此,如以上讨论,全域散布器12会与图1的所有执行单元15、17、19进行互动,其涉及到区域排程层,如图2所示。在区域排程层处,一区域任务排程器包含一区域记分板(local scoreboard)。该区域记分板包括一具有一级剖析器(stage parser)的队列与快取控制器,该级剖析器可经该些处理管线(见图5至图9)逐级地推动各本体,在各处理的整个执行期间针对已更新的状态本体进行物理存储器分派。
在该指令执行排程层处,该些执行单元含有一数值流管线线程控制器32,其会控制级剖析器82所定义的线程的数值处理。该指令执行层还包含一数据移动控制器34,其可致动执行多重执行单元中的多重线程,并且实行多重通道输入输出控制。换言之,数据移动控制器34会将数据传送给其它执行单元与全域散布器12及/或从其它执行单元与全域散布器12中接收数据。
包含全域排程层、区域排程层、以及指令执行层在内的所有层均包含硬件控制器来提供具有频率分辨率的动态排程。再有,该些全域与区域排程控制器可在计算资源分派中共同合作。
图3为利用和全域散布器12、执行单元15、固定功能硬件与快取单元存储器21、以及共享输入输出服务与大量快取存储器23相关的额外操作单元来显示图1的对象导向架构模型10的示意图。如图3所示,全域散布器12包含一基础对象表41(一含有基础元素的对照值的表)、一顶点描述符表43(所有执行单元中的顶点分派)、以及一输入顶点缓冲器与索引缓冲器46。如上讨论,全域散布器12是主要的上层排程单元,其可利用该些执行单元的状态信息及接收该些固定功能硬件与快取单元存储器21的数据将工作量分散给所有的执行单元15、17、19。如图4所示,全域散布器12可与该些执行单元的区域队列与队列快取控制器51进行互动以产生新本体,进而送入一逻辑管线中。
全域散布器12会控制所有执行单元间的数据分散操作,并且运用“生产者-消费者”数据参考的区域性原理。以一非限制性范例为例,全域散布器12会试图利用数个相关的三角形本体来分派数个顶点本体,并且从一特殊的三角形将数个像素封包分配给一具有三角形本体数据的执行单元。假使此特定的执行单元不具有足够资源供分派的话,便可将顶点或三角形数据复制至另一执行单元,三角形或像素本体可能已经在该处被传送。
在至少一非限制性范例中,全域散布器12可接收至少四种输入要求,用来在该些执行单元中安排处理。首先,全域散布器12可接收一顶点封包,由输入顶点缓冲器与索引缓冲器46产生。其次,全域散布器12可接收一三角形封包,由三角形组合硬件产生。全域散布器12还可接收由像素封包器50产生的一像素封包(在至少一非限制性范例中可高达16个像素),像素封包器50可为固定功能硬件与快取单元存储器21的一逻辑组件。以一非限制性范例为例,全域散布器12可接收贝塞尔曲线(BEZIER)贴片(在至少一非限制性范例中为16个顶点),由输入顶点缓冲器与索引缓冲器46产生。
对全域散布器12可接收的每种数据来说,全域散布器12可维持及监督该对象导向架构模型10中每个执行单元的各种控制信息。在此非限制性范例中,如图3所示,该对象导向架构模型10包含执行单元15、17、19、48以及49。不过,熟悉本技术的人士知道,可依照预期的应用而含有更多或较少的执行单元。不过,如上所述,全域散布器12会保留至少和任何特定时刻中可用执行单元数量有关的信息。此外,全域散布器12还会保留必须为某种特殊类型的新本体释放的最小资源量有关的信息,其可由一外部驱动器来设定。全域散布器12还会在接收某项特殊资源方面建立每个执行单元的优先权。在至少一非限制性范例中,可针对特定类型的数据及/或本体以专属的执行单元来配置对象导向架构模型10。因此,在此实例中,全域散布器12可获知该些专属性,以便将特殊数据分配给该些专属本体来进行处理。
全域散布器12还保有和欲被处理及欲被复制至该执行单元中的数据大小有关的数据,以及保有和该数据或本体有关的优先权信息。全域散布器12可能还保有数据布置偏好。以一非限制性范例为例,虽然顶点对象并无任何数据布置偏好,不过,三角形则可能以它们的顶点来建构为宜,而像素则以该些三角形来建构为宜,所以便构成数据布置偏好。因此,在此情况中,全域散布器12保有此信息来进行更有效的处理。
全域散布器12包含一基础对象表41。每个三角形均会取得其基础ID(身份),当分派该三角形本体时,其便会被储存于该基础对象表41之中。在此非限制性范例中,该基础对象表41有两栏:基础ID(PrID)与执行单元#,执行单元#对应的为分派该三角形本体处的执行单元编号。传送自固定功能硬件与快取单元存储器21的像素封包载有一三角形ID,其可用来在该基础对象表41中进行查找,以便决定原始的三角形本体的逻辑位置。
全域散布器12还包含一顶点描述符表43,该表是一供所有执行单元15、17、19、48及49使用的全域顶点登记表(参考图3)。顶点描述符表43含有和每个八(或是由一执行单元的单指令多数据系数所定义的任意数)顶点群的位置有关的记录或信息,其可能内含于正要进行处理的顶点封包之中。在至少一非限制性范例中,该顶点描述符表43可能含有约256笔记录,其包含字段名称、字段长度、字段来源,以非限制性范例为例,其来源可能是全域散布器12、顶点描述符表43控制、或是某个特定执行单元中的队列快取控制器51。顶点描述符表43也保有该些特殊记录的目的地信息以及和该特殊数据域位有关的描述信息。当收到一顶点封包时,该顶点描述符表43可配合输入顶点缓冲器与索引缓冲器46来运行。全域散布器12会产生一顶点本体,并且在该输入顶点缓冲器与索引缓冲器46及所分派的执行单元存储器之间开始进行传输,更详细的说明如下。
以一非限制性范例为例,假使进入的封包并不适合执行单元群(其包含图3所示的执行单元15、17、19、48及49),那么全域散布器12就可能不会承认有收到此数据,直到全域散布器12能够正确地分派具有足够资源(例如存储器空间)的特定执行单元为止。在此实例中,对一特定的顶点封包来说,全域散布器12可被配置成用来实施各种操作。首先,全域散布器12可利用其资源需求/分派信息来寻找一合适的执行单元(例如执行单元17),如上所述。或者,全域散布器12可将一要求传送给一特定的执行单元(例如执行单元49),用来分派一本体给所收到的顶点封包。假使所收到的顶点封包并未经过索引编排,那么全域散布器12便可在输入顶点缓冲器与索引缓冲器46中为它产生一个索引。此外,全域散布器12还可在顶点描述符表43中由一特定执行单元来分派一登录项,并且在该登录项中填入该本体的索引与编号。最后,全域散布器12可指示执行单元数据管理移动机制52将数据移到该执行单元中的预期位置处进行处理。
假使全域散布器12接收到一不适于某个特定执行单元群的三角形封包而不是一顶点封包的话,那么该全域散布器12便可利用该资源需求/分派信息来寻找一合适的执行单元,如同上面针对顶点封包所述的。或者,全域散布器12可在利用该三角形的顶点的索引时,检索该些本体编号并且抽出该些垂直元素编号。全域散布器12可将一要求传送给一执行单元(例如执行单元19),用来分派一本体给该三角形封包。而后,全域散布器12便可将该些顶点的本体编号与该些元素编号(1至8)传送给该特定的执行单元,例如此非限制性范例中的执行单元19。
对被全域散布器12所收到的一特定像素封包来说,全域散布器12可利用该资源需求/分派信息来寻找一合适的执行单元,如同上面针对三角形封包及顶点封包所述的。或者,全域散布器12可将一要求传送给一特定的执行单元,用来分派一本体给该像素封包。在此实例中,全域散布器12可将该些像素所属的三角形的本体编号及它们的元素编号传送给该执行单元以作进一步的处理。
到目前为止,本文的重点均放在全域散布器12及其功能上面;不过,现在会将重点放在该群执行单元以及它们与该全域散布器12的通信方式及彼此平行运行方式上面。
每个执行单元都含有一队列快取控制器(QCC)51。队列快取控制器51可在数据流处理中提供分级,并且将数据链路至数值与逻辑处理器,例如以供进行浮点及整数计算。队列快取控制器51可帮助管理一逻辑图形管线,其中在每一级的处理中均会产生或转换数据本体。如本文所述,队列快取控制器51包括一本体描述符、一级剖析器、以及一地址更名逻辑窗体单元。(下面将说明并图解额外的队列快取控制器组件)
对执行单元15来说,虽然图中所示的队列快取控制器的组件符号为51,不过图3中所示的其余执行单元也相同。队列快取控制器51具有专属的硬件针对各数据处理级来管理逻辑先进先出(FIFO),并且用来将各级连结在一起,更详细的讨论如下。队列快取控制器51为执行单元15的区域组件,图3中所示的其它队列快取控制器则是其个别执行单元的区域组件。依此方式,每个队列快取控制器均具有和其它执行单元的队列有关的全域参考值,以便在由全域散布器12进行配置时来支持全域排序。队列快取控制器51中的逻辑电路可促使数据管理移动机制52经过其各级在该执行单元间移动数据及/或将数据移动至其它的组件,如图3中所示的其它执行单元17、19、48或49。
队列快取控制器51包含一区域快取存储器54。在至少一非限制性范例中,区域快取存储器54中的数据并不会被传送至任何的实体先进先出。取而代之的是,所有的先进先出是具有和各对象相关的存储器参考值的逻辑组件。以一非限制性范例为例,和顶点封包有关的顶点数据可保留在该区域快取存储器之中直到该顶点数据被处理为止;或是可删除或被复制至相关的三角形本体以供进一步处理,不过,该顶点数据则不会保留在区域快取存储器54之中。
队列快取控制器51还包含一线程控制器56,其可支持多重线程处理并且能够执行四或更多个现役线程,所以可于执行单元层中在单指令多数据流类型执行上提供多指令多数据。虽然下文将作额外详细说明,不过,队列快取控制器51可与一流动数值管线及相关的缓存器单元57进行通信,该流动数值管线及相关的缓存器单元57可同时执行浮点及整数指令,其可在该单指令多数据流中处理多个数据项。
如图3所示,在此非限制性范例中,固定功能硬件与快取单元存储器21包括具有良好定义功能的大部份专属固定功能单元。在至少一非限制性范例中,固定功能硬件与快取单元存储器21包含一像素封包器50;一微片旁通式队列61;以及一重排序缓冲器63,其具有一输出微片产生器64(像素解封包器)。像素封包器50可被配置成用来在该执行单元中减低稀疏微片处理中的粒度损失。微片旁通式队列61可被配置成用来保有所有的微片像素屏蔽(tilepixels maks),同时可在该执行单元群中处理其它微片上的像素。另外,输出微片产生器64可被配置成用来使用该微片像素屏蔽来对该执行单元群中被收到的像素信息进行解封包。重排序缓冲器63会还原被传送至该执行单元群的该些像素封包的原来顺序,因为其也可以乱序方式来处理。
图4为图3的执行单元15(或是图3的任何其它执行单元)的队列快取控制器51的示意图,图中还显示了额外的组件。在此非限制性范例中,队列快取控制器51包含一通信单元71,该通信单元71具有一输入73部份及一输出75部份,其中可从其它执行单元中接收数据及其它信息及/或将数据及其它信息输出至一不同的执行单元及/或全域散布器12。通信单元71包含一通信控制器77,其可通过CTRL(控制)总线79与数据管理移动机制52来交换数据。
数据也可由CTRL总线79传送至本体描述符表78,该本体描述符表78会被配置成用来含有和已分配封包的数据关系、分派情形、就绪情形以及目前处理级有关的信息。本体描述符表78包含数个实体描述器(descriptors),用来储存和每个本体相关的数据及各种常数。在至少一非限制性范例中,本体描述符表78可能含有由至少两种类型组成的高达256笔记录,其包含一实体缓冲器登录项及一本体登录项。一虚拟图形管线所使用的所有逻辑先进先出均可利用该本体描述符表78及具有一级指标表83的级剖析器82来设计。
在至少一非限制性范例中,本体描述符表78可依据一内容寻址式存储器(CAM)并且使用二至三个字段来进行关联性查找。以一非限制性范例为例,该些字段可能包含一由八位字节成的本体编号字段以及一由四位字节成的逻辑讯框编号字段。依此方式,本体描述符表78可视为是一完整的关联性快取存储器,其具有额外的控制状态机用来在每个频率循环处依照该些执行单元中的状态来更新部份字段。
级剖析器82包含一级剖析器表,在一图形处理非限制性范例的逻辑管线中,该表含有每个处理级的指标,如图5至图9所示,在下文将作讨论。级指标实际上会指向每一级中下一次要处理的本体。在至少一非限制性范例中,和每一级相关的处理有两种:数值处理,以及输入输出或数据移动处理。级剖析器82的级剖析器表中内含的该些指标可用来选择具有一线程微程序的数个用户描述符。
当级剖析器82的级剖析器表产生一指向某个特殊本体的动态指针时,本体描述符表78中内含的用户描述符表信息便会被加载线程控制器56之中以供进行数值级处理,如上所述,其可能包含浮点指令与整数指令。级指标表中的每一级均具有一指向描述符表中某项记录的静态指针,其定义着该线程微码开始地址及数个线程参数。
或者,在输入输出处理的情况中,级剖析器82的级指标表83可产生一指针给输入输出和数据移动程序描述符表供数据管理移动机制52来运用。虽然图4中未显示,不过,级剖析器82实际上包含一控制器,其可在每个频率循环处检查本体描述符表78中该些本体的状态,并使之可逐级处理该些本体。
当队列快取控制器51运行来将数据传送给另一执行单元(例如执行单元19)时,该级剖析器表便可产生一和变动数据移动处理相关的指针值,该值会被传送至输入输出及移动描述符缓存器表85。变动数据传输要求会从输入输出及移动描述符缓存器表85被传送至数据管理微程序存储器87,该数据管理微程序存储器87会发出一指令给数据管理移动机制52用来存取快取存储器88中的该特殊数据并且将该数据传送至指定的存储器位置。
在级剖析器82的级剖析器表涉入某个本体的数值处理过程的情况中,该级剖析器82的级剖析器表便会产生一指标值用于执行数值处理,该指标值则会被传送至该数值处理描述符缓存器表91。该数值处理描述符缓存器表91会与线程控制器56进行通信,用来执行和该数值处理相关的浮点或整数指令序列。
地址更名逻辑窗体单元94含有地址更名信息,该信息可用于提供该些实体缓冲器至该些快取存储器线88的弹性映像,其说明同上。该逻辑更名表具有一或多个控制器,用来操作及更新该表。该地址更名逻辑窗体单元可对区域快取存储器提供虚拟类型存取。更明确地说,该地址更名逻辑窗体单元94会将一实体缓冲器编号转换成一快取地址。熟悉本技术的人士应该了解,该逻辑表可被配置成以和虚拟存储器系统中的转换后备缓冲器(translationlook-aside buffer,TLB)相似的方式来运行。
数据管理移动机制52负责加载所有的数据且移进该执行单元之中并且负责与全域散布器12以及所有其它执行单元及固定功能硬件与快取单元存储器21进行互动,如图1所示。在至少一非限制性范例中,假使数据未被储存于该执行单元的快取存储器88之中及/或未被加载该些缓存器(例如本体描述符表78)之中的话将不会处理一线程。就此而言,数据管理移动机制52会与本体描述符表78互动以获取该表中的本体的状态,以便提供外部要求的数据给执行单元15,例如供全域参考之用。以一非限制性范例为例,假使在第一执行单元中处理一三角形的其中一个顶点的话,对三角形处理用途而言,该特定的执行单元可能会试图将此顶点信息复制至正在处理该三角形的其余顶点或是该三角形的其余顶点所在的一或多个其它执行单元。依此方式,数据管理移动机制52便可让该特定执行单元与全域资源进行所有的互动,如图1所示。
图5为在一顶点处理序列中图1的对象导向架构模型10的执行示意图。对该些顶点对象来说,会参考一可能相同的“本体”。逻辑电路先进先出并不必实体均等,因为本体一旦产生之后,就不会改变它们在该存储器中的位置。取而代之的是,级剖析器82会使用指标来确认某个本体,以便将该本体从其中一种状态推入另一种状态。
如图5的非限制性范例所示,全域散布器12会通过图3的输入顶点缓冲器与索引缓冲器46将一顶点处理序列的几何流传送给数据管理移动机制52。该全域散布器12的顶点描述符表43会传送一本体分派要求,并且在该顶点描述符表43中登记该本体。继续停留在级0中,该执行单元的队列与队列快取控制器51会在快取存储器88中分派该本体,并且在本体描述符表78中建立一本体描述符表项。虽然已经分派此本体,不过如级0中所示,也可在快取存储器88之中为该本体建立数条快取线。在此操作期间,该执行单元的线程控制器与数值管可能正在执行其它的线程,如级0中所示。
级1中,在级剖析器82找到欲储存在快取存储器88之中的顶点本体时,便可进行顶点几何批次数据加载。在此操作中,级剖析器82会指示数据管理移动机制52为快取存储器88取得该顶点几何数据。
级2中,如图5所示,可依照级剖析器82来存取被加载快取存储器88之中的几何数据,以便让线程控制器56及数值管可在此非限制性范例中依照转换描影程序来实施运算。级2中所生成的数据可在进行级3中的操作以前再次被储存在快取存储器88之中。
级3中,由级剖析器82指示数据管理移动机制52将顶点属性批次数据置入快取存储器88之中便可加载该数据,如级3所示。此时,级3中,该执行单元的线程控制器56及数值管可能正在执行其它的线程。
级4中,该队列与快取控制器的级剖析器82可指示传输该些已转换的几何与未经处理的属性,并使之可实施属性转换与照明描影运算。所生成的数据可再次被储存于快取存储器88之中,如级4至级5所示。
级5中,在从级剖析器82中收到该顶点本体的指标时,线程控制器56及数值管便可对快取存储器88中已经过转换的数据进行额外的后描影运算。在离开该后端描影器时,如图6的级5中所示,所生成的顶点数据会再次被置放在快取存储器88之中,接着便会由数据管理移动机制52将其传送给任一其它的执行单元或全域散布器12可指挥的已分配存储器位置。
级5的结果为级剖析器82会发出一“删除本体”命令给该本体描述符表,以便删除此次操作的顶点本体ID。也就是说,可从顶点队列中删除该本体参考值,不过,该顶点数据仍然留在快取存储器88之中,以便供三角形本体用来进行其它的处理,其说明如下。视要被执行的微指令及欲被移动的数据大小而定,上述的六级中的每一级均可能发生在数个循环中。
图6与图7为图1对象导向架构模型10的三角形处理序列的对象导向架构互动示意图。级0中,全域散布器12可通过数据传输通信系统13总线来与数据管理移动机制52进行通信,同时还会分派该三角形本体要求并且在该顶点描述符表43中登记该项要求。该项三角形本体产生处理会在执行单元队列快取控制器51中继续执行,其方式是在本体描述符表78中分派该本体并且在快取存储器88中为该些三角形顶点索引及几何数据分派一存储器空间。此时,级0中,线程控制器56及数值管可能正在执行其它的线程。
级1中,级剖析器82可能会指向级0中所分派的三角形本体,并且会指示数据管理移动机制52接收该三角形几何数据,该数据可被复制至快取存储器88并且在本体描述符表78中进行参考,如级1所示。然而,此时,线程控制器56及数值管可能仍正在执行其它的线程。
级2中,级剖析器82可将快取存储器88中已加载的三角形几何数据传送至具有线程控制器56的数值管之中,用来在此非限制性范例中进行隐面消除(backface culling)。所生成的数据可被储存于快取存储器88之中,如级2所示,而经过更名的三角形本体ID则会保留在本体描述符表78之中。
级3中,具有线程控制器56的数值管可对该些顶点数据本体进行处理,如上述,其可能是起因于该级剖析器82参考该本体描述符表78的结果,并使该数据管理移动机制52将该地址信息传送给可能正在处理该些顶点本体的另一个执行单元。级4中(如图7所示),目前被储存在快取存储器88之中的该些三角形顶点属性会通过线程控制器56在数值管中被执行以便实施三角形修剪试验/分割操作。同样地,所生成的数据可被储存在快取存储器88之中,而已被队列的登录项则仍然保留在本体描述符表78之中。
继续此非限制性范例,级5操作包含级剖析器82将该本体描述符表78与线程控制器56及数值管中的某项小型三角形操作以及某个单像素三角形设定操作产生关联。快取存储器88会储存和单像素三角形及少于一个像素的三角形有关的数据。如级6所示,和该些三角形有关的生成数据会在本体描述符表78中被参考,因而可由级剖析器82将一角落传送至数据管理移动机制52。也就是说,可由总线将该生成的三角形几何数据转送至该全域散布器12或是转送至另一执行单元以供进一步处理。如上所述,视要被执行的微指令的数量及欲移动的数据大小而定,每一级可能会耗用数个频率循环。
图8与图9为像素处理序列中该对象导向架构模型10的互动示意图。如图8所示,图1的对象导向架构模型10的全域资源可在级0中在全域散布器12的输入顶点缓冲器与索引缓冲器46中建立一输入像素本体。此本体产生操作也会发生在队列快取控制器51之中,以便在本体描述符表78中产生一像素本体ID以及在快取存储器88中分派像素存储器,如级0所示。此时,线程控制器56及数值管可能正在执行其它的线程。
不过,级1中,级剖析器82会通过其级剖析器表在该本体描述符表中检索该像素本体ID,以便将快取存储器88中的该像素数据传送至线程控制器56及该数值管,用来在此非限制性范例中进行像素内插设定运算。所生成的数据会被送回快取存储器88之中,作为像素内插参数。另外,级剖析器82会在级1中提示该和此经更改数据有关的像素本体ID。
级2中,级剖析器82会在本体描述符表78中检索该像素本体ID,以便将快取存储器88中的该些像素内插参数传送至数值管中的线程控制器56,用来进行Z内插运算。所生成的经更改数据会被送回快取存储器88之中,而级剖析器82则会将该像素本体ID队列排列在本体描述符表78之中。不过,在一非限制性的替代具体实施例中,假使利用固定功能硬件与快取单元存储器21来进行Z内插的话,那么便可省略级2。在此非限制性范例中,像素封包器50接着就可直接从该Z内插单元(图中未示)中接收数据。
继续参考此非限制性范例,可利用该数据传输系统来传送该像素本体ID,用来依照该级剖析器与该数据管理移动机制的指示来接收像素XYZ及经屏蔽数据。此时,线程控制器56可能正在执行其它的线程。
级4中(如图9所示),级剖析器82可获取该像素本体ID,以便对快取存储器88中的数据实施纹理内插运算,其可能包括X、Y、Z的再包装内插参数及屏蔽数据信息。经此操作之后,级4便可将像素封包数据储存于快取存储器88之中。在将经处理信息转送至其它执行单元以在级5中进行处理时可由数据传输系统13来接收纹理地址数据。视纹理的数量及像素描影器的复杂度而定,可以任意顺序来复制级4、5、6。但是,如级6所示,可在纹理过滤及/或像素描影运算中的颜色内插中来变更快取存储器88中的像素封包数据,其方式如上所述。在最后一级中,如图9所示,级剖析器82会将该像素本体ID导向数据管理移动机制52,以便从该执行单元中转送最后的像素数据以供进一步处理及/或显示。
如上所述,该全域散布器12可分派一顶点、三角形和/或像素本体到一个或多个执行单元中进行处理,然而当上述的该全域散布器12分派一顶点、三角形和/或像素本体到一个或多个执行单元时,至少有另一种实施例为该全域散布器12根据预先决定的偏好来分派。
图10为一非限制性范例示意图101,图中描绘的是在该全域散布器12及图1的执行单元之间分派一三角形本体。图10中,在步骤S104处会在全域散布器12中收到一描绘(draw)命令,其会促使该全域散布器12去检查该三角形输入封包。假使该三角形输入封包含有索引的话,便可在全域散布器12中执行步骤S106,以便针对所收到的三角形封包来存取顶点描述符表43。
假使全域散布器12判断出该些和该三角形封包相关的顶点位于其中一执行单元中的话,全域散布器12便可产生一区域参考值(步骤S108);不过,假使全域散布器12判断出该些和该三角形封包相关的顶点位于多个执行单元中的话,全域散布器12便可产生一全域参考值(步骤S109),以便能够平行安排该些多个执行单元中的数据处理。
接着,视该些顶点究竟是位于其中一个或是数个执行单元中而定,全域散布器12会从步骤S108或步骤S109前进至步骤S115,该步骤可运行用来定义执行该三角形封包所需要的最小资源数量。除了源自步骤S104的该些索引以外,步骤S115中还会考虑到数据,并使之可为该三角形封包分派正确的资源数量。另外,步骤S115中还会考虑到数据和用于执行该三角形封包的逻辑讯框结构有关的数据。
如步骤S115所示,在确定供执行用的最小资源数量后,该全域散布器12便会在步骤S118处产生一本体分派要求。此本体分派要求包含步骤S115处所产生的要被复制的数据量,以及同样源自步骤S115的存储器覆盖范围。本体分派要求步骤S115还可接收一份经定义的候选执行单元清单,用于接收该本体分派要求,以及要被执行的本体类型的优先权索引。
如步骤S120所示,全域散布器12会检查第一候选执行单元的状态,其可依照步骤S111中定义的候选执行单元清单及/或和要被执行的本体类型有关的优先权。假使该第一候选执行单元为该经分派本体的可用资源相配者的话,全域散布器12便会传送一本体分派要求给该第一执行单元,如步骤S126所示,而后便会等待在完成之后接收该执行单元的结果。在该本体被分派之后,全域散布器12便会返回步骤S104,用来接收一下一个三角形描绘命令。
不过,假使该第一候选执行单元并非步骤S118中所分派的本体的可用资源相配者的话,那么全域散布器12便会寻求第二候选执行单元,如步骤S122所示。假使此第二候选执行单元为可用资源相配者的话,便会执行步骤S126,如上所述。不过,假使该第二候选执行单元并非相配者的话,那么全域散布器12便会寻求第三候选执行单元,如步骤S124所示。视此单元是否为相配者而定,全域散布器12可能会寻求一或多个额外的候选执行单元,直到发现适当的候选相配者以便分派要进行处理的本体为止。
熟悉本技术的人士应该了解,图10中所述的过程不仅适用于三角形封包,也适用于顶点封包及像素封包。不过,在每种实例中,全域散布器12均会如上述般地选择一候选执行单元。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (22)
1、一种动态排程平行图形处理器,其特征在于,包括:
一散布器,被配置成用来产生要被处理的数个图形对象,以及分配与分散该些经产生的图形对象来进行处理;
数个执行单元,被耦合至该散布器,且被配置成用来从该散布器中接收一指令来处理一图形对象,用来推动本体经过一或多个处理级,其中,每个执行单元均会排程该些经分配图形对象的处理,产生和一或多个其它执行单元可用的经分配数据对象有关的信息,以及在该经分配对象上执行一或多个指令操作;
一或多个固定功能单元,被耦合至该散布器与该些数个执行单元,且被配置成用来在一图形对象上执行一或多个预设的操作;以及
一输入/输出单元,被耦合至该散布器、该些一或多个固定功能单元以及该些数个执行单元,被配置成用来存取该动态排程单元外面的存储器。
2、根据权利要求1所述的动态排程平行图形处理器,其特征在于,该些一或多个固定功能单元会实施格栅化处理、纹理处理以及像素输出处理。
3、根据权利要求1所述的动态排程平行图形处理器,其特征在于,该散布器会分派和一三角图形对象本体相关联的数个顶点图形对象本体给一执行单元,而且还被分配用来处理该三角图形对象本体。
4、根据权利要求1所述的动态排程平行图形处理器,其特征在于,进一步包括:
该散布器中的逻辑电路,被配置成用来在每个频率循环处针对每个执行单元来保有及更新、可用资源的数量、该些要被处理的本体、每个本体的实体缓冲数据以及可用的快取存储器。
5、根据权利要求1所述的动态排程平行图形处理器,其特征在于,进一步包括:
该散布器中的逻辑电路,被配置成用来对要被分配于一特定图形物的该些数个执行单元中每一个执行单元优先化。
6、根据权利要求1所述的动态排程平行图形处理器,其特征在于,进一步包括:
该散布器可执行的逻辑电路,被配置成用来建立与保有和对应的顶点与像素相关联的三角图形对象的数据布置偏好。
7、根据权利要求1所述的动态排程平行图形处理器,其特征在于,每个该些数个执行单元包括:
一级剖析器,含有数个指针,被配置成用来指向要被移动或处理的对象;
一控制器,被配置成用来管理浮点与整数指令的执行;
一描述符表,被配置成用来暂存要被该执行单元处理的图形对象;以及
一数据移动器,被配置成用来将图形对象加载与移入该执行单元中,且进一步被配置成用来和该散布器与其它执行单元进行通信。
8、根据权利要求7所述的动态排程平行图形处理器,其特征在于,进一步包括:
一更名逻辑窗体单元,被配置成用来在快取存储器中提供实体缓冲器的弹性地址映像。
9、根据权利要求7所述的动态排程平行图形处理器,其特征在于,该描述符表含有和一图形对象处理相关联的数据关系、分派情形、就绪情形以及目前处理级有关的信息。
10、根据权利要求7所述的动态排程平行图形处理器,其特征在于,该级剖析器表中内含的该些指针指向一逻辑图形管线每一级中要被处理的图形对象。
11、根据权利要求10所述的动态排程平行图形处理器,其特征在于,和某一级相关联的处理包含数值处理,其涉及执行浮点与整数指令。
12、根据权利要求1所述的动态排程平行图形处理器,其特征在于,和某一级相关联的处理包含将该执行单元内的图形对象数据移至另一执行单元或移至该固定功能单元。
13、根据权利要求7所述的动态排程平行图形处理器,其特征在于,该描述符表为一内容寻址式存储器。
14、根据权利要求1所述的动态排程平行图形处理器,其特征在于,进一步包括有:
该散布器中的逻辑电路,被配置成用来保有一基本表,其含有当分派一三角本体时的基本ID信息。
15、根据权利要求14所述的动态排程平行图形处理器,其特征在于,该基本表具有一基本ID栏及一执行单元栏,对应于分派一三角本体处的特定执行单元。
16、一种动态排程方法,用来在一逻辑图形管线中排程图形数据的处理,其特征在于,包含以下步骤:
产生和一图形数据封包相关联的本体;
依据预设的资源需求及分派信息来选择一执行单元;
分配该本体给一选定的执行单元;
在该选定执行单元中分派该本体,用来将和该本体有关的图形数据传送至该选定执行单元;以及
推动该本体经过数个处理级。
17、根据权利要求16所述的动态排程方法,其特征在于,可选择二或多个执行单元来对和该本体有关的图形数据平行实施指令。
18、根据权利要求16所述的方法,其特征在于,进一步包括下面步骤之一或至少下面步骤之一:
在一索引缓冲器中索引编排该图形数据;
将该经分配的本体暂存于一本体表之中,其中当对该本体表作分配时便会更名该经暂存的本体;以及
倘若该经处理的图形数据和被分配给一或多个额外执行单元的本体有关的话,便将和该本体有关的该经处理的图形数据直接传送至该些一或多个额外执行单元。
19、根据权利要求18所述的动态排程方法,其特征在于,和该经更名的暂存本体相关联的数据可用于该本体表中的本体的后续数据读取。
20、根据权利要求18所述的动态排程方法,其特征在于,进一步包括下面步骤:
指向该本体表中在下一处理级要被该执行单元处理的本体;
倘若该本体指定用于数值处理的话,便依照一或多个浮点或整数指令来处理该被指向的本体;以及
由一数据移动单元将该被指向的本体传送至一预设的逻辑位置。
21、根据权利要求20所述的动态排程方法,其特征在于,该被指向的本体会被传送至一固定功能单元,用于一预设图形处理操作。
22、根据权利要求16所述的动态排程方法,其特征在于,会依照一或多个浮点与整数指令来处理和该本体相关联的图形数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/199,357 | 2005-08-08 | ||
US11/199,357 US7659898B2 (en) | 2005-08-08 | 2005-08-08 | Multi-execution resource graphics processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1912922A true CN1912922A (zh) | 2007-02-14 |
CN100426326C CN100426326C (zh) | 2008-10-15 |
Family
ID=37717225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100579255A Active CN100426326C (zh) | 2005-08-08 | 2006-02-27 | 多重执行资源图形处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7659898B2 (zh) |
CN (1) | CN100426326C (zh) |
TW (1) | TWI309393B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8134570B1 (en) * | 2006-09-18 | 2012-03-13 | Nvidia Corporation | System and method for graphics attribute packing for pixel shader usage |
US9478062B2 (en) * | 2006-09-19 | 2016-10-25 | Imagination Technologies Limited | Memory allocation in distributed memories for multiprocessing |
US8345053B2 (en) * | 2006-09-21 | 2013-01-01 | Qualcomm Incorporated | Graphics processors with parallel scheduling and execution of threads |
US8773447B1 (en) * | 2006-12-08 | 2014-07-08 | Nvidia Corporation | Tag logic scoreboarding in a graphics pipeline |
JP4444305B2 (ja) * | 2007-03-28 | 2010-03-31 | 株式会社東芝 | 半導体装置 |
US9183607B1 (en) | 2007-08-15 | 2015-11-10 | Nvidia Corporation | Scoreboard cache coherence in a graphics pipeline |
JP5166343B2 (ja) * | 2009-04-17 | 2013-03-21 | 株式会社ディジタルメディアプロフェッショナル | 3次元コンピュータグラフィック用プロセッサ |
US8056080B2 (en) * | 2009-08-31 | 2011-11-08 | International Business Machines Corporation | Multi-core/thread work-group computation scheduler |
US8854381B2 (en) * | 2009-09-03 | 2014-10-07 | Advanced Micro Devices, Inc. | Processing unit that enables asynchronous task dispatch |
KR101710910B1 (ko) * | 2010-09-27 | 2017-03-13 | 삼성전자 주식회사 | 프로세싱 유닛의 동적 자원 할당을 위한 방법 및 장치 |
US9268613B2 (en) * | 2010-12-20 | 2016-02-23 | Microsoft Technology Licensing, Llc | Scheduling and management in a personal datacenter |
GB2505818B (en) | 2011-06-16 | 2016-02-10 | Imagination Tech Ltd | Graphics processor with non-blocking concurrent architecture |
US9170820B2 (en) * | 2011-12-15 | 2015-10-27 | Advanced Micro Devices, Inc. | Syscall mechanism for processor to processor calls |
US9411595B2 (en) | 2012-05-31 | 2016-08-09 | Nvidia Corporation | Multi-threaded transactional memory coherence |
US9824009B2 (en) | 2012-12-21 | 2017-11-21 | Nvidia Corporation | Information coherency maintenance systems and methods |
US10102142B2 (en) | 2012-12-26 | 2018-10-16 | Nvidia Corporation | Virtual address based memory reordering |
US9569385B2 (en) | 2013-09-09 | 2017-02-14 | Nvidia Corporation | Memory transaction ordering |
GB2521155B (en) | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configuring thread scheduling on a multi-threaded data processing apparatus |
GB2521151B (en) * | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configurable thread ordering for a data processing apparatus |
US10114825B2 (en) * | 2014-03-14 | 2018-10-30 | Sap Se | Dynamic resource-based parallelization in distributed query execution frameworks |
US9779535B2 (en) | 2014-03-19 | 2017-10-03 | Microsoft Technology Licensing, Llc | Configuring resources used by a graphics processing unit |
US9766954B2 (en) | 2014-09-08 | 2017-09-19 | Microsoft Technology Licensing, Llc | Configuring resources used by a graphics processing unit |
GB2543866B (en) * | 2016-03-07 | 2017-11-01 | Imagination Tech Ltd | Task assembly for SIMD processing |
US10664942B2 (en) * | 2016-10-21 | 2020-05-26 | Advanced Micro Devices, Inc. | Reconfigurable virtual graphics and compute processor pipeline |
US10261835B2 (en) * | 2017-03-21 | 2019-04-16 | Arm Limited | Hardware thread scheduling |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4893234A (en) * | 1987-01-15 | 1990-01-09 | United States Department Of Energy | Multi-processor including data flow accelerator module |
US5627879A (en) * | 1992-09-17 | 1997-05-06 | Adc Telecommunications, Inc. | Cellular communications system with centralized base stations and distributed antenna units |
US5560025A (en) * | 1993-03-31 | 1996-09-24 | Intel Corporation | Entry allocation apparatus and method of same |
US5544161A (en) * | 1995-03-28 | 1996-08-06 | Bell Atlantic Network Services, Inc. | ATM packet demultiplexer for use in full service network having distributed architecture |
US5699537A (en) * | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
US6345287B1 (en) * | 1997-11-26 | 2002-02-05 | International Business Machines Corporation | Gang scheduling for resource allocation in a cluster computing environment |
US6573905B1 (en) * | 1999-11-09 | 2003-06-03 | Broadcom Corporation | Video and graphics system with parallel processing of graphics windows |
US6683615B1 (en) * | 1999-06-09 | 2004-01-27 | 3Dlabs Inc., Ltd. | Doubly-virtualized texture memory |
JP2001283243A (ja) * | 2000-03-31 | 2001-10-12 | Mitsubishi Electric Corp | 3次元グラフィックス描画データを記録した記録媒体およびその描画方法 |
US6657632B2 (en) * | 2001-01-24 | 2003-12-02 | Hewlett-Packard Development Company, L.P. | Unified memory distributed across multiple nodes in a computer graphics system |
US7233998B2 (en) * | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
US6809734B2 (en) * | 2001-03-22 | 2004-10-26 | Sony Computer Entertainment Inc. | Resource dedication system and method for a computer architecture for broadband networks |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US6826662B2 (en) * | 2001-03-22 | 2004-11-30 | Sony Computer Entertainment Inc. | System and method for data synchronization for a computer architecture for broadband networks |
US7093104B2 (en) * | 2001-03-22 | 2006-08-15 | Sony Computer Entertainment Inc. | Processing modules for computer architecture for broadband networks |
US8995445B2 (en) * | 2002-12-19 | 2015-03-31 | International Business Machines Corporation | System and method for re-sequencing data packets on a per-flow basis |
US6985150B2 (en) * | 2003-03-31 | 2006-01-10 | Sun Microsystems, Inc. | Accelerator control unit configured to manage multiple hardware contexts |
-
2005
- 2005-08-08 US US11/199,357 patent/US7659898B2/en active Active
-
2006
- 2006-02-10 TW TW095104655A patent/TWI309393B/zh active
- 2006-02-27 CN CNB2006100579255A patent/CN100426326C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
TW200707331A (en) | 2007-02-16 |
CN100426326C (zh) | 2008-10-15 |
TWI309393B (en) | 2009-05-01 |
US20070030278A1 (en) | 2007-02-08 |
US7659898B2 (en) | 2010-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1912922A (zh) | 多重执行资源图形处理器 | |
CN1912921A (zh) | 处理顶点、三角形、以及像素图形数据封包的方法 | |
CN1912924A (zh) | 用于平行图形处理器的全域散布器及方法 | |
CN1912923A (zh) | 用于管理一逻辑图形管线的数据处理级的系统与方法 | |
CN1806231A (zh) | 提供软件实现的高速缓冲存储器的方法与装置 | |
CN1279469C (zh) | 一种处理器中处理数据的方法和处理数据的系统 | |
TWI423162B (zh) | 在繪圖處理單元中處理資料的無死結管線化方法與處理器群組 | |
US8972699B2 (en) | Multicore interface with dynamic task management capability and task loading and offloading method thereof | |
CN1549964A (zh) | 管理计算系统中协处理器的计算资源的方法和系统 | |
CN1910554A (zh) | 多处理器系统中处理器任务迁移的方法与装置 | |
US11392739B1 (en) | Method and system for processing big data | |
KR101626378B1 (ko) | 병렬도를 고려한 병렬 처리 장치 및 방법 | |
CN101069161A (zh) | 调度方法、调度装置和多处理器系统 | |
CN1815438A (zh) | 信息处理方法和系统 | |
CN1604055A (zh) | 利用永久历史页表数据预取数据到高速缓存的装置和方法 | |
CN1348564A (zh) | 分优先级访问外部装置的方法和设备 | |
CN101040268A (zh) | 宽带网络计算机体系结构中的外部数据接口 | |
CN1198557A (zh) | 信息处理装置及信息处理方法 | |
Kapasi et al. | Stream scheduling | |
CN1601468A (zh) | 在多个处理器上加载软件的系统和方法 | |
CN1292366C (zh) | 用于使用多个处理器操纵数据的系统和方法 | |
CN100341009C (zh) | 在管线微处理器使用卷标以执行结合写入的装置及方法 | |
JP2009505301A (ja) | ベクトル処理用の拡張可能な並列パイプライン浮動小数点数演算ユニット | |
CN1326567A (zh) | 处理系统调度 | |
Abbasi et al. | A preliminary study of incorporating GPUs in the Hadoop framework |
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 |