CN102597950B - 基于硬件排程gpu工作 - Google Patents
基于硬件排程gpu工作 Download PDFInfo
- Publication number
- CN102597950B CN102597950B CN201080048071.9A CN201080048071A CN102597950B CN 102597950 B CN102597950 B CN 102597950B CN 201080048071 A CN201080048071 A CN 201080048071A CN 102597950 B CN102597950 B CN 102597950B
- Authority
- CN
- China
- Prior art keywords
- gpu
- buffer zone
- buffer
- priority
- cpu
- 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
- 239000000872 buffer Substances 0.000 claims abstract description 289
- 238000000034 method Methods 0.000 claims abstract description 61
- 238000012545 processing Methods 0.000 claims abstract description 53
- 230000008569 process Effects 0.000 claims abstract description 40
- 238000012544 monitoring process Methods 0.000 claims abstract description 10
- 238000003860 storage Methods 0.000 claims description 35
- 230000008859 change Effects 0.000 claims description 13
- 230000008707 rearrangement Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 3
- 238000012913 prioritisation Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 12
- 238000012546 transfer Methods 0.000 description 7
- 239000012536 storage buffer Substances 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000011218 segmentation Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
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, 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
- 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, look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline, 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
Abstract
本发明揭露一种在第二处理器例如GPU上排程并执行由第一处理器例如CPU发出之命令的装置及方法。在一实施例中,在图形处理单元(Graphics Processing Unit;GPU)上执行处理的方法包括监控存储器中的一个或多个缓冲区,基于该GPU的工作量概况自该一个或多个缓冲区选择第一子集以执行于该GPU上,以及在该GPU上执行该第一子集。该GPU还可接收该一个或多个缓冲区的优先顺序,其中,该选择进一步基于该接收之优先顺序。通过在该GPU中执行命令的优先顺序确定及排程,系统性能得以提升。
Description
技术领域
本发明涉及在处理器上排程命令。
背景技术
图形处理单元(Graphics Processor Unit;GPU)的处理能力正在快速增加。该处理能力的增加至少部分归因于图形处理单元中包括的多个独立处理单元(例如SIMD(单指令多数据)处理器、ALU(算术逻辑单元))。在许多图形应用中,利用该多个独立处理单元执行并行几何计算、顶点计算和/或像素操作。例如,图形应用经常以单指令多数据(single instruction,multip data;SIMD)为特征,其中,可对多个并行数据流执行同一序列指令,以大幅提升操作速度。
另一个正在发展的趋势是将GPU用于通用计算,其可能不一定是SIMD类型计算。将用于通用计算的GPU使用称为GPGPU式计算。在该GPGPU式计算中,CPU(中央处理单元)可使用GPU执行以前通常由CPU完成的计算工作项目。
传统上,由CPU排程GPU的工作以在GPU上操作,例如,顶点流及纹理信息以及处理此类信息的指令。在CPU上执行的软件可依据某些优先顺序确定不同工作项目(下面也称作“命令”)的优先顺序,并将其排队于系统存储器缓冲区中。GPU自该系统存储器缓冲区中异步检索下一个要处理的工作项目。在GPU上,该下一个要处理之工作项目的选择基于由CPU指定的优先顺序。在一些情况下,CPU可指定以每一工作项目为基础的优先顺序;在其它情况下,CPU可指定与每一存储器缓冲区相关联的优先顺序,排队于存储器缓冲区中的任何工作项目将具有与该缓冲区相关联的优先顺序。
随着GPU中处理能力的快速增加以及用于通用目的计算之GPU使用的增加,需要更有效的方法以充分利用GPU的可用计算能力。因此,需要提供能够更有效地向工作项目分配GPU资源的方法及系统。
发明内容
本发明揭露一种在第二处理器例如GPU上排程并执行由第一处理器例如CPU发出之命令的装置及方法。在一实施例中,在图形处理单元(Graphics Processing Unit;GPU)上执行处理的方法包括:基于该GPU的工作量概况自存储器中的一个或多个缓冲区选择第一子集,以在该GPU上执行该第一子集之工作项目;以及在该GPU上执行该第一子集之工作项目。该GPU还可接收该一个或多个缓冲区的优先顺序,其中,该选择进一步基于该接收之优先顺序。
本发明的另一实施例提供在GPU上执行工作项目的系统。该GPU经组构成基于该GPU的工作量概况自存储器中的一个或多个缓冲区选择第一缓冲区子集,以在该GPU上执行该第一子集之工作项目;以及在该GPU上执行该第一子集。该GPU还可经进一步组构成接收该一个或多个缓冲区的优先顺序,其中,该选择进一步基于该接收之优先顺序。
下面参照附图详细说明本发明进一步的实施例、特征和优点,以及本发明各实施例的结构及操作。
附图说明
包含于说明书中并构成其部分的附图示例本发明实施例,而且与上面的概括说明以及下面针对实施例的详细说明一起用于解释本发明的原理。
图1显示依据本发明一实施例的系统。
图2例示依据本发明一实施例的环形缓冲区分配。
图3显示依据本发明一实施例实现于CPU中以将命令传递至GPU进行处理之过程的步骤流程图。
图4显示依据本发明一实施例实现于GPU中以处理自CPU接收之命令之过程的步骤流程图。
图5显示依据本发明一实施例实现于GPU中以确定命令的优先顺序并排程该命令以便执行之过程的步骤流程图。
图6显示依据本发明一实施例实现于GPU中以执行命令之过程的步骤流程图。
具体实施方式
本发明实施例可实质提升图形处理单元(graphics processing unit;GPU)资源的利用率。尽管这里使用具有特定应用的示例实施例说明本发明,但应当了解本发明并不以此为限。籍由阅读本文提供的教导,本领域的技术人员将了解本发明范围内的其它修改、应用和实施例,以及本发明具有显着效用的其它领域。
本发明实施例可用于任何计算机系统或计算设备,其具有至少两个处理器,例如提供工作项目(例如命令或命令缓冲区)的CPU以及处理该CPU提供之工作项目的GPU。作为示例而非限制,实施例可包括计算机,其包括笔记本电脑、个人电脑、游戏平台、娱乐平台、个人数字助理以及视频平台。
在具有CPU及GPU的系统中,GPU的利用率是整体系统性能的一个重要因素。理想情况下,人们希望GPU的利用率达到最大或接近最大。CPU提供GPU中使用的指令及数据。在传统系统中,CPU以命令缓冲区向GPU提供大体上全部的指令及数据,GPU简单地将那些命令缓冲区作为输入并执行(亦即执行那些命令缓冲区之命令)。命令缓冲区为包含指令或命令以及相关数据的数据结构。在传统系统中,由CPU确定命令缓冲区的任何优先顺序,GPU则按照CPU指定的顺序简单执行由CPU确定优先顺序的排队命令。尽管该传统方法有效,但此种方法中GPU仅依靠CPU确定GPU上要执行之工作的优先顺序还有改进的余地。本发明实施例旨在使GPU能够确定CPU指定之命令的优先顺序并排程。例如,相较CPU,GPU能够以更加动态且更加有效的方式基于其本地资源的可用性确定要执行之命令的优先顺序。而且,GPU可在CPU指定的任意命令优先顺序之外确定第二级优先顺序。
在GPU上基于硬件排程命令的系统
图1示例依据本发明一实施例的系统,其中,在GPU上执行工作项目(例如命令)。系统100包括CPU 101、系统存储器102、图形驱动器103、GPU 104以及通信基本架构105。本领域的技术人员将了解,系统100可包括在图1所示实施例之组件以外或不同于该些组件的软件、硬件以及固件组件。
CPU 101可为任何市场上有贩售的CPU、数字信号处理器(DigitalSignal Processor;DSP)、专用集成处理器(Application Specific IntegratedProcessor;ASIC)、现场可编程闸阵列(Field Programmable Gate Array;FPGA)或定制处理器。CPU 101可包括利用通信基本架构,例如通信基本架构105,耦接的一个或多个处理器。CPU 101还可包括在同一芯片上具有多个处理核心的一个或多个处理器,例如多核心处理器。在图1所示实施例中,CPU 101可为具有处理核心1 101a及核心2 101b的双核心处理器。CPU 101执行操作系统(未图示)以及一个或多个应用程序,而且是系统100的控制处理器。执行于CPU 101上的操作系统控制并促进访问系统100中的设备。执行于CPU 101上的一个或多个应用程序,包括用户应用程序,使CPU 101协调系统100之不同设备的使用,包括GPU 104及系统存储器102,以实现任务。
系统存储器102包括一个或多个存储器设备。系统存储器102通常可为动态随机访问存储器(Dynamic Random access Memory;DRAM)或用于非持久性数据储存的类似存储器设备。在一些实施例中,系统存储器102可包括例如闪存设备和/或静态随机访问存储器(StaticRandom access Memory;SRAM)等存储器设备。在一实施例中,在系统100执行期间,系统存储器102内可驻留一个或多个存储器缓冲区110,CPU 101透过该一个或多个存储器缓冲区110向GPU 104传输命令。
供CPU 101向GPU 104传输命令的存储器缓冲区110可为环形缓冲区或适合对工作项目进行有效排队的其它数据结构。下面将存储器缓冲区110也称作环形缓冲区110。自CPU 101向GPU 104传输的命令可包括指令和数据。在一些实施例中,执行于CPU 101上的应用程序和/或操作系统将具有指令和数据的数据结构输入至环形缓冲区110。CPU 101(或执行于CPU 101上的应用程序和/或操作系统)可指定与一个或多个环形缓冲区110关联的优先顺序。可基于各命令的确定优先级将命令添加至环形缓冲区。例如,CPU 101可针对高优先级命令、低优先级命令以及低延迟命令分别定义环形缓冲区。
可使用一组间接缓冲区111保存实际的命令(例如指令和数据)。例如,当CPU 101向GPU 104传输命令缓冲区时,该命令缓冲区可储存于间接缓冲区111中,并在具有相应优先级的环形缓冲区中插入指向该间接缓冲区的指针。应当了解,间接缓冲区111可实施为单级间接或多级间接。
环形缓冲区工作寄存器112可实现于系统存储器102中或系统100的其它寄存器存储设施中。例如,环形缓冲区工作寄存器112就环形缓冲区110中的命令提供CPU 101与GPU 104之间的通信。例如,向环形缓冲区110写入命令的CPU 101与读取此类命令的GPU 104可协调写入指针和读取指针,其分别标示环形缓冲区110中添加的最后项目及读取的最后项目。还可透过环形缓冲区工作寄存器112向GPU 104传输例如可用环形缓冲区110的列表、CPU 101指定的优先顺序等其它信息。
图形驱动器103可包括软件、固件、硬件或其任意组合。在一实施例中,图形驱动器103全部以软件实现。在系统100执行期间,图形驱动器103软件可驻留在系统存储器102中。图形驱动器103为CPU101以及执行于CPU 101上的应用程序提供接口和/或应用程序编程接口(Application Programming Interface;API)以访问GPU 104。一般而言,当系统100启动时,操作系统初始化适合特定GPU 104的图形驱动器103。
GPU 104为系统100提供图形加速功能以及其它计算功能。GPU104可包括多个处理器,例如单指令多数据(Single Instruction MultipleData;SIMD)处理器,其包括例如算术逻辑单元(Arithmetic and LogicUnit;ALU)等处理组件。一般而言,具有多个SIMD处理器使GPU 104非常适于执行图形处理中常见的数据并行任务。例如,当在显示器上渲染(rendering)图像时,在该显示器上渲染的每个像素上执行相同或基本相同的指令。GPU 104还可用于图形操作以外的任务,例如可从数据流的并行执行中受益的各种计算密集型任务。出于简化目的,下面以图形应用程序进行说明。不过,本领域的技术人员将了解,这里的教导适用于可执行于图形处理器上的众多其它任务。另外,本领域的技术人员将了解,GPU 104可为嵌入例如CPU 101、桥芯片(例如北桥、南桥或组合设备)等另一设备中的逻辑。
GPU 104包括的组件包括GPU存储器120、三维/计算着色器复合体(3D/CS complex)130、环形列表控制器(Ring List Controller;RLC)140以及命令处理器150。GPU存储器120提供本地存储器以供GPU104计算期间使用,其可包括DRAM或此类存储器设备。在一实施例中,GPU 120包括多个上下文保存区(Context Save Area;CSA)121。每一CSA 121提供存储区以保存在完成之前被换出GPU 104执行之工作项目的上下文,如后面所述。
3D/CS复合体130是GPU 104内主要的计算组件,其包括多个SIMD处理器以方便计算,包括并行数据流上的计算。例如,3D/CS复合体可包括顶点着色器、像素着色器、几何着色器、统一着色器以及用于GPU 104中数据计算的其它必要组件。在下面所述的实施例中,3D/CS复合体被认为是包括三维计算组件、计算着色器组件以及低延迟计算组件。自CPU 101发送至GPU 104的命令利用3D/CS复合体实现。
环形列表控制器(RLC)140包括协调存储器缓冲区(例如环形缓冲区110)之访问的功能。在一实施例中,RLC 140确定将要在GPU 104中处理的环形缓冲区140的列表,接收由CPU 101(尤其执行于CPU101上的过程或操作系统)指定的环形缓冲区140的任何优先顺序,以及以最优化GPU 104中处理资源之利用率的方式确定GPU 104上环形缓冲区的排程。例如,RLC 140与命令处理器150一起能够以保持3D/CS复合体130中各SIMD处理器处于利用率最大化或接近最大化的方式排程自CPU 101接收的环形缓冲区。
命令处理器150控制GPU 104内的处理。命令处理器自CPU 101接收要执行的指令,并协调该些指令在GPU 104上的执行。在一些情况下,命令处理器可生成将在GPU 104中执行的一个或多个命令,其与从CPU 101接收的各个命令相对应。在一实施例中,命令处理器150与RLC 140一起以最大化GPU 104资源利用率的方式实现GPU 104上命令的优先顺序确定及排程。实现命令处理器150和RLC 140之功能的逻辑指令可以硬件、固件、或软件、或其组合实现。在一实施例中,命令处理器150实施为具有微代码的RISC引擎,以实现逻辑,包括排程逻辑。
通信基本架构105提供与系统100之设备及组件的耦接。通信基本架构105可包括一个或多个传输总线,例如周边组件互连(PeripheralComponent Interconnect;PCI)、高级图形端口(Advanced Graphics Port;AGP)等。
图2例示自CPU 101传输至GPU 104的环形缓冲区。如该示例所示,在系统100操作期间的一个瞬间,系统存储器102内组构一组环形缓冲区200,其包括环形缓冲区0…环形缓冲区6(亦即201、202、203、204、205、206、207)。在该组环形缓冲区200中,GPU 104访问子集210,该子集210包括环形缓冲区0 201、环形缓冲区1 202、环形缓冲区2 203以及环形缓冲区5206。可基于CPU 101指定的标准选择子集210,例如,CPU 101可识别子集210为具有准备执行于GPU 104上的命令。例如,在将一个或多个命令排队至各环形缓冲区201、202、203以及206后,CPU 101可更新一个或多个存储器位置,例如环形缓冲区工作寄存器112中的位置,其由GPU 104读取。在另一实施例中,在向一个或多个环形缓冲区写入一个或多个命令时,CPU 101可直接写入GPU 104内的寄存器,以通知GPU 104命令缓冲区可供处理。
GPU 104定期监控系统存储器102中的环形缓冲区、系统存储器中的环形缓冲区工作寄存器和/或由CPU 101更新的其它寄存器位置,以确定环形缓冲区是否具有准备由GPU 104处理的命令缓冲区。当侦测到一个或多个环形缓冲区具有准备执行的命令缓冲区时,GPU 104可接收该命令缓冲区以便执行(亦即,执行该命令缓冲区中的命令)。在一实施例中,GPU 104可使用直接存储器访问(Direct MemoryAccess;DMA)等接收由CPU 101指定的环形缓冲区至GPU本地存储器中或一组通用寄存器(General Purpose Register;GPR)中。RLC 140可执行环形缓冲区的监控并控制环形缓冲区向GPU存储器和/或GPR的传输。确定要执行于GPU 104上的环形缓冲区组后,RLC 140确定该些环形缓冲区在GPU的分配、该些环形缓冲区的优先顺序以及该些环形缓冲区之命令缓冲区的优先顺序。在一些实施例中,优先顺序的确定由RLC 140配合命令处理器150执行。例如,在所接收的准备执行于GPU 104上的环形缓冲区子集210中,基于CPU 101确定的优先顺序以及GPU 104确定的优先顺序,可确定如图所示的优先顺序为:具有优先级1的环形缓冲区0,具有优先级2的环形缓冲区2,以及具有优先级3的环形缓冲区1和5。
CPU处理
图3示例依据本发明一实施例由CPU例如CPU 101执行的处理步骤(例如步骤301至305)的流程图。在步骤301中,CPU 101初始化系统存储器103中的一组环形缓冲区,以向GPU 104传输命令缓冲区。尽管这里的说明中使用环形缓冲区作为选择的数据结构以实现向GPU104传输命令缓冲区的方法,但本领域的技术人员将了解,可使用一个或多个其它数据结构替代环形缓冲区。初始化步骤301可发生于系统启动或应用程序启动时。例如,系统启动时,当执行于CPU 101上的操作系统组构GPU 104及相关的图形驱动器103以供使用时,可初始化一个或多个环形缓冲区以用于自随后的应用向GPU 104传输指令及数据。在另一例子中,当载入具有使用GPU之代码例如DirectX代码的应用程序时,该些环形缓冲区可组构为该应用程序之初始化的一部分。在另一示例实施例中,可在系统启动时初始化一个或多个环形缓冲区,在应用程序启动时添加和初始化额外的缓冲区。
初始化可包括存储器分配、对应于环形缓冲区之数据结构的初始化,以及更新用以向GPU 104传输环形缓冲区组构信息的一个或多个寄存器。例如,初始化环形缓冲区可包括针对环形缓冲区数据结构(例如环形缓冲区110)的存储器分配、分配一个或多个存储器区域以容纳与环形缓冲区组件相关联的实际命令缓冲区(例如间接缓冲区111),以及初始化一个或多个寄存器(例如环形缓冲工作寄存器112中的一个或多个寄存器)。可基于组构参数或基于所执行的应用程序所动态确定的参数初始化环形缓冲区与间接环形缓冲区。例如,环形缓冲区的数量、大小,间接缓冲区区域的大小等可作为系统启动时的组构参数,和/或可基于应用程序特征确定一个或多个此类参数。
在一实施例中,每一环形缓冲区110为圆形阵列。该圆形阵列之各组件意图容纳指向间接缓冲区区域111中的位置的指针。各环形缓冲区数据结构还具有维护该环形缓冲区结构所需的参数,例如头指针和尾指针等。间接缓冲区区域111意图容纳对应于命令缓冲区的多个数据结构。例如,每一命令缓冲区可包括将由GPU执行的一个或多个命令及相关数据。在不同于环形缓冲区的位置中储存实际命令缓冲区有利于存储器的有效使用。间接缓冲区区域112可以多种方式分配,包括基于每一命令作分配,为每一环形缓冲区分配一区域,或者为全部环形缓冲区110分配一个连续的区域。环形缓冲区工作寄存器112可包括寄存器和/或其它位置。尽管图中所示的环形缓冲区工作寄存器112被组构于系统存储器102内,本领域的技术人员应当了解,该环形缓冲区工作寄存器可包括位于系统存储器102以外的一个或多个寄存器。例如,环形缓冲区工作寄存器112可包括位于GPU 104中的一个或多个寄存器。可使用环形缓冲区工作寄存器112向GPU 104传输CPU101使用环形缓冲区的相关信息。例如,CPU 101可将当前活动环形缓冲区列表、由CPU 101确定的该些活动环形缓冲区的优先顺序、针对一个或多个GPU组件的活动环形缓冲区的分配等信息全部传输至GPU 104。在另一实施例中,环形缓冲区工作寄存器112还可用于传输例如每一环形缓冲区的当前读取和写入指针等信息。
在步骤303中,CPU 101通知GPU 104有关环形缓冲区的组构。该步骤可发生于系统启动时或发生于CPU 101初始化系统存储器103中的环形缓冲区之后的应用程序启动时。在一些实施例中,步骤303可在系统启动时以及在应用程序启动时执行。例如,如应用程序启动时,活动环形缓冲区的数量组构改变,此类变更将被传输至GPU 104。在本发明一实施例中,传输至GPU 104的环形缓冲区组态信息包括环形缓冲区的数量、各环形缓冲区的位置及大小,以及CPU 101确定的优先顺序。在本发明的不同实施例中,可传输有关该帧缓冲区组构之不同的和/或额外的组构信息。步骤303中的通知可基于CPU 101写入至GPU 104监控的一个或多个寄存器位置,例如环形缓冲区工作寄存器112。在另一实施例中,通过使用图形驱动器103而执行于CPU 101或CPU 101之操作系统上的应用程序启动对GPU 104的通知。在本发明实施例中,图形驱动器103可将要传输至GPU 104的信息写入系统存储器102中。
在步骤305中,将命令写入环形缓冲区。例如,在执行应用程序例如游戏应用程序期间,执行众多的图形相关命令以执行各种图形相关任务,包括在显示器上渲染图像。该应用程序代码可使用图形处理平台例如DirectX而使用图形命令。在为执行于系统100上而编译该应用程序时,或在某些情况下,更动态地在运行时,确定CPU 101卸载特定的命令及相关数据以在GPU 104上处理。例如,调用DirectX API以执行功能的任何命令可选择在GPU 104上处理。操作系统,或在一些实施例中,应用程序本身,将该些选择在GPU 104上处理的命令及相关数据写入经组构用于向GPU 104传输指令及数据的环形缓冲区中。该些命令及相关数据可形成通常被称作命令缓冲区的数据结构。命令缓冲区包括一个或多个指令及相关数据。例如,对于“绘制”命令,相应的命令缓冲区可包括“绘制”命令以及要在显示器上绘制或渲染的图像。
如前所述,对于向GPU 104传输命令缓冲区的环形缓冲区,CPU101可确定其优先顺序。因此,当在步骤305中写入命令缓冲区时,每一命令缓冲区排队于最匹配该命令之优先级的环形缓冲区中。例如,游戏应用程序生成众多游戏角色图像渲染,其要求几乎立即显示,此外菜单及其它用户事件则具有较低的时间紧迫性。因此,与时间紧迫性较低的菜单及用户事件的命令缓冲区相比,对应时间紧迫图像的命令缓冲区可排队于较高优先级环形缓冲区。将命令缓冲区写入适当的环形缓冲区可包括分配存储器区域以在间接缓冲区区域111中容纳该命令缓冲区,以及将指向该间接缓冲区区域111中相应位置的指针排队于该环形缓冲区中。在该环形缓冲区中插入指向该间接缓冲区111的指针还包括更新该环形缓冲区的数据结构组件,例如头指针和尾指针。另外,CPU 101可更新标示添加值的值以及供作为写入者的CPU101以及作为读取者的GPU 104安全并发访问环形缓冲区的指针。在将一个或多个命令缓冲区写入环形缓冲区后,CPU 101可更新一个或多个寄存器和/或其它存储器位置以通知GPU 104有关数据的可用性。在一些实施例中,当GPU 104可持续监控各该环形缓冲区时,无需由CPU 101单独通知。
过程300以基本与耦接CPU 101之GPU中的处理异步的方式实现于CPU 101上。过程300能够使执行于CPU 101上的应用程序于执行的同时具有多个命令在其它处理器例如GPU 104中等待处理。不过,例如,可在CPU 101与GPU 104之间实现某些同步机制,以确保GPU不会对进来的命令缓冲区不知所措。例如,CPU 101可具有适当的技术侦测何时GPU 104没有在处理环形缓冲区,以便能够对变慢的处理作出反应。CPU 101还可具有适当的机制侦测是否其排队于环形缓冲区的每个命令都被GPU 104处理。例如,对于排队至一环形缓冲区的每个命令,CPU 101可向环形缓冲区工作存储器112中的存储器位置写入一值。接着,CPU 101可定期检查位于该存储器位置的该值。当GPU 104处理该命令缓冲区时,其以不同的值更新环形缓冲区工作存储器112中的各位置。在超时时间后,环形缓冲区工作存储器112中各位置的未变更值向CPU 101标示GPU 104功能不正常。
GPU处理
图4显示依据本发明一实施例由GPU 104实现之过程400的步骤401至409的流程图。在本发明不同实施例中,过程400可以硬件、固件和/或软件实现。例如,可利用硬件和微代码组合实现RLC 140的功能,以保持高度的灵活性,同时保持高性能。
在步骤401中,GPU 104确定系统存储器103中环形缓冲区的组构,其中,该GPU 104透过该环形缓冲区自CPU 101接收命令缓冲区。步骤401可在系统启动和/或在应用程序启动时执行。例如,在系统启动时,当CPU 101初始化时,GPU 104可确定系统存储器103中环形缓冲区的组构。GPU 104还可在应用程序启动时或自CPU 101接收信号时确定环形缓冲区的组构。在一些实施例中,若CPU 101于系统启动时初始化环形缓冲区110,而且不会在系统操作期间进一步添加和/或删除环形缓冲区,则GPU 104仅于系统启动时执行步骤104。另一方面,若CPU 101在系统启动以外的其它时间例如在应用程序启动时对环形缓冲区110偶尔作组构变更时,则当此类变更发生时,要求GPU104更新其有关该环形缓冲区组构的信息。GPU 104可基于定期监控环形缓冲区或相关寄存器或存储器位置或基于自CPU 101接收的消息或信号确定环形缓冲区的组构。在一实施例中,步骤401的功能主要实现于RLC 140中。
已确定环形缓冲区110的组构后,在步骤403中,GPU 104监控该些环形缓冲区以侦测可供处理的环形缓冲区。例如,当在CPU 101上执行游戏应用程序时,CPU 101将图形处理操作命令以命令缓冲区的形式排队至环形缓冲区110,如参照过程300的步骤305所述。当依据执行的应用程序生成命令缓冲区并排队至环形缓冲区时,CPU 101可更新一个或多个存储器位置和/或寄存器,以向GPU 104标示哪些环形缓冲区可供处理。GPU 104可监控CPU 101更新的此类存储器位置和/或寄存器。在一实施例中,步骤403的功能主要实现于RLC 140中。
在步骤405中,GPU 104选择环形缓冲区110的子集以便处理和执行。可响应侦测排队于环形缓冲区110中等待处理的命令缓冲区或响应自CPU 101接收的消息或信号执行步骤405。供处理和执行之环形缓冲区子集的选择,例如如图2所示自可用环形缓冲区200选择子集210可基于一个或多个因素。在一实施例中,CPU 101可将准备在GPU中处理的环形缓冲区保持为环形缓冲区的列表,GPU 104自其中选择环形缓冲区作为要处理的子集。在一些实施例中,GPU 104。在另一实施例中,CPU 101简单地将命令缓冲区排队至一个或多个环形缓冲区,GPU 104选择具有等待执行之排队命令缓冲区的一个或多个环形缓冲区。
在一些实施例中,可将选择供执行的环形缓冲区子集提供至GPU本地存储器中或GPR中,以准备在GPU 104内处理。自系统存储器102传输命令缓冲区可由DMA过程控制。当自系统存储器103读取命令缓冲区时,GPU 104可更新一个或多个存储器位置,以标示哪些命令缓冲区已被读取,以及各该命令缓冲区是否已被处理。被更新的此类存储器位置可位于环形缓冲区工作寄存器112中、环形缓冲区数据结构中,和/或GPU本地存储器或GPR中。在一实施例中,步骤403的功能主要实现于RLC 140中。
在步骤407中,GPU 104依据优先标准选择命令缓冲区以在GPU上执行。在处理该步骤期间,GPU 104确定如何将前面步骤中选择的环形缓冲区分配给一个或多个GPU,以及如何将各命令分配给GPU内的资源。例如,GPU 104可确定优先顺序,按此顺序在GPU 104上处理步骤405中自系统存储器103选择的环形缓冲区子集210,以及在一些实施例中,确定在处理各环形缓冲区期间如何确定命令的优先顺序并对其排程。在一实施例中,步骤403的功能主要实现于RLC 140中。图5进一步描述步骤407的处理。
在步骤409中,依据前面步骤中在GPU 104中确定的优先顺序,在GPU 104上执行所选择的命令。在一实施例中,选择执行的环形缓冲区子集210是依据在GPU 104上执行的优先顺序而排序。在各环形缓冲区内,可对命令确定优先顺序并对其排程以便执行,或者按照命令在该环形缓冲区出现的顺序执行。在另一实施例中,通过考虑例如CPU 101指定的优先顺序、环形缓冲区的类型或命令缓冲区的类型、GPU 104上处理资源的可用性等多个因素,GPU 104可定期确定全部待处理命令缓冲区的优先顺序。
自CPU 101接收于命令缓冲区中的命令执行可包括命令处理器150对应该接收的命令生成一个或多个命令并在GPU 104的处理资源上排程该命令。例如,自CPU 101接收用以渲染图像的单个命令可使命令处理器150细分该图像,并生成一个或多个指令以处理各该图像的各该细分部分。接着,命令处理器排程各该细分部分执行于GPU 104之处理资源例如SIMD处理器和/或ALU上。排程准备执行之命令以及在GPU上执行该些命令主要是由命令处理器150配合指定该些命令之优先顺序的RCL 140管理。
命令的执行可以符合本发明的各种方式进行。在一实施例中,当每一命令完成执行从而使处理资源可用时,在该处理资源上执行依据优先顺序的下一命令。实施例还可采用其它方法,其中,在选择要执行的下一命令时,在上述优先顺序之外考虑其它因素。例如,可评估待处理命令,进而安排最可能优化可用资源的命令为下一要执行的命令。在本发明另一些实施例中,一些数量和/或类型的命令在GPU 104中完成执行时,GPU 104可返回步骤405,从而重新选择可供处理的环形缓冲区。
一般而言,在GPU 104中执行命令期间,RLC 140或GPU 104的另一组件持续监控系统存储器中的环形缓冲区,例如环形缓冲区110。该持续的监控使GPU 104能够侦测,例如,命令缓冲区何时被添加至高优先级队列。在GPU 104执行一个或多个较低优先级的命令期间,CPU 101将一个或多个命令缓冲区添加至高优先级缓冲区可使GPU 104预先阻止一个或多个命令,以便能够执行该较高优先级命令。图6显示依据本发明实施例实现的步骤601至609,以使GPU 104能够在执行一个或多个较低优先级命令期间接纳较高优先级命令。例如,步骤601至609可在处理步骤409期间实现。
图5显示依据本发明一实施例实现于前述步骤407中的步骤501至505。步骤501至505主要由RLC 140及命令处理器150实现,以使GPU 104能够确定环形缓冲区及命令缓冲区的优先顺序。
在步骤501中,确定GPU 104的当前工作量概况。在一实施例中,RLC 140和/或命令处理器150确定例如可用处理组件、该些处理组件的相对处理能力以及待处理工作量的当前优先顺序等因素,以创建工作量概况。该工作量概况反应GPU的状态。确定可用处理组件以及各自的相对处理能力可包括考虑独立处理组件,例如SIMD组件、ALU能力、三维处理设备、计算着色器设备以及低延迟处理设备。可连续地或定期地动态执行GPU的当前工作量分析。例如,当命令或环形缓冲区完成执行时,或自系统存储器读取新的环形缓冲区子集时,RLC140和/或命令处理器150可启动该GPU工作量分析。另外,每当需要确定工作量时可生成新的工作量概况;或维持该工作量概况,当发生例如完成环形缓冲区执行、自系统存储器读取环形缓冲区子集等预定类型的事件时对其更新。
在步骤503中,GPU 104确定等待执行于GPU 104上之环形缓冲区的优先顺序。在一实施例中,RLC 140和命令处理器150基于前述步骤501确定的工作量概况确定优先顺序。由GPU 104确定的优先顺序可基于CPU 101指定的环形缓冲区顺序。当基于GPU的动态工作量概况最优化实际的执行顺序时,可基本遵守CPU 101指定的优先顺序。对执行顺序进行动态重新排序的能力使GPU能够细粒度控制其处理组件的使用状况。
在步骤505中,GPU 104确定与各该环形缓冲区相关联之命令的优先顺序。例如,RLC 140和命令处理器150可基于前述步骤501中确定的工作量概况以及步骤503中确定的环形缓冲区优先顺序而确定顺序。环形缓冲区中命令的优先顺序可包括确定将每个命令分配至GPU中的哪个处理组件。通过进行动态确定,例如,若高优先处理资源可用,则以高优先级执行原来具有低优先级的命令,或者当高优先处理资源繁忙时,以低优先级执行原来具有高优先级的命令,或者基于组件可用性在低延迟组件上执行原本通常执行于计算着色器组件上的命令,对各环形缓冲区内的命令执行重新排序的能力使GPU能够更佳使用其资源。
图6显示依据本发明一实施例实现的步骤601至609,以使GPU104能够在执行一个或多个较低优先级命令期间接纳较高优先级命令。例如,步骤601至609可在处理步骤409期间实现。
在步骤601中,GPU 104确定是否需要上下文切换以处理另一命令。可基于例如当前正在执行之过程的优先级、需要执行之过程的优先级、执行时间片值以及每个当前正在执行过程的剩余执行时间等一个或多个因素而确定是否需要上下文切换。例如,命令处理器150可包括考虑上述一个或多个因素并且确定是否强制上下文切换的功能。
在步骤603中,预先阻止正在执行的命令和/或正在执行的环形缓冲区。预先阻止正在执行的命令和/或正在执行的环形缓冲区包括保存该预先阻止之命令和/或环形缓冲区的状态。在本发明实施例中,该预先阻止之命令和/或环形缓冲区的状态保存于在GPU本地存储器中组构的上下文保存区(Conetxt Save Area;CSA)中。例如,如要预先阻止当前正在执行的环形缓冲区,则将该环形缓冲区的状态,包括其待处理命令、数据,以及执行参数例如程序计数器等保存于GPU本地存储器中的一个区域中,例如GPU存储器120的CSA 121中。
在步骤605中,由RLC 140和命令处理器150换入执行另一命令和/或另一环形缓冲区。该换入执行的命令和/或环形缓冲区可能首次执行于GPU 104上或是自CSA恢复的命令和/或环形缓冲区。例如,该换入的命令和/或环形缓冲区可能曾经执行至其时间片结束,而且于其时间片结束时保存至CSA。
在步骤607中,当前正在执行的命令结束执行。当当前正在执行的命令结束执行时,可执行同一环形缓冲区中的下一命令。在本发明实施例中,GPU 104可确定环形缓冲区内命令的执行顺序,如参照过程400之步骤407所述。在一些实施例中,当一过程执行完成时,GPU104可执行例如检查准备执行之较高优先级环形缓冲区或检查同一环形缓冲区中较高优先级命令等操作,以确定下一步执行的过程和/或环形缓冲区。
在步骤607中,当前正在执行的环形缓冲区完成执行与其相关的全部待处理命令。当一环形缓冲区执行完成时,GPU 104可选择另一环形缓冲区例如按照优先级顺序的下一环形缓冲区以便执行。
上述实施例可以硬件描述语言例如Verilog、RTL、网表(netlist)等进行描述,籍由生成掩模作品/光罩,该些描述可最终组态一制造过程,从而生成体现本发明之态样的一个或多个硬件设备。
总结
如上述实施例所述,本发明能够更有效地分配第二处理器例如GPU内的处理资源,其自第一处理器例如CPU接收命令。基于本地确定的因素例如处理设备的可用性、工作量等确定优先顺序以及排程其工作量的能力提升了该第二处理器的利用率。
说明书的发明内容和摘要部分可能给出本发明的一个或多个而非全部的示例实施例,其并非意图限制本发明及所附权权利要求书。
上面借助功能方块图说明了本发明特定的功能及其关系的实施。说明中出于方便目的而随意定义了该些功能方块图的范围。本发明还可定义其它范围,只要能够适当执行特定的功能及关系即可。
上面对特定实施例的说明将充分揭示本发明的总体特征,以致本领域的技术人员可在无需过度实验且不背离本发明的总体构思的情况下针对不同应用轻易地进行修改和/或变更。因此,基于这里提出的教导和指导,此类修改和变更落入这里所揭露之实施例等同物的含义及范围内。应当了解,这里的用语或术语是出于描述目的而非限制本发明,因此本领域技术人员应根据教导及指导解释说明书中的用语或术语。
本发明的广度及范围不应当限于上述示例实施例,而应当仅依据下面的权利要求及其等同定义。
Claims (19)
1.一种在图形处理单元GPU上处理工作项目的方法,包括:
改变由中央处理单元CPU写入于存储器内的多个缓冲区的优先顺序,以重新排序该多个缓冲区的执行顺序;
基于该改变的优先顺序选择该多个缓冲区的第一子集,以在GPU上执行该多个缓冲区的第一子集的工作项目,其中,该改变和该选择是响应于动态确定该GPU的工作量概况;以及
基于该重新排序的执行顺序在该GPU上执行该多个缓冲区的第一子集的该工作项目。
2.如权利要求1所述的方法,进一步包括:
在该改变之前,自该CPU接收该多个缓冲区的优先顺序,其中,该选择进一步包括改变该优先顺序以增加该GPU的处理组件的利用率。
3.如权利要求1所述的方法,其中,该执行包括:
在该GPU上执行该多个缓冲区的第一子集的第一缓冲区的工作项目;
确定第二缓冲区的工作项目将执行于该GPU上;
预先阻止该第一缓冲区的工作项目的执行;以及
在该GPU上启动该第二缓冲区的工作项目的执行。
4.如权利要求3所述的方法,其中,该预先阻止包括:
将该第一缓冲区的上下文保存至本地存储器中的上下文保存区。
5.如权利要求3所述的方法,其中,该确定包括:比较该第一缓冲区的工作项目的执行时间与预定时间片值。
6.如权利要求3所述的方法,其中,该确定包括:
监控该多个缓冲区的至少其中一者;以及
侦测优先级高于该第一缓冲区的该多个缓冲区的该至少其中一者中的工作项目。
7.如权利要求6所述的方法,其中,该监控包括:
读取由第二处理器写入的至少一个存储器位置;以及
基于自该至少一个存储器位置读取的值侦测命令写入事件。
8.如权利要求1所述的方法,其中,该选择是由该GPU执行并包括:
分析各该缓冲区中的工作项目;
确定各该缓冲区中的该工作项目的优先级;以及
基于该确定的优先级选择该多个缓冲区的第一子集。
9.如权利要求1所述的方法,进一步包括,使用系统存储器耦接至该中央处理单元CPU及该GPU以作为该存储器。
10.如权利要求1所述的方法,进一步包括,使用环形缓冲区作为该多个缓冲区的至少其中一者。
11.如权利要求1所述的方法,进一步包括,对在各该缓冲区的第一子集选择由该中央处理单元CPU写入的一个或多个命令缓冲区。
12.一种在图形处理单元GPU上执行工作项目的系统,该GPU经组构成:
改变由中央处理单元CPU写入于存储器内的多个缓冲区的优先顺序,以重新排序该多个缓冲区的执行顺序;
基于该改变的优先顺序选择该多个缓冲区的第一子集,以在GPU上执行该第一子集的工作项目,其中,该改变和该选择是响应于动态确定该GPU的工作量概况;以及
基于该重新排序的执行顺序在该GPU上执行该多个缓冲区的第一子集的该工作项目。
13.如权利要求12所述的系统,其中,该GPU经进一步组构成:
在该改变之前,自该CPU接收该多个缓冲区的优先顺序。
14.如权利要求12所述的系统,其中,该GPU经进一步组构成:
执行该多个缓冲区的第一子集的第一缓冲区的工作项目;
确定将执行于该GPU上的第二缓冲区的工作项目;
预先阻止该第一缓冲区的工作项目的执行;以及
在该GPU上启动该第二缓冲区的工作项目的执行。
15.如权利要求14所述的系统,其中,该预先阻止包括:
将该第一缓冲区的上下文保存至本地存储器中的上下文保存区。
16.如权利要求14所述的系统,其中,该确定包括:
监控该多个缓冲区的至少其中一者;以及
侦测优先级高于该第一缓冲区的该多个缓冲区的该至少其中一者中的工作项目。
17.如权利要求12所述的系统,其中,该多个缓冲区的至少其中一者为环形缓冲区。
18.如权利要求12所述的系统,进一步包括:
该中央处理单元CPU;以及
该存储器,耦接至该CPU以及该GPU。
19.如权利要求12所述的系统,其中,该GPU包括:
本地存储器,经组构具有一个或多个上下文保存区。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/553,637 | 2009-09-03 | ||
US12/553,637 US8310492B2 (en) | 2009-09-03 | 2009-09-03 | Hardware-based scheduling of GPU work |
PCT/US2010/047666 WO2011028896A1 (en) | 2009-09-03 | 2010-09-02 | Hardware-based scheduling of gpu work |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102597950A CN102597950A (zh) | 2012-07-18 |
CN102597950B true CN102597950B (zh) | 2014-10-29 |
Family
ID=43064658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080048071.9A Active CN102597950B (zh) | 2009-09-03 | 2010-09-02 | 基于硬件排程gpu工作 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8310492B2 (zh) |
EP (1) | EP2473914B1 (zh) |
JP (1) | JP5722327B2 (zh) |
KR (1) | KR101587201B1 (zh) |
CN (1) | CN102597950B (zh) |
IN (1) | IN2012DN02567A (zh) |
WO (1) | WO2011028896A1 (zh) |
Families Citing this family (118)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9529632B2 (en) * | 2009-09-03 | 2016-12-27 | Advanced Micro Devices, Inc. | Interlocked increment memory allocation and access |
US9244690B2 (en) * | 2009-09-09 | 2016-01-26 | Advanced Micro Devices, Inc. | Variable frequency output to one or more buffers |
US9189242B2 (en) * | 2009-09-24 | 2015-11-17 | Nvidia Corporation | Credit-based streaming multiprocessor warp scheduling |
US9665920B1 (en) * | 2009-10-05 | 2017-05-30 | Nvidia Corporation | Simultaneous execution of compute and graphics applications |
US8305947B2 (en) * | 2010-02-12 | 2012-11-06 | Intel Corporation | Minimizing power consumption in a network device |
US9519943B2 (en) | 2010-12-07 | 2016-12-13 | Advanced Micro Devices, Inc. | Priority-based command execution |
US20120151145A1 (en) * | 2010-12-13 | 2012-06-14 | Advanced Micro Devices, Inc. | Data Driven Micro-Scheduling of the Individual Processing Elements of a Wide Vector SIMD Processing Unit |
US9176795B2 (en) * | 2010-12-13 | 2015-11-03 | Advanced Micro Devices, Inc. | Graphics processing dispatch from user mode |
US9176794B2 (en) * | 2010-12-13 | 2015-11-03 | Advanced Micro Devices, Inc. | Graphics compute process scheduling |
US20130117168A1 (en) | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
GB2489278B (en) | 2011-03-24 | 2019-12-25 | Advanced Risc Mach Ltd | Improving the scheduling of tasks to be performed by a non-coherent device |
US10061618B2 (en) * | 2011-06-16 | 2018-08-28 | Imagination Technologies Limited | Scheduling heterogenous computation on multithreaded processors |
WO2012174334A1 (en) * | 2011-06-16 | 2012-12-20 | Caustic Graphics, Inc. | Graphics processor with non-blocking concurrent architecture |
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
US8782665B1 (en) | 2013-03-23 | 2014-07-15 | Throughputer, Inc. | Program execution optimization for multi-stage manycore processors |
US8884974B2 (en) | 2011-08-12 | 2014-11-11 | Microsoft Corporation | Managing multiple GPU-based rendering contexts |
US8780120B2 (en) * | 2011-10-02 | 2014-07-15 | Microsoft Corporation | GPU self throttling |
US9329893B2 (en) * | 2011-12-14 | 2016-05-03 | Advanced Micro Devices, Inc. | Method for resuming an APD wavefront in which a subset of elements have faulted |
US9122522B2 (en) * | 2011-12-14 | 2015-09-01 | Advanced Micro Devices, Inc. | Software mechanisms for managing task scheduling on an accelerated processing device (APD) |
US8842122B2 (en) | 2011-12-15 | 2014-09-23 | Qualcomm Incorporated | Graphics processing unit with command processor |
US8928677B2 (en) * | 2012-01-24 | 2015-01-06 | Nvidia Corporation | Low latency concurrent computation |
US9529575B2 (en) | 2012-02-16 | 2016-12-27 | Microsoft Technology Licensing, Llc | Rasterization of compute shaders |
US9996394B2 (en) | 2012-03-01 | 2018-06-12 | Microsoft Technology Licensing, Llc | Scheduling accelerator tasks on accelerators using graphs |
US9019289B2 (en) * | 2012-03-07 | 2015-04-28 | Qualcomm Incorporated | Execution of graphics and non-graphics applications on a graphics processing unit |
GB2501757A (en) * | 2012-05-04 | 2013-11-06 | Ibm | Instrumentation of software applications for configuration thereof |
US9027102B2 (en) | 2012-05-11 | 2015-05-05 | Sprint Communications Company L.P. | Web server bypass of backend process on near field communications and secure element chips |
US9282898B2 (en) | 2012-06-25 | 2016-03-15 | Sprint Communications Company L.P. | End-to-end trusted communications infrastructure |
US8649770B1 (en) | 2012-07-02 | 2014-02-11 | Sprint Communications Company, L.P. | Extended trusted security zone radio modem |
US9304813B2 (en) * | 2012-07-18 | 2016-04-05 | Intel Corporation | CPU independent graphics scheduler for performing scheduling operations for graphics hardware |
KR101984635B1 (ko) * | 2012-07-19 | 2019-05-31 | 삼성전자주식회사 | 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법 |
US10002021B2 (en) | 2012-07-20 | 2018-06-19 | Qualcomm Incorporated | Deferred preemption techniques for scheduling graphics processing unit command streams |
US8667607B2 (en) | 2012-07-24 | 2014-03-04 | Sprint Communications Company L.P. | Trusted security zone access to peripheral devices |
US9183412B2 (en) | 2012-08-10 | 2015-11-10 | Sprint Communications Company L.P. | Systems and methods for provisioning and using multiple trusted security zones on an electronic device |
US9015068B1 (en) | 2012-08-25 | 2015-04-21 | Sprint Communications Company L.P. | Framework for real-time brokering of digital content delivery |
US9215180B1 (en) | 2012-08-25 | 2015-12-15 | Sprint Communications Company L.P. | File retrieval in real-time brokering of digital content |
US9696784B2 (en) * | 2012-09-14 | 2017-07-04 | Advanced Micro Devices, Inc. | Direct hardware access media player |
US9342122B2 (en) * | 2012-09-17 | 2016-05-17 | Intel Corporation | Distributing power to heterogeneous compute elements of a processor |
US9578664B1 (en) | 2013-02-07 | 2017-02-21 | Sprint Communications Company L.P. | Trusted signaling in 3GPP interfaces in a network function virtualization wireless communication system |
US9161227B1 (en) | 2013-02-07 | 2015-10-13 | Sprint Communications Company L.P. | Trusted signaling in long term evolution (LTE) 4G wireless communication |
US9563253B2 (en) | 2013-03-12 | 2017-02-07 | Intel Corporation | Techniques for power saving on graphics-related workloads |
US9613208B1 (en) | 2013-03-13 | 2017-04-04 | Sprint Communications Company L.P. | Trusted security zone enhanced with trusted hardware drivers |
US9191388B1 (en) | 2013-03-15 | 2015-11-17 | Sprint Communications Company L.P. | Trusted security zone communication addressing on an electronic device |
US9374363B1 (en) | 2013-03-15 | 2016-06-21 | Sprint Communications Company L.P. | Restricting access of a portable communication device to confidential data or applications via a remote network based on event triggers generated by the portable communication device |
US9454723B1 (en) | 2013-04-04 | 2016-09-27 | Sprint Communications Company L.P. | Radio frequency identity (RFID) chip electrically and communicatively coupled to motherboard of mobile communication device |
US9324016B1 (en) | 2013-04-04 | 2016-04-26 | Sprint Communications Company L.P. | Digest of biographical information for an electronic device with static and dynamic portions |
US9171243B1 (en) | 2013-04-04 | 2015-10-27 | Sprint Communications Company L.P. | System for managing a digest of biographical information stored in a radio frequency identity chip coupled to a mobile communication device |
US9838869B1 (en) | 2013-04-10 | 2017-12-05 | Sprint Communications Company L.P. | Delivering digital content to a mobile device via a digital rights clearing house |
US9443088B1 (en) | 2013-04-15 | 2016-09-13 | Sprint Communications Company L.P. | Protection for multimedia files pre-downloaded to a mobile device |
US9632834B2 (en) * | 2013-05-17 | 2017-04-25 | Nvidia Corporation | Assigning priorities to computational work streams by mapping desired execution priorities to device priorities |
KR102037812B1 (ko) * | 2013-05-28 | 2019-10-29 | 삼성전자 주식회사 | 멀티 코어 그래픽 처리 장치 |
US9560519B1 (en) | 2013-06-06 | 2017-01-31 | Sprint Communications Company L.P. | Mobile communication device profound identity brokering framework |
US9424079B2 (en) | 2013-06-27 | 2016-08-23 | Microsoft Technology Licensing, Llc | Iteration support in a heterogeneous dataflow engine |
US9659342B2 (en) | 2013-06-29 | 2017-05-23 | Intel Corporation | Mid command buffer preemption for graphics workloads |
US9183606B1 (en) * | 2013-07-10 | 2015-11-10 | Sprint Communications Company L.P. | Trusted processing location within a graphics processing unit |
US9208339B1 (en) | 2013-08-12 | 2015-12-08 | Sprint Communications Company L.P. | Verifying Applications in Virtual Environments Using a Trusted Security Zone |
US8972630B1 (en) * | 2013-09-25 | 2015-03-03 | Netronome Systems, Incorporated | Transactional memory that supports a put with low priority ring command |
US9185626B1 (en) | 2013-10-29 | 2015-11-10 | Sprint Communications Company L.P. | Secure peer-to-peer call forking facilitated by trusted 3rd party voice server provisioning |
US9191522B1 (en) | 2013-11-08 | 2015-11-17 | Sprint Communications Company L.P. | Billing varied service based on tier |
US9161325B1 (en) | 2013-11-20 | 2015-10-13 | Sprint Communications Company L.P. | Subscriber identity module virtualization |
US20150145871A1 (en) * | 2013-11-22 | 2015-05-28 | Nvidia Corporation | System, method, and computer program product to enable the yielding of threads in a graphics processing unit to transfer control to a host processor |
GB2521155B (en) * | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configuring thread scheduling on a multi-threaded data processing apparatus |
GB2521151B (en) | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configurable thread ordering for a data processing apparatus |
US9118655B1 (en) | 2014-01-24 | 2015-08-25 | Sprint Communications Company L.P. | Trusted display and transmission of digital ticket documentation |
US9226145B1 (en) | 2014-03-28 | 2015-12-29 | Sprint Communications Company L.P. | Verification of mobile device integrity during activation |
US10346941B2 (en) * | 2014-05-30 | 2019-07-09 | Apple Inc. | System and method for unified application programming interface and model |
WO2015196409A1 (en) * | 2014-06-26 | 2015-12-30 | Intel Corporation | Intelligent gpu scheduling in a virtualization environment |
US9230085B1 (en) | 2014-07-29 | 2016-01-05 | Sprint Communications Company L.P. | Network based temporary trust extension to a remote or mobile device enabled via specialized cloud services |
US10255654B2 (en) * | 2014-09-12 | 2019-04-09 | Intel Corporation | Facilitating dynamic parallel scheduling of command packets at graphics processing units on computing devices |
US10521874B2 (en) * | 2014-09-26 | 2019-12-31 | Intel Corporation | Method and apparatus for a highly efficient graphics processing unit (GPU) execution model |
US9779232B1 (en) | 2015-01-14 | 2017-10-03 | Sprint Communications Company L.P. | Trusted code generation and verification to prevent fraud from maleficent external devices that capture data |
US9838868B1 (en) | 2015-01-26 | 2017-12-05 | Sprint Communications Company L.P. | Mated universal serial bus (USB) wireless dongles configured with destination addresses |
US9473945B1 (en) | 2015-04-07 | 2016-10-18 | Sprint Communications Company L.P. | Infrastructure for secure short message transmission |
CN107743636B (zh) | 2015-06-07 | 2021-07-23 | 苹果公司 | 用于高效实时渲染预先不知道的图形的图形引擎和环境 |
US9747659B2 (en) * | 2015-06-07 | 2017-08-29 | Apple Inc. | Starvation free scheduling of prioritized workloads on the GPU |
US10282804B2 (en) | 2015-06-12 | 2019-05-07 | Intel Corporation | Facilitating configuration of computing engines based on runtime workload measurements at computing devices |
US10069766B2 (en) * | 2015-07-07 | 2018-09-04 | TransferSoft, Inc. | Accelerated data transfer using thread pool for parallel operations |
US9779469B2 (en) * | 2015-08-17 | 2017-10-03 | Qualcomm Incorporated | Register spill management for general purpose registers (GPRs) |
CN105139356B (zh) * | 2015-08-25 | 2018-06-22 | 北京锤子数码科技有限公司 | 一种图像数据的毛玻璃效果处理方法和装置 |
US10445850B2 (en) * | 2015-08-26 | 2019-10-15 | Intel Corporation | Technologies for offloading network packet processing to a GPU |
US9819679B1 (en) | 2015-09-14 | 2017-11-14 | Sprint Communications Company L.P. | Hardware assisted provenance proof of named data networking associated to device data, addresses, services, and servers |
US10515430B2 (en) | 2015-11-03 | 2019-12-24 | International Business Machines Corporation | Allocating device buffer on GPGPU for an object with metadata using access boundary alignment |
US10282719B1 (en) | 2015-11-12 | 2019-05-07 | Sprint Communications Company L.P. | Secure and trusted device-based billing and charging process using privilege for network proxy authentication and audit |
US9817992B1 (en) | 2015-11-20 | 2017-11-14 | Sprint Communications Company Lp. | System and method for secure USIM wireless network access |
US10580108B2 (en) | 2015-12-22 | 2020-03-03 | Intel Corporation | Method and apparatus for best effort quality of service (QoS) scheduling in a graphics processing architecture |
US10210593B2 (en) | 2016-01-28 | 2019-02-19 | Qualcomm Incorporated | Adaptive context switching |
US9900378B2 (en) | 2016-02-01 | 2018-02-20 | Sas Institute Inc. | Node device function and cache aware task assignment |
CN108463836B (zh) * | 2016-03-24 | 2022-04-01 | 富士胶片商业创新有限公司 | 图像处理装置、图像处理方法和图像处理程序 |
CA2974556C (en) * | 2016-08-25 | 2018-06-05 | Sas Institute Inc. | Compilation for node device gpu-based parallel processing |
US10664942B2 (en) | 2016-10-21 | 2020-05-26 | Advanced Micro Devices, Inc. | Reconfigurable virtual graphics and compute processor pipeline |
US10929944B2 (en) * | 2016-11-23 | 2021-02-23 | Advanced Micro Devices, Inc. | Low power and low latency GPU coprocessor for persistent computing |
GB2558884B (en) * | 2017-01-12 | 2019-12-25 | Imagination Tech Ltd | Graphics processing units and methods using cost indications for sets of tiles of a rendering space |
GB2558885B (en) * | 2017-01-12 | 2021-04-07 | Imagination Tech Ltd | Graphics processing units and methods for subdividing a set of one or more tiles of a rendering space for rendering |
US10204394B2 (en) * | 2017-04-10 | 2019-02-12 | Intel Corporation | Multi-frame renderer |
US10503546B2 (en) | 2017-06-02 | 2019-12-10 | Apple Inc. | GPU resource priorities based on hardware utilization |
US10499249B1 (en) | 2017-07-11 | 2019-12-03 | Sprint Communications Company L.P. | Data link layer trust signaling in communication network |
US10373287B2 (en) | 2017-08-18 | 2019-08-06 | Apple Inc. | Fast GPU context switch |
US10474600B2 (en) * | 2017-09-14 | 2019-11-12 | Samsung Electronics Co., Ltd. | Heterogeneous accelerator for highly efficient learning systems |
US10475150B2 (en) * | 2017-09-29 | 2019-11-12 | Intel Corporation | GPU minimum latency dispatch for short-duration tasks |
CN109697115B (zh) * | 2017-10-20 | 2023-06-06 | 伊姆西Ip控股有限责任公司 | 用于调度应用的方法、装置以及计算机可读介质 |
US11650902B2 (en) * | 2017-11-08 | 2023-05-16 | Intel Corporation | Methods and apparatus to perform instruction-level graphics processing unit (GPU) profiling based on binary instrumentation |
CN107920025B (zh) * | 2017-11-20 | 2021-09-14 | 北京工业大学 | 一种面向cpu-gpu异构片上网络的动态路由方法 |
US10269167B1 (en) * | 2018-05-21 | 2019-04-23 | Apple Inc. | Indirect command buffers for graphics processing |
KR102092459B1 (ko) * | 2018-06-20 | 2020-03-23 | 한국과학기술원 | 컨테이너 기반 가상화 환경에서 gpu 메모리 자원 관리 및 스케줄링 방법 및 시스템 |
US10424043B1 (en) * | 2018-07-02 | 2019-09-24 | Intel Corporation | Efficiently enqueuing workloads from user mode to hardware across privilege domains |
WO2020019315A1 (zh) * | 2018-07-27 | 2020-01-30 | 浙江天猫技术有限公司 | 一种基于图数据的计算运行调度方法、系统、计算机可读介质及设备 |
US10901848B2 (en) | 2018-08-03 | 2021-01-26 | Western Digital Technologies, Inc. | Storage systems with peer data recovery |
US10692169B2 (en) | 2018-09-28 | 2020-06-23 | Apple Inc. | Graphics driver virtual channels for out-of-order command scheduling for a graphics processor |
US10795730B2 (en) | 2018-09-28 | 2020-10-06 | Apple Inc. | Graphics hardware driven pause for quality of service adjustment |
US11182258B2 (en) * | 2019-01-04 | 2021-11-23 | Western Digital Technologies, Inc. | Data rebuild using dynamic peer work allocation |
CN110888737A (zh) * | 2019-11-18 | 2020-03-17 | 中国航空工业集团公司西安航空计算技术研究所 | 一种支持多GPU的Ringbuffer实现系统及方法 |
CN111580974B (zh) * | 2020-05-08 | 2023-06-27 | 抖音视界有限公司 | Gpu实例分配方法、装置、电子设备和计算机可读介质 |
CN113051082A (zh) * | 2021-03-02 | 2021-06-29 | 长沙景嘉微电子股份有限公司 | 软件硬件数据同步方法、装置、电子设备和存储介质 |
KR20220123883A (ko) | 2021-03-02 | 2022-09-13 | 삼성전자주식회사 | 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법 |
JP7158530B1 (ja) | 2021-05-10 | 2022-10-21 | 株式会社セイバン | 背負いベルトおよび背負い鞄 |
US20230108001A1 (en) * | 2021-09-27 | 2023-04-06 | Advanced Micro Devices, Inc. | Priority-based scheduling with limited resources |
WO2023113822A1 (en) * | 2021-12-17 | 2023-06-22 | Google Llc | Loading state detection for gaming applications |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1450258A2 (en) * | 2003-02-18 | 2004-08-25 | Microsoft Corporation | System and method for enhancing performance of a coprocessor |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07244572A (ja) * | 1994-03-07 | 1995-09-19 | Hitachi Ltd | 並列描画処理装置 |
JP2910649B2 (ja) * | 1995-12-28 | 1999-06-23 | 富士ゼロックス株式会社 | 画像形成装置および画像形成方法 |
US5889779A (en) * | 1996-12-02 | 1999-03-30 | Rockwell Science Center | Scheduler utilizing dynamic schedule table |
JP3530360B2 (ja) * | 1997-10-27 | 2004-05-24 | 株式会社ルネサステクノロジ | データ処理装置及びデータ処理システム |
JP2001291098A (ja) * | 2000-04-10 | 2001-10-19 | Yamaha Corp | 画像プロセッサ |
JP4656615B2 (ja) * | 2001-01-12 | 2011-03-23 | 株式会社バンダイナムコゲームス | 画像生成システム、プログラム及び情報記憶媒体 |
JP2003006669A (ja) * | 2001-06-22 | 2003-01-10 | Toshiba Corp | 画像描画装置 |
US7234144B2 (en) * | 2002-01-04 | 2007-06-19 | Microsoft Corporation | Methods and system for managing computational resources of a coprocessor in a computing system |
US7673304B2 (en) * | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
KR100988395B1 (ko) * | 2003-02-18 | 2010-10-18 | 마이크로소프트 코포레이션 | 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체 |
US7659904B2 (en) * | 2003-04-07 | 2010-02-09 | Ati Technologies Ulc | System and method for processing high priority data elements |
US7310722B2 (en) * | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US7975272B2 (en) * | 2006-12-30 | 2011-07-05 | Intel Corporation | Thread queuing method and apparatus |
US8504736B2 (en) * | 2008-05-30 | 2013-08-06 | Sony Computer Entertainment America Inc. | File input/output scheduler |
-
2009
- 2009-09-03 US US12/553,637 patent/US8310492B2/en active Active
-
2010
- 2010-09-02 EP EP10754622.8A patent/EP2473914B1/en active Active
- 2010-09-02 KR KR1020127008571A patent/KR101587201B1/ko active IP Right Grant
- 2010-09-02 JP JP2012528042A patent/JP5722327B2/ja active Active
- 2010-09-02 CN CN201080048071.9A patent/CN102597950B/zh active Active
- 2010-09-02 WO PCT/US2010/047666 patent/WO2011028896A1/en active Application Filing
- 2010-09-02 IN IN2567DEN2012 patent/IN2012DN02567A/en unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1450258A2 (en) * | 2003-02-18 | 2004-08-25 | Microsoft Corporation | System and method for enhancing performance of a coprocessor |
Also Published As
Publication number | Publication date |
---|---|
US8310492B2 (en) | 2012-11-13 |
CN102597950A (zh) | 2012-07-18 |
WO2011028896A1 (en) | 2011-03-10 |
EP2473914A1 (en) | 2012-07-11 |
JP5722327B2 (ja) | 2015-05-20 |
EP2473914B1 (en) | 2017-03-22 |
JP2013504127A (ja) | 2013-02-04 |
US20110050713A1 (en) | 2011-03-03 |
IN2012DN02567A (zh) | 2015-08-28 |
KR101587201B1 (ko) | 2016-01-20 |
KR20120058605A (ko) | 2012-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102597950B (zh) | 基于硬件排程gpu工作 | |
US10101977B2 (en) | Method and system of a command buffer between a CPU and GPU | |
JP6437579B2 (ja) | 仮想化環境におけるインテリジェントgpuスケジューリング | |
KR101855311B1 (ko) | 그래픽 처리 유닛을 위한 작업 부하 일괄 제출 메커니즘 | |
US9286119B2 (en) | System, method, and computer program product for management of dependency between tasks | |
US10719970B2 (en) | Low latency firmware command selection using a directed acyclic graph | |
US9619918B2 (en) | Heterogenious 3D graphics processor and configuration method thereof | |
CN109213607B (zh) | 一种多线程渲染的方法和装置 | |
CN104025185A (zh) | 用于使用gpu控制器来预加载缓存的机制 | |
CN103885902A (zh) | 用于经由纹理硬件实施存储器访问操作的技术 | |
CN104094235A (zh) | 多线程计算 | |
CN103885903A (zh) | 用于经由纹理硬件实施存储器访问操作的技术 | |
US9477480B2 (en) | System and processor for implementing interruptible batches of instructions | |
US20120151145A1 (en) | Data Driven Micro-Scheduling of the Individual Processing Elements of a Wide Vector SIMD Processing Unit | |
CN109426529B (zh) | 基于x窗口系统图形绘制的方法、装置及终端 | |
Suzuki et al. | Real-time GPU resource management with loadable kernel modules | |
US20120246656A1 (en) | Scheduling of tasks to be performed by a non-coherent device | |
US10692169B2 (en) | Graphics driver virtual channels for out-of-order command scheduling for a graphics processor | |
CN113032154B (zh) | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 | |
CN109983435A (zh) | 图形处理方法及相关装置和设备 | |
AU2016203532B2 (en) | Parallel runtime execution on multiple processors | |
CN116680296A (zh) | 一种基于单机的大规模图数据处理系统 | |
CN117671106A (zh) | 遮挡查询方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |