图形处理器执行资源的动态缩放的制作方法

文档序号:12142290阅读:285来源:国知局
图形处理器执行资源的动态缩放的制作方法与工艺

一般来说,实施例涉及集成电路中的功率管理,更具体来说,涉及图形处理器上的执行单元的动态缩放。



背景技术:

一般利用一个或多个图形处理器来创建计算机系统的图形输出。每个图形处理器可包括多个图形处理器核,并且每个图形处理器核可包括用于执行各种类型的图形操作的多种类型的资源。这些各种类型的图形操作利用多种类型的图形工作负载,每种图形工作负载可利用图形核内的不同资源。对于计算密集型工作负载,广泛使用图形处理器执行单元。

但是,不同图形工作负载利用不同等级的执行单元。并且,特定图形工作负载可在处理图形工作负载时随时间使用各种等级的执行单元。对于图形执行单元维持功率对计算机系统引入各种成本,包括增加的功率耗散和最大负载电流。因此,计算机系统可通过在低使用率时间期间减少活动执行单元的数量而得益。但是,减少活动执行单元的数量减少可用于图形操作的执行资源。因此,现有的缩放执行单元的机制可损害整体系统性能。

附图说明

以下描述包括具有通过各种实施例的实现的举例给出的图示的图的论述。这些图应当举例而非限制性地理解。

图1是包含具有一个或多个处理器核和图形处理器的处理器的计算机系统的实施例的框图。

图2是具有一个或多个处理器核、集成式存储器控制器和集成式图形处理器的处理器的一个实施例的框图。

图3是图形处理器的一个实施例的框图,该图形处理器可以是离散图形处理单元,或者可以是与多个处理核集成的图形处理器。

图4是图形处理器的图形处理引擎的实施例的框图。

图5是图形处理器的另一个实施例的框图。

图6是包括处理元件的阵列的线程执行逻辑的框图。

图7示出根据一个实施例的图形处理器执行单元指令格式。

图8是图形处理器的另一个实施例的框图。

图9A是示出根据一个实施例的图形处理器命令格式的框图。

图9B是示出根据一个实施例的图形处理器命令序列的框图。

图10示出根据一个实施例的数据处理系统的示例性图形软件体系结构。

图11是根据一个实施例包括可缩放资源和功率控制单元的图形核的框图。

图12是根据一个实施例用于控制图形核执行单元的功率的功率控制单元的框图。

图13是三个示例性图形处理器核的执行单元(EU)的使用率的曲线图。

图14是突出新绘图调用的提交的示例性3×8 GPU的使用率的曲线图。

图15是根据一个实施例用于管理图形处理器执行单元的缩放的逻辑的流程图。

图16是根据一个实施例用于通过功率控制器管理执行单元的缩放的另外的逻辑的流程图。

图17是根据一个实施例用于确定图形执行资源的缩放因子的逻辑的流程图。

图18是示例性图形子核使用率的曲线图。

图19-20是示例性图形子核使用率的另外的曲线图。

图21是根据一个实施例用于管理图形核或子核的缩放的逻辑的流程图。

具体实施方式

公开用于在不显著影响性能的情况下动态地缩放图形处理器中的执行单元以便减少功率耗散和最大电流消耗的系统和方法的各种实施例。图形处理器可利用诸如当前执行单元使用率的使用率度量来动态地启用或禁用执行单元。图形处理器另外还可利用来自3D应用的新绘图调用的提交或图形处理器接收到新绘图调用作为在不久的将来可能较高的执行单元使用率的指示。通过预期高执行单元使用率,提出的技术可在高图形处理器使用率期间在不影响性能的情况下对执行单元进行动态的功率管理。

出于解释的目的,阐述了众多具体细节以便充分理解下文描述的各种实施例。但是,本领域技术人员将明白,没有这些具体细节中的一些细节也可实践这些实施例。在其它情况下,以框图形式示出公知的结构和装置,以免混淆基本原理,并能更充分地理解实施例。

尽管参考处理器描述以下一些实施例,但是类似技术和教导可适用于其它类型的电路或半导体装置,因为教导可适用于执行数据操纵的任何处理器或机器。

概述-图1-3

图1是根据一个实施例的数据处理系统100的框图。数据处理系统100包括一个或多个处理器102和一个或多个图形处理器108,并且可以是单处理器桌面系统、多处理器工作站系统、或具有大量处理器102或处理器核107的服务器系统。在一个实施例中,数据处理系统100是在移动式、手持式或嵌入式装置中使用的芯片上系统集成电路(SOC)。

数据处理系统100的实施例可包括基于服务器的游戏平台或游戏控制台(包括游戏和媒体控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台),或并入在其中。在一个实施例中,数据处理系统100是移动电话、智能电话、平板计算装置或移动互联网装置。数据处理系统100还可包括诸如智能手表可穿戴装置、智能眼镜装置、增强现实装置或虚拟现实装置的可穿戴装置,与其耦合或集成在其中。在一个实施例中,数据处理系统100是具有一个或多个处理器102和由一个或多个图形处理器108生成的图形界面的电视或机顶盒装置。

这一个或多个处理器102均包括用于处理指令的一个或多个处理器核107,指令在执行时执行系统和用户软件的操作。在一个实施例中,这一个或多个处理器核107中的每个处理器核107配置成处理特定指令集109。指令集109可便于复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW)的计算。多个处理器核107可各自处理可包括用于便于其它指令集的仿真的指令的不同指令集109。处理器核107还可包括诸如数字信号处理器(DSP)的其它处理装置。

在一个实施例中,这一个或多个处理器102中的每个处理器102均包括高速缓冲存储器104。取决于体系结构,处理器102可具有单个内部高速缓存或多个等级的内部高速缓存。在一个实施例中,在处理器102的各个组件中共享高速缓冲存储器。在一个实施例中,处理器102还使用可利用已知的缓存一致性技术在处理器核107中共享的外部高速缓存(例如,3级(L3)高速缓存或最后一级高速缓存(LLC))(未示出)。处理器102中另外还包括寄存器文件106,寄存器文件106可包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其它寄存器可以特定于处理器102的设计。

处理器102耦合到处理器总线110,以便在处理器102与系统100中的其它组件之间传送数据信号。系统100使用示例性‘集线器’系统体系结构,它包括存储器控制器集线器116和输入/输出(I/O)控制器集线器130。存储器控制器集线器116便于存储器装置与系统100的其它组件之间的通信,而I/O控制器集线器(ICH)130经由本地I/O总线提供到I/O装置的连接。

存储器装置120可以是动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪速存储器装置、或具有适合充当进程存储器的性能的某种其它存储器装置。存储器120可存储数据122和指令121以便在处理器102执行某个进程时使用。存储器控制器集线器116还与可选的外部图形处理器112耦合,可选的外部图形处理器112可与处理器102中的这一个或多个图形处理器108通信以便执行图形和媒体操作。

ICH 130使得外围设备能够经由高速I/O总线连接到存储器120和处理器102。I/O外围设备包括音频控制器146、固件接口128、无线收发器126(例如,Wi-Fi、蓝牙)、数据存储装置124(例如,硬盘驱动器、闪速存储器等)和用于将传统(例如,个人系统2(PS/2))装置耦合到系统的传统I/O控制器。一个或多个通用串行总线(USB)控制器142连接输入装置,例如键盘和鼠标144组合。网络控制器134也可耦合到ICH 130。在一个实施例中,高性能网络控制器(未示出)耦合到处理器总线110。

图2是具有一个或多个处理器核202A-N、集成式存储器控制器214和集成式图形处理器208的处理器200的一个实施例的框图。处理器200可包括另外的核,最多并包括由虚线框表示的另外的核202N。核202A-N中的每个核包括一个或多个内部高速缓存单元204A-N。在一个实施例中,每个核还具有对一个或多个共享缓存的单元206的访问。

内部高速缓存单元204A-N和共享高速缓存单元206表示处理器200内的高速缓冲存储器层级。高速缓冲存储器层级可包括每个核内的至少一个指令和数据高速缓存级以及一个或多个共享中间级高速缓存级,例如2级(L2)、3级(L3)、4级(L4)、或其它高速缓存级,其中将外部存储器之前的最高高速缓存级归类为最后一级高速缓存(LLC)。在一个实施例中,高速缓存一致性逻辑维持各种高速缓存单元206和204A-N之间的一致性。

处理器200还可包括一个或多个总线控制器单元216的集合和系统代理210。这一个或多个总线控制器单元管理诸如一个或多个外围组件互连总线(例如,PCI、PCI Express)的外围总线的集合。系统代理210为各个处理器组件提供管理功能性。在一个实施例中,系统代理210包括用于管理对各个外部存储器装置(未示出)的访问的一个或多个集成式存储器控制器214。

在一个实施例中,核202A-N中的一个或多个核包括对同步多线程化的支持。在该实施例中,系统代理210包括用于在多线程化处理过程中协调和操作核202A-N的组件。系统代理210另外还可包括功率控制单元(PCU),PCU包括用于调节核202A-N和图形处理器208的功率状态的逻辑和组件。

处理器200另外包括用于执行图形处理操作的图形处理器208。在一个实施例中,图形处理器208与共享高速缓存单元206的集合以及包括这一个或多个集成式存储器控制器214的系统代理单元210耦合。在一个实施例中,显示器控制器211与图形处理器208耦合以便将图形处理器输出驱动到一个或多个耦合的显示器。显示器控制器211可以是经由至少一个互连与图形处理器耦合的独立模块,或者可以集成在图形处理器208或系统代理210内。

在一个实施例中,利用基于环的互连单元212来耦合处理器200的内部组件,但是也可使用备选互连单元,例如点到点互连、交换式互连、或包括本领域中已知的技术的其它技术。在一个实施例中,图形处理器208经由I/O链路213与环互连212耦合。

示例性I/O链路213表示多品种I/O互连中的至少一种,包括便于各种处理器组件与高性能嵌入式存储器模块218(例如,eDRAM模块)之间的通信的封装上I/O互连。在一个实施例中,核202A-N中的每个核和图形处理器208利用嵌入式存储器模块218作为共享最后一级高速缓存。

在一个实施例中,核202A-N是执行相同指令集体系结构的同构核。在另一个实施例中,核202A-N在指令集体系结构(ISA)方面是异构的,其中核202A-N中的一个或多个核执行第一指令集,而其它核中的至少一个核执行第一指令集的子集或不同指令集。

处理器200可以是一个或多个衬底的一部分,或者可利用多种工艺技术中的任意技术在一个或多个衬底上实现,这些工艺技术可以是例如互补金属-氧化物-半导体(CMOS)、双极/互补金属-氧化物-半导体(BiCOMS)或N型金属-氧化物-半导体逻辑(NMOS)。另外,处理器200可在一个或多个芯片上实现,或作为除了具有所示组件外还具有其它组件的芯片上系统(SOC)集成电路实现。

图3是图形处理器300的一个实施例的框图,图形处理器300可以是离散图形处理单元,或者可以是与多个处理核集成的图形处理器。在一个实施例中,该图形处理器经由到图形处理器上的寄存器的存储器映射的I/O接口并经由放到处理器存储器中的命令通信。图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存和/或到系统存储器的接口。

图形处理器300还包括用于将显示器输出数据驱动到显示器装置320的显示器控制器302。显示器控制器302包括显示器的一个或多个覆盖平面和多层视频或用户接口元件的组成的硬件。在一个实施例中,图形处理器300包括用于将媒体编码为一个或多个媒体编码格式、从一个或多个媒体编码格式解码媒体或在一个或多个媒体编码格式之间转换媒体的代码的视频编解码器引擎306,这一个或多个媒体编码格式包括但不限于移动图片专家组(MPEG)格式(例如,MPEG-2)、高级视频编码(AVC)格式(例如,H.264/MPEG-4 AVC)、以及电影和电视工程师协会(SMPTE)421M/VC-1和联合图像专家组(JPEG)格式(例如,JPEG和运动JPEG(MJPEG)格式)。

在一个实施例中,图形处理器300包括用于执行包括例如位-边界块传输的二维(2D)光栅化程序操作的块图像传输(BLIT)引擎304。但是,在一个实施例中,利用图形处理引擎(GPE)310的一个或多个组件来执行2D图形操作。图形处理引擎310是用于执行包括三维(3D)图形操作和媒体操作的图形操作的计算引擎。

GPE 310包括用于执行3D操作的3D管线312,3D操作可以是例如利用在3D图元形状(例如,矩形、三角形等)上作用的处理功能渲染三维图像和场景。3D管线312包括可编程和固定功能元件,这些元件在元件内执行各种任务和/或将执行线程派生到3D/媒体子系统315。虽然可利用3D管线312来执行媒体操作,但是GPE 310的实施例还包括特定用于执行诸如视频后处理和图像增强的媒体操作的媒体管线316。

在一个实施例中,媒体管线316包括用于代替或代表视频编解码器引擎306执行诸如视频解码加速、视频去交错和视频编码加速的一个或多个专门化媒体操作的固定功能或可编程逻辑单元。在一个实施例中,媒体管线316另外包括用于派生线程以便在3D/媒体子系统315上执行的线程派生单元。派生的线程对于包含在3D/媒体子系统中的一个或多个图形执行单元上的媒体操作执行计算。

3D/媒体子系统315包括用于执行由3D管线312和媒体管线316派生的线程的逻辑。在一个实施例中,这些管线将线程执行请求发送给3D/媒体子系统315,3D/媒体子系统315包括用于仲裁各种请求并将这些请求分派给可用线程执行资源的线程分派逻辑。执行资源包括用于处理3D和媒体线程的图形执行单元的阵列。在一个实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一个实施例中,该子系统还包括用于在线程之间共享数据并存储输出数据的共享存储器,包括寄存器和可寻址存储器。

3D/媒体处理-图4

图4是图形处理器的图形处理引擎410的实施例的框图。在一个实施例中,图形处理引擎(GPE)410是如图3所示的GPE 310的版本。GPE 410包括3D管线412和媒体管线416,它们中的每一个均可与图3的3D管线312和媒体管线316的实现不同或类似。

在一个实施例中,GPE 410与命令流播器403耦合,命令流播器403将命令流提供给GPE 3D和媒体管线412、416。命令流播器403耦合到存储器,存储器可以是系统存储器,或者可以是内部高速缓冲存储器和共享高速缓冲存储器中的一个或多个。命令流播器403从存储器接收命令,并将命令发送给3D管线412和/或媒体管线416。3D和媒体管线通过经由相应管线内的逻辑执行操作或通过将一个或多个执行线程分派给执行单元阵列414来处理命令。在一个实施例中,执行单元阵列414是可缩放的,从而使得基于GPE 410的目标功率和性能等级,该阵列包括可变数量的执行单元。

采样引擎430与存储器(例如,高速缓冲存储器或系统存储器)和执行单元阵列414耦合。在一个实施例中,采样引擎430为可缩放执行单元阵列414提供允许执行阵列414从存储器读取图形和媒体数据的存储器访问机制。在一个实施例中,采样引擎430包括用于对媒体执行专门化图像采样操作的逻辑。

采样引擎430中的专门化媒体采样逻辑包括去噪声/去交错模块432、运动估计模块434以及图像缩放和过滤模块436。去噪声/去交错模块432包括用于对解码的视频数据执行去噪声或去交错算法中的一个或多个算法的逻辑。去交错逻辑将交错的视频内容的备选字段组合到单个视频帧中。去噪声逻辑从视频和图像数据中减少或移除数据噪声。在一个实施例中,去噪声逻辑和去交错逻辑具有运动适应性,并基于在视频数据中检测到的运动量使用空间或时间过滤。在一个实施例中,去噪声/去交错模块432包括专用运动检测逻辑(例如,位于运动估计引擎434内)。

运动估计引擎434通过对视频数据执行诸如运动向量估计和预测的视频加速功能来为视频操作提供硬件加速。运动估计引擎确定用于描述在连续视频帧之间的图像数据的变换的运动向量。在一个实施例中,图形处理器媒体编解码器利用视频运动估计引擎434来以宏块等级对视频执行操作,否则这在利用通用处理器执行时在计算上是密集的。在一个实施例中,运动估计引擎434一般对于图形处理器组件都是可用的,以便帮助对于视频数据内的运动的方向或幅度敏感或具适应性的视频解码和处理功能。

图像缩放和过滤模块436执行图像处理操作以便增强生成的图像和视频的视觉质量。在一个实施例中,缩放和过滤模块436在采样操作期间处理图像和视频数据,然后再将数据提供给执行单元阵列414。

在一个实施例中,图形处理引擎410包括数据端口444,数据端口444提供用于图形子系统访问存储器的另外的机制。数据端口444便于包括渲染目标写入、恒定缓冲器读取、暂时存储器空间读取/写入和媒体表面访问的操作的存储器访问。在一个实施例中,数据端口444包括用于缓存对存储器的访问的高速缓冲存储器空间。该高速缓冲存储器可以是单个数据高速缓存,或者可以分割成多个高速缓存以用于经由数据端口访问存储器的多个子系统(例如,渲染缓冲器高速缓存、恒定缓冲器高速缓存等)。在一个实施例中,在执行单元阵列414中的执行单元上执行的线程通过经由耦合图形处理引擎410的每个子系统的数据分发互连交换消息而与数据端口通信。

执行单元-图5-7

图5是具有可缩放数量的图形核的图形处理器的另一个实施例的框图。在一个实施例中,该图形处理器包括环互连502、管线前端504、媒体引擎537和图形核580A-N。环互连502将图形处理器耦合到其它处理单元,包括其它图形处理器或一个或多个通用处理器核。在一个实施例中,图形处理器是集成在多核处理系统内的许多处理器之一。

图形处理器经由环互连502接收一批批命令。通过管线前端504中的命令流播器503解译进入的命令。图形处理器包括用于经由图形核580A-N执行3D几何处理和媒体处理的可缩放执行逻辑。对于3D几何处理命令,命令流播器503将命令提供给几何管线536。对于至少一些媒体处理命令,命令流播器503将命令提供给视频前端534,视频前端534与媒体引擎537耦合。媒体引擎537包括用于视频和图像后处理的视频质量引擎(VQE)530以及用于提供硬件加速的媒体数据编码和解码的多格式编码/解码(MFX)533引擎。几何管线536和媒体引擎537均为由至少一个图形核580A提供的线程执行资源生成执行线程。

图形处理器包括以可缩放的线程执行资源为特色的模块化核580A-N(有时称为核切片),每个核580A-N均具有多个子核550A-N、560A-N(有时称为核子切片)。图形处理器可具有任意数量的图形核580A-580N。在一个实施例中,图形处理器包括至少具有第一子核550A和第二核子核560A的图形核580A。在另一个实施例中,图形处理器是具有单个子核(例如,550A)的低功率处理器。在一个实施例中,图形处理器包括多个图形核580A-N,每个核均包括第一子核550A-N的集合和第二子核560A-N的集合。第一子核550A-N的集合中的每个子核均至少包括执行单元552A-N和媒体/纹理采样器554A-N的第一集合。第二子核560A-N的集合中的每个子核均至少包括执行单元562A-N和采样器564A-N的第二集合。在一个实施例中,每个子核550A-N、560A-N共享共享资源570A-N的集合。在一个实施例中,共享资源包括共享高速缓冲存储器和像素操作逻辑。图形处理器的各种实施例中还可包含其它共享资源。

图6示出包括处理元件的阵列的线程执行逻辑600的实施例。在一个实施例中,线程执行逻辑600包括像素着色器(shader)602、线程分派器604、指令高速缓存606、包括多个执行单元608A-N的可缩放执行单元阵列、采样器610、数据高速缓存612和数据端口614。在一个实施例中,包含的组件经由链接到每个组件的互连结构互连。线程执行逻辑600包括通过指令高速缓存606、数据端口614、采样器610和执行单元阵列608A-N中的一个或多个到诸如系统存储器或高速缓冲存储器的存储器的一个或多个连接。在一个实施例中,每个执行单元(例如,608A)都是能够执行多个同步线程并且对于每个线程并行地处理多个数据元素的个别向量处理器。执行单元阵列608A-N包括任意数量的个别执行单元。

在一个实施例中,执行单元阵列608A-N主要用于执行“着色器”程序。在一个实施例中,阵列608A-N中的执行单元执行包括对许多标准3D图形着色器指令的原生支持的指令集,从而使得在最少转译的情况下执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。

执行单元阵列608A-N中的每个执行单元对数据元素的数组进行操作。数据元素的数量是指令的“执行大小”或通道数量。执行通道是在指令内执行数据元素访问、屏蔽和流控制的逻辑单元。通道数量可以独立于特定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量。执行单元608A-N支持整数和浮点数据类型。

执行单元指令集包括单个指令多个数据(SIMD)指令。各种数据元素可作为包装数据类型存储在寄存器中,并且执行单元将基于元素的数据大小处理各种元素。例如,当对256位宽的向量进行操作时,将向量的256个位存储在寄存器中,并且执行单元对该向量作为4个独立的64位包装数据元素(四字(QW)大小的数据元素)、8个独立的32位包装数据元素(双字(DW)大小的数据元素)、16个独立的16位包装数据元素(字(W)大小的数据元素)或32个独立的8位数据元素(字节(B)大小的数据元素)进行操作。但是,不同的向量宽度和寄存器大小也是可能的。

线程执行逻辑600中包括用于缓存执行单元的线程指令的一个或多个内部指令高速缓存(例如,606)。在一个实施例中,包括用于在线程执行期间缓存线程数据的一个或多个数据高速缓存(例如,612)。包括用于为3D操作提供纹理采样并为媒体操作提供媒体采样的采样器610。在一个实施例中,采样器610包括用于在将采样的数据提供给执行单元之前在采样过程期间处理纹理或媒体数据的专门化纹理或媒体采样功能性。

在执行期间,图形和媒体管线经由线程派生和分派逻辑将线程启动请求发送给线程执行逻辑600。线程执行逻辑600包括用于仲裁来自图形和媒体管线的线程启动请求并在一个或多个执行单元608A-N上实例化请求的线程的本地线程分派器604。例如,几何管线(例如,图5的536)将顶点处理、镶嵌或几何处理线程分派给线程执行逻辑600。线程分派器604还可处理来自执行着色器程序的运行时线程派生请求。

一旦处理完一组图形对象并将其光栅化为像素数据,便调用像素着色器602以便进一步计算输出信息并使得将结果写入到输出表面(例如,颜色缓冲器、深度缓冲器、模板缓冲器等)。在一个实施例中,像素着色器602计算即将跨光栅化对象内插的各种顶点属性的值。然后,像素着色器602执行API-提供的像素着色器程序。为了执行像素着色器程序,像素着色器602经由线程分派器604将线程分派给执行单元(例如,608A)。像素着色器602利用采样器610中的纹理采样逻辑来访问存储在存储器中的纹理图中的纹理数据。纹理数据和输入几何数据上的算术操作计算每个几何片段的像素颜色数据,或从进一步处理中丢弃一个或多个像素。

在一个实施例中,数据端口614提供存储器访问机制以便线程执行逻辑600将经过处理的数据输出到存储器以在图形处理器输出管线上处理。在一个实施例中,数据端口614包括或耦合到一个或多个高速缓冲存储器(例如,数据高速缓存612),以便缓存数据以经由数据端口进行存储器访问。

图7是示出根据一个实施例的图形处理器执行单元指令格式的框图。在一个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框示出执行单元指令中一般包含的组成,而虚线包括可选或者只包含在指令的子集中的组成。图示中描述的指令格式是宏指令,因为与在处理指令后由指令解码造成的微操作相比,它们是提供给执行单元的指令。

在一个实施例中,图形处理器执行单元原生地支持128位格式710的指令。基于所选指令、指令选项和操作数的数量,可对于一些指令使用64位压缩指令格式730。原生128位格式710提供对所有指令选项的访问,而在64位格式730中,一些选项和操作受到限制。64位格式730中可用的原生指令随实施例不同而不同。在一个实施例中,利用索引字段713中的索引值的集合部分地压缩指令。执行单元硬件基于索引值引用压缩表的集合,并利用压缩表输出来重构128位格式710的原生指令。

对于每种格式,指令操作码712定义执行单元将要执行的操作。执行单元跨每个操作数的多个数据元素并行地执行每个指令。例如,响应于加法指令,执行单元跨代表纹理元素或图片元素的每个颜色通道执行同步加法操作。默认地,执行单元跨操作数的所有数据通道执行每个指令。指令控制字段712启用对诸如通道选择(例如,预测)和数据通道顺序(例如,调配)的某些执行选项的控制。对于128位指令710,执行大小字段716限制将并行执行的数据通道的数量。执行大小字段716不可在64位压缩指令格式730中使用。

一些执行单元指令最多具有三个操作数,包括两个源操作数src0 720、src1 722和一个目的地718。在一个实施例中,执行单元支持双目的地指令,其中一个目的地是隐含的。数据操纵指令可具有第三源操作数(例如,SRC2 724),其中指令操作码712确定源操作数的数量。指令的最后一个源操作数可以是与指令一起传递的中间(例如,硬编码的)值。

在一个实施例中,基于操作码位字段将指令分组以便简化操作码解码740。对于8位操作码,位4、5和6允许执行单元确定操作码的类型。示出的精确操作码分组是示例性的。在一个实施例中,移动和逻辑操作码群组742包括数据移动和逻辑指令(例如,mov、cmp)。移动和逻辑群组742共享5个最高有效位(MSB),其中移动指令为0000xxxxb(例如,0x0x)的形式,而逻辑指令为0001xxxxb(例如,0x01)的形式。流控制指令群组744(例如,call、jmp)包括0010xxxxb(例如,0x20)形式的指令。混杂指令群组746包括指令的混合,包括0011xxxxb(例如,0x30)形式的同步化指令(例如,wait、send)。并行数学指令群组748包括0100xxxxb(例如,0x40)形式的逐个分量算术指令(例如,add、mul)。并行数学群组748跨数据通道并行执行算术操作。向量数学群组750包括0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。向量数学群组对向量操作数执行诸如点积计算的算术。

图形管线-图8

图8是图形处理器的另一个实施例的框图,该图形处理器包括图形管线820、媒体管线830、显示器引擎840、线程执行逻辑850和渲染输出管线870。在一个实施例中,该图形处理器是位于包括一个或多个通用处理核的多核处理系统内的图形处理器。该图形处理器通过到一个或多个控制寄存器(未示出)的寄存器写入或经由通过环互连802发出到图形处理器的命令进行控制。环互连802将图形处理器耦合到其它处理组件,例如其它图形处理器或通用处理器。来自环互连的命令通过命令流播器803解译,命令流播器803将指令提供给图形管线820或媒体管线830的各个组件。

命令流播器803引导从存储器读取顶点数据并执行由命令流播器803提供的顶点处理命令的顶点提取器805组件的操作。顶点提取器805将顶点数据提供给顶点着色器807,顶点着色器807对每个顶点执行坐标空间变换和光照操作。顶点提取器805和顶点着色器807通过经由线程分派器831将执行线程分派给执行单元852A、852B来执行顶点处理指令。

在一个实施例中,执行单元852A、852B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。执行单元852A、852B具有对于每个阵列特定或在阵列之间共享的附连L1高速缓存851。该高速缓存可作为数据高速缓存、指令高速缓存、或分区成在不同分区中包含数据和指令的单个高速缓存进行配置。

在一个实施例中,图形管线820包括用于执行3D对象的硬件加速镶嵌的镶嵌组件。可编程外壳着色器811配置镶嵌操作。可编程域着色器817提供镶嵌输出的后端评估。镶嵌器813在外壳着色器811的方向操作,并包含用于基于作为图形管线820的输入提供的粗糙几何模型生成详细几何对象的集合的专用逻辑。如果不使用镶嵌,那么可绕过镶嵌组件811、813、817。

全部几何对象可通过几何着色器819经由分派给执行单元852A、852B的一个或多个线程进行处理,或者它们可直接进入到裁剪器829。几何着色器对全部几何对象进行操作,而不是如同图形管线的之前阶段中那样对顶点或顶点面片进行操作。如果禁用镶嵌,那么几何着色器819接收来自顶点着色器807的输入。几何着色器819可由几何着色器程序编程以便在禁用镶嵌单元时执行几何镶嵌。

在光栅化之前,通过裁剪器829处理顶点数据,裁剪器829是具有裁剪和几何着色器功能的固定功能裁剪器或可编程裁剪器。在一个实施例中,渲染输出管线870中的光栅器873分派像素着色器以便将几何对象转化为它们的每个像素表示。在一个实施例中,线程执行逻辑850中包括像素着色器逻辑。

图形引擎具有互连总线、互连结构或允许在图形引擎的主要组件中传递数据和消息的某种其它互连机制。在一个实施例中,执行单元852A、852B和相关联的高速缓存851、纹理和媒体采样器854、以及纹理/采样器高速缓存858经由数据端口856互连以便执行存储器访问并与图形引擎的渲染输出管线组件通信。在一个实施例中,采样器854、高速缓存851、858和执行单元852A、852B均具有独立的存储器访问路径。

在一个实施例中,渲染输出管线870包含用于将基于顶点的对象转化为它们的相关联的基于像素的表示的光栅器和深度测试组件873。在一个实施例中,光栅器逻辑包括用于执行固定功能三角形和线性光栅化的窗口器/屏蔽器单元。在一个实施例中,相关联的渲染和深度缓冲器高速缓存878、879也是可用的。像素操作组件877对数据执行基于像素的操作,但是在一些情况下,通过2D引擎841执行与2D操作相关联的像素操作(例如,位块图像传输和混合),或者在显示时间通过显示器控制器843利用覆盖显示器平面代替。在一个实施例中,共享L3高速缓存875对于所有图形组件均可用,从而允许在不使用主要系统存储器的情况下共享数据。

图形处理器媒体管线830包括媒体引擎837和视频前端834。在一个实施例中,视频前端834从命令流播器803接收管线命令。但是,在一个实施例中,媒体管线830包括独立的命令流播器。视频前端834先对媒体命令进行处理,然后再将命令发送给媒体引擎837。在一个实施例中,媒体引擎包括用于派生线程以便经由线程分派器831分派给线程执行逻辑850的线程派生功能性。

在一个实施例中,图形引擎包括显示器引擎840。在一个实施例中,显示器引擎840位于图形处理器的外部,并经由环互连802或某个其它互连总线或结构与图形处理器耦合。显示器引擎840包括2D引擎841和显示器控制器843。显示器引擎840包含能够独立于3D管线进行操作的专用逻辑。显示器控制器843与显示器装置(未示出)耦合,显示器装置可以如同膝上型计算机中那样是系统集成的显示器装置,或者可以是经由显示器装置连接器附连的外部显示器装置。

图形管线820和媒体管线830可配置成基于多个图形和媒体编程接口执行操作,并且对于任何一个应用编程接口(API)都不是特定的。在一个实施例中,图形处理器的驱动器软件将对于特定图形或媒体库特定的API调用转译成可通过图形处理器处理的命令。在各种实施例中,对由Khronos Group支持的开放图形库(OpenGL)和开放计算语言(OpenCL)、来自微软公司的Direct3D库、或者在一个实施例中对于OpenGL和D3D两者提供支持。也可对开放源计算机视觉库(OpenCV)提供支持。如果可进行从具有兼容的3D管线的未来API的管线到图形处理器的管线的映射,那么还将支持该未来API。

图形管线编程-图9A-B

图9A是示出根据一个实施例的图形处理器命令格式的框图,而图9B是示出根据一个实施例的图形处理器命令序列的框图。图9A中的实线框示出图形命令中一般包含的组成,而虚线包括可选或者只包含在图形命令的子集中的组成。图9A的示例性图形处理器命令格式900包括用于标识命令的目标客户端902、命令操作代码(操作码)904和命令的相关数据906的数据字段。在一些命令中,还包括子操作码905和命令大小908。

客户端902指定处理命令数据的图形装置的客户端单元。在一个实施例中,图形处理器命令解析器检查每个命令的客户端字段以便调节命令的进一步处理并将命令数据路由给合适的客户端单元。在一个实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元和媒体单元。每个客户端单元具有用于处理命令的对应处理管线。一旦客户端单元接收到命令,客户端单元便读取操作码904和子操作码905(如果存在的话),以便确定要执行的操作。客户端单元利用命令的数据906字段中的信息执行命令。对于一些命令,预期显式命令大小908指定命令的大小。在一个实施例中,命令解析器基于命令操作码自动确定至少一些命令的大小。在一个实施例中,经由多个双字对准命令。

图9B中的流程图示出样本命令序列910。在一个实施例中,以图形处理器的实施例为特色的数据处理系统的软件或固件利用所示的命令序列的版本来设立、执行和终止图形操作的集合。虽然为了举例的目的示出并描述样本命令序列,但是实施例不限于这些命令或不限于该命令序列。而且,可在命令序列中按命令批发出命令,从而使得图形处理器将按照至少部分地同步的方式处理命令序列。

样本命令序列910可从管线刷新命令912开始,以使得任何活动图形管线完成管线的当前待决命令。在一个实施例中,3D管线922和媒体管线924并没有同步操作。执行管线刷新以使得活动图形管线完成任何待决命令。响应于管线刷新,图形处理器的命令解析器将暂停命令处理,直到活动绘图引擎完成待决操作并且相关读取高速缓存无效为止。可选地,可将标记为“脏”的渲染高速缓存中的任何数据刷新到存储器。为了管线同步化,或者在使图形处理器处于低功率状态之前,可使用管线刷新命令912。

当命令序列要求图形处理器在管线之间明确切换时,使用管线选择命令913。除非执行上下文是要为两个管线发出命令,否则在发出管线命令之前,在执行上下文内只需管线选择命令913一次。在一个实施例中,就在经由管线选择命令913进行管线切换之前立即需要管线刷新命令912。

管线控制命令914为操作配置图形管线,并且它用于将3D管线922和媒体管线924编程。管线控制命令914配置活动管线的管线状态。在一个实施例中,管线控制命令914用于管线同步化并在处理一批命令之前从活动管线内的一个或多个高速缓冲存储器清除数据。

返回缓冲器状态命令916用于为相应管线配置返回缓冲器的集合以便写入数据。一些管线操作需要分配、选择或配置一个或多个返回缓冲器,操作将处理期间的中间数据写入到这一个或多个返回缓冲器。图形处理器还利用一个或多个返回缓冲器来存储输出数据并执行交叉线程通信。返回缓冲器状态916包括选择用于管线操作的集合的返回缓冲器的大小和数量。

命令序列中的剩余命令基于操作的活动管线而不同。基于管线确定920,从3D管线状态930开始对于3D管线922定制命令序列,或者从媒体管线状态940开始对于媒体管线924定制命令序列。

3D管线状态930的命令包括用于顶点缓冲器状态、顶点元素状态、恒定颜色状态、深度缓冲器状态以及在处理3D图元命令之前要配置的其它状态变量的3D状态设置命令。至少部分地基于使用中的特定3D API确定这些命令的值。如果将不使用某些管线元件,那么3D管线状态930命令还能够选择性地禁用或绕过这些管线元件。

3D图元932命令用于提交即将通过3D管线处理的3D图元。将经由3D图元932命令传递给图形处理器的命令和相关联的参数转发给图形管线中的顶点提取功能。顶点提取功能利用3D图元932命令数据生成顶点数据结构。将顶点数据结构存储在一个或多个返回缓冲器中。利用3D图元932命令来经由顶点着色器对3D图元执行顶点操作。为了处理顶点着色器,3D管线922将着色器执行线程分派给图形处理器执行单元。

经由执行934命令或事件触发3D管线922。在一个实施例中,寄存器写入触发命令执行。在一个实施例中,经由命令序列中的‘go’或‘kick’命令触发执行。在一个实施例中,通过利用管线同步化命令以便通过图形管线刷新命令序列来触发命令执行。3D管线将对3D图元执行几何处理。一旦操作完成,便对所得几何对象进行光栅化,并且像素引擎对所得像素进行上色。对于像素着色和像素后端操作,还可包括用于控制这些操作的另外的命令。

当执行媒体操作时,样本命令序列910遵循媒体管线924路径。一般来说,媒体管线924的特定使用和编程方式取决于将要执行的媒体或计算操作。在媒体解码期间,可将特定媒体解码操作卸载到媒体管线。也可绕过媒体管线,并且可利用由一个或多个通用处理核提供的资源整体或部分地执行媒体解码。在一个实施例中,媒体管线还包括用于通用图形处理器单元(GPGPU)操作的元件,其中图形处理器用于利用与图形图元的渲染明确无关的计算着色器程序来执行SIMD向量操作。

以与3D管线922类似的方式配置媒体管线924。在媒体对象命令942之前分派媒体管线状态命令940的集合,或将它们放在命令序列中的媒体对象命令942之前。媒体管线状态命令940包括用于配置将用于处理媒体对象的媒体管线元件的数据。这包括用于配置媒体管线内的视频解码和视频编码逻辑的数据,例如编码或解码格式。媒体管线状态命令940还支持使用到包含一批状态设置的“间接”状态元素的一个或多个指针。

媒体对象命令942提供到媒体对象的指针以便通过媒体管线进行处理。媒体对象包括包含即将处理的视频数据的存储器缓冲器。在一个实施例中,在发出媒体对象命令942之前,所有媒体管线状态都必须是有效的。一旦配置了管线状态并将媒体对象命令942排队,便经由执行934命令或等效执行事件(例如,寄存器写入)触发媒体管线924。然后,可通过由3D管线922或媒体管线924提供的操作对来自媒体管线924的输出进行后处理。在一个实施例中,以与媒体操作类似的方式配置和执行GPGPU操作。

图形软件体系结构-图10

图10示出根据一个实施例的数据处理系统的示例性图形软件体系结构。该软件体系结构包括3D图形应用1010、操作系统1020和至少一个处理器1030。处理器1030包括图形处理器1032和一个或多个通用处理器核1034。图形应用1010和操作系统1020均在数据处理系统的系统存储器1050中执行。

在一个实施例中,3D图形应用1010包含包括着色器指令1012的一个或多个着色器程序。着色器语言指令可以是高级着色器语言,例如高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)。该应用还包括适合通过通用处理器核1034执行的机器语言的可执行指令1014。该应用还包括由顶点数据定义的图形对象1016。

操作系统1020可以是可从华盛顿雷德蒙德的微软公司获得的WINDOWSTM操作系统、专有UNIX操作系统、或利用Linux内核的变型的开放源UNIX类操作系统。当Direct3D API在使用中时,操作系统1020利用前端着色器编译器1024将HLSL的任何着色器指令1012编译为较低级着色器语言。编译可以是即时编译,或者应用可执行共享预编译。在一个实施例中,在3D图形应用1010的编译期间,将高级着色器编译为低级着色器。

用户模式图形驱动器1026可包含用于将着色器指令1012转化为硬件特定表示的后端着色器编译器1027。当OpenGL API在使用中时,将GLSL高级语言的着色器指令1012传递给用户模式图形驱动器1026以用于编译。用户模式图形驱动器利用操作系统内核模式功能1028与内核模式图形驱动器1029通信。内核模式图形驱动器1029与图形处理器1032通信以便分派命令和指令。

就本文中描述各种操作或功能来说,可将它们描述或定义为硬件电路、软件代码、指令、配置和/或数据。内容可在硬件逻辑中实施,或者可作为可直接执行的软件(“对象”或“可执行”形式)、源代码、设计成在图形引擎上执行的高级着色器代码、或特定处理器或图形核的指令集中的低级汇编语言代码实施。本文中描述的实施例的软件内容可经由其上存储有该内容的制品、或经由操作通信接口以便经由通信接口发送数据的方法提供。

非暂时性机器可读存储介质的形式的制品可存储指令以使得机器执行描述的功能或操作,并且包括用于存储可由机器(例如,计算装置、电子系统等)访问的形式的信息的任何机制,例如可刻录/不可刻录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪速存储器装置等)。通信接口包括用于对接到硬接线、无线、光等介质中的任何介质以便通信到另一装置的任何机制,例如存储器总线接口、处理器总线接口、互联网连接、盘控制器等。通信接口可经由一个或多个命令或信号进行访问,并且可通过提供包括配置参数的命令或通过发送信号以便使通信接口准备好提供描述软件内容的数据信号来进行配置。

图形处理器执行资源的动态缩放-图11-21

在单个帧内处理的图形操作可包括与其它资源相比更繁重地利用一些图形处理器资源、或者随时间越来越繁重地利用一些资源的各种图形工作负载。在一些情况下,例如当图形核执行资源未充分使用时,可‘按比例缩减’执行资源,而没有不利地影响性能。换句话说,可对资源的一个或多个实例进行功率门控,从而留下较少数量的实例是活动并可用于服务于工作负载的。当工作负载越来越繁重地利用功率门控的资源时,可在稍后的时间将所述资源再次通电。

本文中描述的图形处理器的实施例包括用于在帧期间动态地启用或禁用图形执行资源的功率管理逻辑。在一个实施例中,功率管理逻辑缩放每个图形核内的图形执行单元。在一个实施例中,功率管理逻辑在图形处理帧期间管理图形核或子核(例如,核切片或子切片)的功率状态。在一个实施例中,功率管理逻辑管理图形子核内的执行单元的功率状态。在一个实施例中,图形执行资源基于使用率进行动态缩放。在一个实施例中,图形执行资源响应于诸如从图形API接收新绘图调用、接收新一批命令(例如,批缓冲器)或接收管线刷新命令(例如,图9B的管线刷新912)的事件进行缩放。

接下来的论述涉及‘按比例缩减’和‘按比例放大’资源。按比例缩减执行资源意味着对多个执行单元、图形核或图形子核进行功率门控。按比例放大执行资源意味着对多个执行单元、图形核或图形子核通电(例如,功率去门控(ungate))。

图11是根据一个实施例包括可缩放资源和功率控制单元(PCU)1140的图形核1100的框图。在一个实施例中,图形处理器包括图形处理器核1100的一个或多个实例,图形处理器核1100可以是图5的图形核580A-N之一的版本。图形核1100包括第一子核1150和第二子核1160,每个子核可通过PCU 1140进行功率门控。第一子核1150包括EU 1152和采样器1154。第二子核1160包括EU 1162和采样器1164。在一个实施例中,每个子核1150、1160包括如图6所示的执行资源600的变型,它包括EU 608A-N的可缩放阵列。示例性可缩放EU阵列包括8个EU,其中在操作期间可通过PCU 1140对其中2个、4个或6个EU进行功率门控。在一个实施例中,子核1150、1160均与共享资源1170的集合耦合,共享资源1170包括一个或多个共享高速缓存和像素处理逻辑。

功率控制单元(PCU)1140可配置成管理执行单元的缩放、图形核的缩放或图形子核的缩放。尽管图中示出PCU 1140位于图形核1100内,但是功率控制逻辑可驻存在位于图形核的外部的逻辑模块中,或者完全位于GPU之外,例如位于如图2所示的处理器系统代理210中。图12中进一步详细示出PCU 1140的内部。

尽管示出一个图形处理器核和两个子核,但是GPU也可包括两个或两个以上图形核,每个图形核包括三个或三个以上子核。或者,在制造为低功率操作专有地配置的GPU变型时,可省略或禁用一个或多个子核。

图12是根据一个实施例的功率控制单元1140的框图。在一个实施例中,功率控制单元1140包括配置成控制图形核1100的各种功率管理参数的调整的功率管理微控制器1200。功率管理参数包括当前硬件状态1210,它用于确定是否通过启用多个EU或对多个EU进行功率门控来按比例放大或缩减执行资源。

在一个实施例中,硬件状态1210包括来自用于跟踪每个核或子核的资源使用率并在不影响性能的情况下功率门控可能时(例如,当使用率降低至低于阈值时)在给定的图形处理帧内标记窗口的硬件活动计数器的集合的数据。硬件状态还可包括诸如下列的信息:当前批缓冲器ID编号或管线刷新ID编号,使用中的纹理类型,或在下文描述的功率门控逻辑操作期间使用的任何其它信息。

未充分使用的图形资源的功率门控可使得能够降低图形处理器功率耗散(例如,泄漏功率)。降低的功率耗散使得能够降低电池操作的装置内的功耗,而没有降低系统性能。在一些情况下,降低的功率耗散可通过允许增加活动图形资源的时钟频率而使得性能增加成为可能,从而使得在不超过指定功率预算的情况下能够增加性能。

跨活动子核的执行单元的动态缩放

在一些实施例中,减少活动EU的数量导致图形处理器最大当前负载(例如,ICCmax)减小。图形处理器最大当前负载(例如,ICCmax)的减小可使得能够在不超过由功率预算施加的极限的情况下增加图形处理器频率。尽管更少EU是活动的,但是活动EU可以按更高频率执行。因此,在一些情况下,当执行不受执行资源的限制的图形工作负载时,执行单元的动态缩放可为ICCmax受限的产品提供可测量的性能益处。

但是,对于广泛利用执行资源的图形工作负载,可在按比例缩减的操作期间实现性能的显著降低。EU缩放的试验结果表明,EU使用率跨EU缩放模式维持类似形状和轮廓,但是当按比例缩减EU时,每个EU的使用率变高,并且操作要花费更长时间来完成。然而,在高EU使用率的周期期间,相对于按比例放大的配置,在按比例缩减的配置上的操作实现大得多的性能代价,因为按比例缩减的GPU提供更少的计算资源来执行操作。另外,减少执行资源可导致高EU使用率的周期延长,这可限制由于按比例缩减执行资源而导致的功率节省。

图13是在游戏应用的一个帧期间的三个示例性图形处理器核的执行单元(EU)的使用率的曲线图。这三个图形处理器单元(GPU)核中的每个核均包括三个子核(有时称为核子切片)。对于总共24或18或12个EU,每个子核分别具有8或6或4个EU。示例性曲线图中的EU使用率是基于在EU浮点单元上执行的指令的数量和类型计算的,并且在10,000个时钟上求平均,即,图中的每条曲线的每个点表示10,000个时钟上的平均EU使用率。虚线表示3×4 GPU核的使用率1304,实线表示3×6 GPU核的使用率1306,而点划线表示3×8 GPU核的使用率1308。

在例如曲线图区域1302和1310中可见,在所有三种情况中,这三个GPU的使用率具有类似‘形状’(高和低)。但是,具有较少执行资源的GPU的使用率曲线相对于具有较大量执行资源的GPU的使用率曲线在时间上有所偏移。尽管每个GPU执行相同工作负载,但是具有较少执行资源的GPU对于每个工作负载需要较长的处理周期。此外,具有最少执行资源的GPU的使用率曲线经历大得多的时间偏移,这表明在每个高使用率(例如,高于70%-80%)周期之后的持续性能代价。因此,本文中描述的图形处理器的实施例采用配置成防止发生相对于当前GPU工作负载GPU执行资源显著过小的场景的EU缩放系统。

在高EU使用率周期期间,可以按比例放大活动EU的数量以便提供另外的执行资源来执行图形应用。这些另外的资源可提供改善的图形性能。但是,在按比例放大的过渡时期期间执行的图形操作可继续实现降低的性能,直到另外的EU变成活动为止。为了解决过渡性能代价,可基于即将到来的高EU使用率周期的领先指示符预先按比例放大EU的数量。

图14是突出新绘图调用的提交的示例性3×8 GPU的使用率的曲线图。使用率1408示为是3×8 GPU的实线,它与图13中的3×8 GPU的使用率1308相互关联。沿3×8使用率1408的每个‘x’1418指示在过去的10,000个时钟期间将一个或多个新绘图调用提交给GPU。利用每个新绘图调用,使得EU执行处理新工作负载的操作。因此,新绘图调用一般与EU使用率的增加有关。例如,在曲线图区域1402内,提交了大量新绘图调用,并观察到高达80%-90%的使用率。这与曲线图区域1404形成对比,在曲线图区域1404中,GPU没有接收到任何新绘图调用,并且使用率保持稳定。因此,至少一个实施例利用向GPU提交新绘图调用作为即将发生的高EU使用率周期的指示。

图15是根据一个实施例用于管理图形处理器执行单元的缩放的逻辑的流程图。如框1502所示,功率单元(例如,图12的PCU 1140)可配置成监测活动GPU。如框1504所示,功率单元监测包括EU使用率和绘图调用提交的参数。在一个实施例中,GPU配置成输出关于EU使用率的性能统计,它可基于在一段时间周期内在EU的浮点单元(FPU)上执行的指令的数量和类型计算获得。在一个实施例中,经由通过GPU提供的性能计数器的集合报告性能统计。在一个实施例中,周期是10,000个时钟,但是周期也可随实施例变化。峰值和平均使用率均可用于确定整体EU使用率。在一个实施例中,GPU配置成输出用于标记向硬件提交新绘图调用的硬件信号。该信号可对于提交给GPU的每个新绘图调用或对于在多个时钟内提交的每组新绘图调用断言一次。在一个实施例中,GPU的软件图形驱动器可指示即将来临的新图形操作的提交。

如框1506所示,功率单元周期性地确定是否提交了新绘图调用。当没有检测到新绘图调用时,功率单元基于当前的EU使用率缩放EU,如框1510所示。但是,当功率单元检测到提交了新绘图调用时,将启用所有可用EU的信号发送给GPU,如框1508所示。一旦启用所有EU,监测器便可在框1504返回监测EU使用率和绘图调用提交。

尽管向GPU提交绘图调用一般指示即将发生的高EU使用率周期,但是绘图调用提交也可能不导致高EU使用率周期。因此,如果没有因绘图调用提交导致高使用率周期,那么可随后按比例缩减按比例放大的EU。在一个实施例中,利用监测窗口和判定窗口的更详细算法可基于当前和预测的EU使用率准确评估和缩放执行资源。在每个监测窗口期间,收集EU使用率统计。在判定窗口结束时,诸如图12的功率微控制器1200的状态机或嵌入式功率管理微控制器评估收集的统计。然后,微控制器可确定是按比例放大还是按比例缩减EU。图16-17中更详细地论述微控制器算法。

图16是根据一个实施例通过功率控制器管理执行单元的缩放的另外的逻辑的流程图。在一个实施例中,如框1602所示,定义X微秒(μs)的‘监测’窗口和Y μs的‘判定窗口’。X和Y的值可预先确定或可运行时配置。示例性监测窗口X是50μs,而示例性判定窗口Y是500μs。但是,与监测和判定窗口相关联的值可以更大或更小,或者可以具有相同值。一般来说,相对于判定窗口值更小的监测窗口值使得能够以更高粒度收集EU使用率数据,从而允许检测使用率的短持续时间峰值。

如框1604所示,监测和判定循环可从确定是否提交了新绘图调用或其它相关图形操作开始。如框1606所示,如果提交了新绘图调用,那么激活所有可用EU,而与当前使用率等级无关。在接收到绘图调用时激活所有EU可降低在按比例缩减执行资源时出乎意料地接收到计算上密集的工作负载的风险。如果没有新绘图调用提交给GPU,那么计算当前的EU使用率统计,如框1608所示。在一个实施例中,在整个监测窗口计算EU使用率统计,直到监测窗口到期,如框1610所示。如果监测窗口到期,那么如框1612所示,存储EU使用率统计,并且如框1614所示,进行检查以便确定判定窗口是否到期。

在一个实施例中,如果在框1614确定当前的判定窗口到期,那么作出通过启用(例如,功率去门控)或功率门控EU按比例放大或缩减执行资源的判定,如框1616所示。在一个实施例中,与在框1616示出的EU缩放相关联的硬件等待时间对与判定窗口的持续时间相关联的Y值施加了最小极限,这如上文在框1602处所示那样定义。在一个实施例中,允许选择进行功率门控的EU的执行管线完成。另外,可将GPU频率编程为更高或更低值以便与同启用的EU集合相关联的ICCmax极限匹配。因此,判定窗口的最小持续时间可受到与启用和禁用EU相关联的等待时间的限制。一些实施例可配置成使判定窗口通常不超过每隔几百微秒到期。

在每个判定窗口之后,功率控制器可根据存储的EU使用率统计缩放EU计数,如框1616所示。可采用算法或缩放策略来选择多个EU以便基于上一个判定窗口上的峰值和平均使用率在下一个判定窗口期间激活或去激活。图17中示出示例性EU缩放算法。

图17是根据一个实施例用于确定图形执行资源的缩放因子的逻辑的流程图。缩放算法可配置成考虑在由功率控制器采集的使用率统计内的各种数据元素,包括峰值使用率,如框1702所示,并将期间的使用率求平均,如框1706所示。在框1702,功率控制器分析峰值使用率,并且如框1704所示,确定峰值使用率是否超过在判定窗口内的上一个监测窗口上确定的阈值。每个判定窗口内可包含多个监测窗口,并且缩放算法可配置成考虑跨这么多监测窗口的峰值和平均使用率。在一个实施例中,如果框1702处的分析指示在例如当前判定窗口内的至少两个监测窗口内峰值使用率超过80%,那么功率控制器可启用所有EU,如框1710所示。

类似地,如果在框1706处的使用率统计指示如框1708所示平均使用率超过确定的阈值,那么如框1710所示,功率控制器可启用所有EU。在一个实施例中,如果这一个或多个监测窗口上的平均使用率超过60%,那么启用所有EU。但是,峰值和平均使用率的准确阈值可针对每个工作负载动态地确定,并且按比例放大和缩减执行资源的阈值可改变。当使用率统计的分析指示为判定窗口设置的峰值和平均阈值均没有超过时,在下一个判定窗口期间,功率控制器可只启用EU的子集,如框1712所示。

启用的EU子集可导致按比例缩减EU资源并对EU的子集进行功率门控。或者,如果在之前判定窗口上的EU使用率本身较低,那么当前EU使用率可使得按比例放大EU资源,即使只启用EU的子集。在一个实施例中,试验结果表明,低于20%的使用率指示一些执行资源在使用中(例如,不应对整个GPU、核或子核断电),但是按比例缩减的EU的集合足以满足当前执行图形操作的需要。然而,当使用率一贯超过60%时,启用所有可用EU将是有益的。下表1中示出使用率和EU缩放之间的示例性映射,它对应于具有多个子核的图形核,其中每个子核包括8个EU的阵列。使用率和EU缩放之间的精确关系可在实施例之间改变。

表1:示例性子核EU缩放

核和子核的动态缩放

图形处理器内的图形核或子核(例如,切片或子切片)的数量可基于预期的图形处理器工作负载静态或半静态地进行调整,其中可允许需要较多计算或纹理过滤资源的工作负载利用最大数量的可用图形核或子核,而可允许需要较少资源的工作负载对多个核或子核断电以便减少由GPU耗散的功率。对于静态调整,在工作负载开始时或在工作负载的每个帧开始时确定要使用的核或子核的数量。例如,对于轻型工作负载,例如当执行不需要广泛使用图形资源的休闲游戏时,可在帧开始时对多个核或子核进行功率门控。

在一个实施例中,图形处理器还配置成基于帧的变化特性动态地缩放图形处理帧内的核或子核的数量,从而使得GPU能够在每个帧的不同部分中以较高或较低数量的核或子核操作,这另外降低了功率耗散而不降低性能。以下论述的部分互换地使用术语“核”和“子核”,因为在一个实施例中,描述的可缩放性概念同样适用于动态核或子核缩放。

图18是在处理3D图形应用的帧时的示例性图形子核使用率1802的曲线图。为每个子核示出的使用率1802包括执行资源、纹理处理资源、像素处理资源以及由子核提供的其它资源的使用率。示出的示例性图形子核使用率表明,图形子核(和图形核)使用率可在帧期间动态地改变。例如,曲线图区域1808、1810和1812均示出使用率一般低于50%的窗口。总之,在帧的总处理时间的大约三分之一时间期间,使用率是较低的。本文中描述的图形处理器的实施例可在这些较低使用率窗口期间对图形处理器内的多个图形子核或核的至少其中之一进行功率门控,以便在没有不利影响性能的情况下降低功耗。在一个实施例中,利用硬件活动计数器来跟踪核或子核使用率并在不影响性能的情况下功率门控是可能时(例如,当使用率降至低于某个阈值时,如同曲线图区域1808、1810、1812)在帧内标记窗口。硬件活动计数器可跟踪执行资源、纹理处理资源、像素处理资源或由子核提供的其它资源的使用率度量。

但是,不可能在帧期间的任意点对图形核或核切片进行功率门控或去门控。尽管可在帧内较自由地启用和禁用图形处理器执行单元(例如,EU),但是每个图形核或子核可包括供其它核或子核使用的资源(例如,高速缓存资源、纹理采样器等)。另外,每个核或子核可包含不应在线程内的操作完成之前解译的活动线程。

图18的示例性曲线图指示在帧期间图形子核处理新的批缓冲器(例如,newBB 1804)或新的管线刷新(例如,newFlush 1806)的实例。在一个实施例中,每个新批缓冲器1804或新刷新1806表示GPU可按比例放大或缩减核或子核的实例。当处理新批缓冲器1804时,图形子核将开始处理即将至少部分地同步处理的一组命令,其中数个命令将并行执行。当处理管线刷新1806命令时,任何活动图形管线将完成所有当前未决的命令。因此,帧处理期间的新批缓冲器1804和新刷新1806实例表示可禁用或启用(例如,功率门控或去门控)图形核和子核的干净操作边界。因此,除了通过禁用或启用每个图形核或子核内的EU来动态地缩放执行资源之外,本文中描述的图形处理器的实施例还包括用于在操作边界处禁用或启用图形核或子核、以便在处理图形操作的帧时动态地缩放图形处理器资源的逻辑。

除了在图形操作期间基于特定窗口内的图形核、子核或EU资源缩放图形处理器资源之外,本文中描述的图形处理器的实施例还包括用于预测即将到来的使用率周期的另外的逻辑。如上所述,即将到来的高EU使用率周期可与新绘图调用相关。另外,图形应用的图形操作的单个帧内的图形核使用率的模式可与相同图形应用的连续帧内的图形核使用率的模式相关。因此,实施例包括用于预期低使用率窗口并在低使用率窗口临近开始或结束时在合适的批缓冲器或管线刷新边界处对资源进行功率门控或去门控的预测逻辑。预测逻辑进一步精炼功率管理操作以便通过减少图形处理器对于当前执行的工作负载资源不足的实例防止在图形执行资源按比例缩减的周期期间影响整体性能。

图19和图20是在处理3D图形应用的连续帧时示例性图形子核使用率的曲线图。这些连续帧跟在图18中示出的帧之后。尽管在处理图形应用的相应帧的过程中图形子核的使用率可能不相同,但是使用率模式可以类似。例如,图19的曲线图区域1908、1910和1912示出与图18中示出的曲线图区域1808、1810和1812相关的使用率。图20的曲线图区域2008、2010和2012示出与图18的曲线图区域1808、1810和1812以及图19的曲线图区域1908、1910和1912相关的使用率。因此,示例性曲线图表明,在一些实施例中,在高和低活动的类似窗口的情况下,子核使用率跨连续帧遵循类似模式。在一个实施例中,利用跨某个帧观察的图形处理器使用率的模式来预测连续帧内的图形处理器使用率或精炼连续帧内的图形处理器使用率的预测。

图21是根据一个实施例用于管理图形操作帧内的图形核或子核的缩放的逻辑的流程图。所示的逻辑操作可由例如图12的PCU 1140或结合GPU内的一个或多个其它组件或GPU的驱动器软件来执行。在一个实施例中,尽管为GPU整体确定逻辑操作,但是一个实施例在每个核或子核基础上执行所示操作。这些操作可基于诸如图形处理器类型、执行频率和图形工作负载的因素在从数百微秒到数毫秒的范围内的定期时间间隔内重复。

在每个循环开始时,在框2102,读取使用率计数器以便确定在上一个时间间隔内的图形核或子核使用率。在一个实施例中,在该帧期间记录使用率信息,并标识较高和较低使用率的窗口以用于预测随后帧内的使用率。当读取使用率计数器时,可读取状态信息以便确定帧的操作集合内的当前位置。假设连续帧通常执行类似任务,诸如当前批缓冲器ID编号或在之前帧期间记录的管线刷新ID编号的状态信息可与高或低使用率周期相关,然后该状态信息可用于预测连续帧的使用率。

增加记录的状态信息的细节可增加跨连续帧的使用率预测的精度。但是,增加记录的状态的细节也增加了采集、维持和分析记录的状态所需的开销量。在一个实施例中,通过在主机系统上执行的图形驱动器软件利用一个或多个主机处理器记录状态信息。在该实施例中,记录少量状态信息,从而在得益于图形处理器的减小的制造成本的情况下产生降低的预测精度。在一个实施例中,包含专用功率管理微控制器(例如,图12的功率微控制器1200)以便读取和分析更大量的状态信息,而不在系统内的其它处理器上施加增大的开销。

在框2014,利用状态信息来确定GPU是否在帧内的低使用率窗口内以及是否在诸如新批缓冲器或管线刷新操作的功率门控操作边界处。如果两个条件都为真,那么GPU可对一个或多个图形子核或图形核进行功率门控,如框2016所示。如果一个或两个条件都不为真,那么逻辑操作继续进行到框2108,在框2108,确定GPU是否在低使用率周期结束附近以及是否在功率去门控边界处。如果确定GPU在低使用率窗口结束附近以及在可对图形处理器核或子核进行去门控的操作边界上,那么该逻辑配置成继续进行到框2110,在框2110,对目前功率门控的核或子核中的一个或多个核或子核进行去门控。在一个实施例中,即使在框2104处确定GPU位于低使用率窗口内以及在功率门控边界处,该逻辑仍可尝试确定GPU是否正接近低使用率窗口的结束。在这种情况下,可绕过框2106处示出的功率门控操作。

在框2112,该逻辑执行操作以便确定GPU、核或子核是否在图形操作的帧结束时。如果该帧不完整,那么该逻辑返回到框2102处所示的操作以便开始另外的循环。在一个实施例中,该逻辑继续进行到框2114以便记录将用于预测下一个帧或帧集合的使用率的完整帧的使用率和状态概况,然后如框2116所指示,移动到下一个帧。可在每个帧结束时记录使用率和状态概况,并利用它来预测下一个帧或下一组连续帧的使用率。在一个实施例中,每隔一定帧间隔记录使用率和状态概况,并利用它来预测跨下一个帧间隔的使用率。

因此,所示逻辑可配置成在需要足够的执行资源之前启用这些资源。可按照当前使用率计数器分析GPU状态信息,并可将GPU状态信息与基于在之前帧期间采集的信息预测当前帧内的高和低使用率窗口的信息进行组合。因此,在进入高使用率周期之前,可重新启用任何功率门控的图形核或子核。

如本文中所使用,提到一个或多个“实施例”时应理解为描述包含在至少一个实现中的特定特征、结构或特性。因此,出现在其中的诸如“在一个实施例中”或“在备选实施例中”的短语均描述各种实施例和实现,并且不一定都指相同实施例。但是,它们也不一定相互排斥。

上文公开的涉及动态缩放包括执行单元和图形子核的图形处理器资源的各种实施例可在集成电路中找到一般用途。在一个实施例中,基于诸如执行单元的当前使用率和来自图形API(包括3D图形API,例如OpenGL或Direct 3D)的新绘图调用的提交的度量按比例放大或缩减可用EU。诸如图形处理器的集成电路设备可在低使用率期间禁用EU的一部分,并基于诸如提交图形API调用(例如,绘图调用)的进入事件启用EU的这部分。尽管禁用了EU的子集,但是可增加启用的EU的频率,而不增加功率耗散和最大当前负载。在一个实施例中,功率控制单元(PCU)耦合到该设备或集成在该设备内,并且包括用于确定何时对执行单元进行功率门控的逻辑。在一个实施例中,PCU可对图形子核或图形核进行功率门控或功率去门控以便禁用或启用该子核或核内的资源。在一个实施例中,对子核或核进行功率门控发生在诸如新批缓冲器或管线刷新操作的干净操作边界上。可通过GPU硬件或GPU的图形驱动器来确定操作边界。可在将操作提交给GPU时或在GPU接收到操作时确定操作边界。

一个实施例包括包含图形处理单元(GPU)的系统。GPU包括一个或多个图形核,其中每个图形核包括执行单元的阵列。该系统还包括耦合到GPU的PCU。PCU包括用于在执行单元的使用率低于第一阈值时对每个图形核中的执行单元阵列中的一个或多个执行单元进行功率门控的逻辑。PCU还可包括用于在GPU接收到新的图形操作时启用每个图形核中的所有执行单元的逻辑。PCU另外还可包括用于在使用率大于第一阈值时启用受到功率门控的执行单元中的一个或多个执行单元并在使用率大于第二阈值时启用每个图形核中的所有执行单元的逻辑。在一个实施例中,第一阈值是20%,并且第二阈值是60%。在一个实施例中,阈值可动态调整。

在一个实施例中,GPU包括用于报告执行单元的使用率的逻辑,或者GPU以其它方式配置成报告执行单元的使用率。在一个实施例中,PCU配置成监测GPU以便确定执行单元的使用率。在一个实施例中,GPU包括用于启用指示接收到新的图形操作的信号的逻辑。每次接收到操作时或者当在一段时间内接收到多个操作时,可启用该信号。

在一个实施例中,配置成监测GPU的逻辑包括通过以下方法确定EU缩放:定义监测窗口,计算在监测窗口期间执行单元的集合的使用率统计,并在监测窗口到期时存储使用率统计。在一个实施例中,用于对EU的子集进行功率门控的逻辑包括:定义判定窗口,当判定窗口到期时检索存储的使用率统计,并在存储的使用率统计指示使用率低于第一阈值时对EU的子集进行功率门控。在一个实施例中,当使用率统计指示使用率大于第一阈值时,启用受到功率门控的EU的一部分。在一个实施例中,当使用率大于第二阈值时,启用所有EU。每个EU的EU使用率可由EU内的浮点单元(FPU)的使用率确定。

在一个实施例中,一种用于缩放GPU中的图形资源的方法包括:读取GPU的使用率度量,其中这些度量包括GPU的图形核或子核的使用率数据;以及读取图形状态信息以便确定图形操作帧内的当前图形操作的位置。该方法还包括对GPU的图形核或子核进行功率门控或功率去门控,其中当前图形操作在该核或子核的低使用率窗口中,并且在允许启用或禁用图形核或子核的操作边界上。在一个实施例中,操作边界包括图形操作的新批缓冲器中的操作或管线刷新操作。在一个实施例中,该方法还包括在低使用率窗口临近结束时对图形核或子核进行功率去门控。低使用率窗口的结束可基于当前图形操作在图形操作帧内的位置以及图形操作的前一个帧的使用率度量来预测。在一个实施例中,该方法还包括:完成图形操作的帧;存储该帧的度量和状态信息;以及基于存储的度量和状态信息预测随后帧的使用率窗口的集合。

本描述和权利要求书中的“第一”、“第二”、“第三”、“第四”等术语(如果有的话)用于区分类似元素,并且不一定用于描述特定顺序或时间次序。将了解,如此使用的术语在合适情况下可互换使用,以使得本文中描述的实施例能够例如进行在本文中图示或以其它方式描述的序列以外的序列中的操作。

各种组件可以是用于执行描述的操作或功能的部件。本文中描述的每个组件包括软件、硬件或它们的组合。这些组件可作为软件模块、硬件模块、专用硬件(例如,应用特有硬件、专用集成电路(ASIC)、DSP等)、嵌入式控制器、硬接线电路等实现。除了本文中的描述以外,在不偏离本发明的范围的情况下,可对公开的实施例和实现进行各种修改。因此,本文中的图示和示例应理解为是说明性的而不是限制性意义。本发明的范围和精神应当仅仅参考随附权利要求来估量。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1