CN1916962A - 存储和回存状态上下文在图形处理单元的方法和装置 - Google Patents

存储和回存状态上下文在图形处理单元的方法和装置 Download PDF

Info

Publication number
CN1916962A
CN1916962A CNA2006101215504A CN200610121550A CN1916962A CN 1916962 A CN1916962 A CN 1916962A CN A2006101215504 A CNA2006101215504 A CN A2006101215504A CN 200610121550 A CN200610121550 A CN 200610121550A CN 1916962 A CN1916962 A CN 1916962A
Authority
CN
China
Prior art keywords
context
processing unit
instruction
data
state
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
CNA2006101215504A
Other languages
English (en)
Other versions
CN100538736C (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 CN1916962A publication Critical patent/CN1916962A/zh
Application granted granted Critical
Publication of CN100538736C publication Critical patent/CN100538736C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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/461Saving or restoring of program or task context
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

当图形处理单元GPU处理一上下文时,图形处理单元接收来自中央处理器CPU的一中断指令或内部中断事件,GPU存储第一上下文至存储器并记录第一上下文的中断点,之后,图形处理器从存储器载入第二上下文至图形处理器,并执行第二上下文,在第二上下文完成后,假如中断指令指向回存第一上下文,图形处理器从存储器中提取第一上下文并回存至之前中断点,之后,图形处理器处理第一上下文的剩余部分从中断点到第一上下文的最后部分。

Description

存储和回存状态上下文在图形处理单元的方法和装置
技术领域
本发明有关于图形处理,特别是有关于一种存储和回存上下文(context)在图形处理单元的方法和系统。
背景技术
目前所知的计算机系统一般包括多个处理器,例如:计算机系统中除了中央处理器(Central Processing Unit,CPU)执行处理程序以外,另外计算机系统还具有一图形处理单元(Graphics Processing Unit,GPU)用以减少CPU的负担,使CPU减少处理程序的负荷。在一些应用中,处理器(例如:GPU)可设置在计算机系统主机板上并且在CPU旁。而在另一应用中,GPU和/或其他相关装置可设置在一分离但电连接的卡上,例如:GPU在一显示卡上,关于上述应用,本领域技术人员皆熟知此应用。
辅助处理器(coprocessor),例如:GPU,可存取例如显示卡存储器的额外存储器,以执行处理程序。再者,辅助处理器可以被设计以及最佳化来执行特殊处理程序。对于GPU来说,GPU可以被最佳化以执行三维图形计算,所以GPU可以应用于复杂的图形计算上。然而传统计算机系统和辅助处理器只能胜任执行单一复杂图形的应用,当执行多个复杂图形的应用时,传统计算机系统和辅助处理器可能会遭遇到一些问题。
对于一般辅助处理器而言,排序本身工作流程并未使用最有效率的方法。在一些操作系统中,GPU可以多路切换,其方法是将待处理的工作依序送至GPU,GPU会依序执行所接收到的工作。然而,这方法有一个问题就是无法妥善处理使用同一资源的多个应用程序的优先顺序。在一非限定的例子中,当第一应用程序正在使用GPU辅助处理器时必须交出控制权给另一应用程序以完成他们的共同处理目标。假如当第一应用程序完成相关计算程序,但如果第一应用程序不交出控制权给另一个等待的应用程序,GPU会被第一应用程序给占住,而等待的应用程序则会遇到无法使用GPU的问题。如之前所述,当只有使用单一复杂图形应用程序时,上述问题并不会太严重,然而,占住GPU或其他共同处理器资源的问题,在多个应用程序同时都想使用GPU时,这个问题就会被突显出来。
关于分配处理不同应用程序的构想,可以通过使用中断CPU的方式,也就是上下文内容从一任务跳到另一任务来完成。更具体来说,利用较新型的GPU以执行上下文内容的存储/回存的构想,利用存储相关寄存器和程序计数器数据,以继续执行之前被中断的处理程序。然而关于CPU如何分配处理程序的问题已经被探讨,但是关于辅助处理器如何分配处理程序之前并无完整探讨。
关于上述分配处理程序的问题,至少有一理由认为辅助微处理器(例如GPU)可使CPU避免执行复杂计算和耗时的程序,使CPU可以执行其他任务。图形处理往往包括复杂的计算,因此会使用大量处理程序的资源,当复杂图形应用程序增加时,GPU会被设计成更大更复杂,以应付复杂计算。
关于如何精确中断CPU,具有并行处理功能单元以及排序执行功能单元的巨大复杂结构EPIC型(Explicitly Parallel Instruction Computing)CPU会有一些问题,因此CPU结构中的寄存器必须被重新设计,使得数十个指令可同时执行在处理流水线(pipeline)的不同阶段。为了使精确中断成为可能,CPU必须具有一重新排序缓冲器和一额外执行指令(instruction commit(retirement))在处理流水线中。
目前GPU是使用不同型指令(可称为巨集指令),执行各GPU指令需要数百到数千周期,目前利用GPU流水线来处理图形的比重已经超过CPU来处理图形的比重,因此GPU往往会遇到因为不具有足够处理结构来处理大量数据于存储和回存,所以目前大部分GPU朝着在任何时间点上皆可处理大量数据的方向在设计,使得GPU在分配程序上变的复杂。更具体来说,GPU会采用具有长序列数据的外来指令,例如:图形图元(draw primitive),因而产生关于如何完成之前被中断事件的问题。
因此,需要一新而有效的方法来克服上述缺点。
发明内容
有鉴于此,本发明提供一种图形处理器GPU可被中断,因而可以在同一时间处理多个图形程序,图形处理器是一硬件设备可通过中断程序以提供多个程序之间的切换。
当图形处理器接收第一上下文时,图形处理器接收来自中央处理器的一中断指令,另外,一中断事件可以在图形处理器的内部电路产生,犹如分页出错(Page fault)在图形处理器的虚拟存储器中。图形处理器存储第一上下文至存储器中,并存储第一上下文的中断点位置,之后,图形处理器从存储器载入第二上下文至图形处理器,并执行第二上下文,在第二上下文完成后,假如中断指令指向回存第一上下文,图形处理器从存储器中提取第一上下文并回存至之前中断点,之后,图形处理器处理第一上下文的剩余部分从中断点到第一上下文的最后部分。
图形处理器包括一个或多个处理器以接收中断指令或内部中断事件,处理流水线(processing pipeline)完成一预先决定数量的第一上下文,并丢弃一些数据和终止进一步处理第一上下文,处理流水线包括一些元件以沟通第一上下文的状态,当中断发生至一个或多个处理器时,并存储目前状态以供未来使用,之后一个或多个处理器从存储器中提取所存储的状态,并传回至处理流水线的之前中断点,利用这方法,图形处理器可切换在多个上下文之间,是图形处理器可以被多个程序同时使用。
本发明提供一种存储和回存一状态上下文在一图形处理单元的方法,包括:当一第一状态上下文被图形处理单元执行时,接收一中断指令和事件的一者;存储对应于接收到的中断指令的第一状态上下文在包括第一状态上下文的一精确处理位置的一存储器中,以及;从一预先决定逻辑位置载入一第二状态上下文以提供图形处理单元处理,其中图形处理单元执行一个或多个与第二状态上下文有关的命令。
本发明提供一种可中断图形处理单元,当接收到一中断指令时,存储一第一上下文,并依序执行一第二上下文,以及回存第一上下文以供执行,包括:一指令处理器,用以传送关于各上下文的信息至多个结构处理单元,指令处理器具有一第一语法分析器以处理关于各上下文的一环缓冲区的指令,以及多个数据线,耦接于少于结构处理单元的总数量的多个结构处理单元和指令处理器的一第二语法分析器之间,当一中断指令被指令处理器接收时,其中关于第一上下文的寄存数据通过多个数据途径传送至第二语法分析器,并且存储至一存储器中。
本发明提供一种可中断图形处理单元,用以执行多个执行程序,包括:一串流处理器,具有一第一语法分析器和第二语法分析器以及;多个处理区块,连续耦接在一起,一第一处理区块接收来自第一语法分析器的指令和状态数据,第二语法分析器耦接少于所有处理区块的总数量的处理区块,其中第一语法分析器辨认在一数据结构串中的一回存指令,以致于关于一存储上下文的状态数据从存储器中被提取,并通过第一语法分析器传送至一个或多个处理区块以执行关于存储上下文的指令和数据。
然而,本发明实施例的其他系统、方法、特征以及一些发明的优点可以通过以下实施例的说明和附图更加了解。
附图说明
图1表示一计算装置,其中上下文切换在GPU中。
图2表示GPU切换上下文的切换程序。
图3表示用于图2的一上下文存储数据结构。
图4表示第一次存储/回存前的环缓冲区的初始结构。
图5表示当存储/恢复上下文之后的环缓冲区。
图6表示图4和图5环缓冲区结构被GPU 84执行的示意图。
图7表示GPU的部分结构图,可包括存储和恢复状态,如图6所述。
图8表示图7的3D流水线结构区块176的细部图,并显示存储部分中断上下文,以及继续处理另一部份中断上下文。
图9表示流程图,包括第7和图8的存储状态和写入状态命令至CSP 190的流程。
图10表示3D流水线结构区块176(图7)和更详细流水线图(图8)。
图11表示图10的3D流水线176执行存储和恢复状态程序的流程图。
图12表示图7的CSP可执行多个上下文的运转流程图。
图13表示CSP处理一目前运行表和环缓冲器的流程图。
图14表示图7的CSP运作的流程图,当CSP执行一环缓冲区结构和在一循环中寻找一环缓冲区的终结指令。
图15表示图12-14的数据结构。
图16表示当回存一上下文时,CSP执行程序的流程图。
图17表示图10的流水线的第一上下文的中断和下一上下文的初始流程图。
图18表示图10的三角建立单元输入解码器接收到一中断终结信号的运作流程图。
图19表示在3D流水线176中转储/重置/询问状态机制的执行流程图。
图20表示当接收到接线信号和之后中断终结代符,图10的属性建立单元执行程序的流程图。
图21表示图10的范围产生单元执行程序的流程图。
图22表示图10的瓦片产生器226接收到来自CSP的中断指令以执行程序的流程图。
图23表示图10的Z单元位阶一区块在接收来自瓦片产生单元226的瓦片产生中断代符的流程图。
主要元件符号说明
10~计算系统
12~计算机
16~处理单元
18~系统存储器
21~系统总线
24~只读存储器
26~动态存取存储器
27~基本输入/输出系统
29~操作系统
31~应用程序
33~其他程序模块
35~程序数据
40~非易失性存储器接口
41、81~硬盘
44~操作系统
45~应用程序
46~其他程序模块
47~程序数据
50~可移动存储器接口
51~软磁盘驱动器
52~可移动的非易失性磁盘
55~光盘驱动器
56~非易失性光盘
60~使用者输入介面
61~鼠标
62~键盘
70~网络介面
71~局域网
72~调制解调器
73~广域网络
80~远端计算机
82~图形介面
85~远端应用程序
84~图形处理单元
86~显示存储器
90~显示接口
91~显示器
95~其他外围接口
96~打印机
97~扬声器
111~上下文存储数据结构
114~直接存储器存取字偏移指针
116~单元状态
118~图元标识符
120~实体标识符
122~瓦片标识符
125~环缓冲区
127~首部指针
129~尾部指针
131、135~DMA指令
133、137~DMA指针
141~跳跃栏
142~空白栏
147、148~DMA缓冲区
152~恢复指令
154~上下文存储地址
162~环缓冲区
164~前端语法分析器
166~环缓冲区首部指针
168~环缓冲区尾部指针
170~跳跃或恢复指针
172~剩余部分上下文
175~前次操作状态上下文存储数据结构
176、176a、176b、176c、176d~3D流水线
178~后端语法分析器
181~目前操作状态上下文存储数据结构
190~指令串流处理器CSP
192~DMA区块
194~状态先进先出存储器(128*512)
195~3D流水线结构区块176的前端部分
196~3D流水线结构区块176的后端部分
197、198、199~程序
205~3D流水线结构区块176的细部图
206~瓦片首部指针
207、209~数据途径
211~CSP先进先出存储器
212~执行单元池前端模块
214~三角建立单元
215~TSU_FIFO存储器
218~属性建立单元
219~ASU/ZLI FIFO存储器
220~ASU FIFO存储器
222~范围产生单元
223~AFIFO存储器
226~瓦片产生器
227~TG FIFO存储器
230~Z单元位阶一区块
231~ZFIFO存储器
232~Z单元位阶一区块FIFO存储器
234~Z单元位阶二区块
263~奇运行表
264~偶运行表
265~存储器的环缓冲区1的数据结构
266、271~瓦片首部指针
268~环缓冲区尾部指针
290~DMA指令指针
291~CSP功能
292~DMA缓冲结构
293~DMA位移
295~多个实体
296~图元结构
298~三角结构
309~实体标识符
311~图元标识符
313~镶嵌三角素标识符
317~瓦片标识符
331~接线中断线
347~EUP FIFO存储器
具体实施方式
本发明提供一先进排序以便虚拟一GPU,因此使不同程序寻找GPU可用的时段来执行,并使操作系统可以有限度控制上述排序,当数个应用程序共用一GPU时,操作系统可以被设定依据不同的标准来排序各应用程序,例如:当一程序的时间周期终止时,GPU可在下一时间周期处理另一程序或甚至再重新执行同一程序。
一程序可包括一些上下文内容或运算。如之前所述,一上下文可以在GPU的所有状态上执行,上述状态包括状态寄存器、快速缓冲寄存区和存储器的目录内容,所有内部先入先出缓冲器、内部寄存器等等…,从一上下文切换至另一上下文,也可能是GPU在执行不同程序。
当一上下文切换时,存储所有GPU的状态可能是不切实际,因为切换所需一至三毫秒,在这段期间内并不是所有状态都需要。因此GPU可只存储(wrap up)部分程序,以减少存储状态的量。
GPU可具有多层流水线,因此可以在任何时间在不同位置取得三角素(triangles)和像素(pixels),另外GPU可经由不同层流水线以读取、修正和/或写入数据至存储器中。在一非限定例子中,GPU可具有Z层以读取、比较和有条件更新数据。另外,GPU的写回单元可以设计为图形元件的目的读取/修正/写入元件,因此存储器可以是被追踪状态的一部份。假如上下文被停止并重新开始,GPU不应再一次读取/修正/写入同一像素在同一存储器中,再一次读取/修正/写入会造成不同结果,因此GPU必须不能追踪所有在上下文切换之前写入存储器的数据(犹如存储状态的一部分),以避免上述情况发生。
图1表示一计算装置,其中上下文切换在一GPU中,图1和以下叙述将提供一计算系统和外部连接环境的概述。然而,无论是手持、可携式、其他计算装置和所有种类计算机也都可以使用本发明所公开的方法。因此本领域技术人员皆了解,本发明并不限定只能使用于本发明所公开的一般计算机,另外本发明也可以执行在其他应用上。例如:本发明所公开可以存储数据、传送数据至另一计算机以及接收来自另一计算机的数据的系统。
本发明可应用于一操作系统执行程序,以供装置或物件的服务的开发者使用,本发明也包括与此讨论的相关应用软件。软件可以是一般计算机可执行指令的上下文,例如:被一个或是多个计算机执行的程序模块,上述计算机可以是工作站、服务器或其他装置。程序模块可包括计算机程序、程序、物件、元件、数据结构和类似程序执行一特定任务或特定抽象数据类型,此为本领域技术人员皆了解。程序模块的功能可结合或分解成不同的组态。
其他广为人知的计算机系统、计算环境(中央处理机模式和系统程序)和/或计算机装置,包括个人计算机(Personal Computer,PC)、自动柜员机(Automated Teller Machine,ATM)、服务计算机、手持装置计算机、笔记型计算机、多处理器系统、微处理器系统、可程序客制化电子设备、上网型个人计算机、各种设备、发光系统,控制环境装置、微计算机、大型计算机以及类似设备。本发明可应用于通过远端处理装置经由通信网络/总线或其他数据传输接口的计算应用以及分配计算应用上,在分散式计算环境中,程序模块可同时在本地计算机和远端计算机的存储介面里,此存储介面包括存储器装置,并且客户端和服务端可以互换。
图1的计算系统10包括一计算机12,计算机12包括一处理单元16、一系统存储器18和一系统总线21,系统总线21耦接许多系统装置,包括耦接系统存储器18至处理单元16,系统总线21可以是任何类型的总线,如本领域技术人员熟悉的存储器总线或存储器控制器、周边总线以及本地总线等等的不同总线结构。例如:外围部件连接接口(Peripheral ComponentInterconnect,PCI)、加速图形端口(Accelerated Graphics Port,AGP)和/或外围部件连接快速接口PCI Express。
计算机12可包括不同的计算机可读取媒体,计算机可读取媒体可以是通过计算机12存取的易失性和非易失性存储器,可移动式和不可移动式存储器,计算机可读取媒体可包括计算机存储媒体和通信媒体。计算机存储媒体可包括易失性和非易失性存储器、可移动式和不可移动式存储器,采用任何方法和技术以存储,例如:本领域技术人员熟悉的计算机可读取媒体、数据结构、程序模块或其他数据。计算机存储媒体包括动态存取存储器RAM、只读存储器ROM、电子抹除式可编程只读存储器EEPROM、闪速存储器Flash或其他存储器、只读光盘CDROM、数字音像光盘DVD或其他光学存储盘、卡式磁带、磁带、磁盘或其他磁性存储装置、或其他媒体,以用来存储数据并提供给计算机12存取使用。
系统存储器18可包括计算机存储媒体,计算机存储媒体可以是易失/非易失存储器,例如:只读存储器(Read Only Memory,ROM)24和动态存取存储器(Random Access Memory,RAM)26。一基本输入/输出系统(BasicInput/Output System,BIOS)27包含基本程序可以传送存储在只读存储器24的数据在计算机系统12的各元件间,例如:在计算机启动时,动态存取存储器26则存储可以被处理单元16存取和处理的数据和/或程序模块。操作系统29、应用程序31、其他程序模块33和程序数据35也可从动态存取存储器26中取得。
计算机12也可包括其他可移动/不可移动的易失和非易失计算机存储媒介,一硬盘41可读取或写入不可移动非易失性磁性存储媒体,一软磁盘驱动器51可读取或写入可移动的非易失性磁盘52,一光盘驱动器55可读取或写入可移动的非易失性光盘56,例如:CDROM或其他光学媒体,另外可以用在系统10的可移动/不可移动的易失和非易失计算机存储媒体包括磁带、闪速存储器、数字音像光盘、数字音像带、固态动态存取存储器、固态只读存储器以及其他媒体,但不限制以上所列的存储媒体。
硬盘41一般经由非易失性存储器接口40连接至系统总线21,同样,软磁盘驱动器51和光盘驱动器55也通过可移动存储器接口50连接至系统总线21,图1所显示和以上所述存储媒体和装置可存储计算机可读取媒体、数据结构、程序模块和其他数据。硬盘41存储操作系统44、应用程序45、其他程序模块46和程序数据47。上述元件有可能相同或来自于不同的操作系统29、应用程序31、其他程序模块33和/或程序数据35。图1也本领域技术人员所熟知的显示广域网络(wide area network,WAN)73元件(有可能包括其他网络/总线)。
在图1中,远端计算机80可通过局域网(local area network,LAN)71和网络介面70耦接计算机12,同样也可通过调制解调器72,经由使用者输入介面60,和WAN耦接远端计算机80。
如之前所述当GPU 84在处理另一上下文时,可以切换程序或上下文,在中断那一刻,GPU 84存储一中断上下文并开始另一上下文(此一上下文也有可能是上一次被中断而存储的上下文)。
关于存储和恢复状态上下文的状态,图2表示GPU 84切换上下文的切换程序。在阶段101,GPU 84执行一目前GPU状态上下文,然而在第一步骤(interrupt)1,处理单元16发初一中断指令或事件,GPU 84于是开始存储GPU状态上下文,如阶段103所示,(关于如何实行中断指令和事件,之后会详细解释),之后GPU状态上下文存储(save)2,如步骤2,当GPU 84切换GPU状态上下文时,如阶段105,GPU 84执行第3步骤(new context)载入一新GPU状态上下文,如阶段107,之后GPU 84执行第4步骤回至阶段101,以执行新的GPU状态上下文。
当GPU 84完成新载入的GPU状态上下文后,执行第5步骤(END OFCONTEXT),GPU 84跳回阶段105,切换GPU状态上下文至上一个上下文,如第6步骤(PREVIOUSLY EXECUTED CONTEXT),于是GPU 84跳到阶段109并恢复之前在步骤2所存储的GPU状态上下文,因此GPU 84回到阶段101(步骤7)执行所恢复的GPU状态上下文。
根据图2,配置GPU 84依序执行多个属于同一上下文(或称为环缓冲区Ring Buffer)的GPU程序(指令),其中环缓冲区包括处理器功能和命令直接存储器存取缓冲区指针(Command DMA buffer pointer)在存储器中。如之前所述,当GPU 84接收到中断命令时,切换一上下文至另一上下文,并在环缓冲区的末端(分别如步骤1至步骤5),当中断命令下达时,GPU 84存储状态上下文,并在存储完后立刻继续执行下一上下文。
图3表示用于图2的一上下文存储数据结构111,这些在上下文存储数据结构111的结构单元状态可定义在中断时的单元状态。上下文存储数据结构111包括数种栏,包括一直接存储器存取字偏移指针(DMA word offsetpointer)114、原始标识符(Primitive ID)118、实体标识符(Instance ID)120和一中断DRAW命令的瓦片标识符122。上下文存储数据结构111也可包括指令串流处理器(Command of a stream processor,CSP)、执行单元EU(Execution Unit)、瓦片阴影单元(Tile Shader Unit,TSU)和其他处理程序单元状态于116中,当中断时,这些存储在上下文存储数据结构111的结构单元状态可定义单元的状态。假如GPU 84将一些信息保存为准备存储的格式(ready-to-Save form)并稍后在重新启动上下文之前恢复所有状态,GPU 84可视为可完全中断。
以下为在上下文存储数据结构111的单元表:
typedef struct context_save_area
{
DMA_DW_Offset
CSP_Registers CSP[551];Command Stream Processor Registers
C2D_Registers C2D[13];Block1 registers
MXU_Registers MXU[19]:Block2 registers
TSU_Registers TSU[163]:Block3 registers
……………………………………
SG_TG_Registers SG_TG[3];
ZL1_Registers ZL1[17];
ZL2_registers ZL1[21];
Primitive_ID Primitive_ID;
Instance_ID Instance_ID;
Tile_ID Tile_ID;
}context_save_area
图4表示第一次存储/回存(和图2上下文切换程序有关)前的环缓冲区125的初始结构,一环缓冲区,例如:环缓冲区125可包括一串指令和关于上下文执行的存储器指针,环缓冲区125包含一首部指针(headpointer)127和一尾部指针(tail pointer)129,首部指针127包含有关处理指令的逻辑位置和环缓冲区125的指针,尾部指针129存储数据是有关环缓冲区125的逻辑尾部端位置,当更多指令加入上下文时,尾部指针129在上下文执行(图2的阶段101)时会更新。
环缓冲区125也包含DMA存储器指令131和DMA指针133(指向DMA缓冲区147,DMA缓冲区147包含指令和数据是有关于环缓冲区125的上下文)。另外环缓冲区125可包含DMA指令,例如:DMA指令135,和DMA指针,例如:指针137,指针137指向DMA缓冲区148,DMA缓冲区148包含指令和数据,图4的环缓冲区125也包括跳跃栏(skip 1 DWORD)141和空白栏142的两位置保留栏,在一存储/恢复之后(稍后讨论),跳跃栏141和空白栏142分别存储上下文存储指令和指针地址。
当GPU 84开始执行环缓冲区125时,GPU 84接收首部指针127和尾部指针129,并且检查一存储上下文。跳跃栏(位置保留栏)141可使GPU 84跳过或是忽略空白栏142而跳到下一DMA指令栏131,此时,环缓冲区125不会被中断,GPU 84另外继续执行图4中环缓冲区125的指令以及执行DMA缓冲区147和148的内容(例如图形指令draw command、图元primitives、实体instances和瓦片tiles)。
图5为当存储/恢复上下文之后(如图2所示)的环缓冲区150,图4环缓冲区125的位置保留栏141和142被恢复指令(restore command)152和上下文存储地址(context save address)154所取代,上下文存储地址154指向状态上下文存储缓冲区111,如图3所示。
当图5GPU 84处理环缓冲区150时,识别完恢复指令152,GPU 84通过上下文存储地址154即得知应提取状态上下文存储缓冲区111的数据,从状态上下文存储缓冲区111取得的数据也可提供DMA缓冲区147的DMA移位146数据,因此可以在正确中断点开始处理。
图6表示环缓冲区结构162被GPU 84执行的示意图160,稍后会详加叙述,环缓冲区162(可能类似图4的环缓冲区125或图5的环缓冲区150),包括一环缓冲区首部指针(ring buffer head)166和环缓冲区尾部指针(ringbuffer tail)168,一跳跃或恢复指针(skip or restore)170可在环缓冲区尾部指针168之后(类似图4的跳跃栏141和图5的识别完恢复指令152),一剩余部分上下文(rest of context in ring buffer)172也在环缓冲区162里,剩余部分上下文172也包括一个或多个DMA指令和指针,如之前所述。
GPU 84也包括一指令串流处理器(Command Stream Processor,CSP)190,如图7所示。CSP 190也包括和3D流水线(3D pipeline)176连接的一前端语法分析器(Front-end parser)164和一后端语法分析器(Back-endparser)178。
当接收到环缓冲区首部指针166和环缓冲区尾部指针168时,前端语法分析器164开始分析环缓冲区162,之后,前端语法分析器164根据指令指针170是否为一跳跃或恢复指令来检查一存储上下文,假如指令170是一跳跃指令,这表示环缓冲区162之前不被中断过,因此CSP 190执行剩余部分上下文172(可包括一个或多个DMA指令和指针),假如前端语法分析器164辨识出指令170为一恢复指令(如图5的恢复指令152),即执行恢复指令Restore CMD,而前次操作状态上下文存储数据结构(Previous run statecontext save data structure)175被提取(如图6所示)且恢复Restorestates至前端语法分析器164中,之后这恢复上下文被3D流水线176处理并传送至CSP后端语法分析器178,其操作如同目前操作状态上下文存储数据结构(current run state context save data structure)181。
图7表示GPU 84的部分结构图,可包括存储和恢复状态(如图6所述),GPU 84可包括CSP 190,CSP 190包括一前端语法分析器164和一后端语法分析器178(如之前所述),这些装置通过3D流水线176来协调指令的处理,一DMA区块192可存取存储器86,以提取前端语法分析器的状态和指令。CSP190包括一存储器194(一128*512状态先进先出存储器)以提取从后端语法分析器178的状态和指令。
图6的3D流水线176可还包括3D流水线结构区块(3D pipeline archblock)176a-176d,如图7所显示,3D流水线结构区块176可以是瓦片阴影单元、阴影产生器单元和瓦片产生器等等…,本领域技术人员皆熟悉此技术,如图10所示。
为了存储所有状态,当接收到一中断指令时,各3D流水线结构区块176可以传送本身状态指令State commands的复制本至CSP 190,当接收各结构区块176的状态指令时,CSP 190可写信息至一存储器(128*512状态先进先出存储器)194,之后存入存储器86中(如之前所述)。在一非限定的例子中,3D流水线结构区块(176b和176d)通过数据途径(207和209)连至CSP 190的后端语法分析器178。尽管以下会有更细节讨论,并不是每一个3D流水线结构区块176具有一数据途径至后端语法分析器178,然而数据途径(207和209)可以存储GPU 84正在处理中的数据,以致于一上下文可以被中断和再开始。
数据途径(207和209)介于3D流水线结构区块(176b和176d)中,另一种说法,就是各3D流水线结构区块并不具有一专用数据途径至后端语法分析器178,因此复制各3D流水线结构区块176的状态至一状态先进先出存储器194的数据途径可以是专用的或是共用的,因为状态改变不常发生,所以3D流水线结构区块176共用数据途径(207和209)可以减少3D流水线结构区块176和CSP后端语法分析器178之间的数据途径数,换句话说,减少数据途径,可以供晶片其他模块和/或结构使用。
图8表示图7的3D流水线结构区块176的细部图205,和中断一上下文操作以致于保留一瓦片首部指针206、DMA移位293(参见图15)、实体标识符309(参见图15)和图元标识符311(参见图15)。一3D流水线结构区块176的前端部分195包括三角建立单元214和属性建立单元218,根据程序(在新上下文开始之前,丢弃旧上下文数据)197丢弃一中断上下文的数据,因此图形指令(Draw command)、顶点(Vertices)、状态指令(State command)和图元指令(primitive assembled)等等…被丢弃于到达瓦片产生器226之前(可参考图17的步骤334)。
瓦片产生器226可存储瓦片标识符(tile ID)在中断那一刻,其他如目前首部指针(current head pointer)206、DMA位移293、实体标识符(instanceID)309和图元标识符311也会被存储,这个流程位在步骤(准确GPU中断以协调上下文的存储)198,稍后也会有更详细说明。
在图8的步骤(旧上下文在新上下文开始之前被输出)199中,3D流水线结构区块176继续处理旧上下文数据,因为部分旧上下文已经由3D流水线结构区块176被拿出来处理,因此至少一部份旧上下文在收到中断程序时已经完成。
图9表示流程图200,流程图200包括图7和8的存储状态流程和写入状态命令至CSP 190流程,在一般程序中,3D流水线结构区块176操作在步骤201,根据寄存区ID引导3D流水线结构区块176写入状态至寄存器中,在无中断模式下(NON-INT MODE),各3D流水线结构区块176操作从步骤201至步骤203,去检查下一登录程序,当接收到一区块状态登录时,假如无接收到中断指令,3D流水线结构区块176可再执行步骤201。
然而,假如CSP 190接收到一指令指示切换至中断模式,3D流水线结构区块176移至步骤204,以便存储被GPU 84目前执行的状态上下文(请参考图2的步骤103),之后3D流水线结构区块176跳至步骤203以检查下一登录程序并继续操作,如之前所述。
当事件发生时,3D流水线结构区块176建立一上下文存储数据结构111(图3)通过经由数据途径(207和209)传送状态数据至CSP 190,区块176a和区块176c也可分别传送数据至区块176b和区块176d,并且传送至区块176b和区块176d的数据可经由数据途径(207和209)传送至后端语法分析器178。
图10表示3D流水线结构区块176(图7)和更详细流水线图(图8),图10为本领域技术人员熟悉的图,并且不限定于此一图形流水线,这些区块在不离此发明概念下重新排列,也可达成类似结果,如之前所述,CSP 190可与3D流水线结构区块176耦接与沟通,其中包括三角建立单元(Triangle setupunit,TSU)214以接收从指令串流处理器的先进先出存储器(CSP FIFO)211的指令,三角建立单元214通过TSU FIFO存储器215传送处理过的数据至属性建立单元(Attribute setup unit,ASU)218,ASU 218传送处理过的数据至ASU/ZL1 FIFO 219、范围产生单元(Span generator unit,SG)222和属性先进先出存储器(Attribute FIFO,AFIFO)223。
SG 222传送处理过的数据至瓦片产生单元(Tile generator unit,TG)226。Z单元位阶一区块(ZL1)230接收来自ASU/ZL1 FIFO存储器219、AFIFO223和TG FIFO 227的数据,其中TG 226耦接TG FIFO 227,ZL1 230将接收到的处理数据通过ZFIFO 231和ZL1 FIFO 232传送至Z单元位阶二区块(ZL2)234。
本领域技术人员皆熟悉图10的3D流水线结构区块176(之后称为3D流水线)只是一图形流水线的一部分,另外,写回单元、像素包区块和其他区块可以是3D流水线176中其他部分,为了简单起见,所以不在这里赘述。
上述上下文存储和恢复状态程序可以被图10的3D流水线176执行,图11表示流程图240,流程图240显示图10的3D流水线176执行存储和恢复状态程序的流程。
关于上下文的存储程序,当GPU 84处理一上下文时可能会接收到来自CPU(图1的处理单元)的一中断指令(如步骤242),关于步骤244,3D流水线176等待瓦片产生器226或一写回单元(图10中并未显示)的清除指令被执行,CSP 190可辨识瓦片产生器226是否清除,因为当首部指针改变时,CSP 190每次会传送一符记通过流水线,当瓦片产生器226接收到符记以及处理符记,并且会告知CSP 190收到。
当CSP 190初始一图形指令或开始状态时,CSP 190更会传送DMA DWORDOFFSET至流水线176,瓦片产生器226也传送DMA DWORD OFFSET至CSP 190,当状态传送至瓦片产生器(如图7所示)和数据途径(207和209)时,瓦片产生器226也会传送状态回去。
图11的区块247表示,当接收到来自CPU 16的中断指令时(步骤242),状态和指针会被存储。当瓦片产生器226接收到中断指令时,瓦片产生器226会传送ID(设所有ID为0)至CSP 190(假如瓦片产生器226在处理状态时遇到中断),另外,在步骤247时,瓦片产生器226可存储指针和状态,包括瓦片首部指针、DMA移位(DMA OFFSET)、实体标识符(instance ID)、图元标识符(primitive ID)、瓦片标识符(tile ID)和所有寄存状态,因此被存储的上下文可以快速回存,数据可包括以及存储成图3的上下文存储数据结构111。
之后GPU 84可以切换至另一运行表(run list)(步骤249),这些程序可以被切换并可包括一个或多个被3D流水线176执行的上下文(如图12所示)。
关于流水线176的回存一状态的流程程序,当目前执行程序已经完成或当一指令已接收并执行时,GPU 84可切换回之前但只部分执行过的程序(如步骤251),之后GPU 84可回存之前所有存储状态(在步骤247中所存储的状态)(步骤253),CSP 190(步骤256)略过图形指令直到移位之前所存储DMA移位量后遇到的所存储的图形指令(稍后有更详细的说明),之后瓦片产生器226(步骤258)略过图形指令直到接收到所有在步骤247存储的实体标识符(instance ID)、图元标识符(Primitive ID)和瓦片标识符(tile ID),之后流水线执行任一未完成的程序(步骤260)(稍后有更详细的说明)。
关于一上下文回存程序的开始,CSP 190需要处理所有元件的状态,包括目前首部指针、DMA移位量、实体标识符、图元标识符和瓦片标识符(可能在之前步骤247时存储),因此CSP 190从环缓冲区取回环缓冲区首部指针(ring buffer head pointer,经由存储程序存储,如之前所述),并且处理被首部指针指向的DMA指令,然后略过所有指令直到DMA地址等于直接存储器存取位移量(DMA OFFSET),使得CSP 190重新开始执行之前被中断地址的指令,可能是在三角形(triangle)中间,但不限定。
CSP 190可在回存状态程序时略过实体(instance)直到实体ID(instanceID)符合,也可略过图元(primitives)直到图元I D符合,实体ID和图元ID皆存储在状态先进先出寄存器194,所以CSP 190可以比较被回存至实体ID的实体,另一程序区块(为GPU84计算核心一部份)略过三角形直到关于一特别三角形的图元ID符合,例如:三角形ID可被存储至分离执行区块寄存区(并未显示),瓦片产生器226在回存程序可略过瓦片(tile)直到瓦片符合瓦片ID(在一存储程序,存储步骤247),一旦ID符合,CSP 190切换3D流水线从一略过状态至一正常状态。
CSP 190产生一个或多个符记和3D流水线176沟通,符记包括寄存器地址,并且和一位移量一起代表上一中断的处理程序点,为了弹性改变状态上下文存储结构,CSP 190操作的结构包括密集包裹所有区块状态至存储器86,因此CSP 190可执行一弹性包裹寄存移位(Flexible pack register offset),当接收到一中断上下文(Context)时,寄存器移位会告诉各3D流水线176一位置点以恢复或回存操作,通过增加移位量至中断上下文的寄存地址,中断上下文地址可以被快速找得。关于图10的各3D流水线结构区块176,各3D流水线结构区块176关连的区块ID和相关位移量可用于恢复时计算其地址,以这方法,GPU 84可通过状态上下文存储和回存,以执行一中断在应用程序中,因此3D流水线结构区块176可以同时使用一个或多个应用程序分享其功能和运作。
关于图11上下文存储程序240,可提供弹性变化于状态上下文存储结构中,因此一程序包括密集包所有区段状态数据在存储器86中,在GPU次设计流程中,3D流水线结构区176的各区块可经常改变寄存器规格。在一非限定的例子中,假如系统超过20个处理区块(176a、176b、…176n,n大于20),会造成花费大量时间在改变寄存器数据包硬件。
因此,使用一可调包寄存器位移量可以解决上述问题,以下表格提供一组寄存器,使状态数据存储在一上下文存储结构中,关于各状态数据的区块,提供各自位移量,包括一位移寄存内容和一寄存ID的组合。CSP 190可发出一组专门针对流水线176的区块的寄存指令,在一非限定的例子中,移位量为128位,以下为一非限定例子的寄存器组的表格:
移位寄存0    区块ID 1     区块ID 0
移位寄存1    区块ID 3     区块ID 2
移位寄存2    区块ID 5     区块ID 4
移位寄存3    区块ID 7     区块ID 6
移位寄存4    区块ID 9     区块ID 8
移位寄存5    区块ID 11    区块ID 10
移位寄存6    区块ID 13    区块ID 12
移位寄存7    区块ID 15    区块ID 14
移位寄存8    区块ID 17    区块ID 16
移位寄存9    区块ID 19    区块ID 18
移位寄存10   区块ID 21    区块ID 20
以下为一长度寄存器的表格,叙述关于各区块的状态数据长度,并对于各区块的运算码双字(opcode double word)定义数据的上限,长度寄存器可被CSP 190拿来作内部测试,不像上述叙述的移位寄存,长度寄存器可格式为长度32位,以下表格(并不限定)为长度寄存表格:
长度寄存0    区块ID 3     区块ID 2     区块ID 1     区块ID 0
长度寄存1    区块ID 7     区块ID 6     区块ID 5     区块ID 4
长度寄存2    区块ID 11    区块ID 10    区块ID 9     区块ID 8
长度寄存3    区块ID 15    区块ID 14    区块ID 13    区块ID 12
长度寄存4    区块ID 19    区块ID 18    区块ID 17    区块ID 16
长度寄存5                              空           区块ID 20
根据上述信息,CSP 190可决定各区块寄存器存储器的长度和位移量,也就是关于存储器的地址位置(block_id)和寄存器(n),利用基本地址加上移位寄存量(block_id(n))<<4(12位为一寄存区),利用这方法,状态上下文存储结构可以具有弹性,并可以提供GPU设计上的弹性。
图12表示图7的CSP 190可执行多个上下文的运转流程图,各上下文具有自己环缓冲区,例如:环缓冲区125、150或162。如图12所示,CSP 190可切换在两运行表(run list)之间,包括奇运行表(Run list odd)和偶运行表(Run list even)264,本发明并不限定于此例,各运行表包括,(context0)上下文0、(context 1)上下文1、(context 2)上下文2和(context 3)上下文3的四个分别的上下文,在各运行表的上下文0-3指向各环缓冲区,并被CSP 190执行,如之前所述。
在图12中,环缓冲区1可以是偶运行表264的上下文1的参考,环缓冲区1包括各种GPU指令和/或DMA缓冲指针指向的DMA指令,例如上述环缓冲区125、150和162,请同时参考图12和图13,图13表示CSP 190处理一目前运行表和环缓冲器的流程图275。
GPU 84可接收运行表指令,之后如图12所示排序地址格从0到3,如同图13的步骤279,以建立一运行表,如图12所示,CSP 190开始执行偶运行表或奇运行表的上下文0。
在图13中,CSP 190取得首部和尾部指针并且检查用以跳跃或存储指令的一代符(token)(步骤282),假如CSP 190决定下一代符是一回存指令(由步骤285决定),(如图5的存储指令152),CSP 190执行回存指令并取得所有GPU状态信息(步骤288),假设步骤285决定不执行回存指令,CSP 190可取得图12的环缓冲区1,并且执行DMA指令(例如:图4的DMA指令)和相关DMA缓冲区数据(例如:图4的DMA缓冲区)。
在图12中,CSP 190和3D流水线176可存取DMA指针290,当首部指针(head pointer)读到DMA指针290时,并进而存取DMA缓冲区292,DMA缓冲区292包括图元指令0和图元指令1。当首部指针(head pointer)在环缓冲区1上从左至右移动时,首部指针在DMA指针区290之前可能会读到一跳略或回存指令,当回存指令不存在时会使CSP 190开始存取DMA缓冲区,并进而存取DMA缓冲区292和处理在缓冲区相关数据的图形。
在图13中,在取得环缓冲区数据后,CSP 190和3D流水线176开始处理目前环缓冲区(步骤289),在图12中,CSP 190开始处理偶运行表的包含缓冲区0的上下文0,假如上下文是空的(步骤294),切换至下一上下文(步骤297),CSP 190会切换从上下文0至上下文1,因此环缓冲区1会被载入并且执行,在切换至环缓冲区1时,会检测是否有来自CPU 16的中断信号(步骤299),假如没有中断信号,CSP 190会回到步骤282以执行图12的环缓冲区1,然而假如在步骤299检测到中断信号,会跳到步骤301,处理中断程序,并且回到步骤282,之后执行图11的上下文存储程序。
假如在步骤294检测上下文不是空的,CSP 190之前端语法分析器164会之后传送目前环缓冲指针、DMA移位和ID以及寄存状态至图10的TSU 214,前端语法分析器164也传送实体ID、图元ID、顶点ID(vertex ID)和索引(indices)至适当位置以执行,另外,前端语法分析器164可执行任何所需初始CSP的指令。
并继续执行图12的环缓冲区1,进入下一步流程(步骤306),其中3D流水线的逻辑区块与后端语法分析器178沟通,因此意味已经执行到环缓冲区的后端部分,最后,CSP 190执行之前处理程序的所有存储状态的后端部分指令(步骤308)。
关于图13的流程取得环缓冲区的首部和尾部指针以及处理程序会一直继续直到环缓冲区的终结端或是被中断才会停止。图14表示图7的CSP 190运作的流程图,当CSP 190执行一环缓冲区结构和寻找一环缓冲区的终结指令。关于图14的步骤310,CSP 190处于闲置状态并等待一环缓冲区数据以执行。在步骤312,相对应于图13的步骤282,CSP 190取得环缓冲区的首部和尾部指针,例如:在图12中,偶运行表264的上下文1的环缓冲区,和等待首部和尾部指针(步骤313),最后参考首部和尾部指针并作填入动作(步骤314)。关于图13的步骤285,假如遇到一回存上下文指令,会跳至图14的步骤316载入回存数据(对应于图13的步骤288),一旦完成载入回存状态,会跳至步骤318取得环缓冲区并继续运作(相对应于图13的步骤289)。
假如在步骤314并不具有一有效回存指令时,会判断头指针是否等于尾部指针,也就是上下文是否为空的,根据图13的步骤294,假如头指针不等于尾部指针,环缓冲区具有待处理的程序,因此从步骤314跳至步骤318,在步骤318,现在指针从初始位置移至尾部指针,并且计算每一次判断是否现在指针(可能是头指针)等于尾部指针,随着不断处理程序,头指针或现在指针会往尾部指针移动,最后头指针等于尾部指针,步骤318可以重复循环数次直到现在指针(CUR_PTR)变成尾部指针(TAIL_PTR)。
当现在指针或头指针等于尾部指针时,跳至步骤322,使CSP 190等待尾部指针更新,如图12所示,假如额外指令或是指针被加入至环缓冲区,尾部指针是可以被移动地,然而,假如尾部指针不被移动,程序跳到步骤324,这意味到达环缓冲区的终端,CSP 190返回闲置状态310并准备重复上述的程序。
图15表示上述第12-14图的数据结构,并可应用于图1的GPU 84以回存之前中断上下文,运行表264(出现于图12)可执行如之前所述,因此一上下文切换可从上下文0至上下文1。
在存储器的环缓冲区1的数据结构265可被存取以回存特定上下文1,类似于上述所述,环缓冲区1数据结构265包括一瓦片首部指针(tile headpointer)266,在处理上下文时,GPU 84会更新瓦片首部指针266,同样得,环缓冲区1的数据结构265也可包括一环缓冲区尾部指针(Ring buffer tailpointer)268,此环缓冲区尾部指针268也会被更新(如图12),假如在图15中,将指令和指针加入至环缓冲区1数据结构里,然后环缓冲区尾部指针也会被调整。
环缓冲数据取得顺序可限定CSP功能只能行使DMA指令指针290的执行(请参考图12所示),CSP 190取得在环缓冲区1数据结构中的瓦片首部指针,(表示于图15的环缓冲区1的数据结构),当运行表264的上下文1在之前被中断时,CSP 190载入所有跟DMA指令指针290相关的数据至CSP首部指针(CSP HEAD PTR),上述CSP首部指针指向CSP功能291,并输入至3D流水线176。
DMA指令指针290是由DMA缓冲结构292组成(并不限订于此),包含图形指令0至图形指令5,在回存上下文时,CSP 190也处理DMA移位(DMAOFFSET)293(类似之前图5所述),因而可回到之前被中断时的正确位置点,DMA移位293是一逻辑距离,上述逻辑距离在DMA缓冲结构292中,并介于DMA缓冲首部指针和目前指令指针(Current Command POINTER)之间。
在图15中的例子,CSP 190可得知DMA移位293至图形指令4的重新开始的位置,图形指令4可包括多个实体(instance),更具体来说,图形指令4还包括实体标识符(Instance ID)0-5,并且依序执行,在执行完实体5后,会跳到图形指令5,图形指令5和其他图形指令也都包括多个实体。
从运行表264重新建立上下文时,CSP 190会忽略之前执行实体直到上一次中断的实体标识符(Instance ID),在本发明实施例中(并不限定于此),实体标识符309指向多个体295的实体4,因此CSP 190会忽略所有实体0-3直到实体4,因为实体标识符309符合逻辑位置。
各实体包含一个或多个图元(primitive),如图元结构296所示依序排列,在不限制的本发明实施例中,图元0-M组成一实体(M为整数),直到图元标识符(Primitive ID)311符合之前中断位置点时,DMA缓冲结构292的中断图形指令4才会被CSP 190执行(和之前所述一样),在不限制的本发明实施例中,图元标识符311指向图元1,这意味着图元0在之前中断时已经被处理过,所以CSP 190略过图元0。
各图元0-M是由一个或多个瓦片(Tile)组成的,可以形成一三角结构298,在不限制的本发明实施例中,图元2可包含瓦片0-8以构成三角结构298,瓦片产生器TG 226会略过瓦片0-3直到瓦片标识符(Tile ID)参考的瓦片4,瓦片4也就是之前中断位置点。
使用上述方法,图15的数据结构表示至少一方法回存一图形处理至之前被中断的位置点,通过CSP 190略过图形指令、实体、图元和TG 226所略过的瓦片,直到上次上下文被中断所存储的标识符ID,并正确快速地回到上次被中断的点,以避免重复处理之前处理过的数据。
图16表示当回存一上下文时,CSP 190执行程序的流程图252,图16的流程图252包括图11的步骤253、256和258,并也着重在精确上下文回存的程序上。
在图16的步骤300中,CSP 190从环缓冲区取得回存上下文,上述环缓冲区可以是第12和图15的环缓冲区265,存取环缓冲区265的瓦片首部指针206以便得知正确上下文的从新开始地址或环缓冲区265的逻辑位置,在不限制图15的本发明实施例中,瓦片首部指针指向DMA指令指针290。
步骤304,CSP 190处理DMA指令,类似之前所述,利用DMA移位293移动至DMA缓冲结构的正确图形指令(如图15所示),一旦确定正确图形指令(如图15的图形指令4),CSP 190采取下一步骤307,配对实体标识符(InstanceID)和图元标识符(Primitive ID),配对后,CSP 190辨识到之前所中断的地址,也就是之前中断的三角形(triangle)位置。
此时CSP 190可辨识之前程序被中断的瓦片ID 317,因此瓦片产生器226(图10)可完成处理三角素区(如步骤315显示),在确认辨识DMA指令、图形指令、实体ID、图元ID和瓦片ID之后,上下文可被完全回存至3D流水线176中,犹如之前没有被中断情形。
由于之前中断而上下文被改变,在一实体中的部分三角素已经被执行,三角素标识符(triangle ID)可能被传送至TSU 214,一图形图元的各三角素各具有一独一无二的三角素标识符,当上下文被中断时,有可能其中部分三角素或是全部三角素被执行,在这个实体中,一镶嵌三角素标识符(Tessellated Triangle ID)313(可能是从别的单元产生出来)可传送至TSU214以恢复部分被执行的图元并加以处理(图16的步骤319),因而正确三角素(triangle)传送至瓦片产生器226,并可和相关瓦片标识符(tile ID)作匹配(如之前所述),无论图元已经被镶钳与否,之前中断上下文动作可以变成好像之前无中断的情形。
因此本发明主要着重在上下文的结构和切换,当接收到来自图1处理单元16的中断指令时,包括可提供精准恢复的数据结构,然而当一上下文被中断时,GPU 84或者更明确是图10的3D流水线176,应该可在一逻辑点上,终结中断程序,因此下一程序(无论是否回存)根据上述程序,可以被3D流水线176执行。
根据本发明实施例,一上下文可以被存储以及一新上下文在约一或两百万周期后开始,因为必须提供足够轮询时间(wrap-up time)给一些程序,以便减少追踪状态和减少当一存储状态被重新开始时的复杂度,因此,一逻辑位置会中断在图103D流水线176的瓦片产生器226上,然而,另一位置可能不是在瓦片产生器226上而是在ZL1单元230上,也可以应用同样的方法和标识符,并将存储的瓦片标识符在ZL1单元230上作比较。
然而,根据不限定的本发明实施例,中断点可以在瓦片产生器226上,任何被瓦片产生器226所接收的瓦片(tile),要到处理单元16告知上下文切换时,才会可被允许传送至其他流水线单元(包括ZL1单元230和随后的单元),以穿过整个3D流水线176。然而,任一还未到达瓦片产生器226的三角素(triangle)和瓦片(tile),当GPU 84接收到中断指令时,当上下文被回存时,会丢弃现有程序并重新产生回存的程序。换句话说,当上下文被回存时,在3D流水线176单元中,在瓦片产生器226之前元件,会丢弃所有现有处理程序,并重新产生回存的程序(请参考图8)。
当中断发生时(在瓦片产生器226上),除了非常长的像素着色器程序(pixel shader program),3D流水线176可以继续处理所有在瓦片产生器226之后的瓦片(tile)(因为能在一或两百周期内完成)。但如果中断在图10的三角建立单元TSU 214,3D流水线176可能不能在一至三百万毫秒内处理完数据。假如中断程序的大小比瓦片(tile)还小,并不会对流水线很快处理数据造成很大的影响。通过中断在流水线的瓦片产生器上,一部份处理程序仍然可以继续,一部份处理程序可能要被废除,并且被中断点会被存储,以供下一次重新开始时使用,根据非限定的本发明实施例,使得一些数据被语法分析以及重复,使得3D流水线176可以正确回存至上次中断点。
根据本发明不限定的实施例,无论何时DMA缓冲器(context)切换,CSP190可通过传送一代符(token)(internal fence)穿过3D流水线176,至瓦片产生器226,并回到CSP 190以得知那里指令分析以重新启动一上下文。根据本发明非限定的实施例,CSP 190知道什么时候可以安全地忽略一DMA缓冲区292。本发明非限定的实施例也提供纪录对应于瓦片产生器226上DMA缓冲区的位置,并提供新图形指令,如图12所示。因此当一上下文,例如在图12偶运行表的上下文1,被依序回存,语法分析可从被中断的图形指令开始,例如在缓冲区292的图形指令0。
图17表示325流程图,图10的CSP 190可到步骤329并中断一上下文并重新另一上下文在图10的3D流水线176中,在步骤326中,也和图2的步骤101相同,一目前上下文被处理到完,如之前所述,例如:图13的步骤294。当上下文被处理至步骤326时,会检测是否有中断事件发生(步骤327),假如没有中断事件发生,上下文会继续执行到完(步骤326)。
假如一中断事件发生并且被检测到(步骤327),CSP 190进入步骤329并电性传送一中断信号至一个或多个3D流水线176的处理区块。如之前所述,由于清除流水线上半部区块的延迟时间,可能导致不完整的上下文切换时间,所以流水线的特定上半部区块的数据可以被忽略,而流水线下半部区块则继续处理程序。步骤329提供一预先决定3D流水线176的区块数量以接收来自CSP的一中断信号。
另外产生一中断信号在步骤329上,CSP 190也会产生一中断代符(token)至3D流水线176的先进先出存储器,步骤331,上述代符(token)功能像是一栅栏在一中断上下文和下一中断上下文或回存上下文之间,例如图15的运行表264,中断代符/栅栏会传送至3D流水线176的各区块,使切换下一上下文的可以顺利完成。
如之前所述,目前DMA移位293、实体标识符309、图元标识符311和瓦片标识符317可传送至CSP上下文存储缓冲区111(图3),也可以是图7的状态先进先出存储器194,更具体来说,3D流水线176使用途径207、209等等…,以传送信息至CSP 190,如之前所述。
之后,在步骤334中,各3D流水线结构区块176,例如:一个或多个图10的区块,仍让旧上下文进入3D流水线176,直到中断代符产生(步骤331)并且到达以及确认后,旧上下文才会被中断,换句话说,当一接收到来自步骤329所产生的中断信号后,直到接收到中断代符(步骤334)才丢弃相关先进先出存储器的数据,上述中断代符通知所有之后指令属于下一状态或回存状态(步骤336)。
根据图10和图18-23,并参考3D流水线176的各元件,以下会详细说明图17的流程图。从图10开始,当GPU 84接收到来自处理单元16的中断指令以中断一已经在处理的程序时,CSP 190通过接线中断线331传送接线信号(hardwired signal)至执行单元池前端模块(Execution Unit Pool FrontModule,EUP_FRONT)212,如图10所示,接线中断线331也电连接瓦片产生器226,如图10所示,另外,接线中断线331也耦接三角建立单元TSU 214和属性建立单元ASU 218,并对应于图17的步骤329。
瓦片产生器226可利用一记数器以得知瓦片的数量,和流水线寄存器以得知上一次瓦片被丢弃的三角素数量和图元数量,并将信息通过数据途径207传送回CSP 190,并存储为一部分的中断上下文状态,此信息存储包括GPU在下一次上下文回存时的位置信息。
在接线中断线331上的接线中断信号也传送至三角建立单元TSU 214和属性建立单元ASU 218,一旦接收到接线中断信号,各三角建立单元214、属性建立单元218和瓦片产生器TG 226会立即丢弃所有在处理的数据,并进一步停止特定上下文,如图17步骤334所示,CSP 190,另外发出一中断信号在接线中断线331上,并传送一中断终结代符(INT_END Token)穿过3D流水线176以清除所有数据线上的数据流,如图17步骤331所示,上述中断终结代符(INT_END Token)从CSP 190先传送至三角建立单元214、再到属性建立单元218以及3D流水线176的其他部分。
图18表示三角建立单元输入解码器214接收到一中断终结信号的运作流程图340,CSP 190发出一中断终结代符通过接线中断线331至执行单元池前端模块EUP_FRONT 212,然而,同时CSP 190传送一中断信号终结代符穿过CSP先进先出存储器211,上述CSP先进先出存储器211耦接三角建立单元TSU 214,因此三角建立单元214进行步骤342从接线中断线331接收接线中断信号以检查CSP先进先出存储器211的输入数据类型(Entry Type)。
当接收到接线中断线331上的中断线号时(如图18的CSP_TSU_INT信号),三角建立单元214进入步骤346,三角建立单元214读取read、检查check和丢弃discard EUP FIFO存储器347的数据,EUP FIFO存储器347是将存储在EUP_FRONT执行单元池前端模块212的数据传送至三角建立单元214,三角建立单元212执行一丢弃循环DISCARD LOOP,如图18所示丢弃EUPFIFO存储器347的上下文直到中断终结代符到达,上述中断终结代符到达代表所有关于上下文的数据被存储起来。
当中断终结代符CSP_TSU_INT END TOKEN到达EUP_FIFO存储器347,三角建立单元214去读取read、检查check和丢弃discard CSP FIFO存储器211的内容,如同上述EUP_FIFO存储器347运作方式(图18的步骤348),三角建立单元214执行一丢弃循环以丢弃所有在CSP FIFO存储器211的数据直到代表所有关于上下文的数据被存储起来的中断终结代符到达,总的,本领域技术人员皆熟悉关于上下文被中断的数据如何在3D流水线176中被丢弃,三角建立单元214可回到正常运作模式(步骤343)以处理下一上下文。
关于转储/重置/询问(dump/reset/query)状态机阶段350,图19表示在3D流水线176中转储/重置/询问(dump/reset/query)状态机制(DRQ statemachine)的执行,DRQ状态机制开始于正常操作模式352,一旦指令一执行,DRQ状态机制进入步骤354,步骤354是关于CSP指令解码操作,告知DRQ状态机制(例如:TSU 214)下一个作什么,当中断终结代符被接收,例如:三角建立单元214接收到中断终结代符INT_END TOKEN(步骤356),即传送中断终结代符至3D流水线176,之后三角建立单元214回到正常操作模式352,视为新上下文。
关于图18和三角建立单元214,在中断终结代符处理完后,将注意力转移到图10属性建立单元218上。如之前所述,属性建立单元218也接收在接线中断线331上的中断线号,并通知属性建立单元218立刻丢弃所有关于目前上下文的内容。
图20表示流程图360,当接收到接线中断线331上的中断线号,属性建立单元ASU 218执行程序,属性建立单元218一旦接收到中断信号,属性建立单元218读取(read)、检查(check)和丢弃(discard)图10的TSU_FIFO存储器215的数据(步骤364),更具体来说,属性建立单元218执行一丢弃循环DISCARD LOOP,以丢弃TSU_FIFO存储器215的内容,直到三角建立单元214的中断终结代符到达。如之前所述,当属性建立单元的DRQ状态机制接收到中断终结代符INT_ENDTOKEN,执行步骤366,其中中断终结代符传送至各ASU_FIFO存储器220、ASU/ZLI FIFO存储器219和AFIFO存储器223,之后属性建立单元218回到步骤362以检查在TSU FIFO存储器215的下一指令类型(可能是和新上下文执行有关),之后回到正常程序368。
如之前所述,属性建立单元218传送中断终结代符至ASU FIFO存储器220,最后传送至范围产生单元(Span generator unit,SG)222,图21表示范围产生单元222执行程序的流程图370,是有关于处理图103D流水线176的中断终结代符,当范围产生单元222操作在正常模式372时,一旦检查到输入类型(步骤374)并且辨识出来自ASU FIFO存储器220的指令为中断终结代符时,范围产生单元222进入步骤376,在步骤376中,中断终结代符传送至瓦片产生器TG 226,之后导致范围产生单元222回到步骤374检查下一指令的类型,下一上下文指令会在终端终结代符之后,范围产生单元222回到正常模式372。
如之前所述,在处理单元16发出指令之后,瓦片产生器226接收来自CSP 190在接线中断线331上的接线中断信号,图22表示瓦片产生器226接收到来自图10的CSP 190的中断指令以执行程序的流程图380,当接线中断信号通过接线中断线331传送至瓦片产生器226时,瓦片产生器226进入步骤382以检查首部类型和检查关于来自CSP 190的中断指令。
一旦检查出接收到一中断信号CSP_TG_INT WIRE SIGNAL,瓦片产生器226进入步骤384并立刻传送一瓦片产生中断代符TG_INT TOKEN至图10的Z单元位阶一区块(ZL1)230,本领域技术人员皆熟悉传送至Z单元位阶一区块230的瓦片产生中断代符是来自于之前3D流水线176内传送的中断终结代符,瓦片产生中断代符会导致清除所有耦接瓦片产生器226的FIFO存储器和寄存存储器,但也容许存储相关上下文在处理瓦片产生中断代符之前。
在步骤386中,瓦片产生器226执行一丢弃循环DISCARD LOOP以丢弃输入数据并检查是否有中断终结代符,最后执行步骤386,中断终结代符INT_END TOKEN经由图10的3D流水线176到达瓦片产生器226,此时瓦片产生器226进入步骤388,运作方式和之前所述类似,之后瓦片产生器226检查下一指令的首部类型并可回到正常模式389(有可能是回存新上下文执行)。
在图10的3D流水线176的下一模块是Z单元位阶一区块(ZL1)230。图23表示Z单元位阶一区块230的流程图390,有关于接收来自瓦片产生单元226的瓦片产生中断代符。
在步骤392(读取和解码),Z单元位阶一区块ZL1 230读取来自瓦片产生单元226的数据并处理所接收的指令,然而,当接收来自瓦片产生器226的指令为一瓦片产生中断代符TG_INT TOKEN时,Z单元位阶一区块ZL1 230进入步骤394。
在步骤394中,Z单元位阶一区块ZL1 230切换至ASU/ZL1 FIFO存储器219,之后执行一丢弃循环DISCARD LOOP,如步骤396所示,在步骤396中,Z单元位阶一区块230检查并丢弃所有来自ASU/ZL1 FIFO存储器219的数据直到3D流水线176的中断终结代符到达。当接收到中断终结代符后,Z单元位阶一区块ZL1 230进入步骤398,切换至AFIFO存储器223,之后执行一丢弃循环401。
Z单元位阶一区块230检查并丢弃所有在AFIFO存储器230的数据直到AFIFO存储器230的中断终结代符到达(步骤401),在清除两FIFO存储器219和223后,Z单元位阶一区块230切换至TG FIFO存储器227(步骤403),并执行另一丢弃循环(步骤405),在步骤405中,Z单元位阶一区块230检查和丢弃所有来自TG FIFO的数据直到中断终结代符到达(和之前所述类似),之后,DRQ状态机制(步骤407)执行(和之前所述类似),因此Z单元位阶一区块230回到步骤392以执行中断终结代符后的下一指令,之后,Z单元位阶一区块230在正常模式下执行下一上下文(步骤409)。
如之前所述,在Z单元位阶一区块ZL1 230接收中断终结代符后,传送至ZL1 FIFO存储器232,并传送至Z单元位阶二区块ZL2 234,和之前所述不同,Z单元位阶二区块234不会丢弃所有FIFO存储器数据,反而会继续处理存储的上下文(一至两百万周期内的程序),然而来自Z单元位阶二区块234的中断终结代符代表存储上下文的终点,并且是一新和/或回存上下文的开始。
本领域技术人员皆了解中断终结代符更传送至3D流水线176的其他部分,如之前所述,中断终结代符可传送至另一个3D流水线176元件以清除所有相关数据线。
因此,如之前所述,图形处理器的图形流水线可改变状态或处理程序,以增加处理图形程序的效率,并且当一处理程序必须等待另一数据的处理时间,图形流水线可以中断并切换至另一上下文,以避免流水线闲置,因此通过解决图形流水线运作的瓶颈,图形流水线可以更有效率运作,另外本发明非限定的实施例可在不同上下文之间快速切换,以避免瓶颈情况的发生。
本发明虽以优选实施例公开如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围的情况下,可进行更动与修改,因此本发明的保护范围以所提出的权利要求所限定的范围为准。

Claims (24)

1.一种存储和回存一状态上下文在一图形处理单元的方法,包括:
当一第一状态上下文被所述图形处理单元执行时,接收一中断指令和事件的一者;
存储对应于接收到的所述中断指令的所述第一状态上下文在包括所述第一状态上下文的一精确处理位置的一存储器中,以及;
从一预先决定逻辑位置载入一第二状态上下文以提供所述图形处理单元处理,其中所述图形处理单元执行一个或多个与所述第二状态上下文有关的命令。
2.如权利要求1所述的存储和回存一状态上下文在一图形处理单元的方法,还包括:
到达所述第二状态上下文的一终端位置,所述终端位置对应于所述第二状态上下文在所述图形处理单元的一处理结果:
切换至所述第一状态上下文以供所述图形处理单元处理,所述第一状态上下文是从存储器中提取出来并回存至所述精确处理位置,所述精确处理位置是根据接收到所述中断指令或事件;以及
由一精确处理点到所述第一状态上下文的一终点来处理所述第一状态上下文的一剩余部分。
3.如权利要求2所述的存储和回存一状态上下文在一图形处理单元的方法,还包括:
插入一回存指令在一数据结构,所述数据结构被所述图形处理单元执行,使所述图形处理单元去存取一状态上下文存储缓冲区,所述状态上下文存储缓冲区具有关于所述第一状态上下文的信息,其中所述图形处理单元具有回存执行命令的能力,所述回存位置是在所述第一状态上下文接收到的所述中断指令时的一点。
4.如权利要求1所述的存储和回存一状态上下文在一图形处理单元的方法,还包括:
建立具有一移位值的一上下文存储缓冲区,所述移位值是根据处理所述第一状态上下文时,在所述图形处理单元的一处理流水线的各结构单元中接收到所述中断指令时的一逻辑位置。
5.如权利要求4所述的存储和回存一状态上下文在一图形处理单元的方法,还包括:
根据接收所述中断指令时的一处理状态,建立一图元标识符、一瓦片标识符和一实体标识符在所述上下文存储缓冲区内。
6.如权利要求1所述的存储和回存一状态上下文在一图形处理单元的方法,还包括:
在接收所述中断指令之前,处理所述第一状态上下文,所述状态上下文的一数据结构包括一首部和尾部指针和一保留位,所述保留位包括在一中断指令前的一跳跃指令以及包括在所述中断指令后的一回存指令。
7.如权利要求1所述的存储和回存一状态上下文在一图形处理单元的方法,还包括:
传送有关于所述第一上下文状态的状态寄存数据从图形处理单元的各处理单元至图形处理单元的一处理器,以致于所述状态寄存数据存储在所述存储器中以提供之后取回,其中至少一处理单元传送所述状态寄存数据至另一具有一通信途径至所述处理器的处理单元。
8.如权利要求1所述的存储和回存一状态上下文在一图形处理单元的方法,其中所述图形处理器接收来自一处理器的所述中断指令。
9.如权利要求1所述的存储和回存一状态上下文在一图形处理单元的方法,其中所述中断事件是被所述图形产生单元的一电路所产生的。
10.如权利要求1所述的存储和回存一状态上下文在一图形处理单元的方法,还包括:
建立具有一独立位移值的一第一寄存区,以提供在图形处理器的各处理区块使用,所述独立位移值是由一位移寄存上下文和一寄存标识符所组成的,以及;
建立一第二寄存区,所述第二寄存区具有对应于各处理区块状态数据的一长度以及各处理区块的一数据上限的数据。
11.如权利要求10所述的存储和回存一状态上下文在一图形处理单元的方法,其中所述独立移位值是128位,所述数据上限对于各处理区块是一运算码双字(opcode double word)。
12.一种可中断图形处理单元,当接收到一中断指令时,存储一第一上下文,并依序执行一第二上下文,以及回存所述第一上下文以供执行,包括:
一指令处理器,用以传送关于各上下文的信息至多个结构处理单元,所述指令处理器具有一第一语法分析器以处理关于所述各上下文的一环缓冲区的指令,以及;
多个数据线,耦接于少于结构处理单元的总数量的多个结构处理单元和所述指令处理器的一第二语法分析器之间,当一中断指令被所述指令处理器接收时,其中关于所述第一上下文的寄存数据通过多个数据途径传送至所述第二语法分析器,并且存储至一存储器中。
13.如权利要求12所述的可中断图形处理单元,还包括:
一先进先出存储器,设置在所述指令处理器中,用以接收所述第二语法分析器所接收的所述寄存数据,其中所述寄存数据之后被存储在耦接于所述图形处理单元的一存储器中。
14.如权利要求12所述的可中断图形处理单元,其中来自一第一结构处理单元的所述寄存数据被传送至一个或多个额外结构处理单元,直到至少一所述结构处理单元具有耦接至所述第二语法分析器的一数据途径线。
15.如权利要求12所述的可中断图形处理单元,其中所述第一语法分析器检测一跳跃指令是否存在于一特定上下文有关的一数据结构中,以致于所述第一语法分析器移动至关于在所述结构处理单元的处理数据的一个或多个存储器存取指令和指针。
16.如权利要求12所述的可中断图形处理单元,其中所述第一语法分析器在接收所述中断指令之后,检测一回存指令是否在与所述第一上下文有关的一数据结构中,以致于当接收到所述中断上下文时,所述第一语法分析器存取所述存储器,以提取一个或多个对应于所述第一上下文的一处理位置的存储寄存状态,其中所述第一语法分析器传送所述存储寄存状态至所述结构处理程序单元以供所述第一上下文回存。
17.如权利要求12所述的可中断图形处理单元,其中传送所述数据途径线的信息至所述第二语法分析,是根据所述第一上下文的一瓦片首部指针器,一中断图形指令有关的一图形指令标识符、用以定义在中断图形指令的一中断位置的一实体标识符、用以定义一中断图元的一图元标识符、以及用以定义一中断瓦片的一瓦片标识符。
18.如权利要求12所述的可中断图形处理单元,其中所述第一语法分析器是一前端语法分析器,所述第二语法分析器是一后端语法分析器。
19.一种可中断图形处理单元,用以执行多个执行程序,包括:
一串流处理器,具有一第一语法分析器和第二语法分析器,以及;
多个处理区块,连续耦接在一起,一第一处理区块接收来自所述第一语法分析器的指令和状态数据,所述第二语法分析器耦接少于所有所述处理区块的总数量的处理区块,
其中所述第一语法分析器辨认在一数据结构串中的一回存指令,以致于关于一存储上下文的状态数据从存储器中被提取,并通过所述第一语法分析器传送至一个或多个处理区块以执行关于所述存储上下文的指令和数据。
20.如权利要求19所述的可中断图形处理单元,其中所述串流处理器从一上下文回存中提取一首部指针,并处理一参考所述首部指针的指令,以及所述串流处理器跳跃一个或多个图形指令,直到所述串流处理器接收到因为之前中断而未完成的一图形指令,此时回存上下文完成。
21.如权利要求19所述的可中断图形处理单元,其中所述串流处理器直到之前中断存储上下文的一中断位置点,所述串流处理器丢弃所述存储上下文的输入信号,所述中断位置点与一图形指令辨识符、实体辨识符、和图元辨识符有关,以及直到之前中断存储上下文的一瓦片辨识符中断位置点,一瓦片产生处理区块丢弃瓦片。
22.如权利要求21所述的可中断图形处理单元,其中直到所述存储上下文被完成和所述串流处理器接收一额外中断指令的一者,完成所述存储上下文。
23.如权利要求19所述的可中断图形处理单元,其中所述第一语法分析器辨认出一数据结构串中的一跳跃指令,根据一个或多个存储器存取指令和包含于所述数据结构串流的指针,一被图形处理单元执行的上下文的状态数据更可被执行,所述各指针指向一包含有关图形数据的缓冲区,所述图形数据会被所述处理区块处理。
24.如权利要求19所述的可中断图形处理单元,其中所述第一语法分析器是一前端语法分析器,所述第二语法分析器是一后端语法分析器。
CNB2006101215504A 2005-11-10 2006-08-22 存储和回存状态上下文在图形处理单元的方法和装置 Active CN100538736C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/272,356 US7545381B2 (en) 2005-11-10 2005-11-10 Interruptible GPU and method for context saving and restoring
US11/272,356 2005-11-10

Publications (2)

Publication Number Publication Date
CN1916962A true CN1916962A (zh) 2007-02-21
CN100538736C CN100538736C (zh) 2009-09-09

Family

ID=37737954

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101215504A Active CN100538736C (zh) 2005-11-10 2006-08-22 存储和回存状态上下文在图形处理单元的方法和装置

Country Status (3)

Country Link
US (1) US7545381B2 (zh)
CN (1) CN100538736C (zh)
TW (1) TWI323432B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101877120B (zh) * 2008-11-06 2013-07-24 威盛电子股份有限公司 支持多个绘图处理器的互动的方法与系统
CN104641396A (zh) * 2012-07-20 2015-05-20 高通股份有限公司 用于调度图形处理单元命令流的延迟抢占技术
CN105518742A (zh) * 2013-09-10 2016-04-20 高通股份有限公司 用于图形处理的任意控制点处的容错抢占机制
CN111272169A (zh) * 2020-02-04 2020-06-12 中国科学院新疆天文台 一种脉冲星信号消干扰装置、系统和方法

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US8624906B2 (en) * 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US8424012B1 (en) 2004-11-15 2013-04-16 Nvidia Corporation Context switching on a video processor having a scalar execution unit and a vector execution unit
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US7600155B1 (en) * 2005-12-13 2009-10-06 Nvidia Corporation Apparatus and method for monitoring and debugging a graphics processing unit
US8817035B2 (en) * 2005-12-21 2014-08-26 Nvidia Corporation Texture pipeline context switch
US8081184B1 (en) * 2006-05-05 2011-12-20 Nvidia Corporation Pixel shader program thread assembly
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US8139070B1 (en) * 2007-10-03 2012-03-20 Matrox Graphics, Inc. Systems for and methods of context switching in a graphics processing system
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US20090160867A1 (en) * 2007-12-19 2009-06-25 Advance Micro Devices, Inc. Autonomous Context Scheduler For Graphics Processing Units
WO2009090684A1 (ja) * 2008-01-15 2009-07-23 Netcleus Systems Corporation タスク処理装置
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US20100024030A1 (en) * 2008-07-23 2010-01-28 Microsoft Corporation Restartable transformation automaton
US8300056B2 (en) 2008-10-13 2012-10-30 Apple Inc. Seamless display migration
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US8368702B2 (en) 2010-01-06 2013-02-05 Apple Inc. Policy-based switching between graphics-processing units
US8797334B2 (en) 2010-01-06 2014-08-05 Apple Inc. Facilitating efficient switching between graphics-processing units
US8648868B2 (en) * 2010-01-06 2014-02-11 Apple Inc. Color correction to facilitate switching between graphics-processing units
US9400695B2 (en) * 2010-02-26 2016-07-26 Microsoft Technology Licensing, Llc Low latency rendering of objects
US20110216078A1 (en) * 2010-03-04 2011-09-08 Paul Blinzer Method, System, and Apparatus for Processing Video and/or Graphics Data Using Multiple Processors Without Losing State Information
US8803891B2 (en) * 2010-12-13 2014-08-12 Advanced Micro Devices, Inc. Method for preempting graphics tasks to accommodate compute tasks in an accelerated processing device (APD)
US20120188259A1 (en) * 2010-12-13 2012-07-26 Advanced Micro Devices, Inc. Mechanisms for Enabling Task Scheduling
US9507632B2 (en) * 2010-12-15 2016-11-29 Advanced Micro Devices, Inc. Preemptive context switching of processes on ac accelerated processing device (APD) based on time quanta
US20120194528A1 (en) * 2010-12-15 2012-08-02 Advanced Micro Devices, Inc. Method and System for Context Switching
US20120194526A1 (en) * 2010-12-15 2012-08-02 Benjamin Thomas Sander Task Scheduling
US9727385B2 (en) * 2011-07-18 2017-08-08 Apple Inc. Graphical processing unit (GPU) implementing a plurality of virtual GPUs
US9652560B1 (en) * 2011-07-18 2017-05-16 Apple Inc. Non-blocking memory management unit
US8692833B2 (en) * 2011-08-09 2014-04-08 Apple Inc. Low-power GPU states for reducing power consumption
CN103106638A (zh) 2011-11-14 2013-05-15 辉达公司 用于实时图像处理的图形处理装置
DE102011119004A1 (de) 2011-11-19 2013-05-23 Diehl Aerospace Gmbh Grafikverarbeitungsvorrichtung, Anzeigevorrichtung für ein Flugzeugcockpit sowie Verfahren zur Anzeige von Grafikdaten
US20130135327A1 (en) * 2011-11-29 2013-05-30 Advanced Micro Devices, Inc. Saving and Restoring Non-Shader State Using a Command Processor
US20130145202A1 (en) * 2011-12-06 2013-06-06 Advanced Micro Devices, Inc. Handling Virtual-to-Physical Address Translation Failures
US8933942B2 (en) * 2011-12-08 2015-01-13 Advanced Micro Devices, Inc. Partitioning resources of a processor
US9122522B2 (en) * 2011-12-14 2015-09-01 Advanced Micro Devices, Inc. Software mechanisms for managing task scheduling on an accelerated processing device (APD)
WO2013090605A2 (en) * 2011-12-14 2013-06-20 Advanced Micro Devices, Inc. Saving and restoring shader context state and resuming a faulted apd wavefront
US20130155079A1 (en) * 2011-12-14 2013-06-20 Robert Scott Hartog Saving and Restoring Shader Context State
US9633230B2 (en) * 2012-10-11 2017-04-25 Intel Corporation Hardware assist for privilege access violation checks
US9293109B2 (en) 2012-12-20 2016-03-22 Nvidia Corporation Technique for storing shared vertices
US9418616B2 (en) 2012-12-20 2016-08-16 Nvidia Corporation Technique for storing shared vertices
US9361116B2 (en) * 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US9087202B2 (en) * 2013-05-10 2015-07-21 Intel Corporation Entry/exit architecture for protected device modules
US9892480B2 (en) * 2013-06-28 2018-02-13 Intel Corporation Aborting graphics processor workload execution
US9659342B2 (en) * 2013-06-29 2017-05-23 Intel Corporation Mid command buffer preemption for graphics workloads
US9563466B2 (en) * 2013-11-05 2017-02-07 Intel Corporation Method and apparatus for supporting programmable software context state execution during hardware context restore flow
CN107111498B (zh) * 2014-11-12 2020-12-29 英特尔公司 利用图形虚拟化从/向主机计算机进行虚拟机的实时迁移
US9786026B2 (en) * 2015-06-15 2017-10-10 Microsoft Technology Licensing, Llc Asynchronous translation of computer program resources in graphics processing unit emulation
GB2539436B (en) 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
GB2539435B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539433B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
US20170004647A1 (en) * 2015-06-30 2017-01-05 Microsoft Technology Licensing, Llc Rendering graphics data on demand
US20170069054A1 (en) * 2015-09-04 2017-03-09 Intel Corporation Facilitating efficient scheduling of graphics workloads at computing devices
US10297003B2 (en) * 2015-09-21 2019-05-21 Qualcomm Incorporated Efficient saving and restoring of context information for context switches
US10740710B2 (en) 2016-03-25 2020-08-11 Nebbiolo Technologies, Inc. Fog computing facilitated flexible factory
US10798063B2 (en) 2016-10-21 2020-10-06 Nebbiolo Technologies, Inc. Enterprise grade security for integrating multiple domains with a public cloud
CN106648841B (zh) * 2016-12-12 2020-06-30 中国航空工业集团公司西安航空计算技术研究所 一种图形上下文管理方法
US10558489B2 (en) * 2017-02-21 2020-02-11 Advanced Micro Devices, Inc. Suspend and restore processor operations
US10474490B2 (en) * 2017-06-29 2019-11-12 Advanced Micro Devices, Inc. Early virtualization context switch for virtualized accelerated processing device
US10459751B2 (en) * 2017-06-30 2019-10-29 ATI Technologies ULC. Varying firmware for virtualized device
US10972579B2 (en) * 2017-10-13 2021-04-06 Nebbiolo Technologies, Inc. Adaptive scheduling for edge devices and networks
US10521395B1 (en) 2018-07-05 2019-12-31 Mythic, Inc. Systems and methods for implementing an intelligence processing computing architecture
US10824467B2 (en) * 2018-08-07 2020-11-03 Arm Limited Data processing system with protected mode of operation for processing protected content
US10776984B2 (en) 2018-11-08 2020-09-15 Insightfulvr, Inc Compositor for decoupled rendering
US10678693B2 (en) * 2018-11-08 2020-06-09 Insightfulvr, Inc Logic-executing ring buffer
US11169811B2 (en) * 2019-05-30 2021-11-09 Advanced Micro Devices, Inc. Graphics context bouncing
US11182215B2 (en) 2019-09-30 2021-11-23 Sony Interactive Entertainment LLC System and method for multi-tenant implementation of graphics processing unit

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2050658C (en) 1990-09-14 1997-01-28 John M. Peaslee Dual hardware channels and hardware context switching in a graphics rendering processor
US5430841A (en) 1992-10-29 1995-07-04 International Business Machines Corporation Context management in a graphics system
US5428779A (en) * 1992-11-09 1995-06-27 Seiko Epson Corporation System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions
US5764959A (en) * 1995-12-20 1998-06-09 Intel Corporation Adaptive 128-bit floating point load and store instructions for quad-precision compatibility
US6208361B1 (en) 1998-06-15 2001-03-27 Silicon Graphics, Inc. Method and system for efficient context switching in a computer graphics system
US6608625B1 (en) * 1998-10-14 2003-08-19 Hitachi, Ltd. Three dimensional graphic processor
US6437788B1 (en) 1999-07-16 2002-08-20 International Business Machines Corporation Synchronizing graphics texture management in a computer system using threads
US6466222B1 (en) 1999-10-08 2002-10-15 Silicon Integrated Systems Corp. Apparatus and method for computing graphics attributes in a graphics display system
US6782432B1 (en) * 2000-06-30 2004-08-24 Intel Corporation Automatic state savings in a graphics pipeline
US6674841B1 (en) 2000-09-14 2004-01-06 International Business Machines Corporation Method and apparatus in a data processing system for an asynchronous context switching mechanism
US6718403B2 (en) 2000-12-11 2004-04-06 International Business Machines Corporation Hierarchical selection of direct and indirect counting events in a performance monitor unit
US6519310B2 (en) 2001-03-28 2003-02-11 Intel Corporation Hardware event based flow control of counters
US7173627B2 (en) 2001-06-29 2007-02-06 Intel Corporation Apparatus, method and system with a graphics-rendering engine having a graphics context manager
US6947053B2 (en) 2001-09-27 2005-09-20 Intel Corporation Texture engine state variable synchronizer
US6781588B2 (en) 2001-09-28 2004-08-24 Intel Corporation Texture engine memory access synchronizer
US6917362B2 (en) 2002-01-25 2005-07-12 Hewlett-Packard Development Company, L.P. System and method for managing context data in a single logical screen graphics environment
US7015930B2 (en) 2003-08-01 2006-03-21 Ati Technologies Inc. Method and apparatus for interpolating pixel parameters based on a plurality of vertex values
US7461242B2 (en) * 2005-11-03 2008-12-02 Ati Technologies Ulc Method and apparatus for providing context switching of logic in an integrated circuit using test scan circuitry

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101877120B (zh) * 2008-11-06 2013-07-24 威盛电子股份有限公司 支持多个绘图处理器的互动的方法与系统
CN104641396A (zh) * 2012-07-20 2015-05-20 高通股份有限公司 用于调度图形处理单元命令流的延迟抢占技术
CN104641396B (zh) * 2012-07-20 2018-04-10 高通股份有限公司 用于调度图形处理单元命令流的延迟抢占技术
US10002021B2 (en) 2012-07-20 2018-06-19 Qualcomm Incorporated Deferred preemption techniques for scheduling graphics processing unit command streams
CN105518742A (zh) * 2013-09-10 2016-04-20 高通股份有限公司 用于图形处理的任意控制点处的容错抢占机制
CN105518742B (zh) * 2013-09-10 2017-04-26 高通股份有限公司 用于图形处理的任意控制点处的容错抢占机制
CN111272169A (zh) * 2020-02-04 2020-06-12 中国科学院新疆天文台 一种脉冲星信号消干扰装置、系统和方法

Also Published As

Publication number Publication date
TWI323432B (en) 2010-04-11
CN100538736C (zh) 2009-09-09
US7545381B2 (en) 2009-06-09
TW200719276A (en) 2007-05-16
US20070103476A1 (en) 2007-05-10

Similar Documents

Publication Publication Date Title
CN1916962A (zh) 存储和回存状态上下文在图形处理单元的方法和装置
CN1916961A (zh) 可中断图形处理单元及其控制方法
CN1912926A (zh) 可中断图形处理单元处理多个程序的方法和图形处理单元
CN1287282C (zh) 执行实时操作的方法和系统
CN1280714C (zh) 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
CN1153155C (zh) 装有高效利用主处理器中的寄存器数据的协处理器的信息处理装置
CN1120425C (zh) 存储器控制器和存储器控制方法
CN1285997C (zh) 链接内容浏览支持装置及其方法
CN1202470C (zh) 处理器
CN1702634A (zh) 便利无环境主机干预下的可分页模式虚拟环境存储管理
CN1286769A (zh) 具有多程序计数器和在执行流水线外面的追踪缓冲区的处理器
CN1601474A (zh) 执行实时操作的方法和系统
CN1190741C (zh) 用于支持数据事务的设备和方法
CN1285064A (zh) 进行无序多线程执行的加载和存储指令排序系统
CN1786905A (zh) Gui程序、数据处理装置与对象的操作方法
CN1286771A (zh) 错误推测之后的指令再执行的管道外部跟踪缓冲器
CN1517869A (zh) 处理器、运算处理方法和优先度决定方法
CN1619511A (zh) 执行快速推测式加载运算的微处理器及装置
CN1821956A (zh) 用现有内容生成用于执行任务的活动内容向导可执行文件
CN1752947A (zh) 存储装置、存储控制方法,以及计算机产品
CN1233016A (zh) 具有事件相关矢量选择的历境控制器和采用其的处理器
CN1722108A (zh) 磁盘驱动器、其控制方法以及磁盘伪造的探测方法
CN1577291A (zh) 程序调试装置、程序调试方法及程序
CN1770130A (zh) 总线控制器件及方法、仲裁器件及方法和集成电路器件
CN101076787A (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