首页> 中国专利> 用于着色器核心中着色器资源分配的策略

用于着色器核心中着色器资源分配的策略

摘要

本发明提供了一种在加速处理设备内确定优先级的方法。所述加速处理设备包括根据预定标准处理的计算管线队列。基于优先级特征来选择所述队列,并且对选定队列进行处理,直至时间量子流逝或者具有更高优先级的队列变得可供用于处理。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-07-31

    授权

    授权

  • 2015-01-07

    实质审查的生效 IPC(主分类):G06F9/48 申请日:20121214

    实质审查的生效

  • 2014-08-20

    公开

    公开

说明书

背景

发明领域

本发明总体涉及计算系统。更具体地,本发明涉及用于在多个管 线(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还可基于从CPU 102接收到的命令或指令来执行计算处理操作。

例如,命令可以被认为是没有定义在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删除现有进程。HWS 128的运行列表管理逻辑有时称为运行列表控制器(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 上执行并且提供常见服务。这些常见服务可以包括例如用于在CPU 102内执行的调度应用、故障管理、中断服务以及处理其它应用的输 入和输出。

在一些实施方案中,基于中断控制器(如中断控制器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上执行的进程的调度。SWS 112例如可以包括用于维护有待在APD上执行的进程的优先列表的 逻辑。

在本发明的其它实施方案中,在CPU102上执行的应用在使命 令入队时可以完全绕过KMD110。

在一些实施方案中,SWS112在存储器106中维护有待在APD 104上执行的进程的活动列表152。SWS112还选择活动列表152中 有待由硬件中的HWS128管理的进程子集。与在APD104上运行每 个进程相关的信息通过进程控制块(PCB)154从CPU102传递到APD 104。

用于应用、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至CS P7与图形管线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上执行的进程的调度。OS SWS112例如可以包括用于维护通过仲裁得到的有待在APD200上 执行的进程的优先列表的逻辑。

在另一个示例性实施方案中,每个管线的计算管线CS P0至CS P7硬件队列描述符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个管线中选择出的管。

结论

概述以及摘要部分可以阐明如发明人所构想的本发明的一个或 多个但非所有的示例性实施方案,并且因此,并不意图通过任何方式 对本发明和所附权利要求书进行限制。

本发明已在上文中借助示出特定功能和其关系的实现的功能构 建块来描述。为了方便描述,本文已对这些功能构建块的边界进行任 意界定。只要合适执行特定功能和其关系,就可界定替代边界。

特定实施方案的前述描述将会完全地揭示本发明的一般性质,以 使他人可以在不背离本发明的一般概念的情况下通过应用本领域的 技术范围内的知识来容易地修改和/或改编此类特定实施方案以用于 各种应用。因此,基于本文所呈现的教导内容以及指导内容,此类改 编以及修改意图在所公开的实施方案的等同物的范围内。应当理解, 本文的措词或术语目的在于说明而非限制,因此技术人员将会根据教 导内容以及指导内容来对本说明书的术语或措词进行解释。

本发明的宽度以及范围不应限于上述示例性实施方案,而应仅仅 根据所附权利要求和它们的等同物来界定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号