CN100435172C - 可中断图形处理单元处理多个程序的方法和图形处理单元 - Google Patents
可中断图形处理单元处理多个程序的方法和图形处理单元 Download PDFInfo
- Publication number
- CN100435172C CN100435172C CNB200610110750XA CN200610110750A CN100435172C CN 100435172 C CN100435172 C CN 100435172C CN B200610110750X A CNB200610110750X A CN B200610110750XA CN 200610110750 A CN200610110750 A CN 200610110750A CN 100435172 C CN100435172 C CN 100435172C
- Authority
- CN
- China
- Prior art keywords
- context
- processing unit
- pointer
- buffer zone
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
当图形处理单元接收到指令,中断处理第一上下文和初始处理第二上下文,使得图形处理单元可处理多个程序。中央处理器产生具有多个上下文的一运行表,图形处理单元存储具有多个上下文的一运行表并加以执行,各上下文具有一环缓冲区的指令和指针以供执行。图形处理单元初始运行表的第一上下文,并获取存储器存取指令和关于第一上下文的指针参考的数据。图形处理单元流水线处理关于第一上下文的数据,直到第一上下文为空集合或中断发生。假如空集合发生,图形处理单元切换至运行表的下一上下文,以处理下一上下文,当运行表的最后一上下文完成,图形处理单元可切换至另一运行表的新上下文执行。
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可被中断,因而可以在同一时间处理多个图形程序,图形处理器是一硬体设备可经由中断程序以提供多个程序之间的切换。
当图形处理单元接收到指令,中断处理第一上下文和初始处理第二上下文,一指令处理器在图形流水线中传送一中断信号从多个流水线处理区块到通信途径。一代符对应于中断上下文的尾部端,从指令处理器传送至第一流水线处理区块并依序传送至其他图形流水线。直到接收到中断信号,当代符到达时,各流水线处理区块丢弃关于存储器单元的内容。代符传送至其他流水线处理区块和存储器单元,以致于代符传送经由图形流水线以清除关于第一上下文的数据。关于第二上下文的数据会在代符之后穿过图形流水线。
在图形流水线中,流水线可包括一些流水线处理区块并不经由通信途径耦接指令处理器,这些流水线处理区块继续执行关于第一上下文的数据直到接收到穿过图形流水线的代符,一旦接收到代符,这些流水线处理区块也会丢弃关于第一上下文在存储器的数据,并开始处理第二上下文的数据。
本发明提供一种可中断图形处理单元处理多个程序的方法,包括:接收一包含多个上下文的第一运行表以执行;初始一包括关于在第一运行表的上下文的指令和数据的缓冲区的程序;获取一图形处理单元存储器存取指令和一指针,图形处理单元存储器存取指令来自缓冲区,指针是指向关于缓冲区的图形数据;传送指针至一个或多个结构处理单元,以存取寄存状态于图形处理单元中;切换至第一运行表的一另一缓冲区以处理关于另一缓冲区的数据,以及当一最后缓冲区的运行表是空的,切换至另一运行表。
本发明提供一种图形处理单元,适用于处理多个程序,包括:一处理器,经由耦合至处理器的一图形流水线来控制数据的处理;其中图形处理单元建立上下文的一运行表以执行、获取关于一第一上下文的一个或多个指令和一个或多个指针,以供图形流水线执行、传送一个或多个指令和一个或多个指针至所述图形流水线,以供图形流水线处理,其中关于一个或多个指令和一个或多个指针的数据被图形流水线执行,直到中断和第一上下文为一空集合为止的一者、以及假如在运行表的所有上下文为空集合,切换处理器至在运行表的另一上下文或另一运行表。
然而,本发明实施例的其他系统、方法、特征以及一些发明的优点可以经由以下实施例的说明和附图更加了解。
附图说明
图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~上下文存储地址
160~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~执行单元池(pool)前端模块
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元件(有可能包括其他网络/总线)。
使用者经由键盘62和鼠标61输入指令和数据于计算机12,键盘62和鼠标61经由使用者输入接口60耦合和系统总线21至处理单元16。然而,本领域的技术人员也可使用其他接口和总线,例如:并行端口、并行端口(parallel port)、游戏端口(game port)或通用串行总线(universal serialbus,USB)的接口耦接于处理单元12。
一图形接口82也耦合至系统总线21,图形接口82也可以是一组芯片和处理单元16耦合,图形接口82可以是外围部件连接快速接口(PeripheralComponent Interconnect,PCI Express)或加速图形接口(AcceleratedGraphics Port,AGP)。一个或多个图形处理单元GPU 84可与同时图形接口82耦合。图形处理单元GPU 84可以具有专属芯片内的存储器,例如:寄存器(register)或高速缓冲存储器(cache memory)。图形处理单元GPU 84也可与存储器86耦合沟通,关于所述应用的变化可能会影响本发明实施例,本发明实施例所公开的图形处理单元GPU 84并不是唯一例子,也可以使用其他装置取代图形处理单元GPU 84于计算机12中。
显示器91和其他显示装置也经由显示接口90耦合至系统总线21,显示接口90也与显示存储器86耦合沟通,除了显示器91,计算机系统12也可包括其他外围输出装置,例如:打印机96和扬声器97,打印机96和扬声器97皆经由其他外围接口95耦合至计算机12。
本领域的技术人员了解计算机12可以使用于网络或分散式计算环境与其他端计算机连接,例如远端计算机80,远端计算机80可以是个人计算机、服务计算机、路由器、网络计算机、或其他网络节点,远端计算机80也具有如计算机12所具有的元件或是部分计算机12所具有的元件,尽管在图1中只显示存储器存储装置81和应用程序85。图1中也显示利用局域网(localarea network,LAN)71和广域网络(Wide Area Network,WAN)73耦接远端计算机80,但不限定,本领域的技术人员也可以使用其他网络/总线来连接。
在图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];Blockl 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包含一首指针(head pointer)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)和图元指令(prmitive assembled)等等...被丢弃于到达瓦片产生器226之前(可参考图17的步骤334)。
瓦片产生器226可存储瓦片标识符(tile ID)于中断那一刻,其他如目前首指针(current head pointer)206、DMA位移293、实体标识符(instance ID)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从环缓冲区取回环缓冲区首指针(ringbuffer head pointer,经由存储程序存储,如前所述),并且处理被首指针指向的DMA指令,然后略过所有指令直到DMA地址等于直接存储器存取位移量(DMA OFFSET),使得CSP 190重新开始执行之前被中断地址的指令,可能是在triangle(三角形)中间,但不限定。
CSP 190可在回存状态程序时略过实体(instance)直到实体ID(instanceID)符合,也可略过图元(primitives)直到图元ID符合,实体ID和图元ID皆存储在状态先进先出寄存器194,所以CSP 190可以比较被回存至实体ID的实体,另一程序区块(为GPU84计算核心一部份)略过triangles直到关于一特别triangle的图元ID符合,例如:triangle 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中,在GPUsubversion次设计流程中,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,基本信息单位(basic information unit,BIU)处理中断程序,并且回到步骤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)变成尾部指针(TA IL_PTR)。
当现在指针或首部指针等于尾部指针时,跳至步骤322,使CSP 190等待尾部指针更新,如图12所示,假如额外指令或是指针被加入至环缓冲区,尾部指针是可以被移动地,然而,假如尾部指针不被移动,程序跳到步骤324,这意味到达环缓冲区的终端,CSP 190返回闲置状态310并准备重复所述的程序。
图15表示所述第12-14图的数据结构,并可应用于图1的G PU84以回存之前中断上下文,运行表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首指针(CSPHEAD 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 STATE M/C步骤350,图19表示在3D流水线176中转储/重置/询问(dump/reset/query)状态机制(DRQ state machine)的执行,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接收来自CSP190在接线中断线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切换至TGFIFO存储器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 (17)
1.一种可中断图形处理单元处理多个程序的方法,包括:
接收一包含多个上下文的第一运行表以执行;
初始一包括关于在所述第一运行表的上下文的指令和数据的缓冲区的程序;
获取一图形处理单元存储器存取指令和一指针,所述图形处理单元存储器存取指令来自所述缓冲区,所述指针是指向关于所述缓冲区的图形数据;
当中断发生时,传送所述指针至一个或多个结构处理单元,以存取寄存状态于所述图形处理单元中,并开始执行另一上下文;
当执行的上下文为空集合时,切换至所述第一运行表的一另一缓冲区以处理关于另一缓冲区的数据,以及;
当一最后缓冲区的运行表是空的,切换至另一运行表,
还包括:
决定是否一首指针等于一尾部指针,所述首指针是有关于所述缓冲区的一处理位置,所述尾部指针也和所述缓冲区有关;
假如所述首指针等于尾部指针,标明所述缓冲区为一空集合,以及;
假如所述首指针不等于所述尾部指针,处理一个或多个根据所述指针指向的一缓冲区的图形功能和图形处理单元功能指令。
2.如权利要求1所述的可中断图形处理单元处理多个程序的方法,还包括:
决定是否所述缓冲区包含一回存指令,假如所述缓冲区包含一回存指令时,从存储器获取关于所述缓冲区的存储状态数据。
3.如权利要求1所述的可中断图形处理单元处理多个程序的方法,还包括:
获取关于一缓冲区的一首和尾部指针,决定在所述缓冲区中是否一预先决定逻辑位置是跳跃指令或回存指令,假如所述预先决定逻辑位置是一回存指令,从存储器中取出存储状态数据。
4.如权利要求1所述的可中断图形处理单元处理多个程序的方法,还包括:
根据执行所述图形处理单元存储器存取指令,处理在缓冲区的一目前位置。
5.如权利要求1所述的可中断图形处理单元处理多个程序的方法,还包括:
在所述图形处理单元的一处理流水线中,从一指令处理器传送关于所述缓冲区的处理数据的一存储器存取移位值和寄存状态至一三角建立单元,以及;
传送一实体标识符、一图元标识符、一瓦片标识符至一处理单元,以处理关于所述缓冲区的数据。
6.如权利要求1所述的可中断图形处理单元处理多个程序的方法,还包括:
在所述图形处理单元的一处理流水线中,从一指令处理器传送关于一镶钳图元的一三角形标识符至一三角建立单元。
7.如权利要求1所述的可中断图形处理单元处理多个程序的方法,还包括:
处理所述缓冲区的所有图形处理单元功能指令,所述首指针移动一逻辑方向,所述首指针会靠近所述尾部指针,直到到达和所述尾部指针一样的逻辑值。
8.如权利要求1所述的可中断图形处理单元处理多个程序的方法,还包括:
假如一个或多个额外图形处理单元功能指令或指针被加入所述缓冲区,移动所述尾部指针至一新逻辑位置。
9.一种图形处理单元,适用于处理多个程序,包括:一处理器,经由耦合至所述处理器的一图形流水线来控制数据的处理;
其中所述图形处理单元建立上下文的一运行表以执行;从一缓冲区获取关于一第一上下文的一个或多个指令和一个或多个指针,以供所述图形流水线执行;传送所述一个或多个指令和一个或多个指针至所述图形流水线,以供所述图形流水线处理,其中关于所述一个或多个指令和一个或多个指针的数据被所述图形流水线执行,直到中断和所述第一上下文为一空集合为止的一者;当中断发生时,传送所述指针至一个或多个结构处理单元,以存取寄存状态于所述图形处理单元中,并开始执行另一上下文;假如在运行表的所有上下文为空集合,切换所述处理器至在所述运行表的另一上下文或另一运行表;以及决定是否一首指针等于一尾部指针,所述首指针是有关于所述缓冲区的一处理位置,所述尾部指针也和所述缓冲区有关,且如果所述首指针不等于所述尾部指针,则还获取关于在运行表的一第一上下文和一存储器存取指令的一首指针和一尾部指针。
10.如权利要求9所述的图形处理单元,还从所述处理器的一前端语法分析器传送所述一个或多个指针至所述图形流水线。
11.如权利要求9所述的图形处理单元,假如一个或多个额外指令或指针被加入至所述第一上下文,还移动所述尾部指针至一新逻辑位置。
12.如权利要求9所述的图形处理单元,在执行完一指令后,还决定是否所述首指针等于所述尾部指针,假如所述首指针等于所述尾部指针,即到达上下文的一尾部端,假如所述首指针不等于所述尾部指针,执行一下一指令或指针。
13.如权利要求9所述的图形处理单元,还决定被执行的一数据结构中是否包含具有一回存指令的一目前上下文,假如所述数据结构包含一回存指令,获取关于一回存状态和上下文的所有状态数据。
14.如权利要求13所述的图形处理单元,还获取关于所述目前上下文的所述回存状态的一个或多个存储器存取指令,并处理关于回存状态至所述目前上下文的完成。
15.如权利要求14所述的图形处理单元,当关于回存状态的所述目前上下文被完成时,所述运行表切换至下一上下文。
16.如权利要求14所述的图形处理单元,其中所述图形流水线中所述一个或多个存储器存取指令被传送至一个或多个结构单元,以恢复所述回存状态和上下文于之前发生中断的一准确点上。
17.如权利要求9所述的图形处理单元,当所述第一上下文被完成时,传送一中断指令至一中央处理器,所述中央处理器耦合至所述图形处理单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/271,169 | 2005-11-10 | ||
US11/271,169 US7580040B2 (en) | 2005-11-10 | 2005-11-10 | Interruptible GPU and method for processing multiple contexts and runlists |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1912926A CN1912926A (zh) | 2007-02-14 |
CN100435172C true CN100435172C (zh) | 2008-11-19 |
Family
ID=37721847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200610110750XA Active CN100435172C (zh) | 2005-11-10 | 2006-08-11 | 可中断图形处理单元处理多个程序的方法和图形处理单元 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7580040B2 (zh) |
CN (1) | CN100435172C (zh) |
TW (1) | TWI323431B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8139070B1 (en) * | 2007-10-03 | 2012-03-20 | Matrox Graphics, Inc. | Systems for and methods of context switching in a graphics processing system |
GB0723536D0 (en) * | 2007-11-30 | 2008-01-09 | Imagination Tech Ltd | Multi-core geometry processing in a tile based rendering system |
US9064333B2 (en) * | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8826294B2 (en) * | 2007-12-26 | 2014-09-02 | Advanced Micro Devices, Inc. | Efficient state management system |
TWI394049B (zh) * | 2008-02-20 | 2013-04-21 | Ralink Technology Corp | 直接記憶體存取系統及其傳送/接收封包之方法 |
US8082426B2 (en) * | 2008-11-06 | 2011-12-20 | Via Technologies, Inc. | Support of a plurality of graphic processing units |
US20100110089A1 (en) * | 2008-11-06 | 2010-05-06 | Via Technologies, Inc. | Multiple GPU Context Synchronization Using Barrier Type Primitives |
US9400695B2 (en) * | 2010-02-26 | 2016-07-26 | Microsoft Technology Licensing, Llc | Low latency rendering of objects |
US9727385B2 (en) | 2011-07-18 | 2017-08-08 | Apple Inc. | Graphical processing unit (GPU) implementing a plurality of virtual GPUs |
CN103106638A (zh) * | 2011-11-14 | 2013-05-15 | 辉达公司 | 用于实时图像处理的图形处理装置 |
US9659342B2 (en) | 2013-06-29 | 2017-05-23 | Intel Corporation | Mid command buffer preemption for graphics workloads |
US20150187043A1 (en) * | 2013-12-27 | 2015-07-02 | Samsung Electronics Company, Ltd. | Virtualizing storage structures with unified heap architecture |
US9632761B2 (en) * | 2014-01-13 | 2017-04-25 | Red Hat, Inc. | Distribute workload of an application to a graphics processing unit |
CN107003828B (zh) * | 2014-12-15 | 2021-05-14 | 英特尔公司 | 图形指令的仪器化 |
US10297003B2 (en) * | 2015-09-21 | 2019-05-21 | Qualcomm Incorporated | Efficient saving and restoring of context information for context switches |
US10282808B2 (en) * | 2016-05-27 | 2019-05-07 | Intel Corporation | Hierarchical lossless compression and null data support |
US10192281B2 (en) * | 2016-07-07 | 2019-01-29 | Intel Corporation | Graphics command parsing mechanism |
CN106776455B (zh) * | 2016-12-13 | 2020-08-21 | 苏州浪潮智能科技有限公司 | 一种单机多gpu通信的方法及装置 |
CN107016083B (zh) * | 2017-03-31 | 2020-02-07 | 清华大学 | 一种支持处理单元在线切换的流数据处理方法 |
US11150943B2 (en) * | 2017-04-10 | 2021-10-19 | Intel Corporation | Enabling a single context hardware system to operate as a multi-context system |
CN111581124A (zh) * | 2019-02-19 | 2020-08-25 | 睿宽智能科技有限公司 | 可缩短内文交换时间的方法及其半导体装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US6782432B1 (en) * | 2000-06-30 | 2004-08-24 | Intel Corporation | Automatic state savings in a graphics pipeline |
Family Cites Families (14)
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 |
US5388219A (en) * | 1992-03-02 | 1995-02-07 | International Business Machines Corporation | Efficient channel and control unit for host computer |
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 |
US6112267A (en) * | 1998-05-28 | 2000-08-29 | Digital Equipment Corporation | Hierarchical ring buffers for buffering data between processor and I/O device permitting data writes by processor and data reads by I/O device simultaneously directed at different buffers at different levels |
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 |
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 |
-
2005
- 2005-11-10 US US11/271,169 patent/US7580040B2/en active Active
-
2006
- 2006-08-11 CN CNB200610110750XA patent/CN100435172C/zh active Active
- 2006-10-05 TW TW095137101A patent/TWI323431B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
Also Published As
Publication number | Publication date |
---|---|
US7580040B2 (en) | 2009-08-25 |
TWI323431B (en) | 2010-04-11 |
TW200719275A (en) | 2007-05-16 |
US20070103475A1 (en) | 2007-05-10 |
CN1912926A (zh) | 2007-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100435172C (zh) | 可中断图形处理单元处理多个程序的方法和图形处理单元 | |
CN100538736C (zh) | 存储和回存状态上下文在图形处理单元的方法和装置 | |
CN1916961B (zh) | 可中断图形处理单元及其控制方法 | |
CN100538737C (zh) | 图形处理单元管线多阶同步控制处理器及其方法 | |
CN101110017B (zh) | 一种组合指令的技术 | |
CN1025382C (zh) | 具有通用操作系统接口的设备驱动系统 | |
EP0690371B1 (en) | Fetch and store buffer for supporting out of order execution in a data processing system | |
CN100392586C (zh) | 用于跟踪完成表中更大量未完成指令的方法和处理器 | |
CN102103483A (zh) | 汇聚和散布多个数据元素 | |
CN105739949A (zh) | 用于在非对称处理器核之间的协作式执行的技术 | |
JP2557199B2 (ja) | インターフェース・システムおよび方法 | |
CN109522128A (zh) | 分段式多线程任务执行方法及装置 | |
CN103036947A (zh) | 基于kvm的虚拟机迁移方法及系统 | |
CN1124546C (zh) | 一种超标量处理器及在该超标量处理器中完成指令的方法 | |
US20090164729A1 (en) | Sync-id for multiple concurrent sync dependencies in an out-of-order store queue | |
CN101923517B (zh) | 一种缓冲区管理方法及系统 | |
US10409748B2 (en) | Bridge device with DMA data transferring to upstream device with reset and clear feature command | |
CN103984525A (zh) | 指令处理系统及方法 | |
CN103582866A (zh) | 无序数据传输的处理 | |
CN104025026B (zh) | 访问用于配置空间的配置和状态寄存器 | |
CN101583926B (zh) | 利用缓冲器便于指令执行的方法和系统 | |
CN101441609B (zh) | 中断抖动抑制的数据处理装置及其操作方法 | |
US6658525B1 (en) | Concurrent access of an unsegmented buffer by writers and readers of the buffer | |
US11977917B2 (en) | Apparatus for data processing for simultaneously preforming artificial intelligence function processing and data collection and method therefor | |
EP0090137A2 (en) | Access control system for digital data storage device |
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 |