CN111448546A - 处理单元中的工作负载的精确挂起和恢复 - Google Patents
处理单元中的工作负载的精确挂起和恢复 Download PDFInfo
- Publication number
- CN111448546A CN111448546A CN201880077333.0A CN201880077333A CN111448546A CN 111448546 A CN111448546 A CN 111448546A CN 201880077333 A CN201880077333 A CN 201880077333A CN 111448546 A CN111448546 A CN 111448546A
- Authority
- CN
- China
- Prior art keywords
- workload
- subset
- pipelines
- executing
- memory
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 117
- 239000000725 suspension Substances 0.000 title claims abstract description 27
- 230000015654 memory Effects 0.000 claims abstract description 110
- 230000004044 response Effects 0.000 claims abstract description 44
- 230000001419 dependent effect Effects 0.000 claims abstract description 20
- 238000000034 method Methods 0.000 claims description 43
- 238000003860 storage Methods 0.000 description 44
- 230000002085 persistent effect Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000000977 initiatory effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000011960 computer-aided design Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 239000000872 buffer Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003068 static effect Effects 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/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
- G06F9/505—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 considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
Abstract
在处理单元[105]的流水线的第一子组[420、421、422、423、424、425、426、427]中执行第一工作负载。在所述处理单元的所述流水线的第二子组[410、415]中执行第二工作负载。所述第二工作负载依赖于所述第一工作负载。将所述第一工作负载和所述第二工作负载挂起,并且响应于将所述第一工作负载和所述第二工作负载挂起而将所述第一工作负载和所述第二工作负载的状态信息[155]存储在第一存储器中。在一些情况下,与执行所述第一工作负载和所述第二工作负载同时地在所述处理单元的所述流水线的第三子组中执行第三工作负载。响应于第四工作负载的完成或挂起而基于所述存储的状态信息来恢复第一流水线和第二流水线。
Description
背景技术
处理单元(诸如图形处理单元(GPU))典型地实现能够将指令流水线化或同时地执行用于一个或多个工作负载的指令的多个处理器核心。GPU中的处理器核心使用由一系列可编程着色器和固定功能硬件块形成图形流水线图形来处理三维(3-D)图形。例如,在帧中可见的对象的3-D模型由一组图元(诸如三角形、其他多边形或补片)表示,该组图元在图形流水线中进行处理以产生像素值来显示给用户。GPU中的流水线还能够处理可与或可不与图形工作负载相关联的计算工作负载。在一些情况下,在计算工作负载与图形工作负载之间存在依赖性。例如,在GPU的一个流水线中执行的计算工作负载可向在GPU的一个或多个其他流水线中执行的图形工作负载提供输入(诸如将被渲染的移动对象的位置)。
附图说明
通过参考附图,可更好地理解本公开,并且本公开的许多特征和优点对本领域技术人员来说可显而易见。在不同的附图中使用相同的参考符号表示类似或等同的项。
图1是根据一些实施方案的包括用于生成旨在输出到显示器的视觉图像的图形处理单元(GPU)的处理系统的框图。
图2描绘了根据一些实施方案的能够处理高阶几何图元以生成三维(3-D)场景的光栅化图像的图形流水线。
图3是根据一些实施方案的支持在不同的流水线上执行的依赖的工作负载的挂起/恢复操作的处理系统的框图。
图4是根据一些实施方案的支持在流水线的子组上执行的依赖的工作负载的挂起/恢复操作的处理系统的框图。
图5是根据一些实施方案的将在GPU中的流水线的子组上执行的第一应用程序挂起以允许第二应用程序利用流水线的子组的方法的流程图。
图6是根据一些实施方案的将状态信息从一个或多个挂起存储器移动到持久性存储器的方法的流程图。
具体实施方式
典型地,抢先在处理单元(诸如图形处理单元(GPU))的流水线中执行的工作负载以允许其他更高优先级工作负载在流水线中执行。在处理单元的流水线中执行的工作负载的工作状态存储在片上存储器中,诸如矢量通用寄存器(VGPR)、本地数据共享(LDS)等等。抢先在处理单元的流水线中执行的工作负载以允许另一个工作负载执行要求在开始执行抢先的工作负载之前将来自流水线的当前执行的工作负载数据(以及对应的状态信息)保存到外部片外存储器中,从而在处理新的工作负载中引入延迟。此外,典型的抢先方案不考虑在处理单元中实现的不同的流水线上执行的工作负载之间是否存在依赖性。因此,如果在被抢先的流水线上执行的进程与在其他流水线上执行的进程之间存在依赖性,则对流水线的抢先可能负面地影响在其他流水线上执行的进程。在抢先时未能考虑到工作负载的相互依赖性还影响了当进程被恢复时流水线的状态,在这种情况下,进程可能无法在执行功能单元级别上恢复为精确地相同状态。
图1至图6示出了“组抢先”技术,该技术支持在精确的位置处在不同的工作负载之间进行低延迟切换而不要求处理单元中的流水线在抢先之前排空。在一些实施方案中,处理单元中的流水线的第一子组执行第一工作负载,而处理单元中的流水线的第二子组执行第二工作负载,该第二工作负载可依赖于或可不依赖于第一工作负载。例如,如果第一工作负载是计算工作负载而第二工作负载是从计算工作负载接收输入的图形工作负载,则第二工作负载依赖于第一工作负载。在一些实施方案中,第三工作负载与第一工作负载和第二工作负载同时地在流水线的第三子组上执行,例如,如果操作系统在流水线的第三子组上执行的话。第一工作负载和第二工作负载的执行被挂起,并且流水线的第一子组和第二子组的状态信息被存储在第一存储器中。一旦第一工作负载和第二工作负载已经被抢先,流水线的第一子组和第二子组就变得可供用来执行其他工作负载。在一些实施方案中,潜在地结合其他工作负载,使用流水线的第一子组和第二子组执行第四工作负载。第三工作负载继续与第四工作负载以及其他工作负载(如果存在的话)同时地执行。
响应于第四工作负载以及其他工作负载(如果存在的话)的完成或挂起,从第一存储器读取第一工作负载和第二工作负载的状态信息并且分别用于配置流水线的第一子组和第二子组。然后,第一工作负载和第二工作负载的执行分别在流水线的第一子组和第二子组上恢复为在挂起之前存在的精确地相同状态。例如,在一组单指令多数据(SIMD)处理器核心上执行的着色器的多个实例被抢先并且然后在抢先之前执行着色器的同一组SIMD处理器核心上恢复并处于相同的状态。恢复从在挂起之前存在的精确地相同状态执行被抢先的工作负载对于在多个流水线上执行以产生最终结果的相互依赖工作负载(例如,由游戏应用程序生成的计算工作负载和图形工作负载)来说特别地重要。在一些实施方案中,存储在第一存储器中的状态信息响应于处理单元断电而写入持久性存储装置。然后,该状态信息响应于处理单元通电而从持久性存储装置写入第一存储器。
图1是根据一些实施方案的包括用于生成旨在输出到显示器110的视觉图像的图形处理单元(GPU)105的处理系统100的框图。GPU105是多线程处理器,其包括多个计算单元111、112、113、114,这些计算单元在本文中统称为“计算单元111至114”。计算单元111至114被配置为同时地或并行地执行指令。计算单元111至114的一些实施方案被配置为实现相对小的运算集,诸如视频渲染所要求的基本数学运算。尽管为了清楚起见,图1中示出了四个计算单元111至114,但是GPU 105的一些实施方案包括数十个或数百个或数千个计算单元。计算单元111至114的一些实施方案在多个数据集上同时地执行单个程序的多个实例(或波),例如作为单指令多数据(SIMD)波。例如,计算单元111至114被配置为在数据阵列或流上执行相同序列的操作。
处理系统100包括存储器115。存储器115的一些实施方案被实现为动态随机存取存储器(DRAM)。然而,还可使用包括静态随机存取存储器(SRAM)、非易失性RAM等的其他类型的存储器来实现存储器115。在所示的实施方案中,GPU 105通过总线120与存储器115通信。然而,GPU 105的一些实施方案通过直接连接或经由其他总线、桥、开关、路由器等与存储器115通信。GPU 105执行存储在存储器115中的指令,并且GPU 105将信息(诸如执行的指令的结果)存储在存储器115中。例如,存储器115存储来自将由GPU 105中的计算单元111至114执行的程序代码的指令的副本125。
处理系统100包括用于执行指令的中央处理单元(CPU)130。CPU130的一些实施方案包括被优化用于顺序串行处理的多个处理器核心131、132、133、134(在本文中统称为“处理器核心131至134”)。处理器核心131至134实现使得CPU 130能够执行在处理系统100中执行的应用程序所要求的全套计算的相对大的指令集(例如,相对于由计算单元111至114实现的小指令集而言)和大的特征集。CPU 130的一些实施方案能够使用处理器核心131至134来实现多个流水线。CPU 130还连接到总线120并因此经由总线120与GPU 105和存储器115通信。CPU 130执行存储在存储器115中的指令,诸如程序代码135,并且CPU 130将信息(诸如执行的指令的结果)存储在存储器115中。CPU 130还能够通过向GPU 105发出绘制调用来发起图形处理。绘制调用是由CPU 130生成并传输到GPU 105的命令,以用于指示GPU 105渲染帧中的对象(或对象的一部分)。响应于绘制调用,GPU 105渲染对象以产生提供到显示器110的像素值,该显示器使用像素值来显示表示渲染的对象的图像。
输入/输出(I/O)引擎140处理与显示器110以及处理系统100的其他元件(诸如键盘、鼠标、打印机、外部磁盘等)相关联的输入或输出操作。I/O引擎140耦合到总线120,使得I/O引擎140能够与GPU105、存储器115或CPU 130通信。在所示的实施方案中,I/O引擎140被配置为读取存储在外部存储介质145上的信息,所述外部存储介质诸如压缩光盘(CD)、数字通用光盘(DVD)、联网服务器等。外部存储介质145存储表示用于实现应用程序(诸如视频游戏)的程序代码的信息。外部存储介质145上的程序代码被写入存储器115以形成将由GPU105执行的指令的副本125或将由CPU 130执行的程序代码135。
多线程GPU 105中的计算单元111至114共享用于支持GPU 105中的波的执行的资源。GPU 105的一些实施方案实现一组矢量通用寄存器(VGPR,为了清楚起见,图1中未示出),所述VGPR存储在计算单元111至114上执行的波的状态信息。同时地在计算单元111至114上执行的波之间共享VGPR。例如,每个波被分配VGPR的子组以存储该波的状态信息。波还共享GPU 105的其他资源,包括在同时地执行的波间划分的本地数据共享、由波共享以访问本地高速缓存的存储器带宽等。多线程CPU 130中的处理器核心131至134也共享资源。
GPU 105被配置为实现用于同时地或并行地执行多个工作负载的多个流水线。计算单元111至114的一些实施方案用于实现执行图形工作负载以渲染对象的图像来呈现在显示器110上的图形流水线。计算单元111至114的一些实施方案还用于实现计算流水线以执行计算工作负载。例如,计算单元111至114的第一子组实现一个或多个图形流水线,而计算单元111至114的第二子组实现一个或多个计算流水线。CPU 130的处理器核心131至134的一些实施方案还被配置为实现多个流水线并因此以类似于GPU 105的方式操作。因此,为了清楚起见,在GPU 105的背景下呈现以下讨论,应理解,相同的技术适用于CPU 130。
在一些情况下,在GPU 105的不同的流水线上执行的工作负载依赖于彼此。例如,计算工作负载用于执行将由图形工作负载渲染的场景的模型的计算。计算工作负载执行计算,诸如计算场景内的移动对象的位置。图形工作负载渲染表示场景的包括移动对象的部分的图像。图形工作负载依赖于计算工作负载,因为计算工作负载向图形工作负载提供渲染场景所需的输入,例如,移动对象的位置和定向。因此,由计算流水线中的计算工作负载生成的数据从计算流水线传送到一个或多个图形流水线并可供在图形流水线中执行的图形工作负载使用。
被实现来驱动GPU 105的软件或驱动器150能够例如使用由生成工作负载的应用程序提供的信息来显式地或隐式地识别工作负载之间的依赖性。当在使用由GPU 105中的软件或硬件调度的计算单元111至114实现的不同流水线上执行的工作负载之间存在依赖性时,选择性地将依赖的工作负载挂起而不将在使用计算单元111至114实现的其他流水线上执行的其他工作负载挂起。在一些实施方案中,第一工作负载在GPU 105的流水线的第一子组中执行。第二工作负载在GPU 105的流水线的第二子组中执行,并且第二工作负载依赖于第一工作负载。GPU 105将第一工作负载和第二工作负载挂起。GPU 105还响应于将第一工作负载和第二工作负载挂起而将第一工作负载和第二工作负载的状态信息155存储在第一存储器中。例如,GPU 105将状态信息155存储在存储器115中。工作负载的状态信息的示例包括绘制状态信息、分派状态信息、SIMD标识符、着色器引擎标识符、存储器管理信息、资源信息等等。
为了恢复挂起的工作负载,使用状态信息155将第一流水线和第二流水线配置为在第一工作负载和第二工作负载挂起之前存在的状态。然后,恢复第一工作负载和第二工作负载的执行。依赖的工作负载在与依赖的工作负载被挂起时正在其上执行所述依赖工作负载的相同计算单元111至114上恢复。因此,依赖的工作负载恢复在挂起之前存在的确切状况下执行。
图2描绘了根据一些实施方案的能够处理高阶几何图元以生成三维(3-D)场景的光栅化图像的图形流水线200。图形流水线200在图1中所示的GPU 105的一些实施方案中实现。例如,在一些实施方案中,图形流水线200使用图1中所示的GPU 105中的计算单元111至114来实现。
图形流水线200包括输入汇编器202,该输入汇编器被配置为从存储资源201中访问信息,该信息用于定义表示场景的模型的部分的对象。可以软件实现的顶点着色器203逻辑上接收图元的单个顶点作为输入并输出单个顶点。着色器(诸如顶点着色器203)的一些实施方案实现单指令多数据(SIMD)处理,使得多个顶点例如由图1中所示的计算单元111至114同时地处理。图2中所示的图形流水线200实现统一着色器模型,使得包括在图形流水线200中的所有着色器具有在共享SIMD计算单元上的相同执行平台。因此,包括顶点着色器203的着色器使用公共资源组(在本文中被称为统一着色器池204)来实现。统一着色器池204的一些实施方案使用在图1中所示的GPU 105中实现的计算单元111至114来实现。
外壳着色器205在输入的高阶补片或用于定义输入的补片的控制点上操作。外壳着色器205输出曲面细分因子和其他补片数据。由外壳着色器205生成的图元任选地提供到曲面细分器206。曲面细分器206从外壳着色器205接收对象(诸如补片),并且例如通过基于由外壳着色器205提供到曲面细分器106的曲面细分因子来曲面细分输入的对象以生成识别与输入的对象相对应的图元的信息。曲面细分将输入的高阶图元(诸如补片)细分为表示更精细级别的细节的低阶输出图元集,例如如指定通过曲面细分过程产生的图元的粒度的曲面细分因子所指示。因此,场景的模型由较少数量的高阶图元表示(以节约存储器或带宽),并且通过曲面细分高阶图元来添加附加的细节。
域着色器207输入域位置和(任选地)其他补片数据。域着色器207在提供的信息上操作并基于输入的域位置和其他信息来生成单个顶点以用于输出。几何着色器208接收输入的图元并输出由几何着色器208基于输入的图元来生成的多达四个图元。一个图元流被提供到光栅化器209,并且多达四个图元流级联到存储资源201中的缓冲器。光栅化器209执行着色操作和其他操作,诸如剪辑、透视分割、剪裁和视口选择等。像素着色器210输入像素流并响应于输入的像素流而输出零或另一个像素流。输出合并器块211在从像素着色器210接收的像素上执行混合、深度、模板或其他操作。
图形流水线200的各级能够访问由通过不同级使用统一着色器池204中的处理资源执行的波共享的存储资源215。存储资源215的部分作为图1中所示的GPU 105的部分在芯片上实现,或使用图1中所示的存储器115的一些实施方案在芯片外实现。尽管图2中示出了单个图形流水线200,但是存储资源215(以及统一着色器池204)的一些实施方案由多个图形流水线共享。
存储资源215包括LDS 220,该LDS用于多个波的工作组内的读取/写入通信和同步。存储资源215还包括VGPR 225,该VGPR存储定义波的当前状态的状态信息,诸如由波执行的操作的中间结果。存储资源215还包括高速缓存分级结构230,该高速缓存分级结构用于高速缓存信息,诸如顶点数据、纹理数据以及由图形流水线200的各级中的一个或多个频繁地使用的其他数据。存储资源215还包括挂起存储器235,该挂起存储器存储与一个或多个应用程序(诸如一个或多个游戏)相关联的挂起的工作负载的状态信息。在一些实施方案中,存储资源215还包括其他寄存器、缓冲器、存储器或高速缓存。图形流水线200的共享资源还包括存储器构架中用于支持图形流水线200的各级与存储资源215之间的通信的带宽。
图3是根据一些实施方案的支持在不同的流水线上执行的依赖的工作负载的挂起/恢复操作的处理系统300的框图。处理系统300表示图1中所示的处理系统100和图2中所示的图形流水线200的一些实施方案的部分。
处理系统300被配置为执行应用程序301、302、303,这些应用程序在本文中统称为“应用程序301至303”。应用程序301至303的一些实施方案生成同时地或并行地执行的计算工作负载和图形工作负载。例如,在一些实施方案中,应用程序301至303中的一个或多个是游戏应用程序,其利用计算工作负载(诸如物理引擎)来确定场景中的对象的位置并利用图形工作负载来渲染对象以显示给用户。因此,计算机和图形工作负载是相互依赖的。例如,在一些实施方案中,图形工作负载从计算工作负载接收输入,该输入指示将由图形工作负载渲染的对象的位置和定向。
处理系统300还实现操作系统(OS)305,以管理处理系统300的硬件和软件资源并向应用程序301至303提供公共服务。由应用程序301至303生成的工作负载经由OS 305或调度硬件/软件进行调度并提供到GPU 310。例如,应用程序301生成与计算工作负载相关联的第一指令流和与图形工作负载相关联的第二指令流。由应用程序301生成的指令被提供给GPU 310,以在GPU 310的多个流水线中同时地或并行地执行。为了清楚起见,图3中未示出多个流水线。GPU 310的流水线的一个子组用于执行计算和图形工作负载,并且GPU 310的流水线的另一个子组用于执行OS 305。
装置驱动器用于向应用程序301至303和OS 305提供对处理系统300的硬件资源的访问。在所示的实施方案中,应用程序301至303与对应的用户模式驱动器(UMD)311、312、313相关联,这些UMD在本文中统称为“UMD 311至313”。UMD 311至313响应于对应的应用程序301至303的编译或执行而附加到对应的应用程序301至303并典型地实现图形或计算应用编程接口(API)。OS 305与紧密地结合OS 305的内核工作的内核模式驱动器(KMD)315对接,以提供对低级别硬件特征(在一些情况中,包括但不限于调度、电源管理等等)的访问。
处理系统300中的存储器的部分320用于存储挂起的应用程序的状态信息。部分320在图1中所示的存储器115和图2中所示的存储资源215的一些实施方案中实现。在所示的实施方案中,部分320包括挂起存储器321、322、323,这些挂起存储器在本文中统称为“挂起存储器321至323”。挂起存储器321至323中的每一个与应用程序301至303中的对应一个相关联并用于存储对应的应用程序301至303的状态信息。挂起存储器321至323响应于应用程序301至303发起在处理系统300中执行、响应于将应用程序301至303挂起或响应于处理系统300中的其他状况或事件而被分配给对应的应用程序301至303。
响应于恢复执行对应的应用程序301至303而从挂起存储器321至323读取状态信息。例如,用于配置执行应用程序301的计算和图形工作负载的多个流水线的状态信息响应于应用程序301在GPU 310上的执行挂起而存储在挂起存储器321中。应用程序302开始在GPU310的通过应用程序301的挂起而变得可用的流水线上执行。响应于应用程序302的完成或挂起,将存储在挂起存储器321中的状态信息提供到GPU 310,该GPU使用该状态信息来配置先前执行应用程序301的计算或图形工作负载的相同计算单元或固定功能硬件上的图形流水线。然后,GPU 310恢复从与应用程序301被挂起时所处的状态相同的状态执行应用程序301。
将单独的挂起存储器321至323分配给应用程序301至303使得能够以任意顺序挂起或恢复应用程序301至303。例如,如果应用程序301被挂起,则应用程序302、303中的任一个(或具有存储在部分320中的对应挂起存储器中的状态信息的任何其他应用程序)可基于存储在对应的挂起存储器322、323中的状态信息来恢复。因此,挂起存储器321至323不像存储器堆栈那样操作。此外,在运行时执行在应用程序301至303之间的用户模式任务切换,而无需对应的应用程序301至303干预。相反,OS 305执行应用程序301至303的挂起或恢复。此外,可由OS 305挂起的应用程序301至303的数量仅受存储器的可用于分配挂起存储器321至323的部分320的大小限制。
处理系统300的一些实施方案包括持久性存储器325,当处理系统300的其他部分断电时,如果分配的挂起存储器321至323在断电时不保留信息,例如,如果挂起存储器321至323使用易失性存储器元件(诸如DRAM)来实现,则该持久性存储器能够保留信息。例如,当电力从存储器的部分320移除并且提供到挂起存储器321至323的电压不足以保留用于实现部分320的存储器元件中的数据时,持久性存储器325保留信息。持久性存储器325的实现方式的示例包括使用以下项实现的存储器:磁性存储装置,诸如硬盘、固态存储装置(诸如固态驱动器(SSD))、非易失性随机存取存储器(NVRAM);附接到与处理系统300内的其他元件不同的电源网的存储器元件;或者允许持久性存储器325在挂起存储器321至323因电力或电压的损失或减小而不能保留信息时保留信息的其他技术或结构。
处理系统300能够通过响应于供应到挂起存储器321至323的电力或电压的损失或减小而将挂起存储器321至323中的一个或多个中的信息移动到持久性存储器325来在断电/通电周期后恢复执行应用程序301至303中的任一个。例如,应用程序301至303中的一个或多个的状态信息响应于处理系统300发起断电操作而从挂起存储器321至323中的一个或多个移动到持久性存储器325。持久性存储器325在处理系统300处于断电状态时保留状态信息。然后,状态信息响应于电力或电压被恢复到挂起存储器321至323、例如响应于处理系统300返回到通电状态而从持久性存储器325写回到挂起存储器321至323中的一个或多个。然后,应用程序301至303能够使用存储在挂起存储器321至323中的信息来从先前存储的状态开始操作,例如,应用程序301至303能够恢复从在将处理系统300断电之前存在的相同状态进行操作。
图4是根据一些实施方案的支持在流水线的子组上执行的依赖的工作负载的挂起/恢复操作的处理系统400的框图。处理系统400表示图1中所示的处理系统100、图2中所示的图形流水线200和图3中所示的处理系统300的一些实施方案的部分。
处理系统400包括GPU 405,该GPU实现图形流水线410、415和计算流水线420、421、422、423、424、425、426、427,这些计算流水线在本文中统称为“计算流水线420至427”。图形流水线410、415或计算流水线420至427的一些实施方案使用图2中所示的图形流水线200实现。图形流水线410、415和计算流水线420至427分别被配置为同时地或并行地执行图形工作负载和计算负载。取决于实现方式,图形流水线410、415和计算流水线420至427可共享或可不共享在GPU 405中实现的可编程和固定功能执行硬件。如本文所讨论,在一些实施方案中,在图形流水线410、415和计算流水线420至427上执行的工作负载依赖于彼此。
OS 430(诸如图3中所示的OS 305)和一个或多个应用程序435(诸如图3中所示的应用程序301至303)在处理系统400上执行。OS 430和应用程序435能够同时地或串行地使用GPU 405中的流水线的不同子组执行。在所示的实施方案中,OS 430在流水线的包括图形流水线415和计算流水线420、421、423的子组上执行。应用程序435在流水线的包括图形流水线410和计算流水线422、424至427的不同的互斥子组上执行。正在执行OS 430和应用程序435的子组的状态由各组对应的状态信息定义。
处理系统400包括一个或多个挂起存储器440,诸如图2中所示的挂起存储器235和图3中所示的挂起存储器321至323。挂起存储器440被分配给应用程序435,并且用于在应用程序435被挂起时存储状态信息。例如,流水线410、422、424至427的状态信息响应于由应用程序435生成的图形工作负载和计算工作负载的执行被挂起而存储在挂起存储器440中。流水线410、422、424至427被选择性地挂起,而OS 430在流水线415、420、421上的执行继续进行而不会中断。一旦应用程序435在流水线410、422、424至427上的执行被挂起,由其他应用程序生成的其他图形工作负载或计算工作负载就被分派到流水线410、422、424至427以执行。在一些实施方案中,通过将流水线420、421、423的状态信息写入OS挂起存储器(为了清楚起见,未示出)并然后选择地性将OS工作负载在流水线420、421、423上的执行挂起来将OS430的执行挂起。也可将由OS 430和应用程序435两者生成的工作负载的执行挂起,并且对应的状态信息分别存储在OS挂起存储器和挂起存储器440中。
流水线410、422、424至427中的一些或全部的操作状态响应于其他图形或计算工作负载的完成或挂起而选择性地返回到它们先前的状态。例如,应用程序435的状态信息用于将实现流水线410、422、424至427的处理器核心配置为在将应用程序435挂起之前的状态。因此,应用程序435能够恢复精确地从当应用程序435被挂起时执行停止时所处的状态执行。在OS 430已经被挂起的情况下,通过在恢复与OS 430相关联的任何先前挂起的应用程序之前从OS挂起存储器读取状态信息并使用该信息配置流水线420、421、423来恢复OS430。
图5是根据一些实施方案的将在GPU中的流水线的子组上执行的第一应用程序挂起以允许第二应用程序利用流水线的子组的方法500的流程图。该方法500在图1中所示的处理系统100、图2中所示的图形流水线200、图3中所示的处理系统300和图4中所示的处理系统400的一些实施方案中实现。在所示的实施方案中,第二应用程序先前被挂起并且定义流水线的子组的状态的状态信息被存储在对应的挂起存储器中。然而,方法500的一些实施方案还用于发起执行先前未在处理系统中执行的应用程序。
在框505处,第一应用程序在GPU的流水线的子组上执行。例如,第一应用程序在GPU的计算流水线的子组和图形流水线的子组上执行计算工作负载和图形工作负载。第一应用程序生成第一工作负载和第二工作负载,诸如计算工作负载和图形工作负载。第二工作负载依赖于第一工作负载,例如,第一工作负载在执行期间向第二工作负载提供输入。
在判定框510处,处理系统确定是否检测到挂起状况。如果否,则GPU继续在流水线的子组上执行第一应用程序。如果检测到挂起状况,则该方法进行到框515。
在框515处,将第一应用程序的状态信息存储在第一挂起存储器中。响应于挂起状况,或响应于在处理系统中的其他状况或事件,当第一应用程序的执行开始时将第一挂起存储器分配给第一应用程序。状态信息表示流水线的正在执行由第一应用程序生成的工作负载的子组的状态。流水线的其他互斥子组继续执行其他工作负载,并且其他子组的状态信不存储在第一挂起存储器中。此时,在方法500中,流水线的在执行第一应用程序的子组可用于分配给其他应用程序。
在框520处,如果先前将第二应用程序挂起,则从第二挂起存储器读取第二应用程序的状态信息。否则,将第二应用程序作为新的应用程序执行。使用状态信息将流水线的子组重新配置为在第二应用程序的挂起之前存在的状态。因此,第二应用程序能够恢复精确地从在第二应用程序的挂起之前存在的流水线状态执行。
在框525处,处理系统使用流水线的在由从第二挂起存储器读取的状态信息表示的状态下开始的子组执行第二应用程序。
图6是根据一些实施方案的将状态信息从一个或多个挂起存储器移动到持久性存储器的方法600的流程图。该方法在图3中所示的处理系统300的一些实施方案中实现。
在框605处,将第一应用程序和第二应用程序的状态信息存储在对应的挂起存储器中。例如,在一些实施方案中,当第一应用程序在GPU中的流水线的子组上的执行被挂起时,将第一应用程序的状态信息存储在第一挂起存储器中。第二应用程序随后在流水线的子组上执行并且之后被挂起。在那时,将第二应用程序的状态信息存储在第二挂起存储器中。第三应用程序然后开始在流水线的子组上执行。
在框610处,完成了第三应用程序在流水线的子组上的执行。
在判定框615处,处理系统确定是否存在断电状况。如果否,则处理系统继续监测电源状态。如果检测到断电状况,则该方法600进行到框620。
在框620处,将第一应用程序和第二应用程序的状态信息从挂起存储器移动并存储在持久性存储器中,该持久性存储器能够在处理系统处于断电状态时保留信息。然后,处理系统断电并进入断电状态,这中断了将电力或电压供应到挂起存储器。存储在挂起存储器中的信息响应于电力供应或电压供应的中断而丢失或被破坏。
在判定框625处,处理系统确定是否存在通电状况。如果否,则处理系统继续监测电源状态。如果处理器确定存在通电状况,则该方法600进行到框630。
在框630处,将第一应用程序的状态信息从持久性存储器移动并存储在分配给第一应用程序的对应的更快但易失性第一挂起存储器中。
在框635处,将第二应用程序的状态信息从持久性存储器移动并存储在分配给第二应用程序的对应的更快但易失性第二挂起存储器中。在此时,通过使用存储的状态信息重新配置流水线来恢复在流水线的子组上执行第一应用程序或第二应用程序。
在第一方面,一种方法包括:在处理单元的流水线的第一子组中执行第一工作负载;在所述处理单元的所述流水线的第二子组中执行第二工作负载,其中所述第二工作负载依赖于所述第一工作负载;将所述第一工作负载和所述第二工作负载挂起;以及响应于将所述第一工作负载和所述第二工作负载挂起而将所述第一工作负载和所述第二工作负载的状态信息存储在第一存储器中。
在第一方面的一个实施方案中,所述方法包括:执行所述第一工作负载包括在所述处理单元的计算流水线中执行计算工作负载,并且其中执行所述第二工作负载包括在所述处理单元的图形流水线中执行图形工作负载。在另一个实施方案中,所述方法包括:与执行所述第一工作负载和所述第二工作负载同时地在所述处理单元的所述流水线的第三子组中执行第三工作负载,其中所述流水线的所述第一子组、所述第二子组和所述第三子组是互斥的。在特定实施方案中,所述方法包括:将所述第一工作负载和所述第二工作负载挂起包括将所述第一工作负载和所述第二工作负载挂起,而继续在所述流水线的所述第三子组中执行所述第三工作负载。
在第一方面的另一个实施方案中,所述方法包括:响应于将所述第一工作负载和所述第二工作负载挂起而在所述流水线的所述第一子组和所述第二子组中执行至少一个第四工作负载。在特定实施方案中,所述方法包括:响应于所述至少一个第四工作负载的完成或挂起,基于存储在所述第一存储器中的所述状态信息来配置所述流水线的所述第一子组和所述第二子组;以及在配置第一流水线和第二流水线之后,分别恢复在所述第一流水线和所述第二流水线中执行所述第一工作负载和所述第二工作负载。在更特定的实施方案中,所述方法包括:恢复执行所述第一工作负载和所述第二工作负载包括恢复在与在挂起之前执行所述第一工作负载和所述第二工作负载的一组计算单元相同的所述一组计算单元上执行所述第一工作负载和所述第二工作负载。
在第一方面的又一个实施方案中,所述方法包括:响应于使所述处理单元断电,将状态信息从所述第一存储器移动到在所述处理单元断电时保留所述状态信息的第二存储器。在特定实施方案中,所述方法包括:响应于使所述处理单元通电,将状态信息从所述第二存储器移动到所述第一存储器。
在第二方面,一种设备包括:处理单元,所述处理单元包括多个计算单元,所述多个计算单元配置为实现多个流水线,其中所述处理单元被配置为:在所述多个流水线的第一子组中执行第一工作负载;在所述多个流水线的第二子组中执行第二工作负载,其中所述第二工作负载依赖于所述第一工作负载;将所述第一工作负载和所述第二工作负载挂起;以及响应于将所述第一工作负载和所述第二工作负载挂起而将所述第一工作负载和所述第二工作负载的状态信息存储在第一存储器中。
在第二方面的一个实施方案中,所述多个流水线的所述第一子组包括被配置为执行计算工作负载的计算流水线,并且其中执行所述多个流水线的所述第二子组包括被配置为执行图形工作负载的图形流水线。在另一个实施方案中,所述处理单元被配置为与执行所述第一工作负载和所述第二工作负载同时地在所述多个流水线的第三子组中执行第三工作负载,其中所述多个流水线的所述第一子组、所述第二子组和所述第三子组是互斥的。在特定实施方案中,所述处理单元被配置为将所述第一工作负载和所述第二工作负载挂起,而继续在所述流水线的所述第三子组中执行所述第三工作负载。
在第二方面的另一个实施方案中,所述处理单元被配置为响应于将所述第一工作负载和所述第二工作负载挂起而在所述流水线的所述第一子组和所述第二子组中执行至少一个第四工作负载。在特定实施方案中,所述流水线的所述第一子组和所述第二子组响应于所述至少一个第四工作负载的完成或挂起而基于存储在所述第一存储器中的所述状态信息来配置,并且其中在配置所述流水线的所述第一子组和所述第二子组之后,所述处理单元分别恢复在所述流水线的所述第一子组和所述第二子组中执行所述第一工作负载和所述第二工作负载。在更特定的实施方案中,所述处理单元被配置为恢复在所述多个计算单元的与所述多个计算单元的在挂起之前执行所述第一工作负载和所述第二工作负载的子组相同的所述子组上执行所述第一工作负载和所述第二工作负载。
在第二方面的另一个实施方案中,所述处理单元被配置为响应于使所述处理单元断电而将状态信息从所述第一存储器移动到第二存储器,其中所述第二存储器在所述处理单元断电时保留所述状态信息。在特定实施方案中,所述处理单元被配置为响应于使所述处理单元通电而将状态信息从所述第二存储器移动到所述第一存储器。
在第三方面,一种方法包括:将在多个流水线的在处理单元的计算单元的第一子组上实现的第一子组上执行的第一工作负载挂起,其中所述工作负载之间存在依赖性;存储所述第一工作负载的状态信息;以及基于所述存储的状态信息来恢复在所述多个流水线的在计算单元的所述第一子组上实现的所述第一子组上执行所述第一工作负载。
在第三方面的一个实施方案中,将所述第一工作负载挂起包括将所述第一工作负载挂起,而在所述多个流水线的在所述计算单元的第二子组上实现的第二子组上执行至少一个第二工作负载。
在一些实施方案中,上文所描述的设备和技术在包括一个或多个集成电路(IC)装置(也被称为集成电路封装或微芯片)的系统中实现,诸如上文参考图1至图6所描述的处理系统。这些IC装置的设计和制造中可使用电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具。这些设计工具典型地表示为一个或多个软件程序。所述一个或多个软件程序包括可由计算机系统执行的代码,以便操纵计算机系统来操作表示一个或多个IC装置的电路的代码,从而执行用以设计或调整制造系统的过程的至少一部分来制造电路。这个代码可包括指令、数据或指令和数据的组合。表示设计工具或制造工具的软件指令典型地存储在可由计算系统访问的计算机可读存储介质中。同样地,表示IC装置的设计或制造的一个或多个阶段的代码可存储在相同的计算机可读存储介质或不同的计算机可读存储介质中并从其中进行访问。
计算机可读存储介质可包括任何非暂时性存储介质或非暂时性存储介质的组合,所述非暂时性存储介质在使用期间可由计算机系统访问,以将指令和/或数据提供给计算机系统。此类存储介质可包括但不限于光学介质(例如,压缩光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或快闪存储器)或基于微机电系统(MEMS)的存储介质。计算机可读介质可嵌入在计算系统中(例如,系统RAM或ROM)、固定地附接至计算系统(例如,磁性硬盘驱动器)、可移除地附接至计算系统(例如,光盘或基于通用串行总线(USB)的快闪存储器)或经由有线或无线网络而耦合至计算机系统(例如,网络可存取存储(NAS))。
在一些实施方案中,上文所描述的技术的某些方面可由执行软件的处理系统的一个或多个处理器实现。软件包括存储或以其他方式有形地体现在非暂时性计算机可读存储介质上的一个或多个可执行指令集。软件可包括在由一个或多个处理器执行时操纵一个或多个处理器来执行上文所描述的一个或多个方面的指令和某些数据。非暂时性计算机可读存储介质可包括例如磁性或光学磁盘存储装置、固态存储装置(诸如快闪存储器、高速缓存、随机存取存储器(RAM)或一个或多个其他非易失性存储器装置)等。存储在非暂时性计算机可读存储介质上的可执行指令可以源代码、汇编语言代码、对象代码或由一个或多个处理器解译或以其他方式执行的其他指令格式来实现。
应注意,并不需要上文在一般描述中所描述的所有活动或元件,特定活动或装置的一部分可能是不需要的,并且可执行一个或多个其他活动,或者可包括除所描述的那些元件之外的元件。此外,列出活动的顺序不一定是执行活动的顺序。另外,已经参考具体实施方案描述了概念。然而,本领域普通技术人员应了解,在不脱离如所附权利要求书中所阐述的本公开范围的情况下,可作出各种修改和改变。因此,本说明书和附图将被视为说明性而非限制性的,并且所有此类修改都意图被包括在本公开的范围内。
上文已经关于具体实施方案而描述了益处、其他优点以及问题解决方案。然而,所述益处、优点、问题解决方案以及可使任何益处、优点或问题解决方案出现或变得更突出的任何特征都不应被解释为是任何或所有权利要求的关键、必需或必要特征。此外,上文所公开的特定实施方案只是说明性的,因为所公开的主题可按受益于本文教义的本领域技术人员显而易见的不同但等效的方式来修改和实践。除了如所附权利要求书中所描述的之外,并不意图限制本文所展示的构造或设计的细节。因此,明显的是,上文所公开的特定实施方案可更改或修改,并且所有此类变化都被认为是在所公开的主题的范围内。因此,本文所寻求的保护正如在所附权利要求书中所阐述的那般。
Claims (20)
1.一种方法,所述方法包括:
在处理单元的流水线的第一子组中执行第一工作负载;
在所述处理单元的所述流水线的第二子组中执行第二工作负载,其中所述第二工作负载依赖于所述第一工作负载;
将所述第一工作负载和所述第二工作负载挂起;以及
响应于将所述第一工作负载和所述第二工作负载挂起而将所述第一工作负载和所述第二工作负载的状态信息存储在第一存储器中。
2.如权利要求1所述的方法,其中执行所述第一工作负载包括在所述处理单元的计算流水线中执行计算工作负载,并且其中执行所述第二工作负载包括在所述处理单元的图形流水线中执行图形工作负载。
3.如权利要求1所述的方法,所述方法还包括:
与执行所述第一工作负载和所述第二工作负载同时地在所述处理单元的所述流水线的第三子组中执行第三工作负载,其中所述流水线的所述第一子组、所述第二子组和所述第三子组是互斥的。
4.如权利要求3所述的方法,其中将所述第一工作负载和所述第二工作负载挂起包括将所述第一工作负载和所述第二工作负载挂起,而继续在所述流水线的所述第三子组中执行所述第三工作负载。
5.如权利要求1所述的方法,所述方法还包括:
响应于将所述第一工作负载和所述第二工作负载挂起而在所述流水线的所述第一子组和所述第二子组中执行至少一个第四工作负载。
6.如权利要求5所述的方法,所述方法还包括:
响应于所述至少一个第四工作负载的完成或挂起,基于存储在所述第一存储器中的所述状态信息来配置所述流水线的所述第一子组和所述第二子组;以及
在配置第一流水线和第二流水线之后,分别恢复在所述第一流水线和所述第二流水线中执行所述第一工作负载和所述第二工作负载。
7.如权利要求6所述的方法,其中恢复执行所述第一工作负载和所述第二工作负载包括恢复在与在挂起之前执行所述第一工作负载和所述第二工作负载的一组计算单元相同的所述一组计算单元上执行所述第一工作负载和所述第二工作负载。
8.如权利要求1所述的方法,所述方法还包括:
响应于使所述处理单元断电,将状态信息从所述第一存储器移动到在所述处理单元断电时保留所述状态信息的第二存储器。
9.如权利要求8所述的方法,所述方法还包括:
响应于使所述处理单元通电,将状态信息从所述第二存储器移动到所述第一存储器。
10.一种设备,所述设备包括:
处理单元,所述处理单元包括多个计算单元,所述多个计算单元配置为实现多个流水线,其中所述处理单元被配置为:
在所述多个流水线的第一子组中执行第一工作负载;
在所述多个流水线的第二子组中执行第二工作负载,其中所述第二工作负载依赖于所述第一工作负载;
将所述第一工作负载和所述第二工作负载挂起;以及
响应于将所述第一工作负载和所述第二工作负载挂起而将所述第一工作负载和所述第二工作负载的状态信息存储在第一存储器中。
11.如权利要求10所述的设备,其中所述多个流水线的所述第一子组包括被配置为执行计算工作负载的计算流水线,并且其中执行所述多个流水线的所述第二子组包括被配置为执行图形工作负载的图形流水线。
12.如权利要求10所述的设备,其中所述处理单元被配置为:
与执行所述第一工作负载和所述第二工作负载同时地在所述多个流水线的第三子组中执行第三工作负载,其中所述多个流水线的所述第一子组、所述第二子组和所述第三子组是互斥的。
13.如权利要求12所述的设备,其中所述处理单元被配置为将所述第一工作负载和所述第二工作负载挂起,而继续在所述流水线的所述第三子组中执行所述第三工作负载。
14.如权利要求10所述的设备,其中所述处理单元被配置为响应于将所述第一工作负载和所述第二工作负载挂起而在所述流水线的所述第一子组和所述第二子组中执行至少一个第四工作负载。
15.如权利要求14所述的设备,其中所述流水线的所述第一子组和所述第二子组响应于所述至少一个第四工作负载的完成或挂起而基于存储在所述第一存储器中的所述状态信息来配置,并且其中在配置所述流水线的所述第一子组和所述第二子组之后,所述处理单元分别恢复在所述流水线的所述第一子组和所述第二子组中执行所述第一工作负载和所述第二工作负载。
16.如权利要求15所述的设备,其中所述处理单元被配置为恢复在所述多个计算单元的与所述多个计算单元的在挂起之前执行所述第一工作负载和所述第二工作负载的子组相同的所述子组上执行所述第一工作负载和所述第二工作负载。
17.如权利要求10所述的设备,其中所述处理单元被配置为响应于使所述处理单元断电而将状态信息从所述第一存储器移动到第二存储器,其中所述第二存储器在所述处理单元断电时保留所述状态信息。
18.如权利要求17所述的设备,其中所述处理单元被配置为响应于使所述处理单元通电而将状态信息从所述第二存储器移动到所述第一存储器。
19.一种方法,所述方法包括:
将在多个流水线的在处理单元的计算单元的第一子组上实现的第一子组上执行的第一工作负载挂起,其中所述工作负载之间存在依赖性;
存储所述第一工作负载的状态信息;以及
基于所述存储的状态信息来恢复在所述多个流水线的在计算单元的所述第一子组上实现的所述第一子组上执行所述第一工作负载。
20.如权利要求19所述的方法,其中将所述第一工作负载挂起包括将所述第一工作负载挂起,而在所述多个流水线的在所述计算单元的第二子组上实现的第二子组上执行至少一个第二工作负载。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/828,059 | 2017-11-30 | ||
US15/828,059 US11609791B2 (en) | 2017-11-30 | 2017-11-30 | Precise suspend and resume of workloads in a processing unit |
PCT/US2018/051735 WO2019108292A1 (en) | 2017-11-30 | 2018-09-19 | Precise suspend and resume of workloads in a processing unit |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111448546A true CN111448546A (zh) | 2020-07-24 |
Family
ID=66633139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880077333.0A Pending CN111448546A (zh) | 2017-11-30 | 2018-09-19 | 处理单元中的工作负载的精确挂起和恢复 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11609791B2 (zh) |
EP (1) | EP3718005A4 (zh) |
JP (1) | JP7364564B2 (zh) |
KR (1) | KR20200084000A (zh) |
CN (1) | CN111448546A (zh) |
WO (1) | WO2019108292A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10545558B1 (en) | 2019-01-25 | 2020-01-28 | BioMech Sensor LLC | Systems and methods for elastic delivery, processing, and storage for wearable devices based on system resources |
US11132835B1 (en) * | 2020-07-17 | 2021-09-28 | Arm Limited | Suspending and resuming operations in graphics processing systems |
US11127188B1 (en) * | 2020-07-17 | 2021-09-21 | Arm Limited | Suspending and resuming operations in graphics processing systems |
US11830101B2 (en) | 2020-07-17 | 2023-11-28 | Arm Limited | Graphics processors |
TWI832078B (zh) * | 2021-05-14 | 2024-02-11 | 新加坡商聯發科技(新加坡)私人有限公司 | 語音設備及其語音互動方法,以及電腦可讀記錄媒體 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6947047B1 (en) * | 2001-09-20 | 2005-09-20 | Nvidia Corporation | Method and system for programmable pipelined graphics processing with branching instructions |
WO2007034265A1 (en) | 2005-09-21 | 2007-03-29 | Freescale Semiconductor, Inc. | System and method for storing state information |
US8854381B2 (en) * | 2009-09-03 | 2014-10-07 | Advanced Micro Devices, Inc. | Processing unit that enables asynchronous task dispatch |
US8970608B2 (en) | 2010-04-05 | 2015-03-03 | Nvidia Corporation | State objects for specifying dynamic state |
US8499305B2 (en) * | 2010-10-15 | 2013-07-30 | Via Technologies, Inc. | Systems and methods for performing multi-program general purpose shader kickoff |
US9652282B2 (en) | 2011-11-08 | 2017-05-16 | Nvidia Corporation | Software-assisted instruction level execution preemption |
WO2013100935A1 (en) * | 2011-12-28 | 2013-07-04 | Intel Corporation | A method and device to augment volatile memory in a graphics subsystem with non-volatile memory |
US9626216B2 (en) * | 2012-05-09 | 2017-04-18 | Nvidia Corporation | Graphics processing unit sharing between many applications |
US8963933B2 (en) * | 2012-07-23 | 2015-02-24 | Advanced Micro Devices, Inc. | Method for urgency-based preemption of a process |
US9659342B2 (en) | 2013-06-29 | 2017-05-23 | Intel Corporation | Mid command buffer preemption for graphics workloads |
US10217183B2 (en) | 2013-12-20 | 2019-02-26 | Nvidia Corporation | System, method, and computer program product for simultaneous execution of compute and graphics workloads |
US9396032B2 (en) * | 2014-03-27 | 2016-07-19 | Intel Corporation | Priority based context preemption |
US9449363B2 (en) | 2014-06-27 | 2016-09-20 | Intel Corporation | Sampling, fault management, and/or context switching via a compute pipeline |
US10467011B2 (en) * | 2014-07-21 | 2019-11-05 | Intel Corporation | Thread pause processors, methods, systems, and instructions |
US10282227B2 (en) * | 2014-11-18 | 2019-05-07 | Intel Corporation | Efficient preemption for graphics processors |
US10068306B2 (en) | 2014-12-18 | 2018-09-04 | Intel Corporation | Facilitating dynamic pipelining of workload executions on graphics processing units on computing devices |
US9842376B2 (en) | 2015-09-29 | 2017-12-12 | Qualcomm Incorporated | Graphics processing unit preemption with pixel tile level granularity |
US10134103B2 (en) | 2015-10-23 | 2018-11-20 | Qualcomm Incorporated | GPU operation algorithm selection based on command stream marker |
US11360808B2 (en) * | 2017-04-09 | 2022-06-14 | Intel Corporation | Efficient thread group scheduling |
-
2017
- 2017-11-30 US US15/828,059 patent/US11609791B2/en active Active
-
2018
- 2018-09-19 JP JP2020528895A patent/JP7364564B2/ja active Active
- 2018-09-19 EP EP18884332.0A patent/EP3718005A4/en active Pending
- 2018-09-19 KR KR1020207015298A patent/KR20200084000A/ko not_active Application Discontinuation
- 2018-09-19 CN CN201880077333.0A patent/CN111448546A/zh active Pending
- 2018-09-19 WO PCT/US2018/051735 patent/WO2019108292A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
KR20200084000A (ko) | 2020-07-09 |
US11609791B2 (en) | 2023-03-21 |
WO2019108292A1 (en) | 2019-06-06 |
EP3718005A4 (en) | 2021-08-04 |
JP2021504828A (ja) | 2021-02-15 |
JP7364564B2 (ja) | 2023-10-18 |
US20190163527A1 (en) | 2019-05-30 |
EP3718005A1 (en) | 2020-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11609791B2 (en) | Precise suspend and resume of workloads in a processing unit | |
EP2791910B1 (en) | Graphics processing unit with command processor | |
KR101091374B1 (ko) | 테셀레이션을 단일 패스로 수행하기 위한 방법 및 시스템 | |
US9293109B2 (en) | Technique for storing shared vertices | |
US9418616B2 (en) | Technique for storing shared vertices | |
US11532066B2 (en) | Reduced bandwidth tessellation factors | |
CN111279384B (zh) | 图形流水线中的索引的压缩和解压缩 | |
EP3701376B1 (en) | Wave creation control with dynamic resource allocation | |
US10453243B2 (en) | Primitive level preemption using discrete non-real-time and real time pipelines | |
US20140232729A1 (en) | Power efficient attribute handling for tessellation and geometry shaders | |
US12062126B2 (en) | Load multiple primitives per thread in a graphics pipeline | |
WO2023129435A1 (en) | Cache blocking for dispatches |
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 |