CN113939843A - 图形上下文跳动 - Google Patents
图形上下文跳动 Download PDFInfo
- Publication number
- CN113939843A CN113939843A CN202080043155.7A CN202080043155A CN113939843A CN 113939843 A CN113939843 A CN 113939843A CN 202080043155 A CN202080043155 A CN 202080043155A CN 113939843 A CN113939843 A CN 113939843A
- Authority
- CN
- China
- Prior art keywords
- state
- context
- processor
- identifier
- encapsulation
- 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.)
- Pending
Links
- 238000005538 encapsulation Methods 0.000 claims abstract description 57
- 238000000034 method Methods 0.000 claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 32
- 230000004044 response Effects 0.000 claims description 9
- 230000009191 jumping Effects 0.000 abstract description 6
- 101150060512 SPATA6 gene Proteins 0.000 description 98
- 230000015654 memory Effects 0.000 description 28
- 239000000872 buffer Substances 0.000 description 19
- 230000008901 benefit Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 238000009877 rendering Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 239000003086 colorant Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Multimedia (AREA)
- Image Generation (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种上下文跳动的方法,包括在图形处理单元(GPU)[104]的命令处理器[122]处接收条件执行包[202],所述条件执行包提供对应于封装状态的散列标识符。所述封装状态包括遵循所述条件执行包的一个或多个上下文状态包[204、206]。至少部分地基于确定所述封装状态的所述散列标识符是否匹配当前存储在所述GPU处的多个活动上下文状态散列标识符中的一者而执行遵循所述封装状态的命令包[210]。
Description
背景技术
图形处理单元(GPU)是专门被设计为执行图形处理任务的处理单元。GPU可例如执行终端用户应用程序(诸如视频游戏应用程序)所要求的图形处理任务。通常,终端用户应用程序与GPU之间存在若干层软件。例如,在一些情况下,终端用户应用程序经由应用程序编程接口(API)与GPU通信。API允许终端用户应用程序以标准化格式而非依赖于GPU的格式输出图形数据和命令。
许多GPU包括用于执行图形应用程序指令的图形流水线。图形流水线包括同时对指令的不同步骤进行工作的多个处理块。流水线使得GPU能够利用执行指令所需的步骤之间存在的并行性。因此,GPU可在更短的时间段内执行更多指令。图形流水线的输出取决于图形流水线的状态。图形流水线的状态基于由图形流水线本地存储的状态包(例如,包括纹理处理程序、着色器常量、变换矩阵等的上下文特定常量)而进行更新。由于在本地维护上下文特定常量,因此图形流水线可快速地访问所述上下文特定常量。
附图说明
通过参考附图,可更好地理解本公开,并且本公开的许多特征和优点对于本领域技术人员来说会变得显而易见。在不同的附图中使用相同的附图标记来指示类似或相同的项。
图1是示出根据一些实施方案的包括被配置为采用图形上下文跳动的图形处理单元的系统的框图。
图2是示出根据一些实施方案的在图1的GPU处处理命令流指令的框图。
图3是示出根据一些实施方案的在图1的GPU处排空封装状态的框图。
图4是示出根据一些实施方案的图形上下文跳动的方法的流程图。
具体实施方式
为了进行图形处理,系统的中央处理单元(CPU)经常会向GPU发出调用,诸如绘制调用,该调用包括指示GPU根据CPU的指令来绘制对象的一系列命令。由于通过GPU图形流水线来处理绘制调用,因此绘制调用使用各种可配置的设置来决定如何渲染网格和纹理。常见的GPU工作流涉及更新存储器阵列中的常量的值,然后使用常量作为数据来执行绘制操作。存储器阵列包含一组给定常量的GPU可被视为处于特定状态。被称为上下文状态(也被称为“渲染状态”、“GPU状态”或简称“状态”)的这些常量和设置会影响渲染的各个方面,并且包括GPU渲染对象所需的信息。上下文状态提供对如何渲染网格的定义,并且包括诸如当前顶点/索引缓冲区、当前顶点/像素着色器程序、着色器输入、纹理、材料、照明、透明度等的信息。上下文状态包含在图形流水线处渲染的绘图或绘图集所特有的信息。因此,上下文是指正确地绘制某些内容所需的GPU流水线状态。
许多GPU使用被称为流水线的技术来执行指令。流水线使得GPU能够同时对指令的不同步骤进行工作,从而利用执行指令所需的步骤之间存在的并行性。因此,GPU可在更短的时间段内执行更多指令。由图形流水线输出的视频数据取决于图形流水线本地存储的状态包(例如,上下文特定常量)。在GPU中,通常设置GPU的状态、执行绘制操作,然后在下一个绘制操作之前仅对状态进行少量的改变。从一个绘制操作到下一个绘制操作,状态设置(例如,存储器中的常量的值)通常保持不变。
在本地维护上下文特定常量,以便由图形流水线快速访问。然而,GPU硬件通常受存储器限制,并且仅在本地存储有限数量的上下文状态集(且因此对所述有限数量的上下文状态集进行操作)。因此,为了开始对一组新的上下文寄存器进行工作,GPU通常会改变上下文状态,因为图形流水线状态需要改变来绘制其他内容。在通过对新的寄存器值进行编程来应用任何新的状态更新之前,GPU通过将当前寄存器拷贝到新分配的上下文中对新供应的上下文执行上下文滚动以释放当前上下文。由于本地存储的上下文状态集数量有限,因此GPU有时会耗尽上下文,并且图形流水线在等待上下文释放,使得可能分配新的上下文时会停滞。在各种实施方案中,CPU重复使用先前活动的上下文状态,并且在没有上下文跳动的情况下将释放当前上下文并分配新的上下文。如果没有可用的上下文,则GPU将必须等待一个上下文释放,从而导致停滞。
为了提高GPU系统性能,图1至图4示出了用于通过将基于散列的标识符指派给上下文状态并切换到匹配的上下文(被称为上下文跳动)而不用分配新的上下文来进行上下文状态管理的系统和方法。在各种实施方案中,一种上下文跳动的方法包括在图形处理单元(GPU)的命令处理器处接收条件执行包,该条件执行包提供对应于封装状态的散列标识符。封装状态包括遵循条件执行包的一个或多个上下文状态包。至少部分地基于确定封装状态的散列标识符是否匹配当前存储在GPU处的多个活动上下文状态散列标识符中的一者而执行遵循封装状态的命令包。在各种实施方案中,确定封装状态的散列标识符是否匹配多个散列标识符中的一者包括查询上下文管理器以搜索散列表,该散列表存储当前存储在GPU处的多个活动上下文状态散列标识符。
在一些实施方案中,上下文跳动还包括响应于确定散列标识符匹配多个活动上下文状态散列标识符中的一者而排空封装状态。在其他实施方案中,响应于确定散列标识符不匹配多个活动上下文状态散列标识符中的任一者而分配新的上下文状态集。另外,在执行命令包之前执行封装状态的一个或多个上下文状态包。跳动回到现有的上下文(即,不用分配新的上下文)降低了耗尽上下文并使得图形流水线停滞的可能性。
图1是示出根据一些实施方案的包括被配置为采用图形上下文跳动的图形处理单元的系统100的框图。在所描绘的示例中,系统100包括中央处理单元(CPU)102、图形处理单元(GPU)104、由GPU 104使用的装置存储器106,以及由CPU 102和GPU 104共享的系统存储器108。在各种实施方案中,GPU 104可为专用装置、若干装置,或者集成到更大的装置(例如,北桥装置)中。存储器106、108包括多种随机存取存储器(RAM)中的任一种或其组合,诸如双倍数据速率动态随机存取存储器(DDR DRAM)、图形DDR DRAM(GDDR DRAM)等。GPU 104经由总线110与CPU 102、装置存储器106和系统存储器108通信。总线110包括在计算系统中使用的任何类型的总线,包括但不限于外围部件接口(PCI)总线、加速图形端口(AGP)总线、PCI Express(PCIE)总线等。
CPU 102将意图在GPU 104处进行处理的指令发送到命令缓冲区。在各种实施方案中,命令缓冲区可位于例如系统存储器108中,耦合到总线110的单独存储器(例如,装置存储器106)中。
如图所示,CPU 102包括诸如执行一个或多个应用程序112以生成图形命令的多个进程,以及用户模式驱动程序116(或其他驱动程序,诸如内核模式驱动程序)。在各种实施方案中,一个或多个应用程序112包括利用GPU 104的功能的应用程序。应用程序112可包括指示GPU 104来渲染图形用户界面(GUI)和/或图形场景的一个或多个图形指令。例如,图形指令可包括定义将由GPU 104渲染的一组一个或多个图形基元的指令。
在一些实施方案中,应用程序112利用图形应用程序编程接口(API)114来调用用户模式驱动程序116(或类似的GPU驱动程序)。用户模式驱动程序116向GPU 104发出一个或多个命令以将一个或多个图形基元渲染成可显示的图形图像。基于由应用程序112向用户模式驱动程序116发出的图形指令,用户模式驱动程序116制定一个或多个图形命令,该一个或多个图形命令指定由GPU 104执行来渲染图形的一个或多个操作。在一些实施方案中,用户模式驱动程序116是在CPU 102上运行的应用程序112的一部分。例如,用户模式驱动程序116可为在CPU 102上运行的游戏应用程序的部分。类似地,内核模式驱动程序(未示出)可为在CPU 102上运行的操作系统的部分。由用户模式驱动程序116生成的图形命令包括意图生成用于显示的图像或帧的图形命令。用户模式驱动程序116将从API 114接收到的标准代码翻译成GPU 104理解的本机格式的指令。用户模式驱动程序116通常由GPU 104的制造商编写。由用户模式驱动程序116生成的图形命令被发送到GPU 104以供执行。GPU 104然后可执行图形命令并且使用结果来控制在显示屏上显示什么内容。
在各种实施方案中,CPU 102将意图用于GPU 104的图形命令发送到命令缓冲区118。虽然为了便于说明,在图1中描绘为单独的模块,但是命令缓冲区118可位于例如装置存储器106、系统存储器108或可通信地耦合到总线110的单独存储器中。命令缓冲区118临时存储包括对GPU 104的输入的图形命令流。图形命令流包括例如一个或多个命令包和/或一个或多个状态更新包。在一些实施方案中,命令包包括指示GPU 104对将输出用于显示的图像数据执行处理的绘制命令(也可互换地称为“绘制调用”)。例如,绘制命令可指示GPU104渲染由存储在存储器中的一组一个或多个顶点定义(例如,在顶点缓冲区中定义)。在一些实施方案中,由该组一个或多个顶点定义的几何图形对应于待渲染的多个基元。
在各种实施方案中,状态命令(也可互换地称为“上下文状态包”或“状态更新包”)指示GPU 104改变一个或多个状态变量(例如,绘制颜色)。在一些实施方案中,上下文状态包包括更新GPU 104处的图形流水线120的状态的一个常量或一组常量。状态更新包可例如更新在执行绘制调用期间将绘制或混合的颜色。尽管此处在绘制调用和上下文状态包的上下文中进行描述,但是本领域技术人员将认识到,在不脱离本公开的范围的情况下可利用其他命令。
GPU 104包括命令处理器122,该命令处理器(例如,经由命令缓冲区118和总线110)从CPU 102接收将执行的命令流中的命令并且协调这些命令在图形流水线120处的执行。在各种实施方案中,命令处理器122以硬件、固件、软件或其组合来实现。如上所述,命令流包括一个或多个绘制调用和上下文状态包。命令处理器122还管理被写入图形流水线120的寄存器的上下文状态。在各种实施方案中,响应于接收到上下文状态包,命令处理器基于上下文状态包而将GPU 104中的一个或多个状态寄存器设置为特定值和/或基于上下文状态包而配置一个或多个固定功能处理单元。
尽管在图1中被示出为具有一个命令处理器122,但是本领域技术人员将认识到,GPU 104可包括任何数量和类型的命令处理器,以从硬件队列检索并执行包。在各种实施方案中,“包”是指对单个命令进行编码的存储器缓冲区。不同类型的包可存储在硬件队列、存储器缓冲区等中。另外,如本文所使用,术语“块”是指包括在ASIC、CPU的执行流水线和/或GPU的图形流水线中的处理模块。这种处理模块可包括但不限于算术逻辑单元、乘/除单元、浮点单元、颜色缓冲区、顶点着色器、像素着色器、裁剪单元或如对于本领域技术人员来说将显而易见的一些其他处理模块。
图形流水线120包括多个阶段124,包括阶段A 124a、阶段B 124b以及直到阶段N124n。在各种实施方案中,各个阶段124各自表示图形流水线120的执行绘制调用的各个方面的阶段。命令处理器122将上下文状态更新写入上下文寄存器的本地组以存储和更新操作状态。如图1所示,命令处理器将状态更新写入当前状态寄存器126。
常规的上下文管理技术将信息或命令包分派到缓冲区(有时被称为队列缓冲区)。以类似先进先出(FIFO)的顺序创建此类队列缓冲区,运行中的程序向所述队列缓冲区提交命令。然而,由于GPU处的存储器容量,因此在任何给定时刻,仅可存储有限数量的唯一渲染状态集且因此在图形流水线中对所述有效数量的唯一渲染状态集进行操作。因此,顺序进程可在一个状态集上运行,但是如果驱动程序在执行绘制操作之后改变上下文状态,则一旦GPU改变为不同的状态集,CP就必须执行一系列的寄存器先写入后读取,以确保完成。用于新的上下文的这种上下文滚动过程包括命令处理器122沿图形流水线向下发送事件以释放当前上下文。一旦完成,就通知命令处理器并且该命令处理器允许重复使用上下文(或分配新的上下文)。然而,这些上下文滚动过程增加了在与当前上下文相关联的绘制调用通过图形流水线的各个阶段完成处理之前耗尽供使用的上下文并使得图形流水线停滞的可能性。一般来说,GPU操作是流水线式的,其中在任何给定时刻都在进行不同量的工作;使得图形流水线停滞,以至于进行中的任务在改变状态之前必须引退增加了使GPU后端饥饿的可能性。
为了更有效地管理上下文状态,GPU 104包括图形上下文管理器128。图形上下文管理器128维护散列表130,该散列表存储与当前存储在GPU 104的寄存器处的上下文状态集相对应的一组基于散列的标识符。图形上下文管理器128还包括上下文分配逻辑模块132,以执行散列标识符搜索和本文所描述的上下文分配操作。如本文中进一步所描述,用户模式驱动程序116提供唯一散列标识符以标识用户模式驱动程序116编程到图形命令中的新的上下文状态。在各种实施方案中,用户模式驱动程序116经由新的状态包(或其他令牌方法)对命令处理器122指示扫描GPU 104处的所有活动状态,并且确定新的上下文的唯一散列标识符是否匹配当前活动的上下文状态的多个散列标识符(即,存储在散列表130处的散列标识符)中的任一者。
在一些实施方案中,命令处理器122查询图形上下文管理器128以搜索散列表130来确定散列表130是否存储对应于新的上下文的所请求的唯一散列标识符(即,指示该上下文可供使用)。如果散列表130不包含所请求的唯一散列标识符,则图形上下文管理器128使用所请求的唯一散列标识符来分配新的上下文。然而,如果散列表130确实包含所请求的唯一散列标识符(从而通知所请求的唯一散列标识符对应于已经在GPU 104处活动的状态),则图形上下文管理器128返回该上下文。
代替分配新的上下文或潜在地等待上下文释放(从而导致图形流水线停滞),GPU104通过切换回到已经在GPU 104处运行的现有的匹配的上下文,而不用分配新的上下文(例如,以类似于高速缓存存储器如何共享高速缓存行的方式)来执行上下文跳动。因此,如果状态集仍然可用(即,加载在GPU 104处),则GPU 104可在多个状态集上运行非顺序进程。这种方法更有效地利用GPU 104的机载状态并且减少与耗尽供使用的上下文相关联的停滞次数,尤其是在应用程序112在少量状态之间快速切换的情况下(这将涉及上下文滚动以及在常规的上下文管理技术中在每次绘制之后状态改变时获取新的状态,并且会快速地耗尽上下文)。
图2是示出根据一些实施方案的CPU 102发送意图用于GPU 104的指令的实施方案的框图。如图所示,CPU 102向命令缓冲区118发送指令。命令缓冲区118临时存储来自CPU102的命令流的命令。命令流包括例如条件执行包、状态更新包和绘制调用包。在各种实施方案中,如对于本领域技术人员来说将显而易见的,其他命令可被包括在命令流中。
条件执行包是由图1的用户模式驱动程序116(或其他软件驱动程序)插入的命令,该命令提供对应于遵循条件执行包的一个或多个上下文状态包的散列标识符。在一些实施方案中,条件执行包还包括对应于下一组上下文状态包的用dword(这是“双字”的简称)表示的大小的dword数据。由于上下文状态包的大小从单个dword到多个dword不等,因此dword数据定义与条件执行包的散列标识符相关联的N个上下文状态包,并且还表示设置遵循该散列标识符的接下来的一次或多次绘制的上下文状态所需的所有上下文寄存器更新。此外,如本文中进一步所描述,dword数据还定义在图形上下文管理器128返回并指示与所述散列标识符相关联的上下文已经在GPU 104处活动的情况下将丢弃的多个dword。基于该确定,命令处理器122基于所述给定的dword数据大小而从命令缓冲区118中进行抽取,直到与该特定散列ID相关联的所有状态(如由条件执行包所提供)被丢弃为止。
状态更新包是更新图形流水线120的状态的一个常量或常量的集合。状态更新包可例如更新在执行绘制命令期间将混合的颜色。在一些实施方案中,状态更新包包括对GPU104的多上下文寄存器进行编程的设置上下文包。设置上下文包包括对包中的状态进行编程所需的所有数据。在其他实施方案中,状态更新包还包括加载上下文包,该加载上下文包需要在将状态写入GPU 104的上下文寄存器之前从存储器中获取上下文信息。绘制调用包是使图形流水线120对将输出用于显示的数据执行处理的命令。
绘制调用的执行取决于自上一次绘制调用以来检索到的所有状态更新。例如,图2示出了包括在命令流中的六个命令:(1)条件执行包202,(2)第一状态更新包204,(3)第二状态更新包206,(4)第三状态更新包208,(5)第一绘制调用包210,以及(6)第二绘制调用包212。绘制调用包210取决于第一、第二和第三状态更新包204至208,因为这些是在下一个绘制命令(即,绘制调用包210)之前由条件执行包202封装的状态更新。如本文所使用,术语“封装”是指用于定义给定的散列标识符的多个包。因此,术语“封装状态”是指可根据所述给定的散列标识符是否可用于(例如,存储在GPU 104的寄存器处)进行上下文跳动/切换而有条件地执行或丢弃的多个上下文状态包。换句话说,封装状态是用于定义给定的散列标识符的上下文状态包的集合。
在一个实施方案中,由GPU 104执行的操作的输出取决于当前上下文状态214。在各种实施方案中,当前上下文状态214是基于各种上下文特定常量的值,诸如存储在状态寄存器中的纹理处理程序、着色器常量、变换矩阵等。如图2所示,当前上下文状态214包括寄存器216A至216N,所述寄存器表示任何数量和类型(例如,通用寄存器)的状态寄存器和指令指针。应当注意,当前上下文状态214还可包括定义GPU 104的当前架构状态的其他变量和其他值。还应当注意,处理单元的“上下文状态”也可被称为处理单元的“上下文”或“状态”。在各种实施方案中,处理单元是GPU(例如,图1至图2的GPU 104)。在其他实施方案中,处理单元包括其他类型的处理单元。应当注意,术语“处理单元”和“处理器”在本文中可互换地使用。
在操作中,命令处理器122接收条件执行包202。在下一个绘制命令(例如,绘制调用包210)之前,条件执行包202向命令处理器122通知与即将到来的状态更新包204至208相关联的唯一散列标识符。命令处理器122查询上下文管理器128以搜索散列表130来确定由条件执行包202提供的唯一散列标识符在GPU 104处是否活动(并且因此是否存储在散列表130处)。
如图2所示,条件执行包202提供唯一散列标识符XYZ。命令处理器122查询上下文管理器128并且确定散列表130中不存在散列标识符XYZ。因此,基于查询未命中,上下文管理器128引退硬件中的现有散列标识符中的一者(如在散列表130处所跟踪)并且分配新的上下文。在各种实施方案中,上下文管理器128引退散列表130中的最近最少使用(LRU)的不活动散列标识符。引退的散列标识符被针对关于所述新的上下文的查询供应的散列标识符(例如,本次讨论中的散列标识符XYZ)替换。另外,基于确定在散列表130处没有散列标识符XYZ的匹配,上下文管理器128往回向命令处理器122指示查询未命中并且返回新的上下文。命令处理器122然后通过执行状态更新包204至208来处理封装状态。换句话说,查询未命中使GPU 104执行上下文滚动来分配新的上下文,执行即将到来的状态更新包204至208,并且利用新的散列标识符(即,散列标识符XYZ)来设置下一个状态。
图3是示出根据一些实施方案的排空封装状态的框图。在另一个实施方案中,但继续参考图2,命令缓冲区118处的命令流300包括五个命令:(1)条件执行包302、(2)第一状态更新包304、(3)第二状态更新包306、(4)第三状态更新包308,以及(5)绘制调用包310。绘制调用包310取决于第一、第二和第三状态更新包304至308,因为这些是在下一个绘制命令(即,绘制调用包310)之前由条件执行包302封装的状态更新。第一、第二和第三状态更新包304至308统称为封装状态312。在此实施方案中,封装状态312包括三个上下文状态包(即,如由条件执行包302所定义),所述上下文状态包可根据所述给定的散列标识符是否可用于(例如,存储在GPU 104的寄存器处)进行上下文跳动/切换而有条件地执行或丢弃。
如图3所示,条件执行包302提供唯一散列标识符ABC。返回参考图2,命令处理器122查询上下文管理器128并且确定散列表130中存在散列标识符ABC。因此,基于该查询命中,上下文管理器128返回与所查询的散列标识符(即,散列标识符ABC)相关联的上下文。命令处理器122然后排空封装状态312(例如,跳过并丢弃状态更新包304至308)并且指派匹配查询命中的上下文以使用现有的上下文散列标识符来执行绘制调用包310。通过确定期望的散列标识符可供使用、切换到该散列标识符的上下文并且丢弃可能会重新定义该上下文的任何命令包,GPU 104通过实现所请求的散列标识符当前在GPU硬件处可用并且切换到所述散列标识符,而不会因缺乏可用的上下文而迫使处理器停滞来提高操作效率。
图4是示出根据一些实施方案的图形上下文跳动的方法400的流程图。在框402处,图形处理单元(GPU)的命令处理器接收条件执行包,该条件执行包提供对应于封装状态的散列标识符。例如,参考图2,命令处理器122从命令缓冲区118接收条件执行包202。条件执行包202定义对应于遵循条件执行包的一个或多个上下文状态包(例如,图2的状态更新包204至208)的封装状态。在各种实施方案中,条件执行包202定义与封装状态相关联的唯一散列标识符(例如,图2的条件执行包202处的散列标识符XYZ或图3的条件执行包302处的散列标识符ABC)。另外,在一些实施方案中,条件执行包202还包括对应于封装状态的一组上下文状态包的大小的dword数据。
在框404处,命令处理器确定封装状态的散列标识符是否匹配当前存储在GPU处的多个活动上下文状态散列标识符中的一者。例如,参考图2,命令处理器122查询上下文管理器128以搜索散列表130,该散列表存储当前存储在GPU处的多个活动上下文状态散列标识符。
如果命令处理器确定封装状态的散列标识符不匹配当前存储在GPU处的多个活动上下文状态散列标识符中的任一者,则方法400进行到框406。然而,如果命令处理器确定封装状态的散列标识符匹配当前存储在GPU处的多个活动上下文状态散列标识符中的一者,则方法400进行到框408。
在框406处,并继续参考图2,上下文管理器128引退硬件中不活动的现有散列标识符中的一者(如在散列表130处所跟踪)并且基于来自上下文管理器128的查询未命中确定散列表130中不存在散列标识符XYZ而分配新的上下文。在一些实施方案中,上下文管理器128引退散列表130中的最近最少使用(LRU)的散列标识符。在框410处,上下文管理器128利用针对关于所述新的上下文的查询供应的散列标识符(例如,本次讨论中的散列标识符XYZ)替换引退的散列标识符。另外,在各种实施方案中,上下文管理器128往回向命令处理器122指示查询未命中并且返回新的上下文。
在框412处,命令处理器122通过执行状态更新包204至208来处理封装状态。换句话说,查询未命中使GPU 104执行上下文滚动来分配新的上下文状态集,执行即将到来的状态更新包204至208,并且利用新的散列标识符(即,散列标识符XYZ)来设置下一个状态。随后,在框414处,命令处理器122执行遵循封装状态的命令包(例如,图2的状态绘制调用包210)。
现在返回到框408,并参考图3,上下文管理器128基于来自上下文管理器128的查询命中确定散列表130中存在所查询的散列标识符(例如,如由图3的条件执行包302所提供的散列标识符ABC)而将与散列标识符ABC相关联的上下文返回到命令处理器122。在框416处,命令处理器122排空封装状态312(例如,跳过并丢弃状态更新包304至308)并且指派匹配查询命中的上下文以使用现有的上下文散列标识符来执行绘制调用包310。随后,在框418处,命令处理器122执行遵循被绕过的封装状态312的命令包。通过确定期望的散列标识符可供使用、切换到该散列标识符的上下文并且丢弃可能会重新定义该上下文的任何命令包,GPU 104通过实现所请求的散列标识符当前在GPU硬件处可用并且切换到所述散列标识符,而不会因缺乏可用的上下文而迫使处理器停滞来提高操作效率。
在各种实施方案中,当上下文被滚动时,沿图形流水线向下发送上下文完成事件。上下文管理器使计数器递增,从而指示存在未完成的上下文完成事件。此外,在各种实施方案中,只有在图形流水线中不存在待决的上下文完成事件时才允许上下文再循环。
出于说明性目的而非限制,本文中在基于GPU的图形流水线的上下文状态而执行绘制命令流的GPU方面描述了根据各种实施方案的图形上下文跳动系统。然而,应当了解,这种图形上下文跳动系统适用于基于相应系统的状态而执行命令流的其他类型的ASIC或系统。基于本文中包含的描述,相关领域的技术人员将理解如何在此类其他类型的系统中实现本发明的实施方案。另外,本领域技术人员将认识到,本文中阐述了许多细节(例如,处理器配置的具体数量和布置、微架构细节、逻辑分区/集成细节、操作序列、类型、系统部件的相互关系、存储在GPU处的唯一上下文状态集的数量等)。然而,应当理解,在不脱离本公开的范围的情况下,可针对任意数量的单独寄存器、寄存器组和/或唯一上下文状态集来执行本文中描述的图形上下文跳动。
如本文所公开,在一些实施方案中,一种方法包括:在图形处理单元(GPU)的命令处理器处接收条件执行包,所述条件执行包提供对应于封装状态的标识符,其中所述封装状态包括遵循所述条件执行包的一个或多个上下文状态包;以及至少部分地基于确定所述封装状态的所述标识符是否匹配当前存储在所述GPU处的多个活动上下文状态标识符中的一者而执行遵循所述封装状态的命令包。在一方面,确定所述封装状态的所述标识符是否匹配多个标识符中的一者包括查询上下文管理器以搜索标识符表,所述标识符表存储当前存储在所述GPU处的所述多个活动上下文状态标识符。在另一方面,所述方法包括:响应于确定所述标识符匹配所述多个活动上下文状态标识符中的一者,排空所述封装状态;以及将所述多个活动上下文状态标识符中的所述匹配的一者指派给遵循所述封装状态的所述命令包。
在一方面,所述方法包括:响应于确定所述标识符不匹配所述多个活动上下文状态标识符中的任一者,分配新的上下文状态集;以及在执行所述命令包之前执行所述封装状态的所述一个或多个上下文状态包。在另一方面,所述方法包括:从所述标识符表引退当前存储在所述GPU处的所述多个活动上下文状态标识符中的一者;以及将所述新的上下文状态集的对应于所述封装状态的所述标识符存储在所述标识符表处。在又一方面,所述命令包包括绘制调用。在又一方面,所述命令包指定多个状态更新包的所述封装状态的大小。
在一些实施方案中,一种处理器包括:多个状态寄存器;以及命令处理器,其中所述命令处理器被配置为:接收条件执行包,所述条件执行包提供对应于封装状态的标识符,其中所述封装状态包括遵循所述条件执行包的一个或多个上下文状态包;以及至少部分地基于确定所述封装状态的所述标识符是否匹配当前存储在所述处理器处的多个活动上下文状态标识符中的一者而执行遵循所述封装状态的命令包。在一方面,所述处理器包括:上下文管理器,所述上下文管理器包括标识符表,所述标识符表存储当前存储在所述处理器处的所述多个活动上下文状态标识符。在另一方面,所述处理器被配置为查询所述上下文管理器以在所述标识符表中搜索所述提供的标识符。
在一方面,所述处理器还被配置为:响应于确定所述标识符匹配所述多个活动上下文状态标识符中的一者,排空所述封装状态;以及将所述多个活动上下文状态标识符中的所述匹配的一者指派给遵循所述封装状态的所述命令包。在另一方面,所述处理器还被配置为:响应于确定所述标识符不匹配所述多个活动上下文状态标识符中的任一者,分配新的上下文状态集;以及在执行所述命令包之前执行所述封装状态的所述一个或多个上下文状态包。在又一方面,所述处理器还被配置为:从所述标识符表引退当前存储在所述处理器处的所述多个活动上下文状态标识符中的一者;以及将所述新的上下文状态集的对应于所述封装状态的所述标识符存储在所述标识符表处。在再一方面,所述命令包指定多个状态更新包的所述封装状态的大小。
在一些实施方案中,一种非暂时性计算机可读介质体现可执行指令集,所述可执行指令集操纵至少一个处理器进行以下操作:在所述处理器的命令处理器处接收条件执行包,所述条件执行包提供对应于封装状态的标识符,其中所述封装状态包括遵循所述条件执行包的一个或多个上下文状态包;以及至少部分地基于确定所述封装状态的所述标识符是否匹配当前存储在所述处理器处的多个活动上下文状态标识符中的一者而执行遵循所述封装状态的命令包。在一方面,所述可执行指令集还操纵至少一个处理器进行以下操作:查询上下文管理器以搜索标识符表,所述标识符表存储当前存储在所述处理器处的所述多个活动上下文状态标识符。在另一方面,所述可执行指令集还操纵至少一个处理器进行以下操作:响应于确定所述标识符匹配所述多个活动上下文状态标识符中的一者,排空所述封装状态;以及将所述多个活动上下文状态标识符中的所述匹配的一者指派给遵循所述封装状态的所述命令包。
在一方面,所述可执行指令集还操纵至少一个处理器进行以下操作:响应于确定所述标识符不匹配所述多个活动上下文状态标识符中的任一者,分配新的上下文状态集;以及在执行所述命令包之前执行所述封装状态的所述一个或多个上下文状态包。在另一方面,所述可执行指令集还操纵至少一个处理器进行以下操作:从所述标识符表引退当前存储在所述处理器处的所述多个活动上下文状态标识符中的一者;以及将所述新的上下文状态集的对应于所述封装状态的所述标识符存储在所述标识符表处。在再一方面,所述命令包指定多个状态更新包的所述封装状态的大小。
计算机可读存储介质可包括在使用期间可由计算机系统访问以将指令和/或数据提供到计算机系统的任何非暂时性存储介质或非暂时性存储介质的组合。此类存储介质可包括但不限于光学介质(例如,压缩光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或快闪存储器),或者基于微机电系统(MEMS)的存储介质。计算机可读存储介质可嵌入计算系统(例如,系统RAM或ROM)中,固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的快闪存储器),或者经由有线或无线网络耦合到计算机系统(例如,网络可访问存储(NAS))。
在一些实施方案中,上文所描述的技术的某些方面可由执行软件的处理系统的一个或多个处理器实现。软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。软件可包括在由一个或多个处理器执行时操纵一个或多个处理器来执行上文所描述的技术的一个或多个方面的指令和某些数据。非暂时性计算机可读存储介质可包括例如磁盘或光盘存储装置、固态存储装置(诸如快闪存储器、高速缓存、随机存取存储器(RAM)或一个或多个其他非易失性存储器装置)等。存储在非暂时性计算机可读存储介质上的可执行指令可采用源代码、汇编语言代码、对象代码或由一个或多个处理器解译或可以其他方式执行的其他指令格式。
应当注意,并不需要上文在一般描述中所描述的所有活动或元件,可能不需要特定活动或装置的一部分,并且可执行一个或多个其他活动,或者可包括除所描述的那些元件之外的元件。更进一步地,列举活动的次序不一定是执行活动的次序。另外,已经参考具体实施方案描述了各个概念。然而,本领域普通技术人员应当了解,在不脱离如所附权利要求中所阐述的本公开的范围的情况下,可作出各种修改和改变。因此,本说明书和附图将被视为说明性而非限制性的,并且所有此类修改都意图被包括在本公开的范围内。
上文已经相对于具体实施方案描述了益处、其他优点以及问题的解决方案。然而,所述益处、优点、问题的解决方案以及可使任何益处、优点或解决方案显现或变得更突出的任何特征都不应被解释为是任何或所有权利要求的关键、必需或必要特征。此外,上文所公开的特定实施方案仅仅是说明性的,因为所公开的主题可按受益于本文教义的本领域技术人员显而易见的不同但等效的方式来修改和实践。除了如所附权利要求中所描述的之外,并不意图限制于本文所展示的构造或设计的细节。因此,明显的是,上文所公开的特定实施方案可被更改或修改,并且所有此类变化都被认为是在所公开的主题的范围内。因此,本文所寻求的保护正如在所附权利要求中阐述的那般。
Claims (20)
1.一种方法,所述方法包括:
在图形处理单元(GPU)[104]的命令处理器[122]处接收条件执行包[202],所述条件执行包提供对应于封装状态的标识符,其中所述封装状态包括遵循所述条件执行包的一个或多个上下文状态包[204、206];以及
至少部分地基于确定所述封装状态的所述标识符是否匹配当前存储在所述GPU处的多个活动上下文状态标识符中的一者而执行遵循所述封装状态的命令包[210]。
2.如权利要求1所述的方法,其中确定所述封装状态的所述标识符是否匹配多个标识符中的一者包括:
查询上下文管理器[128]以搜索标识符表[130],所述标识符表存储当前存储在所述GPU处的所述多个活动上下文状态标识符。
3.如权利要求2所述的方法,所述方法还包括:
响应于确定所述标识符匹配所述多个活动上下文状态标识符中的一者,排空所述封装状态;以及
将所述多个活动上下文状态标识符中的所述匹配的一者指派给遵循所述封装状态的所述命令包。
4.如权利要求2所述的方法,所述方法还包括:
响应于确定所述标识符不匹配所述多个活动上下文状态标识符中的任一者,分配新的上下文状态集;以及
在执行所述命令包之前执行所述封装状态的所述一个或多个上下文状态包。
5.如权利要求4所述的方法,所述方法还包括:
从所述标识符表引退当前存储在所述GPU处的所述多个活动上下文状态标识符中的一者;以及
将所述新的上下文状态集的对应于所述封装状态的所述标识符存储在所述标识符表处。
6.如权利要求1所述的方法,其中所述命令包包括绘制调用。
7.如权利要求1所述的方法,其中所述命令包指定多个状态更新包的所述封装状态的大小。
8.一种处理器[100],所述处理器包括:
多个状态寄存器[216];以及
命令处理器[122],其中所述命令处理器被配置为:
接收条件执行包[202],所述条件执行包提供对应于封装状态的标识符,其中所述封装状态包括遵循所述条件执行包的一个或多个上下文状态包[204、206];以及
至少部分地基于确定所述封装状态的所述标识符是否匹配当前存储在所述处理器处的多个活动上下文状态标识符中的一者而执行遵循所述封装状态的命令包[210]。
9.如权利要求8所述的处理器,所述处理器还包括:
上下文管理器[128],所述上下文管理器包括标识符表[130],所述标识符表存储当前存储在所述处理器处的所述多个活动上下文状态标识符。
10.如权利要求9所述的处理器,其中所述处理器被配置为查询所述上下文管理器以在所述标识符表中搜索所述提供的标识符。
11.如权利要求9所述的处理器,其中所述处理器还被配置为:
响应于确定所述标识符匹配所述多个活动上下文状态标识符中的一者,排空所述封装状态;以及
将所述多个活动上下文状态标识符中的所述匹配的一者指派给遵循所述封装状态的所述命令包。
12.如权利要求9所述的处理器,其中所述处理器还被配置为:
响应于确定所述标识符不匹配所述多个活动上下文状态标识符中的任一者,分配新的上下文状态集;以及
在执行所述命令包之前执行所述封装状态的所述一个或多个上下文状态包。
13.如权利要求12所述的处理器,其中所述处理器还被配置为:
从所述标识符表引退当前存储在所述处理器处的所述多个活动上下文状态标识符中的一者;以及
将所述新的上下文状态集的对应于所述封装状态的所述标识符存储在所述标识符表处。
14.如权利要求8所述的处理器,其中所述命令包指定多个状态更新包的所述封装状态的大小。
15.一种非暂时性计算机可读介质,所述非暂时性计算机可读介质体现可执行指令集,所述可执行指令集操纵至少一个处理器[100]进行以下操作:
在所述处理器的命令处理器[122]处接收条件执行包[202],所述条件执行包提供对应于封装状态的标识符,其中所述封装状态包括遵循所述条件执行包的一个或多个上下文状态包[204、206];以及
至少部分地基于确定所述封装状态的所述标识符是否匹配当前存储在所述处理器处的多个活动上下文状态标识符中的一者而执行遵循所述封装状态的命令包[210]。
16.如权利要求15所述的非暂时性计算机可读介质,所述可执行指令集还操纵至少一个处理器进行以下操作:
查询上下文管理器[128]以搜索标识符表[130],所述标识符表存储当前存储在所述处理器处的所述多个活动上下文状态标识符。
17.如权利要求16所述的非暂时性计算机可读介质,所述可执行指令集还操纵至少一个处理器进行以下操作:
响应于确定所述标识符匹配所述多个活动上下文状态标识符中的一者,排空所述封装状态;以及
将所述多个活动上下文状态标识符中的所述匹配的一者指派给遵循所述封装状态的所述命令包。
18.如权利要求16所述的非暂时性计算机可读介质,所述可执行指令集还操纵至少一个处理器进行以下操作:
响应于确定所述标识符不匹配所述多个活动上下文状态标识符中的任一者,分配新的上下文状态集;以及
在执行所述命令包之前执行所述封装状态的所述一个或多个上下文状态包。
19.如权利要求18所述的非暂时性计算机可读介质,所述可执行指令集还操纵至少一个处理器进行以下操作:
从所述标识符表引退当前存储在所述处理器处的所述多个活动上下文状态标识符中的一者;以及
将所述新的上下文状态集的对应于所述封装状态的所述标识符存储在所述标识符表处。
20.如权利要求15所述的非暂时性计算机可读介质,其中所述命令包指定多个状态更新包的所述封装状态的大小。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/426,613 US11169811B2 (en) | 2019-05-30 | 2019-05-30 | Graphics context bouncing |
US16/426,613 | 2019-05-30 | ||
PCT/US2020/035203 WO2020243482A1 (en) | 2019-05-30 | 2020-05-29 | Graphics context bouncing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113939843A true CN113939843A (zh) | 2022-01-14 |
Family
ID=73550703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080043155.7A Pending CN113939843A (zh) | 2019-05-30 | 2020-05-29 | 图形上下文跳动 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11169811B2 (zh) |
EP (1) | EP3977270A4 (zh) |
JP (1) | JP7402897B2 (zh) |
KR (1) | KR102682383B1 (zh) |
CN (1) | CN113939843A (zh) |
WO (1) | WO2020243482A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11694384B2 (en) * | 2020-10-30 | 2023-07-04 | Qualcomm Incorporated | Fast incremental shared constants |
US20230076376A1 (en) * | 2021-09-09 | 2023-03-09 | Texas Instruments Incorporated | Resource access in a microcontroller |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060187196A1 (en) * | 2005-02-08 | 2006-08-24 | Underkoffler John S | System and method for gesture based control system |
US7634637B1 (en) * | 2005-12-16 | 2009-12-15 | Nvidia Corporation | Execution of parallel groups of threads with per-instruction serialization |
US20100131549A1 (en) * | 2006-02-08 | 2010-05-27 | Oblong Industries, Inc. | Multi-process interactive systems and methods |
US7979683B1 (en) * | 2007-04-05 | 2011-07-12 | Nvidia Corporation | Multiple simultaneous context architecture |
US20160055609A1 (en) * | 2014-08-25 | 2016-02-25 | Advanced Micro Devices, Inc. | Graphics processing method, system, and apparatus |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050195186A1 (en) * | 2004-03-02 | 2005-09-08 | Ati Technologies Inc. | Method and apparatus for object based visibility culling |
US7545381B2 (en) * | 2005-11-10 | 2009-06-09 | Via Technologies, Inc. | Interruptible GPU and method for context saving and restoring |
US8593465B2 (en) * | 2007-06-13 | 2013-11-26 | Advanced Micro Devices, Inc. | Handling of extra contexts for shader constants |
US8736624B1 (en) * | 2007-08-15 | 2014-05-27 | Nvidia Corporation | Conditional execution flag in graphics applications |
US8139070B1 (en) * | 2007-10-03 | 2012-03-20 | Matrox Graphics, Inc. | Systems for and methods of context switching in a graphics processing system |
US9003389B2 (en) * | 2010-05-25 | 2015-04-07 | Red Hat, Inc. | Generating an encoded package profile based on executing host processes |
US9086813B2 (en) * | 2013-03-15 | 2015-07-21 | Qualcomm Incorporated | Method and apparatus to save and restore system memory management unit (MMU) contexts |
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 |
US11416282B2 (en) * | 2015-05-26 | 2022-08-16 | Blaize, Inc. | Configurable scheduler in a graph streaming processing system |
US10437637B1 (en) * | 2015-05-26 | 2019-10-08 | Thin CI, Inc. | Configurable scheduler for graph processing on multi-processor computing systems |
US10397362B1 (en) * | 2015-06-24 | 2019-08-27 | Amazon Technologies, Inc. | Combined cache-overflow memory structure |
GB2543866B (en) * | 2016-03-07 | 2017-11-01 | Imagination Tech Ltd | Task assembly for SIMD processing |
US20180191632A1 (en) * | 2016-12-30 | 2018-07-05 | Intel Corporation | Flexible packet scheduling |
US10572258B2 (en) | 2017-04-01 | 2020-02-25 | Intel Corporation | Transitionary pre-emption for virtual reality related contexts |
US20190207868A1 (en) * | 2019-02-15 | 2019-07-04 | Intel Corporation | Processor related communications |
US10841225B2 (en) * | 2019-03-06 | 2020-11-17 | Arista Networks, Inc. | Load balancing using dynamically resizable consistent hashing |
-
2019
- 2019-05-30 US US16/426,613 patent/US11169811B2/en active Active
-
2020
- 2020-05-29 WO PCT/US2020/035203 patent/WO2020243482A1/en unknown
- 2020-05-29 KR KR1020217042931A patent/KR102682383B1/ko active IP Right Grant
- 2020-05-29 JP JP2021571386A patent/JP7402897B2/ja active Active
- 2020-05-29 EP EP20813774.5A patent/EP3977270A4/en active Pending
- 2020-05-29 CN CN202080043155.7A patent/CN113939843A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060187196A1 (en) * | 2005-02-08 | 2006-08-24 | Underkoffler John S | System and method for gesture based control system |
US7634637B1 (en) * | 2005-12-16 | 2009-12-15 | Nvidia Corporation | Execution of parallel groups of threads with per-instruction serialization |
US20100131549A1 (en) * | 2006-02-08 | 2010-05-27 | Oblong Industries, Inc. | Multi-process interactive systems and methods |
US7979683B1 (en) * | 2007-04-05 | 2011-07-12 | Nvidia Corporation | Multiple simultaneous context architecture |
US20160055609A1 (en) * | 2014-08-25 | 2016-02-25 | Advanced Micro Devices, Inc. | Graphics processing method, system, and apparatus |
CN105469354A (zh) * | 2014-08-25 | 2016-04-06 | 超威半导体公司 | 图形处理方法、系统和设备 |
Also Published As
Publication number | Publication date |
---|---|
KR20220003141A (ko) | 2022-01-07 |
JP2022534438A (ja) | 2022-07-29 |
EP3977270A4 (en) | 2023-06-28 |
KR102682383B1 (ko) | 2024-07-08 |
JP7402897B2 (ja) | 2023-12-21 |
US11169811B2 (en) | 2021-11-09 |
WO2020243482A1 (en) | 2020-12-03 |
EP3977270A1 (en) | 2022-04-06 |
US20200379767A1 (en) | 2020-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10026145B2 (en) | Resource sharing on shader processor of GPU | |
US8698828B2 (en) | Graphics processing systems | |
US7366842B1 (en) | Creating permanent storage on the fly within existing buffers | |
EP3138006B1 (en) | System and method for unified application programming interface and model | |
US9619918B2 (en) | Heterogenious 3D graphics processor and configuration method thereof | |
US8085280B2 (en) | Asymmetric two-pass graphics scaling | |
US10726520B2 (en) | Modifying processing of commands in a command queue based on subsequently received data | |
KR102547879B1 (ko) | z-컬링 후 중첩 단편들 식별 또는 제거 | |
US9563466B2 (en) | Method and apparatus for supporting programmable software context state execution during hardware context restore flow | |
CN113939843A (zh) | 图形上下文跳动 | |
US11734869B2 (en) | Graphics processing | |
US10580106B2 (en) | Graphics processing method utilizing predefined render chunks | |
CN115775198A (zh) | 多核gpu中的重叠几何形状处理 | |
US11900123B2 (en) | Marker-based processor instruction grouping | |
CN108536644B (zh) | 由装置端推核心入队列的装置 | |
US10157443B1 (en) | Deferred batching of incremental constant loads | |
US20240169619A1 (en) | Graphics processors | |
US20240169663A1 (en) | Graphics Processors | |
US20240169639A1 (en) | Graphics processors | |
US20240169647A1 (en) | Graphics processors | |
US20240169645A1 (en) | Graphics processors | |
US20240169644A1 (en) | Graphics processors | |
US20240169649A1 (en) | Graphics processors | |
CN112068908A (zh) | 图形处理方法及相关装置和设备 | |
EP4411651A1 (en) | Graphics processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |