CN101719262B - 绘图处理单元以及元命令处理系统 - Google Patents
绘图处理单元以及元命令处理系统 Download PDFInfo
- Publication number
- CN101719262B CN101719262B CN2009102221313A CN200910222131A CN101719262B CN 101719262 B CN101719262 B CN 101719262B CN 2009102221313 A CN2009102221313 A CN 2009102221313A CN 200910222131 A CN200910222131 A CN 200910222131A CN 101719262 B CN101719262 B CN 101719262B
- Authority
- CN
- China
- Prior art keywords
- metacommand
- gpu
- working storage
- literary composition
- interior
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 52
- 238000003860 storage Methods 0.000 claims description 311
- 239000000203 mixture Substances 0.000 claims description 287
- 230000009471 action Effects 0.000 claims description 146
- 230000001360 synchronised effect Effects 0.000 claims description 57
- VEMKTZHHVJILDY-UHFFFAOYSA-N resmethrin Chemical compound CC1(C)C(C=C(C)C)C1C(=O)OCC1=COC(CC=2C=CC=CC=2)=C1 VEMKTZHHVJILDY-UHFFFAOYSA-N 0.000 claims description 35
- 238000013507 mapping Methods 0.000 claims description 29
- 230000001143 conditioned effect Effects 0.000 claims description 14
- 238000012806 monitoring device Methods 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 5
- 238000000034 method Methods 0.000 abstract description 44
- 230000008569 process Effects 0.000 abstract description 12
- 238000007726 management method Methods 0.000 description 39
- 230000015572 biosynthetic process Effects 0.000 description 36
- 230000008859 change Effects 0.000 description 31
- 230000004888 barrier function Effects 0.000 description 30
- 230000007717 exclusion Effects 0.000 description 28
- 230000004913 activation Effects 0.000 description 26
- 230000006870 function Effects 0.000 description 17
- 230000007246 mechanism Effects 0.000 description 17
- 206010011968 Decreased immune responsiveness Diseases 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 238000007689 inspection Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 8
- 230000014759 maintenance of location Effects 0.000 description 8
- 238000001514 detection method Methods 0.000 description 7
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 239000011449 brick Substances 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000005520 cutting process Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 239000012530 fluid Substances 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000010422 painting Methods 0.000 description 2
- 230000006641 stabilisation Effects 0.000 description 2
- 238000011105 stabilization Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 206010000234 Abortion spontaneous Diseases 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 235000012364 Peperomia pellucida Nutrition 0.000 description 1
- 240000007711 Peperomia pellucida Species 0.000 description 1
- 206010000210 abortion Diseases 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 208000015994 miscarriage Diseases 0.000 description 1
- NHDHVHZZCFYRSB-UHFFFAOYSA-N pyriproxyfen Chemical compound C=1C=CC=NC=1OC(C)COC(C=C1)=CC=C1OC1=CC=CC=C1 NHDHVHZZCFYRSB-UHFFFAOYSA-N 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000009987 spinning Methods 0.000 description 1
- 208000000995 spontaneous abortion Diseases 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000002618 waking effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
本发明包括用以处理元命令的系统和方法的实施例。在至少一实施例中,绘图处理单元(GPU)包括一元处理器,用以处理至少一内文暂存器。元处理器包括内文管理逻辑单元和耦接至元处理器的元处理器控制暂存器方块,元处理器控制暂存器方块用以接收元处理器架构数据,元处理器控制暂存器方块更用以定义元命令执行逻辑单元的行为。某些实施例包括总线接口单元,用以提供系统处理器至元处理器的存取。GPU命令串流处理器用以撷取目前的内文命令串流,并传送命令至GPU管线和元处理器进行执行。
Description
技术领域
本发明涉及一种绘图处理单元,特别是涉及元命令处理的一种绘图处理单元。
背景技术
随着计算机绘图的发展,其相关的处理能力需求也相对地增加。当中央处理单元(Central Processing Unit,CPU)开始使用来处理绘图指令时,可配合另外的硬件实现许多绘图应用软件的功能。特别是随着绘图需求的增加,也开始使用了多重CPU和/或一绘图处理单元(GPU)。GPU的使用简化了绘图指令的处理。当使用GPU提升绘图能力的时候,可借着使用多个GPU更恰当地呈现许多动态的绘图场景。当使用多重GPU的情况下,GPU之间的同步是需要考虑进去的。
传统都是采用软件的方式来实现多重CPU的同步。然而,由于目前发展的CPU的特性,其可能使用串流类型的架构并且执行多个工作,因此目前所支持的多重CPU同步机制可能无法提供所需的软件和/或硬件功能。使用高速外围控制器接口(Peripheral Controller Interface Express,PCI-Express)的系统接口可于计算机系统中的多个CPU和GPU之间提供通用讯息传输层级的通讯机制,以及提供主存储器和区域存储器的数据区块间数据的一致性。
高速外围控制器接口锁定的交换(transaction)可用来支持讯息和厂商定义的讯息,其可当成用以实现不同的同步类型的低阶基元(primitive)。然而,这些机制可能没有包含所需的GPU同步支持,并且厂商必须定义它们的讯息以支持此系统的多重CPU和多重GPU的设定,以及GPU架构中的特殊硬件区块。这些讯息可定义为GPU的元命令(metacommand),其借着操作输入命令串流来控制GPU的活动。
发明内容
本发明包括用以处理元命令以控制输入命令串流层级上GPU活动的系统和方法的实施例。在至少一实施例中,GPU包括用以处理至少一内文暂存器的元处理器。元处理器包括内文管理逻辑单元和元处理器控制暂存器方块,元处理器控制暂存器方块用以接收元处理器架构数据,元处理器控制暂存器方块更用以定义内文管理逻辑单元的行为。本发明的某些实施例还包括总线接口单元,用以提供系统处理器对元处理器的存取。GPU命令串流处理器用以撷取目前的内文命令串流,并传送命令至GPU的管线执行。
本发明也包括用以处理元命令的系统的实施例。至少一实施例包括了元命令执行逻辑单元,用以执行至少一元命令。内文叙述暂存器方块用以接收内文信号和内文状态更新信号,并且提供内文状态至元命令执行逻辑单元。元处理器控制暂存器方块用以接收述词和条件(predicate and condition)信号,并且提供最终条件信号至元命令执行逻辑单元。本发明的某些实施例还包括隐性元命令(implicit metacommand)译码器,用以检测暂存器的更新和至少一GPU信号。
本发明至少一实施例的方法包括检测新的元命令,并确认所检测的元命令是否为隐性元命令,更新内文暂存器并检测关于所更新的内文暂存器的事件类型。对应于确认上述新元命令为上述隐性元命令的情况,确认信号路由是否为条件式的;对应于确认信号路由为条件式的情况下,设定与信号相关的一述词,并使用条件映射读取一动作码。确认所检测的元命令是否为显性元命令(explicit metacommand)。对应至所检测的元命令为显性元命令的情况,某些实施例包括确认动作编码是否为直接动作码,以及对应至该动作编码为直接动作码的情况,将动作译码并传送动作码至一个逻辑单元。
本领域的技术人员通过以下的附图和详细的叙述将可完全了解本发明其它的系统、方法、特征和优点。必须注意的是,所有类似的其它系统、方法、特征和优点皆包括于说明之中,并属于本发明的范围之内。
附图说明
图1显示根据本发明所述CPU的多重指令串流多重数据串流的架构;
图2显示根据本发明所述结合一或多CPU的多重简单绘图处理器的架构;
图3显示本发明一实施例的包括多重CPU和多重GPU的多重指令串流多重数据串流的处理器系统;
图4显示本发明一实施例的区域CPU队列;
图5图显示本发明一实施例的区域GPU队列;
图6显示本发明一实施例的执行列表的示意图;
图7显示本发明一实施例用以同步CPU的同步基元的方块图;
图8显示本发明一实施例的另一种同步基元的方块图;
图9显示本发明一实施例的GPU同步层级,其包括内文管理、命令串流管理、数据存取和着色器微执行绪层级;
图10显示本发明一实施例的一GPU元命令处理器的范例结构和连接其它GPU方块的结构;
图11显示本发明一实施例的用以实现同步和内文管理的GPU元命令的方块图;
图12显示本发明一实施例的元处理器逻辑单元中两种元命令的处理流程;
图13显示本发明的元命令执行数据读取的一实施例;
图14A显示本发明一实施例的显性和隐性元命令的执行序列的流程图;
图14B根据本发明一实施例的执行逻辑单元的方块图;
图15显示本发明一实施例的可结合至元处理器中至少一执行列表的内文暂存器的方块图;
图16显示本发明一实施例的内文锁定暂存器和内文状态暂存器;
图17显示本发明一实施例的当事件和元命令应用至状态管理状态机时的内文状态转换;
图18显示本发明一实施例的元处理器中执行元命令处理的状态机;
图19显示本发明一实施例的区域调度器的内文管理状态机;
图20A显示本发明一实施例的对应至图19的内文管理状态机的简化区域调度器动作;
图20B显示本发明一实施例的隐性元命令的定义和执行;
图21显示本发明一实施例的条件隐性元命令的动作定义数据流;
图22显示本发明一实施例的元处理器控制暂存器集合中的相关暂存器,其支持述词和条件架构,以及条件至动作控制暂存器的映像;
图23显示本发明一实施例的内文状态、事件和条件监控器状态机;
图24显示本发明一实施例的元处理器控制暂存器集合中,映像至由输入事件架构暂存器所定义的其中一个条件的元处理器动作控制暂存器,以 及条件架构暂存器;
图25显示本发明一实施例当区域调度器活动接收信号和要求时的状态图;
图26A显示本发明一实施例的计时暂存器方块的架构;
图26B显示本发明一实施例的关于定时器的元命令处理的流程图;
图27显示本发明一实施例的用于处理元命令的同步元命令处理的状态机;
图28A显示本发明一实施例的元互斥状态机,其用以执行内文失能/致能和内文锁定/解锁元命令;
图28B显示本发明一实施例的同步条件的译码和处理状态机;
图29显示本发明一实施例的元处理器控制暂存器集合;
图30显示本发明一实施例的述词和条件架构暂存器;
图31显示本发明一实施例的其它的元处理器控制暂存器;以及
图32A和图32B显示本发明一实施例的元处理器的指令集格式。
附图符号说明
102、108a-108n、202、208、312a-312n~CPU
104、110a-110n、204、210、314a-314n~区域存储器
106、206、304~总线
107~全域存储器
207~系统存储器
212a-212n、328a-328n~GPU
214a-214n、330a-330n~视讯存储器
302~CPU全域队列和CPU任务/执行绪调度器
306a-306n~区域CPU队列
324~GPU全域队列和GPU任务/内文调度器
326a-326n~区域队列
410~区域CPU执行绪调度器
510~区域GPU内文调度器
606~环状缓冲器
608~直接存储器存取缓冲器
1002~GPU元命令处理器
1004~GPU命令串流处理器
1006~GPU总线接口单元
1008~总线讯息译码器
1010~总线讯息编码器
1012a-1012n~内文暂存器方块
1014~内文管理逻辑单元
1016a-1016m~GPU管线区块
1018、1260、1336~元处理器控制暂存器
1232、1334~内文状态和描述暂存器
1332~内文描述暂存器方块
1334~内文状态和描述暂存器
1338~述词和条件架构暂存器
1340~元命令动作暂存器
1344~元命令执行逻辑单元
1346~显性元命令译码器
1348~隐性元命令译码器
1354~事件检测器
1356~信号检测器
1467~内文状态、事件和条件监控器
1469~区域调度器逻辑单元
1471~事件和要求处理逻辑单元
1473~内文管理逻辑单元
1475~内文同步控制单元
1477~定时器管理逻辑单元
1532~内文锁定暂存器
1548~内文状态暂存器
1550~内文感测条件架构选择暂存器
1566、2444、2960、2962~动作控制暂存器
1568~内文定时器选择暂存器
1570a、1570b~定时器
1572-1572m~时间-事件计数器
1574-1574m~事件选择器
1580~旗号选择暂存器
1582a、1582b、2950~旗号暂存器
1588~内文监控地址暂存器
1595~屏障同步暂存器方块
1596~区域事件历史缓冲器
1632~内文金钥暂存器
2066~元处理器控制暂存器集合
2068~元处理器区域调度器和执行逻辑单元
2132~事件/信号选择器
2136~述词选择器
2138~述词逻辑运算选择器
2142~动作控制暂存器选择器
2240、2242~动作暂存器
2634~时间/事件计数器
2636~定时器事件选择器暂存器
2932~述词暂存器
2934~输入事件架构暂存器
2936~述词发送更新信号致能暂存器
2938~最终条件和屏蔽暂存器
2940~条件架构(述词选择)暂存器
2942~逻辑运算暂存器
2944~条件动作选择暂存器
2946~无条件事件映像暂存器
2948~无条件内部信号映像暂存器
2952~同步基元控制暂存器
2964~定时器暂存器
2966~定时器输入选择器暂存器
2968~区域调度器控制暂存器
2970~自旋等待控制暂存器
2972~区域历史缓冲器控制和存取暂存器
3034~述词更新信号发送致能暂存器
具体实施方式
图1显示根据本发明所述CPU的多重指令串流多重数据串流(MultipleInstruction stream Multiple Data stream,MIMD)的架构。如图所示,图1包括具有全域存储器(global memory)的一命令总线多重处理器系统和具有附接的区域存储器(local memory)次系统的多重CPU。该系统可具有二个或更多的CPU,并且于这些CPU之间分配工作量。该系统可具有一专用的主CPU,用以规划处理程序(process)和执行绪(thread),并且可具有分布式调度处理程序执行于对称式多重处理(SymmetricMultiprocessing,SMP)系统之上。有很多种技术可以实现任务(task)的分配。另一种实施方式是在CPU共享相同的操作系统和应用程序任务池(task pool)时使用SMP技术。
使用具有全体可存取的数据的共享地址空间的系统,通常需要维护复制至区域存储器的数据区块其间的存储器数据的一致性,并且将处理程序/执行绪的执行做同步的动作。这类多重处理器中的CPU和存储器次系统通常具有硬件所支持的特殊基元和资源以提供多重处理器适当的功能运作,包括总线监控和用以实现存储器数据一致性的目录式协议,以及用于数据存取同步和执行绪执行控制所需的特殊指令和硬件区块。新的高速外围控制器接口总线功能可提供支持来实现这类的基元。
更具体地说,图1中的主CPU 102可耦接至区域存储器104。此外,主CPU 102可耦接至总线106,总线106可耦接至全域存储器107和从属CPU108a-108n。耦接至从属CPU 108a-108n的是区域存储器110a-110n,其中n代表所有可包括的从属CPU和区域存储器110的数目。如图1所示,区域存储器104和区域存储器110a之间的数据可具有一致性。同样的,全域存储器107和区域存储器110之间的数据可具有一致性。相同的,从属CPU之间可互相执行执行绪同步,而主CPU 102可传送任务/执行绪调度队列至全域存储器107。
图2显示本发明一实施例与一个或多个CPU结合的多重简单绘图处理器的架构,类似于图1的架构。更具体地说,图2的实施例示出了一多重 处理器系统,其包括一主CPU以及一个或多个连接至多个GPU的从属CPU。更明确地说,在图2的实施例中,主CPU 202耦接至区域存储器204和总线206。从属CPU 208也耦接至总线206和区域存储器210。系统存储器207耦接至总线206,简单(simple)GPU 212a-212n也耦接至总线206。而视讯存储器214a-214n分别耦接至简单GPU 212a-212n。
如图所示,区域存储器204、区域存储器210和系统存储器207之间的数据可具有一致性。同样地,主CPU 202和从属CPU 208之间可发生执行绪同步。已分布或预分类(presorted)的绘图命令可传送至一个或多个简单GPU 212a-212n。相同的,简单GPU 212之间亦会发生帧输出同步。视讯存储器214可相互沟通以增进一帧或多的帧的结合。
这类系统的其中一种实现方式包括将一3D绘图场景的空间和/或体积划分成多个区段和绘图对象的相关群组,并且传送绘图对象至个别的GPU产生最终帧的各个部分。另一个方式包括在用以呈现连续帧的不同GPU之间,采用时间分割(time split)的机制。这些架构的同步相对地较简单,并且可实现于帧产生的最后阶段(当GPU结合最终的帧缓冲器数据以便进行显示)。该系统可于CPU层级之上使用执行绪执行的同步,但在类似的架构中,在帧的呈现期间可能不需要GPU的同步。有很多的方法可以用来分散工作量,其可包括:
(1)至少其中一个GPU接收所要呈现的对象的一预先分类的群组(或者在时间分割机制的情况下是整个场景帧)以及所有相关的状态数据。这些对象是关于初步分割的屏幕区段(或是特定GPU的选定帧)。
(2)至少其中一个GPU可接收相同的(或类似)对象和状态分布数据流。GPU可裁剪位于其所分配的屏幕区段的外的对象,并且呈现位于其责任区段之内的对象。
本发明的实施例是关于绘图和数据处理系统中使用多重GPU结合一个或多个CPU来产生应用程序。高度逼真的复杂3D场景的实时呈现会耗用运算能力,该运算能力可由复杂的多重处理架构所提供。这些架构可包括一个或多个GPU和CPU,如图3所示。
图3显示本发明一实施例的包括多重CPU和多重GPU的多重指令多重数据的处理器系统。如图所示,这类复杂多重处理器的运算任务映像和执行任务调度可藉由实质的软件支持工具和特殊的硬件架构所实现,其可大 大减少多重处理器和运算调度的负荷。该类的CPU-GPU的多重指令多重数据的多重处理器系统(如图3所示)也可包括其它的引擎,包括(不限于)视讯、加密、数据移动或转换等等。
更具体地说,如图3中所示,全域CPU队列和执行绪调度器302(在此称为CPU QTS 302)可用一专属的主CPU和执行于多个CPU之上的对称多重处理(SMP)任务来实现。总线304可提供与CPU 312A的通讯,而区域CPU队列306a可实现为独立的存储器区块,并且/或映像到区域CPU存储器。CPU 312a也可耦接至区域存储器314a。
同样地,CPU QTS 302也耦接至CPU 312b和区域CPU队列306b。CPU 312b耦接至区域存储器314b。CPU QTS 302也耦接至另外的CPU,如CPU 312n、区域存储器314n和区域CPU队列306n所示。虚线边界的方块表示可实现为独立单元的逻辑单元,或可使用目前CPU模块的资源的逻辑单元。
本领域的技术人员应知悉,将总线304叙述为一总线是用以说明本发明而非限定本发明,本发明中其它的组件亦是如此。更具体地说,图3为逻辑的表示方式。如本领域的技术人员所了解的,以上提到的总线304仅为说明的用,因此任何用以提升CPU QTS 302和图1中其它组件间的沟通能力的技术都可以使用。
图3的非限定实施例另外包括一全域GPU队列和任务/内文调度器324(GPU QTS 324)。GPU QTS 324耦接至区域CPU队列326a和GPU 328a,GPU 328a耦接至视讯存储器330a。同样地,GPU QTS 324也耦接至区域队列326和GPU 328b,GPU 328b也耦接至视讯存储器330b。如上所述,GPU QTS324也可耦接至其它组件,例如区域队列326n、GPU 328n和视讯存储器330n。应该注意的是,GPU的内文调度器也可视为逻辑区块,其可使用CPU资源和/或特殊的GPU对GPU协议来实现。
在操作中,许多多重处理器系统可通过执行绪同步将CPU 312a、CPU312b和CPU 312n做同步。此外,CPU QTS 302和GPU QTS 324也可互相沟通以实现全域调度和同步的目的。CPU 312a可用来与区域CPU队列326a沟通以实现执行列表/内文状态(run list/context status)的通知。同样地,CPU 312b可用来与区域CPU队列326b沟通,CPU 312n和326n也是相同的道理。
亦如图3所述,多个任务(处理程序)和次任务(执行绪)可同时执 行,或大致上同时执行。一个处理程序可包括一个或多个执行绪,其可平行和/或接续地执行于相同或多个CPU中。一个或多个处理程序可于一个或多个CPU执行绪的执行期间使用一个或多个相关的CPU和/或其它特殊硬件单元。一具有专属地址空间的处理程序可作为具有特定处理调度的多重执行绪来执行于特定的CPU之上。该处理程序可由CPU QTS 302调度至某一个CPU,其可执行于专属的CPU上,和/或执行于系统中其它空闲的CPU上。
相关的GPU也可用来从CPU处理程序的地址空间内的直接存储器存取缓冲区(DMA buffer)撷取命令,并且写入以及/或读取全域存储器空间内的一位置。此外,GPU 328也可具有一执行绪,又称为内文。GPU的处理程序也可称为执行列表(run list),其可包括多个内文。
GPU 328也可用来接收着色器的执行绪以便于可程序着色器(可用来处理GPU内的串流数据)上执行。此外,多个GPU也可通过一连结转接器来连接,这样的架构可使多个GPU看起来成为CPU处理的一个逻辑GPU。
图4显示根据本发明一实施例的区域CPU队列,类似于图3的CPU队列。更具体地说,图4包括区域CPU队列306。区域CPU队列306包括应用程序处理程序A 402以及应用程序处理程序B 406。应用程序处理程序A 402可包括一个或多个执行绪404a、404b至404k,其中404k表示应用程序处理程序A 402可包括任意数目的执行绪。同样地,应用程序处理程序B 406包括一个或多个执行绪408a、408b和4081,其中执行绪4081表示应用程序处理程序B 406可包括任意数目的执行绪。应用程序处理程序的执行绪可传送到区域CPU行程/执行绪调度器410,其可切换执行于CPU 312上的执行绪。当接收到执行绪时,CPU 312可处理所需的指令。
图5显示本发明一实施例的区域GPU队列。与图3的区域CPU队列相似,区域GPU队列326包括应用程序执行列表A 502,其包括一个或多个内文504a、504b和504m,其中内文m(504m)表示能存在于应用程序执行列表A 502内的内文的数目。同样地,区域GPU队列326包括应用程序执行列表B 506,其包括一个或多个内文508a、508b和508m。区域GPU队列326可用来将应用程序执行列表502和506的数据传送至区域GPU内文调度器510。区域GPU内文调度器510可连接到用以于GPU 328上切换内文的逻辑单元。
图6显示本发明一实施例的执行列表的示意图,例如可由图3的架构 执行的执行列表。更具体地说,在图6的实施例中,奇数执行列表602包括多个内文指标0、1、2和3。内文指针可用来指向存储器中的一地址,例如直接存储器存取存储器(DMA)。奇数执行列表602亦包括目前执行列表有效指标608,用以指向目前正在执行的内文。
图6的实施例也包括偶数执行列表604。偶数执行列表604包括多个内文指标和多个环状缓冲器指标。以下所述的环状缓冲器606说明了环状缓冲器的一个范例。环状缓冲器606可包括一画砖头端指针、一直接存储器存取(DMA)指标和一头端指标。直接存储器存取指针可用来指向一直接存储器存取缓冲区,其可包括一个或多个绘图命令和/或其它的GPU命令。环状缓冲器606也包括一尾端指标和正在新增的指标。熟习此技艺的人士应该注意的是,环状缓冲器可容纳超过两个执行列表于GPU中。图6的奇数和偶数架构系非限定的实施例。头端指标和尾端指标可定义执行列表中的一个或多个内文。头端指针可用来显示GPU从哪个地方撷取要被解析器(parser)或串流处理器所执行的目前命令。在这个例子中,头端指标与程序计数器非常类似。尾端指标可反映CPU应用程序的GPU命令串流产生的特性,并且显示有效命令串流的边界(border)。当GPU遵循CPU的应用程序时,该类指针允许CPU和GPU的活动可以重迭。当GPU遵循CPU的应用程序时,CPU可继续写入命令串流,并且在GPU执行头端的内文时,将尾端指标移至新的边界。
可加入其它的指标以达到内文切换和其它同步程序的简化和改善,例如用以显示目前正执行于其中一GPU内部管线方块(光栅器,纹理单元等等)的命令的指标。当三角形转换成像素流(pixel flow)的时候,图6中的画砖头端指标可具有正执行于光栅单元顶端的命令的地址。GPU的内文可模拟为CPU的执行绪,代表应用程序任务的特定部分。执行列表(或内文群组)可模拟为包括许多执行绪的CPU处理程序。
此外,在许多系统中,执行绪之间可以同步。执行绪同步机制可使用任何的执行绪调度方法,并且可将硬件连接至调度软件和/或硬件。由A.D.Birrell、J.V.Guttag、J.J.Horning和R.Levin等作者于1978年8月20号所发表的一篇名为”Synchronization Primitives for aMultiprocessir:A formal Specification”的SRC Research Report 20,说明了CPU领域中包括多个同步基元(synchronization primitive)的执 行绪同步机制。上述该专利参考文献全体皆引用作为本说明书的揭示内容。
图7显示本发明一实施例可用以同步CPU的同步基元的方块图,例如图1的CPU。如所绘示,同步基元可包含于同步CPU,包括互斥基元群组(mutex primitive group)722(用以显示互斥的命令)、条件基元(condition primitive)群组730、旗号基元(semaphore primitive)群组742和警示基元(alerts primitive)群组752。互斥命令基元群组722可包括互斥获取(mutex acquire)724和互斥释放(mutex release)730基元。锁定(lock)基元726和解锁(unlock)728基元也可以不同的名称包括于互斥基元中。
条件群组730内包括一条件等待基元(condition wait)732,其包括进入队列(enqueue)变量734和重新恢复(resume)变量736。条件等待732的进入队列变量734可用来悬置目前的执行绪,并且当条件不成立的时候将悬置的执行绪放入队列中。条件等待732的重新恢复变量736可在条件成立的时候恢复执行绪的执行。条件群组730也包括条件信号(conditionsignal)基元738和条件广播(condition broadcast)基元740。在操作中,条件信号基元738和条件广播基元740可将被悬置等待的执行绪唤醒以再多次确认条件是否成立,若条件仍然成立则继续进行流程。
条件信号基元738可告知CPU有关一个或多个悬置的执行绪的条件述词的改变。条件广播基元740可用来告知悬置的执行绪。旗号群组742可包括一旗号P(下)二进制基元(binary primitive)744、一旗号V(上)二进制基元746、一旗号P(下)计数基元(counting primitive)748和一旗号V(上)计数基元750。二进制旗号的运算原理可与互斥基元类似。另外,二进制旗号P可与获取有关,而二进制旗号V与释放有关。计数旗号P(下)可用来确认旗号值、减少旗号值,并且当该值非零的时候继续执行绪的执行。否则,计数旗号P不会完成下半部分的运算并且进入休眠状态(sleep)。计数旗号V(上)用以增加旗号值,并且唤醒处于休眠状态且无法完成具有此特定地址的旗号的旗号P运算下半部分的执行绪。在与中断程序互动的情况中旗号是很有用的,因为在至少一些实施例中,旗号是无法使用互斥的。
警示基元群组752结合旗号和条件基元可提供执行绪的软性中断,其可用以实现计时结束(timeouts)、取消(aborts)的功能等等。这个功 能可用于决定提出这个要求时发生在比执行绪被阻挡的层级还高的抽象层级的情况。警示基元群组752可包括一警示基元754、一测试警示(testalert)基元756、一警示P(alertP)基元758和一警示等待(alert wait)基元760。警示等待基元760可包括进入队列基元762和/或警示重新恢复基元764的变量。
呼叫警示(t)是执行绪(t)提出异常警示的请求。程序测试警示(TestAlert)允许执行绪确认是否有等待处理中的请求让它发出警报。警示等待(AlertWait)和等待(Wait)很像,除了警示等待可发出警报而非返回。警示等待和等待之间的选择是根据呼叫的执行绪是否在呼叫的时间点需要响应警报。警示P程序可提供类似的功能给旗号。
具有平行循环的程序中的另一种同步运算是屏障(barrier)766。屏障766可用来悬置行程继续执行,直到所有的处理程序都到达屏障。一旦这些处理程序到达屏障766,屏障766可释放这些处理程序。屏障766的至少一实现方式可用多个自旋锁(spin-lock):一个用以保护计算到达屏障766的处理程序数目的计数器,另一个用以保持这些处理程序,直到最后一个处理程序到达屏障766为止。另一个解决方案可包括一感应反向屏障(sense-reversing barrier),其可用来利用私用的预处理(preprocess)变量,对于每一处理程序可将起始状态设为1。
以上所述的是CPU特殊功能所支持的执行绪同步基元。以上所指出的基元可用来提供硬件基元,例如微量暂存器存储器(AtomicRegister-Memory)交换、微量测试和设定(Test and Set)、存储器值(读取和更新)的微量撷取和增值(Atomic Fetch and increment)以及其它等。
此外,这些指令可依序使用。更具体地说,如果负载链接(Load Linked,LL)所指定的存储器位置的内容在条件储存(Store Conditional,SC)至同地址发生之前改变的话,则会导致条件储存失败。如果处理器执行两个指令之间的内文切换,则条件储存也会失败。条件储存可由返回一个用以指示该储存动作是否成功的值来定义。由于负载链接返回该起始值,并且条件储存在成功的时候返回1(反之则0)的值,因此以下的序列系实现R 1的内容所指明的存储器位置的微量交换。更具体地说,如以下的非限定实施例:
MOV R3,R4,R0;移动交换值
LL R2,0(R1);负载链接
SC R3,0(R1);条件储存
BEQZ R3,try;分支储存失败
MOV R4,R2;将负载值放入R
在序列的最后R4的内容会与R1所指明的存储器位置做微量交换(忽略延迟分支的影响)。当处理器在LL和SC指令之间插入且修改存储器中的值时,SC在R3中返回0的值,使得上述的程序代码序列再执行一次。负载链接/条件储存机制的优点就是该机制可用来建构其它的同步基元。以一非限定实施例来说,微量撷取并增值可能包括:
try:LL R2,0(R1);负载链接
DADDUI R3,R2,#1;增值
SC R3,0(R1);条件储存
BEQZ R3,try;分支储存失败
硬件/软件锁定支持和屏障改善
锁定的一问题就是会带来大量不必要的存储器传输竞争。如同非限定的实施例,当锁定被释放的时候,处理器可产生读取和写入误失(miss),即使最多一处理器可于解锁的状态中成功地取得该锁定。这个情况可借着将此锁定从一等待的处理器明确地交给下一个处理器来改善。与其于每次锁定释放的时候允许所有的处理器相互竞争,可使用一列表显示等待的处理器,并且明确地将此锁定交给轮到的处理器。这种机制可包括一队列锁定(queuing lock)。队列锁定可用硬件和/或软件的方式,以阵列追踪等待的处理器的方式来实现。硬件实现可用特别的同步控制器,其可和存储器或总线控制器整合在一起。
实现类似的队列锁定功能时有多个关键点。第一,本领域的技术人员可区分对该锁定的起始存取以执行队列运算以及锁定的释放,以便将此锁定提供给另一处理器。等待的处理程序的队列可用许多机制实现。在目录式的多重处理器中,该队列可与分享集合有关,且类似的硬件可用来实现目录和队列锁定运算。
其中复杂之处在于硬件可能随时准备要求取回这些锁定,因为要求该锁定的处理程序可能已经切换了内文,甚至可能不再调度于相同的处理器 上。队列锁定可用来改善屏障运算的效能。另一种方式是使用基元,用以减少屏障计数增量所需的时间,因而减少了这个瓶颈的序列化,这个方式产生的效能应与队列锁定的方式不相上下。
一个可用于同步运算的基元是撷取并增值基元,其可用来取得一变量并且增加其值。所返回的值可为增加后的值和/或初始取得的值。与简单的“程序代码感测”屏障相比,使用撷取并增值机制可改善屏障的实施方式。
图8显示本发明另一种同步基元的方块图,与图7的基元很类似。更具体地说,图8包括一互斥群组822,其中包括了一通知互斥等待基元824、一通知互斥信号基元826、一同步互斥等待基元828和一同步互斥信号基元830。图8也包括一旗号群组832,其包括一旗号P等待基元834和一旗号V信号基元836。
以上的说明是针对软件基元和CPU同步硬件支持的实施例。本发明也讨论了关于GPU元处理器的硬件单元,其支持了用以加强多重GPU同步的基元。更具体地说,本发明讨论了GPU的硬件同步基元,以及可用以实现那些支持GPU对GPU的同步和多重GPU对CPU的同步的基元的硬件方块。
图9显示本发明一实施例的GPU同步层级,其包括内文管理、命令串流管理、数据存取和着色器微执行绪层级。每一个同步层级都有参与者和可能动作。参与者可包括远程类型932,其可包括基于CPU的执行绪/处理程序调度器、一同侪类型934a-934c,其包括另一GPU内文。另一参与者可包括一区域类型933a-933c,其包括具有目前执行的内文的区域GPU电路和管线方块。区域着色器层级的参与者936可包括着色器程序和要求数据的指令。由于完整的可程序性,在多重CPU和多重GPU系统内着色器层级936可用一般第二级高速暂存(L2cache)和存储器整合机制实现一个或多个CPU同步基元938。对于CPU也是一样,可在着色器指令集加入其它功能以支持同步基元。
GPU元命令和/或多重内文管理层级940是下一代GPU的控制层级,并且可根据系统中区域、远程和同侪参与者的事件依照内文状态和内文群组(例如执行列表)来运作。这个元命令层级940可用来实现CPU对GPU和/或GPU对GPU的同步。在这个层级之上,GPU硬件可通过存储器映射输入/输出(Memory Mapped Input/Output,MMIO)接收内文状态更新命令、从远程参与者接收串流命令、从区域电路接收GPU管线事件,以及接收状态 暂存器更新或映像到区域GPU存储器的同步暂存器的更新。元命令层级可对应于远程调度器改变执行列表状态942、对应区域调度器944发出事件信号,并且对应远程或区域调度器946改变目前内文的状态。
与之前的实施方式比较,可借着增加述词命令(predicated command)的执行(或丢弃/忽略950)和潜在地悬置命令的执行952来增强命令串流层级948。如果特定的命令串流内需要同步处理的话,可于执行的命令串流内包含元命令。
数据存取层级同步954可用来处理存取共享表面(shared surface)时数据危机(data hazard)的处理、存取锁定表面(locked surface)956时的延滞,以及事件964的内文切换的虚拟存储器存取错误958。当着色器程序可直接自存储器存取数据并切换微执行绪做延迟补偿962,可采用着色器微执行绪层级960。着色器的完全可程序性可实现基于CPU的标准同步基元,例如图7所描述的那些基元。
图10显示本发明所述的一GPU元命令处理器(元处理器)的范例结构和连接其它GPU方块的结构。元处理器1002可耦接至命令串流处理器1004、总线接口单元1006、总线讯息编码器1010以及/或译码器1008。总线接口单元1006可将编码器和/或译码器包括于同一硬件单元的逻辑区块。元处理器1002从这些单元和一个或多个GPU管线方块接收元命令和事件信号。
元处理器1002可包括一个或多个内文暂存器方块1012a-1012n和连接到GPU的其它部分的内文管理逻辑单元1014。如下将说明的,内文管理逻辑单元1014用以实现对内文和同步基元的运算。元处理器控制暂存器可用来定义该架构或述词和/或条件,以及由内文管理逻辑单元所执行的动作。元处理器中内文管理逻辑单元1014的至少一实施例可基于可程序核心单元和专属的固定功能硬件单元之上,视响应时间的需求而定。
总线接口单元1006可用来将CPU和/或GPU系统的存取提供给元命令处理器的逻辑单元。命令流处理器1004可用来撷取目前的内文命令串流,且将命令送至GPU管线区块1016a-1016m执行。命令串流也可包括元命令,其可传送到元处理器1002内执行并且/或于命令串流处理器内执行。元处理器1002从总线接口单元1006、命令串流处理器(Command StreamProcessor,CSP)、讯息译码器接收元命令,以及从命令串流处理器和GPU管线单元接收内文相关的事件/信号通知。元处理器1002根据这些信息操 纵GPU内的多重内文。在实现为专用硬件区块的情况下,元处理器控制暂存器1018可用来定义内文管理逻辑单元的行为。
元处理器的一实施方式可具有多个群组的元命令,如图11所示:
(1)GPU内文管理元命令
(2)GPU远程和同侪同步元命令
(3)GPU区域同步和管理元命令
图11显示本发明一实施例用以实现同步和内文管理的GPU元命令的方块图,其可执行于与图10类似的结构中。第一群组的元命令包括一内文状态管理子群组1132,具有以下的元命令:(1)改变所选择的内文的状态(2)加载并开始新的内文(3)切换至所选择的内文(4)悬置和/或释放所选择的内文(5)改变所选择的内文的优先级。另一子群组可包括内文时间片段(time slice)控制管理元命令1134,其可将内文管理中使用的一个或多个定时器设定或重置。内文述词管理子群组1136可依照区域和同侪的GPU内文述词来操作,并且定义述词的一些逻辑运算。
第二群组可包含处理程序/内文同步元命令1136。乍看之下,这些元命令与图7的CPU同步基元很类似,但在至少一实施例中,在GPU元命令层级这些基元在实施方式、行为和意义上是有些不同的。元互斥(meta-mutex)定义对选择的内文/执行列表的互斥存取。CPU和/或GPU可锁定特定的GPU内文以进行进一步的管理,并且于至少一非限定的实施例中,没有其它的CPU和/或GPU可操作该锁定的内文。在这个CPU和/或GPU解锁之后,其它的参与者可存取该内文并且发送元命令。本发明提供一具有识别代号(CPU的处理程序或具有内文号码的GPU识别)的特殊内文锁定暂存器以支持类似的元命令。
条件等待元命令在较低的命令串流层级可类似于述词的命令执行。不同的是忽略命令的方式,等待元命令在条件不成立的时候把内文的状态变更为“悬置”。若条件成立则将内文状态变更为“就绪”。当元处理器在条件成立的情况下起始一立即内文切换至一选定的执行绪时,这类命令的变形可包括条件起始(condition start)。该条件可由述词的结合,并使用元命令处理器的内文暂存器方块内的条件架构暂存器而产生,但不限于此。
如果另一参与者改变封锁的条件,则条件信号元命令可释放特定的悬 置内文。该元命令包括两个基本部分:述词改变部分和信号部分(其将内文的状态改变至就绪)。在执行开始之前,该内文会再次检查该条件。条件广播与该信号类似,其指向执行列表中所有的内文或所有的执行列表。
在基于时间片段计数器的管理方式中,旗号P和旗号V可提供软件事件对大量时间的管理内文执行能力的元命令。CPU和GPU两者皆可将这些元命令传送至内文,并且管理内文的执行和/或悬置。在操作中,这些旗号与图7类似,旗号的对象就是目前正在执行或悬置的内文。
屏障元命令可保持内文的执行,直到等待围篱(wait-fence)的金钥(key)匹配。具有成对的等待围篱暂存器的屏障同步暂存器方块可以是内文暂存器方块的一部分且/或可实施于存储器单元内。如果该元命令正在执行的话,通知和警示元命令可改变内文的状态而不需要中断内文的执行。在它们的动作中,命令与图7中的原始基元很类似。设定和/或重置选定的述词元命令也可属于这个群组。
区域内文同步和管理元命令1138可被GPU管线方块和电路中的事件所起始。屏障事件的管线延滞动作可回报给元处理器,且该事件可起始内文悬置于自旋等待(spinning wait)上,并切换至另一个内文。依此结果,内文的优先级也可被改变。选定的区域事件可改变述词,而述词的改变可起始条件信号元命令。基于时间片段的目前内文执行控制可用来定义特定内文的最大执行时间。当此定时器终止之后,该内文可切换至另一定时器。基于时间片段的同步命令也可用来定义同步事件之间的最大时间,以避免GPU停滞于自旋等待或其它的事件之上。
若下个等待的内文在开始执行之前检查选定的述词的话,述词内文切换元命令可允许述词的内文切换。下面的表格显示元命令处理器的非限定元命令范例:
表一:远程参与者的内文管理范例
元命令 | 自变量 | GPU中的目的单元 | 发出者 |
加载和开始新 的内文 | 内文指标,状 态屏蔽 | 元命令处理器的内 文暂存器方块 | 软件GPU调度器通过 存储器映射输入/输 出(远程参与者) |
悬置/释放内 文 | 内文识别,状 态屏蔽 | 元命令处理器的内 文暂存器方块 | 软件GPU调度器通过 存储器映像输入/输 |
[0195]
出(远程参与者) | |||
切换至选定内 文 | 新的内文识 别,如果有的 话 | 元命令处理器的内 文暂存器方块 | 软件GPU调度器通过 存储器映像输入/输 出、GPU区域调度器 (远程,区域) |
设定述词 | 述词识别或 述词选择屏 蔽 | 元命令处理器的述 词方块 | 软件GPU调度器通过 存储器映像输入/输 出(远程) |
时间片段的述 词检查设定 | 内文识别,周 期中的时间 片段 | 元命令处理器的内 文暂存器方块 | 软件GPU调度器通过 存储器映像输入/输 出,或可执行的直接 存储器存取缓冲区 中的特殊命令(远 程) |
改变内文优先 级 | 内文识别,优 先级层级或 屏蔽 | 元命令处理器的内 文暂存器方块 | 软件GPU调度器通过 存储器映像输入/输 出(远程,区域) |
传送外部通知 和警示 | 存储器地址, 通知值 | 任何与存储器接口 单元连接的GPU方 块 | 可执行的直接存储 器存取缓冲区中的 特殊命令(远程) |
表二:区域内文管理的支持范例
元命令 | 自变量 | GPU内的目标单元 | 发出者 |
切换(述词)至 另一内文 | 内文识别, 述词识别 | 元命令处理器的内 文暂存器方块 | 软件GPU调度器通 过存储器映像输入 /输出、区域GPU调 度器 |
中断目前内文 (并且启动新 内文) | 新内文识 别,如果有 的话 | 元命令处理器的内 文暂存器方块 | 软件GPU调度器通 过存储器映像输入 /输出、区域GPU调 度器 |
[0198]
悬置(述词)特 定的内文 | 内文识别, 述词识别 | 元命令处理器的内 文暂存器方块 | 软件GPU调度器通 过存储器映像输入 /输出、区域GPU调 度器 |
将述词设定由 区域调度器检 查 | 述词识别 | 元命令处理器的述 词方块 | 软件GPU调度器通 过存储器映像输入 /输出 |
时间片段控制 | 计数器识 别,时间值 | 命令串流处理器内 的GPU区域调度器 | 软件GPU调度器通 过存储器映像输入 /输出 |
屏障 | 方块识别, 等待代符 (t oken) | 元命令处理器的内 文暂存器方块 | 软件GPU调度器通 过存储器映像输入 /输出 |
内文优先级改 变 | 内文识别, 优先级层级 或屏蔽 | 元命令处理器的内 文暂存器方块 | 软件GPU调度器通 过存储器映像输入 /输出 |
表三:远程点对点的内文管理的支持范例
元命令 | 自变量 | GPU内的目标单元 | 发出者 |
悬置内文于自旋 等待上 | 预设(执行 中的内文) | 元命令处理器内文 和控制暂存器方块 | 区域GPU调度器 |
传送界限至其它 GPU同步方块 | 界限地址 和值 | 任何具有连接至存 储器存取单元的接 口的方块 | 可执行的直接存储 器存取缓冲区的输 入命令串流 |
设定自旋等待的 监控器时器 | 计数器识 别,值 | 元命令处理器内文 和控制暂存器方块 | 软件GPU调度器通 过存储器映像输入 /输出 |
设定自旋等待上 内文切换的时间 片段 | 计数器识 别,值 | 元命令处理器内文 和控制暂存器方块 | 软件GPU调度器通 过存储器映像输入 /输出 |
致能/失能监控 | 暂存器识 | 元命令处理器内文 | 软件GPU调度器通 |
[0201]
器和等待代符模 式 | 别,屏蔽 | 和控制暂存器方块 | 过存储器映像输入 /输出 |
设定同侪GPU上 的述词 | 暂存器识 别,述词识 别或屏蔽, 设定/重置 | 元命令处理器内文 和控制暂存器方块 | 同侪GPU |
另一种的元命令的分类可根据编码机制和表示方式。GPU元处理器的元命令主要可分为两类。第一就是显性元命令,包括具有地址和修改旗标的运算码和编码动作。这个元命令代符可插入GPU命令串流中,并且/或通过外围组件互连延伸接口以讯息的方式传送。第二就是隐性元命令,其可由内文相关的暂存器的更新和/或信号设定述词和/或条件所起始。在这个例子中,元命令的动作细节可由元处理器内容暂存器的内容来定义。以下就是可插入GPU输入命令串流中的元命令代符的范例。
0Bh执行列表更新
此命令可由总线接口单元的命令串流接收,该命令可发生于直接存储器存取和/或RB串流发出“非法命令码”的事件。
表四:0Bh执行列表更新
位1奇/偶
0=更新偶数执行列表
1=更新奇数执行列表
位2动作
0=更新(利用设定暂存器命令)
1=更新和开始执行列表
(如果专属直接存储器存取还在执行中,且关闭内文切换的功能为开启,则可等到直接存储器存取的命令完成之后才切换执行列表)。
位24-25接续的四字节(接续的四字节的数目)(=接续的四字节+1)
执行列表更新可从内文0开始,然后是内文1、内文2和内文3。这个字段可指定该命令之后内文地址的数目。
表五:0Dh致能内文切换
位1致能
0=内文中断失能,中断并不会在这个命令之后致能
1=内文中断致能,此后任何的命令可被中断
位24-25接续的四字节(接续的四字节的数目)
隐性元命令可包括下列的非限定实施例:
1)悬置内文于自旋等待上,其可在管线停止动作于自旋等待时被触发。当这个命令内部触发时的情况可包括:
a.从该串流撷取的显性等待命令正执行于其中一个管线方块内。
b.当GPU管线停止动作的时间超过特定监控定时器设定的时间或等待代符的循环时间时,于自旋等待所导致的等待命令的尝试执行。该类的隐性命令可将目前内文的状态改变为悬置的状态,并且以超前于引起该事件的等待命令的内文头端指标值来起始目前内文的储存程序。
1)基于时间片段的内文切换可被内文时间片段定时器的终止所触发,而之后的动作与前述的命令类似。
2)述词内文的切换可被选定述词值的改变所触发。该述词可用定时器来定期检查,或于述词暂存器更新后立刻检查。其之后的动作与前述的命令类似。
图12显示本发明的元处理器逻辑单元中两种元命令的处理流程。显性元命令可从外围组件互连延伸和/或命令串流接收,并且可表示为一代符的格式,其包括运算码、修改旗标、动作编码描述符以及地址,如果有任何对存储器空间的写入动作快要完成的话。该元命令(于大部分的CPU中被直接解码)从命令代符和内文状态暂存器读取所需的数据。在某些情况中,元命令的动作可借着参照包括动作描述的特定元处理器控制暂存器来编码。在读取数据之后,该元命令可以被执行并连带更新指定的内文状态,以及应用至目前和/或指定的内文的一些控制动作。
隐性元命令是由GPU管线方块中内文相关的暂存器更新(包括述词)和信号或事件所起始。特殊的逻辑单元用来检测暂存器的更新、管线事件和/或信号。根据信号的类型,逻辑单元可传送请求至元处理器控制暂存器,其可包括类似于显性元命令代符中编码动作字段的编码动作。该动作描述 符和内文状态信息可回归至元命令执行逻辑单元,其可将此信息用于元命令的执行和/或内文状态更新中。
图12显示本发明的GPU中元命令处理的数据流,其与图12的GPU元处理器很类似。GPU元命令1232可存在于多种形式中,例如显性元命令1234和/或隐性元命令1250,如图12。显性元命令1234可视为具有运算码1236的代符。运算码1236、修改旗标1238和自变量可包括数据值1240和/或地址信息1242,其可传送至直接译码1244以进行执行1246。类似的代符可藉由外围组件互连延伸讯息接口所接收,或从GPU命令串流接收。隐性类型的元命令1250不需要代符格式,并且可视为对应于事件的状态机动作的形式。该事件可为一信号、讯息或某些内文方块暂存器的更新。
适当的状态机可于1252、1254两种情况中触发,并且可在从内文描述符和控制暂存器1248以及从元处理器控制暂存器1260读取数据(1256)后可执行元命令。随着元命令的执行结果1246和1258,可更新选定的或目前的(预设)内文,以及可改变内文的执行。元命令执行1246和1258可传送内文状态更新至内文描述和控制暂存器。
图13显示本发明的元命令执行数据读取的一非限定实施例。显性元命令译码器1346可从命令代符提供元命令动作程序代码,该命令代符选择一内文状态以供元命令执行逻辑单元1344的元命令执行。如果在执行之前有一个或多个条件被选定为需要检查的话,显性元命令的执行可以是条件性的。非条件性的执行直接使用命令代符数据,并且/或参照元命令动作暂存器以读取动作程序代码。
隐性元命令译码器1348可包括事件检测器1354和/或信号检测器1356以检测暂存器的更新和GPU信号。特殊事件映像1350和信号映像逻辑单元1352可用来选择可映像事件和/或信号的条件,或者是定义于元命令动作暂存器内的直接无条件动作。条件的提供是藉由将事件和/或信号映像至特定的述词,其形成稍后于动作选择中使用的最终条件,如果该条件变为成立的话。每一条件可映像至其中一个动作暂存器。在一些情况中,像是一般的GPU错误和/或一些其它的硬件事件,元命令的动作可以是无条件性的,且动作暂存器的直接选择是有需要的。条件性和无条件性的隐性元命令处理可提供GPU元处理器弹性。
另外,内文描述暂存器方块1332可包括多个内文状态和描述暂存器 1334,其可接收内文选择信号和内文状态更新信号,并且提供内文状态给元命令执行逻辑单元1344。元处理器控制暂存器方块1336可包括多个述词和条件设定暂存器1338,其可用来接收述词选择和条件信号,并且提供最终条件信号给元命令执行逻辑单元1344和条件映像组件1342。条件映像组件1342可传送条件动作暂存器选择信号至元命令动作暂存器1340,元命令动作暂存器1340可也从元命令执行逻辑单元1344接收无条件动作暂存器选择信号,并且传送元命令动作程序代码至元命令执行逻辑单元1344。
图14A显示本发明所述的显性和隐性元命令的执行序列的流程图。图14A显示显性和隐性元命令的处理程序中可译码和读取数据的动作序列的一个范例。在方块1432检测到显性元命令(1434)的情况中,可检查动作编码(1438)。在直接的动作编码中,如果该动作是无条件式的动作,则可解码代符字段并且将代符字段直接传送至执行逻辑单元(1364)。另一方面,如果该动作是条件式的,则可传送该动作至最终条件检查(1445)。如果最终条件是不成立的情形,则设定警示旗标且程序代码设为不执行(1456)。如果最终条件是成立的情形,可传送该动作至方块1464以执行元命令并且更新受影响的内文的状态。
在方块1438间接的动作编码情况中,动作程序代码可于方块1446中从元命令控制动作暂存器读取。在无条件命令的情况中,该程序代码可传送至执行逻辑单元1464。在条件式命令的情况中,程序代码被传送至最终条件检查方块1445。若最终条件成立的话,则该数据可传送至方块1464。若最终条件不成立的话,则该数据可传送至方块1456以设定受影响的内文的警示,该内文接着回到方块1432检测新的元命令。
当一个或多个内文和/或控制暂存器被更新,以及/或区域事件/信号被产生的时候,会有多种类型的隐性元命令(方块1436)。在暂存器更新的情况中,与该暂存器相关的事件类型可于方块1440中检测。如果该事件的类型为条件式事件,则可设定适当的述词且于方块1448检查最终条件。如果最终条件成立的话,则可于方块1458使用条件映像从动作暂存器读取动作模式,并接着传送至方块1464执行。在方块1448中,如果条件不成立的话,则仅设定警示旗标和程序代码,并且于方块1432检测新的元命令。如果在方块1440中检测到无条件式动作,则在方块1460使用事件映像(表)执行动作暂存器的动作程序代码的读取。
当在方块1436中检测到一区域信号时,该信号可于方块1442中被引导至相关的述词。若该信号是条件式的,则可于方块1450中以相关的信号设定该述词。在方块1452中可检查最终条件。如果条件不成立的话,则设定受影响的内文的警示旗标。如果条件成立的话,则使用条件映射读取动作码(方块1462),并且可于方块1464中执行元命令。如果条件不成立的话,则可设定警示旗标和程序代码。所读取的动作程序代码可传送至逻辑单元执行。如果不论任何原因使得元命令的执行失败的话,则也可设定警示旗标和程序代码,如方块1466所示。
为了支持内文管理机制,GPU元命令处理器可具有内文描述符和可为远程CPU、同侪CPU和区域耦接或可程序的调度器所存取的控制暂存器方块。图15绘示多重内文环境中支持多个GPU的方块的功能。内文描述符和控制暂存器方块的数目可与内文允许的最大数目相符。
图14B显示本发明一实施例的执行逻辑单元的方块图。更具体地说,元命令执行逻辑单元1344可包括多个主要方块。元命令执行逻辑单元1344可包括一内文状态、事件和条件监控器单元1467和一区域调度器逻辑单元1469。区域调度器逻辑单元1469包含一事件和要求处理逻辑单元1471和一内文管理逻辑单元1473。元命令执行逻辑单元1344亦包括一内文同步控制单元1475和一定时器管理逻辑单元1477。
图15显示本发明可结合至元处理器中至少一执行列表的内文暂存器的范例方块图,本实施例的内文列表与图6的执行列表很类似。更具体地说,图15包括两组的暂存器:内文描述和控制暂存器方块,以及命令串流撷取暂存器方块。第一群组可包括具有内文致能旗标1536和内文金钥1534的内文锁定暂存器1532。该暂存器提供内文暂存器方块对于由不同媒介(agent)所接收的命令的感测性(sensitivity),如图16所详述。
内文状态暂存器1548可包括少数字段,用以描述内文的稳定状态(stable statue)1538和中间状态(intermediate status)1540,以及悬置理由码1542。警示状态和程序代码1544可用以定义于开始恢复和执行此内文之前检查条件和/或旗号的必要性。内文优先等级1546可定义内文的优先级,其可用于内文的执行调度中。优先级可区域和/或由远程所改变。
内文感测条件架构暂存器1550可用来定义条件1552a、1552b、1552c和1552d,其可影响内文的状态。暂存器1550可包括对元处理器控制暂存 器集合中条件的参考。这些元处理器控制暂存器可用来定义述词选择以形成条件码(方块1552)、选择事件(方块1554)、定义述词值(方块1556)、定义述词信号、选择述词(方块1560)、定义逻辑运算(方块1562)、定义条件旗标(方块1564),以及与该内文相关的动作控制暂存器(方块1566)。述词信号暂存器(方块1558)可用来定义对区域调度器的信号发送。述词更新事件可立刻发信号至区域调度器,或着不发送信号至调度器而是通过时间轮询(polling)情况发现述词改变。
这些述词的中至少一个会是事件,选择暂存器可用来定义内部和/或外部事件的影响述词值。述词信号发送暂存器1558可用来定义至区域调度器的信号发送。述词更新事件可发送至区域调度器,或着不发送信号至调度器而调度器则是通过对条件的时间轮询来发现述词的改变。述词选择屏蔽1560选择一个述词群组,用以定义这些条件的逻辑运算。述词逻辑操作1562可用来定义多重述词位上该类型的逻辑运算以产生最终的条件值。
内文定时器选择暂存器1568可包括定时器1570a和1570b,且对于那些位于元处理器控制暂存器方块中的计数器,亦可包括对于选择的时间-事件计数器1572-1572m和事件选择器1574-1574m的参考。元处理器控制暂存器可包括一个或多个计数器,其可根据耦合的事件选择器暂存器用于不同的目的,且特定的内文可通过内文定时器选择暂存器参考使用这些计数器。如非限定的实施例,定时器1570可计算执行时间片段、等待时间片段、述词检查的时间片段等。其中的某些计数器可用来计算软件事件,且可用于内文执行的简单同步。
旗号选择暂存器1580可用于旗号类型的同步以及内文的悬置和唤醒。旗号选择暂存器1580可包含对于元处理器控制暂存器集合中一个或多个旗号暂存器1582的参考值以及耦合的旗号值暂存器1584和等待列表计数器1586,其可包括该旗号的许多内文等待。
内文监控地址暂存器1588、1590、1592和1594可用来定义由内文所监控的地址,并且产生监控事件信号给区域调度器,其中监控的功能也可以关闭。相似地,内文描述符可包括屏障同步暂存器方块1595,其将被界限/等待同步命令所使用。屏障同步暂存器方块1595可视为元处理器的逻辑部分,然而实际上,屏障同步暂存器方块1595可实现于其它方块中,像是总线接口单元或存储器存取单元。区域事件历史缓冲器1596可为一个或 多个内文所共享,并且可包含一个序列的最近事件码,其包括GPU中每一内文的悬置和警示码。这个信息对于内文执行的除错和调度是有用的。
命令串流撷取暂存器可用来支持对存储器中内文数据的存取。直接存储器存取缓冲器的头端指标1597可用以撷取内文的地址,而直接存储器存取缓冲器的尾端指标1598可用于传送命令串流尾端的地址。在至少一架构中,如果所允许的内文总数为16,则这些内文可分为各具有8个内文的两组执行列表,或各具有4个内文的四组执行列表。若要将内文分为非偶数的群组也是可以的。
图16显示本发明一实施例的内文锁定暂存器和内文状态暂存器。内文锁定可用来定义内文对外部和内部媒介动作的感测性。内文锁定可包括具有媒介类型字段和媒介识别字段的内文金钥暂存器1632,以及内文致能/失能旗标暂存器1634。媒介类型可包括任何媒介、区域调度器、任何外部媒介、具有媒介识别的选择的外部处理程序、任何同侪GPU、所选定的具有媒介识别的同侪GPU,以及上述形式的结合。媒介类型字段可用屏蔽的方式实现。媒介识别字段可包括CPU数目和处理识别,以及同侪数目和内文识别,视所定义的媒介类型而定。
内文优先字段1636可用来定义内文优先层级(举例来说,从0至15),并且可被媒介类型字段内所定义的媒介和区域调度器所改变。内文状态有四个主要的稳定阶段:执行中阶段1638、空缺阶段1640、就绪阶段1642和悬置阶段1644。中间阶段有两个:悬置储存阶段1646和悬置回复阶段(restore)1648,其可用以显示内文状态的加载和储存的处理过程。图17显示内文状态的转换图。
执行中状态1638显示该内文目前正于GPU管线执行中。当头端指标到达尾端,且串流中没有其它的命令要处理时,此状态可被改变。另一导致内文悬置的理由是基于设定悬置码的内部或外步事件。
空缺状态1642可用来显示该内文并无任务执行,并且可借着加载新的内文于相关的内文暂存器方块来删除。如果CPU更新尾端指标,则该内文可回到就绪状态1642且随时可重新起始。空缺状态的内文1642可使得该内文被自动切离并储存该状态于存储器中。此后该内文状态将改变至悬置状态1640。
就绪状态1642显示该内文可被区域调度器根据优先级或内文切换程序 的顺序而随时起始。该内文可于重新起始之前检查状态暂存器中的条件是否为警示状态。如果同步条件不成立的话则其回到悬置状态1640。
悬置状态1640可用来显示该内文正在等待某些条件变成就绪以便开始执行。因内部事件或外部讯息所造成的条件满足可将该内文释放至就绪状态1642。
悬置储存1646和悬置恢复1648系介于执行状态1638和悬置状态1640之间的暂时状态。这些状态可用于任何对存储器映像暂存器的存取的情况中,这些暂存器可能位于存储器(内文悬置)或于GPU中(内文执行中)。
回到图16所显示的警示状态和程序代码暂存器。任何未处理的事件会增加警示旗标(或计算多重警示的计数器)1650的值,这类的事件可能发生于当内文在事件的时间点被悬置的时候。警示计数器1650和警示码1652皆被复制到本地事件历史缓冲器1656以追踪内文的活动。警示的实施例可包括:
00-旗号事件警示
01-监控警示
02-金钥不匹配
03-显性执行失败
04-隐性执行失败
XX-其它理由
如果内文于执行中被悬置,悬置码会被写入至暂存器并复制至本地事件历史缓冲器。悬置码1652可包括以下的悬置原因:
00-藉由本地调度器
01-藉由外部媒介
02-藉由时间片段控制
03-藉由条件
04-藉由同步基元(旗号)
05-空缺
06-寻页错失(page fault)
07-一般保护错误
08-新执行列表起始
09-内部等待和V同步
图17显示本发明中将事件和元命令,例如图11的元命令,应用至状态管理机的内文状态转换的一个实施例。在至少一架构中,有四个主要稳定阶段的内文状态:执行中状态1732、空缺状态1734、就绪状态1736和悬置状态1738。中间阶段有两个:悬置储存阶段1740和悬置恢复阶段1742,其可用以显示内文状态的加载和储存的过程。执行中状态1732显示一内文正于GPU的管线中执行。当头端指标到达尾端且串流中没有其它的命令要处理时,此状态可被改变。另一理由可能是内文悬置1738是基于事件之上,这将会设定悬置码。空缺状态1734显示该内文并无任务执行,并且可借着加载新的内文于相关的内文暂存器方块来删除。如果CPU更新尾端指标,则该内文可回到就绪状态1732且随时可重新起始。空缺的内文可使得该内文被自动切离并储存其状态于存储器中。当此状况发生之后,该内文状态将改变至悬置状态。
就绪状态1736表示该内文可被区域调度器根据优先级或内文切换程序的顺序而随时起始。该内文可于重新起始之前检查状态暂存器中的条件是否为警示状态1744。如果同步条件不成立的话,则此内文回到悬置状态1738。悬置状态1738表示该内文正在等待某些条件就绪以便开始执行。由于内部事件或外部讯息所造成的条件满足可将该内文释放至就绪状态1736。悬置储存1740和悬置恢复1742是介于执行中状态1732和悬置状态1738之间的暂时中间状态。这些状态可用于任何对存储器映像暂存器作存取的情况中,这些暂存器可位于存储器以及/或于GPU中。
图18显示本发明一实施例的元处理器中执行元命令处理的状态机。元命令和事件检测回路节点1832可用来监控外部要求的状态和内部的事件/信号。元命令和事件检测回路节点1832可用来检测来自外部CPU、同侪GPU的写入存取,或检测从目前所解析的命令串流或从外围组件互连延伸(PCI-X)讯息接口所接收的元命令,以及检测逻辑信号和/或事件。特殊内文数目编码逻辑单元将元命令执行逻辑单元指向受该元命令影响的内文。接着检查内文锁定1834,如果金钥不匹配,则应设定该内文的警示旗标和程序代码而不需要更近一步的动作(1838)。如果金钥匹配,则可将元命令完全译码并包含多个针对显性外部元命令、区域事件/信号隐性元命令和隐性外部元命令的个别路径(1836)。
根据类型的不同,外部元命令可包括定时器管理逻辑单元和/或内文同 步逻辑单元。如果存在外部元命令,则可解码该外部元命令(1840)。此外,可修改述词和/或条件(1842)。接着外部元命令可被内文状态及条件监控器1844协同区域调度器及内文管理逻辑单元1850所处理。该状态机可回到元命令和事件检测回路1832(1856)。
在状态1840,如果检测到定时器/模式设定元命令,则状态机可于定时器管理控制逻辑单元中处理数据(1854)。如果定时器计数终止的话,状态机可继续进行至1850。同样地,若在状态1840中检测到同步元命令,则可于内文同步控制逻辑单元中进行处理(圆1852)。
从状态1836,区域事件或信号启动内文状态和条件监控器(1844),其将会检查屏蔽。若由事件/信号所引起的条件被屏蔽,则区域事件可设定警示旗标和程序代码而不需更进一步的动作(1846)。如果该事件未被屏蔽或引起条件外的动作,则监控器可要求区域调度器根据映像至该事件的元命令动作暂存器来处理该事件(1850)。若不论任何原因动作失败,区域调度器会设定该内文的警示旗标和程序代码(1846)。如果区域事件引起同步事件,则该事件可为内文同步逻辑单元所处理。隐性元命令可引起述词/条件的修改、内文状态的改变或同步元命令的执行,视所存储器映像输入/输出暂存器的更新而定(1848)。上述所有将由适当的逻辑单元所处理。
图19显示本发明一实施例的区域调度器的内文管理状态机。在状态1938中,区域调度器内文管理状态机接收”起始新内文”的元命令,其藉由界定直接存储器存取的头端指标来定义欲起始的内文以撷取内文命令和状态串流的方式。目前的内文可被中断和储存(1934)。被储存的内文的状态可设定成就绪状态(1974),这是因为被储存的内文可随时重新起始。内文暂存器集合的空位置可分配给这个新的内文(1972),且内文的执行可借着将状态设定为执行中状态来起始(1966)。
在状态1938中,若元命令需要切换至另一内文(预设或选定),如果该定义并未明显地定义于元命令的中的话,则内文的定义可从动作暂存器读取(1936)。在状态1938中,如果任何元命令需要改变内文状态或优先级,则外部命令可直接改变选择的内文的状态。引起状态或优先级改变的内部事件可使用区域调度器从相关的动作暂存器选择内文的动作,动作暂存器可映射至特定的事件。如果命令是要致能或失能特定的内文,则状态 机前进至状态1944。从状态1944,如果该内文正在执行中且为致能状态,则中断和储存(1958)该内文,并且将该内文设定至失能状态(1960)。如果该内文为致能但非启动状态,则该内文仅设定成失能状态(1960)。如果该内文为失能,则执行可将内文致能的致能命令以进行后续执行调度(1962)。
若在状态1940显示状态改变,则判断内文状态改变的来源(1946)和其是否为外部命令或内部命令。如果是外部命令,则设定所选择的内文状态(1954)。如果不是(亦即为内部命令),则执行区域调度器的动作,如图20A(1956)。
若在状态1940显示优先级改变,则判断内文优先级改变的来源(1948)。如果是外部命令,则设定所选择的内文优先级的改变(1952)。如果是内部改变,则执行区域调度器的动作(1956)。
若在状态1940显示释放的讯息,则可设定内文为就绪状态(1950)。若显示悬置的讯息,则可检查内文状态(1970)。如果内文正在执行中,则状态机可中断并储存目前的内文(1968),开始且设定新内文的执行(1966),以及设定悬置和悬置码(圆1950)。如果内文为非作用状态,状态机可设定悬置和悬置码(1950)。
图20A显示本发明一实施例中对应至图19的内文管理状态机的请求的的区域调度器动作简略流程图。在接收内文管理的要求后,状态机可架构内文的述词、逻辑运算、条件等(2032)。在述词、条件和动作暂存器的基本架构加上相互映像的步骤之后,区域调度器可选择述词的事件并且设定“更新信号发送”的选项(2034)。区域调度器可架构并映像动作暂存器至条件和无条件事件(2036)。区域调度器接着检测述词改变信号和/或区域调度器要求(2038)。区域调度器可重复检测其它逻辑方块的事件和要求。若检测到述词改变信号和/或要求,则状态机检查相关的最终条件(2040)。若条件为真或信号/要求为无条件的,则状态机要求区域调度器执行由映像的动作暂存器所定义的动作、重设述词和条件(2044)并且回到主循环(2038)。在状态2040中,如果信号/要求为屏蔽状态,则状态机设定警示旗标和程序代码(2046)并且回到主循环(2038)。
图20B详细说明本发明一实施例的隐性元命令的定义和执行。多个的GPU事件和信号可触发执行逻辑单元的区域调度器中条件式或无条件元命 令的执行。引起元处理器的条件动作的信号/事件群组可映像(可程序或固定的)至述词旗标(方块2052,2054)。图20B中所述的该类映射可具有一对一的对应关系,其中每一信号映像至一个述词暂存器旗标。一个或多个述词可映射至最终条件旗标(方块2056,2058),述词值之间的逻辑运算可用于定义元命令执行的最终条件。该条件也可被屏蔽且任何述词的改变并不会起始隐性元命令的执行。为了定义条件式元命令的动作,每一条件旗标可具有对一个或多个元处理器动作控制暂存器的映像(方块2060,2066)。多个条件可映像至相同的动作控制暂存器。映像逻辑单元产生动作暂存器选择,且该暂存器的动作码被传送至GPU区域调度器和元命令执行逻辑单元以供执行。
在某些情况,隐性元命令可为无条件式的,视事件(暂存器的更新)的类型和GPU管线单元信号而定。该些事件/信号也可具有对一个或多个动作控制暂存器的映像。这类的映射与一般GPU中不可屏蔽的中断很类似,并且可为固定的或可程序化的。映像逻辑单元会起始动作暂存器选择和隐性元命令的后续执行(方块2068)。同样地,事件映射(方块2064)和信号映像方块(方块2062)也可传送至暂存器集合(方块2066)和执行逻辑单元(方块2068)。
图21显示本发明一非限定实施例的条件式隐性元命令的动作定义数据流,与图20B的非限定实施例很类似。事件/信号选择器(方块2132)对于每一述词旗标皆具有一模块,其可选择要导向述词旗标暂存器的输入的特定事件信号。一般来说,对于每一述词旗标,是可以全选或只选单一的事件信号,然而基于实际的理由,熟悉此技艺的人士可藉由将述词和信号(事件)分组来限制选择的范围。述词旗标暂存器(方块2134)也可通过显性元命令或外部存储器映像输入/输出的写入由外部设定或重置。如果述词值被改变,可传送更新信号至状态和条件监控器。另外,述词选择器(方块2136)可用来架构述词,且述词逻辑运算选择器(方块2138)可选择述词的逻辑运算。
条件和/或最终条件旗标值可由单一选定的述词或述词群组所形成,其中述词群组为多个述词之间的逻辑运算结合而成。逻辑运算的标准集合可应用至选定的述词,或单一述词值可不变地传送至条件旗标暂存器。该类运算的结果形成条件旗标值,当程序设计师欲将由该条件旗标所起始的隐 性元命令失能时,该条件可被屏蔽(方块2140)。对于每一条件旗标而言,皆有一个动作暂存器选择器(方块2142),其包括动作暂存器数目,用以定义当条件为真时所要执行的元运算。
图22显示本发明一实施例的元处理器控制暂存器集合中的相关暂存器,其支持述词和条件架构,以及条件至动作控制暂存器的映像。述词输入事件架构暂存器(方块2232)可包括每一述词的控制字段,其中定义了管理该述词(方块2234)的信号的选择。如非限定实施例,述词输入事件架构暂存器可包括下列的非限定选择:
00-藉由外部媒介的显性设定/重置
01-对内文存储器空间的外部写入
02-对同步暂存器方块的外部写入
03-对同步暂存器方块的内部写入
04-执行时间终止
05-旗号事件
06-内部等待时间终止
07-监控事件
08-CPU中断事件
XX-其它事件
当使用屏蔽(方块2236)和多重信号定义选择方式时的另一种实施方式可以修改述词。述词暂存器包括多个述词旗标字段,这些述词旗标可藉由选定的事件或外部来设定,并且可通过区域调度器或外部来重置。切换至成真(True)状态的信号可发送至区域调度器以处理该条件起始的元命令。条件架构暂存器包括了述词选择屏蔽(方块2236)以便使用相关的逻辑运算暂存器内所定义的逻辑运算来形成最终条件(方块2240)。以下的逻辑运算可用选择的述词值来实现以形成条件:0-保留的、1-不动作、2-和、3-或、4-互斥或,以及5-否(单一元素的)。
依此结果,可根据映射的述词值和其间的逻辑运算来设定最终条件旗标。每一最终条件旗标可被屏蔽且成真条件可不起始该元运算,但可将已接收基于事件的条件元命令的内文暂存器集合中的警示旗标和程序代码做设定。最终条件暂存器内的每一个最终条件旗标是与条件动作选择暂存器相关,其中动作暂存器的数目已经定义(方块2242)。最后,可以使用这 个机制来产生元命令动作的请求,并且提供适当暂存器中动作描述的参考(方块2244)。
图23显示本发明一实施例的内文状态、事件和条件监控器状态机。该状态机是参照图18中的状态机,并且较为详细地描述了监控器的活动。图23的状态机在检测信号、事件和要求的循环中重复执行(2332)。图23的状态机处理述词更新信号和事件、基于定时器的述词和条件检查、区域调度器请求、空缺状态查询命令、执行列表查询命令和无条件事件或信号。
更具体地说,在状态2332中若检测到述词更新信号或事件,检测条件会被影响(2334),则状态机可检查条件值(2336)。如果条件不成立,则状态机回到状态2332。另一方面,如果条件成立则检查条件屏蔽(2338)。若该条件为屏蔽状态,则状态机可设定警示旗标和警示码(2340)。若条件为非屏蔽状态,则状态机可根据映像的动作暂存器来请求区域调度器的动作(圆2342)。述词和条件可被重置(2344),且若其为多重条件回路则状态机可回到状态2336。
在状态2332中,若述词/条件检查定时器已经终止或区域调度器要求检查述词,则状态机可检测更新的述词(2346)。接着状态机检测受影响的条件(2348)。然后状态机进行至状态2336检查条件值,如上所述。
在状态2332中,若检测到空缺状态查询,则状态机检测目前执行列表内文的空缺状态(2350)。若内文是空的,则可将该内文加入空缺列表(2354)。如果所有的内文和执行列表都处理过了,则状态机可传送查询报告至存储器并传送中断给CPU(2356)。如果所有的内文和执行列表尚未处理,则状态机回到状态2350。
在状态2332中,若检测到查询执行列表的状态,状态机可将内文状态暂存器的内容复制到缓冲器(2358)。对于多重内文回路,该动作可重复执行。若所有的内文状态都复制完成,则状态机可将缓冲器写入存储器并中断/警示CPU(2360)。回到状态2332,若检测到无条件事件或信号,则状态机可根据映像的动作暂存器来请求区域调度器的动作(2362)。
图24显示本发明一实施例中映像至一条件的元处理器控制暂存器,该条件可由元处理器控制暂存器集合中的输入事件架构暂存器和条件架构暂存器来定义(输入事件架构暂存器如方块2432a和2432b所示,但可包括任何数目的暂存器,如方块间多个的点所示)。每一述词(方块2432a和 2432b)可与信号或事件有关,且可选择(方块2436)来产生逻辑运算的操作数(方块2348),逻辑运算的结果可设定为一条件(方块2440),其映射(方块2442)至其中一个动作控制暂存器。动作控制暂存器(方块2444)可具有主要的字段,用以描述通过条件或非条件事件(映像至该动作暂存器)产生一要求的情况下所要采取的动作。一范例性的动作列表(方块2444)可包括下列的动作,其可单独实行或互相结合实行。
0-悬置目前的内文且允许区域调度器开始新的内文
1-悬置目前的内文并开始预设的内文
2-悬置目前的内文并开始选定的内文
3-选定的内文的条件释放
4-选定的内文的条件悬置
5-增加内文的优先等级
6-降低内文的优先等级
7-查询选定的内文状态
8-中断/警示远程CPU
9-中断/警示远程GPU
XX-其它原因
互斥动作的编码类型可使用列举(enumeration)方式,而对于可互相结合的动作的编码类型则使用位屏蔽(bit masks)。
动作暂存器的其它字段用以描述动作的细节,并且提供所需的参数。其中一个是预设内文定义(方块2446),其描述于切换至动作控制的主要字段中预设的内文的情况下的动作。其可包括:
0-重新开始该内文
1-于目前执行列表中下一个就绪
2-目前执行列表中最高优先级
3-下个执行列表中第一个就绪
4-下个执行列表中最高优先级
选定内文定义字段(方块2448)的目的与预设内文定义很类似,并且可切换至多个内文类型的非限定选择,这些内文包括:
00-由选定内文识别暂存器所定义的执行列表中的内文#
01-由区域调度器所悬置
02-由外部媒介所悬置
03-由时间片段控制所悬置
04-由条件所悬置
05-由同步基元(屏障,旗号)所悬置
06-悬置为空缺状态
07-悬置于寻页错失之上
08-悬置于一般保护错误之上
09-悬置于新执行列表的开始之上
10-悬置于等待之上(内部等待,V同步)
选定内文定义可以是藉由使用屏蔽所编码的多重选择,且区域调度器将利用优先级选择内文。选定内文识别暂存器(方块2450)包括欲切换的内文的显性识别。该识别可包括执行列表数目和内文数目。远程GPU(方块2452)和远程CPU识别暂存器字段(方块2454)定义GPU/CPU的识别符以传送中断/警示讯息和内文/处理识别符,以便通知元处理器所采取的相关动作。
图25显示本发明一实施例中当接收信号和要求时区域调度器活动的状态图。更具体地说,在状态2534中区域调度器的要求可被轮询。如果检测到区域事件/信号要求,用于此事件的暂存器中的动作会被检测到(2532)。如果该事件是优先级的改变,则可增加或降低内文的优先级(2570)。如果该动作是中断/警示,则状态机传送中断/警示讯息给选定的CPU和/或GPU。在状态2532中,若检测到的动作是释放或悬置,则状态机可将选定的内文的状态改变成就绪或悬置状态(2564)。接着传送信号至状态和条件监控逻辑单元(2566)。
在状态2532中,如果检测到的动作是悬置目前内文,则状态机可中断并储存目前内文(2554)。如果该内文是选定内文,则状态机可从动作暂存器读取该选定内文的定义(2556)。接着状态机可检查内文的状态(2558)。若该内文尚未就绪,则可发送警示讯息至全域调度器(2560)。另一方面,若内文为就绪状态,则可开始该已定义的内文(2552)。在状态2554中,若选择了预设内文,则状态机可从动作暂存器获取预设内文定义(2562)。接着状态机可进行至状态2558,如上所述。
在状态2534中,若检测到区域仲裁要求(arbitration request), 则可检查内文仲裁器模式(2536)。若该模式是循环法(round robin),则可选择目前执行列表中的下个内文(2548)。若该内文尚未就绪,则可选择下个执行列表中的第一个就绪的内文(2550)。如果该内文已经就绪,则可开始所定义的内文(2552)。若GPU中都没有就绪的内文,则可发送警示讯息至全域调度器(2546)。
在状态2536中,若仲裁器模式是优先级模式,则检查目前执行列表中最高优先级的内文的状态(2538)。若该优先级中的内文都没有就绪,则可降低所检查的优先级(2540)。在状态2538中,如果在该执行列表中没有就绪的内文,则可开始下个执行列表中最高优先级的内文(2542)。如果都没有就绪的内文,则可发送讯息至全域调度器(2546)。如果有任一内文就绪,则可开始所检测的内文(2544)。
图26A显示本发明一实施例的计时暂存器的方块图,其包括于元处理器的控制暂存器集合的内。每一个定时器暂存器可具有输入选择器(方块2632)使其可感测特定的信号/事件。一实施例的选择机制可包括下列的定时器控制事件:
00-开始内文执行
02-开始内部等待
03-开始述词检查周期
04-旗号事件
05-监控事件
06-CPU中断事件
XX-其它事件
定时器可工作于不同的模式以提供频率或事件的计数,以及往下和往上计数至预定限制值。定时器终止信号可映像至一个或多个用以产生关于动作暂存器的条件的述词。时间/事件计数器(方块2634)也可包括于图26A中。
图26B显示本发明一实施例的定时器相关的元命令处理的流程图。更具体地说,在图26B的非限定实施例中,在状态2636中可通过区域调度器和/或元命令检测来接收数据。状态机可译码内文的时间片段控制。若元命令请求定时器的设定,则设定选择的定时器(2638)。该述词的事件选择可被设定(2640),该述词的条件可也被架构(2642)。
在状态2636中若检测到定时器终止事件,则可将所架构的述词做设定(2644),并可监控内文的状态、事件和条件(2646)。若该内文是无条件或作用状态的,则可将悬置码设定为”时间片段”(2648)选择事件/条件动作(2650),并可选择区域调度器的动作(2652)。在状态2646中若内文为屏蔽状态,则可设定警示旗标和警示码(2654)。
“设定定时器/事件计数器元命令”的范例格式
运算码 | 运算码延伸 | 计数器识别 | 内文识别 | 计数值 |
主要运算 码 | 命令动作的变 化 | 元处理器控制暂 存器方块中的计 数器 | 选定的内文 (选项) | 64-128的 位值 |
本领域的技术人员应该了解元处理器的另一个重要的工作是支持一般同步基元(第7和8图)。内文/行程的同步或点对点的内文/内文可用元处理器的硬件和软件来提供。一般而言,同步基元不会改变,只有内文管理上的动作可能会与用于CPU行程/执行绪同步的原本基元的观念稍微不同。
图27显示根据本发明一实施例用于处理元命令的同步元命令处理的状态机,其可支持同步基元。同步元命令译码器可检测五种类型的同步元命令:元互斥、条件、旗号、通知和警示与屏障元命令。
这些元命令中至少有一部分可于通过锁定存取内文暂存器的情况中生效。在元互斥的情况中,媒介试着取得或锁定从其它媒介来的内文,元互斥状态机处理此类要求并传送正或负认可(acknowledgement)至请求的媒介。在条件的情况中,媒介检查该锁定接着检查条件并执行条件状态机后,执行所有必须的动作。旗号命令视类型而增加或减少旗号暂存器的值。旗号P用以检查该值,若其为零则有条件地悬置选定的内文。旗号V增加该值并检查等待列表。如有任何悬置的内文正等待于该旗号上,则将内文状态改变至就绪状态。
通知和警示对特定内文的警示旗标和警示码做设定。在开始之前,该内文可检查促成该警示的条件。屏障是使用界限和等待命令所实现,以防界限写入暂存器或特定内文的存储器,该内文将状态改变至就绪状态,并且当内文开始时被示意需比较其等待值和更新后的界限。等待元命令比较 自身的值与界限暂存器并可将内文悬置或设定为就绪状态。
同步元命令译码器2732更具体地描述于图27中。同步元命令译码器2732可检测多个类型的同步元命令,包括(但不限于)元互斥、条件、旗号、通知和警示,以及屏障元命令。这些元命令可于通过锁定存取内文暂存器的情况下产生效用。在元互斥的情况,媒介试着取得和/或锁定从其它媒介来的内文,且元互斥状态机处理此类要求并传送正或负认可至请求的媒介。更具体地说,如图27的非限定实施例所述,可检查该内文锁定(2734)。若内文为其它媒介锁定,则元互斥可排队(2736)。接着可传送负认可至媒介2738。另外,可于状态2736和状态2738之间执行周期性的检查。另一方面,若内文已解锁或使用已知的金钥,则可使用元互斥状态机(2740)。接着可传送正认可至媒介2742。
在条件的情况中,媒介会检查锁定(2744),接着检查条件和执行条件状态机(2746),接续至条件状态机2748。内文锁定命令(由同步元命令译码器2732而来)可被检查(圆2750)以确认是否有旗号P或旗号V。旗号用以增加和/或减少旗号暂存器的值,视旗号命令的类型而定。更具体地说,如果是旗号P则可减少旗号(2752)。旗号P用以检查该值(2754),若该值为零则有条件地悬置选定的内文(2754)。若该值为非零,则回到元命令和事件检测的回路。
在状态2750中若检测到旗号V,则旗号V会增加该值并检查等待列表2758。如果有任何悬置的内文正在等待,则该旗号将它们的状态变更至就绪状态(2760)。
开始于同步元命令译码器2732,通知和警示用以检查内文锁定2762,并且设定特定内文的警示旗标(2764)和警示码(2766)。另外,可使用界限和等待命令实现来自同步元命令译码器2732的屏障。对于界限和/或等待命令,可检查内文的锁定(2768)。若检测到的是界限命令,则将界限的值写入暂存器(2770)。接着将内文设定至就绪状态(2772),然后流程回到设定警示旗标(2764)和设定警示码(2766)以便于界限开始时比较内文的等待值和更新的界限。
若在状态2768检测到的是等待命令,则该等待命令比较其值与界限暂存器(fence register)(2774)。如果等待命令的值小于或等于屏障的值,则流程回到状态2772以将内文设为就绪状态。如果等待命令的值比屏 障大,可悬置选择的内文并设定S码(2776)。
图28A显示本发明一实施例的元互斥状态机,其用以执行内文失能/致能和内文锁定/解锁元命令。失能是表示内文不会对运算和事件做响应,除了将锁定暂存器内的媒介识别致能以外,内文也不会被任何的区域事件所执行和启动。来自具有与锁定金钥暂存器相同识别的媒介的致能命令可将内文致能并使其可为任何媒介所感测。锁定和解锁命令本身并不会阻挡内文,其持续对区域调度器保持感测状态。只有对内文暂存器的存取会对其它媒介保持锁定,除了取得该锁定的媒介的外。
从元互斥译码2832所接收的失能表示内文将不会对运算和事件做响应,除非将锁定暂存器内的媒介识别致能。内文也不会由区域事件所执行和启动。因此,可将内文失能(2834)和设定致能的媒介类型(2836),并且可设定锁定金钥(致能的媒介识别)(2838),接着传送正认可至媒介(2840)。
来自具有与锁定金钥暂存器相同识别的媒介的致能命令可将内文致能并使其可为任何媒介所感测。如果接收到致能命令,则可致能内文圆2842)并将内文设定为“任何媒介”的类型(2844)。锁定和解锁命令本身并不会阻挡内文,但可持续对区域调度器保持可感测状态。对内文暂存器的存取会对其它媒介保持锁定,除了取得该锁定的媒介之外。如果接收到锁定命令,则可将内文锁定(2846)、设定锁定媒介的类型(2848),以及锁定金钥(媒介识别)可被设定(2850)。如果接收到解锁命令,则可将内文解锁(2852)并将媒介类型和识别清除(2854)。
图28B显示本发明一实施例的同步条件的译码和处理状态机。开始于条件解码(2856),条件等待会检查述词(2858),若述词为真则条件等待将内文的状态改变为就绪状态(2860)。在要求立即开始的情况中,条件等待也会开始内文的动作(2862)。在状态2858中若条件不成立,则条件等待将状态改变为悬置状态(2864),但内文可继续执行直到被区域调度器所中断。在立即停止的情况,可即刻将内文切换掉(圆2866),流程回到元命令和事件检测的回路。
条件信号和广播分别对选定的或所有的内文设定警示旗标和警示码。更具体地说,对于条件信号而言,可设定就绪的选定内文(2868)、设定内文的警示旗标(2870),以及设定内文的警示码(2872)。对于条件广 播,可设定所有的内文为就绪状态(2874)、设定所有内文的警示旗标(2876),以及设定所有内文的警示码(2878)。
立即开始和立即停止为同步条件等待较直接的形式,其会引起立刻的动作,而较间接的形式将只会设定内文的状态离开至区域调度器的内文切换。图28B显示一条件状态机,用以执行条件等待、条件信号和条件广播元命令。条件等待会检查述词,若其为真则将内文的状态改变为就绪状态。同样地,在要求立即开始的情况中会开始该内文的动作。在条件不成立的情况下,状态则改变至暂停状态,但内文将继续执行直到被区域调度器所中断为止。在立即停止的情况中将立刻切换内文。条件信号和广播将分别设定选定的内文或全部内文的警示旗标和警示码。
图29显示本发明一实施例的元处理器控制暂存器集合,其包括数个暂存器方块或群组,包括述词和条件架构方块、无条件事件和信号架构方块(方块2946、2948)、同步基元暂存器方块(方块2950、2952)、元处理器动作控制暂存器方块(方块2960、2962)、定时器架构和控制暂存器方块(方块2964、2966),以及区域调度器控制暂存器方块(方块2968、2970、2972)等,但不限定于仅包含上述方块。述词和条件暂存器的功能已于之前描述,而该类暂存器的实施方式将于图30中说明。
非条件事件和信号映像暂存器(方块2946、2948)可包括动作暂存器对不同信号和事件的映像,如图31所述。同步基元暂存器方块包括旗号暂存器和同步基元控制暂存器的群组,如以下图31的例子所述。旗号暂存器(方块2950)包括模式字段、二进制旗号的旗标字段,以及用以计数旗号的计数器字段。另外,该暂存器可包括每一执行列表中该旗号的等待内文的数目。同步基元控制暂存器(方块2952)可包括具有锁定检查周期时间值和追踪模式选择字段的元互斥控制部分(图31)。对于同步条件控制,同步基元控制暂存器可具有一定义开始/停止模式,其可为立即值或由区域调度器所定义。条件广播的范围也可定义于单一执行列表中或多重执行列表。
图30显示本发明一实施例的述词和条件架构暂存器。更具体地说,如图30的非限定实施例,输入事件架构方块3032可包括述词的一个或多个输入事件选择,其中的每一个可包括4位(但不限于此)。述词更新信号致能暂存器3034可包括32位的暂存器(不限于此)。最终条件和屏蔽暂 存器3036也可包括32位,其中包含多个最终条件旗标和屏蔽。条件架构暂存器3038可包括一既定条件的述词选择。逻辑运算暂存器3040可包括逻辑运算(例如或、互斥或等等)。条件动作架构暂存器3042可包括多个条件的多个动作暂存器。
图31显示本发明一实施例的其它元处理器控制暂存器。更具体地说,如图31的非限定实施例,无条件事件映像暂存器3132可包括多个暂存器更新。无条件内部信号映像暂存器3134可包括多个事件/信号。旗号暂存器3136可包括旗号和相关的模式、旗标和计数器,以及旗号等待列表状态。同步基元控制暂存器3138可包括具有周期检查时间的元互斥控制、追踪模式,以及具有开始/停止模式和广播范围的同步条件控制。区域调度器的状态和控制暂存器可包括具有多个执行列表的执行列表仲裁模式。
图32A和图32B显示本发明一实施例的元处理器的指令集格式。第一组32位字(或双字)包括元命令的运算码或头端(方块3232、3240、3250)和动作修改者字段(方块3234、3242、3252)。元指令的其中一群组可将数据写入存储器以支持操作系统公用程序的同步基元,并且于头端的双字之后连接4倍双字的64位的数据(方块3236)和64位的地址(方块3238)。另一组的元命令可由GPU的暂存器、述词和条件所操纵,此第二组双字包括动作码(方块3244)和动作目标识别(方块3246),而第三组双字可包括暂存器要写入的内容(方块3248)。
另一组的元命令可具有多达五个双字。这些元命令包括运算码和动作修改者的双字(方块3250),第二组双字具有动作码和动作属性1和2,第三组双字具有动作属性3以及存储器地址的选项(如果需要的话)。运算码和头端字段包括元处理器运算码、命令格式长度,以及用以描述动作叙述(于元命令中为显性,或于元处理器控制暂存器中为隐性)的类型、属性用途和存储器地址格式(如果需要的话)的格式定义。
动作修改者的部分(方块3252)可包括动作暂存器参考(在隐性动作叙述的情况中)、GPU和CPU中断以及警示讯息产生旗标、元命令的命令范围定义,以及用以定义要被同步的内部信号的等待屏蔽。
第二组双字中的动作码字段(方块3254)与之前所述的元处理器动作暂停器中的实施例很类似。动作句柄可包括暂存器以及述词和条件的运作和监控相关的程序代码。诚如非限定的实施例,多个条件元命令可用类似 的方式实现。动作属性1(方块3256)用以定义要开始的预设内文,动作属性2(方块3258)用以定义要开始的选定的内文。动作属性3(方块3260)用以定义区域内文识别。第三组双字包括要切换至的内文识别,远程GPU和CPU识别用以传送中断或警示讯息。选择性的存储器地址(方块3262)可用来从系统或视讯存储器复制或撷取某些数据。
本领域的技术人员应该了解本发明所包括的流程图显示了软件和/或硬件的所有可能实施方式的架构、功能和运算。在这一点上,每一方块可诠释来代表模块、区段或部分的程序代码、逻辑组件,其可用以执行至少一指令以实现指定的逻辑功能。应该要注意的是,在另外的实施方式中,方块中所述的功能可不依照顺序来实现。举例来说,接续的两个步骤事实上可大致同时执行,或有时候可用相反的顺序执行,视所包括的功能而定。
本领域的技术人员应该注意,本发明所列的任何逻辑步骤可实施于任何计算机可读取的媒体的中以连接(或为)指令执行系统或装置使用,例如基于计算机的系统、包括处理器的系统,或其它可从该指令执行系统或装置撷取并执行指令的其它系统。
诚如非限定的实施例,上述功能的实施方式可以是不同的,必须视GPU的架构而定,并且可包括硬件和/或可程序的处理逻辑核心。
本发明虽以较佳实施例揭示如上,然其并非用以限定本发明的范围,本领域的技术人员在不脱离本发明的精神和范围的前提下可做些许的更动与润饰,因此本发明的保护范围以本发明的权利要求为准。
Claims (19)
1.一种绘图处理单元GPU,包括:
一元处理器,包含至少一内文暂存器,其中上述元处理器包括一内文管理逻辑单元:以及
一元处理器控制暂存器方块,耦接至上述元处理器,用以接收元处理器架构数据,以及定义上述内文管理逻辑单元的行为,
其中上述元处理器用以处理至少一隐性元命令,
上述隐性元命令是由所述内文暂存器的更新和信号所起始,
上述内文管理逻辑单元根据上述信号的类型,传送包括编码动作字段的编码动作的请求至上述元处理器控制暂存器方块,
上述元处理器控制暂存器方块将所述编码动作的描述符和内文状态信息返回上述内文管理逻辑单元,
上述内文管理逻辑单元将上述内文状态信息用于元命令的执行和/或内文状态更新中,
其中所述元处理器还配置来实现在多重GPU和多重中央处理单元CPU配置中的GPU对GPU的同步和CPU对GPU的同步中的至少一个,其中所述元处理器还配置来执行GPU内文管理元命令群组、GPU远程和同侪同步元命令群组、以及GPU区域同步和管理元命令群组。
2.如权利要求1所述的绘图处理单元GPU,还包括一总线接口单元,提供一系统处理器对上述元处理器的存取。
3.如权利要求1所述的绘图处理单元GPU,还包括一总线讯息译码器和编码器,用以通过一互接媒体接收和传送讯息至一同侪绘图处理单元。
4.如权利要求1所述的绘图处理单元GPU,还包括一绘图处理单元命令串流处理器,用以撷取一目前内文命令串流,并传送命令至一绘图处理单元管线和上述元处理器的其中至少一个以进行执行。
5.如权利要求1所述的绘图处理单元GPU,其中上述至少一隐性元命令由一内部信号和一控制暂存器更新事件中至少一个所描述。
6.如权利要求1所述的绘图处理单元GPU,其中上述元处理器还用以处理至少一显性元命令。
7.如权利要求6所述的绘图处理单元GPU,其中上述至少一显性元命令由一命令代符所描述。
8.如权利要求1所述的绘图处理单元GPU,还包括一显性元命令译码器。
9.如权利要求1所述的绘图处理单元GPU,还包括一隐性元命令译码器,上述隐性元命令译码器包括耦接至一事件映像表的一事件检测器,以及耦接至一信号映像表的一信号检测器。
10.如权利要求1所述的绘图处理单元GPU,还包括一条件映像组件,用以定义元命令动作码的条件选择。
11.如权利要求1所述的绘图处理单元GPU,还包括一元命令执行逻辑单元,用以处理元命令。
12.如权利要求1所述的绘图处理单元GPU,还包括下列至少一个:
一区域调度器;
一内文状态、事件和条件监控器;
一内文同步控制逻辑单元;以及
一定时器管理逻辑单元。
13.如权利要求1所述的绘图处理单元GPU,还包括区域调度器逻辑单元,上述区域调度器逻辑单元包括事件和要求处理逻辑单元以及内文管理逻辑单元。
14.一种绘图处理单元GPU中的元命令处理系统,包括:
一元命令执行逻辑单元,用以执行至少一元命令,其中执行至少一个元命令以实现在多重GPU和多重中央处理单元CPU配置中的GPU对GPU的同步和CPU对GPU的同步中的至少一个,其中所述元命令执行逻辑单元还配置来执行GPU内文管理元命令群组、GPU远程和同侪同步元命令群组、以及GPU区域同步和管理元命令群组;
一内文叙述暂存器方块,用以接收一内文选择信号和一内文状态更新信号,并提供一内文状态数据至上述元命令执行逻辑单元;以及
一元处理器控制暂存器方块,用以接收一选择述词和条件信号以及一选择无条件动作信号,并提供一最终条件信号和元命令动作码至上述元命令执行逻辑单元。
15.如权利要求14所述的元命令处理系统,还包括一隐性元命令译码器,用以检测一暂存器更新信号和至少一内部绘图处理单元信号。
16.如权利要求14所述的元命令处理系统,还包括一显性元命令译码器,用以从一命令代符提供一元命令动作码和条件选择。
17.如权利要求15所述的元命令处理系统,其中上述隐性元命令译码器包括下列至少一个:
一事件映射方块;
一信号映像方块;
一事件检测器方块;以及
一信号检测器方块。
18.如权利要求14所述的元命令处理系统,其中上述元处理器控制暂存器方块包括下列至少一个:
一述词和条件架构暂存器;
一条件映像组件,用以选择动作暂停器;以及
一元命令动作暂存器。
19.如权利要求16所述的元命令处理系统,其中上述元命令执行逻辑单元用以执行至少一状态机,上述状态机用以执行至少下列一个动作:
状态转换;
处理一元命令;
内文管理处理;
信号和请求处理;
条件和无条件事件映射;
内文、状态和事件条件监控;
区域调度;以及
定时器相关的元命令处理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/266,034 US8368701B2 (en) | 2008-11-06 | 2008-11-06 | Metaprocessor for GPU control and synchronization in a multiprocessor environment |
US12/266,034 | 2008-11-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101719262A CN101719262A (zh) | 2010-06-02 |
CN101719262B true CN101719262B (zh) | 2013-07-24 |
Family
ID=42130818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102221313A Active CN101719262B (zh) | 2008-11-06 | 2009-11-06 | 绘图处理单元以及元命令处理系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8368701B2 (zh) |
CN (1) | CN101719262B (zh) |
TW (1) | TWI423161B (zh) |
Families Citing this family (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100125740A1 (en) * | 2008-11-19 | 2010-05-20 | Accenture Global Services Gmbh | System for securing multithreaded server applications |
US20100188412A1 (en) * | 2009-01-28 | 2010-07-29 | Microsoft Corporation | Content based cache for graphics resource management |
US8711159B2 (en) * | 2009-02-23 | 2014-04-29 | Microsoft Corporation | VGPU: a real time GPU emulator |
US9245371B2 (en) * | 2009-09-11 | 2016-01-26 | Nvidia Corporation | Global stores and atomic operations |
CN102103523A (zh) * | 2009-12-22 | 2011-06-22 | 国际商业机器公司 | 锁分配控制的方法和装置 |
DE102010019783A1 (de) * | 2010-05-06 | 2011-11-10 | Dieter Weiler | Verfahren zum Durchführen eines Programmes zur Verarbeitung von Daten und entsprechendes System |
US8514232B2 (en) * | 2010-06-28 | 2013-08-20 | International Business Machines Corporation | Propagating shared state changes to multiple threads within a multithreaded processing environment |
US9317456B2 (en) * | 2010-10-18 | 2016-04-19 | Infosys Technologies Ltd. | Method and system for performing event-matching with a graphical processing unit |
US20120194525A1 (en) * | 2010-12-13 | 2012-08-02 | Advanced Micro Devices, Inc. | Managed Task Scheduling on a Graphics Processing Device (APD) |
US20120188259A1 (en) * | 2010-12-13 | 2012-07-26 | Advanced Micro Devices, Inc. | Mechanisms for Enabling Task Scheduling |
US20120194526A1 (en) * | 2010-12-15 | 2012-08-02 | Benjamin Thomas Sander | Task Scheduling |
US9342379B2 (en) * | 2011-01-21 | 2016-05-17 | Wind River Systems, Inc. | Lock free acquisition and release of a semaphore in a multi-core processor environment |
US10013731B2 (en) | 2011-06-30 | 2018-07-03 | Intel Corporation | Maximizing parallel processing in graphics processors |
US9633407B2 (en) | 2011-07-29 | 2017-04-25 | Intel Corporation | CPU/GPU synchronization mechanism |
US20130141447A1 (en) * | 2011-12-06 | 2013-06-06 | Advanced Micro Devices, Inc. | Method and Apparatus for Accommodating Multiple, Concurrent Work Inputs |
US8933942B2 (en) | 2011-12-08 | 2015-01-13 | Advanced Micro Devices, Inc. | Partitioning resources of a processor |
US9092272B2 (en) | 2011-12-08 | 2015-07-28 | International Business Machines Corporation | Preparing parallel tasks to use a synchronization register |
US20130155077A1 (en) * | 2011-12-14 | 2013-06-20 | Advanced Micro Devices, Inc. | Policies for Shader Resource Allocation in a Shader Core |
WO2013090605A2 (en) * | 2011-12-14 | 2013-06-20 | Advanced Micro Devices, Inc. | Saving and restoring shader context state and resuming a faulted apd wavefront |
US8839039B2 (en) * | 2012-01-24 | 2014-09-16 | Nvidia Corporation | Initialization of GPU using ROM-based initialization unit and programmable microcontroller |
KR101953133B1 (ko) | 2012-02-27 | 2019-05-22 | 삼성전자주식회사 | 렌더링 장치 및 그 방법 |
EP2742425A1 (en) * | 2012-05-29 | 2014-06-18 | Qatar Foundation | Graphics processing unit controller, host system, and methods |
CN102890643B (zh) * | 2012-07-26 | 2015-01-21 | 上海交通大学 | 基于应用效果即时反馈的显卡虚拟化下的资源调度系统 |
US9542238B2 (en) * | 2013-05-23 | 2017-01-10 | Nxp Usa, Inc. | Systems and methods for direct memory access coherency among multiple processing cores |
US10255650B2 (en) * | 2013-05-24 | 2019-04-09 | Sony Interactive Entertainment Inc. | Graphics processing using dynamic resources |
US9495722B2 (en) | 2013-05-24 | 2016-11-15 | Sony Interactive Entertainment Inc. | Developer controlled layout |
US9892480B2 (en) * | 2013-06-28 | 2018-02-13 | Intel Corporation | Aborting graphics processor workload execution |
US9304896B2 (en) * | 2013-08-05 | 2016-04-05 | Iii Holdings 2, Llc | Remote memory ring buffers in a cluster of data processing nodes |
US9881351B2 (en) | 2015-06-15 | 2018-01-30 | Microsoft Technology Licensing, Llc | Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation |
US9786026B2 (en) | 2015-06-15 | 2017-10-10 | Microsoft Technology Licensing, Llc | Asynchronous translation of computer program resources in graphics processing unit emulation |
GB2540382B (en) * | 2015-07-15 | 2020-03-04 | Advanced Risc Mach Ltd | Data processing systems |
US20170069054A1 (en) * | 2015-09-04 | 2017-03-09 | Intel Corporation | Facilitating efficient scheduling of graphics workloads at computing devices |
GB2552717B (en) * | 2016-08-05 | 2018-09-05 | Arm Ip Ltd | Management of control parameters in electronic systems |
US10580189B2 (en) * | 2016-09-16 | 2020-03-03 | Intel Corporation | Apparatus and method for optimized ray tracing |
US10600141B2 (en) | 2016-09-23 | 2020-03-24 | Nvidia Corporation | Monitoring execution in a graphics processing unit |
US10664942B2 (en) | 2016-10-21 | 2020-05-26 | Advanced Micro Devices, Inc. | Reconfigurable virtual graphics and compute processor pipeline |
US10929944B2 (en) * | 2016-11-23 | 2021-02-23 | Advanced Micro Devices, Inc. | Low power and low latency GPU coprocessor for persistent computing |
CN106649037B (zh) * | 2016-12-08 | 2019-04-23 | 武汉斗鱼网络科技有限公司 | 一种gpu任务完成状态的判断方法及装置 |
US11150943B2 (en) * | 2017-04-10 | 2021-10-19 | Intel Corporation | Enabling a single context hardware system to operate as a multi-context system |
US10699364B2 (en) * | 2017-07-12 | 2020-06-30 | Citrix Systems, Inc. | Graphical rendering using multiple graphics processors |
US11232531B2 (en) * | 2017-08-29 | 2022-01-25 | Intel Corporation | Method and apparatus for efficient loop processing in a graphics hardware front end |
US11175919B1 (en) * | 2018-12-13 | 2021-11-16 | Amazon Technologies, Inc. | Synchronization of concurrent computation engines |
US11263718B2 (en) | 2020-02-03 | 2022-03-01 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by pretesting against in interleaved screen regions before rendering |
US11170461B2 (en) | 2020-02-03 | 2021-11-09 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by performing geometry analysis while rendering |
US12112394B2 (en) | 2020-02-03 | 2024-10-08 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using configurable shaders |
US11120522B2 (en) * | 2020-02-03 | 2021-09-14 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by subdividing geometry |
US11321800B2 (en) | 2020-02-03 | 2022-05-03 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by region testing while rendering |
US11508110B2 (en) | 2020-02-03 | 2022-11-22 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering |
US11514549B2 (en) | 2020-02-03 | 2022-11-29 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase |
US11080814B1 (en) | 2020-02-03 | 2021-08-03 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using prior frame information |
US11487695B1 (en) * | 2020-04-23 | 2022-11-01 | Marvell Asia Pte Ltd | Scalable peer to peer data routing for servers |
CN111880916B (zh) * | 2020-07-27 | 2024-08-16 | 长沙景嘉微电子股份有限公司 | Gpu中多绘制任务处理方法、装置、终端、介质及主机 |
US11720360B2 (en) | 2020-09-11 | 2023-08-08 | Apple Inc. | DSB operation with excluded region |
US12045668B2 (en) * | 2021-04-22 | 2024-07-23 | EMC IP Holding Company, LLC | System and method for efficient snapshots barrier mechanism for system with presorted container-based log |
US12008016B2 (en) * | 2021-12-29 | 2024-06-11 | Onomy LLC | Action ordering |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890660A (zh) * | 2003-11-19 | 2007-01-03 | 路西德信息技术有限公司 | Pc总线上的多重三维图形管线的方法及系统 |
CN1983326A (zh) * | 2005-10-26 | 2007-06-20 | 威盛电子股份有限公司 | 图形处理单元管线多阶同步控制处理器及其方法 |
CN1991903A (zh) * | 2005-10-18 | 2007-07-04 | 威盛电子股份有限公司 | 图形处理事件同步的方法及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6498970B2 (en) * | 2001-04-17 | 2002-12-24 | Koninklijke Phillips Electronics N.V. | Automatic access to an automobile via biometrics |
CN101145239A (zh) * | 2006-06-20 | 2008-03-19 | 威盛电子股份有限公司 | 绘图处理单元及处理边框颜色信息的方法 |
US8345053B2 (en) * | 2006-09-21 | 2013-01-01 | Qualcomm Incorporated | Graphics processors with parallel scheduling and execution of threads |
US20080189257A1 (en) * | 2007-02-01 | 2008-08-07 | Microsoft Corporation | World-wide classified listing search with translation |
US8335369B2 (en) * | 2007-02-28 | 2012-12-18 | Taiwan Semiconductor Manufacturing Company, Ltd. | Mask defect analysis |
US20090160867A1 (en) * | 2007-12-19 | 2009-06-25 | Advance Micro Devices, Inc. | Autonomous Context Scheduler For Graphics Processing Units |
US8161209B2 (en) * | 2008-03-31 | 2012-04-17 | Advanced Micro Devices, Inc. | Peer-to-peer special purpose processor architecture and method |
-
2008
- 2008-11-06 US US12/266,034 patent/US8368701B2/en active Active
-
2009
- 2009-11-06 CN CN2009102221313A patent/CN101719262B/zh active Active
- 2009-11-06 TW TW098137751A patent/TWI423161B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890660A (zh) * | 2003-11-19 | 2007-01-03 | 路西德信息技术有限公司 | Pc总线上的多重三维图形管线的方法及系统 |
CN1991903A (zh) * | 2005-10-18 | 2007-07-04 | 威盛电子股份有限公司 | 图形处理事件同步的方法及系统 |
CN1983326A (zh) * | 2005-10-26 | 2007-06-20 | 威盛电子股份有限公司 | 图形处理单元管线多阶同步控制处理器及其方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101719262A (zh) | 2010-06-02 |
TW201030671A (en) | 2010-08-16 |
US8368701B2 (en) | 2013-02-05 |
US20100110083A1 (en) | 2010-05-06 |
TWI423161B (zh) | 2014-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101719262B (zh) | 绘图处理单元以及元命令处理系统 | |
CN101877120B (zh) | 支持多个绘图处理器的互动的方法与系统 | |
CN101685391B (zh) | 管理计算系统中协处理器的计算资源的方法和系统 | |
CN101702231A (zh) | 绘图处理单元同步系统与方法 | |
CN1991768B (zh) | 与不同种类的资源通信的基于指令系统结构的内定序器 | |
CN102648449B (zh) | 一种用于处理干扰事件的方法和图形处理单元 | |
CN1538296B (zh) | 用于调度协处理器的处理的方法和系统 | |
CN100533370C (zh) | 多处理器系统及运行多处理器系统的方法 | |
US20100115236A1 (en) | Hierarchical shared semaphore registers | |
US20020170039A1 (en) | System for operating system and platform independent digital stream handling and method thereof | |
JP6219445B2 (ja) | 中央処理ユニット及び画像処理ユニットの同期機構 | |
CN102077181A (zh) | 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统 | |
CN101946232A (zh) | 基于地址的条件调试指令的认定 | |
US10831539B2 (en) | Hardware thread switching for scheduling policy in a processor | |
CN103218329A (zh) | 数字信号处理数据传输 | |
CN103870326A (zh) | 一种将中断处理程序底半部搬移到应用层的方法及应用 | |
CN101216780B (zh) | 在对称多处理体系下实现多实例线程通信的方法及装置 | |
US9164813B2 (en) | Using a debug engine to identify threads that wait for a mutex | |
US11243800B2 (en) | Efficient virtual machine memory monitoring with hyper-threading | |
EP2630577B1 (en) | Exception control in a multiprocessor system | |
US20030014558A1 (en) | Batch interrupts handling device, virtual shared memory and multiple concurrent processing device | |
JP2006004092A (ja) | コンピュータシステム | |
CN116820800A (zh) | 一种基于共享内存的进程通信方法 | |
Fu et al. | Research on universal real-time architecture of spacecraft embedded software | |
CN110764880A (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 |