空闲功率状态的确定的制作方法

文档序号:20605420发布日期:2020-05-01 22:02阅读:373来源:国知局
空闲功率状态的确定的制作方法

相关申请的交叉引用

本申请根据35u.s.c§365(c)要求2017年9月28日提交的题为“determinationofidlepowerstate”的美国申请no.15/719,541的优先权。这些文件的全部公开内容出于所有目的通过引用并入本文。

实施例总体涉及数据处理,并且更具体地涉及经由图形处理单元的数据处理。例如,一些实施例涉及确定空闲功率状态的技术。



背景技术:

随着集成电路制造技术进步,制造商能够将附加的功能集成在单个硅衬底上。随着功能数量增加,单个集成电路(ic)芯片上的组件数量也会增加。附加的组件会增加附加的信号切换,从而生成更多的热量和/或消耗更多的功率。附加的热量可能会因例如热膨胀而损坏芯片上的组件。另外,附加的功耗可能会限制这些器件的使用位置和/或使用模型,例如,特别是对于依赖电池电力工作的器件而言。因此,高效的功率管理能够直接影响电子器件的效率、寿命以及使用模型。

附图说明

为了能够详细地理解本实施例的本文所述特征,可以通过参考实施例来对实施例进行更具体的描述,其中一些实施例在附图中示出。然而,应注意,附图仅示出了典型的实施例,因此不应视为限制其范围。

图1是根据实施例的处理系统100的框图。

图2、图3、图4和图5示出了根据一些实施例的处理器的各种组件。

图6a-图6b示出了根据本文描述的实施例的线程执行逻辑,该线程执行逻辑包括在图形处理器核中采用的处理元件的阵列。

图7示出了根据一些实施例的图形核指令格式。

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

图9a和图9b分别示出了根据一些实施例的图形处理器命令格式和序列。

图10示出了根据一些实施例的用于数据处理系统的示例性图形软件架构。

图11a示出了根据实施例的ip核开发的图示。

图11b示出了根据本文描述的一些实施例的集成电路封装组件的截面侧视图。

图12-图14示出了根据本文描述的各种实施例的可以使用一个或多个ip核制造的示例性集成电路和关联的图形处理器。

图13a-图13b是示出了根据本文描述的实施例的在soc内使用的示例性图形处理器的框图。

图14a-图14b示出了根据本文描述的实施例的附加示例性图形处理器逻辑。

图15示出了根据实施例的在图形系统的各个组件之间的信息流。

图16和图17示出了根据一些实施例的两个示例的样本设置。

具体实施方式

在以下描述中,阐述了许多具体细节,以便提供对各种实施例的透彻理解。然而,可以在没有这些具体细节的情况下实践各种实施例。在其他情况下,没有详细描述公知的方法、过程、组件和电路,以免掩盖特定实施例。此外,可以使用各种手段来执行实施例的各个方面,例如集成半导体电路(“硬件”)、组织成一个或多个程序的计算机可读指令(“软件”)、或硬件和软件的某种组合。为了本公开的目的,对“逻辑”的引用应当表示硬件、软件、固件或其某种组合。

如上所述,高效的功率管理能够直接影响电子器件的效率、寿命和使用模型。以图形系统为例,图形硬件在空闲状态期间仍然可能消耗大量功率。一些解决方案可以支持对渲染和媒体的粗功率门控(cpg)、rc1e、rc6,以及使用硬件有限状态机基于空闲度量和空闲/忙碌转变的次数来选择图形频率。如本文所讨论的,“rcx”通常指代在图形处理单元(gpu)空闲时间期间的功率状态,例如,rc6对应于比rc5低的功率状态(消耗更少的功率),rc0指代全/活动功率状态,等。

为此,一些实施例提供了在空闲状态期间用于图形硬件(例如,gpu或者其一个或多个部分)的能量高效配置的技术。在实施例中,计算引擎(在本文中通常也称为功率配置“逻辑”)可以基于状态特性和/或工作负荷度量来确定用于图形硬件的最佳配置。在各种实施例中,可以通过各种选定的状态来识别最佳配置。因此,一些实施例在功率受限的图形工作负荷下提供了更好的电池寿命和/或更好的性能。还公开并要求保护其他实施例。

此外,一些实施例可以应用于包括(例如,具有一个或多个处理器核的)一个或多个处理器(例如,参照图1等所讨论的那些处理器)的计算系统中,包括例如移动计算设备,例如智能手机、平板电脑、umpc(超移动个人计算机)、膝上型计算机、ultrabooktm计算设备、可穿戴设备(例如,智能手表或智能眼镜)等。

在一些实施例中,图形处理单元(gpu)以通信方式耦合到主机/处理器核,以加速图形操作、机器学习操作、模式分析操作以及各种通用gpu(gpgpu)功能。gpu可以通过总线或另一互连(例如,诸如pcie或nvlink之类的高速互连)以通信方式耦合到主机处理器/核。在其他实施例中,gpu可以集成在与核相同的封装或芯片上,并通过内部处理器总线/互连(即,在封装或芯片内部)以通信方式耦合到核。不管gpu连接的方式如何,处理器核都可以以在工作描述符中所包含的命令/指令序列的形式,将工作分配给gpu。然后,gpu使用专用电路/逻辑来高效地处理这些命令/指令。

在以下描述中,阐述了许多具体细节以便提供更透彻的理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节中的一个或多个的情况下实践本文描述的实施例。在其他情况下,未描述公知的特征,以免掩盖本实施例的细节。

系统概述

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

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

在一些实施例中,一个或多个处理器102均包括一个或多个处理器核107,以处理指令,所述指令当被执行时执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核107中的每一个被配置为处理特定指令集109。在一些实施例中,指令集109可以促进复杂指令集计算(cisc)、精简指令集计算(risc)或经由超长指令字(vliw)的计算。多个处理器核107均可以处理不同的指令集109,其可以包括用于促进其他指令集的仿真的指令。处理器核107还可以包括其他处理设备(例如,数字信号处理器(dsp))。

在一些实施例中,处理器102包括缓存存储器104。取决于架构,处理器102可以具有单个内部缓存或多级内部缓存。在一些实施例中,在处理器102的各种组件之间共享缓存存储器。在一些实施例中,处理器102还使用外部缓存(例如,三级(l3)缓存或最后一级缓存(llc))(未示出),其可以使用已知的缓存一致性技术在处理器核107之间共享。在处理器102中还包括寄存器文件106,其可以包括用于存储不同类型数据的不同类型寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以对于处理器102的设计是专用的。

在一些实施例中,一个或多个处理器102与一个或多个接口总线110耦合,以在处理器102与系统100中的其他组件之间传输通信信号(例如,地址信号、数据信号或控制信号)。接口总线110在一个实施例中可以是处理器总线(例如,直接媒体接口(dmi)总线的版本)。然而,处理器总线不限于dmi总线,并且可以包括一个或多个外围组件互连总线(例如,pci、pciexpress)、存储器总线或其他类型的接口总线。在一个实施例中,处理器102包括集成存储器控制器116和平台控制器中枢130。存储器控制器116促进存储器设备与系统100的其他组件之间的通信,而平台控制器中枢(pch)130提供经由本地i/o总线至i/o设备的连接。

存储器设备120可以是动态随机存取存储器(dram)设备、静态随机存取存储器(sram)设备、闪存设备,相变存储器设备或具有合适的性能以充当进程存储器的一些其他存储器设备。在一个实施例中,存储器设备120可以操作为用于系统100的系统存储器,以存储数据122和指令121,以便在一个或多个处理器102执行应用或进程时使用。存储器控制器116还与可选的外部图形处理器112耦合,外部图形处理器112可以与处理器102中的一个或多个图形处理器108进行通信,以执行图形操作和媒体操作。在一些实施例中,显示设备111可以连接到处理器102。显示设备111可以是如在移动电子设备或膝上型设备中的内部显示设备或者经由显示接口(例如,displayport等)附接的外部显示设备中的一个或多个。在一个实施例中,显示设备111可以是头戴式显示器(hmd)(例如,用于虚拟现实(vr)应用或增强现实(ar)应用的立体显示设备)。

在一些实施例中,平台控制器中枢130使得外围设备能够经由高速i/o总线连接到存储器设备120和处理器102。i/o外围设备包括但不限于音频控制器146、网络控制器134、固件接口128、无线收发机126、触摸传感器125、数据存储设备124(例如,硬盘驱动器、闪存等)。数据存储设备124可以经由存储接口(例如,sata)或经由外围总线(例如,外围组件互连总线(例如,pci、pciexpress))连接。触摸传感器125可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发机126可以是wi-fi收发机、蓝牙收发机或移动网络收发机(例如,3g、4g或长期演进(lte)收发机)。固件接口128使得能够进行与系统固件的通信,并且可以是例如统一可扩展固件接口(uefi)。网络控制器134可以使得能够与有线网络进行网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线110耦合。音频控制器146在一个实施例中是多通道高清晰度音频控制器。在一个实施例中,系统100包括可选的遗留i/o控制器140,以用于将遗留(例如,个人系统2(ps/2))设备耦合到系统。平台控制器中枢130还可以连接到一个或多个通用串行总线(usb)控制器142,其连接输入设备(例如,键盘和鼠标143组合、相机144或其他usb输入设备)。

应理解,所示的系统100是示例性的而非限制性的,因为也可以使用不同地配置的其他类型的数据处理系统。例如,存储器控制器116和平台控制器中枢130的实例可以集成到分立式外部图形处理器(例如,外部图形处理器112)中。在一个实施例中,平台控制器中枢130和/或存储器控制器160可以处于一个或多个处理器102外部。例如,系统100可以包括外部存储器控制器116和平台控制器中枢130,其可以被配置作为与处理器102进行通信的系统芯片组内的存储器控制器中枢和外围控制器中枢。

图2是具有一个或多个处理器核202a-202n、集成存储器控制器214和集成图形处理器208的处理器200的实施例的框图。图2中标号(或名称)与本文任何其他附图的要素相同的那些要素可以按与本文其他地方描述的方式类似的任何方式操作或运作,但不限于此。处理器200可以包括多达(含)由虚线框表示的附加核202n的附加核。处理器核202a-202n中的每一个包括一个或多个内部缓存单元204a-204n。在一些实施例中,每个处理器核还可以访问一个或多个共享缓存单元206。

内部缓存单元204a-204n和共享缓存单元206表示处理器200内的缓存存储器层级。缓存存储器层级可以包括每个处理器核内的至少一级指令和数据缓存以及一级或多级共享的中间级缓存(例如,二级(l2)、三级(l3)、四级(l4)或其他级的缓存),其中,外部存储器之前的最高级缓存被分类为llc。在一些实施例中,缓存一致性逻辑维持各个缓存单元206与204a-204n之间的一致性。

在一些实施例中,处理器200还可以包括一个或多个总线控制器单元216和系统代理核210的集合。一个或多个总线控制器单元216管理一组外围总线(例如,一个或多个pci或pciexpress总线)。系统代理核210为各种处理器组件提供管理功能。在一些实施例中,系统代理核210包括一个或多个集成存储器控制器214,以管理对各种外部存储器设备(未示出)的访问。

在一些实施例中,处理器核202a-202n中的一个或多个包括对同时多线程的支持。在该实施例中,系统代理核210包括用于在多线程处理期间协调和操作核202a-202n的组件。系统代理核210可以附加地包括功率控制单元(pcu),其包括用于调节处理器核202a-202n和图形处理器208的功率状态的逻辑和组件。

在一些实施例中,处理器200附加地包括图形处理器208,以执行图形处理操作。在一些实施例中,图形处理器208与共享缓存单元206的集合和包括一个或多个集成存储器控制器214的系统代理核210耦合。在一些实施例中,系统代理核210还包括显示控制器211,以将图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器211还可以是经由至少一个互连与图形处理器耦合的分离模块,或者可以集成在图形处理器208内。

在一些实施例中,基于环的互连单元212用于耦合处理器200的内部组件。然而,可以使用替选的互连单元(例如,点对点互连、切换式互连或其他技术,包括本领域公知的技术)。在一些实施例中,图形处理器208经由i/o链路213与环形互连212耦合。

示例性i/o链路213表示多种i/o互连中的至少一种,包括促进各种处理器组件与高性能嵌入式存储器模块218(例如,edram模块)之间的通信的封装上i/o互连。在一些实施例中,处理器核202a-202n中的每一个和图形处理器208使用嵌入式存储器模块218作为共享的最后一级缓存。

在一些实施例中,处理器核202a-202n是执行相同指令集架构的同构核。在另一实施例中,处理器核202a-202n在指令集架构(isa)方面是异构的,其中,处理器核202a-202n中的一个或多个执行第一指令集,而其他核中的至少一个执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核202a-202n在微架构方面是异构的,其中,功耗相对较高的一个或多个核与功耗较低的一个或多个核耦合。此外,处理器200可以实现于一个或多个芯片上,或者实现为具有除了其他组件之外还有所示组件的soc集成电路。

图3是图形处理器300的框图,其可以是分立式图形处理单元,或者可以是与多个处理核集成的图形处理器。在一些实施例中,图形处理器经由存储器映射的至图形处理器上的寄存器的i/o接口并且用放置到处理器存储器中的命令进行通信。在一些实施例中,图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是对本地存储器、一个或多个内部缓存、一个或多个共享外部缓存的接口,和/或对系统存储器的接口。

在一些实施例中,图形处理器300还包括显示控制器302,以将显示输出数据驱动到显示设备320。显示控制器302包括用于一个或多个覆盖平面的硬件,以用于显示和合成多层视频或用户界面元素。显示设备320可以是内部或外部显示设备。在一个实施例中,显示设备320是头戴式显示设备(例如,虚拟现实(vr)显示设备或增强现实(ar)显示设备)。在一些实施例中,图形处理器300包括视频编解码器引擎306,以将媒体编码为、解码自一种或多种媒体编码格式(包括但不限于运动图像专家组(mpeg)格式(例如,mpeg-2)、高级视频编码(avc)格式(例如,h.264/mpeg-4avc)以及电影电视工程师协会(smpte)421m/vc-1和联合图像专家组(jpeg)格式(例如,jpeg和motionjpeg(mjpeg)格式)),或者在其之间进行转码。

在一些实施例中,图形处理器300包括块图像传送(blit)引擎304,以执行包括例如位边界块传送的二维(2d)光栅化器操作。然而,在一个实施例中,使用图形处理引擎(gpe)310的一个或多个组件执行2d图形操作。在一些实施例中,gpe310是用于执行包括三维(3d)图形操作和媒体操作的图形操作的计算引擎。

在一些实施例中,gpe310包括3d管线312,以用于执行3d操作(例如,使用对3d基元形状(例如,矩形、三角形等)作用的处理功能渲染三维图像和场景)。3d管线312包括可编程功能元件和固定功能元件,其执行元件内的各种任务和/或对3d/媒体子系统315产生执行线程。虽然3d管线312可以用于执行媒体操作,但是gpe310的实施例还包括媒体管线316,其具体地用于执行媒体操作(例如,视频后处理和图像增强)。

在一些实施例中,媒体管线316包括固定功能或可编程逻辑单元,以代替或代表视频编解码器引擎306执行一个或多个专用媒体操作(例如,视频解码加速、视频解交错和视频编码加速)。在一些实施例中,媒体管线316附加地包括线程产生单元,以产生线程以用于在3d/媒体子系统315上执行。所产生的线程对3d/媒体子系统315中所包括的一个或多个图形执行单元上的媒体操作执行计算。

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

图形处理引擎

图4是根据一些实施例的图形处理器的图形处理引擎410的框图。在一个实施例中,图形处理引擎(gpe)410是图3所示的gpe310的版本。图4中标号(或名称)与本文任何其他附图的要素相同的要素可以按与本文其他地方描述的方式类似的任何方式操作或运作,但不限于此。例如,示出图3的3d管线312和媒体管线316。媒体管线316在gpe410的一些实施例中是可选的,并且可以不明确地包括于gpe410内。例如,并且在至少一个实施例中,单独的媒体和/或图像处理器耦合到gpe410。

在一些实施例中,gpe410耦合于或包括命令流送器403,其向3d管线312和/或媒体管线316提供命令流。在一些实施例中,命令流送器403与存储器(其可以是系统存储器,或者内部缓存存储器和共享缓存存储器中的一个或多个)耦合。在一些实施例中,命令流送器403从存储器接收命令,并且将命令发送到3d管线312和/或媒体管线316。命令是从存储用于3d管线312和媒体管线316的命令的环形缓冲区获取的指令(directive)。在一个实施例中,环形缓冲区可以附加地包括批命令缓冲区,其存储多个命令的批次。用于3d管线312的命令还可以包括对存储在存储器中的数据(例如但不限于用于3d管线312的顶点和几何数据和/或用于媒体管线316的图像数据和存储器对象)的引用。3d管线312媒体管线316通过经由各个管线内的逻辑执行操作,或者通过将一个或多个执行线程分派到图形核阵列414来处理命令和数据。在一个实施例中,图形核阵列414包括一块或多块图形核(例如,图形核415a、图形核415b),每个块包括一个或多个图形核。每个图形核包括一组图形执行资源,其包括用于执行图形和计算操作的通用和图形专用执行逻辑、以及固定功能纹理处理和/或机器学习和人工智能加速逻辑。

在各个实施例中,3d管线312包括固定功能和可编程逻辑,以通过处理指令并将执行线程分派到图形核阵列414来处理一个或多个着色器程序(例如,顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其他着色器程序)。图形核阵列414提供统一的执行资源块,以便在处理这些着色器程序中使用。图形核阵列414的图形核415a-414b内的多用途执行逻辑(例如,执行单元)包括对各种3dapi着色器语言的支持,并且可以执行与多个着色器关联的多个同时执行线程。

在一些实施例中,图形核阵列414还包括用于执行媒体功能(例如,视频和/或图像处理)的执行逻辑。在一个实施例中,执行单元附加地包括可编程以执行除了图形处理操作之外的并行通用计算操作的通用逻辑。通用逻辑可以与图1的处理器核107或如图2中的核202a-202n内的通用逻辑并行地或结合地执行处理操作。

由图形核阵列414上执行的线程所生成的输出数据可以将数据输出到统一返回缓冲区(urb)418中的存储器。urb418可以存储用于多个线程的数据。在一些实施例中,urb418可以用于在图形核阵列414上执行的不同线程之间发送数据。在一些实施例中,urb418可以附加地用于图形核阵列上的线程与共享功能逻辑420内的固定功能逻辑之间的同步。

在一些实施例中,图形核阵列414是可扩展的,使得阵列包括可变数量的图形核,每个图形核基于gpe410的目标功率和性能等级具有可变数量的执行单元。在一个实施例中,执行资源是动态可扩展的,使得可以根据需要启用或禁用执行资源。

图形核阵列414与共享功能逻辑420耦合,共享功能逻辑420包括在图形核阵列中的图形核之间共享的多个资源。共享功能逻辑420内的共享功能是向图形核阵列414提供专用补充功能的硬件逻辑单元。在各个实施例中,共享功能逻辑420包括但不限于采样器421、数学单元422和线程间通信(itc)423逻辑。此外,一些实施例在共享功能逻辑420内实现一个或多个缓存425。

在对给定专用功能的需求不足以包括于图形核阵列414内的情况下,实现共享功能。相反,该专用功能的单个实例化被实现为共享功能逻辑420中的单独实体,并且在图形核阵列414内的执行资源之间共享。在图形核阵列414之间共享并包括于图形核阵列414内的精确功能集随着实施例而变化。在一些实施例中,共享功能逻辑420内的被图形核阵列414广泛使用的特定共享功能可以包括于图形核阵列414内的共享功能逻辑416内。在各个实施例中,图形核阵列414内的共享功能逻辑416可以包括共享功能逻辑420内的一些或所有逻辑。在一个实施例中,可以在图形核阵列414的共享功能逻辑416内复制共享功能逻辑420内的所有逻辑元件。在一个实施例中,共享功能逻辑420被排除,以支持图形核阵列414内的共享功能逻辑416。

图5是根据本文描述的一些实施例的图形处理器核500的硬件逻辑的框图。图5中标号(或名称)与本文任何其他附图的要素相同的要素可以按与本文其他地方描述的方式类似的任何方式操作或运作,但不限于此。所示的图形处理器核500在一些实施例中被包括于图4的图形核阵列414内。图形处理器核500(有时称为核片)可以是模块化图形处理器内的一个或多个图形核。图形处理器核500是一个图形核片的示例,并且如本文所述的图形处理器基于目标功率和性能包络可以包括多个图形核片。每个图形核500可以包括与多个子核501a-501f(也称为子片)耦合的固定功能块530,子核包括通用和固定功能逻辑的模块化块。

在一些实施例中,固定功能块530包括几何/固定功能管线536,其可以例如在较低性能和/或较低功率图形处理器实现方式中由图形处理器500中的所有子核共享。在各个实施例中,几何/固定功能管线536包括3d固定功能管线(例如,如图3和图4中的3d管线312)、视频前端单元、线程产生器和线程分派器以及管理统一返回缓冲区(例如,图4的统一返回缓冲区418)的统一返回缓冲区管理器。

在一个实施例中,固定功能块530还包括图形soc接口537、图形微控制器538和媒体管线539。图形soc接口537提供图形核500与片上系统集成电路内的其他处理器核之间的接口。图形微控制器538是可编程子处理器,其可配置为管理图形处理器500的各种功能,包括线程分派、调度和抢占。媒体管线539(例如,图3和图4的媒体管线316)包括用于促进多媒体数据(包括图像和视频数据)的解码、编码、预处理和/或后处理的逻辑。媒体管线539经由对子核501-501f内的计算或采样逻辑的请求来实现媒体操作。

在一个实施例中,soc接口537使得图形核500能够与通用应用处理器核(例如,cpu)和/或soc内的其他组件(包括存储器层级元件(例如,共享最后一级缓存存储器、系统ram和/或嵌入式片上或封装上dram))进行通信。soc接口537还可以使得能够进行与soc内的固定功能设备(例如,相机成像管线)的通信,并且使得能够使用和/或实现可以在图形核500与soc内的cpu之间共享的全局存储器原子。soc接口537还可以实现用于图形核500的电源管理控制,并且使得图形核500的时钟域与soc内的其他时钟域之间的接口成为可能。在一个实施例中,soc接口537使得能够从被配置为向图形处理器内的一个或多个图形核中的每一个提供命令和指令的命令流送器和全局线程分派器接收命令缓冲。命令和指令可以在将要执行媒体操作时被分派到媒体管线539,或者在将要执行图形处理操作时被分派到几何和固定功能管线(例如,几何和固定功能管线536、几何和固定功能管线514)。

图形微控制器538可以被配置为执行用于图形核500的各种调度和管理任务。在一个实施例中,图形微控制器538可以在子核501a-501f内的执行单元(eu)阵列502a-502f、504a-504f内的各个图形并行引擎上执行图形和/或计算工作负荷调度。在该调度模型中,在包括图形核500在内的soc的cpu核上执行的主机软件可以将工作负荷提交给多个图形处理器门铃(doorbell)之一,这在适当的图形引擎上调用调度操作。调度操作包括:确定接下来要运行哪个工作负荷;将工作负荷提交给命令流送器;抢占引擎上运行的现有工作负荷;监控工作负荷的进度;以及当完成工作负荷时通知主机软件。在一个实施例中,图形微控制器538还可以促进图形核500的低功率或空闲状态,从而为图形核500提供了以下能力:跨低功率状态转换保存和恢复图形核500内的寄存器,而与系统上的操作系统和/或图形驱动程序软件无关。

图形核500可以具有比所示的子核501a-501f多或少的子核,多至n个模块化子核。对于每组n个子核,图形核500还可以包括共享功能逻辑510、共享和/或缓存存储器512、几何/固定功能管线514以及用于加速各种图形和计算处理操作的附加固定功能逻辑516。共享功能逻辑510可以包括与图4的共享功能逻辑420关联的逻辑单元(例如,采样器、数学单元和/或线程间通信逻辑),其可以由图形核500内的每n个子核共享。共享和/或缓存存储器512可以是用于图形核500内的n个子核501a-501f的集合的最后一级缓存,并且还可以充当可由多个子核访问的共享存储器。几何/固定功能管线514而非几何/固定功能管线536可以包括于固定功能块530内,并且可以包括相同或类似的逻辑单元。

在一个实施例中,图形核500包括附加固定功能逻辑516,其可以包括由图形核500使用的各种固定功能加速逻辑。在一个实施例中,附加固定功能逻辑516包括在仅位置着色中使用的附加几何管线。在仅位置着色中,存在两种几何管线:几何/固定功能管线516、536内的全几何管线;以及裁剪管线,其为可以包括于附加固定功能逻辑516内的附加几何管线。在一个实施例中,裁剪管线是全几何管线的削减版本。全管线和裁剪管线可以执行同一应用的不同实例,每个实例具有单独的上下文。仅位置着色可以隐藏对已丢弃三角形的长剔除运行,从而使得着色在一些情况下能够更早地完成。例如,并且在一个实施例中,附加固定功能逻辑516内的裁剪管线逻辑可以与主应用并行地执行位置着色器,并且通常比全管线更快地生成关键结果,因为裁剪管线仅对顶点的位置属性进行获取并着色,而不对帧缓冲区执行像素的光栅化和渲染。裁剪管线可以使用所生成的关键结果来计算所有三角形的可视性信息,而无论是否裁剪了这些三角形。全管线(其在该实例中可以称为回放管线)可以采用可视性信息来跳过被裁剪的三角形,以仅着色最终传递到光栅化阶段的可视三角形。

在一个实施例中,附加固定功能逻辑516还可以包括机器学习加速逻辑(例如,固定功能矩阵乘法逻辑,以用于包括对机器学习训练或推理进行优化的实现方式)。

在每个图形子核501a-501f内包括一组执行资源,其可以用于响应于图形管线、媒体管线或着色器程序进行的请求而执行图形、媒体和计算操作。图形子核501a-501f包括多个eu阵列502a-502f、504a-504f、线程分派和线程间通信(td/ic)逻辑503a-503f、3d(例如,纹理)采样器505a-505f,媒体采样器506a-506f、着色器处理器507a-507f和共享本地存储器(slm)508a-508f。eu阵列502a-502f、504a-504f均包括多个执行单元,其为能够在图形、媒体或计算操作的服务中执行浮点和整数/定点逻辑操作(包括图形、媒体或计算着色器程序)的通用图形处理单元。td/ic逻辑503a-503f为子核内的执行单元执行本地线程分派和线程控制操作,并且促进在子核的执行单元上执行的线程之间的通信。3d采样器505a-505f可以将纹理或其他3d图形有关数据读取到存储器中。3d采样器可以基于所配置的采样状态和与给定纹理关联的纹理格式来不同地读取纹理数据。媒体采样器506a-506f可以基于与媒体数据关联的类型和格式来执行类似的读取操作。在一个实施例中,每个图形子核501a-501f可以替代地包括统一3d和媒体采样器。在子核501a-501f中的每一个内的执行单元上执行的线程可以使用每个子核内的共享本地存储器508a-508f,以使得在线程组内执行的线程能够使用片上存储器的公共池执行。

执行单元

图6a-图6b示出根据本文描述的实施例的线程执行逻辑600,其包括图形处理器核中采用的处理元件阵列。图6a-图6b中标号(或名称)与本文任何其他附图的要素相同的要素可以按与本文其他地方描述的方式类似的任何方式操作或运作,但不限于此。图6a示出线程执行逻辑600的概述,其可以包括图5的每个子核501a-501f所示的硬件逻辑的变型。图6b示出执行单元的示例性内部细节。

如图6a所示,在一些实施例中,线程执行逻辑600包括着色器处理器602、线程分派器604、指令缓存606、包括多个执行单元608a-608n的可扩展执行单元阵列、采样器610、数据缓存612和数据端口614。在一个实施例中,可扩展执行单元阵列可以通过基于工作负荷的计算要求启用或禁用一个或多个执行单元(例如,执行单元608a、608b、608c、608d至608n-1和608n中的任何一个)来动态地扩展。在一个实施例中,所包括的组件经由链接到每一个组件的互连构造而互连。在一些实施例中,线程执行逻辑600包括经过指令缓存606、数据端口614、采样器610和执行单元608a-608n中的一个或多个至存储器(例如,系统存储器或缓存存储器)的一个或多个连接。在一些实施例中,每个执行单元(例如,608a)是能够在为每个线程并行处理多个数据元素的同时执行多个同时硬件线程的单独可编程通用计算单元。在各个实施例中,执行单元608a-608n的阵列可扩展以包括任何数量的单独执行单元。

在一些实施例中,执行单元608a-608n主要用于执行着色器程序。着色器处理器602可以处理各种着色器程序,并且经由线程分派器604分派与着色器程序关联的执行线程。在一个实施例中,线程分派器包括用于仲裁来自图形和媒体管线的线程发起请求并且在执行单元608a-608n中的一个或多个执行单元上实例化所请求的线程的逻辑。例如,几何管线可以将顶点着色器、曲面细分着色器或几何着色器分派到线程执行逻辑以用于处理。在一些实施例中,线程分派器604还可以处理来自执行着色器程序的运行时线程产生请求。

在一些实施例中,执行单元608a-608n支持包括对许多标准3d图形着色器指令的原生支持的指令集,使得以最少的转换执行来自图形库(例如,direct3d和opengl)的着色器程序。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)和通用处理(例如,计算和媒体着色器)。每个执行单元608a-608n能够多发单指令多数据(simd)执行,并且多线程化操作使得在面对更高时延存储器访问时高效的执行环境成为可能。每个执行单元内的每个硬件线程具有专用高带宽寄存器文件和关联的独立线程状态。对于能够进行整数、单精度和双精度浮点运算、simd分支能力、逻辑运算、超越运算和其他杂项运算的管线,执行是每时钟多发的。在等待来自存储器或共享功能之一的数据时,执行单元608a-608n内的依赖性逻辑使等待线程休眠,直到已经返回了所请求的数据。在等待线程正在休眠的同时,硬件资源可以被贡献以处理其他线程。例如,在与顶点着色器操作关联的延迟期间,执行单元可以执行用于像素着色器、片段着色器或其他类型的着色器程序(包括不同的顶点着色器)的操作。

执行单元608a-608n中的每个执行单元对数据元素的阵列进行操作。数据元素的数量是“执行大小”或用于指令的通道的数量。执行通道是用于指令内的数据元素存取、屏蔽和流控制的执行的逻辑单元。通道的数量可以独立于用于特定图形处理器的物理算术逻辑单元(alu)或浮点单元(fpu)的数量。在一些实施例中,执行单元608a-608n支持整数和浮点数据类型。

执行单元指令集包括simd指令。各种数据元素可以作为封装的数据类型存储在寄存器中,并且执行单元将基于元素的数据大小处理各种元素。例如,当对256位宽向量进行操作时,向量的256位被存储在寄存器中,并且执行单元对向量操作为四个单独的64位封装的数据元素(四字(qw)大小数据元素)、八个单独的32位封装的数据元素(双字(dw)大小数据元素)、十六个单独的16位封装的数据元素(字(w)大小数据元素)或三十二个单独的8位数据元素(字节(b)大小数据元素)。然而,不同的向量宽度和寄存器大小是可能的。

在一个实施例中,一个或多个执行单元可以组合成融合的执行单元609a-609n,其具有对于融合的eu共用的线程控制逻辑(607a-607n)。多个eu可以融合成eu组。融合的eu组中的每个eu可以被配置为执行单独的simd硬件线程。融合的eu组中的eu的数量可以根据实施例而变化。此外,可以每eu执行各种simd宽度,包括但不限于simd8、simd16和simd32。每个融合的图形执行单元609a-609n包括至少两个执行单元。例如,融合的执行单元609a包括第一eu608a、第二eu608b和对第一eu608a和第二eu608b共用的线程控制逻辑607a。线程控制逻辑607a控制在融合的图形执行单元609a上执行的线程,从而允许融合的执行单元609a-609n内的每个eu使用公共指令指针寄存器来执行。

在线程执行逻辑600中包括一个或多个内部指令缓存(例如,606),以缓存用于执行单元的线程指令。在一些实施例中,包括一个或多个数据缓存(例如,612),以在线程执行期间缓存线程数据。在一些实施例中,包括采样器610,以提供用于3d操作的纹理采样和用于媒体操作的媒体采样。在一些实施例中,采样器610包括专用纹理或媒体采样功能,以在采样处理期间处理纹理或媒体数据,然后将采样数据提供给执行单元。

在执行期间,图形和媒体管线经由线程产生和分派逻辑将线程发起请求发送到线程执行逻辑600。一旦一组几何对象已经被处理并且光栅化为像素数据,就调用着色器处理器602内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等)以进一步计算输出信息并使结果写入输出表面(例如,颜色缓冲区、深度缓冲区、模板缓冲区等)。在一些实施例中,像素着色器或片段着色器计算要在光栅化对象上进行插值的各种顶点属性的值。在一些实施例中,着色器处理器602内的像素处理器逻辑然后执行应用编程接口(api)-提供的像素或片段着色器程序。为了执行着色器程序,着色器处理器602经由线程分派器604将线程分派到执行单元(例如,608a)。在一些实施例中,着色器处理器602使用采样器610中的纹理采样逻辑来访问存储在存储器中的纹理映射中的纹理数据。对纹理数据和输入几何数据的算术运算计算每个几何片段的像素颜色数据,或者丢弃一个或多个像素以免进一步处理。

在一些实施例中,数据端口614为线程执行逻辑600提供存储器存取机制,以将处理后的数据输出到存储器,以用于在图形处理器输出管线上进一步处理。在一些实施例中,数据端口614包括或耦合到一个或多个缓存存储器(例如,数据缓存612),以缓存数据,以用于经由数据端口的存储器存取。

如图6b所示,图形执行单元608可以包括指令获取单元637、通用寄存器文件阵列(grf)624、架构寄存器文件阵列(arf)626、线程仲裁器622、发送单元630、分支单元632、一组simd浮点单元(fpu)634,以及在一个实施例中还包括一组专用整数simdalu635。grf624和arf626包括与在图形执行单元608中可能是活动的每个同时硬件线程关联的通用寄存器文件和架构寄存器文件的集合。在一个实施例中,每线程架构状态保存在arf626中,而在线程执行期间使用的数据存储在grf624中。每个线程的执行状态,包括每个线程的指令指针,可以保存在arf626中的线程特定寄存器中。

在一个实施例中,图形执行单元608具有作为同时多线程(smt)和细粒度交错多线程(imt)的组合的架构。该架构具有能够在设计时基于同时线程的目标数量和每执行单元的寄存器的数量进行精细调节的模块化配置,其中,执行单元资源被划分在用于执行多个同时线程的逻辑上。

在一个实施例中,图形执行单元608可以并发多个指令,多个指令可以各自是不同的指令。图形执行单元608的线程仲裁器622可以将指令分派到发送单元630、分支单元642或simdfpu634之一,以用于执行。每个执行线程可以访问grf624内的128个通用寄存器,其中,每个寄存器可以存储32个字节,可作为32位数据元素的simd8元素向量访问。在一个实施例中,每个执行单元线程可以访问grf624内的4千字节,但实施例不限于此,并且在其他实施例中可以提供更多或更少的寄存器资源。在一个实施例中,多达七个线程可以同时执行,但每执行单元的线程数量也可以根据实施例而变化。在七个线程可以访问4千字节的实施例中,grf624可以存储总共28千字节。灵活的寻址模式可以允许寄存器一起被寻址,以有效地构建更宽的寄存器或表示跨越式矩形块数据结构。

在一个实施例中,经由消息传递发送单元630执行的“发送”指令来分派存储器操作、采样器操作和其他较长时延系统通信。在一个实施例中,分支指令被分派到专用分支单元632,以促进simd发散和最终收敛。

在一个实施例中,图形执行单元608包括一个或多个simd浮点单元(fpu)634,以执行浮点运算。在一个实施例中,fpu634还支持整数计算。在一个实施例中,fpu634可以simd执行多达m数量的32位浮点(或整数)运算,或simd执行多达2m的16位整数或16位浮点运算。在一个实施例中,至少一个fpu提供扩展的数学能力以支持高吞吐量超越数学函数和双精度64位浮点。在一些实施例中,还存在一组8位整数simdalu635,并且其可以被专门优化以执行与机器学习计算关联的操作。

在一个实施例中,可以在图形子核成组(例如,子片)中实例化图形执行单元608的多个实例的阵列。对于可扩展性,产品架构师可以选取每子核成组的执行单元的准确数量。在一个实施例中,执行单元608可以在多个执行通道上执行指令。在另一实施例中,在图形执行单元608上执行的每个线程在不同的通道上执行。

图7是示出根据一些实施例的图形处理器指令格式700的框图。在一个或多个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框示出通常包括于执行单元指令中的组件,而虚线包括可选的或仅包括于指令子集中的组件。在一些实施例中,所描述和示出的指令格式700是宏指令,因为它们是提供给执行单元的指令,与一旦指令被处理就从指令解码得到的微操作不同。

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

对于每种格式,指令操作码712定义执行单元要执行的操作。执行单元在每个操作数的多个数据元素上并行地执行每个指令。例如,响应于加法指令,执行单元在表示纹理元素或图片元素的每个颜色通道上执行同时加法操作。按默认,执行单元在操作数的所有数据通道上执行每个指令。在一些实施例中,指令控制字段714使得能够对特定执行选项(例如,通道选择(例如,预测)和数据通道顺序(例如,混合))进行控制。对于128位指令格式710的指令,exec-size字段716限制将并行执行的数据通道的数量。在一些实施例中,exec-size字段716对于64位紧凑指令格式730是不可用的。

一些执行单元指令具有多达三个操作数,其包括两个源操作数src0720、src1722和一个目的操作数718。在一些实施例中,执行单元支持双目的操作数指令,其中,目的操作数之一是隐式的。数据操控指令可以具有第三源操作数(例如,src2724),其中,指令操作码712确定源操作数的数量。指令的最后源操作数可以是与指令一起传递的立即(例如,硬编码)值。

在一些实施例中,128位指令格式710包括指明例如使用直接寄存器寻址模式还是间接寄存器寻址模式的存取/地址模式字段726。当使用直接寄存器寻址模式时,一个或多个操作数的寄存器地址由指令中的位直接提供。

在一些实施例中,128位指令格式710包括指明用于指令的地址模式和/或存取模式的存取/地址模式字段726。在一个实施例中,存取模式用于定义指令的数据存取对齐。一些实施例支持包括16字节对齐的存取模式和1字节对齐的存取模式在内的存取模式,其中,存取模式的字节对齐确定指令操作数的存取对齐。例如,当处于第一模式时,指令可以对于源操作数和目的操作数使用字节对齐的寻址,并且当处于第二模式时,指令可以对于所有源操作数和目的操作数使用16字节对齐的寻址。

在一个实施例中,存取/地址模式字段726的地址模式部分确定该指令要使用直接寻址还是间接寻址。当使用直接寄存器寻址模式时,指令中的位直接提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时,可以基于指令中的地址寄存器值和地址立即字段来计算一个或多个操作数的寄存器地址。

在一些实施例中,基于操作码712位字段对指令进行成组,以简化操作码解码740。对于8位操作码,位4、5和6允许执行单元确定操作码的类型。所示的精确操作码成组仅是示例。在一些实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。在一些实施例中,移动和逻辑组742共享五个最高有效位(msb),其中,移动(mov)指令是0000xxxxb的形式,并且逻辑指令是0001xxxxb的形式。流控制指令组744(例如,调用、跳转(jmp))包括0010xxxxb的形式(例如,0x20)的指令。杂项指令组746包括指令的混合,包括0011xxxxb的形式(例如,0x30)的同步指令(例如,等待、发送)。并行数学指令组748包括0100xxxxb的形式(例如,0x40)的分量式算术指令(例如,加、乘(mul))。并行数学组748在数据通道上并行地执行算术运算。向量数学组750包括0101xxxxb的形式(例如,0x50)的算术指令(例如,dp4)。向量数学组对向量操作数执行算术(例如,点积计算)。

图形管线

图8是图形处理器800的另一实施例的框图。图8中标号(或名称)与本文任何其他附图的要素相同的要素可以按与本文其他地方描述的类似的任何方式操作或运作,但不限于此。

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

在一些实施例中,命令流送器803引导顶点获取器805的操作,其从存储器读取顶点数据并执行由命令流送器803提供的顶点处理命令。在一些实施例中,顶点获取器805将顶点数据提供给顶点着色器807,顶点着色器807对每个顶点执行坐标空间变换和照明操作。在一些实施例中,顶点获取器805和顶点着色器807通过经由线程分派器831将执行线程分派到执行单元852a-852b来执行顶点处理指令。

在一些实施例中,执行单元852a-852b是具有用于执行图形和媒体操作的指令集的向量处理器阵列。在一些实施例中,执行单元852a-852b具有附接的l1缓存851,其对于每个阵列是特定的或者在阵列之间共享。缓存可以被配置为数据缓存、指令缓存或被分区以在不同分区中包含数据和指令的单个缓存。

在一些实施例中,几何管线820包括曲面细分组件,以执行3d对象的硬件加速曲面细分。在一些实施例中,可编程外壳着色器811配置曲面细分操作。可编程域着色器817提供对曲面细分输出的后端评估。曲面细分器813在外壳着色器811的引导下进行操作,并且包含专用逻辑,以基于被提供作为对几何管线820的输入的粗几何模型生成一组详细几何对象。在一些实施例中,如果不使用曲面细分,则可以旁路曲面细分组件(例如,外壳着色器811、曲面细分器813和域着色器817)。

在一些实施例中,全部的几何对象可以经由被分派到执行单元852a-852b的一个或多个线程由几何着色器819来处理,或者可以直接进入裁剪器(clipper)829。在一些实施例中,几何着色器可以对整个几何对象而不是图形管线的前级中的顶点或顶点片块进行操作。如果禁用曲面细分,则几何着色器819接收来自顶点着色器807的输入。在一些实施例中,几何着色器819可由几何着色器程序编程,以在曲面细分单元被禁用时执行几何曲面细分。

在光栅化之前,裁剪器829处理顶点数据。裁剪器829可以是固定功能裁剪器或具有裁剪和几何着色器功能的可编程裁剪器。在一些实施例中,渲染输出管线870中的光栅化器和深度测试组件873分派像素着色器以将几何对象转换为每像素表示。在一些实施例中,像素着色器逻辑被包括于线程执行逻辑850中。在一些实施例中,应用可以旁路光栅化器和深度测试组件873,并且经由流输出单元823访问未光栅化的顶点数据。

图形处理器800具有互连总线、互连构造或允许处理器的主要组件之间的数据和消息传递的一些其他互连机构。在一些实施例中,执行单元852a-852b和关联的逻辑单元(例如,l1缓存851、采样器854、纹理缓存858等)经由数据端口856互连,以执行存储器存取并且与处理器的渲染输出管线组件进行通信。在一些实施例中,采样器854、缓存851、858和执行单元852a-852b均具有单独的存储器存取路径。在一个实施例中,纹理缓存858还可以被配置为采样器缓存。

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

在一些实施例中,图形处理器媒体管线830包括媒体引擎837和视频前端834。在一些实施例中,视频前端834从命令流送器803接收管线命令。在一些实施例中,媒体管线830包括单独的命令流送器。在一些实施例中,视频前端834在将命令发送到媒体引擎837之前处理媒体命令。在一些实施例中,媒体引擎837包括线程产生功能,以产生用于经由线程分派器831分派到线程执行逻辑850的线程。

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

在一些实施例中,几何管线820和媒体管线830可配置为基于多个图形和媒体编程接口执行操作,并且不特定于任何一个应用编程接口(api)。在一些实施例中,用于图形处理器的驱动程序软件将特定于特定图形或媒体库的api调用转换为能够由图形处理器处理的命令。在一些实施例中,为开放图形库(opengl)、开放计算语言(opencl)和/或vulkan图形和计算api(全都来自khronosgroup)提供支持。在一些实施例中,还可以为microsoftcorporation的direct3d库提供支持。在一些实施例中,可以支持这些库的组合。还可以为开源计算机视觉库(opencv)提供支持。如果可以从未来api的管线到图形处理器的管线进行映射,则还将支持具有兼容3d管线的未来api。

图形管线编程

图9a是示出根据一些实施例的图形处理器命令格式900的框图。图9b是示出根据实施例的图形处理器命令序列910的框图。图9a中的实线框示出通常包括于图形命令中的组件,而虚线包括可选的或仅包括于图形命令的子集中的组件。图9a的示例性图形处理器命令格式900包括用于识别客户端902的数据字段、命令操作码(操作码)904和用于该命令的数据906。在一些命令中还包括子操作码905和命令大小908。

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

图9b中的流程图示出示例性图形处理器命令序列910。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示的命令序列的版本来设置、执行和终止一组图形操作。仅出于示例的目的示出并描述采样命令序列,因为实施例不限于这些特定命令或该命令序列。此外,命令可以作为命令序列中的批命令而发出,使得图形处理器将至少部分地并发处理命令的序列。

在一些实施例中,图形处理器命令序列910可以开始于管线清理(flush)命令912,以使任何活动图形管线完成用于管线的当前未决命令。在一些实施例中,3d管线922和媒体管线924不并发操作。执行管线清理,以使活动的图形管线完成任何未决命令。响应于管线清理,用于图形处理器的命令解析器将暂停命令处理,直到活动的绘图引擎完成未决操作并且有关的读取缓存失效。可选地,渲染缓存中标记为“脏”的任何数据可以被清理到存储器。在一些实施例中,对于管线同步或在将图形处理器置于低功率状态之前,可以使用管线清理命令912。

在一些实施例中,当命令序列要求图形处理器显式地在管线之间切换时,使用管线选择命令913。在一些实施例中,在发出管线命令之前,在执行上下文内仅需要一次管线选择命令913,除非上下文要为两个管线发出命令。在一些实施例中,在经由管线选择命令913进行管线切换前一刻,需要管线清理命令912。

在一些实施例中,管线控制命令914配置用于操作的图形管线,并且用于对3d管线922和媒体管线924进行编程。在一些实施例中,管线控制命令914配置活动管线的管线状态。在一个实施例中,管线控制命令914用于管线同步并且在处理批命令之前清除来自活动管线内的一个或多个缓存存储器的数据。

在一些实施例中,返回缓冲区状态命令916用于为各个管线配置一组返回缓冲区以写入数据。一些管线操作需要分配、选择或配置操作在处理期间将中间数据写入的一个或多个返回缓冲区。在一些实施例中,图形处理器还使用一个或多个返回缓冲区来存储输出数据并执行跨线程通信。在一些实施例中,返回缓冲区状态916包括选择要用于一组管线操作的返回缓冲区的大小和数量。

命令序列中的其余命令基于用于操作的活动管线而不同。基于管线确定(920),命令序列被调整为:3d管线922开始于3d管线状态930或媒体管线924开始于媒体管线状态940。

用于配置3d管线状态930的命令包括用于顶点缓冲区状态、顶点元素状态、恒定色彩状态、深度缓冲区状态和在处理3d图元命令之前要配置的其他状态变量的3d状态设置命令。至少部分地基于使用中的特定3dapi来确定这些命令的值。在一些实施例中,如果特定管线元素将不被使用,则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。用于配置媒体管线状态940的一组命令被分派或放置到命令队列中,在媒体对象命令942之前。在一些实施例中,用于媒体管线状态940的命令包括用于配置将用于处理媒体对象的媒体管线元素的数据。这包括用于在媒体管线内配置视频解码和视频编码逻辑的数据(例如,编码或解码格式)。在一些实施例中,用于媒体管线状态940的命令还支持使用对包含一批状态设置的“间接”状态元素的一个或多个指针。

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

图形软件架构

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

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

在一些实施例中,操作系统1020是来自microsoftcorporation的操作系统、类似私有unix的操作系统、或使用linux内核的变型的类似开源unix的操作系统。操作系统1020可以支持图形api1022(例如,direct3dapi、openglapi或vulkanapi)。当direct3dapi处于使用中时,操作系统1020使用前端着色器编译器1024来将hlsl的任何着色器指令1012编译成更低级着色器语言。编译可以是即时(jit)编译,或者应用可以执行着色器预编译。在一些实施例中,在3d图形应用1010的编译期间将高级着色器编译成低级着色器。在一些实施例中,以中间形式(例如,vulkanapi使用的标准便携式中间表示(spir)的版本)提供着色器指令1012。

在一些实施例中,用户模式图形驱动程序1026包含后端着色器编译器1027,以将着色器指令1012转换为硬件特定表示。当openglapi处于使用中时,glsl高级语言的着色器指令1012被传递到用户模式图形驱动程序1026以用于编译。在一些实施例中,用户模式图形驱动程序1026使用操作系统内核模式功能1028来与内核模式图形驱动程序1029进行通信。在一些实施例中,内核模式图形驱动程序1029与图形处理器1032进行通信,以分派命令和指令。

ip核实现方式

可以通过机器可读介质上存储的表示和/或定义集成电路(例如,处理器)内的逻辑的代表性代码来实现至少一个实施例的一个或多个方面。例如,机器可读介质可以包括表示处理器内的各种逻辑的指令。当由机器读取时,指令可以使机器制造逻辑以执行本文描述的技术。这种表示(称为“ip核”)是集成电路的可重复使用的逻辑单元,其可以存储在有形机器可读介质上作为描述集成电路的结构的硬件模型。可以将硬件模型提供给各种消费者或制造设施,其将硬件模型加载在制造集成电路的构造机器上。可以构造集成电路,使得电路执行与本文描述的任何实施例关联地描述的操作。

图11a是示出根据实施例的可以用于制造集成电路以执行操作的ip核开发系统1100的框图。ip核开发系统1100可以用于生成模块化的、可重复使用的设计,其可以合并到更大的设计中或用于构建整个集成电路(例如,soc集成电路)。设计设施1130可以用高级编程语言(例如,c/c++)生成ip核设计的软件仿真1110。软件仿真1110可以用于使用仿真模型1112来设计、测试和验证ip核的行为。仿真模型1112可以包括功能仿真、行为仿真和/或时序仿真。然后可以从仿真模型1112生成或合成寄存器传输级(rtl)设计1115。rtl设计1115是对硬件寄存器之间的数字信号流进行建模的集成电路(包括使用所建模的数字信号执行的关联逻辑)的行为的抽象。除了rtl设计1115之外,还可以生成、设计或合成逻辑级或晶体管级的更低级设计。因此,初始设计和仿真的特定细节可以变化。

rtl设计1115或等同物可以由设计设施进一步合成为硬件模型1120,其可以处于硬件描述语言(hdl)或物理设计数据的一些其他表示。可以进一步仿真或测试hdl以验证ip核设计。可以使用非易失性存储器1140(例如,硬盘、闪存或任何非易失性存储介质)存储ip核设计,以用于提交到第3方构造设施1165。替代地,可以通过有线连接1150或无线连接1160(例如,经由互联网)发送ip核设计。然后,构造设施1165可以构造至少部分地基于ip核设计的集成电路。构造的集成电路可以被配置为执行根据本文描述的至少一个实施例的操作。

图11b示出根据本文描述的一些实施例的集成电路封装组件1170的截面侧视图。集成电路封装组件1170示出如本文所述的一个或多个处理器或加速器设备的实现方式。封装组件1170包括连接到基板1180的多个硬件逻辑单元1172、1174。逻辑1172、1174可以至少部分地实现于可配置逻辑或固定功能逻辑硬件中,并且可以包括处理器核、图形处理器或本文描述的其他加速器设备中的任何一个的一个或多个部分。每个逻辑单元1172、1174可以实现于半导体管芯内,并且经由互连结构1173与基板1180耦合。互连结构1173可以被配置为在逻辑1172、1174与基板1180之间路由电信号,并且可以包括互连(例如但不限于凸点或支柱)。在一些实施例中,互连结构1173可以被配置为路由电信号(例如,与逻辑1172、1174的操作关联的输入/输出(i/o)信号和/或电源信号或地信号)。在一些实施例中,基板1180是基于环氧树脂的层压基板。在其他实施例中,封装组件1170可以包括其他合适类型的基板。封装组件1170可以经由封装互连1183连接到其他电气设备。封装互连1183可以耦合到基板1180的表面,以将电信号路由到其他电气设备(例如,主板、其他芯片组或多芯片模块)。

在一些实施例中,逻辑单元1172、1174与桥1182电耦合,桥1182被配置为在逻辑1172、1174之间路由电信号。桥1182可以是提供用于电信号的路线的密集互连结构。桥1182可以包括由玻璃或合适的半导体材料构成的桥基板。可以在桥基板上形成电路由特征,以在逻辑1172、1174之间提供芯片到芯片连接。

尽管示出两个逻辑单元1172、1174和桥1182,但本文描述的实施例可以在一个或多个管芯上包括更多或更少的逻辑单元。一个或多个管芯可以通过零个或更多个桥连接,因为当逻辑被包括于单个管芯上时可以排除桥1182。替代地,多个管芯或逻辑单元可以通过一个或多个桥连接。此外,多个逻辑单元、管芯和桥可以按其他可能的配置(包括三维配置)连接在一起。

示例性片上系统集成电路

图12-图14示出根据本文描述的各个实施例的可以使用一个或多个ip核构造的示例性集成电路和关联的图形处理器。除了所示的内容之外,可以包括其他逻辑和电路,包括附加图形处理器/核、外围接口控制器或通用处理器核。

图12是示出根据实施例的可以使用一个或多个ip核构造的示例性片上系统集成电路1200的框图。示例性集成电路1200包括一个或多个应用处理器1205(例如,cpu)、至少一个图形处理器1210,并且可以附加地包括图像处理器1215和/或视频处理器1220,其中的任何一个可以是来自相同或多个不同设计设施的模块化ip核。集成电路1200包括外围设备或总线逻辑,包括usb控制器1225、uart控制器1230、spi/sdio控制器1235和i2s/i2c控制器1240。此外,集成电路可以包括耦合到高清晰度多媒体接口(hdmi)控制器1250和移动工业处理器接口(mipi)显示接口1255中的一个或多个的显示设备1245。存储可以由包括闪存和闪存控制器的闪存子系统1260提供。可以经由存储器控制器1265提供存储器接口,以用于访问sdram或sram存储器设备。一些集成电路附加地包括嵌入式安全引擎1270。

图13a-图13b是示出根据本文描述的实施例的在soc内使用的示例性图形处理器的框图。图13a示出根据实施例的可以使用一个或多个ip核构造的片上系统集成电路的示例性图形处理器1310。图13b示出根据实施例的可以使用一个或多个ip核构造的片上系统集成电路的附加示例性图形处理器1340。图13a的图形处理器1310是低功耗图形处理器核的示例。图13b的图形处理器1340是更高性能图形处理器核的示例。图形处理器1310、1340中的每一个可以是图12的图形处理器1210的变型。

如图13a所示,图形处理器1310包括顶点处理器1305和一个或多个片段处理器1315a-1315n(例如,1315a、1315b、1315c、1315d至1315n-1和1315n)。图形处理器1310可以经由单独的逻辑执行不同的着色器程序,使得顶点处理器1305得以优化,以执行用于顶点着色器程序的操作,而一个或多个片段处理器1315a-1315n执行用于片段或像素着色器程序的片段(例如,像素)着色操作。顶点处理器1305执行3d图形管线的顶点处理级并且生成图元和顶点数据。片段处理器1315a-1315n使用由顶点处理器1305生成的图元和顶点数据来产生在显示设备上显示的帧缓冲区。在一个实施例中,片段处理器1315a-1315n被优化以执行如openglapi中提供的片段着色器程序,其可以用于执行与如direct3dapi中提供的像素着色器程序类似的操作。

图形处理器1310附加地包括一个或多个存储器管理单元(mmu)1320a-1320b、缓存1325a-1325b和电路互连1330a-1330b。一个或多个mmu1320a-1320b为图形处理器1310(包括为顶点处理器1305和/或片段处理器1315a-1315n)提供虚拟到物理地址映射,其除了存储在一个或多个缓存1325a-1325b中的顶点或图像/纹理数据之外还可以引用存储在存储器中的顶点或图像/纹理数据。在一个实施例中,一个或多个mmu1320a-1320b可以与系统内的其他mmu(包括与图12的一个或多个应用处理器1205、图像处理器1215和/或视频处理器1220关联的一个或多个mmu)同步,使得每个处理器1205-1220可以参与共享或统一的虚拟存储器系统。根据实施例,一个或多个电路互连1330a-1330b使得图形处理器1310能够经由soc的内部总线或经由直接连接与soc内的其他ip核进行接口。

如图13b所示,图形处理器1340包括图13a的图形处理器1310的一个或多个mmu1320a-1320b、缓存1325a-1325b和电路互连1330a-1330b。图形处理器1340包括一个或多个着色器核1355a-1355n(例如,1455a、1355b、1355c、1355d、1355e、1355f至1355n-1和1355n),其提供统一的着色器核架构,在其中,单核或类型或核可以执行所有类型的可编程着色器代码,包括用于实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。存在的着色器核的确切数量可以在实施例和实现方式之间变化。此外,图形处理器1340包括核间任务管理器1345,其充当线程分派器以将执行线程分派到一个或多个着色器内核1355a-1355n和平铺单元1358,以加速用于基于平铺块的渲染的平铺操作,在其中,用于场景的渲染操作在图像空间中细分(例如,以利用场景内的局部空间相干性或优化内部缓存的使用)。

图14a-图14b示出根据本文描述的实施例的附加示例性图形处理器逻辑。图14a示出图形核1400,其可以被包括于图12的图形处理器1210内,并且可以是如图13b中的统一着色器核1355a-1355n。图14b示出适合于部署在多芯片模块上的高度并行的通用图形处理单元1430。

如图14a所示,图形核1400包括共享指令缓存1402、纹理单元1418和缓存/共享存储器1420,它们对于图形核1400内的执行资源是共用的。图形核1400可以包括用于每个核的多个分片1401a-1401n或分区,并且图形处理器可以包括图形核1400的多个实例。分片1401a-1401n可以包括支持逻辑,其包括本地指令缓存1404a-1404n、线程调度器1406a-1406n、线程分派器1408a-1408n和一组寄存器1410a。为了执行逻辑操作,分片1401a-1401n可以包括一组附加功能单元(afu1412a-1412n)、浮点单元(fpu1414a-1414n)、整数算术逻辑单元(alu1416-1416n)、地址计算单元(acu1413a-1413n)、双精度浮点单元(dpfpu1415a-1415n)和矩阵处理单元(mpu1417a-1417n)。

一些计算单元以特定精度操作。例如,fpu1414a-1414n可以执行单精度(32位)和半精度(16位)浮点运算,而dpfpu1415a-1415n执行双精度(64位)浮点运算。alu1416a-1416n可以按8位、16位和32位精度执行可变精度整数运算,并且可以被配置用于混合精度运算。mpu1417a-1417n还可以配置用于混合精度矩阵运算,包括半精度浮点运算和8位整数运算。mpu1417-1417n可以执行各种矩阵运算以加速机器学习应用框架,包括使得对加速的通用矩阵到矩阵乘法(gemm)的支持成为可能。afu1412a-1412n可以执行浮点或整数单元不支持的附加逻辑运算,包括三角运算(例如,正弦、余弦等)。

如图14b所示,通用处理单元(gpgpu)1430可以被配置为使得高度并行的计算操作能够由图形处理单元的阵列执行。此外,gpgpu1430可以直接链接到gpgpu的其他实例,以生成多gpu集群,以提升用于特定深度神经网络的训练速度。gpgpu1430包括主机接口1432,以使得与主机处理器的连接成为可能。在一个实施例中,主机接口1432是pciexpress接口。然而,主机接口也可以是供应商特定的通信接口或通信构造。gpgpu1430从主机处理器接收命令并且使用全局调度器1434来将与那些命令关联的执行线程分发到一组计算集群1436a-1436h。计算集群1436a-1436h共享缓存存储器1438。缓存存储器1438可以充当用于计算集群1436a-1436h内的缓存存储器的更高层缓存。

gpgpu1430包括经由一组存储器控制器1442a-1442b与计算集群1436a-1436h耦合的存储器1434a-1434b。在各个实施例中,存储器1434a-1434b可以包括各种类型的存储器设备,包括动态随机存取存储器(dram)或图形随机存取存储器(例如,同步图形随机存取存储器(sgram),包括图形双倍数据率(gddr)存储器)。

在一个实施例中,计算集群1436a-1436h均包括一组图形核(例如,图14a的图形核1400),其可以包括多种类型的整数和浮点逻辑单元,它们可以按一系列精度(包括适合于机器学习计算的精度)执行计算操作。例如,并且在一个实施例中,计算集群1436a-1436h中的每一个中的浮点单元的至少一个子集可以被配置为执行16位或32位浮点运算,而浮点单元的不同子集可以被配置为执行64位浮点运算。

gpgpu1430的多个实例可以被配置为操作为计算集群。计算集群用于同步和数据交换的通信机制因实施例而异。在一个实施例中,gpgpu1430的多个实例通过主机接口1432进行通信。在一个实施例中,gpgpu1430包括i/o中枢1439,其将gpgpu1430与gpu链路1440耦合,gpu链路1440使得至gpgpu的其他实例的直接连接成为可能。在一个实施例中,gpu链路1440耦合到专用gpu到gpu桥,其使得能够进行gpgpu1430的多个实例之间的通信和同步。在一个实施例中,gpu链路1440与高速互连耦合,以对其他gpgpu或并行处理器发送和接收数据。在一个实施例中,gpgpu1430的多个实例位于分离的数据处理系统中,并且经由可经由主机接口1432访问的网络设备进行通信。在一个实施例中,除了主机接口1432之外或作为对其的替代,gpu链路1440还可以被配置为使得至主机处理器的连接成为可能。

虽然gpgpu1430的所示配置可以被配置为训练神经网络,但一个实施例提供可以被配置用于部署在高性能或低功率推理平台内的gpgpu1430的替选配置。在推理配置中,gpgpu1430相对于训练配置包括更少的计算集群1436a-1436h。此外,与存储器1434a-1434b关联的存储器技术可以在推理配置与训练配置之间不同,其中,更高带宽存储器技术致力于训练配置。在一个实施例中,gpgpu1430的推理配置可以支持推理特定指令。例如,推理配置可以提供对一个或多个8位整数点积指令的支持,这些指令在推理操作期间常用于所部署的神经网络。

如上所讨论的,最佳配置(例如,rc1、rc1e、rc6、cpg、rpx)可以由计算引擎(或配置逻辑)基于状态特性和/或工作负荷度量来计算。此外,虽然传统的解决方案对于大多数工作负荷可能在这些状态与频率之间做了合理的工作决策,但是还可以通过考虑工作负荷的泄漏和/或动态功率以及功率门(或功率门控逻辑)的功率门控效率以及可能的功率状态(例如,rc1e状态、粗功率门控状态和rc6状态)的进入/退出时延,对具有相对高的唤醒率的工作负荷进一步能量优化。此外,实施例利用硬件有限状态机来进行确定最优状态的计算。在不同的实施例中,(例如,小型硬件)可编程计算引擎/逻辑可以容易地计算最优硬件配置,或者实现对于大多数工作负荷而言是最优的一小套决策规则。这种计算甚至可以在通用处理器(例如,ia(架构)或guc)上执行(假设开销足够低以允许及时计算)。

在一个实施例中,计算引擎/逻辑根据关于工作负荷所采取的(或从一个或多个度量/传感器接收的)测量和/或描述功率输送的固定参数、管芯特性和/或一些设计参数,计算用于决定功率状态的最佳方法。传统的解决方案可能提供了一种与实际的管芯泄漏、功率门效率和动态功率无关的解决办法。然而,需要调整传统的解决方案,以决定最重要的工作负荷的合适状态;而一个或多个实施例能够在一旦设置了参数(例如,每状态{泄漏,cdyn,时延}),就不需要重新调整地计算不同生成的设置。

图15示出了根据实施例的在图形系统1500的各个组件之间的信息流。系统1500包括用户模式驱动程序1502(其与用户和/或主机系统交互以提供关于应用(例如,媒体转码、ocl(或opencltm)等)的提示)、内核模式驱动程序1504(其确定帧速率、工作负荷类型gpgpu(例如,媒体、3d、ui、触摸等)、turbo策略等)和图形逻辑(gt)1506。内核模式驱动程序1504还可以基于各种信息(包括,例如功率预算、qos预期、dcc/dct状态、eu/sspg状态、ibc/pg1状态等)来确定自适应突发turbo操作,其中,dcc指代占空比控制,dct指代占空比节流,eu指代执行单元,ss指代子片,pg指代功率门控,ibc指代智能偏置控制,pg1指代频率限制。

此外,计算引擎/逻辑可以容易地执行电子表格计算。实际上,一些现有的gpu已经包含称为guc(全局微控制器)的计算引擎,其可以执行这些计算。在实施例中,guc的使用不会改变pcu和驱动程序代码之间的责任划分(例如,不管驱动程序是驻留在通用处理器还是guc上)。

参照图15,gt逻辑1506包括guc(本文也称为功率配置逻辑)、gtpm(或gt功率管理)逻辑、gt度量单元(其可以基于一个或多个传感器检测到的各种信息来提供gt度量,如本文讨论的那样)和一个或多个度量有限状态机(fsm)。图15中的“ints(整数)”链接度量fsm和guc指代用于guc的中断信号。gt逻辑1506从用户模式驱动程序和/或内核模式驱动程序接收之前讨论的各种设置,并利用guc逻辑,基于要从gt度量单元和/或度量fsm接收的数据来生成用于gtpm逻辑的状态信息(例如,rcx、rpx和/或pgx)。如图所示,然后将rp状态请求信息提供给系统功率单元1508(例如,经由利用dcc/dct的邮箱接口)。

此外,唤醒时间通常是依赖于工作负荷的,所以初始配置可能暂时(几个时钟周期)是错误的,直到功率配置逻辑赶上了更适用的正确数据。在各种实施例中,可以通过各种选定的状态(例如,rc1、rc1e、cpg、rpx等)来识别最佳配置。如本文所讨论的,“rpx”通常指代图形频率x,“rpe”通常指代能量效率最高的图形或gfx(图形)频率。“rc1”通常指代在rpe(或最大效率频率)的频率下的空闲状态(例如,图形逻辑/gpu没有处理任何数据),“rc1e”通常指代在rpe下的空闲状态。

因此,一些实施例为每个硬件选项计算结果或roi(投资回报率),如图16-图17的示例所示。第一电子表格(图16)示出了对比rc6、rcle与(rc1e+cpg)的总预计能量结果的摘录,以及如何计算列。通常,rc0*dcc指示有功功率。对于图16的特定工作负荷和状态特性,可以容易地确定rc6是最佳选择。图17对不同的工作负荷执行相同的计算。在图16-图17中,“v”指代电压,“f”指代频率,“fps”指代每秒帧,“vp”指代在逻辑需要运行时执行所需的电压。对于最后的特定工作负荷和状态特性(图17),可以容易地确定(rcle+cpg)是最佳选择。

虽然上面的表格已经包含实现方式所需的公式,但是出于完整性的考虑,根据一些实施例,下面提供了对应的伪代码。如下所讨论的(本文更一般地),“gfxpwr”指代图形功率,“cdynmax”指代最大动态电容,“pleak”指代功率泄漏,“cb”指代体电容,“ar”指代应用比率,“t”或“temp”指代温度。

以下示例属于进一步实施例。示例1包括一种装置,该装置包括:功率配置逻辑,该功率配置逻辑的至少一部分在硬件中,该功率配置逻辑用于确定用于处理器的一部分的功率状态配置,其中,该功率状态配置对应于用于所述处理器的该部分在空闲时段期间的操作的多个功率状态设置,其中,该功率配置逻辑用于至少部分地基于一个或多个运行时工作负荷测量来确定功率状态配置。示例2包括示例1所述的装置,其中,所述一个或多个运行时工作负荷测量对应于以下一项或多项:一个或多个工作负荷的泄漏功率、所述一个或多个工作负荷的动态功率、耦合到所述一个或多个工作负荷的功率门控逻辑的功率门控效率、以及所述功率门控逻辑从一个或多个降低的功耗状态的进入或退出时延。示例3包括示例1所述的装置,其中,所述功率配置逻辑用于至少部分地基于所述一个或多个运行时工作负荷测量和一个或多个降低的功耗状态特性来确定所述功率状态配置。示例4包括示例1述的装置,其中,所述逻辑包括通用处理器或全局微控制器。示例5包括示例1所述的装置,还包括一个或多个传感器,用于检测所述一个或多个运行时工作负荷测量。示例6包括示例5所述的装置,还包括一个或多个有限状态机,用于处理检测到的一个或多个运行时工作负荷测量。示例7包括示例1所述的装置,其中,所述功率状态配置包括多个选定的功率状态。示例8包括示例1所述的装置,其中,所述处理器的该部分包括图形逻辑。示例9包括示例1所述的装置,其中,所述处理器包括具有一个或多个图形处理核的图形处理单元(gpu)。示例10包括示例1所述的装置,其中,所述处理器包括一个或多个处理器核。示例11包括示例1所述的装置,其中,所述处理器、所述逻辑和存储器中的一个或多个在单个集成电路管芯上。

示例12包括一种方法,该方法包括:在功率配置逻辑处,确定处理器的一部分的功率状态配置,其中,所述功率状态配置对应于用于所述处理器的该部分在空闲时段期间的操作的多个功率状态设置,其中,所述功率配置逻辑用于至少部分地基于一个或多个运行时工作负荷测量来确定功率状态配置。示例13包括示例12所述的方法,其中,所述一个或多个运行时工作负荷测量对应于以下一项或多项:一个或多个工作负荷的泄漏功率、所述一个或多个工作负荷的动态功率、耦合到所述一个或多个工作负荷的功率门控逻辑的功率门控效率、以及所述功率门控逻辑从一个或多个降低的功耗状态的进入或退出时延。示例14包括示例12所述的方法,还包括:所述功率配置逻辑至少部分地基于所述一个或多个运行时工作负荷测量和一个或多个降低的功耗状态特性来确定所述功率状态配置。示例15包括示例12所述的方法,还包括:一个或多个传感器检测所述一个或多个运行时工作负荷测量。示例16包括示例15所述的方法,还包括:一个或多个有限状态机处理检测到的一个或多个运行时工作负荷测量。示例17包括示例12所述的方法,其中,所述功率状态配置包括多个选定的功率状态。

示例18包括一种或多种计算机可读介质,包括一个或多个指令,所述指令当在至少一个处理器上执行时,配置所述至少一个处理器执行一个或多个操作:使得在功率配置逻辑处,确定用于处理器的一部分的功率状态配置,其中,所述功率状态配置对应于用于所述处理器的该部分在空闲时段期间的操作的多个功率状态设置,其中,所述功率配置逻辑至少部分地基于一个或多个运行时工作负荷测量来确定功率状态配置。示例19包括示例18所述的计算机可读介质,其中,所述一个或多个运行时工作负荷测量对应于以下一项或多项:一个或多个工作负荷的泄漏功率、所述一个或多个工作负荷的动态功率、耦合到所述一个或多个工作负荷的功率门控逻辑的功率门控效率、以及所述功率门控逻辑从一个或多个降低的功耗状态的进入或退出时延。示例20包括示例18所述的计算机可读介质,还包括一个或多个指令,所述指令当在至少一个处理器上执行时,配置所述至少一个处理器执行一个或多个操作:使得所述功率配置逻辑至少部分地基于所述一个或多个运行时工作负荷测量和一个或多个降低的功耗状态特性来确定所述功率状态配置。示例21包括示例18所述的计算机可读介质,还包括一个或多个指令,所述指令当在至少一个处理器上执行时,配置所述至少一个处理器执行一个或多个操作:使得一个或多个传感器检测所述一个或多个运行时工作负荷测量。示例22包括示例18所述的计算机可读介质,还包括一个或多个指令,所述指令当在至少一个处理器上执行时,配置所述至少一个处理器执行一个或多个操作:使得一个或多个有限状态机处理检测到的一个或多个运行时工作负荷测量。示例23包括示例18所述的计算机可读介质,其中,所述功率状态配置包括多个选定的功率状态。示例24包括示例18所述的计算机可读介质,其中,所述处理器的该部分包括图形逻辑。示例25包括示例18所述的计算机可读介质,其中,所述处理器包括具有一个或多个图形处理核的图形处理单元(gpu)。

示例26包括一种计算系统,该计算系统包括:具有一个或多个处理器核的处理器;存储器,所述存储器耦合到处理器,用于存储一个或多个比特的数据;和功率配置逻辑,该功率配置逻辑的至少一部分在硬件中,用于确定用于处理器的一部分的功率状态配置,其中,该功率状态配置对应于用于所述处理器的该部分在空闲时段期间的操作的多个功率状态设置,其中,该功率配置逻辑用于至少部分地基于一个或多个运行时工作负荷测量来确定功率状态配置。示例27包括示例26所述的系统,其中,所述一个或多个运行时工作负荷测量对应于以下一项或多项:一个或多个工作负荷的泄漏功率、所述一个或多个工作负荷的动态功率、耦合到所述一个或多个工作负荷的功率门控逻辑的功率门控效率、以及所述功率门控逻辑从一个或多个降低的功耗状态的进入或退出时延。示例28包括示例26所述的系统,其中,所述功率配置逻辑用于至少部分地基于所述一个或多个运行时工作负荷测量和一个或多个降低的功耗状态特性来确定所述功率状态配置。示例29包括示例26所述的系统,其中,所述逻辑包括通用处理器或全局微控制器。示例30示例26所述的系统,还包括一个或多个传感器,用于检测所述一个或多个运行时工作负荷测量。示例31包括示例30所述的系统,还包括一个或多个有限状态机,用于处理检测到的一个或多个运行时工作负荷测量。示例32包括示例26所述的系统,其中,所述功率状态配置包括多个选定的功率状态。示例33包括示例26所述的系统,其中,所述处理器的该部分包括图形逻辑。示例34包括示例26所述的系统,其中,所述处理器包括具有一个或多个图形处理核的图形处理单元(gpu)。示例35包括示例26所述的系统,其中,所述处理器包括一个或多个处理器核。示例36包括示例26所述的系统,其中,所述处理器、所述逻辑和存储器中的一个或多个在单个集成电路管芯上。

示例37包括一种装置,该装置包括用于执行任何前述示例中所述的方法的模块。示例38包括机器可读存储,包括机器可读指令,所述指令当被执行时,实现或实施任何前述示例中所述的方法或装置。

在各个实施例中,本文中(例如,参照图1等)所讨论的操作可以被实现为硬件(例如,逻辑电路)、软件、固件或其组合,它们可以被提供作为计算机程序产品,例如包括一种或多种有形(例如,非瞬时性)机器可读或计算机可读介质,其上存储有用于对计算机进行编程以执行本文所讨论的处理的指令(或软件程序)。机器可读介质可以包括诸如关于图1等所讨论的那些存储设备。

另外,这种计算机可读介质可以被下载作为计算机程序产品,其中,程序可以通过在载波或其他传播介质中提供的数据信号经由通信链路(例如,总线、调制解调器或网络连接)从远端计算机(例如,服务器)被传输到请求计算机(例如,客户端)。

说明书中对“一个实施例”或“实施例”的引用意味着,结合该实施例描述的特定特征、结构和/或特性可以包括在至少一个实现方式中。在说明书中各个地方出现的短语“在一个实施例中”可以或可以不全部指代同一实施例。

另外,在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其派生词。在一些实施例中,“连接”可以用于指示两个或更多个要素彼此直接物理或电接触。“耦合”可以表示两个或更多个要素直接物理或电接触。然而,“耦合”还可以表示两个或更多个要素可以不彼此直接接触,但是可以仍然彼此协作或相互作用。

因此,虽然已经用特定于结构特征和/或方法动作的语言描述了实施例,但是应当理解,所要求保护的主题可以不限于所描述的特定特征或动作。而是,特定特征和动作被公开作为实现所要求保护的主题的样本形式。

此外,前述说明书和附图应被认为是说明性的而不是限制性的。本领域技术人员将理解,在不脱离如所附权利要求书所阐述的本发明的更广泛精神和范围的情况下,可以对本文所描述的实施例进行各种修改和改变。

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