CN1991905A - 图形处理单元的同步方法以及围篱/等待同步组件 - Google Patents

图形处理单元的同步方法以及围篱/等待同步组件 Download PDF

Info

Publication number
CN1991905A
CN1991905A CN 200610137498 CN200610137498A CN1991905A CN 1991905 A CN1991905 A CN 1991905A CN 200610137498 CN200610137498 CN 200610137498 CN 200610137498 A CN200610137498 A CN 200610137498A CN 1991905 A CN1991905 A CN 1991905A
Authority
CN
China
Prior art keywords
mentioned
wait
register
fences
processing unit
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
Application number
CN 200610137498
Other languages
English (en)
Other versions
CN1991905B (zh
Inventor
约翰·柏拉勒斯
柏瑞斯·柏克潘克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN1991905A publication Critical patent/CN1991905A/zh
Application granted granted Critical
Publication of CN1991905B publication Critical patent/CN1991905B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Abstract

一种图形处理单元流水线,通过传送来自第一模块的围篱指令至寻址同步寄存器对而执行同步。围篱指令相关数据可被储存在寻址寄存器对的围篱寄存器。第二模块传送等待指令相关数据至寻址寄存器对。等待指令相关数据可与围篱寄存器的数据相比较。当围篱寄存器数据大于或是等于等待指令相关数据时,第二模块被认可以传送等待指令并释放第二模块以处理其它图形运算。当围篱寄存器数据小于等待指令相关数据时,中断第二模块直到后来接收的围篱指令的数据大于或是等于等待指令相关数据,而等待指令相关数据可被写入与寻址寄存器对有关的等待寄存器。

Description

图形处理单元的同步方法以及围篱/等待同步组件
技术领域
本发明涉及图形处理,特别涉及一种同步以及控制图形流水线(pipeline)的内部组件的装置以及方法。
背景技术
现今计算机的应用程序普遍为图形加强(graphically intense)的应用,而且比以前的计算机需要有更高等级的图形处理能力。应用程序(例如游戏)通常需要复杂以及非常精细的图形表现,其中需要大量不间断的计算。为了符合消费者在使用计算机的应用程序上增加图形性能的需求(例如游戏),计算机组态也要跟着更换。
计算机,尤其是个人计算机,被用来设计程序以管理程序设计师越来越多的高要求的娱乐与多媒体应用程序,例如高清晰度图像以及最新三维(3D)游戏,同样地,对系统频宽也有较高的要求。因此,对频宽不够的应用程序提供解决频宽的方法,而且也为下一代的应用程序提供额外的频宽空间。
因为这些理由,现今计算机系统常常包括多种处理器。例如:图形处理单元(graphics processing unit,GPU)是除了主要处理器(例如中央处理器)之外的一种协处理器(coprocessor),而该协处理器执行专门设计的处理任务。为了执行这些任务,图形处理单元可不受中央处理器控制而执行其它任务。在某些情况中,协处理器(例如图形处理单元)实际上与中央处理器存在于计算机系统的主机板上,其中中央处理器可以是微处理器。然而,在其它应用上,如本领域普通技术人员所知,图形处理单元和/或其它协处理装置可位于彼此分离但电性连接的卡上,例如图形卡在图形处理单元的情况下。
例如图形处理单元的协处理器常常存取补充存储器(supplementalmemory),例如影像存储器,用以执行其处理任务。协处理器通常被配置并有效执行专门的任务。就图形处理单元而言,这样的装置能有效执行三维图形计算以提供加强图形的应用程序。虽然传统计算机系统与协处理器可充分地执行单一图形加强应用程序,不过当传统计算机系统协共处理器试图同时执行多个图形加强应用程序时会遇到问题。
对传统协处理器来说,使用无效率的方法来安排其处理的工作量是不罕见的。在一些操作系统中,图形处理单元可使用以连续形式提交运算到图形处理单元的方法来进行多重任务处理,从而图形处理单元能依序执行所接收的运算。
上述方法的问题在于无法妥善处理当许多应用程序在不同时间内先后存取相同资源时的情形。在非限定的范例中,第一应用程序现正控制图形处理单元协处理器的资源,而为了其它应用程序能完成其协处理器的目的,第一应用程序需要放弃对其他应用程序的控制。假如第一应用程序没有放弃对其他等待中的应用程序的控制,则尽管图形处理单元完成处理有关第一应用程序的计算,但图形处理单元实际上可能忙于操作而造成等待中的其它应用程序成为瓶颈。根据前文所指示,当执行单一图形加强应用程序时,上述情况不是值得注意的瓶颈;然而,当多个应用程序试图同时使用图形处理单元或协处理器时,受限于图形处理单元或其它协处理器资源的问题会变的更严重。
运算之间分配处理的概念由可中断的中央处理器的概念提出,即从一个任务到另一个任务的上下文切换。更具体来说,目前的中央处理器利用上下文存储/复原的概念进行操作以存储相关寄存器的内容,以及设计计数器数据使能恢复中断的处理任务。当提出中央处理器运算之间分配处理的问题时,其中使用了多个运算之间的精密安排,而协处理器的安排并没有被充分地提出。
至少一个失败的原因是:协处理器(例如图形处理单元)通常被视为资源,其能将繁重计算与耗时运算从中央处理器中转移离开,以便使中央处理器能处理其它功能。众所皆知,图形运算包括繁重计算的运算,因此需要大量的运算处理能力。当图形应用程序的复杂度增加时,图形处理单元在管理强大的计算以及表现行动方面变得更复杂。
然而,为了准确地中断中央处理器,超标量(superscalar)的复杂架构、具有平行功能单元的EPIC形式的中央处理器以及故障的执行会产生问题,其中结构寄存器被重新命名,且在处理流水线(processing pipeline)的不同阶段中同时执行许多指令。为了提供准确中断的可能性,超标量中央处理器需在处理流水线中装备可重新安排的缓冲存储器(buffer)以及额外阶段“指令交回(指令引退(retirement))”。
现在的图形处理单元变得越来越复杂,涉及包括可程控以及由多个先入先出(First In First Out,FIFO)形式的缓冲存储器所连接的固定功能单元。各图形处理单元指令的执行可减少数百到数千的周期。现今的图形处理应用程序所使用的图形处理单元流水线比中央处理器更加深奥。因此,多数图形处理单元被安装以在任何情况下管理大量的数据,其试图分配图形处理单元的处理使得任务变得复杂,例如,图形处理单元没有足够的机械装置用以管理存储或复原运算中的大量数据。
现在的图形处理单元的结构已发展到可以管理大量数据以接收复杂的形式,即在处理数据流(data stream)时,需要新的装置来对流水线单元进行同步。当使用可程控的平行处理单元时,除了主要固定功能之外,图形流水线单元需要维持原有图形数据的顺序,其顺序在图形处理单元流水线的不同阶段中可被接收并更新。另外,在图形处理单元的图形流水线中,同时使用中断来维持多个上下文时需要带有最少性能遗失的中断上下文的重新同步,以及在中断的与恢复的图形上下文之间能顺利切换。然而,现今的图形处理单元结构对上下文的同步以及数据存取方面没有管理得很好,反而导致流水线的完全清除,因此造成较低效率的运算,且降低了图形能力。
当图形处理单元表现一表面时,为了下一穿过,其表面变成源头表面,另外,多穿过表现也需要同步,当第二穿过开始去存取共享表面(sharedsurface)时,以避免写后读出(read after write,RAW)的数据冒险(data hazard)。此外,牵涉过早写入冒险的情况也必定是处理不需要排出图形引擎的全部流水线。传统图形流水线并不能迅速以及有效地管理这些情况。
例如,当图形处理单元处理需要在一个处理组件以及另一个处理组件之间交换时,例如,因为第二组件需要来自第一组件的数据且必须等待此数据。必须在从第一组件完整全部写入到共享存储器之后,以及在第二组件开始从共享存储器读取随后的数据之前发生切换。然而,传统图形处理单元流水线无法充分地管理这种情形,其可能导致流水线排出,因此大大放慢了处理运算并导致无效率的图形处理运算。
此外,在现今的图形处理单元处理的执行中,与中央处理器同步执行任务也可能是一个问题,当图形处理单元可以开始和/或恢复特定上下文执行的执行时,其根据中央处理器执行线程(thread)事件(event)。然而,现今的图形处理单元是简单的,而无法实时传送以及反应这样的改变,以维持图形应用程序的增加需求的进度。
因此,这是前所未有的需要去克服这些前文所描述的缺陷以及缺点。
发明内容
有鉴于此,本发明提供一种同步方法,适用于图形处理单元的图形流水线。
图形处理单元流水线组件可被内部地以及分别地同步。如非限定的范例,其步骤包括指示第一图形流水线模块,以传送围篱(fence)指令至上述图形处理单元流水线中的指定模块的寻址计数寄存器。上述指定图形处理单元模块可为具有多个可寻址计数寄存器的存储器存取单元。通过上述指定图形处理单元模块的接收,上述围篱指令可被认可,并且与上述围篱指令有关的数据可被储存在上述寻址计数寄存器的围篱寄存器中。
第二图形流水线模块可被指示,以传送等待指令至上述图形处理单元流水线模块的上述寻址计数寄存器。上述等待指令的数据部份可与储存在上述寻址计数寄存器的上述围篱寄存器中的数据值相比较。
在此非限定的范例中,当储存在上述寻址计数寄存器的上述围篱寄存器中的数据值大于或是等于上述等待指令的数据部份时,上述指定图形处理单元模块可认可来自上述第二图形流水线模块的等待指令的接收,因此为下一运算释放上述第二图形流水线模块。然而,当储存在上述寻址计数寄存器的上述围篱存储器中的数据值小于上述等待指令的数据部份时,上述指定图形处理单元模块可不认可来自上述第二图形流水线模块的等待指令的接收。如此,上述第二图形流水线模块可被停止,从执行下一运算直到上述指定图形流水线模块接收来自上述第一图形流水线模块的围篱指令,为了上述寻址计数寄存器,上述围篱指令大于或是等于上述等待指令的上述数据部份。
直到上述接收,上述指定图形处理单元模块可将上述等待指令的上述数据部份储存在具有上述寻址计数寄存器的等待寄存器中。另外,上述指定图形处理单元模块可将等待搁置寄存器设置为对应于与上述第二图形流水线模块有关的等待处理的逻辑状态。就这样,上述第一以及第二图形流水线模块可被分别地同步彼此内部在图形处理单元内。
本发明提供一种同步方法,适用于图形处理单元的图形流水线,包括:传送来自第一图形流水线模块的围篱指令至指定图形处理单元流水线模块的寻址寄存器;传送来自第二图形流水线模块的等待指令至上述指定图形处理单元流水线模块的上述寻址寄存器;比较上述指定图形处理单元流水线模块的上述寻址寄存器中的数据以及与上述等待指令有关的数据;以及当上述指定图形处理单元流水线模块的上述寻址寄存器的数据值等于或是大于与上述等待指令有关的数据值时,响应传送来自上述第二图形流水线模块的上述等待指令。
本发明提供一种同步方法,适用于根据寄存器对来对图形处理单元的组件进行同步,包括:接收来自第一图形处理单元模块的围篱指令,其中上述第一图形处理单元模块寻址到同步寄存器块的既定寄存器对;放置上述围篱指令内的数据值至上述既定寄存器对的围篱寄存器中;接收来自第二图形处理单元模块的等待指令,其中上述第二图形处理单元模块寻址到上述同步寄存器块的上述既定寄存器对;比较上述围篱寄存器的数据值以及与上述等待指令有关的数据值;以及当上述围篱寄存器的数据值小于与上述等待指令有关的数据值时,停止上述第二图形处理单元模块。
本发明提供一种图形处理单元的围篱/等待同步组件,适用于内部地同步上述图形处理单元的两个以上的模块,包括:多个寄存器对,上述各寄存器对是通过指定地址所识别的,并具有围篱寄存组件以及等待寄存组件;围篱指令,根据上述指定地址从第一图形处理单元模块传送至上述寄存器对的特定寄存器对,其中上述围篱/等待同步组件为了上述指定地址写入与上述围篱指令有关的围篱数据组件至上述围篱寄存组件;等待指令,具有等待数据组件,上述等待数据组件由第二图形处理单元模块传送至对应于上述特定寄存器对的指定地址;以及比较逻辑单元,由上述围篱/等待同步组件执行,上述围篱/等待同步组件比较写入至上述围篱寄存组件的上述围篱数据组件以及上述等待数据组件,当上述围篱寄存组件的上述围篱数据组件大于或是等于上述等待数据组件时,上述第二图形处理单元模块被认可,并为了额外的处理运算被释放。
附图说明
图1是显示包括计算机的非限定范例的计算系统的图解说明。
图2是显示图1的图形处理单元的部分组件的图标,其被配置用以执行内部围篱/等待同步。
图3、4是显示由图1的图形处理单元执行的步骤/逻辑的流程图以执行内部围篱/等待同步。
图5是显示双图形处理单元可被配置以执行图3、4中内部围篱/等待同步程序的方法图。
【主要组件符号说明】
10~计算系统                 16~处理单元
18~系统存储器               24~只读存储器
26~随机存取存储器           27~基本输入输出系统
29~操作系统                 31~应用程序
33~其它应用模块             35~程序数据
41~硬盘驱动器               51~磁盘驱动器
52~磁盘                     55~光盘驱动器
56~光盘                     60~用户输入接口
61~指向装置                 62~键盘
70~网络接口                 71局域网络
72~数据器                   73~广域网络
80~远程计算机               81~存储器存储装置
82~图形接口                 84~图形处理单元
85~远程应用程序             86~影像存储器
90~影像接口                 91~监视器
95~输出外围接口             96~打印器
97~扬声器                   101~指令流处理器
103-105~模块                110~存储器存取单元
112-113~寄存器的内部围篱/等待对以及比较逻辑单元
120~方法                    122-146~步骤
153~围篱A同步指令
154~图形处理单元0的存储器存取单元
156~围篱/等待寄存器         162~围篱/等待寄存器
163~图形处理单元1的存储器存取单元
165~图形处理单元0的影像存储器
166~围篱/等待寄存器对映
167~图形处理单元1的影像存储器
168~围篱/等待寄存器对映
170~等待A同步指令
具体实施方式
为让本发明的上述和其它目的、特征、和优点能更明显易懂,下文特举出优选实施例,并配合附图,作详细说明如下。
实施例:
图1是显示包括计算机12的非限定计算系统10的示例的图解说明。计算机12的组件包括(例如非限定范例):处理单元16、系统存储器18,以及将包括系统存储器18的不同系统组件连接到处理单元16的系统总线21。如本领域普通技术人员所知,系统总线21可以是任何不同形式的总线结构,其包括存储器总线或是存储器控制器、外围总线,以及使用任何种类架构的局部总线。如同非限定范例,上述架构可包括外围组件互连(peripheralcomponent interconnect,PCI)总线、加速图形端口(accelerated graphics port,AGP),和/或快速外围组件互连(peripheral component interconnect express,PCI Express)总线。
计算机12包括多种计算机可读媒体(readable media)。计算机可读媒体为可由计算机12存取的任何可用的媒体,并且包含易失性(volatile)以及非易失性两种存储器,而上述存储器可以是可移动或是非可移动存储器。
系统存储器18可包括以易失性和/或非易失性存储器形式的计算机存储媒体,例如只读存储器(read only memory,ROM)24以及随机存取存储器(random access memory,RAM)26。基本输入输出系统(basic input/outputsystem,BIOS)27可被储存在只读存储器24中。如非限定范例,随机存取存储器26包括操作系统29、应用程序31、其它程序模块33,以及程序数据35。
计算机12亦可包括其它可移动/非可移动及易失性/非易失性计算机存储媒体。如非限定范例,硬盘驱动器41可由非可移动、非易失性的磁性媒体读出或写入。磁盘驱动器51可由可移动、非易失性的磁盘52读出或写入。光盘驱动器55可由光盘56读出或写入。
用户可以通过像键盘62及指向装置(pointing device)61的输入装置来输入指令及信息到计算机12上,而输入装置可以通过耦接到系统总线21的用户输入接口60而耦接至处理单元16。然而,如本领域普通技术人员所知,其它接口以及总线结构亦可用来耦接这些输入装置至计算机12,例如并行端口、游戏端口或通用串行总线(universal serial bus,USB)。
一个或多个图形处理单元84可与耦接至系统总线21的图形接口82通信。如非限定范例,图形处理单元84可包括片上存储器储存(on-chip memorystorage),例如寄存器储存(register storage)以及高速缓存(cache memory)。图形处理单元84亦可与影像存储器86通信,如同所需的。
监视器91或其它形式的显示装置亦可经由影像接口90耦接至系统总线21,监视器91也可经由影像接口90与影像存储器86通信。除了监视器91外,计算系统10亦可包括如打印机96以及扬声器97的其它外围输出装置,这些其它外围输出装置可经由输出外围接口95耦接在一起。
计算机12可操作在网络的或是分散的环境中,其使用逻辑连接(logicalconnection)连接到像远程计算机80的一个或多个远程计算机。远程计算机80可以是个人计算机、路由器、网络计算机、可携彩虹登记以及识别(PortableIris Enrollment and Recognition,pier)装置,或是其它常见的网络节点。虽然在图1仅描绘了存储器储存装置81以及远程应用程序85,但远程计算机80亦可包括许多或是全部前面描述有关于计算机12的组件。图1所示的逻辑连接包括局域网络(local area network,LAN)71以及广域网络(wide areanetwork,WAN)73,但是可包括其它网络/总线,如本领域普通技术人员所知。
如同图1的非限定范例,远程计算机80可经由局域网络71以及网络接口70耦接至计算机12。同样地,数据器72可被使用来耦接计算机12(经过用户输入接口60)穿过广域网络73至远程计算机80。
图2是显示图1的图形处理单元84,如本领域普通技术人员所知,部分组件可在图形处理单元84中被实施。当今的图形处理单元的概念是非常复杂的,其所安装的包括大量不同的处理组件,以实施有关平行以及顺序的图形运算指令,以便能尽快地产生图形相关数据。因此,如本领域普通技术人员所知,图2的图形处理单元84显示了除了在传统图形处理单元用其它方式可发现的组件的部分,为了不同的二维以及三维处理运算,图形处理单元84配置一个或多个图形流水线。
由于现今图形处理单元结构的复杂性,如前文所描述的应用形成产生,其中图形处理单元的不同组件需要被同步,以便相关数据在或是大约相同时间内被处理。换句话说,图形处理单元84的不同组件可在相关数据存在于图形处理单元流水线的不同阶段进行操作(图2所显示的部分非限定范例),图形处理单元84的某一组件或是连续组件,为了进一步的处理以及图形表现,需要等待在图形处理单元84之内的其它连续组件完成处理运算,以结合相关数据。因此,图2所示的图形处理单元84可被配置为对图形处理单元84的不同组件进行内部同步,以便增加图形处理运算的速度及效率。
内部同步,其亦可为已知的围篱和/或等待,可能是在图2的图形处理单元84中执行的机械装置,以便控制图形处理单元84中不同组件的内部流水线同步,例如指令流处理器101以及模块103、104和105,其中标号115显示32对寄存器。如本领域普通技术人员所知,在图形处理单元84中不只三个非限定范例模块可被找到。内部图形流水线同步可被图形处理单元84利用,以便处理任何写后读出或过早写入冒险的情形,且不需要排出图形处理单元84的全部图形引擎流水线。
如非限定范例,关于图形处理单元84两组件(可为图2的任意模块103、104和105)之间的内部同步完成,驱动程序可传送内部的围篱或令牌(token)(如为限定范例,可为指令的一种)至块(block)或是模块,其需要等待到完成图形流水线那部分的处理之前,得到图形流水线的另一部份的指令,其中围篱或标记如本领域普通技术人员所知具有一特定值。如同图形处理单元84两组件的切换,从第一组件(例如模块103)全部写入至图形处理单元84中图形流水线的存储器组件的动作应该在第二组件(例如模块105)为了随后的运算开始从图形处理单元84的存储器组件读出的动作之前完成。
在这种情况中,由图形处理单元84执行的驱动程序应该接在最后的目标之后,例如三角(triangle),其使用有内部围篱或标记的第一组件(模块103)指示到第二组件(模块105)。随着使用第二组件的下一个三角,步骤可接着继续进行下去,其可在非限定范例模块105中与等候指令被执行。
为了执行内部围篱以及等待同步处理,在图形处理单元84中具有一些寄存器对(register pair)112、113的存储器存取单元(memory access unit,MXU)110可以被执行。为了流水线块的任何对的同步可连接到存储器存取单元110(例如模块103-105),存储器存取单元110的寄存器对112、113可被指定。因此,内部围篱以及等待指令可指定地址及包含在内的数据,其中内部围篱以及等待指令可由模块103、104及105启动。
为了这个目的,存储器存取单元110可保留寄存器对112、113,而不是经由存储器存取单元110写入数据至存储器当作内部围篱。在至少一个为限定范例中,寄存器对(即寄存器的内部围篱/等待对和比较逻辑单元)112、113可以是32对的64位内部寄存器,其可用来更新及比较,可取代成实际储存数据。实质上,一个或多个模块103、104及105可被配置为写入至特定寄存器对112的指定第一部份。此外,另一模块可被配置为写入至相同的寄存器对112,因此导致储存在特定寄存器对第一部份的值之间的比较。根据包含在两时间独立的写入运算的信息是否相同或是不同,存储器存取单元110可能或是不可能认可协调第二企图写入命令的模块。假如来自第二模块的第二写入指令不被认可,其结果可能为第二模块被其它运算中断,并且继续在写入尝试中循环。
图3和图4是显示执行的步骤流程图,为了内部同步图形处理单元84的模块103-105,在图2中存储器存取单元110的帮助下,可以实现图形处理单元84。本领域普通技术人员将容易地得知图3和图4所描述的步骤,可被配置成软件或是硬件逻辑单元。上述逻辑单元可包括程控以及目标,其程控利用来自既定主张的程序(procedure)的图案导引调用(pattern-directedinvocation),例如图3和图4所显示并于此所包含以及讨论的。
在第一步骤122中,图形处理单元84的驱动程序可发送内部围篱标记(命令)至指定的模块,例如图2的模块103-105中的一个,其模块位于图形处理单元84的图形处理单元流水线中。内部围篱标记可跟随表面处理的最后绘图指令,其意味着跟随绘图命令的另一群组可以经由存储器存取单元110存取同样的表面。内部围篱标记可被指定在块标识符中(BLOCK ID),块标识符为内部围篱标记的报头(header)部分。内部围篱标记的形式可被组织如下:
指令 DW[0](32位) DW[1](32位) DW[2](32位) DW[3](32位)
内部同步 运算码 存储器地址以 低数据 高数据
及寄存器选择
以下将更详细地讨论等待的动作,而为了内部围篱以及等待两者,内部同步运算码可以被使用。在图形处理单元84中,内部围篱应该在相对应的内部等候之前被释放,以避免中断结果。不过,在至少一个非限定范例中,内部同步指令可以包括下面形式:
DW[0]运算码
  15   14   13   12   11   10   9   8   7   6   5   4   3   2   1   0
  INT   块标识符   围篱标识符   EXT
  31   30   29   28   27   26   25   24   23   22   21   20   19   18   17   16
  0   1   0   0   0   0   DWF   Pri   FE   保留   翻转
位[0]EXT外部围篱(用于指令流处理器101)
0=同步为内部的以及使用存储器存取单元要求的内部形式
1=指令为外部围篱以及使用存储器存取单元要求的标准形式
位[9-1]围篱标识符(用于指令流处理器101)
这些位是为以及可能没有具体的意义。这些位被建议(但不是限制)由驱动程序所使用,以识别注册在事件历史缓冲器的指令流处理器101的外部围篱。
位[14-10]块标识符
模块的块辨识应该在收到标记之后将数据写出。
位[15]INT中断需要(用于指令流处理器101)
0=在处理围篱时不传送中断
1=传送中断至中央处理器
位[17-16]翻转
判断后端围篱是否该储存在翻转队列(Flip Queue)
位[22]FE前端(用于指令流处理器101)
0=同步被执行在指定块或指令流处理器101后端。
1=同步被执行在指令流处理器101前端时,块辨识被忽略。
位[23]Pri特权(用于指令流处理器101)
0=同步非特权。
1=同步为特权。
位[25-24]DWF=11(围篱/等待地址以及64位围篱数据)
如前文所提出的32位内部围篱或等待标记运算码,其对应于图3中步骤122及124,可由32位地址所采用。内部同步指令的地址部分或DW[1],可表示如下:
DW1地址[31:0](地址存储器存取单元围篱/等待):
  15   14   13   12   11   10   9   8   7   6   5   4   3   2   1   0
  地址LSB   SEL   WT   保留
  31   30   29   28   27   26   25   24   23   22   21   20   19   18   17   16
  地址MSB
位[5-0]此地址可能为32字节长,所以位5:0为“0”。在非限定范例中,当位6被设为“0”时,位6可指定围篱;当位6被设为“1”时,位6可指定为等待。
位[6]WT等待/围篱
0=此数据为围篱数据,存储器存取单元110应该只储存此数据在适当的围篱寄存器。
1=此数据为等待数据,存储器存取单元110应该检查内容以及维持认可直到此数据被确定。
位[11-7]SEL用以选择32对存储器存取单元110内部围篱/等待寄存器中的一个。
位[31-12]用于存储器存取单元110围篱寄存器范围所保留的地址,其应该与被程序设计在相对应“围篱寄存器地址”寄存器内的值相同,例如MXU_INT_SYNC_ADDR寄存器。
位[31:12]应该符合被指示在指定同步块地址范围寄存器的地址,例如MXU_INT_SYNC_ADDR寄存器,如非限定范围之外。假如这些位符合此范围,其可指示到存储器存取单元110特殊的写入周期。然而,假如在位[31:12]的地址没有符合所指定的地址(定义在MXU_INT_SYNC_ADDR寄存器的范围),可能执行一个真正或标准的至存储器的写入动作。
最后,当模块103-105传送前文所描述的地址给存储器存取单元110时,与围篱/等待指令有关的数据可在分散逻辑字节被传送,例如DW[2]和DW[3]。DW[2]可包含对应于位[31:0]的数据,其包含64位中的32-LSB数据。同样地,DW[3]可包含对应于位[63:32]的数据,其包含64位中的32-MSB数据。
回到图2中,驱动程序产生指令流到模块103-105的第二指定模块,其指令流由图形处理单元84在数个其它指令之后执行,其指令流亦可包含内部等待标记(其中图形处理单元84也可能有多过三个或少过三个的接收)。内部等待标记可以被建构成前文所描述的格式。相同地,如同前文所描述以及描述在图3中的步骤124,指定模块103-105根据在报头的块标识符指令接收内部等待标记。
如前文所描述,内部围篱和等待标记在步骤122及124中传送,以及内部围篱和等待标记被各自接收模块103-105依序接收以及执行,如步骤126所显示。在至少一个非限定范例中,与标记对有关的数据值是相同的。
之后,在步骤128,接收模块执行写入周期运算至存储器存取单元110,其中接收模块至少为图2中模块103-105的两模块。步骤128中的写入运算包括传送地址与64位数据至存储器存取单元110。
之后,在步骤130,存储器存取单元110检测写入周期的地址。当写入周期的地址如前文所描述在有关围篱/等待处理的指定范围内时,存储器存取单元110承认此地址。更具体地,为了围篱/等待处理,写入周期的地址可指定存储器存取单元110内一些既定寄存器中的一个。之后,存储器存取单元110可检测来自模块103-105的写入周期运算的最小指定地址位。通过检查最小指定地址位,存储器存取单元110可判断该指令是否为内部围篱指令或是内部等待指令,其中最小指定地址位为前文所描述在非限定范例的位6。通过写入周期运算,存储器存取单元110亦可检查在实施例中紧接在后的5位,以决定32对的内部位数据寄存器对112中的哪一对被寻址。
在步骤132,存储器存取单元110判断接收指令是否为内部围篱指令或是内部等待指令。假如存储器存取单元110承认接收指令为内部围篱指令,则存储器存取单元110可复制64位数据到对应于存储器存取单元110中寻址寄存器112的围篱寄存器。具体而言,内部围篱指令可指定围篱寄存器用以写入与内部围篱指令有关的数据,其后由存储器存取单元110执行。此步骤显示在第3图的步骤134。之后,在步骤136,为了与内部围篱指令有关的数据被写入到寄存器对112(或113)之一的寻址围篱寄存器,存储器存取单元110寄存器对112准备好去接收有关先前接收围篱指令的内部等待指令。
如前文所描述,在步骤124以及128,图形处理单元84的模块103-105中的一个模块接收步骤122中由驱动程序所管理的内部同步指令。因此,接受器模块103-105执行写入周期至存储器存取单元110以及传送地址和相关的64位数据,如前文所描述的步骤128,其中接受模块103-105接收内部同步指令当作等待指令(由步骤124)。
因此延续到图4,过程120显示在步骤138中,当来自传送模块的等待指令在存储器存取单元110被接收,存储器存取单元110执行64位等待寄存器数据与围篱寄存器数据的比较,其中64位等待寄存器数据与内部等待指令有关,以及围篱寄存器数据为如前文所描述的寄存器对112中的一个的寻址围篱寄存器的数据。换句话说,在存储器存取单元110的接收内部,等待指令指定其地址为寄存器对112之一,其将与先前描述的围篱指令一样。接着,就相同寄存器对112而言,将等待指令的64位数据与围篱指令有关的64位数据相比较,其中与围篱指令有关的64位数据预先写入到相对应的寻址围篱寄存器中。
步骤140描写围篱寄存器数据以及等待寄存器数据的比较过程。如前文所描述,比较过程亦可被配置和/或实现为比较逻辑单元,其如非限定范例可为软件、硬件、固件等等。
然而,在步骤140中,就相同指定寄存器对112(或113)而言,与围篱寄存器有关的数据值是否大于或是等于与随后接收的等待寄存器数据有关的数据值的判断被决定。假如步骤140的结果为否定,就指定寄存器对112而言,即与围篱寄存器有关的数据值没有大于或是等于与等待寄存器(或是计数器)所寻址到相同寄存器对112有关的相对应的数据值,接着存储器存取单元110前进到步骤142。
步骤142中,其可配置成寄存器逻辑单元设定,指定(寻址)寄存器对112(或113)的等待寄存器被更新,且设定等待搁置位,如非限定范例为“是(TRUE)”,以便记录等待正在进行中。来自步骤128的接收写入周期运算不被存储器存取单元110认可,因此停止传送模块,其传送模块可能为模块103-105中的一个模块(模块可有更多个)。因此,在步骤142之后,存储器存取单元110回复到正常运算,等候指定寄存器对112随后的等待指令的接收。
假如步骤140的结果被存储器存取单元110承认与指定寄存器对112的等待寄存器有关的数据值大于或是等于与指定寄存器对112的相对应的围篱寄存器的数据时,存储器存取单元110由步骤140移动到步骤144。在步骤144中,存储器存取单元110认可来自模块的写入指令,该模块传送内部等待指令至存储器存取单元110。因此来自存储器存取单元110与等待认可有关的停顿释放了该模块。更具体地,步骤146接在模块被释放以及模块没有被停止之后,以便可继续与图形运算有关的数据处理。
因此,如前文所描述,等待模块(例如模块103)无法运作直到完成另一模块(例如模块105),其中等待模块可接着执行运算由另一模块事先产生的数据。根据来自等待模块(模块103)对写入周期运算的不认可,存储器存取单元110可因此中断等待模块(模块103)。
在指令流中,有相同值的围篱指令通常领先等待指令。在图形处理单元84的流水线中,围篱指令一般可被传送到位于流水线深处的模块,或在流水线相同阶段内被传送到如等待指令所指示的模块。当中断等待运算时,此结构协助去避免流水线的死锁。否则,流水线模块可能会阻碍围篱指令的传播,其中围篱指令的传播带有相同或是更大的值至指定流水线单元,阻碍围篱指令的传播在其它方面会导致围篱指令无法到达存储器存取单元110。
当由寻址寄存器对112送来的等待值大于或是等于寻址寄存器对112的围篱数据寄存器的值时,存储器存取单元110可能认可模块103传送等待指令,以便释放模块103,如步骤144和146所显示。
因为内部围篱以及内部等待指令可被传送到不同的流水线阶段,例如模块103和105,所以两指令可分别地先到达存储器存取单元110。因此,不论哪一个指令被先接收,存储器存取单元110可被配置以便管理任何一个指令,且没有中断在任一情况中连续的指令。
如非限定范例,假如内部围篱指令先到达存储器存取单元110,以及,如非限定范例,指定64位值0xFF至围篱寄存器0,存储器存取单元110可复制数据值0xFF至寻址64位围篱寄存器。然后,存储器存取单元110可检查寄存器对(在等待寄存器或等待搁置计数器等等)是否有等待指令被搁置。在此非限定范例中,没有等待指令被搁置,因为在此范例中围篱指定先到达。可是,假如等待指令被搁置,则存储器存取单元110可能与等待寄存器值执行如前文描述关于步骤140的比较运算。然后,当围篱值等于或是大于与等待寄存器有关的值时,存储器存取单元110释放该等待。
之后,由模块103所接收的内部等待同步指令可以写入至存储器存取单元110。与来自模块103的等待指令有关的数据值可为0xFF,如前文所描述,为了相对应的围篱同步指令能传送到模块105,因此与来自模块103的等待指令有关的数据值被精心安排。存储器存取单元110可认可内部等待指令,且接着执行前文所描述的比较,存储器存取单元110执行与寻址寄存器对112的相对应的围篱寄存器值的比较。如前文所描述,围篱寄存器值为0xFF。比较运算(图4中步骤140)可导致“同意”的结果,如此,来自模块103的写入需求被存储器存取单元110认可。结果,模块103被释放去执行其它运算且没有被中断。
在另一非限定范例中,来自模块103的内部等待指令可先到达存储器存取单元110。换句话说,与等待指令有关的64位数据值为0xFF,其中等待指令由模块103接收。存储器存取单元110可接收内部等待指令以及数据值,且执行与相对应围篱寄存器的值的比较,如前文所描述与寻址寄存器对112有关。
因此,执行第4图所示的步骤138及140,由于来自模块105的对应的内部围篱指令值还未到达,所以存储器存取单元110可发现寻址寄存器对112的围篱寄存器的数据值为0xFE(数据值0xFE与来自先前围篱/等待运算有关)。
如步骤140所显示,比较的结果为否定的结果。因此,存储器存取单元110可储存0xFF值至寻址寄存器对112(或113)的等待数据寄存器,其中0xFF值与从模块103接收的内部等待指令有关。此外,存储器存取单元110可设定等待搁置位(在等待搁置计数器中,如非限定范例)为“是”逻辑值,如前文所描述与图4的步骤142有关。而且,存储器存取单元110将不认可来自模块103的步骤128中的写入周期运算。因此从执行中的其它运算中断模块103。
后来,来自模块105的内部围篱值可到达存储器存取单元110,其寻址到适当的寄存器对112。之后,存储器存取单元110可认可与接收内部围篱指令有关的数据值为0xFF。因此,存储器存取单元110可更新对应于寻址寄存器对112的围篱寄存器。由于图4的步骤142所述的等待搁置位可预先设定,之后存储器存取单元110可执行图4的步骤140中的比较,即存储器存取单元110执行与接收内部围篱指令有关的数据值与相同寻址寄存器对112的等待寄存器值的比较。在非限定范例中,指定寄存器对112中每个围篱以及等待寄存器的比较结果可以相等,以便存储器存取单元110认可来自模块103的写入运算。在接收来自存储器存取单元110的认可之后,模块103被释放以执行下一个运算。
在非限定范例中,由存储器存取单元110在步骤140执行的比较运算可被配置成“大于或等于”的比较。由于驱动程序可设定与每个内部围篱以及等待指令有关的数据值为相等的,所以“大于或等于”的比较可以被精心安排。根据各个独立连续的事件,此结构所依据的概念为驱动程序被配置以设定相同值给内部围篱指令以及相对应的内部等待指令。
然而,本领域普通技术人员将察觉到此结构可提供的情况,其中因为一些原因,没有得到的围篱数据值被传送到存储器存取单元110,但是其中有较大值的较晚的围篱数据不知怎么的被传送到存储器存取单元110。上述状况仍释放等待模块以及情况,其中存储器存取单元110在接收围篱值及等待值之间承认一个错误。因此,本发明所描述的结构可避免不受欢迎的结果,使得除了必要的用以恢复的运算之外,图形处理单元84的图形流水线中没有模块需要等待过久。
如另一实施例,前文所描述的内部围篱以及等待同步方法可以不只一个图形处理单元的结构被执行。取代在单一流水线中所产生的围篱标记以及等待标记,上述标记可作为替代而被产生,并可在具有相同效果的多个图形处理单元之间被传送。
图5是显示方法150的图标,其显示不同的图形处理单元151 、152被配置以执行上述围篱以及等待同步程序。如非限定范例,图形处理单元151可被配置以表现奇数群的像素(pixel),而图形处理单元152可被配置以表现偶数群的像素。图形处理单元151及152两者经由存储器存取单元通过在存储器存取单元内特定表的建立,可直接读取另一图形处理单元的帧缓冲器(frame buffer)。
如非限定范例,在图5中,图形处理单元152可使用由图形处理单元151描绘的表面当作结构,用以描绘另一原始群组。图形处理单元152无法从存储器读取表面,直到图形处理单元151完成描绘并传送适当围篱A同步指令153。根据既定地址范围内的特定地址,在图形处理单元151被执行的上下文可导致围篱A指令153被传送到图形处理单元151的存储器存取单元154。围篱指令与其相关数据被寻址到围篱/等待寄存器对156中的一个。
有关影像绘图,存储器165、166、167以及168可为个别的存储器空间。即存储器165-168可为围篱/等待寄存器对或同步寄存器块,其包括32对。图形处理单元151以及图形处理单元152两者可在存储器中有上述地址空间165-168。然而,实际的数据可各自被储存在同步寄存器块156、162中。
当图形处理单元151执行围篱A同步指令153时,此指令的地址不是在空间166范围(地址范围0)而是在空间168范围(地址范围1)内。在此非限定范例中,存储器存取单元154没有写入围篱A同步指令153数据至块156,但却发送该数据,因为围篱A同步指令153的数据不是与图形处理单元151有关的内部围篱。
围篱A同步指令153可经由系统接口以及总线接口单元(bus interfaceunit,BIU)到达存储器存取单元163,并被写入寄存器决162。等待A同步指令170为图形处理单元152的内部等待指令,并且为了图形处理单元151及图形处理单元152的同步,等待A同步指令170被寻址到相同的寄存器对。
因此,在接收围篱A同步指令153之后,存储器存取单元154通过图形处理单元151及图形处理单元152的总线接口单元与存储器存取单元163通信。如前文所描述,围篱指令被写入至图形处理单元152的围篱寄存器。
接着,在图形处理单元152处理流程中的等待A同步指令170可被传送到存储器存取单元163的围篱/等待寄存器162。因为围篱A同步指令153已被存储器存取单元163事先接收,所以存储器存取单元163之后在与围篱A同步指令153以及等待A同步指令170有关的数据之间执行比较运算。假如与围篱A同步指令153有关的数据(从图形处理单元151所传送)大于或是等于与等待A同步指令170有关的数据,则围篱/等待寄存器162导致存储器存取单元163去释放在图形处理单元152中的模块,其模块传送等待A同步指令170至存储器存取单元163。如此,就这样,图形处理单元151以及图形处理单元152能在多个图形处理单元中执行上述围篱以及等待同步程序。
本发明虽以较佳实施例以及非限定范例揭露如上,然其并非用以限定本发明的范围,任何本领域技术人员在不脱离本发明的精神和范围内,当可做些许的更动与润饰,因此本发明的保护范围当视后附的权利要求书所界定者为准。

Claims (18)

1.一种同步方法,适用于图形处理单元的图形流水线,包括步骤:传送来自第一图形流水线模块的围篱指令至指定图形处理单元流水线模块的寻址寄存器;
传送来自第二图形流水线模块的等待指令至上述指定图形处理单元流水线模块的上述寻址寄存器;
比较上述指定图形处理单元流水线模块的上述寻址寄存器的数据以及与上述等待指令有关的数据;以及
当上述指定图形处理单元流水线模块的上述寻址寄存器的数据值等于或是大于与上述等待指令有关的数据值时,响应传送来自上述第二图形流水线模块的上述等待指令。
2.如权利要求1所述的同步方法,更包括:
当上述指定图形处理单元流水线模块的上述寻址寄存器的数据值小于与上述等待指令有关的数据值时,不响应传送来自上述第二图形流水线模块的上述等待指令。
3.如权利要求1所述的同步方法,还包括:
更新等待搁置计数器为指定指示,上述指定指示对应于进行中的上述第二图形流水线模块的停顿。
4.如权利要求1所述的同步方法,还包括:
驱动上述图形处理单元的特定组件以传送围篱标记至上述第一图形流水线模块;以及
驱动上述图形处理单元的上述特定组件以传送等待标记至上述第二图形流水线模块,其中,各上述围篱标记以及上述等待标记内所包含的部分数据至少是相同的。
5.如权利要求1所述的同步方法,还包括:
检测来自上述第一图形流水线模块或第二图形流水线模块的之一的接收指令的地址部分;
判断上述地址部分是否指定位于既定范围内的地址;以及
判断来自上述第一图形流水线模块或第二图形流水线模块之一的上述接收指令是否为上述围篱指令或是上述等待指令。
6.如权利要求5所述的同步方法,还包括:
根据上述接收指令的指定部分寻址上述指定图形处理单元流水线模块的既定数目的寄存器中的一个,其中上述接收指令用以标识上述既定数目的上述寄存器中的一个。
7.如权利要求1所述的同步方法,其中,上述响应传送来自上述第二图形流水线模块的上述等待指令为释放上述第二图形流水线模块以处理紧接在后的指令运算。
8.一种同步方法,适用于根据寄存器对来同步图形处理单元的组件,包括:
接收来自第一图形处理单元模块的围篱指令,其中上述第一图形处理单元模块寻址到同步寄存器块的既定寄存器对;
放置上述围篱指令内的数据值至上述既定寄存器对的围篱寄存器;
接收来自第二图形处理单元模块的等待指令,其中上述第二图形处理单元模块寻址到上述同步寄存器块的上述既定寄存器对;
比较上述围篱寄存器的数据值以及与上述等待指令有关的数据值;以及
当上述围篱寄存器的数据值小于与上述等待指令有关的数据值时,停止上述第二图形处理单元模块。
9.如权利要求8所述的同步方法,还包括:
当上述围篱寄存器内的数据值大于或等于与上述等待指令有关的数据值时,认可来自上述第二图形处理单元模块的上述等待指令的接收。
10.如权利要求9所述的同步方法,其中,上述第二图形处理单元模块被释放以执行与上述等待指令无关的后续运算。
11.如权利要求8所述的同步方法,还包括:
将与上述同步寄存器块的上述既定寄存器对有关的等待搁置位设定为与上述第二图形处理单元模块正在进行的等待有关的指定逻辑状态。
12.如权利要求11所述的同步方法,其中与上述等待指令有关的上述数据值被放置在上述既定寄存器的等待寄存器对中。
13.如权利要求8所述的同步方法,还包括:
检查各接收指令的指定部分,以决定上述接收指令是否为上述等待指令或是上述围篱指令。
14.一种图形处理单元的围篱/等待同步组件,适用于内部地同步上述图形处理单元的两个以上的模块,包括:
多个寄存器对,上述各寄存器对通过指定地址来识别,并具有围篱寄存组件以及等待寄存组件;
围篱指令,根据上述指定地址从第一图形处理单元模块传送至上述寄存器对的特定寄存器对,其中上述围篱/等待同步组件为了上述指定地址写入与上述围篱指令有关的围篱数据组件至上述围篱寄存组件;
等待指令,具有等待数据组件,上述等待数据组件由第二图形处理单元模块传送至对应于上述特定寄存器对的指定地址;以及
比较逻辑单元,由上述围篱/等待同步组件执行,上述围篱/等待同步组件比较写入至上述围篱寄存组件的上述围篱数据组件以及上述等待数据组件,当上述围篱寄存组件的上述围篱数据组件大于或是等于上述等待数据组件时,上述第二图形处理单元模块被认可,并为了额外的处理运算而被释放。
15.如权利要求14所述的围篱/等待同步组件,还包括:
由上述围篱/等待同步组件执行的寄存器设定逻辑单元,其中,当上述围篱寄存组件的上述围篱数据组件小于上述等待数据组件时,上述围篱/等待同步组件设定等待寄存器为等待搁置逻辑状态。
16.如权利要求15所述的围篱/等待同步组件,其中,上述等待数据组件被写入至与上述特定寄存器对有关的等待寄存组件。
17.如权利要求16所述的围篱/等待同步组件,其中上述围篱/等待同步组件为存储器存取单元。
18.如权利要求14所述的围篱/等待同步组件,当上述围篱/等待同步组件接收到上述围篱指令时,上述第一图形处理单元被认可来传送上述围篱指令
CN 200610137498 2005-10-26 2006-10-26 图形处理单元的同步方法以及围篱/等待同步组件 Active CN1991905B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US73044405P 2005-10-26 2005-10-26
US60/730,444 2005-10-26

Publications (2)

Publication Number Publication Date
CN1991905A true CN1991905A (zh) 2007-07-04
CN1991905B CN1991905B (zh) 2010-05-12

Family

ID=38165842

Family Applications (4)

Application Number Title Priority Date Filing Date
CN 200610136593 Active CN100538737C (zh) 2005-10-26 2006-10-26 图形处理单元管线多阶同步控制处理器及其方法
CN 200610137496 Active CN101034469B (zh) 2005-10-26 2006-10-26 图形处理单元管线同步及控制系统和方法
CN 200610137499 Active CN100590655C (zh) 2005-10-26 2006-10-26 指令解析器以及图形处理单元及其方法
CN 200610137498 Active CN1991905B (zh) 2005-10-26 2006-10-26 图形处理单元的同步方法以及围篱/等待同步组件

Family Applications Before (3)

Application Number Title Priority Date Filing Date
CN 200610136593 Active CN100538737C (zh) 2005-10-26 2006-10-26 图形处理单元管线多阶同步控制处理器及其方法
CN 200610137496 Active CN101034469B (zh) 2005-10-26 2006-10-26 图形处理单元管线同步及控制系统和方法
CN 200610137499 Active CN100590655C (zh) 2005-10-26 2006-10-26 指令解析器以及图形处理单元及其方法

Country Status (3)

Country Link
US (4) US8817029B2 (zh)
CN (4) CN100538737C (zh)
TW (4) TWI366152B (zh)

Families Citing this family (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7304996B1 (en) 2004-03-30 2007-12-04 Extreme Networks, Inc. System and method for assembling a data packet
US7822032B1 (en) * 2004-03-30 2010-10-26 Extreme Networks, Inc. Data structures for supporting packet data modification operations
US8941669B1 (en) * 2005-10-18 2015-01-27 Nvidia Corporation Split push buffer rendering for scalability
US8701091B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Method and system for providing a generic console interface for a graphics application
US8452981B1 (en) * 2006-03-01 2013-05-28 Nvidia Corporation Method for author verification and software authorization
US7891012B1 (en) 2006-03-01 2011-02-15 Nvidia Corporation Method and computer-usable medium for determining the authorization status of software
US7818306B2 (en) * 2006-03-24 2010-10-19 International Business Machines Corporation Read-copy-update (RCU) operations with reduced memory barrier usage
US8963932B1 (en) 2006-08-01 2015-02-24 Nvidia Corporation Method and apparatus for visualizing component workloads in a unified shader GPU architecture
US8436870B1 (en) 2006-08-01 2013-05-07 Nvidia Corporation User interface and method for graphical processing analysis
US7778800B2 (en) * 2006-08-01 2010-08-17 Nvidia Corporation Method and system for calculating performance parameters for a processor
US8607151B2 (en) * 2006-08-01 2013-12-10 Nvidia Corporation Method and system for debugging a graphics pipeline subunit
US8436864B2 (en) * 2006-08-01 2013-05-07 Nvidia Corporation Method and user interface for enhanced graphical operation organization
US9317290B2 (en) * 2007-05-04 2016-04-19 Nvidia Corporation Expressing parallel execution relationships in a sequential programming language
US8296738B1 (en) 2007-08-13 2012-10-23 Nvidia Corporation Methods and systems for in-place shader debugging and performance tuning
US9035957B1 (en) 2007-08-15 2015-05-19 Nvidia Corporation Pipeline debug statistics system and method
US7765500B2 (en) * 2007-11-08 2010-07-27 Nvidia Corporation Automated generation of theoretical performance analysis based upon workload and design configuration
US20090160867A1 (en) * 2007-12-19 2009-06-25 Advance Micro Devices, Inc. Autonomous Context Scheduler For Graphics Processing Units
US8509569B2 (en) * 2008-02-11 2013-08-13 Apple Inc. Optimization of image processing using multiple processing units
US8448002B2 (en) * 2008-04-10 2013-05-21 Nvidia Corporation Clock-gated series-coupled data processing modules
US8390631B2 (en) * 2008-06-11 2013-03-05 Microsoft Corporation Synchronizing queued data access between multiple GPU rendering contexts
US20100024030A1 (en) * 2008-07-23 2010-01-28 Microsoft Corporation Restartable transformation automaton
US8139583B1 (en) 2008-09-30 2012-03-20 Extreme Networks, Inc. Command selection in a packet forwarding device
US8368701B2 (en) * 2008-11-06 2013-02-05 Via Technologies, Inc. Metaprocessor for GPU control and synchronization in a multiprocessor environment
US20100110089A1 (en) * 2008-11-06 2010-05-06 Via Technologies, Inc. Multiple GPU Context Synchronization Using Barrier Type Primitives
CN101859330B (zh) * 2009-04-09 2012-11-21 辉达公司 验证集成电路效能模型的方法
US8484647B2 (en) * 2009-07-24 2013-07-09 Apple Inc. Selectively adjusting CPU wait mode based on estimation of remaining work before task completion on GPU
US8743131B2 (en) * 2009-09-10 2014-06-03 Advanced Micro Devices, Inc. Course grain command buffer
US9589310B2 (en) * 2009-10-07 2017-03-07 Nvidia Corporation Methods to facilitate primitive batching
US20110285736A1 (en) 2010-05-21 2011-11-24 Kilgard Mark J Decomposing cubic bèzier segments for tessellation-free stencil filling
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8681162B2 (en) * 2010-10-15 2014-03-25 Via Technologies, Inc. Systems and methods for video processing
US8856760B2 (en) * 2010-10-26 2014-10-07 Advanced Micro Devices, Inc. Streaming programming generator
US9176794B2 (en) 2010-12-13 2015-11-03 Advanced Micro Devices, Inc. Graphics compute process scheduling
US9176795B2 (en) 2010-12-13 2015-11-03 Advanced Micro Devices, Inc. Graphics processing dispatch from user mode
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
US20120229481A1 (en) * 2010-12-13 2012-09-13 Ati Technologies Ulc Accessibility of graphics processing compute resources
US20120194526A1 (en) * 2010-12-15 2012-08-02 Benjamin Thomas Sander Task Scheduling
US8732496B2 (en) * 2011-03-24 2014-05-20 Nvidia Corporation Method and apparatus to support a self-refreshing display device coupled to a graphics controller
CN103748566A (zh) * 2011-06-07 2014-04-23 爱立信(中国)通信有限公司 用于寄存器组的创新结构
US10013731B2 (en) * 2011-06-30 2018-07-03 Intel Corporation Maximizing parallel processing in graphics processors
WO2013030939A1 (ja) * 2011-08-29 2013-03-07 富士通株式会社 情報処理装置、メモリダンプ採取方法、及びプログラム
US9652282B2 (en) * 2011-11-08 2017-05-16 Nvidia Corporation Software-assisted instruction level execution preemption
US9147224B2 (en) * 2011-11-11 2015-09-29 Nvidia Corporation Method for handling state transitions in a network of virtual processing nodes
US8976185B2 (en) * 2011-11-11 2015-03-10 Nvidia Corporation Method for handling state transitions in a network of virtual processing nodes
DE102011119004A1 (de) * 2011-11-19 2013-05-23 Diehl Aerospace Gmbh Grafikverarbeitungsvorrichtung, Anzeigevorrichtung für ein Flugzeugcockpit sowie Verfahren zur Anzeige von Grafikdaten
US9691117B2 (en) 2011-11-30 2017-06-27 Intel Corporation External validation of graphics pipelines
US9122522B2 (en) * 2011-12-14 2015-09-01 Advanced Micro Devices, Inc. Software mechanisms for managing task scheduling on an accelerated processing device (APD)
US8941670B2 (en) * 2012-01-17 2015-01-27 Microsoft Corporation Para-virtualized high-performance computing and GDI acceleration
US9323315B2 (en) 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US8850371B2 (en) 2012-09-14 2014-09-30 Nvidia Corporation Enhanced clock gating in retimed modules
US9292569B2 (en) * 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
CN103812800A (zh) * 2012-11-09 2014-05-21 辉达公司 一种无线基站设备和包括该无线基站设备的通信系统
US20140176577A1 (en) * 2012-12-20 2014-06-26 Nvidia Corporation Method and mechanism for preempting control of a graphics pipeline
US9519568B2 (en) 2012-12-31 2016-12-13 Nvidia Corporation System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application
US9830224B2 (en) * 2013-03-15 2017-11-28 Nvidia Corporation Selective fault stalling for a GPU memory pipeline in a unified virtual memory system
US9471456B2 (en) * 2013-05-15 2016-10-18 Nvidia Corporation Interleaved instruction debugger
US9292903B2 (en) 2013-10-03 2016-03-22 Google Inc. Overlap aware reordering of rendering operations for efficiency
US8854385B1 (en) 2013-10-03 2014-10-07 Google Inc. Merging rendering operations for graphics processing unit (GPU) performance
CN105637556B (zh) * 2013-10-14 2019-06-28 马维尔国际贸易有限公司 用于图形处理单元功率管理的系统和方法
US10042659B1 (en) * 2013-10-30 2018-08-07 Xilinx, Inc. Caching virtual contexts for sharing of physical instances of a hardware resource
CN105469354A (zh) * 2014-08-25 2016-04-06 超威半导体公司 图形处理方法、系统和设备
US20160092118A1 (en) * 2014-09-26 2016-03-31 Intel Corporation Memory write management in a computer system
US20160292812A1 (en) * 2015-03-31 2016-10-06 Qualcomm Incorporated Hybrid 2d/3d graphics rendering
US10003811B2 (en) * 2015-09-01 2018-06-19 Microsoft Technology Licensing, Llc Parallel processing of a video frame
US9652235B1 (en) 2015-11-24 2017-05-16 International Business Machines Corporation Method of synchronizing independent functional unit
CN108536644B (zh) 2015-12-04 2022-04-12 格兰菲智能科技有限公司 由装置端推核心入队列的装置
US10176548B2 (en) * 2015-12-18 2019-01-08 Ati Technologies Ulc Graphics context scheduling based on flip queue management
US10192281B2 (en) * 2016-07-07 2019-01-29 Intel Corporation Graphics command parsing mechanism
US10198784B2 (en) 2016-07-29 2019-02-05 Microsoft Technology Licensing, Llc Capturing commands in a multi-engine graphics processing unit
US10600141B2 (en) 2016-09-23 2020-03-24 Nvidia Corporation Monitoring execution in a graphics processing unit
CN109791501B (zh) * 2016-11-15 2023-08-22 谷歌有限责任公司 用于减少下载要求的系统和方法
CN106708601A (zh) * 2016-12-12 2017-05-24 中国航空工业集团公司西安航空计算技术研究所 一种面向GPU实现的虚拟IOringbuffer的方法
CN106651745A (zh) * 2016-12-12 2017-05-10 中国航空工业集团公司西安航空计算技术研究所 一种分离式图形处理器指令处理系统
US10275378B2 (en) * 2017-03-07 2019-04-30 Western Digital Technologies, Inc. Data buffer pointer fetching for direct memory access
US10204394B2 (en) * 2017-04-10 2019-02-12 Intel Corporation Multi-frame renderer
US10872394B2 (en) * 2017-04-27 2020-12-22 Daegu Gyeongbuk Institute Of Science And Technology Frequent pattern mining method and apparatus
US10503546B2 (en) 2017-06-02 2019-12-10 Apple Inc. GPU resource priorities based on hardware utilization
US11544121B2 (en) 2017-11-16 2023-01-03 Advanced Micro Devices, Inc. GPU networking using an integrated command processor
US10467724B1 (en) * 2018-02-14 2019-11-05 Apple Inc. Fast determination of workgroup batches from multi-dimensional kernels
GB2573316B (en) * 2018-05-02 2021-01-27 Advanced Risc Mach Ltd Data processing systems
US10795730B2 (en) 2018-09-28 2020-10-06 Apple Inc. Graphics hardware driven pause for quality of service adjustment
US10796399B2 (en) * 2018-12-03 2020-10-06 Advanced Micro Devices, Inc. Pixel wait synchronization
US10832465B2 (en) * 2018-12-13 2020-11-10 Advanced Micro Devices, Inc. Use of workgroups in pixel shader
US11461137B2 (en) * 2019-12-19 2022-10-04 Advanced Micro Devices, Inc. Distributed user mode processing
US11127109B1 (en) 2020-03-23 2021-09-21 Samsung Electronics Co., Ltd. Methods and apparatus for avoiding lockup in a graphics pipeline
CN117707625A (zh) * 2024-02-05 2024-03-15 上海登临科技有限公司 支持指令多发的计算单元、方法及相应图形处理器

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916301A (en) 1987-02-12 1990-04-10 International Business Machines Corporation Graphics function controller for a high performance video display system
US5097411A (en) 1987-08-13 1992-03-17 Digital Equipment Corporation Graphics workstation for creating graphics data structure which are stored retrieved and displayed by a graphics subsystem for competing programs
US4855936A (en) 1987-09-25 1989-08-08 International Business Machines Corp. Full-screen input/output application program interface
US4862155A (en) 1987-10-26 1989-08-29 Tektronix, Inc. Graphic display system with secondary pixel image storage
US5293587A (en) 1990-06-01 1994-03-08 Chips And Technologies, Inc. Terminal control circuitry with display list processor that fetches instructions from a program memory, character codes from a display memory, and character segment bitmaps from a font memory
US5230039A (en) 1991-02-19 1993-07-20 Silicon Graphics, Inc. Texture range controls for improved texture mapping
US5315696A (en) 1991-08-21 1994-05-24 Digital Equipment Corporation Graphics command processing method in a computer graphics system
US5299309A (en) 1992-01-02 1994-03-29 Industrial Technology Research Institute Fast graphics control system capable of simultaneously storing and executing graphics commands
US5706478A (en) 1994-05-23 1998-01-06 Cirrus Logic, Inc. Display list processor for operating in processor and coprocessor modes
US6161154A (en) * 1997-11-26 2000-12-12 National Instruments Corporation System and method for extracting and restoring a video buffer from/to a video acquisition cycle
US6252610B1 (en) 1998-05-29 2001-06-26 Silicon Graphics, Inc. Method and apparatus for efficiently switching state in a graphics pipeline
US6208361B1 (en) 1998-06-15 2001-03-27 Silicon Graphics, Inc. Method and system for efficient context switching in a computer graphics system
EP1121631B1 (en) * 1998-07-22 2007-04-25 California Institute Of Technology Reshuffled communications processes in pipelined asynchronous circuits
US6329996B1 (en) 1999-01-08 2001-12-11 Silicon Graphics, Inc. Method and apparatus for synchronizing graphics pipelines
US6363438B1 (en) * 1999-02-03 2002-03-26 Sun Microsystems, Inc. Method of controlling DMA command buffer for holding sequence of DMA commands with head and tail pointers
US6476808B1 (en) 1999-10-14 2002-11-05 S3 Graphics Co., Ltd. Token-based buffer system and method for a geometry pipeline in three-dimensional graphics
US6708269B1 (en) 1999-12-30 2004-03-16 Intel Corporation Method and apparatus for multi-mode fencing in a microprocessor system
US7178162B2 (en) 2000-02-10 2007-02-13 Chyron Corporation Incorporating graphics and interactive triggers in a video stream
US6483505B1 (en) 2000-03-17 2002-11-19 Ati International Srl Method and apparatus for multipass pixel processing
US6782432B1 (en) 2000-06-30 2004-08-24 Intel Corporation Automatic state savings in a graphics pipeline
US6867781B1 (en) 2000-08-23 2005-03-15 Nintendo Co., Ltd. Graphics pipeline token synchronization
US6806880B1 (en) 2000-10-17 2004-10-19 Microsoft Corporation System and method for efficiently controlling a graphics rendering pipeline
US6697074B2 (en) 2000-11-28 2004-02-24 Nintendo Co., Ltd. Graphics system interface
US6947049B2 (en) 2001-06-01 2005-09-20 Nvidia Corporation Method and system for synchronizing updates of vertex data with a graphics processor that is fetching vertex data
US20040153524A1 (en) * 2001-06-29 2004-08-05 Kang I-Chih J. Multiprocessor system and method for operating a multiprocessor system
US6833831B2 (en) 2002-02-26 2004-12-21 Sun Microsystems, Inc. Synchronizing data streams in a graphics processor
US6864892B2 (en) * 2002-03-08 2005-03-08 Sun Microsystems, Inc. Graphics data synchronization with multiple data paths in a graphics accelerator
US6952214B2 (en) 2002-07-12 2005-10-04 Sun Microsystems, Inc. Method for context switching a graphics accelerator comprising multiple rendering pipelines
US6954204B2 (en) 2002-07-18 2005-10-11 Nvidia Corporation Programmable graphics system and method using flexible, high-precision data formats
US7263585B2 (en) * 2002-09-19 2007-08-28 Ip-First, Llc Store-induced instruction coherency mechanism
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US6985150B2 (en) 2003-03-31 2006-01-10 Sun Microsystems, Inc. Accelerator control unit configured to manage multiple hardware contexts
WO2005015504A1 (ja) 2003-08-07 2005-02-17 Renesas Technology Corp. 画像処理用半導体プロセッサ
US7057620B2 (en) 2003-08-25 2006-06-06 Ati Technologies Inc. Method and apparatus for graphics rendering on a mobile device
US7353369B1 (en) * 2005-07-13 2008-04-01 Nvidia Corporation System and method for managing divergent threads in a SIMD architecture

Also Published As

Publication number Publication date
US8817029B2 (en) 2014-08-26
US20070091100A1 (en) 2007-04-26
US20070115292A1 (en) 2007-05-24
TWI366152B (en) 2012-06-11
CN101034469B (zh) 2010-05-12
TW200717311A (en) 2007-05-01
CN100538737C (zh) 2009-09-09
CN100590655C (zh) 2010-02-17
TWI331299B (en) 2010-10-01
CN1991905B (zh) 2010-05-12
CN101034469A (zh) 2007-09-12
US7737983B2 (en) 2010-06-15
US7755632B2 (en) 2010-07-13
TW200739449A (en) 2007-10-16
US20070091102A1 (en) 2007-04-26
US20070091101A1 (en) 2007-04-26
CN101034470A (zh) 2007-09-12
CN1983326A (zh) 2007-06-20
TWI366153B (en) 2012-06-11
TWI326852B (en) 2010-07-01
TW200737036A (en) 2007-10-01
TW200731160A (en) 2007-08-16
US8004533B2 (en) 2011-08-23

Similar Documents

Publication Publication Date Title
CN1991905A (zh) 图形处理单元的同步方法以及围篱/等待同步组件
CN106055310B (zh) 图形处理中管理活动线程依赖关系
CN1088214C (zh) 用多指令集处理数据的器件和方法
TWI501150B (zh) 無指令解碼而排程指令的方法和裝置
TWI437507B (zh) 具有多線程執行單元之繪圖處理裝置及其記憶體存取方法
CN1842769A (zh) 用于在多线程微处理器中对并行指令流进行初始化的指令
CN1037982A (zh) 在有仲裁的80386/82385微机系统运行中80386对系统总线的抢用
CN101057261A (zh) 三维图形处理
TWI344621B (en) A system and method for managing multiple contexts in a decentralized graphics processing unit
CN1549964A (zh) 管理计算系统中协处理器的计算资源的方法和系统
US20100141664A1 (en) Efficient GPU Context Save And Restore For Hosted Graphics
CN1806231A (zh) 提供软件实现的高速缓冲存储器的方法与装置
CN1147307A (zh) 多指令集的数据处理
EP3252604A2 (en) Scalable compute fabric
CN100341009C (zh) 在管线微处理器使用卷标以执行结合写入的装置及方法
JP2009505301A (ja) ベクトル処理用の拡張可能な並列パイプライン浮動小数点数演算ユニット
CN101059762A (zh) 虚拟机系统及其显卡访问方法
US9715356B2 (en) Method, apparatus and system for determining a merged intermediate representation of a page
CN1038792C (zh) 三维计算机图形设备
CN110347450B (zh) 多流并行控制系统及其方法
CN1637712A (zh) 中断控制装置及控制方法
JP6017171B2 (ja) 処理パイプラインの制御
CN1955933A (zh) 数据处理设备和方法
EP4268176A1 (en) Condensed command packet for high throughput and low overhead kernel launch
CN108536644B (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