CN103999051A - 用于着色器核心中着色器资源分配的策略 - Google Patents
用于着色器核心中着色器资源分配的策略 Download PDFInfo
- Publication number
- CN103999051A CN103999051A CN201280061763.6A CN201280061763A CN103999051A CN 103999051 A CN103999051 A CN 103999051A CN 201280061763 A CN201280061763 A CN 201280061763A CN 103999051 A CN103999051 A CN 103999051A
- Authority
- CN
- China
- Prior art keywords
- queue
- pipeline
- priority
- calculating
- calculating pipeline
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000013468 resource allocation Methods 0.000 title 1
- 238000000034 method Methods 0.000 claims abstract description 103
- 238000012545 processing Methods 0.000 claims abstract description 38
- 230000008569 process Effects 0.000 claims description 74
- 230000000694 effects Effects 0.000 claims description 7
- 230000001133 acceleration Effects 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 230000015654 memory Effects 0.000 description 22
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 14
- 238000003860 storage Methods 0.000 description 13
- 238000007726 management method Methods 0.000 description 11
- 230000000875 corresponding effect Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 3
- 238000012913 prioritisation Methods 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000004886 process control Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000005469 granulation Methods 0.000 description 1
- 230000003179 granulation Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 230000001052 transient effect Effects 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 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
- 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
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
本发明提供了一种在加速处理设备内确定优先级的方法。所述加速处理设备包括根据预定标准处理的计算管线队列。基于优先级特征来选择所述队列,并且对选定队列进行处理,直至时间量子流逝或者具有更高优先级的队列变得可供用于处理。
Description
背景
发明领域
本发明总体涉及计算系统。更具体地,本发明涉及用于在多个管线(pipeline)输入间分配图形处理单元资源的仲裁策略。
背景技术
最近,由于GPU的每单位功率和/或成本的典型性能,因此对将图形处理单元(GPU)用于一般计算的期望已经变得更加明显。一般来说,GPU的计算能力已以超过对应中央处理单元(CPU)平台的计算能力的速度增长。结合移动计算市场和其必需支持服务器/企业系统的开发,已经利用这种增长来提供指定的期望用户体验质量。因此,组合使用CPU和GPU来执行带有数据并行内容的工作负载正在变成一种广泛应用的技术。
然而,传统上,GPU是在受约束的编程环境中操作,仅可用于图形加速。这些约束起因于GPU不具有与CPU一样丰富的编程生态系统这一事实。因此,它们的用途一直大多局限于二维(2D)和三维(3D)图形以及已习惯于处理图形和视频应用编程接口(API)的少量前沿多媒体应用。
随着多供应商支持的和标准API和支持工具出现,GPU的应用已经不再局限于诸如传统图形等传统应用。虽然OpenCL和DirectCompute是有前景的起点,但形成创造一种允许对于大多数编程任务CPU和GPU的组合使用起来与CPU一样流畅的环境和生态系统仍存在许多障碍。
现有计算系统通常包括多个处理设备。例如,一些计算系统包括位于单独芯片上(例如,CPU可以位于主板上并且GPU可以位于图形卡上)或者在单个芯片封装中的CPU和GPU两种情况。然而,这两种布置仍包括与以下项相关的重大挑战:(i)单独的存储器系统、(ii)有效调度、(iii)提供进程间服务质量(QoS)保证、(iv)编程模型以及(v)编译成多种目标指令集体系结构(ISA)——在所有这些的同时还要使功耗最小化。
例如,分立芯片布置迫使系统以及软件体系结构针对每个处理器利用芯片到芯片接口对存储器进行存取。这些外部接口(例如,芯片到芯片)对用于协同操作异构处理器的存储器等待时间和功耗造成不利影响,同时,单独的存储器系统(即,单独地址空间)和驱动器管理共享存储器会产生变得对精细粒度卸载而言不可接受的开销。
分立芯片布置和单芯片布置两者均可以限制可发送给GPU以供执行的命令的类型。例如,计算命令(例如,物理或人工智能命令)通常无法发送给GPU以供执行。这种限制存在的原因是因为CPU可能相对较快地要求这些计算命令所执行的操作的结果。然而,由于将工作分派给当前系统中的GPU的高开销以及这些命令可能不得不排队等待有待被首先执行的其它先前发布的命令这一事实,因此将计算命令发送至GPU所引致的等待时间经常是不可接受的。
考虑到传统GPU可能未能高效执行一些计算命令,命令必须随后在CPU内执行。必须在CPU上执行命令使得CPU上的处理负担增加,并且可能妨碍总体系统性能。
虽然GPU为计算卸载提供绝佳机会,但是传统GPU可能并不适于一些多处理器环境中高效操作所期望的系统软件驱动的进程管理。这些限制可能产生若干问题。
例如,由于无法有效识别和/抢占进程,因此流氓进程可能持续任意量的时间占据GPU硬件。在其它情况下,上下文切断硬件的能力严重受到约束—在非常粗的粒度下并且仅在程序执行中非常有限的一组点处发生。这种约束存在的原因是因为保存必需的体系结构状态和微体系结构状态以恢复并且继续进程不受支持。缺少对精确异常的支持使得无法上下文切断错误作业并且在稍后点处恢复,从而导致更低的硬件使用率,因为错误线程占据硬件资源并且在错误处理期间闲置。
在计算机系统内,仲裁发生在两个不同级别上。一个级别涉及在GPU计算管线前端处正在驱动的是什么作业。另一级别涉及共享资源的利用率。由于存在同时执行的多个任务,因此必须对这些任务进行优先级排序。因此,要求决策以确定将如何利用共享资源。例如,将如何在任务到达分派管线的开始处并且行进至着色器核心时对它们进行优先级排序。
概述
因此,需要解决仲裁策略的改进仲裁方法和系统,其中系统具有多个计算管线。
虽然GPU、加速处理单元(APU)以及通用图形处理单元(GPGPU)是本领域中的常用术语,但是术语“加速处理设备(APD)”被认为是一种更广泛的表述。例如,APD是指相对于诸如常规CPU、常规GPU和/或它们的组合等资源以加速的方式执行与加速图形处理任务、数据并行任务或嵌套数据并行任务相关联的那些功能和计算的任何协同操作的硬件和/或软件集合。
本发明的一个实施方案提供一种在包括计算管线的APD内确定优先级的方法。所述方法包括根据预定标准从所述计算管线中的每个内的计算管线处理队列中选择第一队列和第二队列,并且根据优先级标准选择所述第一队列和所述第二队列中的一个以进行处理。处理所述选定队列,直至时间量子流逝或者具有更高优先级的队列变得可用。
本发明的进一步特征和优点以及本发明的各实施方案的结构和操作在下文中参照附图详细描述。应当注意,本发明不限于本文所描述的这些特定实施方案。本文呈现此类实施方案仅用于说明目的。基于本文所包含的教导内容,另外的实施方案对于相关领域的技术人员而言将是显而易见的。
附图简述
附图并入本文并且构成本说明书的一部分,图解了本发明并且与说明书一起进一步用来解释本发明的原理并使相关领域的技术人员能够实践和使用本发明。本发明的各实施方案参照附图在下文中进行描述,其中在全文中,类似参考标号用于指代类似元素。
图1A是根据本发明的实施方案的一种处理系统的说明性框图;
图1B是图1A所示APD的说明性框图图示;
图2是图1B的APD的更详细的框图图示;
图3是图2所示计算管线的更详细的框图图示;
图4是根据本发明的实施方案的硬件描述符队列的图示;
图5是实践本发明的实施方案的示例性方法的流程图;
图6是根据本发明的实施方案的示例性方法的图示;并且
图7是根据本发明的实施方案的示例性方法的其它方面的图示。
详述
在以下详细描述中,提及“一个实施方案”、“实施方案”、“示例实施方案”等等表明所描述的实施方案可包括某一特定特征、结构或特性,但是每个实施方案可能不一定包括该特定特征、结构或特性。此外,此类措词不一定是指同一实施方案。此外,当结合一个实施方案来描述某一特定特征、结构或特性时,应当认为,无论是否明确描述,使得此类特征、结构或者特性结合其它实施方案起作用是在本领域的技术人员知识范围内的。
术语“本发明的实施方案”并不要求本发明的所有实施方案都包括所论述的特征、优点或操作模式。在不背离本发明的范围的情况下可设想出替代实施方案,并且本发明的众所周知的元素可能并未详细描述或者可能被省略,以免混淆本发明的相关细节。另外,本文所使用的术语仅用于描述特定实施方案的目的,而并不意在限制本发明。例如,如在本文所使用的,单数形式“一个”和“所述”意在还包括复数形式,除非上下文另外清楚表明。还应理解,当在本文中使用时,术语“包括(comprises)”、“包括(comprising)”、“包括(includes)”和/或“包括(including)”指明存在所述特征、整数、步骤、操作、元件和/或部件,但并不排除存在或者增添一个或多个其它特征、整数、步骤、操作、元件、部件和/或它们的组合。
图1A是包括CPU102和APD104的统一计算系统100的示例性图示。CPU102可以包括一个或多个单核或多核CPU。在本发明的一个实施方案中,系统100形成在单个硅裸片或硅封装上,从而组合CPU102与APD104以提供统一的编程和执行环境。这种环境使得APD104能够与CPU102一样流畅地用于一些编程任务。然而,本发明不绝对要求CPU102和APD104形成在单个硅裸片上。在一些实施方案中,它们可能单独形成并且安装在相同或不同的基片上。
在一个实施例中,系统100还包括存储器106、操作系统(OS)108以及通信基础设施109。OS108和通信基础设施109在下文中更详细地论述。
系统100还包括了内核模式驱动器(KMD)110、软件调度器(SWS)112,以及存储器管理单元116,如输入/输出存储器管理单元(IOMMU)。系统100的部件可以实现为硬件、固件、软件或它们的任何组合。本领域的普通技术人员应当了解,系统100可以包括除了图1A所示实施方案中所示部件之外或不同于所示部件的一个或多个软件、硬件以及固件部件。
在一个实施例中,驱动器(如KMD110)通常通过硬件连接到其上的计算机总线或通信子系统与设备进行通信。当调用程序调用驱动器中例程时,驱动器向设备发布命令。一旦设备向驱动器发送回数据,驱动器可调用原始调用程序中的例程。在一个实施例中,驱动器是依赖于硬件的并且是操作系统特定的。它们通常提供任何必需异步的时间依赖硬件接口所要求的中断处理。设备驱动器、尤其在现代Windows平台上可以内核模式(第0级)或以用户模式(第3级)运行。
以用户模式运行驱动器的一个益处是稳定性提高,因为编写拙劣的用户模式设备驱动器不可能通过重写内核存储器使系统崩溃。另一方面,用户/内核模式翻译通常强加相当大的性能开销,从而抑制用户模式驱动器的低等待时间和高吞吐量要求。用户模块仅可通过使用系统调用来访问内核空间。像UNIX shell或其它基于图形用户接口(GUI)的应用等终端用户程序是用户空间的一部分。这些应用通过内核支持的功能与硬件交互。
CPU102可以包括(未示出)控制处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或数字信号处理器(DSP)中的一个或多个。CPU102例如执行控制计算系统100的操作的控制逻辑,包括OS108、KMD110、SWS112以及应用111。在此说明性实施方案中,根据一个实施方案,CPU102发起并且控制应用111的执行,例如,通过在CPU102和诸如APD104等其它处理资源上分发与这个应用相关联的处理。
除了其它之外,APD104执行用于选定功能(如图形操作和可能(例如)尤其适于并行处理的其它操作)的命令和程序。通常,APD104常常可以用于执行图形管线操作,如像素操作、几何计算以及为显示器渲染图像。在本发明的各种实施方案中,APD104还可基于从CPU102接收到的命令或指令来执行计算处理操作。
例如,命令可以被认为是没有定义在ISA中的特殊指令,并且通常由来自给定ISA或独特硬件的一组指令完成。命令可以由特殊处理器(如分派处理器、CP或网络控制器)来执行。另一方面,指令可以被认为是例如在计算机体系结构内的处理器的单个操作。在一个实施例中,当使用两组ISA时,一些指令被用于执行x86程序,并且一些指令被用于执行APU/APD计算单元上的内核。
在一个说明性实施方案中,CPU102向APD104发送选定命令。这些选定命令可以包括图形命令和适于并行执行的其它命令。这些选定命令(还可包括计算处理命令)可以基本独立于CPU102执行。
APD104可以包括其自己的计算单元(未示出),诸如但不限于一个或多个单指令多数据(SIMD)处理核心。如本文中提及,SIMD是数学管线或编程模型,其中内核在多个处理元件上并发执行,每个处理元件具有其自己的数据和共享程序计数器。所有处理元件执行完全相同的指令集。使用预测使工作项能够参与或不参与每个所发布的命令。
在一个实施例中,每个APD104计算单元可以包括一个或多个标量和/或矢量浮点单元和/或算术逻辑单元(ALU)。APD计算单元还可以包括专用处理单元(未示出),如平方根倒数单元和正弦/余弦单元。在一个实施例中,APD计算单元在本文中统称着色器核心122。
通常,具有一个或多个SIMD使得APD104理想适于执行数据并行任务,如在图形处理中常见的任务。
诸如像素处理等一些图形管线操作以及其它并行计算操作可能要求对输入数据元素流或集合执行同一命令流或计算内核。同一计算内核的相应实例化可以在着色器核心122中的多个计算单元上并发执行,以便并行处理这些数据元素。如本文中提及,例如,计算内核是包含程序中声明并且在APU/APD计算单元上执行的指令的函数。这个函数也被称为内核、着色器、着色器程序或程序。
在一个说明性实施方案中,每个计算单元(例如,SIMD处理核心)可以执行特定工作项的相应实例化以便处理输入数据。工作项是由命令在设备上调用的并行内核执行集合中的一个。工作项可以作为在计算单元上执行的工作组的一部分由一个或多个处理元件执行。工作项也可以称为线程、通道(lane)或实例。
工作项在全局ID和本地ID方面与集合内的其它执行不同。在一个实施例中,工作组中同时一起在单个SIMD引擎上执行的工作项子集可被称为波前136。波前宽度是硬件SIMD引擎的特性如本文中提及,工作组是在单个计算单元上执行的相关工作项的集合。组中的工作项执行同一内核并且共享本地存储器和工作组隔离。工作组还可以称为线程组或线程块。
来自工作组的所有波前在相同SIMD引擎上进行处理。波前中的指令一次发布一个,并且当所有工作项都遵循相同控制流程时,每个工作项均执行同一程序。执行掩码和工作项预测用于在波前内实现发散控制流程,其中每个单独工作项实际可以占有通过核心的唯一代码路径。当工作项的全集在波前开始时间时不可用时,可以处理部分已填充的波前。波前也可称为线程束(warp)、矢量或线程。
对于波前,命令可能一次发布一个。当所有工作项都遵循同一控制流程时,每个工作项均可执行同一程序。在一个实施例中,使用执行掩码和工作项预测来实现发散控制流程,其中每个单独工作项可以实际占有通过内核驱动器的唯一代码路径。当工作项的全集在开始时间时不可用时,可以处理部分波前。例如,着色器核心122可以同时执行预定数量的波前136,每个波前136包括预定数量的工作项。
在系统100内,APD104包括其自己的存储器,如图形存储器130。图形存储器130提供用于在APD104中的计算过程中使用的本地存储器。着色器核心122内的单独计算单元(未示出)可以具有它们自己的本地数据存储器(未示出)。在一个实施方案中,APD104包括对本地图形存储器130的存取以及对存储器106的存取。在另一实施方案中,APD104可以包括对动态随机存取存储器(DRAM)或直接附接到APD104上并且与存储器106分开的其它此类存储器(未示出)的存取。
所示实施例中,APD104还包括一个或(n)个命令处理器(CP)124。CP124控制APD104内的处理。CP124还从存储器106中的命令缓冲器125检索有待执行的命令并且协调这些命令在APD104上的执行。
在一个实施例中,CPU102将基于应用111的命令输入到合适命令缓冲器125中。如本文中提及,应用是将在CPU和APD内的计算单元上执行的程序部分的组合。
对于被调度用于在APD104上执行的每个进程,可以维护多个命令缓冲器125。
CP124可以在硬件、固件、软件或它们的组合中实现。在一个实施方案中,CP124被实现为具有微代码的精简指令集计算机(RISC)引擎以实现包括调度逻辑的逻辑。
APD104还包括一个或(n)个分派控制器(DC)126。在本申请中,术语分派是指由DC执行的命令,所述分派控制器使用上下文状态来发起用于一组计算单元上的一组工作组的内核的执行的开始。DC126包括用于发起着色器核心122中的工作组的逻辑。在一些实施方案中,DC126可以实现为CP124的一部分。
系统100还包括用于从运行列表150选择进程以供在APD104上执行的硬件调度器(HWS)128。HWS128可以使用循环方法、优先级或基于其它调度策略从运行列表150选择进程。例如,优先级可以动态地确定。HWS128还可以包括管理运行列表150的功能性,例如,通过添加新的进程并且通过从运行列表150删除现有进程。HWS128的运行列表管理逻辑有时称为运行列表控制器(RLC)。
在本发明的各实施方案中,当HWS128发起对来自RLC150的进程的执行时,CP124开始检索并且执行来自对应命令缓冲器125的命令。在一些情况下,CP124可以生成有待在APD104内执行的一个或多个命令,所述命令与从CPU102接收到的命令对应。在一个实施方案中,CP124与其它部件一起以提高或最大化APD104和/或系统100资源的利用率的方式来实现APD104上的命令的优先级排序和调度。
APD104可以访问或者可以包括中断发生器146。中断发生器146可以由APD104配置成当APD104遇到诸如页面错误之类的中断事件时中断OS108。例如,APD104可以依赖于IOMMU116内的中断发生逻辑来形成上述页面错误中断。
APD104还可以包括抢占和上下文切换逻辑120,以便抢占当前正在着色器核心122内运行的进程。例如,上下文切换逻辑120包括停止进程并保存其当前状态(例如,着色器核心122状态和CP124状态)的功能性。
如本文中提及,术语状态可以包括初始状态、中间状态以及最终状态。初始状态是机器根据程序处理输入数据集合以形成输出数据集合的起始点。存在一种中间状态,例如,需要在若干点处对这种中间状态进行存储以使得处理向前进展。有时存储这种中间状态是为了允许当被某一其它进程中断时在稍后时间继续执行。还存在一种最终状态,可以记录这种最终状态作为输出数据集合的一部分。
抢占和上下文切换逻辑120还可以包括将另一进程上下文切换到APD104中的逻辑。将另一进程上下文切换成在APD104上运行的功能性可以包括例如通过CP124和DC126将进程实例化以在APD104上运行,恢复用于此进程的任何先前所保存的状态,并且开始它的执行。
存储器106可以包括非永久性存储器,如DRAM(未示出)。存储器106可以在应用或其它处理逻辑的部分的执行过程中存储(例如)处理逻辑指令、常量值以及变量值。例如,在一个实施方案中,用于在CPU102上执行一个或多个操作的控制逻辑的部分在所述操作的各自部分由CPU102执行的过程中可以驻存在存储器106内。如在本文所使用,术语“处理逻辑”或“逻辑”是指控制流程命令、用于执行计算的命令以及用于对资源进行相关访问的命令。
在执行过程中,相应应用、OS功能、处理逻辑命令以及系统软件可以驻存在存储器106中。对OS108重要的控制逻辑命令在执行过程中通常将会驻存在存储器106中。在系统100执行过程中,包括例如内核模式驱动器110和软件调度器112的其它软件命令也可以驻存在存储器106中。
在此实施例中,存储器106包括被CPU102用来向APD104发送命令的命令缓冲器125。存储器106还包含进程列表和处理信息(例如,活动列表152和进程控制块154)。这些列表以及信息由在CPU102上执行的调度软件用来向APD104和/或相关调度硬件传递调度信息。对存储器106的存取可以由耦接到存储器106上的存储器控制器140管理。例如,来自CPU102或来自其它设备的对从存储器106读出或对写入存储器106的请求由存储器控制器140管理。
返回系统100的其它方面,IOMMU116是多上下文存储器管理单元。
如本文中所用,上下文(有时称为进程)可被认为是内核在其中执行的环境以及其中限定同步和存储器管理的域。上下文包括一组设备、这些设备可存取的存储器、对应存储器性质以及用于调度内核或操作在存储器对象上的执行的一个或多个命令队列。另一方面,可以认为进程是程序的执行,因为应用将创建在计算机上运行的进程。OS可以形成数据记录和虚拟存储器地址空间以供程序执行。程序执行所用存储器和当前状态可被称作进程。OS会调度任务以用于使进程在存储器上从初始状态操作到最终状态。
返回参考图1A所示的实施例,IOMMU116包括用于执行虚拟地址到物理地址翻译以用于包括APD104的设备对存储器页面的存取的逻辑。IOMMU116还可以包括用于例如当设备(如APD104)所进行的页面存取导致页面错误时生成中断的逻辑。IOMMU116还可以包括或者有权存取翻译后备缓冲器(TLB)118。例如,TLB118可以实现在内容可寻址存储器(CAM)中以针对APD104对存储器106中的数据所作出的请求来加速逻辑(即,虚拟)存储器地址到物理存储器地址的翻译。
在所示实施例中,通信基础设施109根据需要互连系统100的部件。通信基础设施109可以包括(未示出)外围部件互连(PCI)总线、扩展PCI(PCI-E)总线、高级微控制器总线体系结构(AMBA)总线、加速图形端口(AGP)或此类通信基础设施中的一种或多种。通信基础设施109还可以包括以太网或类似网络,或满足应用的数据传输速率要求的任何合适物理通信基础设施。通信基础设施109包括互连包括计算系统100的部件等各部件的功能性。
在此实施例中,OS108包括用于管理系统100的硬件部件并且提供常见服务的功能性。在各实施方案中,OS108可以在CPU102上执行并且提供常见服务。这些常见服务可以包括例如用于在CPU102内执行的调度应用、故障管理、中断服务以及处理其它应用的输入和输出。
在一些实施方案中,基于中断控制器(如中断控制器148)所生成的中断,OS108调用适当的中断处理例程。例如,一旦检测到页面错误中断,OS108就可以调用中断处理器来发起将相关页面加载到存储器106中并且更新对应页表。
OS108还可包括通过确保对硬件部件的访问通过OS管理的内核功能性作为中介从而保护系统100的功能性。实际上,OS108确保应用(如应用111)在用户空间中在CPU102上运行。OS108还确保应用111调用OS提供的内核功能性来访问硬件和/或输入/输出功能性。
例如,应用111包括各种程序或命令以执行还在CPU102上执行的用户计算。统一概念可以允许CPU102无缝发送用于在APD104上处理的选定命令。在这种统一APD/CPU构架下,来自应用111的输入/输出请求将通过对应OS功能性进行处理。
在一个实施例中,KMD110实现API,CPU102或在CPU102上执行的应用或其它逻辑可以通过所述API调用APD104功能性。例如,KMD110可使来自CPU102的命令入队到命令缓冲器125中,APD104随后将从命令缓冲器125检索命令。另外,KMD110可以与SWS112一起执行对有待在APD104上执行的进程的调度。SWS112例如可以包括用于维护有待在APD上执行的进程的优先列表的逻辑。
在本发明的其它实施方案中,在CPU102上执行的应用在使命令入队时可以完全绕过KMD110。
在一些实施方案中,SWS112在存储器106中维护有待在APD104上执行的进程的活动列表152。SWS112还选择活动列表152中有待由硬件中的HWS128管理的进程子集。与在APD104上运行每个进程相关的信息通过进程控制块(PCB)154从CPU102传递到APD104。
用于应用、OS以及系统软件的处理逻辑可以包括在诸如C之类的编程语言和/或者在诸如Verilog、RTL或网表之类的硬件描述语言中指定的命令,以使得能够通过生成掩模作品/光掩模来最终配置制造过程,从而产生体现本文所述发明的各方面的硬件设备。
在阅读本说明书时,本领域的技术人员将会理解,计算系统100可以包括比图1A中所示更多或更少的部件。例如,计算系统100可以包括一个或多个输入接口、非易失性存储装置、一个或多个输出接口、网络接口以及一个或多个显示器或显示接口。
图1B是示出图1A所示APD104的更详细的图示的实施方案。在图1B中,CP124可以包括CP管线124a、124b以及124c。CP124可以配置成处理被提供作为来自图1A所示命令缓冲器125的输入的命令列表。在图1B的示例性操作中,CP输入0(124a)负责将命令驱动到图形管线162中。CP输入1和2(124b和124c)将命令转发给计算管线160。还提供了用于控制HWS128的操作的控制器机制166。
在图1B中,图形管线162可以包括一组框,在本文中称作有序管线164。例如,有序管线164包括顶点组翻译器(VGT)164a、原语汇编程序(PA)164b、扫描转换器(SC)164c以及着色器输出、渲染支持单元(SX/RB)176。有序管线164内的每个框可以表示图形管线162内的不同图形处理阶段。有序管线164可为固定功能硬件管线。但是,可以使用将在本发明的精神和范围内的其它实现方式。
虽然只有少量数据可以提供作为到图形管线162的输入,但是当将这种数据提供作为来自图形管线162的输出时,数据将被放大。图形管线162还包括用于通过对CP管线124a接收到的工作项组内的范围进行计数的DC166。通过DC166提交的计算工作是与图形管线162半同步的。
计算管线160包括着色器DC168和170。DC中的每一个均被配置成对从CP管线124b和124c接收到的工作组内的计算范围进行计数。
图1B所示DC166、168以及170接收输入范围,将所述范围划分成工作组,并且随后将工作组转发给着色器核心122。
由于图形管线162通常是固定功能管线,因此难以保存和恢复它的状态,并且因此,图形管线162难以进行上下文切换。因此,在大多数情况下,如本文中论述,上下文切换不涉及图形进程中的上下文切换。着色器核心122中的图形工作则是例外,它能被上下文切换。
着色器核心122可以由图形管线162和计算管线160共享。着色器核心122可以是被配置成运行波前的通用处理器。
在一个实施例中,计算管线160内的所有工作都在着色器核心122内处理。着色器核心122运行可编程软件代码,并且包括诸如状态数据等各种形式的数据。然而,计算管线160不将工作发送到图形管线162以进行处理。在图形管线162内的工作处理已完成后,通过渲染支持单元176对所完成的工作进行处理,渲染支持单元176进行深度和色彩计算并且随后将其最终结果写入存储器130。
图2是图1B的示例性APD104的更详细的框图图示。如图1B所示,APD104包括计算管线160,所述计算管线160将输入1和输入2提供给着色器核心122。图2中所示示例性APD包括八个计算管线CS管0至CS管7(CS P0至CS P7)。这种配置被配置成通过多个计算管线处理多个计算任务。APD200内的多个计算管线有利于实现计算工作负载之间的灵活资源分配。尽管示例性APD200示出八个计算管线,但是本领域的普通技术人员将会了解,可以使用其它数量的计算和图形输入。
为了高效地处理来自多个计算输入的数据,在计算管线CS P0至CS P7内的管线队列之间发生仲裁,如图3中更详细地示出。更确切地,根据本发明的实施方案的仲裁策略在多个管线输入之间分配APD资源。着色器输入块(SPI)202提供一种用于在计算管线CS P0至CSP7与图形管线204之间提交波前的仲裁方案。波分派器206与两个交替计算管线连接,以将波前转发到着色器核心208。着色器核心208执行波前。
图3是图2所示计算管线CS P0至CS P7的更详细的框图图示。这八个计算管线参与针对访问共享着色器核心208的仲裁。每个计算管线CS P0至CS P7例如包括硬件队列描述符HQD。计算管线CS P0与HQD0相关联,计算管线CS P1与HQD1相关联等等,直至CS P7与HQD7相关联。每个硬件队列描述符HQD包括八个存储器队列的相关联队列。如图4所示,例如,CS P0与队列Q0至Q7相关联。类似的是,CS P1与队列Q8至Q15相关联等等,直至CS管7与队列Q56至Q63相关联。提供CP多线程微处理器引擎ME301和电网DC控制器0至控制器3用来对线程组进行处理。
如上论述,硬件调度器HWS128被配置成从RLC150中选择调度过的进程以在APD上执行。例如,HWS128支持基于优先级或基于其它仲裁调度标准应用于RLC150的调度技术。另外,KMD110可以与SWS112一起执行对有待在APD上执行的进程的调度。OSSWS112例如可以包括用于维护通过仲裁得到的有待在APD200上执行的进程的优先列表的逻辑。
在另一个示例性实施方案中,每个管线的计算管线CS P0至CSP7硬件队列描述符HQD0至HQD7之间的仲裁是使用多级调度进程进行解析。在具有多个计算输入的实现方式中,多级调度可以用于控制多级优先级队列间的资源分配,其中每个计算输入与具有类似优先级的作业相关联。
OS可以调度队列Q0至Q7以通过编程硬件队列描述符HQD0至HQD7来由这些计算管线硬件队列描述符处理。八个硬件队列描述符HQD中的任何一个均可包含活动队列。与一个计算管线相关联的队列可为独立进程或者可以表示进程子集的实现方式。例如,在一个管线中建立的任何系统可以通过在共享存储器中的一个或多个(例如,图1A和图1B中示出的L2R/W缓存174、图形存储器130)中建立的同步来与来自其它计算管线的队列或队列集合进行交互。
与每个队列相关联的硬件队列描述符HQD可以为OS提供抢占活动进程以防分派尚未分配任何着色器资源的任何更多工作组的能力。从硬件移除的任何队列可以重新调度以供在稍后时间继续或者如果期望的话由OS终止。
硬件队列描述符HQD0至HQD7中的每个可以包括OS分配的存储器队列描述符MQD的存储器队列描述符地址MQDA。OS可以使用MQD来存储队列的永久状态并且将MQDA地址提供给HQD,从而使得硬件可以更新以选择存储器队列描述符的字段。当存储队列描述符与HQD断开连接时,硬件将在任何抢占期间使用MQD的一部分暂时存储必需的持久数据。空间子集还可用于OS与HQD之间的同步协调。
队列仲裁
图5是实践本发明的一个实施方案的示例性方法的流程图。在图5的步骤502中,就绪队列和活动队列是选自用于每个计算管线CS P0至CS P7的八个硬件队列描述符队列HQD0至HQD7。例如,选择可由每个计算管线并行并且独立地执行。
在本发明的一个实施方案中,对于每个波前队列分组提供以下寄存器控制:
1).队列活动(1位),
2).队列优先级(4位0至15→L-H),3),
3).量子持续时间(5位,以5000时钟为单位)
4).量子启用(1位),
5).管优先级(2位),以及
6).就绪(“就绪”表明队列是活动的并且(非空或分派管非空)并且队列未停止。
在步骤504中,选择被确定为就绪可供处理的具有最高队列优先级的队列。一旦被选定,例如,队列保持选中,直至出现以下情况之一:
1).更高优先级队列变成就绪,
2).量子被启用,诸如超过处理持续时间并且具有相同优先级的另一队列就绪可供处理,
3).量子被禁用,并且当前队列中的波前分组写入任何其它队列优先级寄存器,并且具有相同优先级的另一队列就绪,
4).当前队列波前分组抢占来自计算管线的队列并且调度例如智能等待特定条件(如定时器到期),
5).当前队列和计算管线DC206变空,并且同一计算管线中的任何其它队列就绪,以及
6).OS请求当前队列进行抢占。
在步骤506处,当仲裁器确定更佳队列就绪可供处理时,计算管线顶部的队列仲裁器发送信号给相应CP ME301线程以便停止在下一分组边界上。如果确定更佳队列不可用,那么过程在步骤508处继续。
在步骤510处,CP ME301执行上下文切换例程,并且发送信号给获取器以停止获取队列数据,并且发送信号给DC以停止向当前队列分派波前。CP ME301可以存储相应电网DC控制器0至控制器3的重启线程组id。
在步骤512处,切换计算管线的当前持续状态被以预定义的偏移存储在相应存储器队列描述符MQD中,以有待用于在重启队列前进行状态预载。可以插入进程结束(EOP)围栏事件,其放置在MQD的管存储双字当前最终读出地址的末尾。在所述事件中,队列被从硬件中移除,同时着色器复合器件中的工作未完成,HQD最终读出地址将被存储在MQD中。随后,低级驱动器可以通过将管最终读出地址的开头与管最终读出地址的末尾进行比较来确定队列的所有未完成工作何时已经完成,当它们匹配时,所有工作已经完成。
在步骤514处,前一队列状态被调度以进行保存,并且预取数据被调度以弃置。CP ME可以释放获取器以选择下一队列进行处理。如果下一队列具有第一时间状态位组,那么获取器将插入来自MQD的所存储的永久状态,随后是队列读出/写入指针设置以用于队列获取。在一个实施方案中,预期切换时间可为约500时钟,直至CP ME开始处理下一队列。
考虑图6中示出的以下实施例,其中T<n>=时间,并且n=时钟数量,
QA=队列活动,
QP=队列优先级,
QE=量子启用,并且
QD=5000时钟的量子持续单位对于单个计算管线中的八个队列Q0至Q7,时间垂直增加。
如图6所示,对于每个优先级,计算管线维护最后执行队列记分板。返回到该优先级将处理下一就绪队列。如果在优先级中仅一个队列就绪,那么它将继续。
管可以将队列从零到七定序,并且在重置时,前一队列将设置为七,从而得到Q0→Q7作为本地排序。如果Q0、Q3、Q7在刚重置后启用的量子处以队列优先级7就绪,那么队列将以以下次序Q0、Q3、Q7、Q0等等进行处理。如果Q5显示具有相同队列优先级(7),那么它将在下一周期中在Q3后并且在Q7前得到执行。
如果Q1和Q4在Q5量子期间达到优先级10,那么Q1抢占Q5,并且系统在在Q4与Q1之间的量子上反复切换直至队列变空或者另一队列被调度以进行处理。当Q1和Q4变空时,进程返回到Q7,因为Q5先前以优先级7进行处理。
图6是根据本发明的实施方案的示例性方法的图示。在图6中示出的实施例中,计算管线使用两种主要方法中的一种得到至其它队列的管。第一方法是响应于时间量子到期,并且第二方法是向队列优先级寄存器进行写入。
如上所述,其中时间量子被启用并超过的队列将由于具有相同优先级的现有队列或具有相同或更高优先级的到达队列而启用抢占。如果队列是仅有的最高优先级队列,那么队列将会保持计算管线的所有权,直到具有相同或更高优先级的队列变成就绪。
在一个替代实施方案中,仲裁事件可以针对计算管线的队列优先级寄存器的任何写入产生。这种方法可以使得用户能够在启用管的其它队列以取得进展之前控制发布的工作量。另外,这种替代实施方案可以启用用于每一CP ME的特权队列。
计算管线间的仲裁
一旦最高优先级队列已经在每个计算管线硬件描述符队列中得到解析,下一仲裁点就必须解析来自具有最高管优先级的计算管线的哪个波前将提交给着色器核心以进行处理。由于两个计算管线以交替的方式共享公共DC,因此在优先级被确定后,共享电路分配哪个计算管线被提交给着色器核心。
例如,参与管线可为图形管线中的任一个、HP3D任务(LS、HS、ES、GS、VS、PS)和GFX任务(LS、HS、ES、GS、VS、PS、CS)以及八个计算管线中的四个。计算管线可以具有以下管优先级之一:CS_HIGH—高于HP3D,CS_MEDIUM—介于HP3D与GFX之间,以及CS_LOW—低于GFX。
为了解析具有相同管优先级的多个计算管线之间的联系,例如,可以采用最近最少发布电路或最近最少使用电路,如图腾柱式电路。每次选择管线以向着色器核心发布任何工作时,管线都将被移动到最近最少发布电路的底部,从而向这个管线分配管线优先级中的最低优先级,直至具有相同优先级的另一管线发布波前。这种特殊电路将被用于帮助促进发布具有相同优先级的工作组的过程中的公平性。
重置之后,最近最少发布列表将为P0→P7,其中对于给定管优先级而言管0最初是最受偏爱的。
图7是示例性管线仲裁策略的图示。在从最高优先级到最低优先级的CS HIGH、HP3D、CS MEDIUM、GFX、CS_LOW五个优先级中,将会选择最佳的优先级。
在所述实施例中,“粗体”管线被认为是用于波前发射并且“粗体且带下划线的”管线被选择用于波前发射。
图7中示出的表格从左至右示出示例性图腾柱式布置。在所述实施例中,计算管线CS P0至CS P7被表示为Pn,其中n是提供波前的计算管线并且(-)表示无=无工作。H表示—管优先级为高,M—表示管优先级为中,并且L表示—管优先级为低。对于每个时间段,八个计算管线中的在DC的计算管线成对仲裁后保留下来的四个计算管线以“粗体”示出,并且“粗体且带下划线的”计算管线是管仲裁将从处于竞争的6个管线中选择出的管。
结论
概述以及摘要部分可以阐明如发明人所构想的本发明的一个或多个但非所有的示例性实施方案,并且因此,并不意图通过任何方式对本发明和所附权利要求书进行限制。
本发明已在上文中借助示出特定功能和其关系的实现的功能构建块来描述。为了方便描述,本文已对这些功能构建块的边界进行任意界定。只要合适执行特定功能和其关系,就可界定替代边界。
特定实施方案的前述描述将会完全地揭示本发明的一般性质,以使他人可以在不背离本发明的一般概念的情况下通过应用本领域的技术范围内的知识来容易地修改和/或改编此类特定实施方案以用于各种应用。因此,基于本文所呈现的教导内容以及指导内容,此类改编以及修改意图在所公开的实施方案的等同物的范围内。应当理解,本文的措词或术语目的在于说明而非限制,因此技术人员将会根据教导内容以及指导内容来对本说明书的术语或措词进行解释。
本发明的宽度以及范围不应限于上述示例性实施方案,而应仅仅根据所附权利要求和它们的等同物来界定。
Claims (22)
1.一种在包括计算管线的加速处理设备(APD)内确定优先级的方法,所述方法包括:
根据预定标准从所述计算管线中的每个内的计算管线处理队列中选择第一队列和第二队列;以及
根据优先级标准来选择所述第一队列和所述第二队列中的一个以进行处理;
其中对所述选定队列进行处理,直至来自包括以下各项的组中的至少一个变得可用:(i)时间量子流逝;以及(ii)具有更高优先级的队列。
2.如权利要求1所述的方法,其中处理所述选定队列包括抢占所述选定队列。
3.如权利要求2所述的方法,其中抢占所述选定队列包括对所述选定队列执行上下文切换操作。
4.如权利要求2所述的方法,其还包括在所述抢占后发起对第二队列的处理。
5.如权利要求1所述的方法,其还包括确定所述计算管线中的每个的相对优先级。
6.如权利要求5所述的方法,其中所述计算管线中的每个的所述相对优先级是使用最近最少发布电路来确定。
7.如权利要求6所述的方法,其中所述最近最少发布电路是图腾柱式电路。
8.如权利要求6所述的方法,其还包括将具有最低优先级的所述计算管线指派至所述电路的底部。
9.如权利要求1所述的方法,其中所述第一队列是就绪队列。
10.如权利要求1所述的方法,其中所述第二队列是活动队列。
11.如权利要求1所述的方法,其中所述预定标准包括(i)队列优先级,(ii)队列量子持续时间,以及(iii)队列就绪控制。
12.一种系统,所述系统包括:
存储器;以及
加速处理设备(APD),所述APD包括耦接至所述存储器的计算管线,其中所述计算管线被配置成基于存储在存储器中的指令执行以下操作:
根据预定标准从所述计算管线中的每个内的计算管线处理队列中选择第一队列和第二队列;
根据优先级标准选择所述第一队列和所述第二队列中的一个以进行处理;以及
处理所述选定队列,直至来自包括以下各项的组中的至少一个变得可用:(i)时间量子流逝;以及(ii)具有更高优先级的队列。
13.如权利要求12所述的系统,其中所述计算管线被配置成抢占处理所述选定队列。
14.如权利要求13所述的系统,其中所述计算管线被配置成在所述抢占期间上下文切换所述选定队列。
15.如权利要求13所述的系统,其中所述计算管线被配置成在所述抢占后发起对第二队列的处理。
16.如权利要求12所述的系统,其还包括着色器输入块,所述着色器输入块耦接至所述计算管线并且被配置成确定所述计算管线中的每个的相对优先级。
17.如权利要求16所述的系统,其中所述计算管线中的每个的所述相对优先级是使用最近最少发布电路来确定。
18.如权利要求17所述的系统,其中所述最近最少发布电路是图腾柱式电路。
19.如权利要求17所述的系统,其还包括将具有最低优先级的所述计算管线指派至所述电路的底部。
20.如权利要求12所述的方法,其中所述第一队列是就绪队列。
21.如权利要求12所述的方法,其中所述第二队列是活动队列。
22.如权利要求12所述的方法,其中所述预定标准包括(i)队列优先级,(ii)队列量子持续时间,以及(iii)队列就绪控制。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/325,286 | 2011-12-14 | ||
US13/325,286 US20130155077A1 (en) | 2011-12-14 | 2011-12-14 | Policies for Shader Resource Allocation in a Shader Core |
PCT/US2012/069836 WO2013090773A2 (en) | 2011-12-14 | 2012-12-14 | Policies for shader resource allocation in a shader core |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103999051A true CN103999051A (zh) | 2014-08-20 |
CN103999051B CN103999051B (zh) | 2018-07-31 |
Family
ID=47754935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280061763.6A Active CN103999051B (zh) | 2011-12-14 | 2012-12-14 | 用于着色器核心中着色器资源分配的策略 |
Country Status (6)
Country | Link |
---|---|
US (2) | US20130155077A1 (zh) |
EP (1) | EP2791795B1 (zh) |
JP (1) | JP6189858B2 (zh) |
KR (1) | KR101922681B1 (zh) |
CN (1) | CN103999051B (zh) |
WO (1) | WO2013090773A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108463804A (zh) * | 2016-01-28 | 2018-08-28 | 高通股份有限公司 | 自适应上下文切换 |
CN108536644A (zh) * | 2015-12-04 | 2018-09-14 | 上海兆芯集成电路有限公司 | 由装置端推核心入队列的装置 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8578129B2 (en) * | 2011-12-14 | 2013-11-05 | Advanced Micro Devices, Inc. | Infrastructure support for accelerated processing device memory paging without operating system integration |
JP5238876B2 (ja) * | 2011-12-27 | 2013-07-17 | 株式会社東芝 | 情報処理装置及び情報処理方法 |
US8977997B2 (en) * | 2013-03-15 | 2015-03-10 | Mentor Graphics Corp. | Hardware simulation controller, system and method for functional verification |
GB2524063B (en) | 2014-03-13 | 2020-07-01 | Advanced Risc Mach Ltd | Data processing apparatus for executing an access instruction for N threads |
US9779535B2 (en) | 2014-03-19 | 2017-10-03 | Microsoft Technology Licensing, Llc | Configuring resources used by a graphics processing unit |
US9766954B2 (en) | 2014-09-08 | 2017-09-19 | Microsoft Technology Licensing, Llc | Configuring resources used by a graphics processing unit |
US20160260246A1 (en) * | 2015-03-02 | 2016-09-08 | Advanced Micro Devices, Inc. | Providing asynchronous display shader functionality on a shared shader core |
US9652817B2 (en) * | 2015-03-12 | 2017-05-16 | Samsung Electronics Co., Ltd. | Automated compute kernel fusion, resizing, and interleave |
US20180109469A1 (en) * | 2016-10-17 | 2018-04-19 | International Business Machines Corporation | Systems and methods for controlling process priority for efficient resource allocation |
US10026145B2 (en) * | 2016-12-13 | 2018-07-17 | Qualcomm Incorporated | Resource sharing on shader processor of GPU |
US10147159B2 (en) | 2017-04-07 | 2018-12-04 | Microsoft Technology Licensing, Llc | Ink render using high priority queues |
US10282812B2 (en) | 2017-04-09 | 2019-05-07 | Intel Corporation | Page faulting and selective preemption |
US20180307533A1 (en) * | 2017-04-21 | 2018-10-25 | Intel Corporation | Faciltating multi-level microcontroller scheduling for efficient computing microarchitecture |
GB2563588B (en) | 2017-06-16 | 2019-06-26 | Imagination Tech Ltd | Scheduling tasks |
US10558418B2 (en) * | 2017-07-27 | 2020-02-11 | Advanced Micro Devices, Inc. | Monitor support on accelerated processing device |
CN109697115B (zh) * | 2017-10-20 | 2023-06-06 | 伊姆西Ip控股有限责任公司 | 用于调度应用的方法、装置以及计算机可读介质 |
US10796472B2 (en) * | 2018-06-30 | 2020-10-06 | Intel Corporation | Method and apparatus for simultaneously executing multiple contexts on a graphics engine |
US11593311B2 (en) * | 2019-09-24 | 2023-02-28 | Ati Technologies Ulc | Compression system with longest match processing for generating compressed data |
US11210757B2 (en) * | 2019-12-13 | 2021-12-28 | Advanced Micro Devices, Inc. | GPU packet aggregation system |
US11403729B2 (en) * | 2020-02-28 | 2022-08-02 | Advanced Micro Devices, Inc. | Dynamic transparent reconfiguration of a multi-tenant graphics processing unit |
US12033275B2 (en) * | 2021-09-29 | 2024-07-09 | Advanced Micro Devices, Inc. | System and methods for efficient execution of a collaborative task in a shader system |
US11941723B2 (en) * | 2021-12-29 | 2024-03-26 | Advanced Micro Devices, Inc. | Dynamic dispatch for workgroup distribution |
US11941742B2 (en) | 2022-06-23 | 2024-03-26 | Apple Inc. | Tiled processor communication fabric |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6781956B1 (en) * | 1999-09-17 | 2004-08-24 | Cisco Technology, Inc. | System and method for prioritizing packetized data from a distributed control environment for transmission through a high bandwidth link |
US20060085600A1 (en) * | 2004-10-20 | 2006-04-20 | Takanori Miyashita | Cache memory system |
US20090160867A1 (en) * | 2007-12-19 | 2009-06-25 | Advance Micro Devices, Inc. | Autonomous Context Scheduler For Graphics Processing Units |
CN101719262A (zh) * | 2008-11-06 | 2010-06-02 | 威盛电子股份有限公司 | 绘图处理单元、元命令处理系统以及元命令执行方法 |
US20110115802A1 (en) * | 2009-09-03 | 2011-05-19 | Michael Mantor | Processing Unit that Enables Asynchronous Task Dispatch |
US20110154346A1 (en) * | 2009-12-23 | 2011-06-23 | Jula Alin N | Task scheduler for cooperative tasks and threads for multiprocessors and multicore systems |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4953081A (en) * | 1988-12-21 | 1990-08-28 | International Business Machines Corporation | Least recently used arbiter with programmable high priority mode and performance monitor |
US5371887A (en) * | 1989-09-05 | 1994-12-06 | Matsushita Electric Industrial Co., Ltd. | Time-shared multitask execution device |
JPH0535509A (ja) * | 1991-07-29 | 1993-02-12 | Nec Corp | 階層構造キユーのチエーン破壊ガード方式 |
US5884077A (en) * | 1994-08-31 | 1999-03-16 | Canon Kabushiki Kaisha | Information processing system and method in which computer with high load borrows processor of computer with low load to execute process |
US6055579A (en) * | 1997-11-17 | 2000-04-25 | Silicon Graphics, Inc. | Distributed control and synchronization of multiple data processors using flexible command queues |
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 |
US7421694B2 (en) * | 2003-02-18 | 2008-09-02 | Microsoft Corporation | Systems and methods for enhancing performance of a coprocessor |
US7337443B2 (en) * | 2003-06-30 | 2008-02-26 | Microsoft Corporation | Method and apparatus for processing program threads |
US7830389B2 (en) * | 2006-10-03 | 2010-11-09 | Honeywell International Inc. | Dual processor accelerated graphics rendering |
US8085272B1 (en) * | 2006-11-03 | 2011-12-27 | Nvidia Corporation | Method and system for improving data coherency in a parallel rendering system |
DE102008007723A1 (de) | 2008-02-06 | 2009-08-20 | Osram Gesellschaft mit beschränkter Haftung | Beleuchtungsmodul, Leuchte und Verfahren zur Beleuchtung |
US20120324462A1 (en) | 2009-10-31 | 2012-12-20 | Rutgers, The State University Of New Jersey | Virtual flow pipelining processing architecture |
-
2011
- 2011-12-14 US US13/325,286 patent/US20130155077A1/en not_active Abandoned
-
2012
- 2012-12-14 EP EP12826689.7A patent/EP2791795B1/en active Active
- 2012-12-14 JP JP2014547504A patent/JP6189858B2/ja active Active
- 2012-12-14 KR KR1020147017104A patent/KR101922681B1/ko active IP Right Grant
- 2012-12-14 WO PCT/US2012/069836 patent/WO2013090773A2/en active Application Filing
- 2012-12-14 CN CN201280061763.6A patent/CN103999051B/zh active Active
-
2018
- 2018-07-19 US US16/040,224 patent/US10579388B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6781956B1 (en) * | 1999-09-17 | 2004-08-24 | Cisco Technology, Inc. | System and method for prioritizing packetized data from a distributed control environment for transmission through a high bandwidth link |
US20060085600A1 (en) * | 2004-10-20 | 2006-04-20 | Takanori Miyashita | Cache memory system |
US20090160867A1 (en) * | 2007-12-19 | 2009-06-25 | Advance Micro Devices, Inc. | Autonomous Context Scheduler For Graphics Processing Units |
CN101719262A (zh) * | 2008-11-06 | 2010-06-02 | 威盛电子股份有限公司 | 绘图处理单元、元命令处理系统以及元命令执行方法 |
US20110115802A1 (en) * | 2009-09-03 | 2011-05-19 | Michael Mantor | Processing Unit that Enables Asynchronous Task Dispatch |
US20110154346A1 (en) * | 2009-12-23 | 2011-06-23 | Jula Alin N | Task scheduler for cooperative tasks and threads for multiprocessors and multicore systems |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108536644A (zh) * | 2015-12-04 | 2018-09-14 | 上海兆芯集成电路有限公司 | 由装置端推核心入队列的装置 |
CN108536644B (zh) * | 2015-12-04 | 2022-04-12 | 格兰菲智能科技有限公司 | 由装置端推核心入队列的装置 |
CN108463804A (zh) * | 2016-01-28 | 2018-08-28 | 高通股份有限公司 | 自适应上下文切换 |
CN108463804B (zh) * | 2016-01-28 | 2022-02-15 | 高通股份有限公司 | 自适应上下文切换 |
Also Published As
Publication number | Publication date |
---|---|
US20130155077A1 (en) | 2013-06-20 |
JP6189858B2 (ja) | 2017-08-30 |
KR101922681B1 (ko) | 2018-11-27 |
WO2013090773A2 (en) | 2013-06-20 |
WO2013090773A3 (en) | 2013-08-08 |
CN103999051B (zh) | 2018-07-31 |
JP2015502618A (ja) | 2015-01-22 |
EP2791795B1 (en) | 2018-09-05 |
KR20140101384A (ko) | 2014-08-19 |
EP2791795A2 (en) | 2014-10-22 |
US10579388B2 (en) | 2020-03-03 |
US20180321946A1 (en) | 2018-11-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103999051A (zh) | 用于着色器核心中着色器资源分配的策略 | |
JP6381734B2 (ja) | グラフィックス計算プロセススケジューリング | |
US10242420B2 (en) | Preemptive context switching of processes on an accelerated processing device (APD) based on time quanta | |
JP6228459B2 (ja) | システムコール要求の通信の最適化 | |
EP2652614B1 (en) | Graphics processing dispatch from user mode | |
CN104025185A (zh) | 用于使用gpu控制器来预加载缓存的机制 | |
JP2013546097A (ja) | グラフィックス処理計算リソースのアクセシビリティ | |
CN103608776A (zh) | 异构型处理设备上的动态工作划分 | |
CN103207774A (zh) | 用于解决线程发散的方法和系统 | |
US20160371116A1 (en) | Heterogeneous enqueuing and dequeuing mechanism for task scheduling | |
CN118069379B (zh) | 一种基于gpu资源的调度实现方法 | |
CN103262039A (zh) | 用于处理装置的同步操作的方法和系统 | |
US20130141447A1 (en) | Method and Apparatus for Accommodating Multiple, Concurrent Work Inputs | |
CN105957131A (zh) | 图形处理系统及其方法 | |
JP5805783B2 (ja) | コンピュータシステムインタラプト処理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |