买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:英特尔公司
摘要:涉及用于功率管理的技术的方法和设备。在示例中,设备包括至少部分包括硬件逻辑的逻辑,其用来接收用于工作负荷的一个或多个帧,确定用于工作负荷的一个或多个计算资源参数,并且在存储器中与用于工作负荷的工作负荷上下文数据关联存储用于工作负荷的一个或多个计算资源参数。还公开并且要求保护了其它实施例。
主权项:1.一种用于实现每工作负荷的自适应计算大小的设备,包括:线程调度器;通用图形处理单元,所述通用图形处理单元包括多个流传送微处理器,所述多个流传送微处理器通信地耦合到所述线程调度器并且包括多个执行单元和本地高速缓冲存储器,所述通用图形处理单元用来:接收用于工作负荷的一个或多个帧;确定用于所述工作负荷的所述多个流传送微处理器的一个或多个计算资源参数;以及在所述多个流传送微处理器中的至少一个流传送微处理器的所述本地高速缓冲存储器中与用于所述工作负荷的工作负荷上下文数据关联地存储用于所述工作负荷的所述一个或多个计算资源参数。
全文数据:每工作负荷的自适应计算大小技术领域[0001]本公开一般涉及电子学的领域。更特别地,一些实施例涉及用来在例如图形处理器的数据处理系统中在每工作负荷基础上实现自适应计算大小的技术。背景技术[0002]随着集成电路制造技术改进,制造者能够将附加功能性集成到单个硅衬底上。随着功能数量增加,单个集成电路(IC芯片上的部件数量也增加。附加部件增加附加的信号切换,继而生成更多热量和或消耗更多功率。附加热量可能通过例如热膨胀而损坏芯片上的部件。而且,对于此类装置,例如尤其对于依靠电池功率起作用的装置,附加功率消耗可能限制使用位置和或使用模型。因此,高效的功率管理能够具有对电子装置的效率、寿命以及使用模型的直接影响。[0003]此外,当前的并行图形数据处理包含被开发成对图形数据执行诸如例如线性插值、曲面细分、光栅化、纹理映射、深度测试等的特定操作的系统和方法。传统上,图形处理器使用固定功能计算单元来处理图形数据;然而,最近,已使图形处理器的各部分变成可编程的,使得此类处理器能够支持更多种多样的操作以用于处理顶点和片段数据。[0004]为了进一步增加性能,图形处理器通常实现诸如流水线化pipelining的处理技术,所述处理技术尝试贯穿图形流水线的不同部分并行地处理尽可能多的图形数据。具有单指令多线程(SIMT架构的并行图形处理器被设计成使图形流水线中的并行处理的量最大化。在SMT架构中,并行线程的组尝试尽可能经常地一起同步地执行程序指令以增加处理效率。能够在ShaneCook的CWM编程CWMPrografflffli_ng第3章页码37_512013年和或NicholasWilt的CUDA手册,对GH编程的全面"指导(CUDAHandbook,XCoffiprahansiVeGuidetoGRProgra腦1_收)的章节2.6.2到3.1.22013年6月)中找到用于SMT架构的软件和硬件的总体概述。附图说明[0005]使得可以详细地理解其中本发明的实施例的以上叙述特征的方式,可以参考实施例来对以上简要概括的实施例进行更具体的描述,所述实施例中的一些被图示在附图中。然而,要注意,附图仅图示典型实施例,并因此不被认为限制其范围。[0006]图1是图示了被配置成实现本文中所描述的实施例的一个或多个方面的计算机系统的框图。[0007]图2A-2D图示了根据实施例的并行处理器部件。[0008]图3Α-3Β是根据实施例的图形多处理器的框图。[0009]图4A-4F图示了其中多个GPU通信地耦合至多个多核处理器的示例性架构。[0010]图5图示了根据实施例的图形处理流水线。[0011]图6和7C是根据实施例的用来实现每工作负荷的自适应计算大小的架构的示意性图示。[0012]图7A-7B是图示了根据实施例的在用来实现每工作负荷的自适应计算大小的方法中的操作的流程图。[0013]图8图示了根据实施例的切换调节器的框图。[0014]图9是根据一个或多个实施例的包含流传送streaming多处理器的系统的框图。[0015]图10图示了根据一个实施例的并行处理系统的框图。[0016]图11是根据实施例的处理系统的框图。[0017]图12是根据实施例的处理器的框图。[0018]图13是根据实施例的图形处理器的框图。[0019]图14是根据一些实施例的图形处理器的图形处理引擎的框图。[0020]图15是由附加的实施例提供的图形处理器的框图。[0021]图16图示了包含在一些实施例中采用的处理元素的阵列的线程执行逻辑。[0022]图17是图示了根据一些实施例的图形处理器指令格式的框图。[0023]图18是根据另一实施例的图形处理器的框图。[0024]图19A-19B图示了根据一些实施例的图形处理器命令格式和命令序列。[0025]图20图示了根据一些实施例的用于数据处理系统的示例性图形软件架构。[0026]图21是图示了根据实施例的IP核开发系统的框图。[0027]图22是图示了根据一实施例的示例性芯片上的系统集成电路的框图。[0028]图23是图示了附加的示例性图形处理器的框图。[0029]图24是图示了根据实施例的芯片上的系统集成电路的附加的示例性图形处理器的框图。具体实施方式[0030]在以下描述中,阐述了很多特定细节以便提供对各种实施例的彻底理解。然而,可以在没有特定细节的情况下实践各种实施例。在其他实例中,没有详细地描述众所周知的方法、规程、部件和电路以免使特定实施例模糊。此外,可使用各种手段来执行实施例的各种方面,所述手段诸如集成半导体电路(“硬件”)、组织成一个或多个程序的计算机可读指令(“软件”)或硬件与软件的某个组合。出于本公开的目的,对“逻辑”的引用应意味着硬件、软件、固件或其某个组合。[0031]可在任何处理器诸如GPCPU、CPU、GPU等)、图形控制器等中应用本文中所讨论的一些实施例。还公开并要求保护其他实施例。此外,可在包含例如具有一个或多个处理器核的)一个或多个处理器的计算系统中应用一些实施例,所述计算系统诸如本文中所讨论的那些,包含例如移动计算装置,例如智能电话、平板、UMPC超级移动个人计算机)、膝上型计算机、超极本算装置、可穿戴装置诸如智能手表或智能眼镜等。[0032]在一些实施例中,图形处理单元GPU通信地耦合至主机处理器核以使图形操作、机器学习操作、模式分析操作、以及各种通用GPUGPGPU功能加速。GPU可通过总线或另一互连例如,诸如PCIe或NVLink的高速互连通信地耦合至主机处理器核。在其他实施例中,GPU可被集成在与核相同的封装或芯片上,并通过内部处理器总线互连(S卩,在封装或芯片内部通信地耦合至核。不管其中GPU被连接的方式,处理器核可以采取工作描述符中所包含的命令指令的序列的形式将工作分配给GPUAPU然后使用专用电路系统逻辑以用于高效地处理这些命令指令。[0033]在以下描述中,阐述了很多特定细节来提供更彻底的理解。然而,将对本领域技术人员显而易见的是,可以在没有这些特定细节中的一个或多个的情况下实践本文中所描述的实施例。在其他实例中,没有描述众所周知的特征以避免使本发明的实施例的细节模糊。[0034]系统概述图1是框图,其示出配置成实现本文描述的实施例的一个或多个方面的计算系统100。计算系统100包含处理子系统101,所述处理子系统101具有一个或多个处理器102和系统存储器104,所述一个或多个处理器102与所述系统存储器104经由可包含存储器中枢105的互连路径来通信。存储器中枢105可以是芯片组部件内的单独部件,或可以集成在所述一个或多个处理器102内。存储器中枢105经由通信链路106与IO子系统111耦合。IO子系统111包含IO中枢107,所述IO中枢107能够使计算系统100能够从一个或多个输入装置108接收输入。另外,IO中枢107能够使显示控制器能够将输出提供给一个或多个显示装置110A,所述显示控制器可被包含在所述一个或多个处理器102中。在一个实施例中,与IO中枢107耦合的所述一个或多个显示装置IlOA能够包含局部、内部或嵌入式显示装置。[0035]在一个实施例中,处理子系统101包含一个或多个并行处理器112,所述并行处理器112经由总线或其他通信链路113耦合至存储器中枢105。通信链路113可以是任何数量的基于标准的通信链路技术或协议之一诸如但不限于,PCI快速),或可以是供应方特定的通信接口或通信结构。在一个实施例中,所述一个或多个并行处理器112形成计算上集中的并行或向量处理系统,所述系统包含大量处理核和或处理集群(诸如,集成众核MIC处理器)。在一个实施例中,所述一个或多个并行处理器112形成图形处理子系统,所述图形处理子系统能够将像素输出到经由IO中枢107耦合的所述一个或多个显示装置IlOA之一。所述一个或多个并行处理器112还能够包含显示控制器和显示器接口(未示出)以能够实现到一个或多个显示装置IlOB的直接连接。[0036]在I0子系统111内,系统存储单元114能够连接到I0中枢107以提供用于计算系统100的存储机制。IO开关116能够用来提供接口机制以能够实现IO中枢107与其他部件诸如,可集成到平台中的网络适配器118和或无线网络适配器119,以及可以经由一个或多个插入式装置120添加的各种其他装置之间的连接。网络适配器118可以是以太网适配器或另一有线网络适配器。无线网络适配器119可以包含以下项中的一项或多项:Wi-Fi、蓝牙、近场通信NFC、或包含一个或多个无线无线电装置wirelessradio的其他网络装置。[0037]计算系统100可以包括未显式示出的其他部件,包含USB或其他端口连接件、光学存储驱动、视频捕获装置、和诸如此类,它们也可连接到IO中枢107。使图1中的各种部件互连的通信路径可使用诸如基于PCI外围部件互连的协议例如,PCI快速或任何其他总线或点对点通信接口和或协议诸如,NV-Link高速互连、或本领域中已知的互连协议)的任何合适的协议来实现。[0038]在一个实施例中,所述一个或多个并行处理器112合并针对图形和视频处理进行优化的电路系统包含例如,视频输出电路系统),并且构成图形处理单元GPU。在另一个实施例中,所述一个或多个并行处理器112合并针对通用处理进行优化的电路系统,同时保持本文更详细地描述的底层计算架构。在又一个实施例中,计算系统100的部件可与一个或多个其他系统元件一起集成在单个集成电路上。例如,所述一个或多个并行处理器112、存储器中枢105、处理器102和IO中枢107可以集成到芯片上系统(SoC集成电路中。可替代地,计算系统100的部件可以集成到单个封装中以形成封装中系统SIP配置。在一个实施例中,计算系统100的部件的至少一部分可以集成到多芯片模块MCM中,所述MCM可以与其他多芯片模块一起互连到模块化计算系统中。[0039]将领会的是,本文示出的计算系统100是说明性的,并且变化和修改是有可能的。可如期望的那样来修改连接拓扑,包含桥的数量和布置、(一个或多个处理器102的数量和一个或多个并行处理器112的数量。例如,在一些实施例中,系统存储器104直接而非通过桥而被连接到一个或多个处理器102,而其他装置经由存储器中枢105和一个或多个处理器102而与系统存储器104通信。在其他替代性拓扑中,(一个或多个并行处理器112连接至IJI0中枢107或直接连接到所述一个或多个处理器102中的一个,而非连接到存储器中枢105。在其他实施例中,IO中枢107和存储器中枢105可集成到单个芯片中。一些实施例可包含经由多个插口附连的两组或更多组处理器102,它们可以与(一个或多个并行处理器112的两个或更多个实例耦合。[0040]本文中示出的特定部件中的一些是可选的,并且可以不被包含在计算系统100的所有实现中。例如,可支持任何数量的插入式卡或外围装置,或可消除一些部件。此外,一些架构可将不同的术语用于与图1中图示的那些部件类似的部件。例如,在一些架构中,存储器中枢105可被称为北桥,而IO中枢107可被称为南桥。[0041]图2A图示了根据实施例的并行处理器200。并行处理器200的各种部件可使用一个或多个集成电路装置(诸如可编程处理器、专用集成电路(ASIC或现场可编程门阵列FPGA来实现。根据实施例,所图示的并行处理器200是图1中所示的一个或多个并行处理器112的变体。[0042]在一个实施例中,并行处理器200包含并行处理单元202。所述并行处理单元包含IO单元204,所述IO单元204能够实现与其他装置包含并行处理单元202的其他实例)的通信。I0单元204可直接连接到其他装置。在一个实施例中,IO单元204经由中枢或开关接口(诸如,存储器中枢105的使用来与其他装置连接。存储器中枢105与IO单元204之间的连接形成通信链路113。在并行处理单元202内,IO单元204与主机接口206和存储器交叉开关memorycrossbar216连接,其中,主机接口206接收针对执行处理操作的命令,并且存储器交叉开关216接收针对执行存储器操作的命令。[0043]当主机接口206经由IO单元204接收命令缓冲器时,主机接口206可以将用来执行那些命令的工作操作导引至前端208。在一个实施例中,前端208与调度器210耦合,该调度器210配置成将命令或其他工作项分布至处理集群阵列212。在一个实施例中,调度器210确保在任务被分布至处理集群阵列212的处理集群之前,处理集群阵列212被适当地配置且处于有效状态中。[0044]处理集群阵列212可以包含多达“N”个处理集群(例如,集群214A、集群214B、直到集群214N。处理集群阵列212的每一个集群214A-214N都可以执行大量的并发线程。调度器210可以使用各种调度和或工作分布算法来将工作分配给处理集群阵列212的集群214A-214N,所述算法可以根据因为每个类型的程序或计算而出现的工作负荷而变化。调度可以由调度器210动态地处理,或者可以在配置用于由处理集群阵列212执行的程序逻辑的编译期间由编译器逻辑部分地协助。在一个实施例中,处理集群阵列212的不同集群214A-214N可以被分配用于处理不同类型的程序或用于执行不同类型的计算。[0045]处理集群阵列212可以被配置成执行各种类型的并行处理操作。在一个实施例中,处理集群阵列212被配置成执行通用并行计算操作。例如,处理集群阵列212可以包含用来执行处理任务的逻辑,所述处理任务包含视频和或音频数据的过滤、执行包含物理操作的建模操作,以及执行数据变换。[0046]在一个实施例中,处理集群阵列212被配置成执行并行图形处理操作。在其中并行处理器200被配置成执行图形处理操作的实施例中,处理集群阵列212可以包含用来支持此类图形处理操作的执行的附加逻辑,包含但不限于用来执行纹理操作的纹理采样逻辑以及曲面细分逻辑和其他顶点处理逻辑。另外,处理集群阵列212可以被配置成执行图形处理相关的着色器程序,诸如但不限于顶点着色器、曲面细分着色器、几何着色器和像素着色器。并行处理单元202可以经由IO单元204传送来自系统存储器的数据以用于处理。在处理期间,将所传送的数据可以被在处理期间存储到片上存储器例如,并行处理器存储器222,然后写回到系统存储器。[0047]在一个实施例中,当并行处理单元202用来执行图形处理时,调度器210可以被配置成将处理工作负荷分成近似相等大小的任务,以更好地使得图形处理操作能够分发到处理集群阵列212的多个集群214A-214N。在一些实施例中,处理集群阵列212的各部分可以被配置成执行不同类型的处理。例如,第一部分可以被配置成执行顶点着色和拓扑生成,第二部分可以被配置成执行曲面细分和几何着色,并且第三部分可以被配置成执行像素着色或其他屏幕空间操作,以产生用于显示的渲染图像。由集群214A-214N中的一个或多个产生的中间数据可以存储在缓冲器中以允许中间数据在集群214A-214N之间传输以用于进一步处理。[0048]在操作期间,处理集群阵列212可以接收要经由调度器210执行的处理任务,所述调度器210从前端208接收定义处理任务的命令。对于图形处理操作,处理任务可以包含要处理的数据以及定义要如何处理数据例如,要执行哪个程序)的状态参数和命令的索引,所述数据例如表面补丁patch数据、图元primitive数据、顶点数据和或像素数据。调度器210可以被配置成获取对应于任务的索引或者可以从前端208接收索引。前端208可以被配置成确保处理集群阵列212在由传入命令缓冲器例如,批处理缓冲器、推push缓冲器等指定的工作负荷发起之前被配置成有效状态。[0049]并行处理单元202的一个或多个实例中的每一个都可以与并行处理器存储器222耦合。并行处理器存储器222可以经由存储器交叉开关216来访问,存储器交叉开关216可以从处理集群阵列212以及IO单元204接收存储器请求。存储器交叉开关216可以经由存储器接口218访问并行处理器存储器222。存储器接口218可以包含多个分区单元例如,分区单元220A、分区单元220B、直到分区单元220N,其可以各自耦合至并行处理器存储器222的一部分例如,存储器单元)。在一个实现中,将分区单元220A-220N的数量配置成等于存储器单元的数量,使得第一分区单元220A具有对应的第一存储器单元224A,第二分区单元220B具有对应的存储器单元224B,并且第N分区单元220N具有对应的第N存储器单元224N。在其他实施例中,分区单元220A-220N的数量可以不等于存储器装置的数量。[0050]在各种实施例中,存储器单元224A-224N可以包含各种类型的存储器装置,包含动态随机存取存储器(DRAM或图形随机存取存储器,诸如,同步图形随机存取存储器SGRAM,包含图形双数据速率GDDR存储器。在一个实施例中,存储器单元224A-224N还可包含3D堆叠式存储器,包含但不限于高带宽存储器HBM。本领域技术人员将领会的是,存储器单元224A-224N的特定实现可以变化,并且可以选自各种常规设计中的一个。渲染目标诸如,帧缓冲器或纹理映射)可跨存储器单元224A-224N存储,从而允许分区单元220A-220N并行写入每个渲染目标的多个部分以高效地使用并行处理器存储器222的可用带宽。在一些实施例中,可排除并行处理器存储器222的本地实例,以有利于连同本地高速缓存存储器来利用系统存储器的统一存储器设计。[0051]在一个实施例中,处理集群阵列212的集群214A-214N中的任何一个都可以处理将被写入到并行处理器存储器222内的存储器单元224A-224N中的任何一个的数据。可以将存储器交叉开关216配置成将每一个集群214A-214N的输出传送到任何分区单元220A-220N或另一集群214A-214N,其可以对输出执行附加处理操作。每一个集群214A-214N都可以通过存储器交叉开关216与存储器接口218通信,以便从各种外部存储器装置读取或向各种外部存储器装置写入。在一个实施例中,存储器交叉开关216具有到存储器接口218的连接以与IO单元204通信,以及到并行处理器存储器222的本地实例的连接,从而使不同处理集群214A-214N内的处理单元能够与系统存储器或不在并行处理单元202本地的其他存储器通信。在一个实施例中,存储器交叉开关216可以使用虚拟通道以分离集群214A-214N与分区单元220A-220N之间的业务流。[0052]虽然在并行处理器200内图示了并行处理单元202的单个实例,但是可以包含并行处理单元202的任何数量的实例。例如,可以在单个插入式卡上提供并行处理单元202的多个实例,或可以将多个插入式卡互连。即使所述不同实例具有不同数量的处理核、不同量的本地并行处理器存储器和或其他配置差异,并行处理单元202的不同实例也可以配置成互操作。例如且在一个实施例中,并行处理单元202的一些实例可以包含相对于其他实例的更高精度浮点单元。合并并行处理单元202或并行处理器200的一个或多个实例的系统可以以多种配置和形状因数formfactor来实现,包含但不限于桌上型、膝上型、或手持式个人计算机、服务器、工作站、游戏控制台和或嵌入式系统。[0053]图2B是根据实施例的分区单元220的框图。在一个实施例中,分区单元220是图2A的分区单元220A-220N中的一个的实例。如所图示,分区单元220包含L2高速缓存221、帧缓冲器接口225和ROP226光栅操作单元)。L2高速缓存221是读取写入高速缓存,其配置成执行从存储器交叉开关216和ROP226接收的加载和存储操作。由L2高速缓存221将读未命中(readmiss和紧急回写请求输出到帧缓冲器接口225以供处理。也可以经由帧缓冲器接口225将脏更新发送到帧缓冲器以供机会处理。在一个实施例中,帧缓冲器接口225与并行处理器存储器中的存储器单元诸如,图2的存储器单元224A-224N例如,在并行处理器存储器222内)中的一个进行接口。[0054]在图形应用中,ROP226是执行诸如模板印刷(stencil、z测试、混合、和诸如此类的光栅操作的处理单元。随后ROP226输出存储在图形存储器中的处理的图形数据。在一些实施例中,ROP226包含压缩逻辑,该压缩逻辑用来压缩写入到存储器的z或颜色数据,并且解压缩从存储器读取的z或颜色数据。在一些实施例中,ROP226被包含在每个处理集群例如,图2的集群214A-214N内而不是分区单元220内。在此种实施例中,通过存储器交叉开关216传输针对像素数据的读取和写入请求,而不是像素片段数据。处理的图形数据可以显示在显示装置诸如图1的一个或多个显示装置110中的一个上,被路由以用于由(一个或多个处理器102进一步处理,或者被路由以用于由图2A的并行处理器200内的处理实体中的一个进一步处理。[0055]图2C是根据实施例的并行处理单元内的处理集群214的框图。在一个实施例中,处理集群是图2的处理集群214A-214N中的一个的实例。处理集群214可以配置成并行执行许多线程,其中,术语“线程”是指在特定的一组输入数据上执行的特定程序的实例。在一些实施例中,在不提供多个独立指令单元的情况下,使用单指令多数据SIMD指令发布技术以支持对大量线程的并行执行。在其他实施例中,使用配置成将指令发布到处理集群中的每一个内的一组处理引擎的公共指令单元,使用单指令多线程snm技术以支持大量一般同步的线程的并行执行。不同于SMD执行制度其中,所有处理引擎通常执行相同的指令),SMT执行允许不同线程更容易遵循通过给定线程程序的有分歧的执行路径。本领域技术人员将理解,sn®处理制度表示snrr处理制度的功能子集。[0056]可以经由流水线管理器232来控制处理集群214的操作,所述流水线管理器将处理任务分布到SMT并行处理器。流水线管理器232从图2的调度器210接收指令,并且经由图形多处理器234和或纹理单元236来管理那些指令的执行。所图示的图形多处理器234是SMT并行处理器的示例性实例。然而,不同架构的各种类型的SMT并行处理器可被包含在处理集群214内。图形多处理器234的一个或多个实例可以被包含在处理集群214内。图形多处理器234可以处理数据,并且数据交叉开关datacrossbar240可以用来将处理的数据分布到多个可能目的地包含其他着色器单元)中的一个。流水线管理器232可以通过指定要经由数据交叉开关240来分布的处理的数据的目的地来促进处理的数据的分布。[0057]处理集群214内的每一个图形多处理器234都可以包含相同的一组功能执行逻辑例如,算术逻辑单元、加载-存储单元等)。可以以流水线化方式pipelinedmanner来配置功能执行逻辑,在流水线化方式中,在先前的指令完成之前,可发布新指令。功能执行逻辑支持多种多样的操作,包含整数和浮点算术、比较操作、布尔操作、位移位(bit-shifting和各种代数函数的计算。在一个实施例中,可以利用相同功能单元硬件来执行不同操作,并且可以存在功能单元的任何组合。[0058]传送至处理集群214的指令构成线程。跨一组并行处理引擎而执行的一组线程是线程群组。线程群组对不同的输入数据执行相同程序。可以将线程群组内的每一个线程分配给图形多处理器234内的不同处理引擎。线程群组可包含比图形多处理器234内的处理引擎的数量更少的线程。当线程群组包含比处理引擎的数量更少的线程时,处理引擎中的一个或多个在其中那个线程群组正在被处理的周期期间可以是空闲的。线程群组也可包含比图形多处理器234内的处理引擎的数量更多的线程。当线程群组包含比图形多处理器234内的处理引擎的数量更多的线程时,处理可以在连续时钟周期内执行。在一个实施例中,可在图形多处理器234上并发地执行多个线程群组。[0059]在一个实施例中,图形多处理器234包含用来执行加载和存储操作的内部高速缓存存储器。在一个实施例中,图形多处理器234可以放弃内部高速缓存,并且使用处理集群214内的高速缓存存储器例如,Ll高速缓存308。每个图形多处理器234还有权访问在所有处理集群214中共享并且可用来在线程之间传送数据的分区单元(例如,图2的分区单元220A-220N内的L2高速缓存。图形多处理器234还可访问芯片外全局存储器,所述芯片外全局存储器可以包含本地并行处理器存储器和或系统存储器中的一个或多个。可将在并行处理单元202外部的任何存储器用作全局存储器。实施例(其中处理集群214包含图形多处理器234的多个实例可以共享公共指令和数据,所述公共指令和数据可存储在Ll高速缓存308中。[0060]每个处理集群214可包含MMU245存储器管理单元),所述MMU配置成将虚拟地址映射到物理地址中。在其他实施例中,MMU245的一个或多个实例可驻留在图2的存储器接口218内。MMU245包含:一组页表条目(PTE,用来将图块更多地讨论分块tiling的虚拟地址映射到物理地址;以及可选地高速缓存行索引。MMU245可包含可驻留在图形多处理器234或Ll高速缓存或处理集群214内的地址转换后备缓冲器TLB或高速缓存。物理地址被处理以分布表面数据访问局域性(locality,从而允许在分区单元之中高效的请求交织。尚速缓存行索引可用来确定针对尚速缓存行的请求是命中还是未命中。[0061]在图形和计算应用中,处理集群214可被配置使得每个图形多处理器234耦合至纹理单元236以用于执行纹理映射操作,例如确定纹理样本位置、读取纹理数据和过滤纹理数据。根据需要,从内部纹理Ll高速缓存未示出)或在一些实施例中从图形多处理器234内的Ll高速缓存读取纹理数据,并且从L2高速缓存、本地并行处理器存储器或系统存储器获取所述纹理数据。每个图形多处理器234将处理的任务输出到数据交叉开关240以将处理的任务提供给另一个处理集群214,以供进一步处理或以经由存储器交叉开关216将处理的任务存储在L2高速缓存、本地并行处理器存储器或系统存储器中。preROP242例如,预光栅操作单元配置成从图形多处理器234接收数据、将数据导引到ROP单元,所述ROP单元可与如本文描述的分区单元例如,图2的分区单元220A-220N位于一起。preROP242单元可以执行针对颜色混合的优化、组织像素颜色数据和执行地址转换。[0062]将领会的是,本文描述的核架构是说明性的,并且变化和修改是有可能的。任何数量的处理单元例如,图形多处理器234、纹理单元236、preR0P242等可被包含在处理集群214内。此外,虽然仅示出了一个处理集群214,但是如本文描述的并行处理单元可以包含处理集群214的任何数量的实例。在一个实施例中,每个处理集群214可以配置成使用单独且截然不同的处理单元、Ll高速缓存等独立于其他处理集群214来操作。[0063]图2D示出了根据一个实施例的图形多处理器234。在此种实施例中,图形多处理器234与处理集群214的流水线管理器232耦合。图形多处理器234具有执行流水线,其包含但不限于:指令高速缓存252、指令单元254、地址映射单元256、寄存器堆258、一个或多个通用图形处理单元GPGPU核262和一个或多个加载存储单元266APGPU核262和加载存储单元266经由存储器和高速缓存互连268与高速缓存存储器272和共享存储器270耦合。[0064]在一个实施例中,指令高速缓存252从流水线管理器232接收待执行的指令流。所述指令被高速缓存在指令高速缓存252中,并且由指令单元254分派以供执行。指令单元254可以将指令分派为线程群组(例如,线程束warp,其中线程群组的每个线程被指派给GPGPU核262内的不同执行单元。指令可以通过指定统一地址空间内的地址来访问本地、共享或全局地址空间中的任何。地址映射单元256可以用来将统一地址空间中的地址转换成可以由加载存储单元266访问的截然不同的存储器地址。[0065]寄存器堆258为图形多处理器324的功能单元提供一组寄存器。寄存器堆258为连接到图形多处理器324的功能单元例如,GPGPU核262、加载存储单元266的数据路径的操作数提供临时存储。在一个实施例中,在所述功能单元中的每一个之间划分寄存器堆258,使得每个功能单元分配有寄存器堆258的专用部分。在一个实施例中,在由图形多处理器324执行的不同线程束之间划分寄存器堆258。[0066]GPGPU核262可以各自包含浮点单元FPU和或整数算术逻辑单元ALU,所述FPU和整数ALU用来执行图形多处理器324的指令。根据实施例,GPGPU核262可以在架构上是类似的,或可以在架构上是不同的。例如且在一个实施例中,GPGPU核262的第一部分包含单精度FPU和整数ALU,而GPGPU核的第二部分包含双精度FPU。在一个实施例中,FPU可以针对浮点算术来实现IEEE754-2008标准,或能够实现可变精度浮点算术。图形多处理器324可以另外包含一个或多个固定功能或特殊功能单元以执行特定功能诸如,复制矩形或像素混合操作)。在一个实施例中,GPGPU核中的一个或多个也可以包含固定或特殊功能逻辑。[0067]存储器和高速缓存互连268是互连网络,其将图形多处理器324的功能单元中的每一个连接到寄存器堆258并连接到共享存储器270。在一个实施例中,存储器和高速缓存互连268是交叉开关互连,其允许加载存储单元266在共享存储器270与寄存器堆258之间实现加载和存储操作。寄存器堆258可以以与GPGPU核262相同的频率来操作,因此在GPGPU核262与寄存器堆258之间的数据传送是非常低等待时间的。共享存储器270可以用来能够实现在图形多处理器324内的功能单元上执行的线程之间的通信。高速缓存存储器272可以用作例如数据高速缓存,以便对功能单元与纹理单元236之间通信的纹理数据进行高速缓存。共享存储器270也可以用作经高速缓存的受管理的程序。除了在高速缓存存储器272内存储的经自动地高速缓存的数据之外,在GPGPU核262上执行的线程还可以在共享存储器内以编程方式存储数据。[0068]图3A-3B图示了根据实施例的附加图形多处理器。所图示的图形多处理器325、350是图2C的图形多处理器234的变体。所图示的图形多处理器325、350可以被配置为能够同时执行大量执行线程的流传送多处理器SM。[0069]图3A示出了根据附加实施例的图形多处理器325。图形多处理器325相对于图2D的图形多处理器234包含执行资源单元的多个附加实例。例如,图形多处理器325可以包含指令单元332A-332B、寄存器堆334A-334B和一个或多个纹理单元344A-344B的多个实例。图形多处理器325还包含多组图形或计算执行单元(例如,GPGPU核336A-336B、GPGHJ核337A-337B、GPGPU核338A-338B和多组加载存储单元340A-340B。在一个实施例中,执行资源单元具有公共指令高速缓存330、纹理和或数据高速缓存存储器342以及共享存储器346。各种部件可以经由互连结构327通信。在一个实施例中,互连结构327包含一个或多个交叉开关crossbarswitch以能够实现图形多处理器325的各种部件之间的通信。[0070]图3B示出了根据附加实施例的图形多处理器350。图形处理器包含多组执行资源356A-356D,其中,每一组执行资源包含多个指令单元、寄存器堆、GPGPU核和加载存储单元,如图2D和图3A中所图示。执行资源356A-356D可以与一个或多个纹理单元360A-360D—致地工作以用于纹理操作,同时共享指令高速缓存354和共享存储器362。在一个实施例中,执行资源356A-356D可以共享指令高速缓存354和共享存储器362以及纹理和或数据高速缓存存储器358A-358B的多个实例。各种部件可以经由类似于图3A的互连结构327的互连结构352来通信。[0071]本领域技术人员将理解,图I、2A-2D以及3A-3B中所描述的架构就本实施例的范围而言是描述性的而非限制性的。因此,在不背离本文描述的实施例的范围的情况下,本文描述的技术可在任何正确配置的处理单元上实现,所述处理单元包含但不限于一个或多个移动应用处理器、一个或多个桌上型计算机或服务器中央处理单元CPU包含多核CPU、一个或多个并行处理单元诸如,图2的并行处理单元202以及一个或多个图形处理器或专用处理单元。[0072]在一些实施例中,如本文描述的并行处理器或GPGPU通信地耦合至主机处理器核以加速图形操作、机器学习操作、模式分析操作和各种通用GPUGPGPU功能。GPU可通过总线或其他互连例如,诸如PCIe或NVLink的高速互连通信地耦合至主机处理器核。在其他实施例中,GPU可集成在与所述核相同的封装或芯片上,并且通过内部处理器总线互连即,在所述封装或芯片的内部通信地耦合至所述核。不管其中连接GPU的方式,处理器核都可采取工作描述符中所包含的命令指令的序列的形式将工作分配给GPUt3GPU然后使用专用的电路系统逻辑来高效地处理这些命令指令。[0073]用于GPU至主机处理器互连的技术图4A图示了示例性架构,其中多个GPU410-413通过高速链路440-443例如,总线、点对点互连等通信地耦合至多个多核处理器405-406。在一个实施例中,取决于实现,高速链路440-443支持4GBs、30GBs、80GBs或更高的通信吞吐量。可使用各种互连协议,包含但不限于PCIe4.0或5.0以及NVLink2.0。然而,本发明的基本原理不限于任何特定通信协议或吞吐量。[0074]另外,在一个实施例中,GPU410-413中的两个或更多个通过高速链路444-445互连,所述高速链路可使用与用于高速链路440-443的协议链路相同或不同的协议链路来实现。类似地,多核处理器405-406中的两个或更多个可通过高速链路433相连接,所述高速链路433可以是以20GBs、30GBs、120GBs或更高来操作的对称多处理器SMP总线。可替代地,图4A中所示的各种系统部件之间的所有通信可使用相同协议链路例如,通过公共互连结构来取得。然而,如所提到,本发明的基本原理不限于任何特定类型的互连技术。[0075]在一个实施例中,每个多核处理器405-406分别经由存储器互连430-431通信地耦合至处理器存储器401-402,并且每个GPU410-413分别通过GPU存储器互连450-453通信地耦合至GPU存储器420-423。存储器互连430-431以及450-453可利用相同或不同的存储器访问技术。通过示例且非限制的方式,处理器存储器401-402和GPU存储器420-423可以是易失性存储器,诸如动态随机存取存储器DRAM包含堆叠式DRAM、图形DDRSDRAMGDDR例如,GDDR5、GDDR6或高带宽存储器HBM,和或可以是非易失性存储器,诸如3DXPoint或Nano-Ram。在一个实施例中,存储器的某一部分可以是易失性存储器,并且另一部分可以是非易失性存储器例如,使用两级存储器2LM分层)。[0076]如下文所描述,虽然各种处理器405-406和GPU410-413可以分别物理地耦合至特定存储器401-402、420-423,但是可实现统一存储器架构,其中相同虚拟系统地址空间(也称为“有效地址”空间)被分布在所有各个物理存储器之中。例如,处理器存储器401-402可各自包括64GB的系统存储器地址空间,并且GPU存储器420-423可各自包括32GB的系统存储器地址空间(在本示例中产生总共256GB的可寻址存储器)。[0077]图4B图示了根据一个实施例的针对多核处理器407与图形加速模块446之间的互连的附加细节。图形加速模块446可包含集成在线卡上的一个或多个GPU芯片,所述线卡经由高速链路440耦合至处理器407。可替代地,图形加速模块446可集成在与处理器407相同的封装或芯片上。[0078]所图示的处理器407包含多个核460A-460D,其各自具有转换后备缓冲器translationlookasidebuffer461A-461D和一个或多个高速缓存462A-462D。所述核可包含用于执行指令和处理数据的各种其他部件例如,指令获取单元、分支预测单元、解码器、执行单元、重排序缓冲器等),其未被图示以避免使本发明的基本原理模糊。高速缓存462A-462D可包括1级LI和2级L2高速缓存。另外,一个或多个共享的高速缓存426可被包含在高速缓存分层中并且由多组核460A-460D共享。例如,处理器407的一个实施例包含24个核,其各自具有其自身的Ll高速缓存、十二个共享的L2高速缓存和十二个共享的L3高速缓存。在本实施例中,L2和L3高速缓存中的一个由两个邻近的核共享。处理器407和图形加速器集成模块446与系统存储器441连接,所述系统存储器441可包含处理器存储器401-402〇[0079]通过一致性总线464经由核间通信来维持存储在各种高速缓存462A-462D、456和系统存储器441中的数据和指令的一致性。例如,每个高速缓存可具有与其相关联的高速缓存一致性逻辑电路系统以响应于到特定高速缓存行的检测到的读取或写入来通过一致性总线464进行通信。在一个实现中,通过一致性总线464来实现高速缓存监听协议,以监听高速缓存访问。高速缓存监听一致性技术是被本领域技术人员良好理解的,并且此处将不详细描述以避免使本发明的基本原理模糊。[0080]在一个实施例中,代理电路425将图形加速模块446通信地耦合至一致性总线464,从而允许图形加速模块446作为核的对等物来参与高速缓存一致性协议。特别地,接口435提供通过高速链路440例如,PCIe总线、NVLink等至代理电路425的连接性,并且接口437将图形加速模块446连接到链路440。[0081]在一个实现中,加速器集成电路436代表图形加速模块446的多个图形处理引擎431、432、N来提供高速缓存管理、存储器访问、上下文管理和中断管理服务。图形处理引擎431、432、N可各自包括单独的图形处理单元GPU。可替代地,图形处理引擎431、432、N可包括GPU内不同类型的图形处理引擎,诸如图形执行单元、媒体处理引擎例如,视频编码器解码器)、采样器和块图传送blit引擎。换句话说,图形加速模块可以是具有多个图形处理引擎431-432、N的GPU,或图形处理引擎431-432、N可以是集成在公共封装、线卡或芯片上的个别GHJ。[0082]在一个实施例中,加速器集成电路436包含存储器管理单元MMU439以用于执行各种存储器管理功能,诸如虚拟至物理存储器转换也称为有效至真实存储器转换和用于访问系统存储器441的存储器访问协议。MMU439还可包含转换后备缓冲器TLB未示出)以用于高速缓存虚拟有效至物理真实地址转换。在一个实现中,高速缓存438存储命令和数据以供由图形处理引擎431-432、N进行高效访问。在一个实施例中,存储在高速缓存438和图形存储器433-434、N中的数据与核高速缓存462A-462D、456以及系统存储器411保持一致。如所提到,这可经由代理电路425来取得,所述代理电路425代表高速缓存438和存储器433-434、N来参与高速缓存一致性机制(例如,将与处理器高速缓存462A-462D、456上的高速缓存行的修改访问有关的更新发送到高速缓存438,以及从高速缓存438接收更新)。[0083]一组寄存器445存储用于由图形处理引擎431-432、N执行的线程的上下文数据,并且上下文管理电路448管理线程上下文。例如,上下文管理电路448可在上下文切换期间执行保存和恢复操作以保存和恢复各种线程的上下文例如,其中,第一线程被保存并且第二线程被存储,使得可以由图形处理引擎来执行第二线程)。例如,在上下文切换时,上下文管理电路448可将当前寄存器值存储到存储器中指派的区域例如,由上下文指针标识的)。然后,其可在返回到上下文时恢复所述寄存器值。在一个实施例中,中断管理电路447接收并处理从系统装置接收的中断。[0084]在一个实现中,由MMU439将来自图形处理引擎431的虚拟有效地址转换成系统存储器411中的真实物理地址。加速器集成电路436的一个实施例支持多个(例如,4个、8个、16个)图形加速器模块446和或其他加速器装置。图形加速器模块446可专用于在处理器407上执行的单个应用,或可在多个应用之间共享。在一个实施例中,呈现虚拟化的图形执行环境,其中与多个应用或虚拟机VM共享图形处理引擎431-432、N的资源。所述资源可被再分成“切片”,其基于与不同的VM和或应用相关联的处理要求和优先权来被分配给所述VM和或应用。[0085]因此,加速器集成电路充当到图形加速模块446的系统的桥,并且提供地址转换和系统存储器高速缓存服务。另外,加速器集成电路436可为主机处理器提供虚拟化设施,以管理中断和存储器管理、图形处理引擎的虚拟化。[0086]由于图形处理引擎431-432、N的硬件资源被显式映射到由主机处理器407所见的真实地址空间,所以任何主机处理器都可以使用有效地址值来直接寻址这些资源。在一个实施例中,加速器集成电路436的一个功能是图形处理引擎431-432、N的物理分离,使得它们对系统表现为独立单元。[0087]如所提到,在所图示的实施例中,一个或多个图形存储器433_434、M分别耦合至图形处理引擎431-432、N中的每一个。图形存储器433-434、M存储正由图形处理引擎431-432、N中的每一个处理的指令和数据。图形存储器433-434、M可以是易失性存储器,诸如DRAM包含堆叠式DRAM、⑶DR存储器例如,GDDR5、⑶DR6或HBM,和或可以是非易失性存储器,诸如3DXPoint或Nano-Ram。[0088]在一个实施例中,为减少链路440上的数据业务,使用偏置技术以确保存储在图形存储器433-434、M中的数据是将被图形处理引擎431-432、N使用最频繁并且优选地不被核460A-460D使用(至少不是频繁地)的数据。类似地,偏置机制试图将由核且优选地不是图形处理引擎431-432、N所需的数据保存在系统存储器411和所述核的高速缓存462A-462D、456内。[0089]图4C图示了另一个实施例,其中加速器集成电路436被集成在处理器407内。在本实施例中,图形处理引擎431-432、N经由接口437和接口435再次,其可利用任何形式的总线或接口协议通过高速链路440来直接通信到加速器集成电路436。加速器集成电路436可执行与关于图4B所描述的那些操作相同的操作,但考虑到其与一致性总线462和高速缓存462A-462D、426的紧密接近性而潜在地处于更高的吞吐量。[0090]—个实施例支持不同的编程模型,包含专用进程编程模型(没有图形加速模块虚拟化和共享的编程模型具有虚拟化)。后者可包含由加速器集成电路436控制的编程模型和由图形加速模块446控制的编程模型。[0091]在专用进程模型的一个实施例中,图形处理引擎431-432、N在单一操作系统下专用于单个应用或进程。单个应用可以将其他应用请求汇集funnel到图形引擎431-432、N,从而在VM分区内提供虚拟化。[0092]在专用进程编程模型中,可由多个VM应用分区来共享图形处理引擎431-432、N。共享的模型需要系统管理程序来虚拟化图形处理引擎431-432、N,以允许由每个操作系统进行访问。针对无管理程序的单一分区系统,图形处理引擎431-432、N由操作系统拥有。在两种情况下,操作系统可以虚拟化图形处理引擎431-432、N以提供对每个进程或应用的访问。[0093]针对共享的编程模型,图形加速模块446或个别图形处理引擎431-432、N使用进程句柄来选择进程元素processelement。在一个实施例中,进程元素存储在系统存储器411中,并且可使用本文描述的有效地址至真实地址转换技术来寻址。进程句柄可以是在向图形处理引擎431-432、N登记其上下文(S卩,调用系统软件以将进程元素添加到进程元素链表时被提供给主机进程的实现特定的值。进程句柄的较低的16位可以是进程元素链表内的进程元素的偏移。[0094]图4D图示了示例性加速器集成切片490。如本文所使用,“切片”包括加速器集成电路436的处理资源的指定部分。系统存储器411内的应用有效地址空间482存储进程元素483。在一个实施例中,响应于来自处理器407上执行的应用480的GPU调用481来存储进程元素483。进程元素483包含对应的应用480的进程状态。包含在进程元素483中的工作描述符WD484可以是由应用请求的单个作业,或可包含指向作业队列的指针。在后一种情况下,WD484是指向应用的地址空间482中的作业请求队列的指针。[0095]图形加速模块446和或个别图形处理引擎431-432、N可以由系统中的所有进程或进程子集共享。本发明的实施例包含用于设置进程状态并将WD484发送到图形加速模块446以在虚拟化环境中开始作业的基础设施。[0096]在一个实现中,专用进程编程模型是实现特定的。在这个模型中,单个进程拥有图形加速模块446或个别图形处理引擎431。由于图形加速模块446由单个进程拥有,所以在指派图形加速模块446时,管理程序针对拥有的分区来初始化加速器集成电路436并且操作系统针对拥有的进程来初始化加速器集成电路436。[0097]在操作中,加速器集成切片490中的WD获取单元491获取下一个WD484,所述下一个WD484包含待由图形加速模块446的图形处理引擎中的一个来完成的工作的指示。来自WD484的数据可存储在寄存器445中,并且由如所图示的MMU439、中断管理电路447和或上下文管理电路446使用。例如,MMU439的一个实施例包含用于访问OS虚拟地址空间485内的段页表486的段页行走电路系统walkcircuitry。中断管理电路447可处理从图形加速模块446接收的中断事件492。当执行图形操作时,由MMU439将由图形处理引擎431-432、N所生成的有效地址493转换为真实地址。[0098]在一个实施例中,针对每个图形处理引擎431-432、N和或图形加速模块446复制相同的一组寄存器445,并且其可由管理程序或操作系统来初始化。这些复制的寄存器中的每一个可被包含在加速器集成切片490中。表1中示出了可由管理程序来初始化的示例性寄存器。[0099]表1-管理程序初始化的寄存器表2中示出了可由操作系统来初始化的示例性寄存器。[0100]表2-操作系统初始化的寄存器在一个实施例中,每个WD484是特定于特定图形加速模块446和或图形处理引擎431-432、N的。它包含图形处理引擎431-432、N完成其工作所需的全部信息,或它可以是指向其中应用已设立待完成的工作的命令队列的存储器位置的指针。[0101]图4E图示了共享模型的一个实施例的附加细节。本实施例包含其中存储了进程元素列表499的管理程序真实地址空间498。管理程序真实地址空间498可经由管理程序496来访问,所述管理程序496虚拟化用于操作系统495的图形加速模块引擎。[0102]共享的编程模型允许来自系统中所有分区或分区子集的所有进程或进程子集使用图形加速模块446。存在两个编程模型,其中,图形加速模块446由多个进程和分区共享:时间切片共享和图形定向共享graphicsdirectedshared。[0103]在这个模型中,系统管理程序496拥有图形加速模块446,并且使其功能可用于所有操作系统495。为使图形加速模块446支持由系统管理程序496进行的虚拟化,图形加速模块446可遵守以下要求:1应用的作业请求必须是自主的(S卩,无需在作业之间保持状态),或图形加速模块446必须提供上下文保存和恢复机制。2由图形加速模块446保证在指定时间量内完成应用的作业请求包含任何转换故障),或图形加速模块446提供抢占作业的处理的能力。3当在定向共享编程模型中操作时,必须保证图形加速模块446在进程之间的公平性。[0104]在一个实施例中,针对共享模型,需要应用480用图形加速模块446类型、工作描述符WD、权限掩蔽寄存器AMR值和上下文保存恢复区域指针CSRP来进行操作系统495系统调用。图形加速模块446类型描述了用于系统调用的针对的加速函数。图形加速模块446类型可以是系统特定的值。WD专门针对图形加速模块446被格式化,并且可以采取图形加速模块446命令、指向用户定义的结构的有效地址指针、指向命令队列的有效地址指针或用来描述待由图形加速模块446完成的工作的任何其他数据结构的形式。在一个实施例中,AMR值是用来用于当前进程的AMR状态。被传递到操作系统的值类似于设定AMR的应用。如果加速器集成电路436和图形加速模块446实现不支持用户权限掩蔽覆盖寄存器UAMORJP么操作系统可在在管理程序调用中传递AMR之前将当前UAMOR值应用于AMR值。可选地,管理程序496可在将AMR放到进程元素483中之前应用当前权限掩蔽覆盖寄存器AMOR值。在一个实施例中,CSRP是寄存器445中的一个,其包含应用的地址空间482中的区域的有效地址以用于使图形加速模块446保存和恢复上下文状态。如果不需要在作业之间保存状态或当作业被抢占时,这个指针是可选的。上下文保存恢复区域可以是固定的Pirmed系统存储器。[0105]在接收到系统调用时,操作系统495可验证应用480已注册并且已被给予使用图形加速模块446的权限。然后,操作系统495用表3中所示的信息来调用管理程序496。[0106]表3-0S至管理程序调用参数在接收到管理程序调用时,管理程序496验证操作系统495已注册并且已被给予使用图形加速模块446的权限。然后,管理程序496将进程元素483放入对应的图形加速模块446类型的进程元素链表中。进程元素可包含表4中所示的信息。[0107]表4-进程元素信息_在一个实施例中,管理程序初始化多个加速器集成切片490寄存器445。[0108]如图4F中所图示,本发明的一个实施例采用经由公共虚拟存储器地址空间可寻址的统一存储器,所述公共虚拟存储器地址用来访问物理处理器存储器401-402和GPU存储器420-423。在这种实现中,在GPU410-413上执行的操作利用相同的虚拟有效存储器地址空间来访问处理器存储器401-402且反之亦然,由此简化可编程性。在一个实施例中,虚拟有效地址空间的第一部分被分配给处理器存储器401,第二部分被分配给第二处理器存储器402,第三部分被分配给GHJ存储器420,等等。由此跨处理器存储器401-402和GPU存储器420-423中的每一个来分布整个虚拟有效存储器空间(有时称为有效地址空间),从而允许任何处理器或GPU来访问任何物理存储器用被映射到那个存储器的虚拟地址)。[0109]在一个实施例中,在MMU439A-439E中的一个或多个内的偏置一致性管理电路系统494A-494E确保主机处理器例如,405与GPU410-413的高速缓存之间的高速缓存一致性,并且实现指示其中应存储某些类型的数据的物理存储器的偏置技术。虽然图4F中图示了偏置一致性管理电路系统494A-494E的多个实例,但是可在一个或多个主机处理器405的MMU内和或在加速器集成电路436内实现偏置一致性电路系统。[0110]一个实施例允许使用共享虚拟存储器SVM技术来访问GPU附连的存储器420-423并将其映射为系统存储器的一部分,而不用经受与完全系统高速缓存一致性相关联的典型性能缺陷。将GHJ附连的存储器420-423作为系统存储器来访问而无繁重的高速缓存一致性开销overhead的能力为GPU卸载提供了有益的操作环境。这种安排允许主机处理器405软件来设置操作数和访问计算结果,而没有传统IODM数据拷贝的开销。此类传统拷贝涉及驱动器调用、中断和存储器映射ΙΑΚΜΜΙ0访问,其相对于简单的存储器访问来说全部都是低效的。同时,访问GPU附连的存储器420-423而无高速缓存一致性开销的能力对于卸载的计算的运行时间来说可以是关键的。在具有实质流传送写存储器业务的情况下,例如,高速缓存一致性开销可以显著减少由GPU410-413所见的有效写带宽。操作数设置的效率、结果访问的效率和GPU计算的效率在确定GPU卸载的有效性中全部都起到一定的作用。[0111]在一个实现中,由偏置跟踪器数据结构来驱动在GPU偏置与主机处理器偏置之间的选择。可使用偏置表,例如,其可以是每GPU附连的存储器页包含1或2位的页粒度结构即,被控制在存储器页的粒度)。可以在一个或多个GPU附连的存储器420-423的被偷的stoIen存储器范围中实现偏置表,其中在GPU410-413中具有或不具有偏置高速缓存例如,用来高速缓存偏置表的频繁最近使用的条目)。可替代地,可将整个偏置表维持在GPU内。[0112]在一个实现中,在实际访问GHJ存储器之前访问与每一次访问GHJ附连的存储器420-423相关联的偏置表条目,从而引起以下操作。首先,来自GPU410-413的在GPU偏置中发现其页的本地请求被直接转发到对应的GHJ存储器420-423。(例如,通过如以上讨论的高速链路将来自GPU的在主机偏置中发现其页的本地请求转发到处理器405。在一个实施例中,来自处理器405的在主机处理器偏置中发现所请求的页的请求完成像正常存储器读取那样的请求。可替代地,可以将涉及GPU偏置页的请求转发给GPU410-413。如果GPU当前未正在使用该页,则GHJ然后可以将该页转换成主机处理器偏置。[0113]可以由基于软件的机制、硬件辅助的基于软件的机制或针对有限一组情况纯粹基于硬件的机制来改变页的偏置状态。[0114]用于改变偏置状态的一个机制采用API调用(例如,OpenCL,其进而调用GPU的装置驱动器,所述装置驱动器进而发送消息或将命令描述符入队)到GPU,从而指导其改变偏置状态并且针对一些转变在主机中执行高速缓存转储清除操作。高速缓存转储清除操作对于从主机处理器405偏置转变到GPU偏置来说是需要的,但对于反向转变来说是不需要的。[0115]在一个实施例中,通过暂时渲染由主机处理器405不可高速缓存的GPU偏置页来维持高速缓存一致性。为了访问这些页,处理器405可请求来自GPU410的访问,这取决于实现而可或可不立即授予访问。因此,为减少处理器405与GPU410之间的通信,确保GPU偏置页是被GHJ所需但非被主机处理器405所需且反之亦然的那些页。[0116]图形处理流水线图5图示根据实施例的图形处理流水线500。在一个实施例中,图形处理器可以实现所图示的图形处理流水线500。所述图形处理器可以被包含在如本文描述的并行处理子系统诸如图2的并行处理器200内,在一个实施例中,其是图1的(一个或多个并行处理器112的变体。各种并行处理系统可以经由如本文描述的并行处理单元例如,图2的并行处理单元202的一个或多个实例来实现图形处理流水线500。例如,着色器单元例如,图3的图形多处理器234可配置成执行顶点处理单元504、曲面细分控制处理单元508、曲面细分评估处理单元512、几何处理单元516和片段像素处理单元524中的一个或多个的功能。数据组装器502,图元组装器506、514、518,曲面细分单元510,光栅化器522和光栅操作单元526的功能也可由处理集群(例如,图3的处理集群214内的其他处理引擎和对应的分区单元例如,图2的分区单元220A-220N来执行。还可使用用于一个或多个功能的专用处理单元来实现图形处理流水线500。在一个实施例中,可以由通用处理器例如,CPU内的并行处理逻辑来执行图形处理流水线500的一个或多个部分。在一个实施例中,图形处理流水线500的一个或多个部分可以经由存储器接口528来访问芯片上存储器例如,如图2中的并行处理器存储器222,所述存储器接口528可以是图2的存储器接口218的实例。[0117]在一个实施例中,数据组装器502是收集表面和图元的顶点数据的处理单元。数据组装器502随后将包含顶点属性的顶点数据输出至顶点处理单元504。顶点处理单元504是可编程执行单元,其执行顶点着色器程序,如由顶点着色器程序所指定那样来调亮lighting并变换顶点数据。顶点处理单元504读取存储在高速缓存、本地或系统存储器中的数据以供在处理顶点数据中使用,并且顶点处理单元504可被编程为将顶点数据从基于对象的坐标表示变换到世界空间坐标空间或归一化装置坐标空间。[0118]图元组装器506的第一实例从顶点处理单元504接收顶点属性。图元组装器506按需读取存储的顶点属性,并且构建图形图元以用于由曲面细分控制处理单元508来处理。图形图元包含如由各种图形处理应用编程接口(API所支持的三角形、线段、点、补片等等。[0119]曲面细分控制处理单元508将输入顶点视为用于几何补片的控制点。控制点是从来自补片例如,补片的基础)的输入表示变换到适合于由曲面细分评估处理单元512在表面评估中使用的表示。曲面细分控制处理单元508也可以计算几何补片的边缘的曲面细分因数。曲面细分因数应用于单个边缘,并且对与该边缘相关联的依赖于视图的细节等级进行量化。将曲面细分单元510配置成接收补片的边缘的曲面细分因数,并且将补片曲面细分成诸如线、三角形或四边形图元的多个几何图元,其被传送到曲面细分评估处理单元512。曲面细分评估处理单元512对再分的补片的参数化坐标进行操作以生成与几何图元相关联的每一个顶点的表面表不和顶点属性。[0120]图元组装器514的第二实例从曲面细分评估处理单元512接收顶点属性,按需读取存储的顶点属性,并且构建图形图元以用于由几何处理单元516来处理。几何处理单元516是可编程执行单元,其执行几何着色器程序以如由几何着色器程序所指定的那样来变换从图元组装器514所接收的图形图元。在一个实施例中,将几何处理单元516编程为将图形图元再分成一个或多个新图形图元,并且运算用来对新图形图元进行光栅化的参数。[0121]在一些实施例中,几何处理单元516可在几何流中增加或删除元素。几何处理单元516将指定新图形图元的参数和顶点输出到图元组装器518。图元组装器518从几何处理单元516接收参数和顶点,并且构建图形图元以用于由视口缩放、拣选和剪辑单元520来处理。几何处理单元516读取存储在并行处理器存储器或系统存储器中的数据以供在处理几何数据中使用。视口缩放、拣选和剪辑单元520执行剪辑、拣选和视口缩放,并将处理的图形图元输出到光栅化器522。[0122]光栅化器522可以执行深度拣选和其他基于深度的优化。光栅化器522还对新图形图元执行扫描转换以生成片段,并且将那些片段和相关联的覆盖数据输出到片段像素处理单元524。片段像素处理单元524是配置成执行片段着色器程序或像素着色器程序的可编程执行单元。片段像素处理单元524如由片段或像素着色器程序所指定的那样来变换从光栅化器522所接收的片段或像素。例如,可将片段像素处理单元524编程为执行包含但不限于纹理映射、着色、混合、纹理校正和透视校正的操作,以产生输出到光栅操作单元526的着色的片段或像素。片段像素处理单元524可以读取存储在并行处理器存储器或系统存储器中的数据以供在处理片段数据时使用。可将片段或像素着色器程序配置成在样本、像素、图块或其他粒度取决于为处理单元所配置的采样率着色。[0123]光栅操作单元526是处理单元,其执行包含但不限于模板印刷、z测试、混合和诸如此类的光栅操作,并将像素数据作为处理的图形数据输出,以存储在图形存储器例如,如图2中的并行处理器存储器222和或如图1中的系统存储器104中,以显示在所述一个或多个显示装置110上,或者供由一个或多个并行处理器112或所述一个或多个处理器102中的一个来进一步处理。在一些实施例中,将光栅操作单元526配置成压缩被写入到存储器的z或颜色数据,并且解压缩从存储器读取的z或颜色数据。[0124]如上所述,许多现有图形系统只保持架构状态数据以供在调度用于工作负荷的资源中使用,这可限制系统动态调整用于给定工作负荷的计算资源定大小的能力。为解决这些和其他问题,本文中描述的技术使例如图形系统的处理系统能够在每工作负荷基础上实现自适应计算资源定大小。[0125]图6是根据示例的可实现其中用来实现有效的多上下文线程分布的技术的架构的框图。参见图6,在一些示例中,图形处理单元600架构610耦合到由参考数字620A、620B,直达620N指示的多个流传送微处理器SMSMO、SMl,直达SMN。流传送微处理器SM可共同由参考数字620表示。[0126]流传送微处理器(SM620包括由参考数字622标识的也称为核的多个执行单元EU。在图6中描绘的示例中,每个流传送微处理器SM包括6个EU,但将领会的是,每个流传送微处理器SM620可包括更多或更少的EU622。此外,每个流传送微处理器SM620可包括至少一个高速缓存624。[0127]根据实施例,图7A和7B是流程图,其图示了在用来在数据处理系统中在每工作负荷基础上实现自适应计算大小的方法中的操作,并且图7C是在用来在数据处理系统中在每工作负荷基础上实现自适应计算大小的方法中的数据集的示意框图。在一些示例中,图7A-7B中描绘的操作可被实现为在一个或多个控制器中可执行的逻辑。在各种示例中,逻辑可被实现为在存储器中存储并且在处理器即,软件上可执行的逻辑指令。在其他示例中,逻辑可被精简成诸如在现场可编程门阵列FPGA中的可编程电路系统,或者精简成硬件中的固定电路系统,或其组合。[0128]参见图7A-7C,在操作710处,接收用于工作负荷的一个或多个帧。例如,一个或多个帧可在GPU600中被接收以用于处理,并且被指派到一个或多个SM620。在操作715处,确定用于工作负荷的计算资源参数。在一些示例中,在GPU600上执行的逻辑可确定要指派到工作负荷的执行单元622的数量。可替代地,或另外,逻辑可确定被指派到工作负荷的执行单元的一个或多个的操作状态例如,空闲,活跃中的至少一个。[0129]在操作720处,将在操作715中确定的计算资源参数与用于工作负荷的上下文数据关联存储。简略地参见图7C,在一些示例中,将来自各种EU760的计算资源参数和在工作负荷上下文存储器765中的工作负荷上下文数据关联存储。在一些示例中,工作负荷上下文存储器765可在例如SM620上的高速缓存624的本地高速缓存中被实现。[0130]在工作负荷中存储的计算资源参数可用来为对工作负荷的随后操作调度资源。参见图7B,在操作730处,接收用于工作负荷的一个或多个帧。例如,一个或多个随后的帧可在GPU600中被接收以用于处理。在操作735处,从工作负荷上下文存储器765检索在操作715中确定并且在操作720中存储在存储器中的用于工作负荷的计算资源参数。[0131]在操作740处,从工作负荷上下文存储器检索的计算资源参数用来对用于在操作730中接收的帧的计算资源进行上电和调度。简略地参见图7C,在一些示例中,从工作负荷上下文存储器765检索的计算资源参数被转发到调度器770,其可使用计算资源参数调度用于在操作730中接收的帧的计算资源。[0132]在操作745处,可更新在存储器中存储的计算资源参数。例如,可更新在工作负荷上下文存储器765中的计算资源参数以反映在操作740中指派的计算资源参数的当前状态。[0133]可为被接收以用于处理的每个新帧重复进行图8中描绘的操作。以这种方式,可动态修改在工作负荷上下文存储器765中存储的计算资源参数以反映用于工作负荷的当前资源分配条件。在完成工作负荷时,可删除在工作负荷上下文存储器765中的计算资源参数。[0134]因此,本文中描述的主题允许在图形处理系统中的硬件在每工作负荷的基础上自行调谐资源分配。例如,如果特定工作负荷反映在某个时间期内增大的资源消耗,则调度器可在实时基础上逐渐增大专用于传入帧的计算资源的量。调度器可监视由图形处理系统处理的帧的一个或多个性能参数。如果性能参数指示专用于帧的资源过多,则调度器可减少针对用于工作负荷的接下来的帧的资源。相反,如果性能参数指示专用于帧的资源不足,则调度器可增大针对用于工作负荷的接下来的帧的资源。[0135]功率部件图8图示了根据实施例的切换调节器的框图。在图8中示出的一个或多个切换调节器可被结合于本文中所讨论的各种系统中,以向一个或多个集成电路(IC芯片提供功率。虽然可以参考图8讨论具有单个电感器的电流停驻(current-parking切换调节器的单相phase,但是可以利用开合式电感器来实现电流停驻切换调节器的多个相中的一个或多个。此外,一个或多个电流停驻切换调节器具有或不具有开合式电感器)的组合可以与一个或多个常规电力转换装置一起使用,以将功率提供给负载例如,逻辑电路系统814。[0136]更特别地,图8图示了系统800,该系统800包含切换调节器有时被称为电流停驻切换调节器)。在各种实施例中,电流停驻切换调节器可以是多相切换调节器。多相控制单元802被耦合至多个相,其中每个相可以包含一个或多个上游相804和一个或多个下游相806。如所示,电源808被耦合至上游控制逻辑810其提供每个上游相中的当前控制机制)。在各种实现中可以使用不止一个上游控制逻辑。每个上游相可以包含电感器未示出),该电感器被耦合至相应的下游相。在实施例中,上游相可以每个包含一个或多个电感器。多相控制单元802可以配置任何活跃的上游控制逻辑810,例如以通过在上游相和下游相之间耦合的电感器生成电流。下游控制逻辑812可以被多相控制单元802配置成开、关,或进行切换以调节负载例如,逻辑电路系统814处的电压水平。继而,下游控制逻辑812可以被多相控制单元802配置成至少部分地基于Vmin最小电压和Vmax最大电压值将负载处的电压水平维持在范围内。[0137]在一个实施例中,(耦合在下游相和相应的上游相之间的)电感器可以被安置在包含负载814的半导体封装816外部。(未不出的)另一电感器可以被安置在封装816内部,例如以减少寄生电容。在一个实施例中,在封装816内部的电感器可以是经由一个或多个切换逻辑耦合至逻辑电路系统814的平面空芯电感器,所述一个或多个切换逻辑包含平面金属-氧化物半导体场效应晶体管MOSFET。此外,在各种实施例中,本文中所讨论的部件中的一个或多个例如,参考图8、9和或10,包含例如L3高速缓存、上游控制逻辑和或下游控制逻辑可被提供在衬底层中(例如,在半导体封装之间)、在集成电路管芯上、或在半导体封装的外部例如,在印刷电路板PCB上)。[0138]图9是根据一个或多个实施例的包含流传送多处理器902的系统900的框图。流传送多处理器可以包含能够每一时钟周期共同地发布多达32个指令的32个单指令、多线程SMT通道904,例如一个指令来自32个线程中的每个。取决于实现,可以存在更多或更少的通道,诸如64、128、256等。SIMT通道904可以继而包含一个或多个:算术逻辑单元ALU906、特殊函数单元SFU908、存储器单元MEM910、和或纹理单元TEX912。[0139]在一些实施例中,ALU906和或TEX单元912中的一个或多个可以是低能量或高容量的,例如,诸如参考项920和922所讨论的。例如,系统可将线程0-30的寄存器地址的100%映射到低能量部分,并且将线程31-127的寄存器地址的100%映射到高容量部分。作为另一示例,系统可将每个线程的寄存器的20%映射到低能量部分,并且将每个线程的寄存器的80%映射到高容量部分。此外,系统可基于运行时信息来确定每一线程分配的条目的数量。[0140]如图9中图示的,流传送多处理器902还包含寄存器堆914、调度器逻辑916例如,用于调度线程或线程组,或者二者)、以及共享存储器918,例如本地暂用(scratch存储装置。如本文中所讨论的,“线程组”是指以有序的(例如,顺序的或连续的)线程索引来分组的多个线程。通常,寄存器堆是指由诸如本文中所讨论的那些处理器的处理器包含图形处理器)的部件访问的寄存器的阵列。寄存器堆914包含低能量部分或结构920以及高容量部分或结构922。流传送多处理器902可被配置成使用针对低能量部分和高容量部分二者的单个逻辑命名空间来寻址寄存器堆914。[0141]在一些实施例中,系统可以包含可由系统上同时运行的线程共享的多个物理寄存器。这允许系统使用单个命名空间来实现灵活的寄存器映射方案。编译器然后可以将寄存器活(live范围分配给寄存器地址,并且编译器可使用寄存器分配机制来最小化或减少每一线程使用的寄存器的数量。在实施例中,多个活范围可被分配给同一寄存器地址,只要活范围不重叠。这允许例如在运行时间时和在指令已经被编译之后确定每一线程有多少条目将被分配在低能量部分与高容量部分中。例如,系统可将线程0-30的寄存器地址的100%映射到低能量部分,并且将线程31-127的寄存器地址的100%映射到高容量部分。作为另一示例,系统可将每个线程的寄存器的20%映射到低能量部分,并且将每个线程的寄存器的80%映射到高容量部分。系统可基于运行时信息来确定每一线程分配的条目的数量,所述运行时信息例如关于正在执行的线程组的数量,以及来自启动更多线程组或者给更小数量的线程组分配低能量部分中的更多空间的边际效益。[0142]图10图示了根据一个实施例的并行处理系统1000的框图。系统1000包含并行处理先前呈现的)子系统1002,该并行处理子系统1002继而包含一个或多个并行处理单元PPUPPU-O至PPU-P。每个PPU耦合至本地并行处理PP存储器例如,分别耦合到MEM-O至MEM-P。在一些实施例中,PP子系统系统1002可以包含P数量个PPUJPU-O1004和并行处理存储器1006可以使用诸如可编程处理器、专用集成电路ASIC或存储器装置的一个或多个集成电路装置来实现。[0143]参考图10,示出了可以在系统1000中用来管理功率的若干可选开关或连接1007。虽然示出了若干开关1007,但实施例不限于特别示出的开关,并且根据实现可以利用更多或更少的开关。这些连接开关1007可以用于时钟门控或一般功率门控。因此,项1007可以包含功率晶体管、管芯上开关、功率平面连接等中的一个或多个。在实施例中,在经由开关连接1007关闭到系统1000的一部分的功率之前,逻辑例如,微控制器、数字信号处理器、固件等可以确保操作的结果被提交例如,到存储器或被完成以维持正确性。[0144]此外,在一些实施例中,并行处理子系统1002中的PPU中的一个或多个是具有渲染流水线的图形处理器,其可被配置成执行各种任务,诸如本文关于其他图所讨论的那些。图形信息数据可以经由存储器桥1008与计算系统的其他部件包含系统1000的部件进行通信。可以经由共享总线和或一个或多个互连1010包含例如一个或多个直接或点对点链路传送数据。PHj-O1004可以访问其本地并行处理存储器1014其可以用作包含例如帧缓冲器的图形存储器)以存储和更新像素数据,将像素数据递送给显示装置诸如本文中所讨论的那些装置等。在一些实施例中,并行处理子系统1002可以包含作为图形处理器操作的一个或多个PPU,和操作以执行通用计算的一个或多个其他PPU可以是相同的或不同的,并且每个PPU可以有权访问其自己的专用并行处理存储器装置、非专用并行处理存储器装置,或者共享的存储器装置或高速缓存。[0145]在实施例中,由PPU执行的操作可以由一般被称为主处理器或处理器核的另一处理器或PPU中的一个控制。在一个实施例中,主处理器核可以将针对每个PPU的命令流写入到各种位置中的推缓冲器,诸如主系统存储器、高速缓存、或诸如本文中参考其他图所讨论的那些存储器的其他存储器。写入的命令然后可以由每个PPU读取并且相对于主处理器核的操作异步地执行。[0146]此外,如图10中所示,PPU-O包含前端逻辑1020,该前端逻辑1020可以包含输入输出(IO或10单元例如,以通过存储器桥1008与系统1000的其他部件进行通信和或主机接口(例如,其接收与处理任务相关的命令)。前端1020可以接收由主机接口读取的(例如来自推缓冲器的命令。前端1020继而将命令提供给工作调度单元1022,该工作调度单元1022将与该命令相关联的操作任务进行调度并分配给处理集群阵列或算术子系统1024以用于执行。[0147]如图10中所示,处理集群阵列1024可以包含一个或多个通用处理集群GPC单元例如,GPC-O1026,GPC-11028到GPC-M1030。每个GPC可能够同时执行大量例如,数百或数千线程,其中每个线程是程序的实例。在各种应用中,可以分配不同的GPC以用于处理不同类型的程序或者用于执行不同类型的计算。例如,在图形应用中,可以分配第一组GPC例如,包含一个或多个GPC单元)以执行曲面细分操作和产生针对补丁的图元拓扑,并且可分配第二组GPC例如,包含一个或多个GPC单元)以执行曲面细分着色以评估图元拓扑的补丁参数以及确定顶点位置和其他每一顶点属性。GPC的分配可以根据因为每个类型的程序或计算而出现的工作负荷而变化。[0148]另外,由工作调度单元1022分配的处理任务可以包含要被处理的数据的索引,所述数据诸如表面补丁数据、图元数据、顶点数据、像素数据和或定义要如何处理数据例如,要执行什么程序的状态参数和命令。工作调度单元1022可以被配置成获取与任务相对应的索引,或者可以从前端1020接收索引。前端1020还可以确保在发起由推缓冲器指定的处理之前将GPC配置成有效状态。[0149]在一个实施例中,通信路径1012是外围部件接口(PCI快速或PCI-e链路,其中专用通道可以被分配给每个PPU。也可使用其他通信路径。例如,与处理任务有关的命令可以被引导到主机接口1018,而与存储器操作例如,从并行处理存储器1014读取或写入到并行处理存储器1014有关的命令可以被引导到存储器交叉开关单元1032。[0150]在一些实施例中,并行处理子系统1002可以被实现为插入到计算机系统或服务器诸如刀片服务器的扩充槽中的插入式卡。在其他实施例中,PPU可以被集成在具有诸如存储器桥1008、IO桥等的总线桥的单个芯片上。在还有其他实施例中,PPU的一些部件或全部部件可以被集成在具有一个或多个其他处理器核、存储器装置、高速缓存等的单个集成电路芯片上。[0151]此外,关于现今的现代处理器的主要问题中的一个是它们已经在大约4GHz处达到时钟速率限制。这时候,它们对于当前技术而言只是生成太多热量,并且需要特殊且昂贵的冷却解决方案。这是因为当我们增加时钟速率时,功率消耗上升。事实上,如果你固定电压,贝IJCPU的功率消耗近似为其时钟速率的立方。使这更糟糕的是,当你增加由CPU生成的热量时,对于相同的时钟速率,功率消耗由于硅的属性而也增加。功率到热量的该转换是对能量的完全浪费。该越来越低效的功率使用最终意味着你不能够充分地为处理器供电或冷却处理器,并且你达到装置或其外壳的热极限,所谓的功率壁。[0152]面临不能增加时钟速率,为了制造永远更快的处理器,处理器制造商不得不提出另一策略。他们已经被迫采取向处理器添加更多核的路线,而不是不断地尝试增加CPU时钟速率和或每一时钟通过指令级别的并行性来提取更多指令。[0153]此外,在设计不断运行的机器时,功率使用是一个重要考虑。常常,在仅几年内运行超级计算机的操作成本可以等于起初安装该超级计算机的成本。当然,在此类机器的寿命内运行此类机器的成本将容易地超过原始安装成本。功率使用来自部件它们本身,但也来自允许此类计算机进行操作所必需的冷却。即使一个具有四个GPU的高端工作站也需要关于如何保持其冷却的某一规划。除非你生活在寒冷的气候中,并且可以将电脑放逐到寒冷的地方,否则它将会很好地为你加热办公室。将多个此类机器放入一个房间中,并且那个房间中的空气温度将会非常迅速地开始升高至相当不可接受的水平。[0154]因此,在安装空气调节系统上花费大量的功率以确保计算机保持冷却并且可以运行而不产生错误。这在夏天温度可以达到85F30C或更高时尤其如此。运行空气调节是昂贵的。应该给出对如何最好地冷却此种系统以及热能是否可以以某个方式被重新使用的有意义的思考。以这种方式,液体冷却系统是非常有效的,因为液体可以被循环通过热交换器并且进入常规的加热系统而没有两种液体曾经混合的任何机会。随着自然资源的不断增加的成本,以及要被视为绿色的公司上的日益增加的压力,仅仅将热量从窗户抽出不再是经济上或社会上可接受的。[0155]液体冷却系统在回收利用废热能量方面提供了有趣的选项。虽然空气冷却系统只可以用来加热它所位于的直接区域,但可以将来自基于液体的冷却剂的热量栗送到别处。通过使用热交换器,可以使用常规的水来冷却冷却剂。这然后可以被栗送到加热系统中或者甚至用来加热室外游泳池或其他大型水体。在多个此类系统被安装诸如在公司或大学计算机中心中)的情况下,使用此废热能量来减少组织中的其他地方的供暖费可以是真有意义的。[0156]许多超级计算机安装使它们本身精确地坐落在主要河流的旁边,因为它们需要现成的冷水供应。其他使用大型冷却塔来驱散废热能量。两个解决方案都不是特别环保的。已经为能量付费了,当它可以如此容易地用于加热时,简单地丢弃它是没有意义的。当考虑到功率使用时,我们还必须记得程序设计在功率消耗中实际上扮演着非常重要的角色。在功率方面,最昂贵的操作是将数据移动到芯片上和将数据移出芯片。因此,仅有效利用装置内的寄存器和共享存储器就极大地减少功率使用。如果你还考虑到写得好的程序的总执行时间比写得不好的程序的总执行时间小得多,则你可以看到,重写旧程序以利用诸如较大共享存储器的新特征甚至可以减小大型数据中心中的操作成本。[0157]参考图10,存储器接口1014包含N个分区单元例如,单元-01034、单元-11036到单元-N1038,它们每个直接耦合至并行处理存储器1006的对应部分(例如Mem-O1040、Mem-I1042到Mem-N1044。分区单元的数量一般可以等于先前呈现的存储器的数量或者如示出的N。先前呈现的存储器可以利用诸如动态随机存取存储器①RAM的易失性存储器或诸如本文中所讨论的那些的其他类型的易失性存储器来实现。在其他实施例中,分区单元的数量可以不等于存储器装置的数量。图形数据诸如渲染目标、帧缓冲器或纹理映射)可以跨先前呈现的存储器装置被存储,从而允许分区单元并行地写入图形数据的部分以高效地使用并行处理存储器1006的可用带宽。[0158]此外,GPC中的任一个可以处理要被写入到并行处理存储器内的任何分区单元的数据。交叉开关单元1032可以被实现为互连,其被配置成将每个GPC的输出路由到任何分区单元的输入或路由到另一GPC以用于进一步处理。因此,GPC1026至1030可以通过交叉开关单元1032与存储器接口1014通信,以从各种其他或外部存储器装置读取或向其写入。如所示,交叉开关单元1032可与前端1020直接通信,以及具有到本地存储器1006的耦合直接的或间接的),以允许不同GPC内的处理核与系统存储器和或对于PPU而言非本地的其他存储器通信。此外,交叉开关单元1032可以利用虚拟信道来组织GPC和分区单元之间的业务流。[0159]系统概述图11是根据实施例的处理系统1100的框图。在各种实施例中,系统1100包含一个或多个处理器1102以及一个或多个图形处理器1108,并且可以是单处理器台式系统、多处理器工作站系统或具有大量处理器1102或处理器核1107的服务器系统。在一个实施例中,系统1100是被结合于供在移动装置、手持式装置或嵌入式装置中使用的片上系统(SoC集成电路内的处理平台。[0160]系统1100的实施例可以包含基于服务器的游戏平台、游戏控制台,包含游戏与媒体控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台,或被结合于它们内。在一些实施例中,系统1100是移动电话、智能电话、平板计算装置或移动互联网装置。数据处理系统1100还可以包含可穿戴设备诸如智能手表可穿戴装置、智能眼镜装置、增强现实装置或虚拟现实装置)、与所述可穿戴装置耦合、或者集成在所述可穿戴装置内。在一些实施例中,数据处理系统Iioo是电视或机顶盒装置,所述电视或机顶盒装置具有一个或多个处理器1102以及由一个或多个图形处理器1108生成的图形界面。[0161]在一些实施例中,所述一个或多个处理器1102每个包含用来处理指令的一个或多个处理器核1107,所述指令在被执行时执行用于系统和用户软件的操作。在一些实施例中,所述一个或多个处理器核1107中的每个被配置成处理特定的指令集1109。在一些实施例中,指令集1109可以促进复杂指令集计算CISC、精简指令集计算RISC、或经由超长指令字VLIW的计算。多个处理器核1107可以每个处理不同的指令集1109,所述指令集1109可以包含用来促进对其他指令集的仿真的指令。处理器核1107还可以包含其他处理装置,诸如数字信号处理器①SP。[0162]在一些实施例中,处理器1102包含高速缓冲存储器1104。取决于架构,处理器1102可以具有单个内部高速缓存或多个内部高速缓存级别。在一些实施例中,在处理器1102的各种部件之间共享高速缓冲存储器。在一些实施例中,处理器1102还使用外部高速缓存例如,3级L3高速缓存或末级高速缓存LLO未示出),其可以使用已知的高速缓存一致性技术在处理器核1107之间共享。寄存器堆1106被另外包含在处理器1102中,其可以包含用于存储不同类型的数据的不同类型的寄存器例如,整数寄存器、浮点寄存器、状态寄存器、和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器1102的设计。[0163]在一些实施例中,处理器1102与处理器总线1110耦合以在处理器1102与系统1100中的其他部件之间传输通信信号,诸如地址、数据、或控制信号。在一个实施例中,系统Iioo使用示例性‘中枢’系统架构,包含存储器控制器中枢1116和输入输出(IO控制器中枢1130。存储器控制器中枢1116促进存储器装置与系统1100的其他部件之间的通信,而IO控制器中枢ICH1130经由本地IO总线提供到IO装置的连接。在一个实施例中,存储器控制器中枢1116的逻辑集成在处理器内。[0164]存储器装置1120可以是动态随机存取存储器①RAM装置、静态随机存取存储器SRAM装置、闪速存储器装置、相变存储器装置、或具有合适的性能用作进程存储器的某个其他存储器装置。在一个实施例中,存储器装置1120可作为系统1100的系统存储器进行操作,以存储数据1122和指令1121供在所述一个或多个处理器1102执行应用或进程时使用。存储器控制器中枢1116还与可选的外部图形处理器1112耦合,所述可选的外部图形处理器1112可以与处理器1102中的所述一个或多个图形处理器1108通信以执行图形和媒体操作。[0165]在一些实施例中,ICH1130使得外围装置能够经由高速IO总线连接至存储器装置1120和处理器1102。10外围装置包含但不限于音频控制器1146、固件接口1128、无线收发器1126例如,Wi-Fi、蓝牙)、数据存储装置1124例如,硬盘驱动器、闪速存储器等)、以及用于将传统例如,个人系统2PS2装置耦合至该系统的传统IO控制器1140。一个或多个通用串行总线(USB控制器1142连接输入装置,诸如键盘和鼠标1144组合。网络控制器1134还可以与ICH1130耦合。在一些实施例中,高性能网络控制器未示出)与处理器总线1110耦合。将领会,所示出的系统1100是示例性的而非限制性的,因为还可以使用不同地配置的其他类型的数据处理系统。例如,IO控制器中枢1130可以集成在所述一个或多个处理器1102内,或者存储器控制器中枢1116和IO控制器中枢1130可以集成到分立的外部图形处理器诸如外部图形处理器1112中。[0166]图12是处理器1200的实施例的框图,其具有一个或多个处理器核1202A-1202N、集成存储器控制器1214、以及集成图形处理器1208。图12的具有与本文中的任何其他图的元件相同的参考数字或名称)的那些元件可以以与在本文中的其他地方描述的方式类似的任何方式进行操作或起作用,但不限于这样。处理器1200可以包含多达且包含由虚线框表示的附加核1202N的附加核。处理器核1202A-1202N中的每个包含一个或多个内部高速缓存单元1204A-1204N。在一些实施例中,每个处理器核还有权访问一个或多个共享高速缓存单元1206。[0167]内部高速缓存单元1204A-1204N和共享高速缓存单元1206表示处理器1200内的高速缓存存储器层级结构。高速缓存存储器层级结构可以包含每个处理器核内的至少一级指令和数据高速缓存以及一级或多级共享中级高速缓存,诸如2级L2、3级L3、4级L4、或其他级的高速缓存,其中在外部存储器之前的最高级的高速缓存被分类为LLC。在一些实施例中,高速缓存一致性逻辑维持各种高速缓存单元1206与1204A-1204N之间的一致性。[0168]在一些实施例中,处理器1200还可以包含一个或多个总线控制器单元1216和系统代理核1210的集合。所述一个或多个总线控制器单元1216管理一组外围总线,诸如一个或多个外围部件互连总线(例如,PCI、PCI快速)。系统代理核1210提供对各种处理器部件的管理功能性。在一些实施例中,系统代理核1210包含一个或多个集成存储器控制器1214,其用来管理对未示出的各种外部存储器装置的访问。[0169]在一些实施例中,处理器核1202A-1202N中的一个或多个包含对同步多线程的支持。在此种实施例中,系统代理核1210包含用于在多线程处理期间协调和操作核1202A-1202N的部件。系统代理核1210可以另外包含功率控制单元PCU,所述功率控制单元包含用来调节处理器核1202A-1202N以及图形处理器1208的功率状态的逻辑和部件。[0170]在一些实施例中,处理器1200另外包含用来执行图形处理操作的图形处理器1208。在一些实施例中,图形处理器1208与一组共享高速缓存单元1206和系统代理核1210耦合,所述系统代理核1210包含所述一个或多个集成存储器控制器1214。在一些实施例中,显示控制器1211与图形处理器1208耦合以将图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器1211可以是经由至少一个互连与图形处理器耦合的单独模块,或者可以集成在图形处理器1208或系统代理核1210内。[0171]在一些实施例中,基于环的互连单元1212用来耦合处理器1200的内部部件。然而,可以使用替代的互连单元,诸如点对点互连、切换式互连、或其他技术,包含本领域中众所周知的技术。在一些实施例中,图形处理器1208经由IO链路1213与环形互连1212耦合。[0172]示例性IO链路1213表示多种IO互连中的至少一种,包含促进各种处理器部件与高性能嵌入式存储器模块1218诸如eDRAM模块之间的通信的封装上IO互连。在一些实施例中,处理器核1202A-1202N中的每个处理器核以及图形处理器1208将嵌入式存储器模块1218用作共享的末级高速缓存。[0173]在一些实施例中,处理器核1202A-1202N是执行相同指令集架构的同质核。在另一实施例中,处理器核1202A-1202N在指令集架构(ISA方面是异质的,其中处理器核1202A-1202N中的一个或多个执行第一指令集,而其他核中的至少一个执行不同的指令集或第一指令集的子集。在一个实施例中,处理器核1202A-1202N在微架构方面是同质的,其中具有相对较高功率消耗的一个或多个核与具有较低功率消耗的一个或多个功率核耦合。另外,处理器1200可以被实现在一个或多个芯片上或者被实现为具有除其他部件之外的所图示的部件的SoC集成电路。[0174]图13是图形处理器1300的框图,所述图形处理器1300可以是分立的图形处理单元、或者可以是与多个处理核集成的图形处理器。在一些实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射的IO接口并且利用被放置到处理器存储器中的命令进行通信。在一些实施例中,图形处理器1300包含用来访问存储器的存储器接口1314。存储器接口1314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存、和或到系统存储器的接口。[0175]在一些实施例中,图形处理器1300还包含显示控制器1302,所述显示控制器1302用来将显示输出数据驱动到显示装置1320。显示控制器1302包含用于显示器的一个或多个重叠平面的硬件以及多层视频或用户界面元素的组成。在一些实施例中,图形处理器1300包含用来编码、解码或者向一个或多个媒体编码格式、从一个或多个媒体编码格式或在一个或多个媒体编码格式之间将媒体转码的视频编解码器引擎1306,所述一个或多个媒体编码格式包含但不限于运动图像专家组MPEG格式诸如MPEG-2、高级视频编码AVC格式诸如H.264MPEG-4AVC、以及电影电视工程师协会SMPTE421MVC-l和联合图像专家组JPEG格式诸如JPEG、以及运动JPEGMJPEG格式)。[0176]在一些实施例中,图形处理器1300包含用来执行包含例如位边界块传送的二维2D光栅化器操作的块图像传送BLIT引擎1304。然而,在一个实施例中,使用图形处理引擎GPE1310的一个或多个部件执行2D图形操作。在一些实施例中,GPE1310是用于执行图形操作的计算引擎,所述图形操作包含三维3D图形操作和媒体操作。[0177]在一些实施例中,GPE1310包含用于执行3D操作的3D流水线1312,所述3D操作诸如使用对3D图元形状例如,矩形、三角形等起作用的处理功能来渲染三维图像和场景。3D流水线1312包含可编程且固定的功能元件,所述可编程且固定的功能元件在元件内执行各种任务和或向3D媒体子系统1315大量产生(spawn执行线程。虽然3D流水线1312可以用来执行媒体操作,但是GPE1310的实施例还包含媒体流水线1316,所述媒体流水线特别地用来执行媒体操作,诸如视频后处理和图像增强。[0178]在一些实施例中,媒体流水线1316包含固定功能或可编程逻辑单元以代替、或代表视频编解码器引擎1306来执行一个或多个专门的媒体操作,诸如视频解码加速、视频解交织、以及视频编码加速。在一些实施例中,媒体流水线1316另外包含线程大量产生单元以大量产生用于在3D媒体子系统1315上执行的线程。所大量产生的线程对3D媒体子系统1315中所包含的一个或多个图形执行单元执行针对媒体操作的计算。[0179]在一些实施例中,3D媒体子系统1315包含用于执行通过3D流水线1312和媒体流水线1316大量产生的线程的逻辑。在一个实施例中,流水线向3D媒体子系统1315发送线程执行请求,所述3D媒体子系统包含用于仲裁各种请求并将各种请求分派到可用的线程执行资源的线程分派逻辑。执行资源包含用来处理3D和媒体线程的图形执行单元的阵列。在一些实施例中,3D媒体子系统1315包含用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,所述子系统还包含共享存储器包含寄存器和可寻址存储器)以在线程之间共享数据和存储输出数据。[0180]图形处理引擎图14是依照一些实施例的图形处理器的图形处理引擎1410的框图。在一个实施例中,图形处理引擎GPE1410是图13示出的GPE1310的一个版本。图14的具有与本文中的任何其他图的元件相同的参考数字或名称)的元件可以以与在本文中的其他地方描述的方式类似的任何方式进行操作或起作用,但不限于这样。例如,图示了图13的3D流水线1312和媒体流水线1316。媒体流水线1316在GPE1410的一些实施例中是可选的,并且可能不显式地包含在GPE1410内。例如并且在至少一个实施例中,单独的媒体和或图像处理器被耦合至GPE1410。[0181]在一些实施例中,GPE1410与命令流传送器1403耦合或包含命令流传送器1403,所述命令流传送器1403向3D流水线1312和或媒体流水线1316提供命令流。在一些实施例中,命令流传送器1403与存储器耦合,所述存储器可以是系统存储器、或内部高速缓冲存储器和共享高速缓存存储器中的一个或多个。在一些实施例中,命令流传送器1403从存储器接收命令并将命令发送至3D流水线1312和或媒体流水线1316。所述命令是从存储用于3D流水线1312和媒体流水线1316的命令的环形缓冲器获取的指示。在一个实施例中,环形缓冲器另外可以包含存储多批多个命令的批命令缓冲器。用于3D流水线1312的命令还可以包含对存储器中存储的数据的引用,诸如但不限于用于3D流水线1312的顶点和几何数据和或用于媒体流水线1316的图像数据和存储器对象。3D流水线1312和媒体流水线1316通过经由相应流水线内的逻辑来执行操作或者通过将一个或多个执行线程分派至图形核阵列1414而处理命令和数据。[0182]在各种实施例中,3D流水线1312可以通过处理指令并将执行线程分派给图形核阵列1414来执行一个或多个着色器程序,诸如顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其他着色器程序。图形核阵列1414提供统一的执行资源块。图形核阵列1414内的多用途执行逻辑例如,执行单元包含对各种3DAPI着色器语言的支持,并且可以执行与多个着色器相关联的多个同时的执行线程。[0183]在一些实施例中,图形核阵列1414还包含用来执行诸如视频和或图像处理的媒体功能的执行逻辑。在一个实施例中,除了图形处理操作之外,执行单元另外包含可编程以执行并行通用计算操作的通用逻辑。通用逻辑可以与图1的处理器核107或如图12中的核1202A-1202N内的通用逻辑并行地或结合地执行处理操作。[0184]由在图形核阵列1414上执行的线程生成的输出数据可以将数据输出到统一返回缓冲器URB1418中的存储器。URB1418可以存储多个线程的数据。在一些实施例中,URB1418可以用来在图形核阵列1414上执行的不同线程之间发送数据。在一些实施例中,URB1418可以另外用于图形核阵列上的线程与共享功能逻辑1420内的固定功能逻辑之间的同步。[0185]在一些实施例中,图形核阵列1414是可缩放的,使得所述阵列包含可变数量的图形核,每个具有基于GPE1410的目标功率和性能级别的可变数量的执行单元。在一个实施例中,执行资源是动态可缩放的,使得可以根据需要来启用或禁用执行资源。[0186]图形核阵列1414与共享功能逻辑1420耦合,所述共享功能逻辑1420包含在图形核阵列中的图形核之间共享的多个资源。共享功能逻辑1420内的共享功能是向图形核阵列1414提供专门的补充功能性的硬件逻辑单元。在各种实施例中,共享功能逻辑1420包含但不限于采样器1421、数学1422和线程间通信(ITC1423逻辑。另外,一些实施例实现共享功能逻辑1420内的一个或多个高速缓存1425。在针对给定的专门的功能的需求不足以包含在图形核阵列1414内的情况下实现共享功能。相反,那个专门的功能的单个例示被实现为共享功能逻辑1420中的独立实体并且在图形核阵列1414内的执行资源之间共享。在图形核阵列1414之间共享并包括在图形核阵列1414内的一组精确的功能在实施例之间变化。[0187]图15是图形处理器1500的另一实施例的框图。图15的具有与本文中的任何其他图的元件相同的参考数字或名称)的元件可以以与在本文中的其他地方描述的方式类似的任何方式进行操作或起作用,但不限于这样。[0188]在一些实施例中,图形处理器1500包含环形互连1502、流水线前端1504、媒体引擎1537、以及图形核1580A-1580N。在一些实施例中,环形互连1502将图形处理器耦合至其他处理单元,所述其他处理单元包含其他图形处理器或者一个或多个通用处理器核。在一些实施例中,图形处理器是集成在多核处理系统内的许多处理器中的一个。[0189]在一些实施例中,图形处理器1500经由环形互连1502接收多批命令。传入命令由流水线前端1504中的命令流传送器1503来解译。在一些实施例中,图形处理器1500包含用来经由图形核1580A-1580N执行3D几何处理和媒体处理的可缩放的执行逻辑。对于3D几何处理命令,命令流传送器1503将命令供应至几何流水线1536。针对至少一些媒体处理命令,命令流传送器1503将命令供应至视频前端1534,所述视频前端1534与媒体引擎1537耦合。在一些实施例中,媒体引擎1537包含用于视频和图像后处理的视频质量引擎VQE1530以及用来提供硬件加速的媒体数据编码和解码的多格式编码解码MFX1533引擎。在一些实施例中,几何流水线1536和媒体引擎1537各自针对由至少一个图形核1580A提供的线程执行资源生成执行线程。[0190]在一些实施例中,图形处理器1500包含以模块化核1580A-1580N有时被称为核切片)为特色的可缩放的线程执行资源,所述模块化核1580A-1580N中的每个具有多个子核1550A-550N、1560A-1560N有时被称为核子切片)。在一些实施例中,图形处理器1500可以具有任何数量的图形核1580A至1580N。在一些实施例中,图形处理器1500包含图形核1580A,所述图形核1580A至少具有第一子核1550A和第二子核1560A。在其他实施例中,图形处理器是具有单个子核(例如,1550A的低功率处理器。在一些实施例中,图形处理器1500包含多个图形核1580A-1580N,每个包含一组第一子核1550A-1550N和一组第二子核1560A-1560N。该组第一子核1550A-1550N中的每个子核至少包含第一组执行单元1552A-1552N和媒体纹理采样器1554A-1554N。该组第二子核1560A-1560N中的每个子核至少包含第二组执行单元1562A-1562N和采样器1564A-1564N。在一些实施例中,每个子核1550A-1550N、1560A-1560N共享一组共享资源1570A-1570N。在一些实施例中,所述共享资源包含共享高速缓存存储器和像素操作逻辑。其他共享资源也可以包含在图形处理器的各种实施例中。[0191]执行单元图16图示了线程执行逻辑1600,所述线程执行逻辑1600包含在GPE的一些实施例中采用的处理元件的阵列。图16的具有与本文中的任何其他图的元件相同的参考数字或名称)的元件可以以与在本文中的其他地方描述的方式类似的任何方式进行操作或起作用,但不限于这样。[0192]在一些实施例中,线程执行逻辑1600包含着色器处理器1602、线程分派器1604、指令高速缓存1606、包含多个执行单元1608A-1608N的可缩放的执行单元阵列、采样器1610、数据高速缓存1612、以及数据端口1614。在一个实施例中,可缩放的执行单元阵列可以通过基于工作负荷的计算要求来启用或禁用一个或多个执行单元(例如,执行单元1608A、1608B、1608C、1608D至1608N-1和1608N中的任何来动态地缩放。在一个实施例中,所包含的部件经由互连结构而互连,所述互连结构链接到部件中的每个部件。在一些实施例中,线程执行逻辑1600包含通过指令高速缓存1606、数据端口1614、采样器1610、以及执行单元1608A-1608N中的一个或多个到存储器诸如系统存储器或高速缓存存储器的一个或多个连接。在一些实施例中,每个执行单元例如,1608A是能够执行多个同时的硬件线程同时针对每个线程并行地处理多个数据元素的独立可编程通用计算单元。在各种实施例中,执行单元1608A-1608N的阵列是可缩放的以包含任何数量的个别执行单元。[0193]在一些实施例中,执行单元1608A-1608N主要用来执行着色器程序。着色器处理器1602可以处理各种着色器程序并且经由线程分派器1604分派与着色器程序相关联的执行线程。在一个实施例中,线程分派器包含用来对来自图形和媒体流水线的线程发起请求进行仲裁并且在执行单元1608A-1608N中的一个或多个执行单元上实例化所请求的线程的逻辑。例如,几何流水线例如,图15的1536可以将顶点、曲面细分或几何着色器分派至线程执行逻辑1600图16以用于处理。在一些实施例中,线程分派器1604还可处理来自执行着色器程序的运行时线程大量产生请求。[0194]在一些实施例中,执行单元1608A-1608N支持指令集所述指令集包含对许多标准3D图形着色器指令的本机支持),使得以最小的转换来执行来自图形库例如,Direct3D和OpenGL的着色器程序。执行单元支持顶点和几何处理例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。执行单元1608A-1608N中的每个都有多发布单指令多数据SMD执行的能力,并且多线程操作在面对较高等待时间的存储器访问时实现高效执行环境。每个执行单元内的每个硬件线程都具有专用的高带宽寄存器堆和关联的独立线程状态。对于有整数、单和双精度浮点运算、SIMD分支能力、逻辑运算、超越运算和其他杂项运算能力的流水线,执行是每一时钟的多发布。在等待来自存储器或共享功能中的一个的数据时,执行单元1608A-1608N内的依赖逻辑使等待线程休眠,直到所请求的数据已返回。当等待线程正在休眠时,硬件资源可能会被专门用于处理其他线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可以执行像素着色器、片段着色器或包含不同顶点着色器的另一类型的着色器程序的操作。[0195]执行单元1608A-1608N中的每个执行单元对数据元素的阵列进行操作。数据元素的数量是“执行大小”、或用于指令的通道的数量。执行通道是执行用于数据元素访问、屏蔽、和指令内的流控制的逻辑单元。通道的数量可以与针对特定图形处理器的物理算术逻辑单元ALU或浮点单元FPU的数量无关。在一些实施例中,执行单元1608A-1608N支持整数和浮点数据类型。[0196]执行单元指令集包含SMD指令。各种数据元素可作为压缩数据类型存储在寄存器中,并且执行单元将基于元素的数据大小来处理各种元素。例如,当对256位宽的向量进行操作时,该256位的向量存储在寄存器中并且执行单元按照四个单独的64位压缩数据元素四倍字长QW大小的数据元素)、八个单独的32位压缩数据元素双字DW大小的数据元素)、十六个单独的16位压缩数据元素字W大小的数据元素)、或三十二个单独的8位数据元素字节B大小的数据元素对该向量进行操作。然而,不同的向量宽度和寄存器大小是可能的。[0197]—个或多个内部指令高速缓存例如,1606被包含在线程执行逻辑1600中以高速缓存用于执行单元的线程指令。在一些实施例中,一个或多个数据高速缓存例如,1612被包含以便在线程执行期间高速缓存线程数据。在一些实施例中,采样器1610被包含以便为3D操作提供纹理采样并且为媒体操作提供媒体采样。在一些实施例中,采样器1610包含专门的纹理或媒体采样功能性,以在向执行单元提供采样数据之前在采样过程期间处理纹理或媒体数据。[0198]在执行期间,图形和媒体流水线经由线程大量产生和分派逻辑向线程执行逻辑1600发送线程发起请求。一旦一组几何对象已经被处理并被光栅化成像素数据,则着色器处理器1602内的像素处理器逻辑例如,像素着色器逻辑、片段着色器逻辑等被调用以进一步计算输出信息并且使得结果被写入到输出表面例如,色彩缓冲器、深度缓冲器、模板印刷缓冲器等)。在一些实施例中,像素着色器或片段着色器计算要跨经光栅化对象来内插各种顶点属性的值。在一些实施例中,着色器处理器1602内的像素处理器逻辑然后执行应用编程接口(API供应的像素或片段着色器程序。为了执行着色器程序,着色器处理器1602经由线程分派器1604将线程分派至执行单元例如,1608A。在一些实施例中,像素着色器1602使用采样器1610中的纹理采样逻辑来访问存储器中所存储的纹理映射中的纹理数据。对纹理数据和输入几何数据的算术运算计算每个几何片段的像素颜色数据,或丢弃一个或多个像素以免进一步处理。[0199]在一些实施例中,数据端口1614提供存储器访问机制以供线程执行逻辑1600将处理的数据输出至存储器以用于在图形处理器输出流水线上进行处理。在一些实施例中,数据端口1614包含或耦合至一个或多个高速缓存存储器例如,数据高速缓存1612,其用来经由数据端口来高速缓存数据以供存储器访问。[0200]图17是图示了根据一些实施例的图形处理器指令格式1700的框图。在一个或多个实施例中,图形处理器执行单元支持具有采用多个格式的指令的指令集。实线框图示了一般被包含在执行单元指令中的部件,而虚线包含可选的或仅被包含在指令的子集中的部件。在一些实施例中,所描述和图示的指令格式1700是宏指令,因为它们是供应至执行单元的指令,与一旦指令被处理就由指令解码引起的微操作相反。[0201]在一些实施例中,图形处理器执行单元本机地支持采用128位指令格式1710的指令。64位压缩指令格式1730可用于基于所选指令、指令选项和操作数数量的一些指令。本机128位指令格式710提供对所有指令选项的访问,而一些选项和操作限制在64位格式1730中。64位格式1730中可用的本机指令通过实施例而不同。在一些实施例中,使用索引字段1713中的一组索引值将指令部分地压缩。执行单元硬件基于索引值来引用一组压缩表,并使用压缩表输出来重构采用128位指令格式1710的本机指令。[0202]针对每个格式,指令操作码1712定义执行单元要执行的操作。执行单元跨每个操作数的多个数据元素来并行地执行每个指令。例如,响应于添加指令,执行单元跨每个颜色通道执行同时添加操作,所述每个颜色通道表示纹理元素或图片元素。默认地,执行单元跨操作数的所有数据通道执行每个指令。在一些实施例中,指令控制字段1714实现控制某些执行选项,诸如通道选择例如,预测)以及数据通道排序例如,拌和)。针对采用128位指令格式1710的指令,执行大小字段1716限制了将并行执行的数据通道的数量。在一些实施例中,执行大小字段1716不可用于供在64位压缩指令格式1730中使用。[0203]一些执行单元指令具有多达三个操作数,包含两个源操作数一一srcO1720、srcl1722和一个目的地1718。在一些实施例中,执行单元支持双目的地指令,其中目的地中的一个是隐含的。数据操纵指令可以具有第三源操作数(例如,SRC21724,其中指令操作码1712确定源操作数的数量。指令的最后的源操作数可以是利用所述指令传递的立即(例如,硬编码值。[0204]在一些实施例中,128位指令格式1710包含访问寻址模式字段1726,所述访问寻址模式字段1726指定例如是使用直接寄存器寻址模式还是间接寄存器寻址模式。当使用直接寄存器寻址模式时,直接由指令中的位来提供一个或多个操作数的寄存器地址。[0205]在一些实施例中,128位指令格式1710包含访问寻址模式字段1726,所述访问寻址模式字段1726指定指令的寻址模式和或访问模式。在一个实施例中,访问模式用来限定针对指令的数据访问对齐。一些实施例支持包含16字节对齐的访问模式和1字节对齐的访问模式的访问模式,其中访问模式的字节对齐确定了指令操作数的访问对齐。例如,当在第一模式中时,指令可以将字节对齐的寻址用于源操作数和目的地操作数,并且当在第二模式中时,指令可以将16字节对齐的寻址用于所有源操作数和目的地操作数。[0206]在一个实施例中,访问寻址模式字段1726的寻址模式部分确定指令要使用直接寻址还是间接寻址。当使用直接寄存器寻址模式时,指令中的位直接提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时,可以基于指令中的地址寄存器值和地址立即数字段来计算一个或多个操作数的寄存器地址。[0207]在一些实施例中,基于操作码1712位字段对指令进行分组以简化操作码解码1740。针对8位操作码,第4、5和6位允许执行单元确定操作码的类型。所示出的精确操作码分组仅是示例性的。在一些实施例中,移动和逻辑操作码组1742包含数据移动和逻辑指令例如,移动mov、比较cmp。在一些实施例中,移动和逻辑组1742共享五个最高有效位MSB,其中移动mov指令采用OOOOxxxxb的形式并且逻辑指令采用OOOlxxxxb的形式。流控制指令组1744例如,调用(call、跳(jmp包含采用OOlOxxxxb例如,0x20形式的指令。杂项指令组1746包含指令的混合,包含采用001Ixxxxb例如,0x30形式的同步指令例如,等待wait、发送send。并行数学指令组1748包含采用OlOOxxxxb例如,0x40形式的关于分量的算术指令例如,加add、乘mul。并行数学组1748跨数据通道并行地执行算术运算。向量数学组1750包含采用010Ixxxxb例如,0x50形式的算术指令例如,dp4。向量数学组对向量操作数执行算术,诸如点积运算。[0208]图形流水线图18是图形处理器1800的另一实施例的框图。图18的具有与本文中的任何其他图的元件相同的参考数字或名称)的元件可以以与在本文中的其他地方描述的方式类似的任何方式进行操作或起作用,但不限于这样。[0209]在一些实施例中,图形处理器1800包含图形流水线1820、媒体流水线1830、显示引擎1840、线程执行逻辑1850、以及渲染输出流水线1870。在一些实施例中,图形处理器1800是包含一个或多个通用处理核的多核处理系统内的图形处理器。图形处理器由至(未示出的)一个或多个控制寄存器的寄存器写入来控制或者经由通过环形互连1802发布到图形处理器1800的命令来控制。在一些实施例中,环形互连1802将图形处理器1800耦合至其他处理部件,诸如其他图形处理器或通用处理器。来自环形互连1802的命令由命令流传送器1803来解译,所述命令流传送器1803将指令供应到图形流水线1820或媒体流水线1830的个别部件。[0210]在一些实施例中,命令流传送器1803引导顶点获取器1805的操作,所述顶点获取器1805从存储器读取顶点数据并执行由命令流传送器1803所提供的顶点处理命令。在一些实施例中,顶点获取器1805将顶点数据提供给顶点着色器1807,所述顶点着色器1807对每个顶点执行坐标空间变换和调亮操作。在一些实施例中,顶点获取器1805和顶点着色器1807通过经由线程分派器1831向执行单元1852A-1852B分派执行线程来执行顶点处理指令。[0211]在一些实施例中,执行单元1852A-1852B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。在一些实施例中,执行单元1852A-1852B具有附接的Ll高速缓存1851,所述Ll高速缓存1851针对每个阵列特定的或在阵列之间共享。该高速缓存可以被配置为数据高速缓存、指令高速缓存或单个高速缓存,其被分区以将数据和指令包含在不同分区中。[0212]在一些实施例中,图形流水线1820包含用来执行3D对象的硬件加速的曲面细分的曲面细分部件。在一些实施例中,可编程的外壳着色器811配置曲面细分操作。可编程域着色器817提供对曲面细分输出的后端评估。曲面细分器1813在外壳着色器1811的方向上进行操作并且包含专用逻辑,所述专用逻辑用来基于粗糙几何模型来生成一组详细的几何对象,其被作为输入提供到图形流水线1820。在一些实施例中,如果未使用曲面细分,则可以绕开曲面细分部件例如,外壳着色器1811、曲面细分器1813、域着色器1817。[0213]在一些实施例中,完整的几何对象可以由几何着色器1819经由分派给执行单元1852A-1852B的一个或多个线程来处理,或者可以直接行进至剪辑器1829。在一些实施例中,几何着色器对整个几何对象而非对如在图形流水线的先前阶段中的顶点或者顶点补丁进行操作。如果禁用曲面细分,则几何着色器1819从顶点着色器1807接收输入。在一些实施例中,几何着色器1819可由几何着色器程序编程以在曲面细分单元被禁用时执行几何曲面细分。[0214]在光栅化之前,剪辑器1829处理顶点数据。剪辑器1829可以是固定功能的剪辑器或者具有剪辑和几何着色器功能的可编程剪辑器。在一些实施例中,渲染输出流水线1870中的光栅化器和深度测试部件1873分派像素着色器以将几何对象转换成其每一像素表示。在一些实施例中,像素着色器逻辑被包含在线程执行逻辑1850中。在一些实施例中,应用可以绕开光栅化器和深度测试部件1873并且经由流出(streamout单元1823访问未光栅化的顶点数据。[0215]图形处理器1800具有互连总线、互连结构或允许数据和消息在该处理器的主要部件之间传递的某个其他互连机构。在一些实施例中,执行单元1852A-1852B和相关联的高速缓存1851、纹理和媒体采样器1854、以及纹理采样器高速缓存1858经由数据端口1856进行互连以执行存储器访问并且与处理器的渲染输出流水线部件进行通信。在一些实施例中,采样器1854、高速缓存1851、1858以及执行单元1852A-1852B各自具有单独的存储器访问路径。[0216]在一些实施例中,渲染输出流水线1870包含光栅化器和深度测试部件1873,其将基于顶点的对象转换成相关联的基于像素的表示。在一些实施例中,光栅化器逻辑包含用来执行固定功能三角形和线光栅化的窗口器屏蔽器单元。相关联的渲染高速缓存1878和深度高速缓存1879在一些实施例中也是可用的。像素操作部件1877对数据执行基于像素的操作,然而在一些实例中,与2D操作例如,利用混合的位块图像传送相关联的像素操作由2D引擎1841执行,或者在显示时间由显示控制器1843使用重叠显示平面来代替。在一些实施例中,共享的L3高速缓存1875可用于所有图形部件,从而允许在无需使用主系统存储器的情况下共享数据。[0217]在一些实施例中,图形处理器媒体流水线1830包含媒体引擎1837和视频前端1834。在一些实施例中,视频前端1834从命令流传送器1803接收流水线命令。在一些实施例中,媒体流水线1830包含单独的命令流传送器。在一些实施例中,视频前端1834在将媒体命令发送至媒体引擎1837之前处理该命令。在一些实施例中,媒体引擎1837包含用来大量产生线程以用于经由线程分派器1831分派至线程执行逻辑1850的线程大量产生功能性。[0218]在一些实施例中,图形处理器1800包含显示引擎1840。在一些实施例中,显示引擎1840在处理器1800外部并且经由环形互连1802或者某个其他互连总线或结构与图形处理器耦合。在一些实施例中,显示引擎1840包含2D引擎1841和显示控制器1843。在一些实施例中,显示引擎1840包含能够独立于3D流水线而操作的专用逻辑。在一些实施例中,显示控制器1843与(未示出的)显示装置耦合,所述显示装置可以是系统集成显示装置(如在膝上型计算机中)、或者经由显示装置连接器附接的外部显示装置。[0219]在一些实施例中,图形流水线1820和媒体流水线1830可被配置成基于多个图形和媒体编程接口来执行操作并且并非特定于任一应用编程接口(API。在一些实施例中,用于图形处理器的驱动器软件将特定于特定图形或媒体库的API调用转换成可以由图形处理器处理的命令。在一些实施例中,为都来自KhronosGroup的开放图形库OpenGL、开放计算语言(OpenCL和或Vulkan图形和计算API提供支持。在一些实施例中,也可以为来自微软公司的Direct3D库提供支持。在一些实施例中,可以支持这些库的组合。还可以为开源计算机视觉库OpenCV提供支持。如果可以作出从将来的API的流水线到图形处理器的流水线的映射,则具有兼容的3D流水线的将来的API也将受到支持。[0220]图形流水线编程图19A是图示了根据一些实施例的图形处理器命令格式1900的框图。图19B是图示了根据实施例的图形处理器命令序列1910的框图。图19A中的实线框图示了一般被包含在图形命令中的分量,而虚线包含可选的分量或者仅被包含在该图形命令的子集中的分量。图19A的示例性图形处理器命令格式1900包含用来标识命令的目标客户端1902、命令操作代码操作码)1904、以及命令的相关数据1906的数据字段。一些命令中还包含子操作码1905和命令大小1908。[0221]在一些实施例中,客户端1902指定处理命令数据的图形装置的客户端单元。在一些实施例中,图形处理器命令解析器检查每个命令的客户端字段以调节对命令的进一步处理并将命令数据路由至适当的客户端单元。在一些实施例中,图形处理器客户端单元包含存储器接口单元、植染单元、2D单元、3D单元、和媒体单元。每个客户端单元具有对命令进行处理的对应处理流水线。一旦命令被客户端单元接收,客户端单元就读取操作码1904以及子操作码1905如果存在的话来确定要执行的操作。客户端单元使用数据字段1906中的信息来执行命令。针对一些命令,期望显式的命令大小1908来指定命令的大小。在一些实施例中,命令解析器基于命令操作码来自动地确定命令中的至少一些命令的大小。在一些实施例中,经由双字的倍数对命令进行对齐。[0222]图19B中的流程图示出了示例性图形处理器命令序列1910。在一些实施例中,以图形处理器的实施例为特色的数据处理系统的软件或固件使用所示出的命令序列的版本来建立、执行和终止一组图形操作。仅出于示例的目的示出并描述了样本命令序列,因为实施例不限于这些特定命令或者此命令序列。此外,所述命令可以被作为命令序列中的一批命令来发布,使得图形处理器将至少部分同时地处理命令的序列。[0223]在一些实施例中,图形处理器命令序列1910可以以流水线转储清除命令1912开始,以使得任何活跃的图形流水线完成针对该流水线的当前未决命令。在一些实施例中,3D流水线1922和媒体流水线1924不同时进行操作。执行流水线转储清除以使得活跃的图形流水线完成任何未决命令。响应于流水线转储清除,用于图形处理器的命令解析器将暂停命令处理直到活跃的绘制引擎完成未决操作和相关的读取高速缓存为无效的。可选地,渲染高速缓存中被标记为‘脏’的任何数据可以被转储清除到存储器。在一些实施例中,流水线转储清除命令1912可以用于流水线同步或者用在将图形处理器置于低功率状态中之前。[0224]在一些实施例中,当命令序列要求图形处理器在流水线之间显式地切换时,使用流水线选择命令1913。在一些实施例中,在发布流水线命令之前在执行上下文内仅需要一次流水线选择命令1913,除非该上下文要发布针对两个流水线的命令。在一些实施例中,紧接在经由流水线选择命令1913的流水线切换之前需要流水线转储清除命令1912。[0225]在一些实施例中,流水线控制命令1914配置用于操作的图形流水线并且用来对3D流水线1922和媒体流水线124进行编程。在一些实施例中,流水线控制命令1914为活跃的流水线配置流水线状态。在一个实施例中,流水线控制命令1914用于流水线同步并且用来在处理一批命令之前清除来自活跃的流水线内的一个或多个高速缓冲存储器的数据。[0226]在一些实施例中,返回缓冲器状态命令1916用来配置一组返回缓冲器以供相应的流水线写入数据。一些流水线操作需要对在处理期间所述操作将中间数据写入到的一个或多个返回缓冲器的分配、选择或配置。在一些实施例中,图形处理器还使用一个或多个返回缓冲器来存储输出数据并且执行跨线程通信。在一些实施例中,返回缓冲器状态1916包含选择要用于一组流水线操作的返回缓冲器的大小和数量。[0227]命令序列中的剩余命令基于用于操作的活跃的流水线而不同。基于流水线确定1920,命令序列适合于以3D流水线状态1930开始的3D流水线1922或者在媒体流水线状态1940下开始的媒体流水线1924。[0228]用来配置3D流水线状态1930的命令包含用于顶点缓冲器状态、顶点元素状态、常量颜色状态、深度缓冲器状态、以及要在处理3D图元命令之前配置的其他状态变量的3D状态设置命令。这些命令的值至少部分地基于使用中的特定3DAPI来确定。在一些实施例中,3D流水线状态1930命令还能够选择性地禁用或绕开某些流水线元件,如果将不使用那些元件的话。[0229]在一些实施例中,3D图元1932命令用来提交要由3D流水线处理的3D图元。经由3D图元1932命令传递给图形处理器的命令和相关联的参数被转发到图形流水线中的顶点获取功能。顶点获取功能使用3D图元1932命令数据来生成顶点数据结构。顶点数据结构被存储在一个或多个返回缓冲器中。在一些实施例中,3D图元1932命令用来经由顶点着色器对3D图元执行顶点操作。为了处理顶点着色器,3D流水线1922将着色器执行线程分派到图形处理器执行单元。[0230]在一些实施例中,经由执行1934命令或事件来触发3D流水线1922。在一些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序列中的‘前进(go’或‘踢kick’命令来触发执行。在一个实施例中,使用流水线同步命令来触发命令执行以通过图形流水线转储清除命令序列。3D流水线将执行针对3D图元的几何处理。一旦操作完成,所产生的几何对象就被光栅化并且像素引擎对所产生的像素进行着色。针对那些操作,还可以包含用于控制像素着色和像素后端操作的附加命令。[0231]在一些实施例中,当执行媒体操作时,图形处理器命令序列1910跟随媒体流水线1924路径。通常,针对媒体流水线1924的编程的特定用途和方式取决于要执行的媒体或计算操作。在媒体解码期间,特定的媒体解码操作可以被卸载到该媒体流水线。在一些实施例中,还可以绕开该媒体流水线,并且可使用由一个或多个通用处理核提供的资源来整体地或部分地执行媒体解码。在一个实施例中,媒体流水线还包含用于通用图形处理器单元GPGPU操作的元件,其中图形处理器被用来使用与渲染图形图元不显式相关的计算着色器程序来执行S頂D向量运算。[0232]在一些实施例中,以与3D流水线1922类似的方式对媒体流水线1924进行配置。在媒体对象命令1942之前,将用来配置媒体流水线状态1940的一组命令分派或放置到命令队列中。在一些实施例中,媒体流水线状态命令1940包含用来配置媒体流水线元件的数据,所述媒体流水线元件将用来处理媒体对象。这包含用来在媒体流水线内配置视频解码和视频编码逻辑的数据,诸如编码或解码格式。在一些实施例中,媒体流水线状态命令1940还支持对指向包含一批状态设置的“间接”状态元件的一个或多个指针的使用。[0233]在一些实施例中,媒体对象命令1942将指针供应至媒体对象以用于由媒体流水线进行处理。媒体对象包含存储器缓冲器,所述存储器缓冲器包含要被处理的视频数据。在一些实施例中,在发布媒体对象命令1942之前,所有的媒体流水线状态必须是有效的。一旦流水线状态被配置并且媒体对象命令1942被排队,就经由执行命令1944或等同的执行事件例如,寄存器写入来触发媒体流水线1924。然后可以通过由3D流水线1922或媒体流水线1924提供的操作对来自媒体流水线1924的输出进行后处理。在一些实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。[0234]图形软件架构图20图示了根据一些实施例的数据处理系统2000的示例性图形软件架构。在一些实施例中,软件架构包含3D图形应用2010、操作系统2020、以及至少一个处理器2030。在一些实施例中,处理器2030包含图形处理器2032以及一个或多个通用处理器核2034。图形应用2010和操作系统2020各自在数据处理系统的系统存储器2050中执行。[0235]在一些实施例中,3D图形应用2010包含包括着色器指令2012的一个或多个着色器程序。着色器语言指令可以采用高级着色器语言,诸如高级着色器语言HLSL或OpenGL着色器语言GLSL。应用还包含采用适合于由通用处理器核2034执行的机器语言的可执行指令2014。应用还包含由顶点数据限定的图形对象2016。[0236]在一些实施例中,操作系统2020是来自微软公司的Microsoft®Windows®操作系统、专有的类似UNIX的操作系统、或使用Linux内核的变体的类似开源UNIX的操作系统。操作系统2020可以支持图形API2022,诸如Direct3DAPI、0penGLAPI或VulkanAPI。当Direct3DAPI在使用中时,操作系统2020使用前端着色器编译器2024将采用HLSL的任何着色器指令2012编译成较低级的着色器语言。所述编译可以是即时JIT编译,或者所述应用可以执行着色器预编译。在一些实施例中,在3D图形应用2010的编译期间,将高级着色器编译成低级着色器。在一些实施例中,采取中间形式提供着色器指令2012,诸如由VulkanAPI使用的标准便携式中间表示SPIR的版本。[0237]在一些实施例中,用户模式图形驱动器2026包含后端着色器编译器2027,以便将着色器指令2012转换成硬件特定的表示。当OpenGLAPI在使用中时,将采用GLSL高级语言的着色器指令2012传递至用户模式图形驱动器2026以用于编译。在一些实施例中,用户模式图形驱动器2026使用操作系统内核模式功能2028来与内核模式图形驱动器2029进行通信。在一些实施例中,内核模式图形驱动器2029与图形处理器2032进行通信以分派命令和指令。[0238]IP核实现至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性代码来实现,所述机器可读介质表示和或限定诸如处理器的集成电路内的逻辑。例如,机器可读介质可以包含表示处理器内的各种逻辑的指令。当由机器读取时,所述指令可以使机器制造用来执行本文中所描述的技术的逻辑。此类表示称为“IP核”)是用于集成电路的逻辑的可重复使用单元,其可以被作为描述集成电路的结构的硬件模型而存储在有形、机器可读介质上。可以将硬件模型供应至在制造集成电路的制造机器上加载硬件模型的各种消费者或制造设施。可以制造集成电路,使得该电路执行与本文中所描述的实施例中的任何实施例相关联地描述的操作。[0239]图21是图示了根据实施例的可以用来制造集成电路以执行操作的IP核开发系统2100的框图。IP核开发系统2100可以用来生成可以结合到更大的设计中或用于构建整个集成电路例如,SOC集成电路)的模块化、可重复使用的设计。设计设施2130可以采用高级编程语言(例如,CC++生成IP核设计的软件仿真2110。软件仿真2110可用来使用仿真模型2112来设计、测试和验证IP核的行为。仿真模型2112可以包含功能、行为和或定时仿真。然后可以从仿真模型2112创建或合成寄存器传送级RTL设计2115。RTL设计2115是对硬件寄存器之间的数字信号的流动进行建模的集成电路的行为的抽象,其包含使用建模的数字信号执行的相关联逻辑。除了RTL设计2115之外,还可以创建、设计或合成逻辑级别或晶体管级别处的较低级别设计。因此,初始设计和仿真的特定细节可能变化。[0240]可以由设计设施将RTL设计2115或等同方案进一步合成为硬件模型2120,所述硬件模型2120可以采用硬件描述语言HDL或物理设计数据的某种其他表示。可以进一步仿真或测试HDL以验证IP核设计。可使用非易失性存储器2140例如,硬盘、闪速存储器、或任何非易失性存储介质)来存储IP核设计以用于递送至第3方制造设施2165。替代地,可以通过有线连接2150或无线连接2160来传送例如,经由互联网)IP核设计。制造设施2165然后可以制造至少部分地基于IP核设计的集成电路。所制造的集成电路可被配置成执行依照本文中所描述的至少一个实施例的操作。[0241]示例性芯片上的系统集成电路图22-24图示了根据本文中所描述的各种实施例的可以使用一个或多个IP核来制造的示例性集成电路和相关联的图形处理器。除了所图示的事物之外,还可以包含其他逻辑和电路,包含附加的图形处理器核、外围接口控制器或通用处理器核。[0242]图22是图示了根据实施例的可以使用一个或多个IP核来制造的示例性片上系统集成电路2200的框图。示例性集成电路2200包含一个或多个应用处理器2205例如,CPU、至少一个图形处理器2210,并且另外可以包含图像处理器2215和或视频处理器2220,其中的任何都可以是来自相同或多个不同设计设施的模块化IP核。集成电路2200包含外围或总线逻辑,其包含USB控制器2225、UART控制器2230、SPISDI0控制器2235和I2SI2C控制器2240。另外,集成电路可以包含显示装置2245,所述显示装置2245耦合至高清晰度多媒体接口(HDMI控制器2250和移动行业处理器接口(MIPI显示界面2255中的一个或多个。可以由包含闪速存储器和闪速存储器控制器的闪速存储器子系统2260来提供存储。可以经由存储器控制器2265来提供存储器接口以用于对SDRAM或SRAM存储器装置的访问。一些集成电路另外包含嵌入式安全性引擎2270。[0243]图23是图示了根据实施例的可以使用一个或多个IP核来制造的片上系统集成电路的示例性图形处理器2310的框图。图形处理器2310可以是图22的图形处理器2210的变体。图形处理器2310包含顶点处理器2305和一个或多个片段处理器2315A-2315N例如,2315厶、23158、2315:、23150至231511和2315吣。图形处理器2310可以经由单独的逻辑执行不同的着色器程序,使得顶点处理器2305被优化以执行用于顶点着色器程序的操作,而所述一个或多个片段处理器2315A-2315N执行用于片段或像素着色器程序的片段(例如,像素着色操作。顶点处理器2305执行3D图形流水线的顶点处理阶段并生成图元和顶点数据。片段处理器2315A-2315N使用由顶点处理器2305生成的图元和顶点数据来产生显示在显示装置上的帧缓冲器。在一个实施例中,片段处理器2315A-2315N被优化以执行如在OpenGLAPI中提供的片段着色器程序,所述片段着色器程序可以用来执行与如在Direct3DAPI中提供的像素着色器程序类似的操作。[0244]图形处理器2310另外包含一个或多个存储器管理单元MMU2320A-2320B、高速缓存2325A-2325B和电路互连2330A-2330B。所述一个或多个MMU2320A-2320B为集成电路2310,包含为顶点处理器2305和或片段处理器2315A-2315N,提供虚拟到物理地址映射,除了存储在所述一个或多个高速缓存2325A-2325B中的顶点或图像纹理数据之外,所述虚拟到物理地址映射还可以引用存储在存储器中的顶点或图像纹理数据。在一个实施例中,所述一个或多个MMU2325A-2325B可以与系统内的其他MMU同步,所述其他MMU包含与图22的所述一个或多个应用处理器2205、图像处理器2215和或视频处理器2220相关联的一个或多个MMU,使得每个处理器2205-2220可以参与共享或统一的虚拟存储器系统。根据实施例,所述一个或多个电路互连2330A-2330B使得图形处理器2310能够经由SoC的内部总线或经由直接连接与SoC内的其他IP核对接。[0245]图24是图示了根据实施例的可以使用一个或多个IP核来制造的片上系统集成电路的附加示例性图形处理器2410的框图。图形处理器2410可以是图22的图形处理器2210的变体。图形处理器2410包含图23的集成电路2300的所述一个或多个MMU2320A-2320B、高速缓存2325A-2325B和电路互连2330A-2330B。[0246]图形处理器2410包含一个或多个着色器核2415A-2415N例如,2415A、2415B、2415C、2415D、2415E、2415F至2415N-1和2415N,它们提供统一的着色器核架构,其中单个核或类型或核可以执行所有类型的可编程着色器代码,所述可编程着色器代码包含着色器程序代码以实现顶点着色器、片段着色器和或计算着色器。存在的着色器核的确切数量可以在实施例和实现之中变化。另外,图形处理器2410包含核间任务管理器2405,所述核间任务管理器2405充当用来将执行线程分派给一个或多个着色器核2415A-2415N的线程分派器,以及用来使分块操作加速以用于进行基于图块的渲染的分块单元2418,其中场景的渲染操作在图像空间中被细分,例如以利用场景内的局部空间一致性或优化对内部高速缓存的使用。[0247]本申请提供一组技术方案,如下。[0248]1.一种设备,包括:至少部分包括硬件逻辑的逻辑,其用来:接收用于工作负荷的一个或多个帧;确定用于所述工作负荷的一个或多个计算资源参数;以及在存储器中与用于所述工作负荷的工作负荷上下文数据关联地存储用于所述工作负荷的所述一个或多个计算资源参数。[0249]2.根据技术方案1所述的设备,其中所述计算资源参数包括下列中的至少一个:指派到所述工作负载的一个或多个执行单元的操作状态;以及指派到所述工作负载的一个或多个执行单元的功率状态。[0250]3.根据技术方案2所述的设备,进一步包括至少部分包含硬件逻辑的逻辑,其用来:接收用于所述工作负荷的附加的一个或多个帧;从所述存储器检索所述一个或多个计算资源参数;以及使用所述计算资源参数来调度计算资源,以处理用于所述工作负荷的所述附加的一个或多个帧。[0251]4.根据技术方案4所述的设备,进一步包括至少部分包含硬件逻辑的逻辑,其用来:更新存储器中的所述计算资源参数。[0252]5.根据技术方案4所述的设备,其中所述计算资源参数定义在预确定的时间帧内的用于工作负荷的计算资源参数使用简档。[0253]6.根据技术方案4所述的设备,其中所述计算资源参数定义在预确定数量的工作负荷周期内的用于工作负荷的计算资源参数使用简档。[0254]7.根据技术方案7所述的设备,进一步包括至少部分包含硬件逻辑的逻辑,其用来:在完成所述工作负荷时删除存储器中的所述计算资源参数。[0255]8.—种电子装置,包括:具有一个或多个处理器核的处理器;至少部分包括硬件逻辑的逻辑,其用来:接收用于工作负荷的一个或多个帧;确定用于所述工作负荷的一个或多个计算资源参数;以及在存储器中与用于所述工作负荷的工作负荷上下文数据关联存储用于所述工作负荷的所述一个或多个计算资源参数。[0256]9.根据技术方案8所述的电子装置,其中所述计算资源参数包括下列中的至少一个:指派到所述工作负载的一个或多个执行单元的操作状态;指派到所述工作负载的一个或多个执行单元的功率状态。[0257]10.根据技术方案9所述的电子装置,进一步包括至少部分包含硬件逻辑的逻辑,其用来:接收用于所述工作负荷的附加的一个或多个帧;从所述存储器检索所述一个或多个计算资源参数;以及使用所述计算资源参数来调度计算资源,以处理用于所述工作负荷的所述附加的一个或多个帧。[0258]11.根据技术方案10所述的电子装置,进一步包括至少部分包括硬件逻辑的逻辑,其用来:更新存储器中的所述计算资源参数。[0259]12.根据技术方案11所述的电子装置,其中所述计算资源参数定义在预确定的时间帧内的用于工作负荷的计算资源参数使用简档。[0260]13.根据技术方案11所述的电子装置,其中所述计算资源参数定义在预确定数量的工作负荷周期内的用于工作负荷的计算资源参数使用简档。[0261]14.根据技术方案11所述的电子装置,进一步包括至少部分包括硬件逻辑的逻辑,其用来:在完成所述工作负荷时删除存储器中的所述计算资源参数。[0262]15.—种方法,包括:在处理装置中接收用于工作负荷的一个或多个帧;确定用于所述工作负荷的一个或多个计算资源参数;以及在存储器中与用于所述工作负荷的工作负荷上下文数据关联存储用于所述工作负荷的所述一个或多个计算资源参数。[0263]16.根据技术方案15所述的方法,其中所述计算资源参数包括下列中的至少一个:指派到所述工作负载的一个或多个执行单元的操作状态;指派到所述工作负载的一个或多个执行单元的功率状态。[0264]17.根据技术方案16所述的方法,进一步包括:接收用于工作负荷的附加的一个或多个帧;从所述存储器检索所述一个或多个计算资源参数;以及使用所述计算资源参数来调度计算资源,以处理用于所述工作负荷的所述附加的一个或多个帧。[0265]18.根据技术方案17所述的方法,进一步包括:更新存储器中的所述计算资源参数。[0266]19.根据技术方案18所述的方法,其中所述计算资源参数定义在预确定的时间帧内的用于工作负荷的计算资源参数使用简档。[0267]20.根据技术方案18所述的方法,其中所述计算资源参数定义在预确定数量的工作负荷周期内的用于工作负荷的计算资源参数使用简档。[0268]21.根据技术方案18所述的方法,进一步包括:在完成所述工作负荷时删除存储器中的所述计算资源参数。[0269]22.—个或多个计算机可读介质,其包括一个或多个指令,所述指令在至少一个处理器上被执行时配置所述至少一个处理器执行一个或多个操作,以:接收用于工作负荷的一个或多个帧;确定用于所述工作负荷的一个或多个计算资源参数;以及在存储器中与用于所述工作负荷的工作负荷上下文数据关联存储用于所述工作负荷的所述一个或多个计算资源参数。[0270]23.根据技术方案22所述的计算机可读介质,其中所述计算资源参数包括下列中的至少一个:指派到所述工作负载的一个或多个执行单元的操作状态;指派到所述工作负载的一个或多个执行单元的功率状态。[0271]24.根据技术方案23所述的计算机可读介质,包括一个或多个指令,所述指令在所述至少一个处理器上被执行时配置所述至少一个处理器,以:接收用于所述工作负荷的附加的一个或多个帧;从所述存储器检索所述一个或多个计算资源参数;以及使用所述计算资源参数来调度计算资源,以处理用于所述工作负荷的所述另外的一个或多个帧。[0272]25.根据技术方案24所述的计算机可读介质,包括一个或多个指令,所述指令在所述至少一个处理器上被执行时配置所述至少一个处理器,以:更新存储器中的所述计算资源参数。[0273]26.根据技术方案25所述的计算机可读介质,其中所述计算资源参数定义在预确定的时间帧内的用于工作负荷的计算资源参数使用简档。[0274]27.根据技术方案25所述的计算机可读介质,其中所述计算资源参数定义在预确定数量的工作负荷周期内的用于工作负荷的计算资源参数使用简档。[0275]28.根据技术方案25所述的计算机可读介质,包括一个或多个指令,所述指令在所述至少一个处理器上被执行时配置所述至少一个处理器,以:在完成所述工作负荷时删除存储器中的所述计算资源参数。[0276]下文涉及另外示例。[0277]示例1可以可选地包含设备,其包括至少部分包括硬件逻辑的逻辑,其用来:接收用于工作负荷的一个或多个帧;确定用于工作负荷的一个或多个计算资源参数;以及在存储器中与用于工作负荷的工作负荷上下文数据关联地存储用于工作负荷的一个或多个计算资源参数。[0278]示例2可以可选地包含示例1的主题,其中计算资源参数包括下列中的至少一个:指派到工作负荷的一个或多个执行单元的操作状态以及指派到工作负载的一个或多个执行单元的功率状态。[0279]示例3可以可选地包含示例1-2的任一个示例的主题,进一步包括逻辑,至少部分包含硬件逻辑,其用来:接收用于工作负荷的附加的一个或多个帧;从存储器检索一个或多个计算资源参数;以及使用计算资源参数来调度计算资源,以处理用于工作负荷的附加的一个或多个帧。[0280]示例4可以可选地包含示例1-3的任一个示例的主题,进一步包括逻辑,至少部分包含硬件逻辑,其用来更新在存储器中的计算资源参数。[0281]示例5可以可选地包含示例1-4的任一个示例的主题,其中计算资源参数定义在预确定的时间帧内的用于工作负荷的计算资源参数使用简档。[0282]示例6可以可选地包含示例1-5的任一个示例的主题,其中计算资源参数定义在预确定数量的工作负荷周期内的用于工作负荷的计算资源参数使用简档。[0283]示例7可以可选地包含示例1-6的任一个示例的主题,进一步包括逻辑,至少部分包含硬件逻辑,其用来在完成工作负荷时,删除在存储器中的计算资源参数。[0284]示例8是一种电子装置,包括具有一个或多个处理器核、逻辑的处理器,至少部分包括硬件逻辑,其用来:接收用于工作负荷的一个或多个帧;确定用于工作负荷的一个或多个计算资源参数;以及在存储器中与用于工作负荷的工作负荷上下文数据关联地存储用于工作负荷的一个或多个计算资源参数。[0285]示例9可以可选地包含示例8的主题,其中计算资源参数包括下列中的至少一个:指派到工作负荷的一个或多个执行单元的操作状态;以及指派到工作负载的一个或多个执行单元的功率状态。[0286]示例10可以可选地包含示例8-9的任一个示例的主题,进一步包括逻辑,至少部分包含硬件逻辑,其用来:接收用于工作负荷的附加的一个或多个帧;从存储器检索一个或多个计算资源参数;以及使用计算资源参数来调度计算资源,以处理用于工作负荷的附加的一个或多个帧。[0287]示例11可以可选地包含示例8-10的任一个示例的主题,进一步包括逻辑,至少部分包含硬件逻辑,其用来更新在存储器中的计算资源参数。[0288]示例12可以可选地包含示例8-11的任一个示例的主题,其中计算资源参数定义在预确定的时间帧内的用于工作负荷的计算资源参数使用简档。[0289]示例13可以可选地包含示例8-12的任一个示例的主题,其中计算资源参数定义在预确定数量的工作负荷周期内的用于工作负荷的计算资源参数使用简档。[0290]示例14可以可选地包含示例8-13的任一个示例的主题,进一步包括逻辑,至少部分包含硬件逻辑,其用来在完成工作负荷时,删除在存储器中的计算资源参数。[0291]示例15是一种方法,包括:在处理装置中接收用于工作负荷的一个或多个帧;确定用于工作负荷的一个或多个计算资源参数;以及在存储器中与用于工作负荷的工作负荷上下文数据关联地存储用于工作负荷的一个或多个计算资源参数。[0292]示例16可以可选地包含示例15的主题,其中计算资源参数包括下列中的至少一个:指派到工作负荷的一个或多个执行单元的操作状态;以及指派到工作负载的一个或多个执行单元的功率状态。[0293]示例17可以可选地包含示例15-16的任一个示例的主题,进一步包括:接收用于工作负荷的附加的一个或多个帧;从存储器检索一个或多个计算资源参数;以及使用计算资源参数来调度计算资源,以处理用于工作负荷的附加的一个或多个帧。[0294]示例18可以可选地包含示例15-17的任一个示例的主题,进一步包括更新在存储器中的计算资源参数。[0295]示例19可以可选地包含示例15-18的任一个示例的主题,其中计算资源参数定义在预确定的时间帧内的用于工作负荷的计算资源参数使用简档。[0296]示例20可以可选地包含示例15-19的任一个示例的主题,其中计算资源参数定义在预确定数量的工作负荷周期内的用于工作负荷的计算资源参数使用简档。[0297]示例21可以可选地包含示例15-20的任一个示例的主题,进一步包括在工作负荷完成时,删除在存储器中的计算资源参数。[0298]示例22是包括一个或多个指令的一个或多个计算机可读介质,指令在至少一个处理器上被执行时配置至少一个处理器执行一个或多个操作,以:接收用于工作负荷的一个或多个帧;确定用于工作负荷的一个或多个计算资源参数;以及在存储器中与用于工作负荷的工作负荷上下文数据关联地存储用于工作负荷的一个或多个计算资源参数。[0299]示例23可以可选地包含示例22的主题,其中计算资源参数包括下列中至少一个:指派到工作负荷的一个或多个执行单元的操作状态;以及指派到工作负载的一个或多个执行单元的功率状态。[0300]示例24可以可选地包含示例22-23的任一个示例的主题,进一步包括一个或多个指令,指令在至少一个处理器上被执行时配置至少一个处理器以:接收用于工作负荷的附加的一个或多个帧;从存储器检索一个或多个计算资源参数;以及使用计算资源参数来调度计算资源,以处理用于工作负荷的附加的一个或多个帧。[0301]示例25可以可选地包含示例22-24的任一个示例的主题,进一步包括逻辑,至少部分包含硬件逻辑,其用来更新在存储器中的计算资源参数。[0302]示例26可以可选地包含示例22-25的任一个示例的主题,其中计算资源参数定义在预确定的时间帧内的用于工作负荷的计算资源参数使用简档。[0303]示例27可以可选地包含示例22-26的任一个示例的主题,其中计算资源参数定义在预确定数量的工作负荷周期内的用于工作负荷的计算资源参数使用简档。[0304]示例28可以可选地包含示例22-27的任一个示例的主题,进一步包括逻辑,至少部分包含硬件逻辑,其用来在完成工作负荷时,删除在存储器中的计算资源参数。[0305]在各种实施例中,本文中讨论的操作可被实现为硬件(例如,逻辑电路系统)、软件、固件或其组合,其可被提供为计算机程序产品,例如,包含有形例如,非暂态机器可读或计算机可读介质,在其上存储有用来编程计算机以执行本文中讨论的进程的指令或软件过程)。机器可读介质可包含信息存储装置。[0306]另外,此类计算机可读介质可以被作为计算机程序产品来下载,其中程序可以经由通信链路例如,总线、调制解调器或网络连接通过在载波或其他传播介质中提供的数据信号的方式从远程计算机例如,服务器传送到作出请求的计算机例如,客户端)。[0307]在本说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构和或特性可以被包含在至少实现中。短语“在一个实施例中”在本说明书中的各种地方中的出现可能或可能不都是指同一实施例。[0308]而且,在说明书和权利要求书中,可以使用术语“耦合”和“连接”连同它们的派生词。在一些实施例中,可以使用“连接”来指示两个或更多个元件彼此直接物理或电接触。“耦合”可以意味着两个或更多个元件直接物理或电接触。然而,“耦合”还可以意味着两个或更多个元件可能彼此不直接接触,但仍可以彼此合作或交互。[0309]因此,尽管已经采用特定于结构特征和或方法动作的语言描述实施例,但是要理解,所要求保护的主题可以不限于所描述的特定特征或动作。相反,特定特征和动作被公开作为实现所要求保护的主题的样本形式。
权利要求:1.一种设备,包括:至少部分包括硬件逻辑的逻辑,其用来:接收用于工作负荷的一个或多个帧;确定用于所述工作负荷的一个或多个计算资源参数;以及在存储器中与用于所述工作负荷的工作负荷上下文数据关联地存储用于所述工作负荷的所述一个或多个计算资源参数。2.根据权利要求1所述的设备,其中所述计算资源参数包括下列中的至少一个:指派到所述工作负载的一个或多个执行单元的操作状态;以及指派到所述工作负载的一个或多个执行单元的功率状态。3.根据权利要求2所述的设备,进一步包括至少部分包括硬件逻辑的逻辑,其用来:接收用于所述工作负荷的附加的一个或多个帧;从所述存储器检索所述一个或多个计算资源参数;以及使用所述计算资源参数来调度计算资源,以处理用于所述工作负荷的所述附加的一个或多个帧。4.根据权利要求4所述的设备,进一步包括至少部分包括硬件逻辑的逻辑,其用来:更新在存储器中的所述计算资源参数。5.根据权利要求4所述的设备,其中所述计算资源参数定义在预确定的时间帧内的用于工作负荷的计算资源参数使用简档。6.根据权利要求4所述的设备,其中所述计算资源参数定义在预确定数量的工作负荷周期内的用于工作负荷的计算资源参数使用简档。7.根据权利要求7所述的设备,进一步包括至少部分包括硬件逻辑的逻辑,其用来:在完成所述工作负荷时删除在存储器中的所述计算资源参数。8.—种电子装置,包括:具有一个或多个处理器核的处理器;至少部分包括硬件逻辑的逻辑,其用来:接收用于工作负荷的一个或多个帧;确定用于所述工作负荷的一个或多个计算资源参数;以及在存储器中与用于所述工作负荷的工作负荷上下文数据关联地存储用于所述工作负荷的所述一个或多个计算资源参数。9.根据权利要求8所述的电子装置,其中所述计算资源参数包括下列中的至少一个:指派到所述工作负载的一个或多个执行单元的操作状态;以及指派到所述工作负载的一个或多个执行单元的功率状态。10.根据权利要求9所述的电子装置,进一步包括至少部分包括硬件逻辑的逻辑,其用来:接收用于所述工作负荷的附加的一个或多个帧;从所述存储器检索所述一个或多个计算资源参数;以及使用所述计算资源参数来调度计算资源,以处理用于所述工作负荷的所述附加的一个或多个帧。11.根据权利要求10所述的电子装置,进一步包括至少部分包含硬件逻辑的逻辑,其用来:更新在存储器中的所述计算资源参数。12.根据权利要求10所述的电子装置,其中所述计算资源参数定义在预确定的时间帧内的用于工作负荷的计算资源参数使用简档。13.根据权利要求11所述的电子装置,其中所述计算资源参数定义在预确定数量的工作负荷周期内的用于工作负荷的计算资源参数使用简档。14.根据权利要求11所述的电子装置,进一步包括至少部分包含硬件逻辑的逻辑,其用来:在完成所述工作负荷时删除在存储器中的所述计算资源参数。15.一种方法,包括:在处理装置中接收用于工作负荷的一个或多个帧;确定用于所述工作负荷的一个或多个计算资源参数;以及在存储器中与用于所述工作负荷的工作负荷上下文数据关联地存储用于所述工作负荷的所述一个或多个计算资源参数。16.根据权利要求15所述的方法,其中所述计算资源参数包括下列中的至少一个:指派到所述工作负载的一个或多个执行单元的操作状态;指派到所述工作负载的一个或多个执行单元的功率状态。17.根据权利要求16所述的方法,进一步包括:接收用于所述工作负荷的附加的一个或多个帧;从所述存储器检索所述一个或多个计算资源参数;以及使用所述计算资源参数来调度计算资源,以处理用于所述工作负荷的所述附加的一个或多个帧。18.根据权利要求17所述的方法,进一步包括:更新在存储器中的所述计算资源参数。19.根据权利要求18所述的方法,其中所述计算资源参数定义在预确定的时间帧内的用于工作负荷的计算资源参数使用简档。20.根据权利要求18所述的方法,其中所述计算资源参数定义在预确定数量的工作负荷周期内的用于工作负荷的计算资源参数使用简档。
百度查询: 英特尔公司 每工作负荷的自适应计算大小
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。