CN116091680A - 用于超采样的输入滤波和采样器加速 - Google Patents

用于超采样的输入滤波和采样器加速 Download PDF

Info

Publication number
CN116091680A
CN116091680A CN202211362204.0A CN202211362204A CN116091680A CN 116091680 A CN116091680 A CN 116091680A CN 202211362204 A CN202211362204 A CN 202211362204A CN 116091680 A CN116091680 A CN 116091680A
Authority
CN
China
Prior art keywords
graphics
data
memory
processor
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211362204.0A
Other languages
English (en)
Inventor
G·利克托尔
K·瓦德亚纳坦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN116091680A publication Critical patent/CN116091680A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4053Scaling of whole images or parts thereof, e.g. expanding or contracting based on super-resolution, i.e. the output image resolution being higher than the sensor resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4046Scaling of whole images or parts thereof, e.g. expanding or contracting using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20016Hierarchical, coarse-to-fine, multiscale or multiresolution image processing; Pyramid transform
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20024Filtering details

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Graphics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Image Processing (AREA)

Abstract

描述了用于超采样的输入滤波和采样器加速。图形处理器的示例包括:处理资源集合,该处理资源集合被配置成用于经由卷积神经网络执行超采样操作,该处理资源集合包括被配置成用于进行以下操作的电路:接收输入数据以用于超采样处理,该输入数据包括根据抖动模式采样的数据,该抖动模式改变数据样本的位置;将图像滤波器应用于所接收的输入数据,其中该图像滤波器包括至少部分基于抖动模式的像素权重;处理输入数据以生成经上采样的数据;以及对经上采样数据应用超采样处理。

Description

用于超采样的输入滤波和采样器加速
相关申请
本申请涉及2021年11月5日提交的题为“用于超采样的输入滤波 和采样器加速(INPUT FILTERING AND SAMPLER ACCELERATION FOR SUPERSAMPLING)”的美国临时专利申请第63/276,291号并要求其优先权。
技术领域
本公开总体上涉及用于超采样的输入滤波和采样器加速。
时域消锯齿(temporal anti-aliasing,TAA)是在其中渲染器逐帧地 抖动相机以对屏幕空间中的不同坐标采样的消锯齿技术。TAA阶段在时域上 累积这些样本以产生超采样图像。在累积之前,先前累积的帧使用渲染器生成 的速度/运动向量来扭曲以将其与当前帧对齐。虽然TAA是用于生成时域稳定 的消锯齿图像的广泛使用的技术,但是由于可见性方面的帧到帧变化以及运动 向量中的遮蔽或误差,扭曲的样本历史可能失配于当前像素。这典型地导致移 动对象边界周围的重影伪像。
在超采样操作中,由于像素的有限采样,处理可能会导致网络输入 中提供的锯齿状栅格化图像产生的混叠。在超采样实现方式中,通过相机的抖 动提供的超采样来随着时间推移消除混叠。
附图说明
在所附附图的各图中以示例方式而非限制方式来图示本发明,在 附图中,类似的附图标记指示类似的要素,并且其中:
图1是图示配置成用于实现本文中描述的实施例的一个或多个方面 的计算机系统的框图;
图2A-图2D图示并行处理器部件;
图3A-图3C是图形多处理器和基于多处理器的GPU的框图;
图4A-图4F图示在其中多个GPU通信地耦合至多个多核心处理器的 示例性体系结构;
图5图示图形处理管线;
图6图示机器学习软件栈;
图7图示通用图形处理单元;
图8图示多GPU计算系统;
图9A-图9B图示示例性深度神经网络的层;
图10图示示例性循环神经网络;
图11图示深度神经网络的训练和部署;
图12A是图示分布式学习的框图;
图12B是图示可编程网络接口和数据处理单元的框图;
图13图示适于使用经训练的模型执行推断的示例性推断片上系统 (system on achip,SOC);
图14是处理系统的框图;
图15A-图15C图示计算系统和图形处理器;
图16A-图16C图示附加的图形处理器和计算加速器体系结构的框图;
图17是图形处理器的图形处理引擎的框图;
图18A-图18B图示包括在图形处理器核心中采用的处理元件的阵列 的线程执行逻辑;
图19图示附加的执行单元;
图20是图示图形处理器指令格式的框图;
图21是附加的图形处理器体系结构的框图;
图22A-图22B图示图形处理器命令格式和命令序列;
图23图示用于数据处理系统的示例性图形软件体系结构;
图24A是图示IP核心开发系统的框图;
图24B图示集成电路封装组件的截面侧视图;
图24C图示封装组件,该封装组件包括连接到衬底(例如,基础管 芯)的多个单元的硬件逻辑小芯片;
图24D图示包括可互换小芯片的封装组件;
图25是图示示例性片上系统集成电路的框图;
图26A-图26B是图示用于在SoC内使用的示例性图形处理器的 框图;
图27是根据实施例的数据处理系统的框图;
图28A-图28B图示根据实施例的由指令管线执行的矩阵操作;
图29图示包括以管线化的方式组织的乘法器电路和加法器电路的 脉动阵列;
图30A-图30B图示对配置成用于以任意脉动深度执行操作的脉动 阵列的使用;
图31图示两路径矩阵乘法加速器,其中每个路径具有四个阶段的 深度;
图32图示四路径矩阵乘法加速器,其中每个路径具有两个阶段的 深度;
图33图示使用具有反馈输入的脉动阵列的可缩放稀疏矩阵乘法加 速器;
图34图示使用在每个阶段上具有反馈输入和输出的脉动阵列的可 缩放稀疏矩阵乘法加速器;
图35图示根据实施例的用于矩阵加速器的双管线并行脉动阵列;
图36图示用于脉动阵列的通道的阶段对;
图37图示包括用于加速稀疏矩阵乘法的部分和回路和电路的脉动 阵列;
图38A-图38B图示矩阵加速电路,该矩阵加速电路包括用于使得 能够以压缩格式读取稀疏数据的编解码器;
图39图示利用时域消锯齿(TAA)的常规渲染器;
图40图示利用时域摊销的超采样阶段替代TAA阶段的渲染器;
图41图示根据实施例的神经网络模型的部件;
图42图示根据实施例的神经网络模型的输入块;
图43A-图43B图示根据实施例的用于神经网络模型的输出块变体;
图44图示用于执行时域摊销的超采样的方法;
图45图示针对本文中描述的多个渲染技术的示例性渲染性能比较; 以及
图46是根据实施例的包括图形处理器的计算设备的框图。
图47是根据一些实施例的用于时域摊销的超采样的输入滤波和采 样器加速的图示;
图48A-图48C是图示根据实施例的包括抖动的像素采样的示图;
图49是根据一些实施例的利用至少部分地基于图像的抖动和采样 而生成的图像滤波器进行超采样的过程的图示;以及
图50是根据一些实施例的用于至少部分地基于图像的抖动和采样 来生成图像滤波器的过程的图示。
具体实施方式
图形处理单元(graphics processing unit,GPU)通信地耦合至主机/ 处理器核心以加速例如图形操作、机器学习操作、模式分析操作、和/或各种通 用GPU(general-purpose GPU,GPGPU)功能。GPU可通过总线或另一互连 (例如,诸如PCIe或NVLink之类的高速互连)通信地耦合至主机处理器/核 心。替代地,GPU可集成在与核心相同的封装或芯片上,并且通过内部处理器 总线/互连(即,在封装或芯片内部)通信地耦合至核心。无论GPU被连接所 采取的方式如何,处理器核心都可将工作以工作描述符中所包含的命令/指令序列的形式分配给GPU。GPU随后使用专用电路/逻辑来高效地处理这些命令/ 指令。
当前的并行图形数据处理包括被开发成对图形数据执行特定操 作的系统和方法,这些特定操作诸如例如,线性插值、曲面细分、栅格化、 纹理映射、深度测试等。传统意义上而言,图形处理器使用固定功能计算 单元来处理图形数据。然而,更最近地,已使图形处理器的多个部分可编 程,使得此类处理器能够支持更广泛种类的操作以处理顶点数据和片段数 据。
为了进一步提升性能,图形处理器典型地实现诸如管线化的处理 技术,这些处理技术尝试贯穿图形管线的不同部分并行地处理尽可能多的 图形数据。具有单指令多线程(single instruction,multiple thread,SIMT) 体系结构的并行图形处理器被设计成使图形管线中的并行处理的量最大化。 在SIMT体系结构中,成组的并行线程尝试尽可能频繁地一起同步地执行 程序指令以提高处理效率。可在Shane Cook的“CUDA编程(CUDAProgramming)”第3章第37-51页(2013年)中找到用于SIMT体系结构 的软件和硬件的总体概述。
时域上采样可与TAA组合以同时放大空间分辨率,使得以较低的 空间分辨率渲染帧以节省渲染时间。在时域消锯齿上采样之后的后处理阶段随 后能以目标显示分辨率运行。这允许创建比使用仅空间放大技术能够创建的图 像更锐化的图像,并且与在以原生显示分辨率渲染帧时相比有效地减少渲染时 间。
在超采样中,由于在栅格化期间每个像素具有单个样本,因此在网 络输入中提供了锯齿状的栅格化图像。在超采样实现方式中,通过相机的抖动 提供的超采样来随着时间推移消除混叠。
先前的解决方案可能依赖于多个经渲染的图像的生成,其中每个图 像提供更多的数据来改善输入数据。然而,许多图像的渲染是昂贵的,并且实 现图像渲染可能是不切实际的。
在一些实施例中,提供了图像滤波以将与由相机抖动产生的样本位 置有关的信息构建到输入数据中。在一些实施例中,使用现有的纹理加速硬 件进一步应用采样器加速来提供输入滤波。
在以下描述中,陈述了众多特定细节以提供更透彻的理解。然而, 对于本领域的技术人员将显而易见的是,可以在没有这些特定细节中的一 个或多个特定细节的情况下实践本文中描述的实施例。在其他实例中,未 描述公知的特征以免混淆当前实施例的细节。
系统概述
图1是图示配置成用于实现本文中描述的实施例的一个或多个方面 的计算系统100的框图。计算系统100包括处理子系统101,该处理子系统101 具有经由互连路径通信的一个或多个处理器102和系统存储器104,该互连路 径可包括存储器中枢105。存储器中枢105可以是芯片组部件内的单独部件, 或者可被集成在一个或多个处理器102内。存储器中枢105经由通信链路106 与I/O子系统111耦合。I/O子系统111包括I/O中枢107,该I/O中枢107可 使计算系统100能够从一个或多个输入设备108接收输入。此外,I/O中枢107 可使显示控制器(其可被包括在一个或多个处理器102中)将输出提供给一个 或多个显示设备110A。在一个实施例中,与I/O中枢107耦合的一个或多个 显示设备110A可包括本地的、内部的、或嵌入式的显示设备。
处理子系统101例如包括经由总线或其他通信链路113耦合至存储 器中枢105的一个或多个并行处理器112。通信链路113可以是任何数量的基 于标准的通信链路技术或协议中的一种,诸如但不限于PCI快速(PCI Express), 或者可以是供应方特定的通信接口或通信结构(fabric)。一个或多个并行处 理器112可形成可包括大量处理核心和/或处理集群的计算集中的并行或向量 处理系统,诸如,集成众核心(many integrated core,MIC)处理器。例如, 一个或多个并行处理器112形成图形处理子系统,该图形处理子系统可以向经 由I/O中枢107耦合的一个或多个显示设备110A中的一个显示设备输出像素。 一个或多个并行处理器112还可包括显示控制器和显示接口(未示出),用于 启用至一个或多个显示设备110B的直接连接。
在I/O子系统111内,系统存储单元114可连接到I/O中枢107, 从而为计算系统100提供存储机制。I/O开关116可用于提供接口机制,以启 用I/O中枢107与其他部件之间的连接,其他部件诸如,可被集成到平台中的 网络适配器118和/或无线网络适配器119、以及可经由一个或多个插入式设备 120而被添加的各种其他设备。(一个或多个)插入式设备120还可包括例如 一个或多个外部图形处理器设备、图形卡、和/或计算加速器。网络适配器118 可以是以太网适配器或另一有线网络适配器。无线网络适配器119可包括以下 一者或多者:Wi-Fi、蓝牙、近场通信(near field communication,NFC)、或 包括一个或多个无线的无线电装置的其他网络设备。
计算系统100可包括未显式地示出的其他部件,包括USB或其他 端口连接、光学存储驱动器、视频捕捉设备等等,这些部件也可连接到I/O中 枢107。将图1中的各种部件互连的通信路径可使用任何合适的协议来实现, 合适的协议诸如,基于PCI(PeripheralComponent Interconnect,外围部件互连) 的协议(例如,PCI快速)、或任何其他总线或点到点通信接口和/或(一种或 多种)协议,诸如,NVLink高速互连、计算快速链路TM(ComputeExpress LinkTM, CXLTM)(例如,CXL.mem)、无限结构(Infinity Fabric,IF)、以太网(IEEE802.3)、远程直接存储器访问(remote direct memory access,RDMA)、无 限带宽(InfiniBand)、网际广域RDMA协议(Internet Wide Area RDMA Protocol,iWARP)、传输控制协议(Transmission Control Protocol,TCP)、 用户数据报协议(User DatagramProtocol,UDP)、快速UDP网际连接(quick UDP Internet Connections,QUIC)、通过汇聚以太网的RDMA(RDMA over Converged Ethernet,RoCE)、英特尔快速路径互连(IntelQuickPath Interconnect,QPI)、英特尔超路径互连(Intel Ultra Path Interconnect,UPI)、 英特尔片上系统结构(Intel On-Chip System Fabric,IOSF)、全方位路径(Omnipath)、超传输(HyperTransport)、高级微控制器总线体系结构 (AdvancedMicrocontroller Bus Architecture,AMBA)互连、OpenCAPI、 Gen-Z、用于加速器的缓存一致互连(Cache Coherent Interconnect for Accelerators,CCIX)、3GPP长期演进(3GPPLong Term Evolution,LTE) (4G)、3GPP 5G及其变体、或本领域中已知的有线或无线互连协议。在一些 示例中,可使用诸如通过结构的非易失性存储器快速(non-volatile memoryexpress,NVMe)(non-volatile memory express over Fabrics,NVME-oF)或 NVMe之类的协议将数据复制或存储到虚拟化存储节点。
一个或多个并行处理器112可包含针对图形和视频处理进行优化的 电路(包括例如,视频输出电路),并构成图形处理单元(GPU)。替代地或 附加地,本文中更详细地描述,一个或多个并行处理器112可包含针对通用处 理进行优化同时保留底层计算体系结构的电路。计算系统100的部件可与一个 或多个其他系统元件集成在单个集成电路上。例如,一个或多个并行处理器112、 存储器中枢105、(一个或多个)处理器102、以及I/O中枢107可被集成到 片上系统(SoC)集成电路中。替代地,计算系统100的部件可被集成到单个 封装中以形成系统级封装(system in package,SIP)配置。在一个实施例中, 计算系统100的部件的至少部分可被集成到多芯片模块(multi-chip module,MCM)中,该MCM可与其他多芯片模块一起被互连到模块化计算系统中。
将领会,本文中所示出的计算系统100是说明性的,并且变体和修 改是可能的。可根据需要修改连接拓扑,包括桥接器的数量和布置、(一个或 多个)处理器102的数量、以及(一个或多个)并行处理器112的数量。例如, 系统存储器104可直接而不是通过桥接器连接到(一个或多个)处理器102, 而其他设备经由存储器中枢105和(一个或多个)处理器102与系统存储器104 通信。在其他替代拓扑中,(一个或多个)并行处理器连接到I/O中枢107或直接连接到一个或多个处理器102中的一个处理器,而不是连接到存储器中枢 105。在其他实施例中,I/O中枢107和存储器中枢105可集成到单个芯片中。 两个或更多个处理器102集合经由多个插槽被附连也是可能的,多个插槽可与 (一个或多个)并行处理器112的两个或更多个实例耦合。
本文中所示出的特定部件中的一些是任选的,并且可以是并非在计 算系统100的所有实现方式中都包括这些部件。例如,可支持任何数量的插入 式卡或外围设备,或者可消除一些部件。此外,一些体系结构可针对与图1中 所图示的那些部件类似的部件使用不同的术语。例如,存储器中枢105在一些 体系结构中可被称为北桥,而I/O中枢107可被称为南桥。
图2A图示并行处理器200。并行处理器200可以是如本文中所述 的GPU、GPGPU等。并行处理器200的各种部件可使用一个或多个集成电路 设备来实现,一个或多个集成电路设备诸如,可编程处理器、专用集成电路 (application specific integrated circuit,ASIC)、或现场可编程门阵列(field programmable gate array,FPGA)。所图示的并行处理器200可以是图1中示 出的(一个或多个)并行处理器112中的一个或多个。
并行处理器200包括并行处理单元202。并行处理单元包括启用与 其他设备的通信的I/O单元204,其他设备包括并行处理单元202的其他实例。 I/O单元204可直接连接到其他设备。例如,I/O单元204经由使用中枢或开关 接口(诸如,存储器中枢105)与其他设备连接。存储器中枢105与I/O单元 204之间的连接形成通信链路113。在并行处理单元202内,I/O单元204与主 机接口206以及存储器交叉开关216连接,其中,主机接口206接收涉及执行 处理操作的命令,并且存储器交叉开关216接收涉及执行存储器操作的命令。
当主机接口206经由I/O单元204接收命令缓冲器时,主机接口206 可以将用于执行那些命令的工作操作引导至前端208。在一个实施例中,前端 208与调度器210耦合,该调度器210被配置成用于将命令或其他工作项目分 发给处理集群阵列212。调度器210确保在任务被分发给处理集群阵列212中 的处理集群之前,处理集群阵列212被适当地配置并且处于有效状态。调度器 210可经由在微控制器上执行的固件逻辑来实现。微控制器实现的调度器210 可被配置成用于以粗粒度和细粒度执行复杂的调度和工作分发操作,从而实现对在处理集群阵列212上执行的线程的快速抢占和上下文切换。优选地,主机 软件可以经由多个图形处理门铃中的一个来证实用于在处理集群阵列212上调 度的工作负载。在其他示例中,可使用对新工作负载或中断的轮询来标识或指 示要执行的工作的可用性。工作负载随后可由调度器微控制器内的调度器210 逻辑跨处理集群阵列212自动地分发。
处理集群阵列212可以包括最多“N”个处理集群(例如,集群214A、 集群214B至集群214N)。处理集群阵列212中的每个集群214A-214N可执 行大量的并发线程。调度器210可以使用各种调度和/或工作分发算法将工作分 配给处理集群阵列212中的集群214A-214N,这些调度和/或工作分发算法可 取决于针对每种类型的程序或计算产生的工作负载而变化。调度可以由调度器 210动态地处置,或可以在对被配置成供处理集群阵列212执行的程序逻辑的 编译期间部分地由编译器逻辑辅助。任选地,处理集群阵列212中的不同的集 群214A-214N可以被分配用于处理不同类型的程序或用于执行不同类型的计 算。
处理集群阵列212可被配置成用于执行各种类型的并行处理操作。 例如,处理集群阵列212被配置成用于执行通用并行计算操作。例如,处理集 群阵列212可包括用于执行处理任务的逻辑,这些处理任务包括视频和/或音频 数据的过滤、执行包括物理操作的建模操作以及执行数据变换。
处理集群阵列212被配置成用于执行并行图形处理操作。在其中并 行处理器200被配置成用于执行图形处理操作的此类实施例中,处理集群阵列 212可包括用于支持此类图形处理操作的执行的附加逻辑,包括但不限于用于 执行纹理操作的纹理采样逻辑、以及曲面细分逻辑和其他顶点处理逻辑。此外, 处理集群阵列212可被配置成用于执行图形处理相关的着色器程序,诸如但不 限于顶点着色器、曲面细分着色器、几何着色器和像素着色器。并行处理单元 202可以经由I/O单元204从系统存储器传输数据以供处理。在处理期间,可 在处理期间将所传输的数据存储到片上存储器(例如,并行处理器存储器222), 随后将该数据写回到系统存储器。
在其中使用并行处理单元202来执行图形处理的实施例中,调度器 210可被配置成用于将处理工作负载划分成近似相等大小的任务,以更好地实 现图形处理操作向处理集群阵列212中的多个集群214A-214N的分发。在这些 实施例中的一些实施例中,处理集群阵列212的部分可被配置成用于执行不同 类型的处理。例如,第一部分可被配置成用于执行顶点着色和拓扑生成,第二 部分可被配置成用于执行曲面细分和几何着色,并且第三部分可被配置成用于 执行像素着色或其他屏幕空间操作,以产生用于显示的经渲染的图像。由集群 214A-214N中的一个或多个集群产生的中间数据可被存储在缓冲器中,以允许 中间数据在集群214A-214N之间被传送以用于进一步处理。
在操作期间,处理集群阵列212可以经由调度器210接收要被执行 的处理任务,该调度器210从前端208接收定义处理任务的命令。对于图形处 理操作,处理任务可包括要被处理的数据以及定义将如何处理该数据(例如, 将执行什么程序)的状态参数和命令的索引,该数据例如,表面(补片(patch)) 数据、基元数据、顶点数据和/或像素数据。调度器210可被配置成用于取得 (fetch)与任务对应的索引,或者可从前端208接收索引。前端208可被配置 成用于确保在由传入命令缓冲器(例如,批量缓冲器、推入缓冲器等)指定的 工作负载被发起之前处理集群阵列212被配置成有效状态。
并行处理单元202的一个或多个实例中的每个实例可以与并行处理 器存储器222耦合。可以经由存储器交叉开关216来访问并行处理器存储器222, 该存储器交叉开关216可以接收来自处理集群阵列212以及I/O单元204的存 储器请求。存储器交叉开关216可经由存储器接口218来访问并行处理器存储 器222。存储器接口218可包括各自可耦合至并行处理器存储器222的部分(例 如,存储器单元)的多个分区单元(例如,分区单元220A、分区单元220B、 直到分区单元220N)。分区单元220A-220N的数量可被配置成等于存储器单 元的数量,使得第一分区单元220A具有对应的第一存储器单元224A,第二分 区单元220B具有对应的第二存储器单元224B,并且第N分区单元220N具有 对应的第N存储器单元224N。在其他实施例中,分区单元220A-220N的数量 可以不等于存储器设备的数量。
存储器单元224A-224N可以包括各种类型的存储器设备,包括动态 随机存取存储器(dynamic random-access memory,DRAM)或图形随机存取 存储器,诸如,同步图形随机存取存储器(synchronous graphics random access memory,SGRAM),包括图形双倍数据速率(graphics double data rate,GDDR) 存储器。任选地,存储器单元224A-224N还可包括3D堆叠式存储器,包括但 不限于高带宽存储器(high bandwidth memory,HBM)。本领域技术人员将 领会,存储器单元224A-224N的具体实现方式可有所不同,并且可从各种常规设计中的一个常规设计中选择。诸如帧缓冲器或纹理图之类的渲染目标可跨存 储器单元224A-224N被存储,从而允许分区单元220A-220N并行地写入每个 渲染目标的部分,以高效地使用并行处理器存储器222的可用带宽。在一些实 施例中,并行处理器存储器222的本地实例可被排除,以有利于利用结合本地 缓存存储器的系统存储器的统一存储器设计。
任选地,处理集群阵列212中的集群214A-214N中的任一者具有用 于处理将被写入到并行处理器存储器222内的存储器单元224A-224N中的任一 者的数据的能力。存储器交叉开关216可被配置成用于将每个集群214A-214N 的输出传输到任何分区单元220A-220N或传输到另一集群214A-214N,该另 一集群214A-214N可对输出执行附加的处理操作。每个集群214A-214N可通 过存储器交叉开关216与存储器接口218通信,以从各种外部存储器设备读取 或向各种外部存储器设备写入。在具有存储器交叉开关216的实施例中的一个实施例中,存储器交叉开关216具有至存储器接口218的连接以与I/O单元204 通信,并具有至并行处理器存储器222的本地实例的连接,从而使不同处理集 群214A-214N内的处理单元能够与系统存储器或不在并行处理单元202本地的 其他存储器通信。一般而言,存储器交叉开关216例如可以能够使用虚拟通道 来分离集群214A-214N与分区单元220A-220N之间的通信量流。
尽管在并行处理器200内图示出并行处理单元202的单个实例,但 可以包括并行处理单元202的任何数量的实例。例如,并行处理单元202的多 个实例可以被设置在单个插入式卡上,或者多个插入式卡可以被互连。例如, 并行处理器200可以是插入式设备,诸如,图1的插入式设备120,该插入式 设备120可以是图形卡(诸如,包括一个或多个GPU、一个或多个存储器设备、 以及设备至设备或网络或结构接口的分立的图形卡)。并行处理单元202的不 同实例可被配置成即便不同实例具有不同数量的处理核心、不同量的本地并行 处理器存储器、和/或其他配置区别也进行互操作。任选地,并行处理单元202 的一些实例相对于其他实例可包括更高精度浮点单元。包含并行处理单元202 或并行处理器200的一个或多个实例的系统能以各种配置和形状因子来实现, 这些配置和形状因子包括但不限于,桌面型电脑、膝上型电脑、或手持式个人 计算机、服务器、工作站、游戏控制台和/或嵌入式系统。编排器可使用以下一 者或多者来形成用于工作负载执行的复合节点:分解的处理器资源、缓存资源、 存储器资源、存储资源、和联网资源。
图2B是分区单元220的框图。分区单元220可以是图2A的分区单 元220A-220N中的一个分区单元的实例。如所图示,分区单元220包括L2缓 存221、帧缓冲器接口225、和ROP226(栅格操作单元)。L2缓存221是被 配置成用于执行从存储器交叉开关216和ROP 226接收的加载和存储操作的读 取/写入缓存。读取未命中和紧急写回请求由L2缓存221输出到帧缓冲器接口 225以用于处理。更新也可经由帧缓冲器接口225被发送到帧缓冲器以用于处 理。在一个实施例中,帧缓冲器接口225与并行处理器存储器中的存储器单元 (诸如,(例如,并行处理器存储器222内的)图2A的存储器单元224A-224N) 中的一个存储器单元对接。分区单元220还可附加地或替代地经由存储器控制 器(未示出)与并行处理器存储器中的存储器单元中的一个存储器单元对接。
在图形应用中,ROP 226是执行栅格操作(诸如,模板印制(stencil)、 z测试、混合等等)的处理单元。ROP 226随后输出经处理的图形数据,该经 处理的图形数据被存储在图形存储器中。在一些实施例中,ROP 226包括编解 码器(CODEC)227或与CODEC 227耦合,该CODEC 227包括压缩逻辑, 该压缩逻辑用于对被写入存储器或L2缓存221的深度或颜色数据进行压缩, 并对从存储器或L2缓存221读取的深度或颜色数据进行解压缩。压缩逻辑可以是利用多种压缩算法中的一种或多种的无损压缩逻辑。由CODEC 227执行 的压缩的类型可以基于将要被压缩的数据的统计特性而变化。例如,在一个实 施例中,逐片地对深度和颜色数据执行Δ(delta)颜色压缩。在一个实施例中, CODEC 227包括压缩和解压缩逻辑,该压缩和解压缩逻辑可对与机器学习操 作相关联的计算数据进行压缩和解压缩。CODEC227可例如对用于稀疏机器 学习操作的稀疏矩阵数据进行压缩。CODEC 227还可对按稀疏矩阵格式(例 如,坐标列表编码(coordinate list encoding,COO)、压缩稀疏行(compressed sparse row,CSR)、压缩稀疏列(compress sparse column,CSC)等)编码 的稀疏矩阵数据进行压缩以生成经压缩且经编码的稀疏矩阵数据。经压缩且经 编码的稀疏矩阵数据可在由处理元件处理之前被解压缩和/或解码,或者处理元 件可被配置成用于消耗经压缩的、经编码的、或经压缩且经编码的数据以用于 处理。
ROP 226可被包括在每个处理集群(例如,图2A的集群214A-214N) 内而不是被包括在分区单元220内。在此类实施例中,通过存储器交叉开关216 来传送对像素数据而非像素片段数据的读取和写入请求。经处理的图形数据可 被显示在显示设备(诸如,图1的一个或多个显示设备110A-110B中的一个显 示设备)上,被路由以用于由(一个或多个)处理器102进一步处理,或者被 路由以用于由图2A的并行处理器200内的处理实体中的一个处理实体进一步 处理。
图2C是并行处理单元内的处理集群214的框图。例如,处理集群 是图2A的处理集群214A-214N中的一个处理集群的实例。处理集群214可被 配置成用于并行地执行许多线程,其中,术语“线程”是指对特定的输入数据的 集合执行的特定程序的实例。任选地,可使用单指令多数据(single-instruction, multiple-data,SIMD)指令发出技术以在不提供多个独立的指令单元的情况下 支持大量线程的并行执行。替代地,可使用单指令多线程(single-instruction, multiple-thread,SIMT)技术来使用被配置成用于向处理集群中的每个处理集 群内的处理引擎的集合发出指令的共同的指令单元来支持大量总体上同步的 线程的并行执行。与其中所有处理引擎典型地执行相同指令的SIMD执行机制 不同,SIMT执行允许不同的线程更容易地遵循通过给定的线程程序的发散的 执行路径。本领域技术人员将理解,SIMD处理机制表示SIMT处理机制的功 能子集。
可以经由将处理任务分发给SIMT并行处理器的管线管理器232来 控制处理集群214的操作。管线管理器232接收来自图2A的调度器210的指 令,并且经由图形多处理器234和/或纹理单元236来管理那些指令的执行。所 图示的图形多处理器234是SIMT并行处理器的示例性实例。然而,可将不同 体系结构的各种类型的SIMT并行处理器包括在处理集群214内。图形多处理 器234的一个或多个实例可被包括在处理集群214内。图形多处理器234可以 处理数据,并且数据交叉开关240可以用于将经处理的数据分发到多个可能的 目的地中的一个目的地,多个可能的目的地包括其他着色器单元。管线管理器 232可通过指定用于要经由数据交叉开关240分发的经处理的数据的目的地来 促进经处理的数据的分发。
处理集群214内的每个图形多处理器234可以包括相同的功能执行 逻辑集合(例如,算术逻辑单元、加载-存储单元等)。能以管线化的方式配 置功能执行逻辑,按照该管线化的方式,新指令可在先前指令完成之前被发出。 功能执行逻辑支持各种操作,包括整数和浮点算术、比较操作、布尔操作、比 特移位、以及各种代数函数的计算。可利用相同的功能单元硬件来执行不同的 操作,并且功能单元的任何组合可以存在。
被传送至处理集群214的指令构成线程。跨并行处理引擎的集合执 行的线程的集合是线程组。线程组对不同的输入数据执行相同的程序。线程组 内的每个线程可被指派给图形多处理器234内的不同的处理引擎。线程组可包 括比图形多处理器234内的处理引擎的数量更少的线程。当线程组包括比处理 引擎的数量更少的线程时,处理引擎中的一个或多个处理引擎在其间线程组正 被处理的周期期间可以是空闲的。线程组也可包括比图形多处理器234内的处 理引擎的数量更多的线程。当线程组包括比图形多处理器234内的处理引擎的 数量更多的线程时,可在连续的时钟周期内执行处理。任选地,可在图形多处 理器234上并发地执行多个线程组。
图形多处理器234可包括内部缓存存储器,以执行加载和存储操作。 任选地,图形多处理器234可放弃内部缓存,并使用处理集群214内的缓存存 储器(例如,第一级(level1,L1)缓存248)。每个图形多处理器234还具 有对分区单元(例如,图2A的分区单元220A-220N)内的第二级(L2)缓存 的访问权,这些L2缓存在所有处理集群214之间被共享,并且可被用于在线 程之间传输数据。图形多处理器234还可访问片外全局存储器,该片外全局存储器可包括本地并行处理器存储器和/或系统存储器中的一个或多个。并行处理 单元202外部的任何存储器可被用作全局存储器。在其中处理集群214包括图 形多处理器234的多个实例的实施例可共享共同的指令和数据,该共同的指令 和数据可被存储在L1缓存248中。
每个处理集群214可包括被配置成用于将虚拟地址映射到物理地址 的MMU 245(memory management unit,存储器管理单元)。在其他实施例 中,MMU 245的一个或多个实例可驻留在图2A的存储器接口218内。MMU 245包括用于将虚拟地址映射到片的物理地址的页表条目(page table entry, PTE)的集合,并且任选地包括缓存行索引。MMU 245可包括可驻留在图形多 处理器234或L1缓存或处理集群214内的地址转译后备缓冲器(translation lookaside buffer,TLB)或缓存。物理地址被处理,以分发表面数据访问局部 性,从而允许分区单元之间的高效的请求交织。缓存行索引可用于确定对缓存 行的请求是命中还是未命中。
在图形和计算应用中,处理集群214可被配置成使得每个图形多处 理器234耦合至纹理单元236以用于执行纹理映射操作,例如,确定纹理样本 位置、读取纹理数据以及过滤纹理数据。纹理数据从内部纹理L1缓存(未示 出)中被读取,或者在一些实施例中,从图形多处理器234内的L1缓存中被 读取,并且根据需要从L2缓存、本地并行处理器存储器或系统存储器被取得。 每个图形多处理器234将经处理的任务输出到数据交叉开关240,以将经处理 器的任务提供给另一处理集群214以用于进一步处理,或经由存储器交叉开关 216将经处理的任务存储在L2缓存、本地并行处理器存储器或系统存储器中。 preROP 242(pre-raster operations unit,预先栅格操作单元)被配置成用于从 图形多处理器234接收数据,将数据引导至ROP单元,这些ROP单元可与如 本文中所描述的分区单元(例如,图2A的分区单元220A-220N)一起被定位。 preROP 242单元可针对颜色混合执行优化,组织像素颜色数据,并且执行地址 转译。
将领会,本文中所描述的核心体系结构是说明性的,并且变体和修 改是可能的。可将任何数量的处理单元(例如,图形多处理器234、纹理单元 236、preROP 242等)包括在处理集群214内。进一步地,虽然示出仅一个处 理集群214,但是如本文中所描述的并行处理单元可包括处理集群214的任何 数量的实例。任选地,每个处理集群214可被配置成用于使用单独且不同的处 理单元、L1缓存、L2缓存等来独立于其他处理集群214进行操作。
图2D示出图形多处理器234的示例,其中图形多处理器234与处 理集群214的管线管理器232耦合。图形多处理器234具有执行管线,该执行 管线包括但不限于指令缓存252、指令单元254、地址映射单元256、寄存器堆 258、一个或多个通用图形处理单元(GPGPU)核心262以及一个或多个加载/ 存储单元266。GPGPU核心262和加载/存储单元266经由存储器和缓存互连 268与缓存存储器272和共享存储器270耦合。图形多处理器234可附加地包 括张量/或光线追踪核心263,该张量和/或光线追踪核心263包括用于加速矩 阵和/或光线追踪操作的硬件逻辑。
指令缓存252可从管线管理器232接收要执行的指令流。指令被缓 存在指令缓存252中,并且被调遣以供由指令单元254执行。指令单元254可 以将指令作为线程组(例如,单元组(warp))进行调遣,其中,线程组中的 每个线程被指派给GPGPU核心262内的不同的执行单元。指令可通过指定统 一地址空间内的地址来访问本地地址空间、共享地址空间或全局地址空间中的 任一者。可以使用地址映射单元256将统一地址空间中的地址转译为可以由加 载/存储单元266访问的不同的存储器地址。
寄存器堆258为图形多处理器234的功能单元提供寄存器的集合。 寄存器堆258为连接到图形多处理器234的功能单元(例如,GPGPU核心262、 加载/存储单元266)的数据路径的操作对象提供临时存储。寄存器堆258可在 功能单元中的每个功能单元之间进行划分,使得每个功能单元被分配寄存器堆 258的专用部分。例如,寄存器堆258可在由图形多处理器234执行的不同单 元组之间进行划分。
GPGPU核心262可以各自包括用于执行图形多处理器234的指令 的浮点单元(floating point unit,FPU)和/或整数算术逻辑单元(arithmetic logic unit,ALU)。在一些实现方式中,GPGPU核心262可包括能以其他方式驻留 在张量和/或光线追踪核心263内的硬件逻辑。GPGPU核心262在体系结构上 可以是类似的,或者在体系结构上可以是不同的。例如并且在一个实施例中, GPGPU核心262的第一部分包括单精度FPU和整数ALU,而GPGPU核心的 第二部分包括双精度FPU。任选地,FPU可实现针对浮点算术的IEEE 754-2008标准,或启用可变精度浮点算术。图形多处理器234可附加地包括用于执行特 定功能的一个或多个固定功能或特殊功能单元,该特定功能诸如复制矩形或像 素混合操作。GPGPU核心中的一个或多个GPGPU核心还可包括固定功能或 特殊功能逻辑。
GPGPU核心262可包括能够对数据的多个集合执行单个指令的 SIMD逻辑。任选地,GPGPU核心262可以物理地执行SIMD4、SIMD8和 SIMD16指令,并且在逻辑上执行SIMD1、SIMD2和SIMD32指令。针对GPGPU 核心的SIMD指令可以由着色器编译器在编译时生成,或在执行针对单程序多 数据(single program multiple data,SPMD)或SIMT体系结构而编写并且编 译的程序时自动地生成。可以经由单个SIMD指令来执行被配置成用于SIMT 执行模型的程序的多个线程。例如并且在一个实施例中,可以经由单个SIMD8 逻辑单元来并行地执行八个SIMT线程,这八个SIMT线程执行相同或类似的 操作。
存储器和缓存互连268是将图形多处理器234的功能单元中的每个 功能单元连接到寄存器堆258并连接至共享存储器270的互连网络。例如,存 储器和缓存互连268是允许加载/存储单元266实现共享存储器270与寄存器堆 258之间的加载和存储操作的交叉开关互连。寄存器堆258能以与GPGPU核 心262相同的频率进行操作,因此GPGPU核心262与寄存器堆258之间的数 据传输是非常低等待时间的。共享存储器270可用于启用在图形多处理器234 内的功能单元上执行的线程之间的通信。缓存存储器272可被用作数据缓存, 例如,以对在功能单元与纹理单元236之间传递的纹理数据进行缓存。共享存 储器270还可被用作被管理的经缓存的程序。共享存储器270和缓存存储器272 可与数据交叉开关240耦合,以实现与处理集群的其他部件的通信。在GPGPU 核心262上执行的线程除了被存储在缓存存储器272内的被自动缓存的数据之 外还能以编程方式将数据存储在共享存储器内。
图3A-图3C图示根据实施例的附加的图形多处理器。图3A-图3B 图示图形多处理器325、350,图形多处理器325、350与图2C的图形多处理 器234相关,并且可替代那些图形多处理器中的一个来被使用。因此,本文中 结合图形多处理器234对任何特征的公开也公开了对应的与图形多处理器325、 350的结合,但不限于此。图3C图示图形处理单元(GPU)380,该GPU 380 包括布置为多核心组365A-365N的专用的图形处理资源集合,多核心组365A-365N与图形多处理器325、350对应。所图示的图形多处理器325、350 和多核心组365A-365N可以是能够同时执行大量执行线程的流式多处理器 (streamingmultiprocessors,SM)。
图3A的图形多处理器325包括相对于图2D的图形多处理器234 的、执行资源单元的多个附加实例。例如,图形多处理器325可包括指令单元 332A-332B、寄存器堆334A-334B和(一个或多个)纹理单元344A-344B的多 个实例。图形多处理器325还包括多个图形或计算执行单元集合(例如,GPGPU 核心336A-336B、张量核心337A-337B、光线追踪核心338A-338B)以及多个 加载/存储单元集合340A-340B。执行资源单元具有共同的指令缓存330、纹理 和/或数据缓存存储器342、以及共享存储器346。
各部件可以经由互连结构327进行通信。互连结构327可包括一个 或多个交叉开关以实现图形多处理器325的各部件之间的通信。互连结构327 是单独的、高速网络结构层,图形多处理器325的每个部件堆叠在该网络结构 层上。图形多处理器325的部件经由互连结构327与远程部件通信。例如,核 心336A-336B、337A-337B以及338A-338B可以各自经由互连结构327与共 享存储器346通信。互连结构327可对图形多处理器325内的通信进行仲裁, 以确保部件之间公平的带宽分配。
图3B的图形多处理器350包括多个执行资源集合356A-356D,其 中,如图2D和图3A中所图示,每个执行资源集合包括多个指令单元、寄存 器堆、GPGPU核心以及加载存储单元。执行资源356A-356D可与用于纹理操 作的(一个或多个)纹理单元360A-360D协同地工作,同时共享指令缓存354 和共享存储器353。例如,执行资源356A-356D可共享指令缓存354和共享存 储器353以及纹理和/或数据缓存存储器358A-358B的多个实例。各部件可经由与图3A的互连结构327类似的互连结构352进行通信。
本领域技术人员将理解,图1、图2A-图2D以及图3A-图3B中所 描述的体系结构是描述性的,并且在当前实施例的范围方面不是限制性的。因 此,本文中描述的技术可在任何经适当地配置的处理单元上实现而不背离本文 中描述的实施例的范围,这些处理单元包括但不限于:一个或多个移动应用处 理器;一个或多个桌面型电脑或服务器中央处理单元(central processing unit, CPU),包括多核心CPU;一个或多个并行处理器单元,诸如,图2A的并行 处理单元202以及一个或多个图形处理器或专用处理单元。
本文中所描述的并行处理器或GPGPU可通信地耦合至主机/处理器 核心以加速图形操作、机器学习操作、模式分析操作以及各种通用GPU (GPGPU)功能。GPU可通过总线或另一互连(例如,高速互连,诸如,PCIe、 NVLink或其他已知的协议、标准化协议、或专属协议)通信地耦合至主机处 理器/核心。在其他实施例中,GPU可集成在与核心相同的封装或芯片上,并 且通过内部处理器总线/互连(即,在封装或芯片内部)通信地耦合至核心。无 论GPU被连接所采取的方式如何,处理器核心都可将工作以工作描述符中所 包含的命令/指令序列的形式分配给GPU。GPU随后使用专用电路/逻辑来高效 地处理这些命令/指令。
图3C图示图形处理单元(GPU)380,该GPU 380包括布置为多 核心组365A-365N的专用的图形处理资源集合。虽然提供仅单个多核心组 365A的细节,但是将领会,其他多核心组365B-365N可配备有相同或类似的 图形处理资源集合。关于多核心组365A-365描述的细节还可应用于本文中描 述的任何图形多处理器234、325、350。
如所图示,多核心组365A可包括图形核心的集合370、张量核心 的集合371以及光线追踪核心的集合372。调度器/调遣器368调度和调遣图形 线程以用于在各个核心370、371、372上执行。寄存器堆的集合369存储在执 行图形线程时由核心370、371、372使用的操作对象值。这些寄存器堆可包括 例如用于存储整数值的整数寄存器、用于存储浮点值的浮点寄存器、用于存储 紧缩(packed)数据元素(整数和/或浮点数据元素)的向量寄存器以及用于存 储张量/矩阵值的片寄存器。片寄存器可被实现为向量寄存器的经组合的集合。
一个或多个经组合的第一级(L1)缓存和共享存储器单元373在本 地将图形数据存储在每个多核心组365A内,图形数据诸如纹理数据、顶点数 据、像素数据、光线数据、包围体数据等。一个或多个纹理单元374也可用于 执行纹理操作,诸如,纹理映射和采样。由所有多核心组365A-365N或多核心 组365A-365N的子集共享的第二级(L2)缓存375存储用于多个并发的图形 线程的图形数据和/或指令。如所图示,可跨多个多核心组365A-365N共享L2 缓存375。一个或多个存储器控制器367将GPU 380耦合至存储器366,该存 储器366可以是系统存储器(例如,DRAM)和/或专用图形存储器(例如, GDDR6存储器)。
输入/输出(Input/output,I/O)电路363将GPU 380耦合至一个或 多个I/O设备362,这一个或多个I/O设备362诸如数字信号处理器(digital signal processor,DSP)、网络控制器或用户输入设备。片上互连可用于将I/O 设备362耦合至GPU 380和存储器366。I/O电路363的一个或多个I/O存储 器管理单元(I/O memory management unit,IOMMU)364直接将I/O设备362 耦合至系统存储器366。任选地,IOMMU 364管理用于将虚拟地址映射到系统存储器366中的物理地址的多个页表集合。I/O设备362、(一个或多个) CPU 361和(一个或多个)GPU 380随后可共享相同的虚拟地址空间。
在IOMMU 364的一个实现方式中,IOMMU 364支持虚拟化。在这 种情况下,IOMMU364可以管理用于将宾客/图形虚拟地址映射到宾客/图形物 理地址的第一页表集合以及用于将宾客/图形物理地址映射到(例如,系统存储 器366内的)系统/主机物理地址的第二页表集合。第一页表集合和第二页表集 合中的每一个的基址可被存储在控制寄存器中,并且在上下文切换时被换出 (例如,使得新上下文被提供有对相关页表集合的访问权)。虽然未在图3C 中图示,但是核心370、371、372和/或多核心组365A-365N中的每一个可包 括转译后备缓冲器(TLB),这些TLB用于对宾客虚拟至宾客物理转译、宾客 物理至主机物理转译以及宾客虚拟至主机物理转译进行缓存。
(一个或多个)CPU 361、GPU 380和I/O设备362可以被集成在 单个半导体芯片和/或芯片封装上。所图示的存储器366可集成在同一芯片上, 或者可经由片外接口被耦合至存储器控制器367。在一个实现方式中,存储器 366包括共享与其他物理系统级存储器相同的虚拟地址空间的GDDR6存储器, 但是本文中描述的基本原理不限于该特定的实现方式。
张量核心371可包括专门被设计成用于执行矩阵操作的多个执行单 元,这些矩阵操作是用于执行深度学习操作的基本计算操作。例如,可将同步 矩阵乘法操作用于神经网络训练和推断。张量核心371可使用各种操作对象精 度来执行矩阵处理,各种操作对象精度包括单精度浮点(例如,32比特)、半 精度浮点(例如,16比特)、整数字(16比特)、字节(8比特)和半字节(4 比特)。例如,神经网络实现方式提取每个经渲染场景的特征,从而潜在地组 合来自多个帧的细节,以构建高质量的最终图像。
在深度学习实现方式中,可调度并行的矩阵乘法工作以用于在张量 核心371上执行。神经网络的训练尤其需要大量矩阵点积操作。为了处理N x N x N矩阵乘法的内积公式化,张量核心371可包括至少N个点积处理元件。在 矩阵乘法开始之前,一个完整的矩阵被加载到片寄存器中,并且对于N个循环 中的每个循环,第二矩阵的至少一列被加载。对于每个循环,存在被处理的N 个点积。
取决于特定的实现方式,能以不同精度来存储矩阵元素,包括16 比特的字、8比特的字节(例如,INT8)以及4比特的半字节(例如,INT4)。 可为张量核心371指定不同的精度模式以确保将最高效的精度用于不同的工作 负载(例如,诸如推断工作负载,其可容忍至字节和半字节的量化 (quantization))。所支持的格式附加地包括64比特浮点(64-bitfloating point, FP64)和非IEEE浮点格式,诸如,bfloat16格式(例如,Brain浮点)、具有一个符号比特、八个指数比特和八个有效数字比特(其中的七个被显式地存储) 的16比特浮点格式。一个实施例包括对降低精度的张量浮点格式(TF32)的 支持,该TF32具有FP32(8比特)的范围和FP16(10比特)的精度执行计 算。能以相对于FP32更高的性能以及相对于FP16增加的精度对FP32输入执 行降低精度的TF32操作并产生FP32输出。
在一个实施例中,张量核心371支持用于在其中绝大多数值为零的 矩阵的稀疏操作模式。张量核心371包括对以稀疏矩阵表示(例如,坐标列表 编码(COO)、压缩稀疏行(CSR)、压缩稀疏列(CSC)等)来编码的稀疏 输入矩阵的支持。张量核心371还包括对在稀疏矩阵表示可被进一步压缩的情 况下的经压缩的稀疏矩阵表示的支持。经压缩的矩阵数据、经编码的矩阵数据 和/或经压缩且经编码的矩阵数据以及相关联的压缩和/或编码元数据可由张量 核心371读取,并且非零值可被提取。例如,对于给定的输入矩阵A,非零值 可从矩阵A的至少部分的经压缩的和/或经编码的表示来加载。基于矩阵A中 非零值的位置(其可从与非零值相关联的索引或坐标元数据确定),输入矩阵 B中的对应值可被加载。取决于要执行的操作(例如,乘法),如果对应的值 是零值,则从输入矩阵B加载值可被绕过。在一个实施例中,对于某些操作(诸 如,乘法操作)的值的配对可由调度器逻辑预扫描,并且仅非零输入之间的操 作被调度。取决于矩阵A和矩阵B的维度以及要执行的操作,输出矩阵C可 以是密集或稀疏的。在输出矩阵C是稀疏的情况下且取决于张量核心371的配 置,输出矩阵C可以按压缩格式、稀疏编码或压缩稀疏编码被输出。
光线追踪核心372可加速用于实时光线追踪实现方式和非实时光线 追踪实现方式两者的光线追踪操作。具体而言,光线追踪核心372可包括光线 遍历/相交电路,该光线遍历/相交电路用于使用包围体层次体系(bounding volume hierarchy,BVH)来执行光线遍历并标识封围在BVH体积内的光线与 基元之间的相交。光线追踪核心372还可包括用于执行深度测试和剔除(例如, 使用Z缓冲器或类似布置)的电路。在一个实现方式中,光线追踪核心372与 本文中描述的图像降噪技术协同地执行遍历和相交操作,该图像降噪技术的至 少部分可在张量核心371上执行。例如,张量核心371可实现深度学习神经网 络以执行对由光线追踪核心372生成的帧的降噪。然而,(一个或多个)CPU 361、图形核心370和/或光线追踪核心372还可实现全部的降噪和/或深度学习 算法或降噪和/或深度学习算法中的部分。
此外,如上文所描述,可采用对于降噪的分布式方法,其中,GPU 380在通过网络或高速互连而耦合至其他计算设备的计算设备中。按照该分布 式方法,经互连的计算设备可共享神经网络学习/训练数据,以改善整个系统学 习执行用于不同类型的图像帧和/或不同的图形应用的降噪的速度。
光线追踪核心372可处理所有的BVH遍历和/或光线-基元相交,从 而使图形核心370免于被针对每条光线的数千个指令过载。例如,每个光线追 踪核心372包括用于执行包围盒测试(例如,用于遍历操作)的第一专业电路 集合和/或用于执行光线-三角形相交测试(例如,使已被遍历的光线相交)的 第二专业电路集合。因此,例如,多核心组365A可简单地启动光线探测,并 且光线追踪核心372独立地执行光线遍历和相交,并将命中数据(例如,命中、 无命中、多个命中等)返回到线程上下文。当光线追踪核心370执行遍历和相 交操作时,其他核心371、372被释放以执行其他图形或计算工作。
任选地,每个光线追踪核心372可包括用于执行BVH测试操作的 遍历单元和/或执行光线-基元相交测试的相交单元。相交单元生成“命中”、“无 命中”或“多个命中”响应,该相交单元将这些响应提供给适当的线程。在遍历 和相交操作期间,其他核心(例如,图形核心370和张量核心371)的执行资 源被释放以执行其他形式的图形工作。
在下文描述的一个任选实施例中,使用在其中工作被分布在图形核 心370与光线追踪核心372之间的混合式栅格化/光线追踪方法。
光线追踪核心372(和/或其他核心370、371)可包括对光线追踪指 令集的硬件支持,光线追踪指令集诸如:微软的DirectX光线追踪(DirectX Ray Tracing,DXR),其包括DispatchRays命令;以及光线生成着色器、最近命 中着色器、任何命中着色器和未命中着色器,它们使得能够为每个对象指派唯 一的着色器和纹理集合。可由光线追踪核心372、图形核心370和张量核心371 支持的另一光线追踪平台是Vulkan 1.1.85)。然而,要注意,本文中描述的基 本原理不限于任何特定的光线追踪ISA。
一般而言,各个核心372、371、370可支持包括用于以下各项中的 一项或多项的指令/函数的光线追踪指令集:光线生成、最近命中、任何命中、 光线-基元相交、逐基元和层次体系包围盒构建、未命中、拜访和异常。更具 体地,优选的实施例包括用于执行以下功能中的一项或多项的光线追踪指令:
光线生成——可为每个像素、样本或其他用户定义的工作指派执行 光线生成指令。
最近命中——可执行最近命中指令以对场景内光线与基元的最近 交点定位。
任何命中——任何命中指令标识场景内光线与基元之间的多个相 交,从而潜在地标识新的最近交点。
相交——相交指令执行光线-基元相交测试并输出结果。
逐基元包围盒构建——该指令围绕给定的基元或基元组建立包围 盒(例如,当建立新BVH或其他加速数据结构时)。
未命中——指示光线未命中场景或场景的指定区域内的所有几何 体。
拜访——指示光线将遍历的子容体。
异常——包括各种类型的异常处置器(例如,针对各种错误条件被 调用)。
在一个实施例中,光线追踪核心372可适于加速通用计算操作,这 些通用计算操作可使用与光线相交测试类似的计算技术来加速。可提供计算框 架,该计算框架使着色器程序能够被编译为经由光线追踪核心执行通用计算操 作的低级别指令和/或基元。可受益于在光线追踪核心372上执行的计算操作的 示例性计算问题包括涉及坐标空间内光束、波、光线或粒子传播的计算。可相 对于坐标空间内的几何体或网格计算与那个传播相关联的交互。例如,与通过 环境的电磁信号传播相关联的计算可经由使用经由光线追踪核心被执行的指 令或基元来加速。信号通过环境中的对象发生的折射和反射可被计算为直接的光线追踪模拟。
光线追踪核心372还可用于执行不直接与光线追踪类似的计算。例 如,可使用光线追踪核心372来加速网格投影、网格细化和体积采样计算。还 可执行通用坐标空间计算,诸如,最近邻计算。例如,可通过定义坐标空间中 围绕给定点的包围盒来发现该点附近的点的集合。随后可使用光线追踪核心 372内的BVH和光线探测逻辑来确定包围盒内点相交的集合。相交构成原点 以及那个原点的最近邻。可并行于在图形核心372和张量核心371上执行的计 算来执行使用光线追踪核心372执行的计算。着色器编译器可被配置成用于将计算着色器或其他通用图形处理程序编译为能够跨图形核心370、张量核心371 和光线追踪核心372被并行化的低级别基元。
用于GPU至主机处理器互连的技术
图4A图示在其中多个GPU 410-413(例如,诸如图2A中示出的并 行处理器200)通过高速链路440A-440D(例如,总线、点到点互连等)通信 地耦合至多个多核心处理器405-406的示例性体系结构。取决于实现方式,高 速链路440A-440D可支持4GB/s、30GB/s、80GB/s或更高的通信吞吐量。可 使用各种互连协议,包括但不限于PCIe 4.0或5.0和NVLink2.0。然而,本文 中描述的基本原理不限于任何特定的通信协议或吞吐量。
GPU 410-413中的两个或更多个可通过高速链路442A-442B被互连, 高速链路442A-442B可使用与针对高速链路440A-440D使用的那些协议/链路 相同或不同的协议/链路来实现。类似地,多核心处理器405-406中的两个或更 多个可通过高速链路443进行连接,该高速链路443可以是在20GB/s、30GB/s、 120GB/s或者更低或更高速度下进行操作的对称多处理器(symmetric multi-processor,SMP)总线。替代地,图4A中示出的各种系统部件之间的 所有通信可使用相同的协议/链路(例如,通过共同的互连结构)来实现。然而,如所提及,本文中描述的基本原理不限于任何特定类型的互连技术。
每个多核心处理器405-406中的每一个可分别经由存储器互连 430A-430B通信地耦合至处理器存储器401-402,并且每个GPU 410-413分别 通过GPU存储器互连450A-450D通信地耦合至GPU存储器420-423。存储器 互连430A-430B和450A-450D可利用相同或不同的存储器访问技术。作为示 例并且不作为限制,处理器存储器401-402和GPU存储器420-423可以是诸如 动态随机存取存储器(DRAM)(包括堆叠式DRAM)、图形DDR SDRAM (GDDR)(例如,GDDR5、GDDR6)、或高带宽存储器(HBM)之类的易 失性存储器,并且/或者可以是诸如3D Xpoint/Optane或Nano-Ram之类的非易 失性存储器。例如,存储器的某个部分可以是易失性存储器,并且另一部分可 以是非易失性存储器(例如,使用两级存储器(two-levelmemory,2LM)层 次体系)。本文中描述的存储器子系统可与数种存储器技术兼容,这些存储器 技术诸如由JEDEC(Joint Electronic Device Engineering Council,联合电子 设备工程委员会)发布的双倍数据速率版本。
如下文所描述,尽管各处理器405-406和GPU 410-413可分别物理 地耦合至特定的存储器401-402、420-423,但是可实现在其中同一虚拟系统地 址空间(也被称为“有效地址”空间)在所有的各种物理存储器之间分布的统一 存储器体系结构。例如,处理器存储器401-402各自可包括64GB的系统存储 器地址空间,并且GPU 420-423各自可包括32GB的系统存储器地址空间(从 而在该示例中产生总共256GB的可寻址存储器)。
图4B图示多核心处理器407与图形加速模块446之间的互连的附 加的任选细节。图形加速模块446可包括集成在线卡上的一个或多个GPU芯 片,该线卡经由高速链路440耦合至处理器407。替代地,图形加速模块446 可集成在与处理器407相同的封装或芯片上。
所图示的处理器407包括多个核心460A-460D,这些核心各自具有 转译后备缓冲器461A-461D以及一个或多个缓存462A-462D。核心可包括用 于执行指令并处理数据的各种其他部件,未图示出这些部件以避免使本文中描 述的部件(例如,指令取得单元、分支预测单元、解码器、执行单元、重排序 缓冲器等)的基本原理模糊。缓存462A-462D可包括第一级(L1)缓存和第 二级(L2)缓存。此外,一个或多个共享缓存456可被包括在缓存层次体系中, 并由核心的集合460A-460D共享。例如,处理器407的一个实施例包括24个 核心,这些核心各自具有其自身的L1缓存、十二个共享L2缓存以及十二个共 享L3缓存。在该实施例中,L2缓存和L3缓存中的一者由两个相邻的核心共 享。处理器407和图形加速器集成模块446与系统存储器441连接,该系统存 储器441可包括处理器存储器401-402。
经由通过一致性总线464的核心间通信为存储在各缓存462A-462D、 456和系统存储器441中的数据和指令维持一致性。例如,每个缓存可具有与 其相关联的缓存一致性逻辑/电路,以响应于检测到的对特定缓存行的读取或写 入而通过一致性总线464进行通信。在一个实现方式中,通过一致性总线464 实现缓存监听协议,以监听缓存访问。缓存监听/一致性技术为本领域技术人员 很好地理解,并且将不在此详细描述,以避免使本文中描述的基本原理模糊。
可以提供将图形加速模块446通信地耦合至一致性总线464的代理 电路425,从而允许图形加速模块446作为核心的对等方参与缓存一致性协议。 具体而言,接口435提供通过高速链路440(例如,PCIe总线、NVLink等) 而至代理电路425的连接性,并且接口437将图形加速模块446连接到高速链 路440。
在一个实现方式中,加速器集成电路436代表图形加速模块446的 多个图形处理引擎431、432…N提供缓存管理、存储器访问、上下文管理以及 中断管理服务。图形处理引擎431、432…N各自可包括分开的图形处理单元 (GPU)。替代地,图形处理引擎431、432…N可包括GPU内的不同类型的 图形处理引擎,诸如,图形执行单元、媒体处理引擎(例如,视频编码器/解码 器)、采样器以及块图像传输(block image transfer,BLIT)引擎。换言之,图形加速模块可以是具有多个图形处理引擎431-432…N的GPU,或者图形处 理引擎431-432…N可以是集成在共同的封装、线卡或芯片上的单独的GPU。
加速器集成电路436可包括存储器管理单元(MMU)439,该MMU 439用于执行诸如虚拟到物理存储器转译(也称为有效到实际存储器转译)之 类的各种存储器管理功能以及用于访问系统存储器441的存储器访问协议。 MMU 439还可包括用于对虚拟/有效到物理/实际地址转译进行缓存的转译后 备缓冲器(TLB)(未示出)。在一个实现方式中,缓存438存储用于由图形 处理引擎431、432…N高效访问的命令和数据。存储在缓存438和图形存储器433-434…M中的数据可被保持与核心缓存462A-462D、456和系统存储器441 一致。如所提及,这可经由代理电路425来完成,该代理电路425代表缓存438 和存储器433-434…M参与缓存一致性机制(例如,向缓存438发送与处理器 缓存462A-462D、456上的缓存行的修改/访问相关的更新,并从缓存438接收 更新)。
寄存器的集合445存储用于由图形处理引擎431-432…N执行的线 程的上下文数据,并且上下文管理电路448管理这些线程上下文。例如,上下 文管理电路448可执行保存和恢复操作,以在上下文切换期间保存和恢复各线 程的上下文(例如,其中第一线程被保存并且第二线程被恢复,使得第二线程 可由图形处理引擎执行)。例如,在上下文切换时,上下文管理电路448可将 当前寄存器值存储到存储器中的指定区域(例如,由上下文指针标识)。当返 回到该上下文时,其随后可恢复寄存器值。中断管理电路447例如可从系统设备接收中断,并处理从系统设备接收的中断。
在一个实现方式中,由MMU 439将来自图形处理器引擎431的虚 拟/有效地址转译为系统存储器441中的实际/物理地址。任选地,加速器集成 电路436支持多个(例如,4个、8个、16个)图形加速器模块446和/或其他 加速器设备。图形加速器模块446可专用于在处理器407上执行的单个应用, 或者可在多个应用之间被共享。任选地,提供虚拟化图形执行环境,在该虚拟 化图形执行环境中,图形处理引擎431-432…N的资源与多个应用、虚拟机(virtual machine,VM)或容器共享。资源可被细分为“切片”,这些切片基于 与VM和/或应用相关联的处理要求和优先级而被分配给不同的VM和/或应用。 VM和容器在本文中可以可互换地使用。
虚拟机(VM)可以是运行操作系统以及一个或多个应用的软件。 VM可由规范、配置文件、虚拟盘文件、非易失性随机存取存储器(non-volatile random access memory,NVRAM)设置文件和日志文件来定义,并且由主机 计算平台的物理资源来备份。VM可包括被安装在模仿专用硬件的软件上的操 作系统(operating system,OS)或应用环境。终端用户在虚拟机上具有如同 他们将在专用硬件上所具有的相同体验。被称为管理程序的专业化软件完全对 PC客户端或服务器的CPU、存储器、硬盘、网络和其他硬件资源进行仿真, 从而使虚拟机能够共享资源。管理程序可对彼此隔离的多个虚拟硬件平台进行 仿真,从而允许虚拟机在相同的底层物理主机上运行
Figure BDA0003922424690000281
Server、 VMware ESXi和其他操作系统。
容器可以是应用、配置和依赖关系的软件包,因此,应用在一个计 算环境到另一计算环境可靠地运行。容器可共享安装在服务器平台上的操作系 统,并且作为隔离的进程运行。容器可以是包含软件运行所需的任何内容(诸 如,系统工具、库和设置)的软件包。容器并不像传统的软件程序那样被安装, 这允许容器与其他软件隔离且与操作系统自身隔离。容器的隔离性质提供若干 益处。首先,容器中的软件将在不同环境中以相同方式运行。例如,包括PHP 和MySQL的容器可在
Figure BDA0003922424690000282
计算机和
Figure BDA0003922424690000283
机器两者上以完全相同的方 式运行。其次,容器提供增加的安全性,因为软件将不会影响主机操作系统。 虽然安装的应用会更改系统设置并修改资源(诸如,Windows注册表),但是 容器能够仅修改该容器内的设置。
因此,加速器集成电路436充当用于图形加速模块446的、到系统 的桥接器,并且提供地址转译和系统存储器缓存服务。在一个实施例中,为了 促进桥接功能,加速器集成电路436还可包括共享I/O 497(例如,PCIe、USB 或其他元件)和硬件,以实现对电压、时钟控制、性能、热和安全性的系统控 制。共享I/O 497可利用分开的物理连接,或者可跨越高速链路440。此外, 加速器集成电路436可提供虚拟化设施,以供主机处理器管理对图形处理引擎、 中断和存储器管理的虚拟化。
由于图形处理引擎431-432…N的硬件资源被显式地映射到由主机 处理器407看到的实际地址空间,因此任何主机处理器可以使用有效地址值来 直接对这些资源进行寻址。加速器集成电路436的一个任选功能是对图形处理 引擎431-432…N进行物理分离,使得它们对于系统显得像独立的单元。
一个或多个图形存储器433-434…M可分别耦合至图形处理引擎 431-432…N中的每一个。图形存储器433-434…M存储由图形处理引擎 431-432…N中的每一个处理的指令和数据。图形存储器433-434…M可以是诸 如DRAM(包括堆叠式DRAM)、GDDR存储器(例如,GDDR5、GDDR6) 或HBM之类的易失性存储器,并且/或者可以是诸如3D Xpoint/Optane、三星Z-NAND、或Nano-Ram之类的非易失性存储器。
为了减少高速链路440上的数据通信量,可使用偏置技术来确保存 储在图形存储器433-434…M中的数据是将由图形处理引擎431-432…N最频繁 地使用并且优选地不由核心460A-460D使用(至少不频繁地使用)的数据。类 似地,偏置机制尝试将核心(并且优选地不是图形处理引擎431-432…N)所 需要的数据保持在系统存储器441和核心的缓存462A-462D、456内。
根据图4C中示出的变体,加速器集成电路436被集成在处理器407 内。图形处理引擎431-432…N通过高速链路440、经由接口437和接口435 (其再次可利用任何形式的总线或接口协议)直接向加速器集成电路436通信。 加速器集成电路436可执行与关于图4B所描述的那些操作相同的操作,但是 考虑到该加速器集成电路436与一致性总线464和缓存462A-462D、456紧密 邻近,其潜在地能以较高的吞吐量执行操作。
所描述的实施例可支持不同的编程模型,这些编程模型包括专用进 程编程模型(无图形加速模块虚拟化)和共享编程模型(具有虚拟化)。后者 可包括受加速器集成电路436控制的编程模型以及受图形加速模块446控制的 编程模型。
在专用进程模型的实施例中,图形处理引擎431、432、…、N在单 个操作系统下可专用于单个应用或进程。单个应用可使其他应用请求漏到图形 引擎431、432、…、N,从而在VM/分区内提供虚拟化。
在专用进程编程模型中,图形处理引擎431、432…N可由多个VM/ 应用分区共享。共享模型要求系统管理程序使图形处理引擎431-432…N虚拟 化,以允许由每个操作系统进行的访问。对于不具有管理程序的单分区系统, 图形处理引擎431-432…N由操作系统拥有。在这两种情况下,操作系统可使 图形处理引擎431-432…N虚拟化,以提供对每个进程或应用的访问权。
对于共享编程模型,图形加速模块446或各个图形处理引擎 431-432…N使用进程句柄来选择进程要素。进程要素可被存储在系统存储器 441中,并且可以是使用本文中所描述的有效地址到实际地址转译技术而可寻 址的。进程句柄可以是在向图形处理引擎431-432…N注册其上下文(即,调 用系统软件以将进程要素添加到进程要素链表)时提供给主机进程的实现方式 特定的值。进程句柄的较低的16比特可以是进程要素在进程要素链表内的偏 移。
图4D图示示例性加速器集成切片490。如本文中所使用,“切片” 包括加速器集成电路436的处理资源的指定部分。系统存储器441内的应用有 效地址空间482存储进程要素483。进程要素483可响应于来自在处理器407 上执行的应用480的GPU调用481而被存储。进程要素483包含对应应用480 的进程状态。包含在进程要素483中的工作描述符(workdescriptor,WD) 484可以是由应用请求的单个作业,或者可包含指向作业队列的指针。在后一 种情况下,WD 484是指向应用的地址空间482中的作业请求队列的指针。
图形加速模块446和/或各个图形处理引擎431-432…N可以由系统 中的全部进程或系统中的进程的子集共享。例如,本文中描述的技术可包括用 于建立进程状态并将WD484发送至图形加速模块446以在虚拟化环境中开始 作业的基础设施。
在一个实现方式中,专用进程编程模型是实现方式特定的。在该模 型中,单个进程拥有图形加速模块446或单独的图形处理引擎431。由于图形 加速模块446由单个进程拥有,因此图形加速模块446被指派时,管理程序针 对拥有的分区对加速器集成电路436进行初始化,并且操作系统针对拥有的进 程对加速器集成电路436进行初始化。
在操作中,加速器集成切片490中的WD取得单元491取得下一 WD 484,该下一WD484包括要由图形加速模块446的图形处理引擎中的一 个图形处理引擎完成的工作的指示。如所图示,来自WD 484的数据可被存储 在寄存器445中,并且由MMU 439、中断管理电路447和/或上下文管理电路 448使用。例如,MMU 439可包括用于访问OS虚拟地址空间485内的段表/ 页表486的段/页走查电路。中断管理电路447可处理从图形加速模块446接收 的中断事件492。当执行图形操作时,由图形处理引擎431-432…N生成的有 效地址493由MMU439转译成实际地址。
相同的寄存器集合445针对每个图形处理引擎431-432…N和/或图 形加速模块446可被复制,并且可由管理程序或操作系统初始化。这些被复制 的寄存器中的每个寄存器可被包括在加速器集成切片490中。在一个实施例中, 每个图形处理引擎431-432…N可作为不同的图形处理器设备向管理程序496 呈现。可针对特定图形处理引擎431-432…N的客户端配置QoS设置,并且可 启用每个引擎的客户端之间的数据隔离。在表1中示出可由管理程序初始化的 示例性寄存器。
表1-管理程序初始化的寄存器
Figure BDA0003922424690000311
Figure BDA0003922424690000321
在表2中示出可由操作系统初始化的示例性寄存器。
表2-操作系统初始化的寄存器
1 进程和线程标识
2 有效地址(Effective Address,EA)上下文保存/恢复指针
3 虚拟地址(Virtual Address,VA)加速器利用记录指针
4 虚拟地址(VA)存储段表指针
5 权限掩码
6 工作描述符 
每个WD 484对于特定的图形加速模块446和/或图形处理引擎 431-432…N可以是特定的。它包含图形处理引擎431-432…N完成其工作所需 要的所有信息,或者它可以是指向应用已经建立要完成的工作的命令队列所在 的存储器位置的指针。
图4E图示共享模型的附加的任选细节。它包括进程要素列表499 被存储在其中的管理程序实际地址空间498。管理程序实际地址空间498是经 由管理程序496可访问的,管理程序496针对操作系统495使图形加速模块引 擎虚拟化。
共享编程模型允许来自系统中的全部分区或系统中的分区的子集 的全部进程或进程的子集使用图形加速模块446。存在在其中图形加速模块446 由多个进程和分区共享的两种编程模型:时分共享和图形定向共享。
在该模型中,系统管理程序496拥有图形加速模块446,并使其功 能对所有的操作系统495可用。为使图形加速模块446支持由系统管理程序496 进行的虚拟化,图形加速模块446可遵守以下要求:1)应用的作业请求必须 是自主的(即,状态不需要在作业之间被维持),或者图形加速模块446必须 提供上下文保存和恢复机制。2)由图形加速模块446保证应用的作业请求在 所指定的时间量内完成,包括任何转换错误,或者图形加速模块446提供抢占 对作业的处理的能力。3)图形加速模块446当在定向共享编程模型中操作时 必须被保证进程之间的公平性。
对于共享模型,可需要应用480来用图形加速模块446类型、工作 描述符(WD)、权限掩码寄存器(authority mask register,AMR)值和上下 文保存/恢复区域指针(contextsave/restore area pointer,CSRP)作出操作系 统495系统调用。图形加速模块446类型描述针对系统调用的目标加速功能。 图形加速模块446类型可以是系统特定值。特别针对图形加速模块446对WD 进行格式化,并且WD可以采用以下形式:图形加速模块446命令、指向用户 定义的结构的有效地址指针、指向命令队列的有效地址指针、或用于描述要由 图形加速模块446完成的工作的任何其他数据结构。在一个实施例中,AMR 值是要用于当前进程的AMR状态。值被传递到操作系统与应用设置AMR类 似。如果加速器集成电路436和图形加速模块446实现方式不支持用户权限掩 码覆盖寄存器(User Authority Mask OverrideRegister,UAMOR),则操作 系统可在管理程序调用中传递AMR之前将当前UAMOR值应用到AMR值。 管理程序496可在将AMR放置到进程要素483中之前任选地应用当前权限掩 码覆盖寄存器(Authority Mask Override Register,AMOR)值。CSRP可以是 包含应用的地址空间482中的区域的有效地址以供图形加速模块446用来保存 和恢复上下文状态的寄存器445中的一个寄存器。如果没有状态被要求以被保 存在作业之间或者当作业被抢占时,则该指针是任选的。上下文保存/恢复区域 可以是钉置(pinned)的系统存储器。
在接收到系统调用时,操作系统495可验证应用480已注册并且已 被给予使用图形加速模块446的权限。操作系统492随后利用表3中示出的信 息来调用管理程序496。
表3-OS对管理程序的调用参数
Figure BDA0003922424690000331
Figure BDA0003922424690000341
在接收管理程序调用时,管理程序496验证操作系统495已注册并 且已被给予使用图形加速模块446的权限。管理程序496随后将进程要素483 置于针对对应的图形加速模块446类型的进程要素链表中。进程要素可包括表 4中示出的信息。
表4-进程要素信息
1 工作描述符(WD)
2 权限掩码寄存器(AMR)值(潜在地被掩蔽)。
3 有效地址(EA)上下文保存/恢复区域指针(CSRP)
4 进程ID(PID)和任选的线程ID(TID)
5 虚拟地址(VA)加速器利用记录指针(AURP)
6 存储段表指针(SSTP)的虚拟地址
7 逻辑中断服务号(LISN)
8 中断向量表,从管理程序调用参数推导出。
9 状态寄存器(state register,SR)值
10 逻辑分区ID(logical partition ID,LPID)
11 实际地址(RA)管理程序加速器利用记录指针
12 存储描述符寄存器(Storage Descriptor Register,SDR) 
 管理程序可初始化多个加速器集成切片490的寄存器445。
如图4F中所图示,在一个任选实现方式中,采用经由共同的虚拟 存储器地址空间可寻址的统一存储器,该共同的虚拟存储器地址空间被用于访 问物理处理器存储器401-402和GPU存储器420-423。在该实现方式中,在 GPU 410-413上执行的操作利用同一虚拟/有效存储器地址空间来访问处理器 存储器401-402并且反之亦然,由此简化可编程性。虚拟/有效地址空间的第一 部分可被分配给处理器存储器401,第二部分可被分配给第二处理器存储器402, 第三部分可被分配给GPU存储器420,以此类推。整个虚拟/有效存储器空间 (有时被称为有效地址空间)由此可跨处理器存储器401-402和GPU存储器 420-423中的每一个分布,从而允许任何处理器或GPU利用映射到任一物理存 储器的虚拟地址来访问该物理存储器。
可提供MMU 439A-439E中的一个或多个MMU内的偏置/一致性管 理电路494A-494E,这些偏置/一致性管理电路494A-494E确保主机处理器(例 如,405)的缓存与GPU410-413的缓存之间的缓存一致性,并且实现指示某 些类型的数据应当被存储在其中的物理存储器的偏置技术。虽然在图4F中图 示偏置/一致性管理电路494A-494E的多个实例,但是可在一个或多个主机处 理器405的MMU内和/或在加速器集成电路436内实现偏置/一致性电路。
GPU附连的存储器420-423可被映射为系统存储器的部分并使用共 享虚拟存储器(shared virtual memory,SVM)技术来访问,但是不遭受与完全 系统缓存一致性相关联的典型性能缺陷。GPU附连的存储器420-423在没有繁 重的缓存一致性开销的情况下作为系统存储器被访问的能力为GPU迁移提供 了有益的操作环境。该布置允许主机处理器405在没有传统的I/O DMA数据 复制的开销的情况下设置操作对象并访问计算结果。此类传统复制涉及驱动器 调用、中断、以及存储器映射的I/O(memory mapped I/O,MMIO)访问,它 们相对于简单的存储器访问全都是低效的。同时,在没有缓存一致性开销的情 况下访问GPU附连的存储器420-423的能力对于被迁移的计算的执行时间可 以是关键的。例如,在具有大量流式写入存储器通信量的情况下,缓存一致性 开销可能显著地降低由GPU 410-413看到的有效写入带宽。操作对象设置的效 率、结果访问的效率以及GPU计算的效率在确定GPU迁移的有效性时全都发 挥作用。
GPU偏置与主机处理器偏置之间的选择可由偏置跟踪器数据结构 驱动。例如,可使用偏置表,该偏置表可以是页粒度的结构(即,以存储器页 的粒度受控制),该页粒度的结构包括每GPU附连的存储器页的1个或2个 比特。偏置表可在一个或多个GPU附连的存储器420-423的偷取的存储器范 围中实现,在GPU 410-413中具有或不具有偏置缓存(例如,用于对偏置表的 频繁/最近使用的条目进行缓存)。替代地,整个偏置表可被维持在GPU内。
在一个实现方式中,在对GPU存储器的实际访问之前,访问与对 GPU附连的存储器420-423的每次访问相关联的偏置表条目,从而导致下列操 作。首先,来自GPU 410-413的、在GPU偏置中发现它们的页的本地请求直 接被转发至对应的GPU存储器420-423。来自GPU的、在主机偏置中发现它 们的页的本地请求被转发至处理器405(例如,如上文所讨论,通过高速链路)。 任选地,来自处理器405的、在主机处理器偏置中发现所请求的页的请求像正 常存储器读取那样完成该请求。替代地,涉及GPU偏置的页的请求可被转发 至GPU 410-413。如果GPU当前不是正在使用该页,则GPU随后可将该页转 变为主机处理器偏置。
可通过基于软件的机制、硬件辅助的基于软件的机制或对于有限的 情况集合而言通过基于纯硬件的机制来改变页的偏置状态。
一种用于改变偏置状态的机制采用API调用(例如,OpenCL), 其进而调用GPU的设备驱动器,该设备驱动器进而向GPU发送引导该GPU 改变偏置状态并针对一些转变在主机中执行缓存转储清除操作的消息(或使命 令描述符入列)。针对从主机处理器405偏置到GPU偏置的转变需要缓存转 储清除操作,但针对相反的转变不需要缓存转储清除操作。
可通过临时渲染不可由主机处理器405缓存的GPU偏置的页来维 持缓存一致性。为了访问这些页,处理器405可请求从GPU 410访问,取决于 实现方式,GPU 410可以或可以不准予立即访问。因此,为了减少主机处理器 405与GPU 410之间的通信,确保GPU偏置的页是GPU所需但不是主机处理 器405所需的那些页是有益的,并且反之亦然。
图形处理管线
图5图示图形处理管线500。图形多处理器(诸如,图2D中的图 形多处理器234、图3A的图形多处理器325、图3B的图形多处理器350)可 实现所图示的图形处理管线500。图形多处理器可被包括在如本文中所描述的 并行处理子系统内,并行处理子系统诸如图2A的并行处理器200,其可与图1 的(一个或多个)并行处理器112相关并且可替代那些并行处理器中的一个被 使用。各种并行处理器系统可经由如本文中所描述的并行处理单元(例如,图 2A的并行处理单元202)的一个或多个实例来实现图形处理管线500。例如, 着色器单元(例如,图2C的图形多处理器234)可被配置成用于执行以下一 者或多者的功能:顶点处理单元504、曲面细分控制处理单元508、曲面细分 评估处理单元512、几何处理单元516、以及片段/像素处理单元524。数据组 装器502、基元组装器506、514、518、曲面细分单元510、栅格化器522以及 栅格操作单元526的功能也可由处理集群(例如,图2A的处理集群214)内的其他处理引擎和对应的分区单元(例如,图2A的分区单元220A-220N)来 执行。图形处理管线500还可使用用于一个或多个功能的专用处理单元来实现。 图形处理管线500的一个或多个部分由通用处理器(例如,CPU)内的并行处 理逻辑执行也是可能的。任选地,图形处理管线500的一个或多个部分可以经 由存储器接口528来访问片上存储器(例如,如图2A中的并行处理器存储器 222),该存储器接口528可以是图2A的存储器接口218的实例。图形处理器 管线500还可经由如图3C中的多核心组365A来实现。
数据组装器502是可收集针对表面和基元的顶点数据的处理单元。 数据组装器502随后将顶点数据输出到顶点处理单元504,该顶点数据包括顶 点属性。顶点处理单元504是可编程执行单元,该可编程执行单元执行顶点着 色器程序,从而按照顶点着色器程序所指定地来照明以及变换顶点数据。顶点 处理单元504读取存储在缓存、本地或系统存储器中的数据以供在处理顶点数 据时使用,并且可被编程为用于将顶点数据从基于对象的坐标表示变换为世界 空间坐标空间或归一化设备坐标空间。
基元组装器506的第一实例从顶点处理单元504接收顶点属性。基 元组装器506根据需要读取所存储的顶点属性,并且构建图形基元以供由曲面 细分控制处理单元508进行处理。图形基元包括如由各种图形处理应用编程接 口(application programminginterface,API)支持的三角形、线段、点、补片 等。
曲面细分控制处理单元508将输入顶点视为几何补片的控制点。将 控制点从来自补片的输入表示(例如,补片的基础)变换为适合于在由曲面细 分评估处理单元512进行的表面评估中使用的表示。曲面细分控制处理单元 508还可计算几何补片的边(edge)的曲面细分因子。曲面细分因子应用于单 个边,并对与该边相关联的依赖于视图的细节级别进行量化。曲面细分单元510 被配置成用于接收补片的边的曲面细分因子,并且用于将补片曲面细分成多个 几何基元(诸如,线、三角形或四边形基元),这些几何基元被传送到曲面细分评估处理单元512。曲面细分评估处理单元512对经细分的补片的参数化坐 标进行操作,以生成与几何基元相关联的每个顶点的表面表示和顶点属性。
基元组装器514的第二实例根据需要从曲面细分评估处理单元512 接收顶点属性,读取所存储的顶点属性,并且构建图形基元以供几何处理单元 516进行处理。几何处理单元516是可编程执行单元,该可编程执行单元执行 几何着色器程序以按照几何着色器程序所指定地变换从基元组装器514接收到 的图形基元。几何处理单元516可被编程为用于将图形基元细分为一个或多个 新的图形基元并计算被用于对这些新的图形基元进行栅格化的参数。
几何处理单元516可以能够在几何流中添加或删除元素。几何处理 单元516向基元组装器518输出指定新的图形基元的参数和顶点。基元组装器 518从几何处理单元516接收参数和顶点,并构建图形基元以供视口缩放、剔 除和裁剪单元520进行处理。几何处理单元516读取被存储在并行处理器存储 器或系统存储器中的数据,以供在处理几何数据时使用。视口缩放、剔除和裁 剪单元520执行裁剪、剔除和视口缩放,并且将经处理的图形基元输出到栅格 化器522。
栅格化器522可执行深度剔除和其他基于深度的优化。栅格化器522 还对新的图形基元执行扫描转换以生成片段并将那些片段和相关联的覆盖数 据输出到片段/像素处理单元524。片段/像素处理单元524是被配置成用于执 行片段着色器程序或像素着色器程序的可编程执行单元。片段/像素处理单元524按照片段或像素着色器程序所指定地变换从栅格化器522接收的片段或像 素。例如,片段/像素处理单元524可被编程为用于执行包括但不限于纹理映射、 着色、混合、纹理校正和透视校正的操作,以产生被输出到栅格操作单元526 的经着色的片段或像素。片段/像素处理单元524可读取被存储在并行处理器存 储器或系统存储器中的数据,以供在处理片段数据时使用。片段或像素着色器 程序可被配置成用于取决于为处理单元配置的采样率而以样本、像素、片或其 他粒度进行着色。
栅格操作单元526是处理单元,该处理单元执行栅格操作并将像素 数据输出为要被存储在图形存储器(例如,如图2A中的并行处理器存储器222 和/或如图1中的系统存储器104)中、要在一个或多个显示设备110A-110B上 显示或用于由一个或多个处理器102或并行处理器112中的一个进一步处理的 经处理的图形数据,这些栅格操作包括但不限于模版印制、z测试、混合等等。 栅格操作单元526可被配置成用于压缩被写入到存储器的z数据或颜色数据并 对从存储器读取的z数据或颜色数据解压缩。
机器学习概述
上文描述的体系结构可被应用以执行使用机器学习模型的训练和 推断操作。机器学习在解决许多种类的任务方面已经是成功的。当训练和使用 机器学习算法(例如,神经网络)时产生的计算本身自然地适合于高效的并行 实现方式。相应地,诸如通用图形处理单元(GPGPU)之类的并行处理器已在 深度神经网络的实际实现方式中扮演了重要角色。具有单指令多线程(SIMT) 体系结构的并行图形处理器被设计成用于使图形管线中的并行处理的量最大 化。在SIMT体系结构中,成组的并行线程尝试尽可能频繁地一起同步地执行程序指令以增加处理效率。由并行机器学习算法实现方式提供的效率允许使用 高容量网络并且使得能够对较大的数据集训练那些网络。
机器学习算法是能够基于数据集合进行学习的算法。例如,机器学 习算法可以被设计成用于对数据集内的高级抽象进行建模。例如,可以使用图 像识别算法来确定给定的输入属于若干类别中的哪个类别;给定输入,回归算 法可以输出数值;并且可以使用模式识别算法来生成经转换的文本或者执行文 本到语音和/或语音识别。
示例性类型的机器学习算法是神经网络。存在许多类型的神经网络; 简单类型的神经网络是前馈网络。前馈网络可以被实现为在其中按层来布置节 点的非循环图。典型地,前馈网络拓扑包括由至少一个隐藏层分开的输入层和 输出层。隐藏层将由输入层接收到的输入变换为对在输出层中生成输出有用的 表示。网络节点经由边被完全连接到相邻层中的节点,但在每个层内的节点之 间不存在边。在前馈网络的输入层的节点处接收到的数据经由激活函数被传播 (即,“前馈”)至输出层的节点,该激活函数基于分别与连接这些层的边中的 每一条边相关联的系数(“权重”)来计算网络中每个连续层的节点的状态。取决于正由正被执行的算法表示的特定模型,来自神经网络算法的输出可以采用 各种形式。
在可使用机器学习算法对特定问题建模之前,使用训练数据集来训 练算法。训练神经网络涉及:选择网络拓扑;使用表示正由网络建模的问题的 训练数据的集合;以及调整权重,直到网络模型针对训练数据集的所有实例都 以最小误差执行。例如,在针对神经网络的有监督学习训练过程期间,由网络 响应于表示训练数据集中的实例的输入而产生的输出与该实例的“正确的”标 记输出进行比较,计算表示输出与标记输出之间的差异的误差信号,并且随着 误差信号通过网络的层被向后传播,调整与连接相关联的权重以使那个误差最 小化。当根据训练数据集的实例生成的输出中的每个输出的误差被最小化时,网络被认为是“经训练的”。
机器学习算法的准确度会显著地受用于训练算法的数据集的质量 影响。训练过程可能是计算密集型的,并且在常规通用处理器上可能需要大量 的时间。相应地,使用并行处理硬件来训练许多类型的机器学习算法。这对于 优化神经网络的训练是特别有用的,因为在调整神经网络中的系数时执行的计 算本身自然地适于并行实现方式。具体地,许多机器学习算法和软件应用已被 适配成利用通用图形处理设备内的并行处理硬件。
图6是机器学习软件栈600的广义图。机器学习应用602是能够被 配置成用于使用训练数据集来训练神经网络或使用经训练的深度神经网络来 实现机器智能的任何逻辑。机器学习应用602可包括用于神经网络的训练和推 断功能和/或可用于在部署之前训练神经网络的专业软件。机器学习应用602 可实现任何类型的机器智能,包括但不限于:图像识别、地图创建和定位、自 主导航、语音合成、医学成像或语言翻译。示例机器学习应用602包括但不限 于基于语音的虚拟助手、图像或面部识别算法、自主导航以及被用于训练由机器学习应用602使用的机器学习模型的软件工具。
可以经由机器学习框架604来启用用于机器学习应用602的硬件加 速。机器学习框架604可提供机器学习基元的库。机器学习基元是通常由机器 学习算法执行的基本操作。在没有机器学习框架604的情况下,将需要机器学 习算法的开发者创建和优化与机器学习算法相关联的主计算逻辑,随后在开发 新的并行处理器时重新优化计算逻辑。相反,机器学习应用可以被配置成使用 由机器学习框架604提供的基元来执行必要的计算。示例性基元包括张量卷积、 激活函数和池化,它们是在训练卷积神经网络(convolutionalneural network, CNN)时执行的计算操作。机器学习框架604还可以提供基元以实现由许多机 器学习算法执行的基本线性代数子程序,诸如,矩阵和向量操作。机器学习框 架604的示例包括但不限于TensorFlow(张量流)、TensorRT、PyTorch、MXNet、 Caffee以及其他高级机器学习框架。
机器学习框架604可处理从机器学习应用602接收到的输入数据, 并生成至计算框架606的适当输入。计算框架606可抽象出提供给GPGPU驱 动器608的底层指令,以使得机器学习框架604能够经由GPGPU硬件610来 利用硬件加速而无需机器学习框架604非常熟悉GPGPU硬件610的体系结构。 此外,计算框架606可以跨各种类型和世代的GPGPU硬件610来启用用于机 器学习框架604的硬件加速。示例性计算框架606包括CUDA计算框架和相 关联的机器学习库,诸如,CUDA深度神经网络(CUDA Deep Neural Network, cuDNN)库。机器学习软件栈600还可包括通信库或框架以促进多GPU和多 节点计算。
GPGPU机器学习加速
图7图示通用图形处理单元700,其可以是图2A的并行处理器200 或图1的(一个或多个)并行处理器112。通用处理单元(GPGPU)700可被 配置成用于提供对由机器学习框架提供的基元的硬件加速的支持,以加速处理 与训练深度神经网络相关联的类型的计算工作负载。此外,GPGPU 700可直接 链接到GPGPU的其他实例以创建多GPU集群,从而改善尤其是深度神经网络 的训练速度。基元也受支持以加速用于经部署的神经网络的推断操作。
GPGPU 700包括用于启用与主机处理器的连接的主机接口702。主 机接口702可以是PCI快速接口。然而,主机接口还可以是供应方特定的通信 接口或通信结构。GPGPU 700从主机处理器接收命令,并且使用全局调度器 704以将与那些命令相关联的执行线程分发给处理集群706A-706H的集合。处 理集群706A-706H共享缓存存储器708。缓存存储器708可充当用于处理集群 706A-706H内的缓存存储器的较高级别的缓存。所图示的处理集群706A-706H 可与如图2A中的处理集群214A-214N相对应。
GPGPU 700包括经由存储器控制器的集合712A-712B与处理集群 706A-706H耦合的存储器714A-714B。存储器714A-714B可包括各种类型的存 储器设备,包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如, 同步图形随机存取存储器(SGRAM),包括图形双倍数据速率(GDDR)存 储器。存储器714A-714B还可包括3D堆叠式存储器,包括但不限于高带宽存 储器(HBM)。
处理集群706A-706H中的每一个可包括图形多处理器的集合,诸如, 图2D的图形多处理器234、图3A的图形多处理器325、图3B的图形多处理 器350或者可包括如图3C中的多核心组365A-365N。计算集群的图形多处理 器包括能够以包括适用于机器学习计算的一系列精度来执行计算操作的多种 类型的整数和浮点逻辑单元。例如,处理集群706A-706H中的每一个计算集群 中的浮点单元的至少子集可被配置成用于执行16比特或32比特浮点操作,而 浮点单元的不同子集可被配置成用于执行64比特浮点操作。
GPGPU 700的多个实例可以被配置成作为计算集群进行操作。由计 算集群用于同步和数据交换的通信机制跨实施例而有所不同。例如,GPGPU 700的多个实例通过主机接口702进行通信。在一个实施例中,GPGPU 700包 括I/O中枢709,该I/O中枢709将GPGPU 710与GPU链路710耦合,该GPU 链路710启用至GPGPU的其他实例的直接连接。GPU链路710可耦合至专用 的GPU至GPU桥接器,该GPU至GPU桥接器启用GPGPU 700的多个实例 之间的通信和同步。任选地,GPU链路710与高速互连耦合,以将数据传送至 其他GPGPU或并行处理器并且从其他GPGPU或并行处理器接收数据。 GPGPU 700的多个实例可位于单独的数据处理系统中,并且可经由网络设备进 行通信,该网络设备可经由主机接口702来访问。附加于或替代于主机接口702, GPU链路710可被配置成用于启用至主机处理器的连接。
尽管GPGPU 700的所图示的配置可被配置成用于训练神经网络, 但是GPGPU 700的替代配置可被配置成用于在高性能或低功率推断平台内的 部署。在推断配置中,相对于训练配置,GPGPU 700包括处理集群706A-706H 中的更少的处理集群。此外,与存储器714A-714B相关联的存储器技术在推断 配置与训练配置之间可有所不同。在一个实施例中,GPGPU 700的推断配置可 支持推断特定指令。例如,推断配置可提供对一个或多个8比特整数或浮点点 积指令的支持,这一个或多个8比特整数点积指令通常在用于经部署的神经网络的推断操作期间被使用。
图8图示多GPU计算系统800。多GPU计算系统800可包括经由 主机接口开关804被耦合至多个GPGPU 806A-806D的处理器802。主机接口 开关804可以是将处理器802耦合至PCI快速总线的PCI快速开关设备,处理 器802能够通过该PCI快速总线与GPGPU806A-806D的集合通信。多个GPGPU 806A-806D中的每一个可以是图7的GPGPU 700的实例。GPGPU806A-806D 可经由高速点到点GPU至GPU链路816的集合来互连。高速GPU至GPU链 路可以经由专用GPU链路连接到GPGPU 806A-806D中的每一个,该专用GPU 链路诸如图7中的GPU链路710。P2P GPU链路816启用GPGPU 806A-806D 中的每一个GPGPU之间的直接通信,而不需要通过处理器802被连接到的主 机接口总线进行的通信。利用定向到P2P GPU链路的GPU至GPU通信量, 主机接口总线保持可用于系统存储器访问,或用于例如经由一个或多个网络设 备与多GPU计算系统800的其他实例通信。虽然在图8中GPGPU 806A-806D 经由主机接口开关804连接到处理器802,但是处理器802可替代地包括对P2P GPU链路816的直接支持,并直接连接到GPGPU 806A-806D。在一个实施例 中,P2P GPU链路816使多GPU计算系统800能够作为单个逻辑GPU进行操 作。
机器学习神经网络实现方式
本文中描述的计算体系结构可被配置成用于执行特别适合于训练 和部署用于机器学习的神经网络的一类并行处理。可以将神经网络概括为具有 图关系的函数的网络。如本领域中所公知,存在在机器学习中使用的各种类型 的神经网络实现方式。一种示例性类型的神经网络是如先前所描述的前馈网络。
第二示例性类型的神经网络是卷积神经网络(CNN)。CNN是用 于处理具有已知的、栅格状拓扑的数据(诸如,图像数据)的专业的前馈神经 网络。相应地,CNN通常用于计算机视觉和图像识别应用,但是它们也可用 于其他类型的模式识别,诸如,语音和语言处理。CNN输入层中的节点被组 织为“过滤器”的集合(由视网膜中发现的感受野激发的特征检测器),并且每 个过滤器集合的输出被传播至网络的连续层中的节点。用于CNN的计算包括将卷积数学运算应用于每个过滤器以产生该过滤器的输出。卷积是由两个函数 执行以产生第三函数的专业种类的数学运算,该第三函数是两个原始函数中的 一个函数的修改版本。在卷积网络术语中,至卷积的第一函数可被称为输入, 而第二函数可被称为卷积核。输出可被称为特征图。例如,至卷积层的输入可 以是定义输入图像的各种颜色分量的多维数据数组。卷积核可以是多维参数数 组,其中通过用于神经网络的训练过程来使参数适配。
循环神经网络(recurrent neural network,RNN)是包括层之间的反 馈连接的一系列前馈神经网络。RNN通过跨神经网络的不同部分共享参数数 据来启用对序列化数据进行建模。用于RNN的体系结构包括循环。这些循环 表示变量的当前值在将来时刻对其自身值的影响,因为来自RNN的输出数据 的至少部分被用作反馈以用于处理序列中的后续输入。由于语言数据可被组成 的可变本质,这个特征使RNN变得对语言处理特别有用。
下文描述的附图呈现了示例性前馈网络、CNN网络和RNN网络, 并且描述了用于分别训练和部署那些类型的网络中的每一者的一般过程。将理 解,这些描述就本文中描述的任何特定实施例而言是示例性且是非限制性的, 并且一般说来所图示的概念一般可应用于深度神经网络和机器学习技术。
上文描述的示例性神经网络可以用于执行深度学习。深度学习是使 用深度神经网络的机器学习。与仅包括单个隐藏层的浅层神经网络不同,在深 度学习中使用的深度神经网络是由多个隐藏层组成的人工神经网络。更深的神 经网络通常训练起来是更加计算密集性的。然而,网络的附加的隐藏层启用多 步模式识别,该多步模式识别得到相对于浅层机器学习技术的减小的输出误差。
在深度学习中使用的深度神经网络典型地包括用于执行特征识别 的前端网络,该前端网络耦合至后端网络,该后端网络表示可基于提供给数学 模型的特征表示来执行操作(例如,对象分类、语音识别等)的数学模型。深 度学习使得机器学习能够在无需针对模型执行手工的特征工程化的情况下被 执行。相反,深度神经网络可基于输入数据内的统计结构或相关性来学习特征。 所学习的特征可被提供给数学模型,该数学模型可将所检测的特征映射至输出。 由网络使用的数学模型通常专用于要执行的特定任务,并且不同的模型将用于 执行不同的任务。
一旦将神经网络结构化,就可以将学习模型应用于网络以将网络训 练成执行特定任务。学习模型描述如何调整模型内的权重以减小网络的输出误 差。误差的反向传播是用于训练神经网络的常用方法。输入向量被呈现给网络 以供处理。使用损失函数将网络的输出与期望输出进行比较,并且为输出层中 的神经元中的每个神经元计算误差值。随后,向后传播误差值,直到每个神经 元具有粗略地表示该神经元对原始输出的贡献的相关联的误差值。网络随后可 使用算法(诸如,随机梯度下降算法)从那些误差中进行学习,以更新神经网 络的权重。
图9A-图9B图示示例性卷积神经网络。图9A图示CNN内的各个 层。如图9A中所示,用于对图像处理建模的示例性CNN可接收描述输入图 像的红色、绿色、和蓝色(red,green,and blue,RGB)分量的输入902。输入 902可由多个卷积层(例如,卷积层904、卷积层906)来处理。来自多个卷积 层的输出任选地可由全连接层908的集合来处理。如先前针对前馈网络所描述, 全连接层中的神经元具有至前一层中的所有激活的完全连接。来自全连接层908的输出可用于从网络生成输出结果。可使用矩阵乘法而不是卷积来计算全 连接层908内的激活。并非所有CNN实现方式都利用全连接层908。例如, 在一些实现方式中,卷积层906可生成CNN的输出。
卷积层被稀疏地连接,这与在全连接层908中发现的传统神经网络 配置不同。传统神经网络层被完全连接,使得每个输出单元与每个输入单元相 互作用。然而,如所图示,卷积层被稀疏地连接,因为感受野的卷积的输出(而 不是感受野中的节点中的每个节点的相应状态值)被输入到后续层的节点。与 卷积层相关联的核执行卷积操作,该卷积操作的输出被发送至下一层。在卷积 层内执行的降维是使得CNN能够缩放以处理大图像的一个方面。
图9B图示CNN的卷积层内的示例性计算阶段。可以在卷积层914 的三个阶段中处理至CNN的卷积层的输入912。这三个阶段可包括卷积阶段 916、检测器阶段918和池化阶段920。卷积层914随后可将数据输出至连续的 卷积层。网络的最终卷积层可生成输出特征图数据或提供至全连接层的输入, 例如以生成用于至CNN的输入的分类值。
在卷积阶段916中并行地执行若干个卷积,以产生线性激活的集合。 卷积阶段916可包括仿射变换,该仿射变换是可被指定为线性变换加平移的任 何变换。仿射变换包括旋转、平移、缩放和这些变换的组合。卷积阶段计算连 接到输入中的特定区域的函数(例如,神经元)的输出,这些特定区域可以被 确定为与神经元相关联的局部区域。神经元计算神经元的权重与局部输入中神 经元被连接到的区域的权重之间的点积。来自卷积阶段916的输出定义由卷积 层914的连续阶段处理的线性激活的集合。
线性激活可由检测器阶段918处理。在检测器阶段918中,每个线 性激活由非线性激活函数处理。非线性激活函数增加整体网络的非线性性质, 而不影响卷积层的感受野。可使用若干种类型的非线性激活函数。一种特定类 型是修正线性单元(rectified linearunit,ReLU),其使用被定义为f(x)=max(0,x) 的激活函数,使得激活的阈值为零。
池化阶段920使用池化函数,该池化函数利用附近输出的摘要统计 来替换第卷积层906的输出。池化函数可用于将平移不变性引入到神经网络中, 使得至输入的小平移不改变经池化的输出。局部平移的不变性在其中特征在输 入数据中的存在比特征的精确位置更重要的场景中可以是有用的。可以在池化 阶段920期间使用各种类型的池化函数,包括最大池化、平均池化和l2范数池 化。此外,一些CNN实现方式不包括池化阶段。相反,此类实现方式是相对 于先前的卷积阶段具有增加的跨度的替代和附加卷积阶段。
来自卷积层914的输出随后可由下一层922处理。下一层922可以 是附加的卷积层或是全连接层908中的一个层。例如,图9A的第一卷积层904 可输出到第二卷积层906,而第二卷积层可输出到全连接层908中的第一层。
图10图示示例性循环神经网络1000。在循环神经网络(RNN)中, 网络的先前状态影响网络的当前状态的输出。能以各种方式、使用各种函数来 建立RNN。RNN的使用总体上围绕着使用数学模型以基于输入的先前序列来 预测未来。例如,RNN可被用于执行统计语言建模,以在给定单词的先前序 列的情况下预测即将到来的单词。所图示的RNN 1000可被描述为具有接收输 入向量的输入层1002、用于实现循环函数的隐藏层1004、用于启用先前状态 的‘记忆’的反馈机制1005以及用于输出结果的输出层1006。RNN 1000基于时 间步长进行操作。处于给定时间步长的RNN的状态经由反馈机制1005、基于 先前的时间步长而受影响。对于给定的时间步长,隐藏层1004的状态由先前 状态以及当前时间步长处的输入来定义。处于第一时间步长的初始输入(x1) 可由隐藏层1004处理。第二输入(x2)可由隐藏层1004使用在初始输入(x1) 的处理期间确定的状态信息来处理。给定状态可被计算为 st=f(Uxt+Wst-1),其中,U和W是参数矩阵。函数f总体上是非线性, 诸如,双曲正切函数(Tanh)或修正函数f(x)=max(0,x)的变体。然而,在隐藏 层1004中使用的特定的数学函数可取决于RNN 1000的特定实现细节而有所 不同。
除了所描述的基本CNN和RNN网络之外,还可启用针对那些网络 的变体的加速。一个示例RNN变体是长短期记忆(long short term memory, LSTM)RNN。LSTM RNN能够学习长期依赖关系,该长期依赖关系可对于处 理较长的语言序列而言是必需的。CNN的变体是卷积深度信念网络,该卷积 深度信念网络具有与CNN类似的结构,并且以与深度信念网络类似的方式被 训练。深度信念网络(deep belief network,DBN)是由随机性(随机)变量的多个层组成的生成式神经网络。DBN可使用贪婪无监督学习来逐层训练。DBN 的所学习的权重随后可被用来通过确定用于神经网络的权重的最佳初始集合 来提供预训练神经网络。在进一步的实施例中,启用用于强化学习的加速。在 强化学习中,人工代理通过与其环境交互来学习。该代理被配置成用于优化某 些目标以使累积回报最大化。
图11图示深度神经网络的训练和部署。一旦已针对任务将给定的 网络结构化,就使用训练数据集1102来训练神经网络。已开发各种训练框架 1104来启用训练过程的硬件加速。例如,图6的机器学习框架604可被配置为 训练框架1104。训练框架1104可接入未经训练的神经网络1106,并且使得未 经训练的神经网络能够使用本文描述的并行处理资源被训练以生成经训练的 神经网络1108。
为了开始训练过程,可随机地选择权重或通过使用深度信念网络进 行预训练来选择初始权重。随后,以有监督或无监督方式执行训练循环。
有监督学习是在其中训练被执行为介导操作的学习方法,诸如,当 训练数据集1102包括与输入的期望输出配对的该输入时,或在训练数据集包 括具有已知输出的输入并且神经网络的输出被手动分级的情况下。网络处理输 入,并且将所得的输出与预期输出或期望输出的集合进行比较。随后,通过系 统往回传播误差。训练框架1104可进行调整以调整控制未经训练的神经网络 1106的权重。训练框架1104可提供工具以监测未经训练的神经网络1106正在 多好地收敛于适合基于已知的输入数据生成正确答案的模型。随着网络的权重 被调整以细化由神经网络生成的输出,训练过程反复地发生。训练过程可继续,直到神经网络达到与经训练的神经网络1108相关联的统计上期望的准确度。 经训练的神经网络1108随后可被部署为实现任何数量的机器学习操作,以基 于新数据1112的输入来生成推断结果1114。
无监督学习是在其中网络尝试使用未标记数据来训练其自身的学 习方法。因此,针对无监督学习,训练数据集1102将包括不具有任何相关联 的输出数据的输入数据。未经训练的神经网络1106可学习未标记输入内的分 组,并且可确定单独的输入如何与整个数据集相关。无监督训练可被用于生成 自组织图,该自组织图是能够执行在降低数据的维度方面有用的操作的一类经 训练的神经网络1108。无监督训练还可被用于执行异常检测,该异常检测允许 标识输入数据集中的、从数据的正常模式偏离的数据点。
还可采用有监督训练和无监督训练的变体。半监督学习是在其中在 训练数据集1102中包括具有相同分布的经标记数据和未标记数据的混合的技 术。渐进式学习是有监督学习的变体,其中连续地使用输入数据以进一步训练 模型。渐进式学习使得经训练的神经网络1108能够适配于新数据1112,而不 忘记在初始训练期间根植在网络内的知识。
无论是有监督还是无监督的,用于特别深的神经网络的训练过程对 于单个计算节点可能是过于计算密集的。可以使用计算节点的分布式网络而不 是使用单个计算节点来加速训练过程。
图12A是图示分布式学习的框图。分布式学习是使用多个分布式计 算节点来执行神经网络的有监督或无监督训练的训练模型。分布式计算节点各 自可包括一个或多个主机处理器或通用处理节点中的一个或多个通用处理节 点,通用处理节点诸如图7中的高度并行的通用图形处理单元700。如所图示, 能以模型并行性1202、数据并行性1204或模型和数据并行性的组合1206来执 行分布式学习。
在模型并行性1202中,分布式系统中的不同计算节点可为单个网 络的不同部分执行训练计算。例如,神经网络的每一层可由分布式系统的不同 处理节点来训练。模型并行性的益处包括缩放到特别大的模型的能力。分割与 神经网络的不同层相关联的计算使得能够训练非常大型的神经网络,在非常大 型的神经网络中,所有层的权重将无法适配到单个节点的存储器中。在一些实 例中,模型并行性在执行大型神经网络的无监督训练时可以是特别有用的。
在数据并行性1204中,分布式网络的不同节点具有模型的完整实 例,并且每个节点接收数据的不同部分。来自不同节点的结果随后被组合。虽 然实现数据并行性的不同方式是可能的,但是数据并行性训练方式全都需要将 结果组合并使每个节点之间的模型参数同步的技术。用于组合数据的示例性方 式包括参数求平均以及基于更新的数据并行性。参数求平均对训练数据的子集 训练每个节点,并且将全局参数(例如,权重、偏置)设置为来自每个节点的 参数的平均值。参数求平均使用维护参数数据的中央参数服务器。基于更新的 数据并行性与参数求平均类似,例外在于,对模型的更新被传输,而不是将参 数从节点传输到参数服务器。另外,能以分散化的方式执行基于更新的数据并 行性,其中更新被压缩并且在节点之间传输。
可以例如在其中每个计算节点包括多个GPU的分布式系统中实现 组合式模型和数据并行性1206。每个节点可具有模型的完整实例,其中每个节 点内的单独GPU被用于训练模型的不同部分。
分布式训练相对于在单个机器上的训练已增加开销。然而,本文中 描述的并行处理器和GPGPU各自可实现各种技术以降低分布式训练的开销, 包括用于启用高带宽GPU至GPU数据传输和经加速的远程数据同步的技术。
图12B是图示可编程网络接口1210和数据处理单元的框图。可编 程网络接口1210是可用于加速分布式环境内的基于网络的计算任务的可编程 网络引擎。可编程网络接口1210可经由主机接口1270与主机系统耦合。可编 程网络接口1210可用于加速用于主机系统的CPU或GPU的网络或存储操作。 主机系统例如可以是用于执行分布式训练的分布式学习系统的节点,例如,如 图12A中所示。主机系统也可以是数据中心内的数据中心节点。
在一个实施例中,可由可编程网络接口1210加速对包含模型数据 的远程存储装置的存取。例如,可编程网络接口1210可被配置成用于将远程 存储设备呈现为主机系统的本地存储设备。可编程网络接口1210还可加速在 主机系统的GPU与远程系统的GPU之间执行的远程直接存储器存取(RDMA) 操作。在一个实施例中,可编程网络接口1210可启用存储功能,诸如但不限 于NVME-oF。可编程网络接口1210还可代表主机系统加速用于远程存储装置 的加密、数据完整性、压缩和其他操作,从而允许远程存储装置逼近直接附连 至主机系统的存储设备的等待时间。
可编程网络接口1210还可代表主机系统执行资源分配和管理。存 储安全操作可被迁移到可编程网络接口1210,并且与远程存储资源的分配和管 理协同地执行。用于管理对远程存储装置的存取的、否则将由主机系统的处理 器执行的基于网络的操作可替代地由可编程网络接口1210执行。
在一个实施例中,网络和/或数据安全操作可从主机系统迁移到可编 程网络接口1210。用于数据中心节点的数据中心安全策略可由可编程网络接口 1210而不是主机系统的处理器来处置。例如,可编程网络接口1210可检测并 缓解在主机系统上的被尝试的基于网络的攻击(例如,DDoS),从而防止攻 击损害主机系统的可用性。
可编程网络接口1210可包括经由多个处理器核心1222执行操作系 统的片上系统(SoC 1220)。处理器核心1222可包括通用处理器(例如,CPU) 核心。在一个实施例中,处理器核心1222还可包括一个或多个GPU核心。SoC 1220可执行存储在存储器设备1240中的指令。存储设备1250可存储本地操作 系统数据。存储设备1250和存储器设备1240还可用于对用于主机系统的远程 数据进行缓存。网络端口1260A-1260B启用至网络或结构的连接,并且促进针 对SoC 1220的网络访问,并经由主机接口1270促进针对主机系统的网络访问。可编程网络接口1210还可包括I/O接口1275,诸如,USB接口。I/O接口1275 可用于将外部设备耦合至可编程网络接口1210或耦合为调试接口。可编程网 络接口1210还包括管理接口1230,该管理接口1230使主机设备上的软件能够 管理和配置可编程网络接口1210和/或SoC 1220。在一个实施例中,可编程网 络接口1210还可包括一个或多个加速器或GPU 1245以接受并行计算任务从经 由网络端口1260A-1260B耦合的SoC 1220、主机系统或远程系统的迁移。
示例性机器学习应用
可以应用机器学习以解决各种技术问题,包括但不限于计算机视觉、 自主驾驶和导航、语音识别以及语言处理。计算机视觉在传统上已是机器学习 应用的最活跃研究领域之一。计算机视觉的应用范围为从重现人类视觉能力 (诸如,识别人脸)到创建新类别的视觉能力。例如,计算机视觉应用可以配 置成用于从在视频中可见的物体中诱发的振动来识别声波。并行处理器加速的 机器学习使得计算机视觉应用能够使用比先前可行的训练数据集显著更大的 训练数据集来训练,并且使得推断系统能够使用低功率并行处理器来部署。
并行处理器加速的机器学习具有自主驾驶应用,包括车道和道路标 志识别、障碍物规避、导航和驾驶控制。经加速的机器学习技术可用于基于定 义对特定训练输入的适当响应的数据集来训练驾驶模型。本文中描述的并行处 理器能够实现对用于自主驾驶解决方案的日益复杂的神经网络的快速训练,并 且能够实现将低功率推断处理器部署在适合于集成到自主交通工具中的移动 平台中。
并行处理器加速的深度神经网络已启用用于自动语音识别 (automatic speechrecognition,ASR)的机器学习方式。ASR包括创建在给定 的输入声序列的情况下计算最有可能的语言序列的函数。使用深度神经网络的 经加速的机器学习已启用对于先前用于ASR的隐马尔可夫模型(hidden Markov model,HMM)和高斯混合模型(Gaussian mixturemodel,GMM)的 替代。
并行处理器加速的机器学习还可以用于加速自然语言处理。自动学 习过程可以利用统计推断算法以产生对于有误差的或不熟悉的输入稳健的模 型。示例性自然语言处理器应用包括人类语言之间的自动机器翻译。
可以将用于机器学习的并行处理平台划分为训练平台和部署平台。 训练平台总体上是高度并行的,并且包括用于加速多GPU单节点训练和多节 点多GPU训练的优化。适用于训练的示例性并行处理器包括图7的通用图形 处理单元700和图8的多GPU计算系统800。相反,经部署的机器学习平台一 般包括适于在诸如相机、自主机器人和自主交通工具之类的产品中使用的较低 功率的并行处理器。
此外,还可应用机器学习技术来加速或增强图形处理活动。例如, 可将机器学习模型训练成用于识别由GPU加速的应用生成的输出并生成该输 出的放大版本。可应用此类技术以加速生成用于游戏应用的高分辨率图像。各 种其他图形管线活动可受益于机器学习的使用。例如,可将机器学习模型训练 成用于对几何数据执行曲面细分操作以增加几何模型的复杂度,从而允许从具 有相对较低的细节的几何体自动地生成细节更精细的几何体。
图13图示适于使用经训练的模型执行推断的示例性推断片上系统 (SOC)1300。SOC 1300可集成处理部件,包括媒体处理器1302、视觉处理 器1304、GPGPU 1306和多核心处理器1308。GPGPU 1306可以是本文所描述 的GPGPU,诸如,GPGPU 700,并且多核心处理器1308可以是本文中描述的 多核心处理器,诸如,多核心处理器405-406。SOC 1300可附加地包括片上存 储器1305,该片上存储器1305可启用能够由处理部件中的每个处理部件访问的共享片上数据池。处理部件可针对低功率操作进行优化,以启用对包括自主 交通工具和自主机器人的各种机器学习平台的部署。例如,SOC 1300的一个 实现方式可被用作用于自主交通工具的主控制系统的部分。在SOC 1300被配 置成在自主交通工具中使用的情况下,SOC被设计并被配置成用于符合部署管 辖的相关功能安全性标准。
在操作期间,媒体处理器1302和视觉处理器1304可协同地工作以 加速计算机视觉操作。媒体处理器1302可启用对多个高分辨率(例如,4K、 8K)视频流的低等待时间解码。经解码的视频流可被写入片上存储器1305中 的缓冲器。视觉处理器1304随后可解析经解码的视频,并且对经解码的视频 的帧执行初步处理操作,以准备好使用经训练的图像识别模型来处理帧。例如, 视觉处理器1304可加速用于CNN的卷积操作,该CNN用于对高分辨率视频 数据执行图像识别,同时后端模型计算由GPGPU 1306执行。
多核心处理器1308可包括控制逻辑,该控制逻辑用于辅助对由媒 体处理器1302和视觉处理器1304执行的数据传输和共享存储器操作的定序和 同步。多核心处理器1308还可充当应用处理器,以用于执行能够利用GPGPU 1306的推断计算能力的软件应用。例如,导航和驾驶逻辑的至少部分可在多核 心处理器1308上执行的软件中实现。此类软件可直接将计算工作负载发出至 GPGPU 1306,或者计算工作负载可被发出至多核心处理器1308,该多核心处 理器1308可将那些操作的至少部分迁移至GPGPU 1306。
GPGPU 1306可包括计算集群,诸如,通用图形处理单元700内的 低功率配置的处理集群706A-706H。GPGPU 1306内的计算集群可支持专门优 化成在经训练的神经网络上执行推断计算的指令。例如,GPGPU 1306可支持 用于执行诸如8比特和4比特整数向量操作之类的低精度计算的指令。
附加系统概述
图14是处理系统1400的框图。图14的具有与本文中任何其他附 图的元件相同或类似名称的元件描述与其他附图中相同的元件,能以与其他附 图中类似的方式进行操作或运行,可包括相同的部件,并且可链接到其他实体, 该实体如本文中其他地方所描述的那些实体,但不限于此。系统1400可在以 下各项中被使用:单处理器桌面型电脑系统、多处理器工作站系统或具有大量 处理器1402或处理器核心1407的服务器系统。系统1400可以是被并入在片 上系统(SoC)集成电路内的处理平台,该片上系统(SoC)集成电路用于在 移动设备、手持式设备或嵌入式设备中使用,诸如,用于在具有至局域网或广 域网的有线或无线连接性的物联网(Internet-of-things,IoT)设备内使用。
系统1400可以是具有与图1的那些部件对应的部件的处理系统。 例如,在不同配置中,(一个或多个)处理器1402或(一个或多个)处理器 核心1407可与图1的(一个或多个)处理器102相对应。(一个或多个)图 形处理器1408可与图1的(一个或多个)并行处理器112相对应。外部图形 处理器1418可以是图1的(一个或多个)插入式设备120中的一个。
系统1400可包括以下各项,可与以下各项耦合,或可集成在以下 各项内:基于服务器的游戏平台;游戏控制台,包括游戏和媒体控制台;移动 游戏控制台、手持式游戏控制台或在线游戏控制台。系统1400可以是移动电 话、智能电话、平板计算设备或移动互联网连接的设备(诸如,具有低内部存 储容量的膝上型电脑)的部分。处理系统1400也可包括以下各项,与以下各 项耦合,或被集成在以下各项内:可穿戴设备,诸如,智能手表可穿戴设备; 智能眼镜或服装,其利用增强现实(augmented reality,AR)或虚拟现实(virtualreality,VR)特征来增强,以提供视觉、音频或触觉输出来补充现实世界视觉、 音频或触觉体验或以其他方式提供文本、音频、图形、视频、全息图像或视频、 或触觉反馈;其他增强现实(AR)设备;或其他虚拟现实(VR)设备。处理 系统1400可包括电视机或机顶盒设备,或可以是电视机或机顶盒设备的部分。 系统1400可包括自动驾驶交通工具,与自动驾驶交通工具耦合,或集成在自 动驾驶交通工具内,该自动驾驶交通工具诸如,公共汽车、拖拉机拖车、汽车、 电机或电力循环、飞机或滑翔机(或其任何组合)。自动驾驶交通工具可使用 系统1400来处理在该交通工具周围感测到的环境。
一个或多个处理器1402可包括一个或多个处理器核心1407,该一 个或多个处理器核心1407用于处理指令,这些指令当被执行时,执行用于系 统和用户软件的操作。一个或多个处理器核心1407中的至少一个处理器核心 可被配置成用于处理特定的指令集1409。指令集1409可促进复杂指令集计算 (Complex Instruction Set Computing,CISC)、精简指令集计算(Reduced Instruction Set Computing,RISC)或经由超长指令字(VeryLong Instruction Word,VLIW)的计算。一个或多个处理器核心1407可以处理不同的指令集 1409,不同的指令集1409可包括用于促进对其他指令集的仿真的指令。处理 器核心1407还可包括其他处理设备,诸如,数字信号处理器(Digital Signal Processor,DSP)。
处理器1402可包括缓存存储器1404。取决于体系结构,处理器1402 可具有单个内部缓存或多级的内部缓存。在一些实施例中,缓存存储器在处理 器1402的各种部件之间被共享。在一些实施例中,处理器1402也使用外部缓 存(例如,第三级(L3)缓存或最后一级缓存(Last Level Cache,LLC))(未 示出),可使用已知的缓存一致性技术在处理器核心1407之间共享该外部缓 存。寄存器堆1406可附加地被包括在处理器1402中,并且可包括用于存储不 同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄 存器以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可 以专用于处理器1402的设计。
一个或多个处理器1402可与一个或多个接口总线1410耦合,以在 处理器1402与系统1400中的其他部件之间传送通信信号,诸如,地址、数据、 或控制信号。在这些实施例中的一个实施例中,接口总线1410可以是处理器 总线,诸如,直接媒体接口(Direct MediaInterface,DMI)总线的某个版本。 然而,处理器总线不限于DMI总线,并且可包括一个或多个外围部件互连总 线(例如,PCI、PCI快速)、存储器总线或其他类型的接口总线。例如,(一个或多个)处理器1402可包括集成存储器控制器1416和平台控制器中枢1430。 存储器控制器1416促进存储器设备与系统1400的其他部件之间的通信,而平 台控制器中枢(platformcontroller hub,PCH)1430提供经由本地I/O总线至 I/O设备的连接。
存储器设备1420可以是动态随机存取存储器(DRAM)设备、静 态随机存取存储器(static random-access memory,SRAM)设备、闪存设备、 相变存储器设备或具有合适的性能以充当进程存储器的某个其他存储器设备。 存储器设备1420可以例如作为用于系统1400的系统存储器来操作,以存储数 据1422和指令1421,用于在一个或多个处理器1402执行应用或进程时使用。 存储器控制器1416也与任选的外部图形处理器1418耦合,该任选的外部图形 处理器1418可与处理器1402中的一个或多个图形处理器1408通信以执行图 形操作和媒体操作。在一些实施例中,可由加速器1412辅助图形操作、媒体 操作和/或计算操作,该加速器1412是可被配置成用于执行专业的图形操作、 媒体操作或计算操作的集合的协处理器。例如,加速器1412可以是用于优化 机器学习或计算操作的矩阵乘法加速器。加速器1412可以是光线追踪加速器, 该光线追踪加速器可用于与图形处理器1408协同地执行光线追踪操作。在一 个实施例中,可替代加速器1412使用外部加速器1419,或可与加速器1412 协同地使用外部加速器1419。
可提供显示设备1411,该显示设备1411可连接到(一个或多个) 处理器1402。显示设备1411可以是以下各项中的一项或多项:内部显示设备, 如在移动电子设备或膝上型电脑设备中;或经由显示接口(例如,显示端口等) 附接的外部显示设备。显示设备1411可以是头戴式显示器(head mounted display,HMD),诸如,用于在虚拟现实(VR)应用或增强现实(AR)应用 中使用的立体显示设备。
平台控制器中枢1430可以使外围设备能够经由高速I/O总线连接到 存储器设备1420和处理器1402。I/O外围设备包括但不限于音频控制器1446、 网络控制器1434、固件接口1428、无线收发器1426、触摸传感器1425、数据 存储设备1424(例如,非易失性存储器、易失性存器、硬盘驱动器、闪存、 NAND、3D NAND、3D Xpoint/Optane等)。数据存储设备1424可以经由存 储接口(例如,SATA)或经由外围总线(诸如,外围部件互连总线(例如, PCI、PCI快速))连接。触摸传感器1425可以包括触摸屏传感器、压力传感 器或指纹传感器。无线收发器1426可以是Wi-Fi收发器、蓝牙收发器或移动 网络收发器,该移动网络收发器诸如3G、4G、5G或长期演进(Long-Term Evolution,LTE)收发器。固件接口1428启用与系统固件的通信,并且可以例 如是统一可扩展固件接口(unified extensible firmware interface,UEFI)。网络 控制器1434可启用至有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线1410耦合。音频控制器1446可以是多声道高清音 频控制器。在这些实施例中的一些实施例中,系统1400包括用于将传统(例 如,个人系统2(PersonalSystem 2,PS/2))设备耦合至系统的任选的传统I/O控制器1440。平台控制器中枢1430还可以连接到一个或多个通用串行总 线(Universal Serial Bus,USB)控制器1442连接输入设备,诸如,键盘和鼠 标1443组合、相机1444或其他USB输入设备。
将领会,所示的系统1400是示例性而非限制性的,因为也可以使 用以不同方式配置的其他类型的数据处理系统。例如,存储器控制器1416和 平台控制器中枢1430的实例可以集成到分立的外部图形处理器中,该分立的 外部图形处理器诸如外部图形处理器1418。平台控制器中枢1430和/或存储器 控制器1416可以在一个或多个处理器1402外部。例如,系统1400可包括外 部存储器控制器1416和平台控制器中枢1430,该外部存储器控制器1416和平 台控制器中枢1430可以被配置为在与(一个或多个)处理器1402通信的系统 芯片组内的存储器控制器中枢和外围控制器中枢。
例如,可使用电路板(“橇板(sled)”),在该电路板上被放置的 部件(诸如,CPU、存储器和其他部件)经设计以实现提升的热性能。诸如处 理器之类的处理部件可位于橇板的顶侧上,而诸如DIMM之类的附近存储器 位于橇板的底侧上。作为由该设计提供的增强的气流的结果,部件能以比在典 型系统中更高的频率和功率等级来操作,由此提高性能。此外,橇板被配置成 用于盲配机架中的功率和数据通信线缆,由此增强它们被快速地移除、升级、 重新安装和/或替换的能力。类似地,位于橇板上的各个部件(诸如,处理器、 加速器、存储器和数据存储驱动器)由于它们距彼此的增加的间距而被配置成 易于升级。在说明性实施例中,部件附加地包括用于证明它们的真实性的硬件 认证特征。
数据中心可利用支持多个其他网络体系结构的单个网络体系结构 (“结构”),多个其他网络体系结构包括以太网和全方位路径。橇板可经由光 纤耦合至交换机,这提供比典型的双绞线布线(例如,5类、5e类、6类等) 更高的带宽和更低的等待时间。由于高带宽、低等待时间的互连和网络体系结 构,数据中心在使用中可集中在物理上分散的诸如存储器、加速器(例如,GPU、 图形加速器、FPGA、ASIC、神经网络和/或人工智能加速器等)和数据存储驱 动器之类的资源,并且根据需要将它们提供给计算资源(例如,处理器),从 而使计算资源能够就好像被集中的资源在本地那样访问这些被集中的资源。
功率供应或功率源可将电压和/或电流提供给系统1400或本文中描 述的任何部件或系统。在一个示例中,功率供应包括用于插入到墙壁插座中的 AC到DC(交流到直流)适配器。此类AC功率可以是可再生能源(例如,太 阳能)功率源。在一个示例中,功率源包括DC功率源,诸如,外部AC到DC 转换器。功率源或功率供应还可包括用于通过接近充电场来充电的无线充电硬 件。功率源可包括内部电池、交流供应、基于动作的功率供应、太阳能功率供 应或燃料电池源。
图15A-图15C图示计算系统和图形处理器。图15A-图15C的具有 与本文中任何其他附图的元件相同或类似名称的元件描述与其他附图中相同 的元件,能以与其他附图中类似的方式进行操作或运行,可包括相同的部件, 并且可链接到其他实体,该实体如本文中其他地方所描述的那些实体,但不限 于此。
图15A是处理器1500的框图,该处理器1500可以是处理器1402 中的一个处理器的变体,并且可以替代那些处理器中的一个处理器被使用。因 此,本文中结合处理器1500对任何特征的公开也公开了对应的与(一个或多 个)处理器1402的结合,但不限于此。处理器1500可具有一个或多个处理器 核心1502A-1502N、集成存储器控制器1514以及集成图形处理器1508。在集 成图形处理器1508被排除的情况下,包括处理器的系统将包括系统芯片组内 的、或经由系统总线耦合的图形处理器设备。处理器1500可包括附加的核心, 这些附加的核心最多为由虚线框表示的附加核心1502N并包括由虚线框表示 的附加核心1502N。处理器核心1502A-1502N中的每一个包括一个或多个内部 缓存单元1504A-1504N。在一些实施例中,每个处理器核心1502A-1502N也 具有对一个或多个共享缓存单元1506的访问权。内部缓存单元1504A-1504N 和共享缓存单元1506表示处理器1500内的缓存存储器层次体系。缓存存储器 层次体系可包括每个处理器核心内的至少一个级别的指令和数据缓存以及一 个或多个级别的共享的中级缓存,诸如,第二级(L2)、第三级(L3)、第四 级(L4)或其他级别的缓存,其中,在外部存储器之前的最高级别的缓存被分 类为LLC。在一些实施例中,缓存一致性逻辑维持各缓存单元1506与 1504A-1504N之间的一致性。
处理器1500还可包括一个或多个总线控制器单元的集合1516和系 统代理核心1510。一个或多个总线控制器单元1516管理外围总线的集合,诸 如,一个或多个PCI总线或PCI快速总线。系统代理核心1510提供对各处理 器部件的管理功能。系统代理核心1510可包括用于管理对各种外部存储器设 备(未示出)的访问的一个或多个集成存储器控制器1514。
例如,处理器核心1502A-1502N中的一个或多个处理器核心可包括 针对同步多线程操作的支持。系统代理核心1510包括用于在多线程处理期间 协调并操作核心1502A-1502N的部件。系统代理核心1510可附加地包括功率 控制单元(power control unit,PCU),该功率控制单元(PCU)包括用于调节 处理器核心1502A-1502N和图形处理器1508的功率状态的逻辑和部件。
处理器1500可附加地包括用于执行图形处理操作的图形处理器 1508。在这些实施例中的一些实施例中,图形处理器1508与共享缓存单元的 集合1506以及系统代理核心1510耦合,该系统代理核心1510包括一个或多 个集成存储器控制器1514。系统代理核心1510还可包括用于将图形处理器输 出驱动到一个或多个经耦合的显示器的显示控制器1511。显示控制器1511还 可以是经由至少一个互连与图形处理器耦合的单独模块,或者可以集成在图形 处理器1508内。
基于环的互连单元1512可用于耦合处理器1500的内部部件。然而, 可以使用替代的互连单元,诸如,点到点互连、交换式互连或其他技术,包括 本领域中公知的技术。在具有基于环的互连1512的这些实施例中的一些实施 例中,图形处理器1508经由I/O链路1513与基于环的互连1512耦合。
示例性I/O链路1513表示多个各种各样的I/O互连中的至少一种, 包括促进各处理器部件与高性能嵌入式存储器模块1518(诸如,eDRAM模块) 之间的通信的封装上I/O互连。任选地,处理器核心1502A-1502N中的每一个 以及图形处理器1508可将嵌入式存储器模块1518用作共享的最后一级缓存。
处理器核心1502A-1502N可以例如是执行相同的指令集体系结构 的同构核心。替代地,处理器核心1502A-1502N在指令集体系结构(instruction set architecture,ISA)方面是异构的,其中,处理器核心1502A-1502N中的一 个或多个执行第一指令集,而其他核心中的至少一个执行第一指令集的子集或 不同的指令集。处理器核心1502A-1502N在微体系结构方面可以是异构的,其 中,具有相对较高功耗的一个或多个核心与具有较低功耗的一个或多个功率核 心耦合。作为另一示例,处理器核心1502A-1502N在计算能力方面是异构的。 此外,处理器1500可在一个或多个芯片上实现,或者被实现为除其他部件之 外还具有所图示的部件的SoC集成电路。
图15B是根据本文中所描述的一些实施例的图形处理器核心1519 的硬件逻辑的框图。图形处理器核心1519(有时称为核心切片)可以是模块化 图形处理器内的一个或多个图形核心。图形处理器核心1519的示例是一个图 形核心切片,并且基于目标功率包络和性能包络,如本文中所描述的图形处理 器可以包括多个图形核心切片。每个图形处理器核心1519可包括固定功能块 1530,该固定功能块1530与多个子核心1521A-1521F(也称为子切片)耦合, 多个子核心1521A-1521F包括模块化的通用和固定功能逻辑的块。在一种配置中,多个子核心1521A-1521F中的子核心(子切片)在架构上等效于图2D的 图形多处理器234、图3A的图形多处理器325和/或图3C的多核心组 365A-365N中的多核心组。
固定功能块1530可包括可以由图形处理器核心1519中的所有子核 心例如以较低性能和/或较低功率图形处理器实现方式共享的几何/固定功能管 线1531。几何/固定功能管线1531可包括3D固定功能管线(例如,如下文图 16A中描述的3D管线1612)、视频前端单元、线程生成器和线程调遣器以及 统一返回缓冲器管理器,该统一返回缓冲器管理器管理统一返回缓冲器(例如, 如下文图17中描述的统一返回缓冲器1718)。
固定功能块1530还包括图形SoC接口1532、图形微控制器1533和 媒体管线1534。图形SoC接口1532提供图形处理器核心1519与片上系统集 成电路内的处理器核心之间的接口。图形微控制器1533是可被配置成用于管 理图形处理器核心1519的各种功能的可编程子处理器,这些功能包括线程调 遣、调度和抢占。媒体管线1534(例如,图16A和图17的媒体流水线1616) 包括用于促进多媒体数据(包括图像和视频数据)的解码、编码、预处理和/或后处理的逻辑。媒体管线1534经由对子核心1521A-1521F内的计算或采样 逻辑的请求来实现媒体操作。。
图形SoC接口1532可使图形处理器核心1519能够与SoC内的通 用应用处理器核心(例如,CPU)和/或其他部件进行通信,其他部件包括存储 器层次体系元件诸如,共享的最后一级缓存存储器、系统RAM和/或嵌入式片 上或封装上DRAM。SoC接口1532还能够启用与SoC内的诸如相机成像管线 之类的固定功能设备的通信,并且启用全局存储器原子性的使用和/或实现全局 存储器原子性,该全局存储器原子性可在图形处理器核心1519与SoC内的CPU 之间被共享。SoC接口1532还可实现针对图形处理器核心1519的功率管理控 制,并且启用图形处理器核心1519的时钟域与SoC内的其他时钟域之间的接 口。任选地,SoC接口1532使得能够从命令流转化器和全局线程调遣器接收 命令缓冲器,该命令流转化器和全局线程调遣器被配置成用于将命令和指令提 供给图形处理器内的一个或多个图形核心中的每一个图形核心。命令和指令在 媒体操作要被执行时能够被调遣到媒体管线1534,或者在图形处理操作要被执 行时能够被调遣到几何和固定功能管线(例如,几何和固定功能管线1531、几 何和固定功能管线1537)。
图形微控制器1533可被配置成用于执行针对图形处理器核心1519 的各种调度任务和管理任务。在一种配置中,图形微控制器1533可以例如执 行在子核心1521A-1521F内的执行单元(execution unit,EU)阵列1522A-1522F、 1524A-1524F内的各图形并行引擎上调度的图形工作负载和/或计算工作负载。 在该负载调度中,在包括图形处理器核心1519的SoC的CPU核心上执行的主 机软件可将工作负载提交到多个图形处理器门铃(doorbell)中的一个图形处 理器门铃,这调用了对适当的图形引擎的调度操作。调度操作包括:确定接下 来要运行哪个工作负载,将工作负载提交到命令流转化器,抢占在引擎上运行 的现有工作负载,监测工作负载的进度,以及当工作负载完成时通知主机软件。 任选地,图形微控制器1533还能够促进图形处理器核心1519的低功率或空闲 状态,从而向图形处理器核心1519提供独立于操作系统和/或系统上的图形驱 动器软件跨低功率状态转变来保存和恢复图形处理器核心1519内的寄存器的 能力。
图形处理器核心1519可具有多于或少于所图示的子核心 1521A-1521F的、最多N个的模块化子核心。对于N个子核心的每个集合, 图形处理器核心1519还可包括共享功能逻辑1535、共享和/或缓存存储器1536、 几何/固定功能管线1537、以及用于加速各种图形和计算处理操作的附加的固 定功能逻辑1538。共享功能逻辑1535可包括与图17的共享功能逻辑1720(例 如,采样器逻辑、数学逻辑、和/或线程间通信逻辑)相关联的、可由图形处理 器核心1519内的每N个子核心共享的逻辑单元。共享和/或缓存存储器1536 可以是用于图形处理器核心1519内的N个子核心的集合1521A-1521F的最后 一级缓存,并且还可以充当可由多个子核心访问的共享存储器。几何/固定功能 管线1537而不是几何/固定功能管线1531可被包括在固定功能块1530内,并 且几何/固定功能管线1537可包括相同或类似的逻辑单元。
图形处理器核心1519可包括附加的固定功能逻辑1538,该附加的 固定功能逻辑1538可包括供图形处理器核心1519使用的各种固定功能加速逻 辑。可选地,附加的固定功能逻辑1538包括供在仅进行着色的位置中使用的 附加的几何管线。在仅位置着色中,存在两个几何管线:几何/固定功能管线 1538、1531内的完全几何管线;以及剔除管线,其是可被包括在附加的固定功 能逻辑1538内的附加的几何管线。例如,剔除管线可以是完全几何管线的精 简版本。完全管线和剔除管线可以执行同一应用的不同实例,每个实例具有单独的上下文。仅位置着色可以隐藏被丢弃三角形的长剔除运行,从而在一些实 例中使得能够更早地完成着色。例如,附加的固定功能逻辑1538内的剔除管 线逻辑可以与主应用并行地执行位置着色器,并且通常比完全管线更快地生成 关键结果,因为剔除流水线仅取得顶点的位置属性并且仅对顶点的位置属性进 行着色,而不对去往帧缓冲器的像素执行栅格化和渲染。剔除管线可以使用所 生成的关键结果来计算所有三角形的可见性信息,而无需考虑那些三角形是否 被剔除。完全管线(其在本实例中可以被称为重放(replay)管线)可以消耗 该可见性信息以跳过被剔除的三角形,从而仅对最终被传递到栅格化阶段的可 见的三角形进行着色。
可选地,附加的固定功能逻辑1538还可包括机器学习加速逻辑, 诸如,固定功能矩阵乘法逻辑,该机器学习加速逻辑用于包括针对机器学习训 练或推断的优化的实现方式。
在每个图形子核心1521A-1521F内包括可用于响应于由图形管线、 媒体管线、或着色器程序作出的请求而执行图形操作、媒体操作和计算操作的 执行资源的集合。图形子核心1521A-1521F包括:多个EU阵列1522A-1522F、 1524A-1524F;线程调遣和线程间通信(thread dispatch and inter-thread communication,TD/IC)逻辑1523A-1523F;3D(例如,纹理)采样器1525A-1525F; 媒体采样器1526A-1526F;着色器处理器1527A-1527F;以及共享本地存储器 (shared local memory,SLM)1528A-1528F。EU阵列1522A-1502F、 1524A-1524F各自包括多个执行单元,这些执行单元是能够执行浮点和整数/ 定点逻辑操作以服务于图形操作、媒体操作或计算操作(包括图形程序、媒体 程序或计算着色器程序)的通用图形处理单元。TD/IC逻辑1523A-1523F执行 针对子核心内的执行单元的本地线程调遣和线程控制操作,并且促进在子核心 的执行单元上执行的线程之间的通信。3D采样器1525A-1525F可将纹理或其 他3D图形相关的数据读取到存储器中。3D采样器可基于所配置的样本状态以 及与给定纹理相关联的纹理格式以不同方式读取纹理数据。媒体采样器 1526A-1526F可基于与媒体数据相关联的类型和格式来执行类似的读取操作。 例如,每个图形子核心1521A-1521F可替代地包括统一3D和媒体采样器。在 子核心1521A-1521F中的每个子核心内的执行单元上执行的线程可利用每个 子核心内的共享本地存储器1528A-1528F,以使在线程组内执行的线程能够使 用片上存储器的共同的池来执行。
图15C是根据本文中描述的实施例的通用图形处理单元(GPGPU) 1570的框图,该GPGPU 1570可被配置为图形处理器(例如,图形处理器1508) 和/或计算加速器。GPGPU1570可经由一个或多个系统和/或存储器总线与主 机处理器(例如,一个或多个CPU 1546)和存储器1571、1572互连。存储器 1571可以是可与一个或多个CPU 1546进行共享的系统存储器,而存储器1572 是专用于GPGPU 1570的设备存储器。例如,GPGPU 1570和存储器1572内 的部件可被映射到能够由一个或多个CPU 1546访问的存储器地址中。可经由 存储器控制器1568来促进对存储器1571和1572的访问。存储器控制器1568 可包括内部直接存储器存取(direct memory access,DMA)控制器1569,或可 包括用于执行否则将由DMA控制器执行的操作的逻辑。
GPGPU 1570包括多个缓存存储器,这些缓存存储器包括L2缓存1553、L1缓存1554、指令缓存1555以及共享存储器1556,该共享存储器1556 的至少部分也可被分区为缓存存储器。GPGPU 1570还包括多个计算单元 1560A-1560N。每个计算单元1560A-1560N包括向量寄存器的集合1561、标 量寄存器的集合1562、向量逻辑单元的集合1563以及标量逻辑单元的集合 1564。计算单元1560A-1560N还可包括本地共享存储器1565和程序计数器 1566。计算单元1560A-1560N可与常量缓存1567耦合,该常量缓存1567可用 于存储常量数据,该常量数据是在GPGPU 1570上执行的内核程序或着色器程 序的运行期间不会改变的数据。常量缓存1567可以是标量数据缓存,并且经 缓存的数据可被直接取到标量寄存器1562中。
在操作期间,一个或多个CPU 1546可将命令写入到GPGPU 1570 中的寄存器中,或写入到GPGPU 1570中的、已经被映射到可访问地址空间中 的存储器中。命令处理器1557可从寄存器或存储器读取命令,并且确定如何 将在GPGPU 1570内处理那些命令。随后可使用线程调遣器1558来将线程调 遣给计算单元1560A-1560N以执行那些命令。每个计算单元1560A-1560N可 独立于其他计算单元来执行线程。此外,每个计算单元1560A-1560N可被独立 地配置成用于有条件计算,并且可有条件地将计算的结果输出到存储器。当所 提交的命令完成时,命令处理器1557可中断一个或多个CPU 1546。
图16A-图16C图示由本文中描述、例如根据图15A-图15C的实施 例提供的附加的图形处理器和计算加速器体系结构的框图。图16A-图16C的 具有与本文中任何其他附图的元件相同或类似名称的元件描述与其他附图中 相同的元件,能以与其他附图中类似的方式进行操作或运行,可包括相同的部 件,并且可链接到其他实体,该实体如本文中其他地方所描述的那些实体,但 不限于此。
图16A是图形处理器1600的框图,该图形处理器1600可以是分立 的图形处理单元,或可以是与多个处理核心或其他半导体器件集成的图形处理 器,其他半导体器件诸如但不限于存储器设备或网络接口。图形处理器1600 可以是图形处理器1508的变体,并且可替代图形处理器1508被使用。因此, 本文中结合图形处理器1508对任何特征的公开也公开了对应的与图形处理器 1600的结合,但不限于此。图形处理器可经由至图形处理器上的寄存器的存储 器映射的I/O接口并且利用被放置到处理器存储器中的命令进行通信。图形处理器1600可包括用于访问存储器的存储器接口1614。存储器接口1614可以是 至本地存储器、一个或多个内部缓存、一个或多个共享的外部缓存和/或至系统 存储器的接口。
任选地,图形处理器1600还包括用于将显示输出数据驱动到显示 设备1618的显示控制器1602。显示控制器1602包括用于显示器的一个或多个 叠加平面以及多层的视频或用户界面元素的合成的硬件。显示设备1618可以 是内部或外部显示设备。在一个实施例中,显示设备1618是头戴式显示设备, 诸如,虚拟现实(VR)显示设备或增强现实(AR)显示设备。图形处理器1600 可包括用于将媒体编码到一种或多种媒体编码格式,从一种或多种媒体编码格 式对媒体解码,或在一种或多种媒体编码格式之间对媒体转码的视频编解码器 引擎1606,这一种或多种媒体编码格式包括但不限于:移动图片专家组(MovingPicture Experts Group,MPEG)格式(诸如,MPEG-2)、高级视频译码(Advanced VideoCoding,AVC)格式(诸如,H.264/MPEG-4AVC、H.265/HEVC、开放 媒体联盟(Alliance forOpen Media,AOMedia)VP8、VP9)、以及电影和电视 工程师协会(the Society of MotionPicture&Television Engineers,SMPTE) 421M/VC-1、和联合图像专家组(JointPhotographic Experts Group,JPEG)格 式(诸如,JPEG、以及运动JPEG(Motion JPEG,MJPEG)格式)。
图形处理器1600可包括块图像传输(block image transfer,BLIT) 引擎1603,用于执行二维(2D)栅格化器操作,包括例如,比特边界块传输。 然而,替代地,可使用图形处理引擎(graphics processing engine,GPE)1610 的一个或多个部件执行2D图形操作。在一些实施例中,GPE 1610是用于执行 图形操作的计算引擎,这些图形操作包括三维(3D)图形操作和媒体操作。
GPE 1610可包括用于执行3D操作的3D管线1612,该3D操作诸 如,使用作用于3D基元形状(例如,矩形、三角形等)的处理函数来渲染三 维图像和场景。3D管线1612包括可编程和固定功能元件,这些可编程和固定 功能元件执行元件内的各种任务和/或生成到3D/媒体子系统1615的执行线程。 虽然3D管线1612可用于执行媒体操作,但是GPE 1610的实施例还包括媒体 管线1616,该媒体管线1616专门用于执行媒体操作,诸如,视频后处理和图像增强。
媒体管线1616可包括固定功能或可编程逻辑单元,用于代替、或 代表视频编解码器引擎1606来执行一个或多个专业的媒体操作,诸如,视频 解码加速、视频去隔行以及视频编码加速。媒体管线1616可附加地包括线程 生成单元,用于生成线程以供在3D/媒体子系统1615上执行。所生成的线程在 3D/媒体子系统1615中所包括的一个或多个图形执行单元上执行用于媒体操作 的计算。
3D/媒体子系统1615可包括用于执行由3D管线1612和媒体管线 1616生成的线程的逻辑。管线可将线程执行请求发送到3D/媒体子系统1615, 该3D/媒体子系统1615包括用于对于对可用的线程执行资源的各种请求进行 仲裁和调遣的线程调遣逻辑。执行资源包括用于处理3D线程和媒体线程的图 形执行单元的阵列。3D/媒体子系统1615可包括用于线程指令和数据的一个或 多个内部缓存。此外,3D/媒体子系统1615还可包括用于在线程之间共享数据 并用于存储输出数据的共享存储器,其包括寄存器和可寻址存储器。
图16B图示图形处理器1620,该图形处理器1620是图形处理器 1600的变体,并且可替代图形处理器1600被使用且反之亦然。因此,本文中 结合图形处理器1600对任何特征的公开也公开了对应的与图形处理器1620的 结合,但不限于此。根据本文中描述的实施例,图形处理器1620具有分片体 系结构。图形处理器1620可包括图形处理引擎集群1622,该图形处理引擎集 群1622在图形引擎片1610A-1610D内具有图16A的图形处理器引擎1610的 多个实例。每个图形引擎片1610A-1610D可经由片互连的集合1623A-1623F 被互连。每个图形引擎片1610A-1610D还可经由存储器互连1625A-1625D被 连接到存储器模块或存储器设备1626A-1626D。存储器设备1626A-1626D可 使用任何图形存储器技术。例如,存储器设备1626A-1626D可以是图形双倍数 据速率(GDDR)存储器。存储器设备1626A-1626D可以是高带宽存储器(HBM) 模块,这些HBM模块可与其相应的图形引擎片1610A-1610D一起在管芯上。 存储器设备1626A-1626D可以是可被堆叠在其相应的图形引擎片 1610A-1610D的顶部上的堆叠式存储器设备。每个图形引擎片1610A-1610D 和相关联的存储器1626A-1626D可驻留在分开的小芯片上,这些分开的小芯片 被接合到基础管芯或基础衬底,如在图24B-图24D中进一步详细地所描述。
图形处理器1620可配置有非统一存储器存取(non-uniform memory access,NUMA)系统,在该NUMA系统中,存储器设备1626A-1626D与相 关联的图形引擎片1610A-1610D耦合。给定的存储器设备可由与该存储器设备 直接连接到的图形引擎片不同的图形引擎片访问。然而,当存取本地片时,对 存储器设备1626A-1626D的存取等待时间可以最低。在一个实施例中,启用缓 存一致的NUMA(cache coherent NUMA,ccNUMA)系统,该ccNUMA系统 使用片互连1623A-1623F来启用图形引擎片1610A-1610D内的缓存控制器之间的通信,以便当多于一个缓存存储相同的存储器位置时保持一致的存储器图 像。
图形处理引擎集群1622可与芯片上或封装上结构互连1624连接。 在一个实施例中,结构互连1624包括网络处理器、片上网络(network on a chip, NoC)、或用于使结构互连1624能充当在图形处理器1620的部件之间交换数 据分组的分组交换型结构互连的另一交换处理器。结构互连1624可启用图形 引擎片1610A-1610D与诸如视频编解码器1606和一个或多个复制引擎1604 之类的部件之间的通信。复制引擎1604可用于将数据移出存储器设备 1626A-1626D和在图形处理器1620外部的存储器(例如,系统存储器),将 数据移入存储器设备1626A-1626D和在图形处理器1620外部的存储器(例如, 系统存储器),并且在存储器设备1626A-1626D与在图形处理器1620外部的 存储器(例如,系统存储器)之间移动数据。结构互连1624还可用于将图形 引擎片1610A-1610D互连。图形处理器1620可任选地包括显示控制器1602, 用于启用与外部显示设备1618的连接。图形处理器还可被配置为图形加速器 或计算加速器。在加速器配置中,显示控制器1602和显示设备1618可被省略。
图形处理器1620可经由主机接口1628连接到主机系统。主机接口 1628可启用图形处理器1620、系统存储器和/或其他系统部件之间的通信。主 机接口1628可以是例如PCI快速总线或另一类型的主机系统接口。例如,主 机接口1628可以是NVLink或NVSwitch接口。主机接口1628和结构互连1624 可以协作以使图形处理器1620的多个实例能充当单个逻辑设备。主机接口 1628和结构互连1624之间的协作还可使各个图形引擎片1610A-1610D能够作 为不同的逻辑图形设备向主机系统呈现。
图16C图示根据本文中描述的实施例的计算加速器1630。计算加 速器1630可包括与图16B的图形处理器1620的体系结构类似性,并且针对计 算加速进行优化。计算引擎集群1632可包括计算引擎片1640A-1640D的集合, 计算引擎片1640A-1640D的集合包括针对并行或基于向量的通用计算操作优 化的执行逻辑。计算引擎片1640A-1640D可以不包括固定功能图形处理逻辑, 但是在一些实施例中,计算引擎片1640A-1640D中的一个或多个可包括用于执 行媒体加速的逻辑。计算引擎片1640A-1640D可经由存储器互连1625A-1625D连接到存储器1626A-1626D。存储器1626A-1626D和存储器互连1625A-1625D 可以是与在图形处理器1620中类似的技术,或者可以是不同的技术。计算引 擎片1640A-1640D还可经由片互连的集合1623A-1623F被互连,并且可与结 构互连1624连接和/或通过结构互连1624被互连。在一个实施例中,计算加速 器1630包括可被配置为设备范围的缓存的大型L3缓存1636。计算加速器1630 还能以与图16B的图形处理器1620类似的方式经由主机接口1628连接到主机 处理器和存储器。
计算加速器1630还可包括集成的网络接口1642。在一个实施例中, 集成的网络接口1642包括网络处理器和控制器逻辑,该控制器逻辑使计算引 擎集群1632能够在无需数据跨越主机系统的存储器的情况下通过物理层互连 1644进行通信。在一个实施例中,计算引擎片1640A-1640D中的一个由网络 处理器逻辑替代,并且要经由物理层互连1644传送或接收的数据可直接向存 储器1626A-1626D或从存储器1626A-1626D传送。计算加速器1630的多个实 例可经由物理层互连1644被结合到单个逻辑设备中。替代地,各计算引擎片1640A-1640D可被呈现为不同的网络可访问计算加速器设备。
图形处理引擎
图17是根据一些实施例的图形处理器的图形处理引擎1710的框图。 图形处理引擎(GPE)1710可以是图16A中示出的GPE 1610的某个版本,并 且还可表示图16B的图形引擎片1610A-1610D。图17的具有与本文中任何其 他附图的元件相同或类似名称的元件描述与其他附图中相同的元件,能以与其 他附图中类似的方式进行操作或运行,可包括相同的部件,并且可链接到其他 实体,该实体如本文中其他地方所描述的那些实体,但不限于此。例如,在图 17中也图示图16A的3D管线1612和媒体管线1616。媒体管线1616在GPE 1710的一些实施例中是任选的,并且可以不显式地被包括在GPE 1710内。例 如并且在至少一个实施例中,单独的媒体和/或图像处理器被耦合至GPE 1710。
GPE 1710可与命令流转化器1703耦合或包括命令流转化器1703, 该命令流转化器1703将命令流提供给3D管线1612和/或媒体管线1616。替代 地或附加地,命令流转化器1703可直接耦合至统一返回缓冲器1718。统一返 回缓冲器1718可通信地耦合至图形核心阵列1714。任选地,命令流转化器1703 与存储器耦合,该存储器可以是系统存储器、或内部缓存存储器和共享缓存存 储器中的一个或多个。命令流转化器1703可从存储器接收命令,并且将这些 命令发送至3D管线1612和/或媒体管线1616。这些命令是从环形缓冲器取得的指示,该环形缓冲器存储用于3D管线1612和媒体管线1616的命令。环形 缓冲器可附加地包括存储批量的多个命令的批量命令缓冲器。用于3D管线 1612的命令还可包括对存储在存储器中的数据的引用,这些数据诸如但不限于 用于3D管线1612的顶点数据和几何数据和/或用于媒体管线1616的图像数据 和存储器对象。3D管线1612和媒体管线1616通过经由相应的管线内的逻辑 执行操作或者通过将一个或多个执行线程调遣至图形核心阵列1714来处理命 令和数据。图形核心阵列1714可包括一个或多个图形核心块(例如,(一个 或多个)图形核心1715A、(一个或多个)图形核心1715B),每个块包括一 个或多个图形核心。每个图形核心包括图形执行资源的集合,该图形执行资源 的集合包括:用于执行图形操作和计算操作的通用和图形专用执行逻辑;以及 固定功能纹理处理逻辑和/或机器学习和人工智能加速逻辑。
在各实施例中,3D管线1612可包括用于通过处理指令并将执行线 程调遣给图形核心集群1714来处理一个或多个着色器程序的固定功能和可编 程逻辑,该一个或多个着色器程序诸如,顶点着色器、几何着色器、像素着色 器、片段着色器、计算着色器或其他着色器程序。图形核心阵列1714提供统 一的执行资源块,以供在处理这些着色器程序时使用。图形核心阵列1714的 (一个或多个)图形核心1715A-1715B内的多功能执行逻辑(例如,执行单元) 包括对各种3D API着色器语言的支持,并且可执行与多个着色器相关联的多个同步执行线程。
图形核心阵列1714可包括用于执行诸如视频和/或图像处理之类的 媒体功能的执行逻辑。除了图形处理操作之外,执行单元还可包括可编程以执 行并行的通用计算操作的通用逻辑。通用逻辑可并行地或结合图14的(一个 或多个)处理器核心1407或如图15A中的核心1502A-1502N内的通用逻辑来 执行处理操作。
由在图形核心阵列1714上执行的线程生成的输出数据可以将数据 输出到统一返回缓冲器(unified return buffer,URB)1718中的存储器。URB 1718 可存储用于多个线程的数据。URB 1718可用于在图形核心阵列1714上执行的 不同线程之间发送数据。URB 1718可附加地用于在图形核心阵列1714上的线 程与共享功能逻辑1720内的固定功能逻辑之间的同步。
任选地,图形核心阵列1714可以是可缩放的,使得阵列包括可变 数量的图形核心,每个图形核心都具有基于GPE 1710的目标功率和性能等级 的可变数量的执行单元。执行资源可以是动态地可缩放的,使得执行资源可根 据需要被启用或禁用。
图形核心阵列1714与共享功能逻辑1720耦合,该共享功能逻辑 1720包括在图形核心阵列中的图形核心之间被共享的多个资源。共享功能逻辑 1720内的共享功能是将专业的补充功能提供给图形核心阵列1714的硬件逻辑 单元。在各实施例中,共享功能逻辑1720包括但不限于采样器1721逻辑、数 学1722逻辑和线程间通信(inter-threadcommunication,ITC)1723逻辑。此 外,可实现共享功能逻辑1720内的一个或多个缓存1725。
至少在其中对于给定的专业功能的需求不足以包括在图形核心阵 列1714内的情况下实现共享功能。相反,那个专业功能的单个实例化被实现 为共享功能逻辑1720中的独立实体,并且在图形核心阵列1714内的执行资源 之间被共享。在图形核心阵列1714之间被共享并被包括在图形核心阵列1714 内的确切的功能集因实施例而异。共享功能逻辑1720内的由图形核心阵列 1714广泛使用的特定共享功能可被包括在图形核心阵列1714内的共享功能逻 辑1716内。任选地,图形核心阵列1714内的共享功能逻辑1716可包括共享 功能逻辑1720内的一些或所有逻辑。共享功能逻辑1720内的所有逻辑元件可 以在图形核心阵列1714的共享功能逻辑1716内被复制。替代地,共享功能逻 辑1720被排除以有利于图形核心阵列1714内的共享功能逻辑1716。
执行单元
图18A-图18B图示根据本文中所描述的实施例的线程执行逻辑 1800,该线程执行逻辑1800包括在图形处理器核心中采用的处理元件的阵列。 图18A-图18B的具有与本文中任何其他附图的元件相同或类似名称的元件描 述与其他附图中相同的元件,可按与其他附图中类似的方式操作或运行,可包 括相同的部件,并且可链接到其他实体,该实体如本文中其他地方所描述的那 些实体,但不限于此。图18A-图18B图示线程执行逻辑1800的概览,该线程 执行逻辑1800可表示以图15B的每个子核心1521A-1521F图示的硬件逻辑。 图18A表示通用图形处理器内的执行单元,而图18B表示可在计算加速器内 被使用的执行单元。
如在图18A中所图示,线程执行逻辑1800可包括着色器处理器1802、 线程调遣器1804、指令缓存1806、包括多个图形执行单元1808A-1808N的可 缩放执行单元阵列、采样器1810、共享本地存储器1811、数据缓存1812、以 及数据端口1814。可选地,可缩放执行单元阵列可通过基于工作负载的计算要 求启用或禁用一个或多个执行单元(例如,执行单元1808A、1808B、1808C、 1808D,一直到1808N-1和1808N中的任一个)来动态地缩放。所包括的部件 可经由互连结构被互连,该互连结构链接到部件中的每个部件。线程执行逻辑 1800可包括通过指令缓存1806、数据端口1814、采样器1810、以及图形执行 单元1808A-1808N中的一个或多个而到存储器(诸如,系统存储器或缓存存储 器)的一个或多个连接。每个执行单元(例如,1808A)可以是能够执行多个 同步硬件线程同时针对每个线程并行地处理多个数据元素的独立式可编程通 用计算单元。在各实施例中,执行单元1808A-1808N的阵列是可缩放的以包括 任何数量的单独执行单元。
在一些实施例中,执行单元1808A-1808N可以主要用于执行着色器 程序。着色器处理器1802可处理各种着色器程序,并且可经由线程调遣器1804 来调遣与着色器程序相关联的执行线程。线程调遣器可包括用于对来自图形管 线和媒体管线的线程发起请求进行仲裁并在图形执行单元1808A-1808N中的 一个或多个图形执行单元上实例化所请求的线程的逻辑。例如,几何管线可将 顶点着色器、曲面细分着色器或几何着色器调遣给线程执行逻辑以用于处理。 可选地,线程调遣器1804也可处理来自执行着色器程序的运行时线程生成请 求。
在一些实施例中,图形执行单元1808A-1808N可支持包括对许多标 准3D图形着色器指令的原生支持的指令集,使得以最小的转换执行来自图形 库(例如,Direct 3D和OpenGL)的着色器程序。这些执行单元支持顶点和几 何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素 着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。图形执行 单元1808A-1808N中的每个图形执行单元都能够进行多发出单指令多数据 (single instruction multiple data,SIMD)执行,并且多线程操作在面对较高等 待时间的存储器访问时启用高效的执行环境。每个执行单元内的每个硬件线程 都具有专用的高带宽寄存器堆和相关联的独立线程状态。对于能够进行整数操 作、单精度浮点操作和双精度浮点操作、能够具有SIMD分支能力、能够进行 逻辑操作、能够进行超越操作和能够进行其他混杂操作的管线,执行是针对每 个时钟多发出的。在等待来自存储器或共享功能中的一个共享功能的数据时, 执行单元1,808A-1,808N内的依赖性逻辑使等待的线程休眠,直到所请求的数 据已被返回。当等待的线程正在休眠时,硬件资源可致力于处理其他线程。例 如,在与顶点着色器操作相关联的延迟期间,执行单元可执行针对像素着色器、片段着色器或包括不同顶点着色器(诸如,图21中图示的顶点着色器2107) 的另一类型的着色器程序的操作。各实施例可应用以使用利用单指令多线程 (Single InstructionMultiple Thread,SIMT)的执行,作为对SIMD的使用的 替代,或作为对SIMD的使用的附加。对SIMD核心或操作的引用也可应用于 SIMT,或应用于SIMD与SIMT的组合。
图形执行单元1808A-1808N中的每个执行单元对数据元素的数组 进行操作。数据元素的数量是“执行大小”、或用于指令的通道的数量。执行通 道是用于指令内的数据元素访问、掩码、和流控制的执行的逻辑单元。通道的 数量可独立于用于特定图形处理器的物理算术逻辑单元(Arithmetic Logic Unit, ALU)、浮点单元(Floating-Point Unit,FPU)、或其他逻辑单元(例如,张 量核心、光线追踪核心等)的数量。此外,图形执行单元1808A-1808N可支持 整数和浮点数据类型。
执行单元指令集包括SIMD指令。各种数据元素可以作为紧缩数据 类型存储在寄存器中,并且执行单元将基于元素的数据大小来处理各个元素。 例如,当对256比特宽的向量进行操作时,向量的256比特被存储在寄存器中, 并且执行单元将向量操作为四个单独的64比特紧缩(packed)数据元素(四 字(Quad-Word,QW)大小数据元素)、八个单独的32比特紧缩数据元素(双 字(Double Word,DW)大小数据元素)、十六个单独的16比特紧缩数据元 素(字(Word,W)大小数据元素)、或三十二个单独的8比特数据元素(字 节(byte,B)大小数据元素)。然而,不同的向量宽度和寄存器大小是可能 的。
可选地,可将一个或多个执行单元组合到融合图形执行单元 1809A-1809N中,该融合执行单元1809A-1809N具有对于融合EU而言共同的 线程控制逻辑(1807A-1807N)。可以将多个EU融合到EU组中。融合的EU 组中的每个EU可以被配置成用于执行单独的SIMD硬件线程。融合的EU组 中的EU的数量可以根据实施例而有所不同。此外,可以逐EU地执行各种SIMD 宽度,包括但不限于SIMD8、SIMD16和SIMD32。每个融合图形执行单元 1809A-1809N包括至少两个执行单元。例如,融合执行单元1809A包括第一 EU 1808A、第二EU 1808B、以及对于第一EU 1808A和第二EU 1808B而言 共同的线程控制逻辑1807A。线程控制逻辑1807A控制在融合图形执行单元 1809A上执行的线程,从而允许融合执行单元1809A-1809N内的每个EU使用 共同的指令指针寄存器来执行。
一个或多个内部指令缓存(例如,1806)被包括在线程执行逻辑1800 中,以对用于执行单元的线程指令进行缓存。一个或多个数据缓存(例如,1812) 可被包括在线程执行逻辑1800中,以在线程执行期间对线程数据进行缓存。 在执行逻辑1800上执行的线程还可将被显式地管理的数据存储在共享本地存 储器1811中。采样器1810可被包括,以便为3D操作提供纹理采样,并为媒 体操作提供媒体采样。采样器1810可包括专业的纹理或媒体采样功能,以便 在将所采用的数据提供给执行单元之前在采样过程期间处理纹理数据或媒体 数据。
在执行期间,图形管线和媒体管线经由线程生成和调遣逻辑将线程 发起请求发送到线程执行逻辑1800。一旦几何对象的组已经被处理并被栅格化 为像素数据,着色器处理器1802内的像素处理器逻辑(例如,像素着色器逻 辑、片段着色器逻辑等)就被调用以进一步计算输出信息,并且使得结果被写 入到输出表面(例如,颜色缓冲器、深度缓冲器、模版印刷缓冲器等)。像素 着色器或片段着色器可计算各顶点属性的值,各顶点属性的值将跨经栅格化的 对象而被内插。着色器处理器1802内的像素处理器逻辑随后可执行应用编程 接口(application programming interface,API)供应的像素着色器程序或片段 着色器程序。为了执行着色器程序,着色器处理器1802经由线程调遣器1804 将线程调遣给执行单元(例如,1808A)。着色器处理器1802可使用采样器 1810中的纹理采样逻辑来访问存储在存储器中的纹理映射中的纹理数据。对纹 理数据和输入几何数据的算术操作计算针对每个几何片段的像素颜色数据,或 丢弃一个或多个像素而不进行进一步处理。
此外,数据端口1814可提供存储器访问机制,以供线程执行逻辑 1800将经处理的数据输出至存储器以便在图形处理器输出管线上进一步处理。 数据端口1814可包括或耦合至一个或多个缓存存储器(例如,数据缓存1812), 以便对数据进行缓存,以用于经由数据端口1814进行存储器访问。
可选地,执行逻辑1800还可包括可提供光线追踪加速功能的光线 追踪器1805。光线追踪器1805可支持光线追踪指令集,该光线追踪指令集包 括用于光线生成的指令/函数。光线追踪指令集可与由图3C中的光线追踪核心 372支持的光线追踪指令集类似或不同。
图18B图示执行单元1808的示例性内部细节。图形执行单元1808 可包括指令取出单元1837、通用寄存器堆阵列(general register file,GRF)1824、 体系结构寄存器堆阵列(architectural register file array,ARF)1826、线程仲裁 器1822、发送单元1830、分支单元1832、SIMD浮点单元(floating point unit, FPU)的集合1834,并任选地包括专用整数SIMD ALU的集合1835。GRF 1824 和ARF 1826包括与可在图形执行单元1808中活跃的每个同步硬件线程相关联 的通用寄存器堆和体系结构寄存器堆的集合。每线程体系结构状态可被维持在 ARF 1826中,而在线程执行期间使用的数据被存储在GRF 1824中。每个线程 的执行状态,包括用于每个线程的指令指针,可以被保存在ARF 1826中的线 程特定的寄存器中。
图形执行单元1808可具有作为同步多线程(Simultaneous Multi-Threading,SMT)与细粒度交织多线程(Interleaved Multi-Threading,IMT) 的组合的体系结构。该体系结构可具有模块化配置,该模块化配置可以在设计 时基于同步线程的目标数量和每个执行单元的寄存器的数量进行微调,其中跨 用于执行多个同步线程的逻辑来划分执行单元资源。可由图形执行单元1808 执行的逻辑线程的数量不限于硬件线程的数量,并且可将多个逻辑线程指派给 每个硬件线程。
可选地,图形执行单元1808可协同发出多条指令,这些指令可以 各自是不同的指令。图形执行单元线程1808的线程仲裁器1822可以将指令调 遣给以下各项中的一项以供执行:发送单元1830、分支单元1834、或(一个 或多个)SIMD FPU 1834。每个执行线程可访问GRF 1824内的128个通用寄 存器,其中,每个寄存器可存储可作为具有32比特数据元素的SIMD 8元素向 量访问的32个字节。每个执行单元线程可具有对GRF 1824内的4个千字节的 访问权,但是实施例不限于此,并且在其他实施例中可以提供更多或更少的寄 存器资源。图形执行单元1808可被分区为能够独立地执行计算操作的七个硬 件线程,但是每个执行单元的线程的数量还可根据实施例而有所不同,例如, 可支持最多16个硬件线程。在其中七个线程可访问4个千字节的示例性实施 例中,GRF 1824可以存储总共28个千字节。在其中16个线程可访问4个千 字节的另一示例性实施例中,GRF 1824可存储总共64个千字节。然而,每个 执行单元的线程的数量不限于那些示例,并且可以多于或少于给定的数量。灵 活的寻址模式可准许对寄存器一起进行寻址,从而有效地建立更宽的寄存器或 者表示跨步式矩形块数据结构。
附加地或替代地,可经由通过消息传递发送单元1830执行的“发送” 指令来分派存储器操作、采样器操作以及其他较长等待时间的系统通信。分支 指令可被调遣给专用分支单元1832,以促进SIMD分散和最终的汇聚。
图形执行单元1808可包括用于执行浮点操作的一个或多个SIMD 浮点单元(FPU)1834。(一个或多个)FPU 1834还可支持整数计算。在一些 实例中,(一个或多个)FPU 1834可以SIMD执行最多数量为M个的32比特 浮点(或整数)操作,或者SIMD执行最多2M个16比特整数或16比特浮点 操作。任选地,(一个或多个)FPU中的至少一个提供支持高吞吐量超越数学 函数和双精度64比特浮点的扩展数学能力。8比特整数SIMD ALU的集合1835 也可存在,并且可专门优化成用于执行与机器学习计算相关联的操作。
可选地,可以在图形子核心分组(例如,子切片)中对图形执行单 元1808的多个实例的阵列进行实例化。为了可缩放性,产品架构师可以选择 每子核心分组的执行单元的确切数量。执行单元1808可跨多个执行通道执行 指令。此外,在图形执行单元1808上执行的每个线程可在不同的通道上执行。
图19图示进一步的示例性执行单元1900。图19的具有与本文中任 何其他附图的元件相同或类似名称的元件描述与其他附图中相同的元件,可按 与其他附图中类似的方式操作或运行,可包括相同的部件,并且可链接到其他 实体,该实体如本文中其他地方所描述的那些实体,但不限于此。执行单元1900 可以是用于在例如图16C中的计算引擎片1640A-1640D中使用的计算优化的 执行单元,但不限于此。执行单元1900也可在图16B中的图形引擎片 1610A-1610D中使用。执行单元1900可包括线程控制单元1901、线程状态单 元1902、指令取得/预取单元1903以及指令解码单元1904。执行单元1900可 附加地包括寄存器堆1906,该寄存器堆1906存储可被指派给执行单元内的硬 件线程的寄存器。执行单元1900可附加地包括发送单元1907和分支单元1908。 发送单元1907和分支单元1908能以与图18B的图形执行单元1808的发送单 元1830和分支单元1832类似的方式操作。
执行单元1900还可包括计算单元1910,该计算单元1910包括多个 不同类型的功能单元。计算单元1910还可包括ALU 1911、脉动阵列1912和数 学单元1913。ALU 1911包括算术逻辑单元的阵列。ALU 1911可被配置成用于 跨多个处理通路和数据通道并且针对多个硬件和/或软件线程执行64比特、32 比特和16比特整数操作和浮点操作。ALU 1911可同时(例如,在同一时钟周 期内)执行整数操作和浮点操作。
脉动阵列1912包括数据处理单元的宽W且深D的网络,其可用于 以脉动方式执行向量或其他数据并行操作。脉动阵列1912可被配置成用于执 行各种矩阵操作,包括点积操作、外积操作、以及一般矩阵-矩阵乘法(general matrix-matrix multiplication,GEMM)操作。脉动阵列1912可支持16比特浮点 操作以及8比特、4比特、2比特和二进制的整数操作。脉动阵列1912可被配 置成用于加速机器学习操作。脉动阵列1912可配置有对于相对于电气和电子 工程师学会(Institute of Electrical and Electronics Engineers,IEEE)754格式具 有不同数量的尾数比特和指数比特的bfloat16、(brain浮点)16比特浮点格式、或张量浮点32比特浮点格式(TF32)的支持。也可支持FP64格式。
在一个实施例中,脉动阵列1803包括用于启用对具有稀疏矩阵的 压缩表示的稀疏数据的操作的硬件。稀疏矩阵的压缩表示存储非零值和定义该 非零值在矩阵内的位置的元数据。示例性压缩表示包括但不限于压缩张量表示, 诸如,压缩稀疏行(CSR)表示、压缩稀疏列(CSC)表示、压缩稀疏纤维 (compressed sparse fiber,CSF)表示。对压缩表示的支持使得操作能够对按 压缩张量格式的输入执行而无需压缩表示被解压缩或解码。在此类实施例中, 可仅对非零输入值执行操作,并且所得到的非零输出值可被映射到输出矩阵中。 在一些实施例中,还提供对机器特定无损数据压缩格式的硬件支持,这些机器 特定无损数据压缩格式当在硬件内传送数据或跨系统总线传送数据时被使用。 此类数据可按用于稀疏输入数据的压缩格式被保留,并且脉动阵列1803可使 用用于经压缩数据的压缩元数据,以使得操作能够仅对非零值执行或使得对于 乘法操作能够绕过零数据输入的块。
数学单元1913可被配置成用于以高效的且比ALU单元1911更低 功率的方式执行数学操作的特定子集。数学单元1913可包括可在由所描述的 其他实施例提供的图形处理引擎的共享功能逻辑中发现的数学逻辑,例如,图 17的共享功能逻辑1722的数学逻辑1720。数学单元1913可被配置成用于执 行32比特和64比特浮点操作。
线程控制单元1901包括用于控制执行单元内的线程的执行的逻辑。 线程控制单元1901可包括线程仲裁逻辑,该线程仲裁逻辑用于启动、停止以 及抢占执行单元1900内线程的执行。线程状态单元1902可用于存储用于被指 派以在执行单元1900上执行的线程的线程状态。将线程状态存储在执行单元 1900内使得能够在线程变得被阻止或空闲时快速抢占那些线程。指令取得/预 取单元1903可从较高级别执行逻辑的指令缓存(例如,如图18A中的指令缓 存1806)取得指令。指令取得/预取单元1903还可基于对当前执行线程的分析 来发出对要被加载到指令缓存中的指令的预取请求。指令解码单元1904可用 于对要由计算单元执行的指令进行解码。指令解码单元1904可被用作次级解 码器以将复杂指令解码为组成的微操作。
执行单元1900附加地包括寄存器堆1906,该寄存器堆1906可由在 执行单元1900上执行的硬件线程使用。寄存器堆1906中的寄存器可跨用于执 行执行单元1900的计算单元1910内的多个同步线程的逻辑而被划分。可由图 形执行单元1900执行的逻辑线程的数量不限于硬件线程的数量,并且可将多 个逻辑线程指派给每个硬件线程。基于所支持的硬件线程的数量,寄存器堆 1906的大小可因实施例而有所不同。可使用寄存器重命名来动态地将寄存器分 配给硬件线程。
图20是图示图形处理器指令格式2000的框图。图形处理器执行单 元支持具有按照多种格式的指令的指令集。实线框图示通常被包括在执行单元 指令中的组成部分,而虚线包括任选的或仅被包括在指令的子集中的组成部分。 在一些实施例中,所描述和图示的图形处理器指令格式2000是宏指令,因为 它们是供应至执行单元的指令,这与产生自一旦指令被处理就进行的指令解码 的微操作相反。因此,单个指令可使硬件执行多个微操作。
如本文中所描述的图形处理器执行单元可以原生地支持128比特指 令格式2010的指令。基于所选择的指令、指令选项和操作对象数量,64比特 紧凑指令格式2030可用于一些指令。原生的128比特指令格式2010提供对所 有指令选项的访问,而一些选项和操作在64比特格式2030中受限。64比特格 式2030中可用的原生指令因实施例而异。使用索引字段2013中的索引值的集 合将指令部分地压缩。执行单元硬件基于索引值来引用压缩表的集合,并使用 压缩表输出来重构128比特指令格式2010的原生指令。可以使用其他大小和格式的指令。
针对每种格式,指令操作码2012限定执行单元要执行的操作。执 行单元跨每个操作对象的多个数据元素并行地执行每个指令。例如,响应于加 法指令,执行单元跨表示纹理元素或图片元素的每个颜色通道执行同步加法操 作。默认地,执行单元跨操作对象的所有数据通道执行每个指令。指令控制字 段2014可启用对某些执行选项(诸如,通道选择(例如,谓词(predication)) 和数据通道顺序(例如,拌和(swizzle)))的控制。针对128比特指令格式 2010的指令,执行大小字段2016限制将被并行地执行的数据通道的数量。执 行大小字段2016可能不可用于64比特紧凑指令格式2030。
一些执行单元指令具有最多三个操作对象,包括两个源操作对象 src0 2020、src1 2022以及一个目的地操作对象(dest 2018)。其他指令(诸如, 例如数据操纵指令、点积指令、乘加指令、或乘法累加指令)可具有第三源操 作对象(例如,SRC2 2024)。指令操作码2012确定源操作对象的数量。指令 的最后一个源操作对象可以是与指令一起被传递的立即数(例如,硬编码的) 值。执行单元还可以支持多个目的地指令,其中目的地中的一个或多个是基于 指令和/或所指定的目的地而隐含的或隐式的。
128比特指令格式2010可包括访问/寻址模式字段2026,该访问/ 寻址模式字段2026例如指定使用直接寄存器寻址模式还是间接寄存器寻址模 式。当使用直接寄存器寻址模式时,由指令中的比特直接提供一个或多个操作 对象的寄存器地址。
128比特指令格式2010还可包括访问/寻址模式字段2026,该访问/ 寻址模式字段2026指定指令的寻址模式和/或访问模式。访问模式可用于限定 指令的数据访问对齐。可支持包括16字节对齐访问模式和1字节对齐访问模 式的访问模式,其中,访问模式的字节对齐确定指令操作对象的访问对齐。例 如,当处于第一模式时,指令可将字节对齐的寻址用于源操作对象和目的地操 作对象,并且当处于第二模式时,指令可将16字节对齐的寻址用于所有的源 操作对象和目的地操作对象。
访问/寻址模式字段2026的寻址模式部分可以确定指令要使用直接 寻址还是间接寻址。当使用直接寄存器寻址模式时,指令中的比特直接提供一 个或多个操作对象的寄存器地址。当使用间接寄存器寻址模式时,可以基于指 令中的地址寄存器值和地址立即数字段来计算一个或多个操作对象的寄存器 地址。
可以基于操作码2012比特字段对指令进行分组从而简化操作码解 码2040。针对8比特的操作码,比特4、比特5、和比特6允许执行单元确定 操作码的类型。所示出的确切的操作码分组仅是示例。移动和逻辑操作码组 2042可以包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。 移动和逻辑组2042可以共享五个最低有效的比特(leastsignificant bit,LSB), 其中,移动(mov)指令采用0000xxxxb的形式,而逻辑指令采用0001xxxxb 的形式。流控制指令组2044(例如,调用(call)、跳转(jmp))包括0010xxxxb (例如,0x20)形式的指令。混杂指令组2046包括指令的混合,包括0011xxxxb (例如,0x30)形式的同步指令(例如,等待(wait)、发送(send))。并 行数学指令组2048包括0100xxxxb(例如,0x40)形式的逐分量的算术指令(例 如,加、乘(mul))。并行数学指令组2048跨数据通道并行地执行算术操作。 向量数学组2050包括0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。 向量数学组对向量操作对象执行算术,诸如,点积计算。在一个实施例中,所 图示的操作码解码2040可用于确定执行单元的哪个部分将用于执行经解码的 指令。例如,一些指令可被指定为将由脉动阵列执行的脉动指令。其他指令(诸 如,光线追踪指令(未示出))可被路由至执行逻辑的切片或分区内的光线追 踪核心或光线追踪逻辑。
图形管线
图21是根据另一个实施例的图形处理器2100的框图。图21的具 有与本文中任何其他附图的元件相同或类似名称的元件描述与其他附图中相 同的元件,能以与其他附图中类似的方式进行操作或运行,可包括相同的部件, 并且可链接到其他实体,该实体如本文中其他地方所描述的那些实体,但不限 于此。
图形处理器2100可包括不同类型的图形处理管线,诸如,几何管 线2120、媒体管线2130、显示引擎2140、线程执行逻辑2150、以及渲染输出 管线2170。图形处理器2100可以是包括一个或多个通用处理核心的多核心处 理系统内的图形处理器。图形处理器可通过至一个或多个控制寄存器(未示出) 的寄存器写入或者经由通过环形互连2102发出至图形处理器2100的命令被控 制。环形互连2102可将图形处理器2100耦合至其他处理部件(诸如,其他图 形处理器或通用处理器)。由命令流转化器2103解释来自环形互连2102的命令,该命令流转化器2103将指令供应至几何管线2120或媒体管线2130的各 个部件。
命令流转化器2103可引导顶点取得器2105的操作,该顶点取得器 2105从存储器读取顶点数据,并执行由命令流转化器2103提供的顶点处理命 令。顶点取得器2105可将顶点数据提供给顶点着色器2107,该顶点着色器2107 对每一个顶点执行坐标空间变换和照明操作。顶点取得器2105和顶点着色器 2107可通过经由线程调遣器2131将执行线程调遣给执行单元2152A-2152B来 执行顶点处理指令。
执行单元2152A-2152B可以是具有用于执行图形操作和媒体操作 的指令集的向量处理器的阵列。执行单元2152A-2152B可具有专用于每个阵列 或在阵列之间被共享的所附接的L1缓存2151。缓存可以被配置为数据缓存、 指令缓存、或被分区为在不同分区中包含数据和指令的单个缓存。
几何管线2120可包括用于执行3D对象的硬件加速曲面细分的曲面 细分部件。可编程壳体着色器2111可配置曲面细分操作。可编程域着色器2117 可提供对曲面细分输出的后端评估。曲面细分器2113可在外壳着色器2111的 指示下进行操作,并且可包含用于基于粗糙的几何模型来生成详细的几何对象 集合的专用逻辑,该粗糙的几何模型作为输入被提供给几何管线2120。此外, 如果不使用曲面细分,则可以绕过曲面细分部件(例如,外壳着色器2111、曲 面细分器2113和域着色器2117)。曲面细分部件可基于从顶点着色器2107 接收的数据进行操作。
完整的几何对象可由几何着色器2119经由被调遣给执行单元 2152A-2152B的一个或多个线程来处理,或者可以直接行进至裁剪器2129。几 何着色器可对整个几何对象操作,而不是像在图形管线的先前的阶段中那样对 顶点或顶点的补片进行操作。如果曲面细分被禁用,则几何着色器2119从顶 点着色器2107接收输入。几何着色器2119可以是可由几何着色器程序编程的, 以便在曲面细分单元被禁用的情况下执行几何曲面细分。
在栅格化之前,裁剪器2129处理顶点数据。裁剪器2129可以是固 定功能裁剪器或具有裁剪和几何着色器功能的可编程裁剪器。渲染输出管线 2170中的栅格化器和深度测试部件2173可调遣像素着色器以将几何对象转换 为逐像素表示。像素着色器逻辑可被包括在线程执行逻辑2150中。任选地, 应用可绕过栅格化器和深度测试部件2173,并且经由流出单元2123访问未栅 格化的顶点数据。
图形处理器2100具有互连总线、互连结构、或允许数据和消息在 处理器的主要部件之间传递的某个其他互连机制。在一些实施例中,执行单元 2152A-2152B和相关联的逻辑单元(例如,L1缓存2151、采样器2154、纹理 缓存2158等)经由数据端口2156进行互连,以执行存储器访问并且与处理器 的渲染输出管线部件进行通信。采样器2154、缓存2151、2158和执行单元 2152A-2152B各自可具有单独的存储器访问路径。任选地,纹理缓存2158也 可被配置为采样器缓存。
渲染输出管线2170可包含栅格化器和深度测试部件2173,该栅格 化器和深度测试部件2173将基于顶点的对象转换为相关联的基于像素的表示。 栅格化器逻辑可包括用于执行固定功能三角形和线栅格化的窗口器/掩码器单 元。在一些实施例中,相关联的渲染缓存2178和深度缓存2179也是可用的。 像素操作部件2177对数据执行基于像素的操作,但是在一些实例中,与2D操 作相关联的像素操作(例如,利用混合的比特块图像传输)由2D引擎2141 执行,或者在显示时由显示控制器2143使用叠加显示平面来代替。共享的L3 缓存2175可以可用于所有的图形部件,从而允许在不使用主系统存储器的情 况下共享数据。
媒体管线2130可包括媒体引擎2137和视频前端2134。视频前端 2134可从命令流转化器2103接收管线命令。媒体管线2130可包括单独的命令 流转化器。视频前端2134可在将媒体命令发送到媒体引擎2137之前处理该媒 体命令。媒体引擎2137可包括用于生成线程以用于经由线程调遣器2131调遣 给线程执行逻辑2150的线程生成功能。
图形处理器2100可包括显示引擎2140。该显示引擎2140可在处理 器2100外部,并且可经由环形互连2102、或某个其他互连总线或结构来与图 形处理器耦合。显示引擎2140可包括2D引擎2141和显示控制器2143。显示 引擎2140可包含能够独立于3D管线进行操作的专用逻辑。显示控制器2143 可与显示设备(未示出)耦合,该显示设备可以是如在膝上型电脑中的系统集 成的显示设备或经由显示设备连接器而附连的外部显示设备。
几何管线2120和媒体管线2130可以可被配置成用于基于多个图形 和媒体编程接口来执行操作,并且不专用于任何一个应用编程接口(API)。 用于图形处理器的驱动器软件可将专用于特定图形或媒体库的API调用转换 为可由图形处理器处理的命令。可以为全部来自Khronos Group的开放图形库 (Open Graphics Library,OpenGL)、开放计算语言(Open Computing Language, OpenCL)和/或Vulkan图形和计算API提供支持。也可以为来自微软公司的 Direct3D库提供支持。可支持这些库的组合。还可以为开源计算机视觉库(Open Source Computer Vision Library,OpenCV)提供支持。如果可进行从未来API 的管线到图形处理器的管线的映射,则具有兼容3D管线的未来API也将受到 支持。
图形管线编程
图22A是图示用于对图形处理管线编程的图形处理器命令格式 2200的框图,图形处理管线诸如例如本文中结合图16A、图17、图21描述的 管线。图22B是图示根据实施例的图形处理器命令序列2210的框图。图22A 中的实线框图示一般被包括在图形命令中的组成部分,而虚线包括任选的或仅 被包括在图形命令的子集中的组成部分。图22A的示例性图形处理器命令格式 2200包括用于标识命令的客户端2202、命令操作代码(操作码)2204和数据 2206的数据字段。子操作码2205和命令大小2208也被包括在一些命令中。
客户端2202可指定图形设备的、处理命令数据的客户端单元。图 形处理器命令解析器可检查每一个命令的客户端字段以调整对命令的进一步 的处理,并且将命令数据路由至适当的客户端单元。图形处理器客户端单元可 包括存储器接口单元、渲染单元、2D单元、3D单元和媒体单元。每个客户端 单元可具有处理命令的对应的处理管线。一旦由客户端单元接收到命令,客户 端单元就读取操作码2204以及子操作码2205(如果存在)以确定要执行的操 作。客户端单元使用数据字段2206中的信息来执行命令。针对一些命令,预 期显式的命令大小2208指定命令的大小。命令解析器可基于命令操作码自动 地确定命令中的至少一些命令的大小。命令可经由双字的倍数被对齐。还可使 用其他命令格式。
图22B中的流程图示示例性图形处理器命令序列2210。以示例性 图形处理器为特征的数据处理系统的软件或固件可使用所示出的命令序列的 某个版本来建立、执行并终止图形操作的集合。仅出于示例目的示出并描述样 本命令序列,并且样本命令序列不限于这些特定的命令或该命令序列。此外, 命令可以作为批量的命令在命令序列中被发出,使得图形处理器将以至少部分 地并发的方式处理命令序列。
图形处理器命令序列2210能以管线转储清除命令2212开始,以使 任何活跃的图形管线完成用于管线的当前未决的命令。任选地,3D管线2222 和媒体管线2224可以不并发地操作。执行管线转储清除以使活跃的图形管线 完成任何未决命令。响应于管线转储清除,用于图形处理器的命令解析器将暂 停命令处理,直到活跃的绘画引擎完成未决操作并且相关的读缓存被无效。任 选地,渲染缓存中被标记为“脏”的任何数据可以被转储清除到存储器。管线转 储清除命令2212可用于管线同步,或可在将图形处理器置于低功率状态之前 被使用。
当命令序列需要图形处理器在管线之间显式地切换时,可使用管线 选择命令2213。在发出管线命令之前可在执行上下文中仅需要一次管线选择命 令2213,除非上下文是发出针对这两条管线的命令。可紧接在经由管线选择命 令2213进行的管线切换之前需要管线转储清除命令2212。
管线控制命令2214可配置用于操作的图形管线,并且可用于对3D 管线2222和媒体管线2224进行编程。管线控制命令2214可为活跃的管线配 置管线状态。管线控制命令2214可用于管线同步,并且用于在处理批量的命 令之前清除来自活跃管线内的一个或多个缓存存储器的数据。
与返回缓冲器状态2216有关的命令可用于将用于相应管线的返回 缓冲器的集合配置成用于写入数据。一些管线操作需要对一个或多个返回缓冲 器的分配、选择或配置,在处理期间操作将中间数据写入这一个或多个返回缓 冲器中。图形处理器也可使用一个或多个返回缓冲器以存储输出数据并执行跨 线程通信。返回缓冲器状态2216可包括选择要用于管线操作的集合的返回缓 冲器的大小和数量。
命令序列中的其余命令基于用于操作的活跃管线而不同。基于管线 判定2220,命令序列被定制成用于以3D管线状态2230开始的3D管线2222、 或者在媒体管线状态2240处开始的媒体管线2224。
用于配置3D管线状态2230的命令包括用于顶点缓冲器状态、顶点 元素状态、常量颜色状态、深度缓冲器状态、以及将在处理3D基元命令之前 配置的其他状态变量的3D状态设置命令。这些命令的值至少部分地基于使用 中的特定3D API来确定。3D管线状态2230命令也可以能够在将不会使用某 些管线元件的情况下选择性地禁用或绕过那些元件。
3D基元2232命令可用于提交要由3D管线处理的3D基元。经由 3D基元2232命令传递给图形处理器的命令和相关联的参数被转发到图形管线 中的顶点取得功能。顶点取得功能使用3D基元2232命令数据来生成顶点数据 结构。顶点数据结构被存储在一个或多个返回缓冲器中。3D基元2232命令可 用于经由顶点着色器对3D基元执行顶点操作。为了处理顶点着色器,3D管线 2222将着色器执行线程调遣给图形处理器执行单元。
3D管线2222可经由执行2234命令或事件来触发。寄存器可写入 触发命令执行。可经由命令序列中的“去往(go)”或“踢除(kick)”命令来触 发执行。命令执行可使用管线同步命令以通过图形管线对命令序列转储清除来 触发。3D管线将执行针对3D基元的几何处理。一旦操作完成,就对所得到的 几何对象进行栅格化,并且像素引擎对所得到的像素进行着色。对于那些操作, 还可以包括用于控制像素着色和像素后端操作的附加命令。
当执行媒体操作时,图形处理器命令序列2210可遵循媒体管线2224 路径。一般而言,针对媒体管线2224进行编程的特定用途和方式取决于要执 行的媒体或计算操作。在媒体解码期间,特定的媒体解码操作可被迁移到媒体 管线。也可绕过媒体管线,并且可使用由一个或多个通用处理核心提供的资源 完全地或部分地执行媒体解码。媒体管线还可包括用于通用图形处理器单元(GPGPU)操作的元件,其中,图形处理器用于使用计算着色器程序来执行 SIMD向量操作,这些计算着色器程序并不显式地与图形基元的渲染相关。
能以与3D管线2222类似的方式来配置媒体管线2224。用于配置 媒体管线状态2240的命令的集合在媒体对象命令2242之前被调遣或被放置到 命令队列中。用于媒体管线状态2240的命令可包括用于配置将被用于处理媒 体对象的媒体管线元件的数据。这包括用于在媒体管线内配置视频解码和视频 编码逻辑的数据,诸如编码或解码格式。用于媒体管线状态2240的命令还可 支持使用指向包含批量的状态设置的“间接”状态元素的一个或多个指针。
媒体对象命令2242可供应指向用于由媒体管线处理的媒体对象的 指针。媒体对象包括存储器缓冲器,该存储器缓冲器包含要处理的视频数据。 任选地,在发出媒体对象命令2242之前,所有的媒体管线状态必须是有效的。 一旦管线状态被配置并且媒体对象命令2242被排队,就经由执行命令2244或 等效的执行事件(例如,寄存器写入)来触发媒体管线2224。随后可通过由 3D管线2222或媒体管线2224提供的操作对来自媒体管线2224的输出进行后 处理。能以与媒体操作类似的方式配置和执行GPGPU操作。
图形软件体系结构
图23图示用于数据处理系统2300的示例性图形软件体系结构。此 类软件体系结构可包括3D图形应用2310、操作系统2320以及至少一个处理 器2330。处理器2330可包括图形处理器2332以及一个或多个通用处理器核心 2334。处理器2330可以是处理器1402或本文中描述的处理器中的任何其他处 理器的变体。可替代处理器1402或本文中描述的处理器中的任何其他处理器 来使用处理器2330。因此,结合处理器1402或本文中描述的处理器中的任何 其他处理器对任何特征的公开也公开了对应的与图形处理器2330的结合,但 不限于此。此外,图23的具有与本文中任何其他附图的元件相同或类似名称 的元件描述与其他附图中相同的元件,能以与其他附图中类似的方式进行操作 或运行,可包括相同的部件,并且可链接到其他实体,该实体如本文中其他地 方所描述的那些实体,但不限于此。图形应用2310和操作系统2320各自在数 据处理系统的系统存储器2350中执行。
3D图形应用2310可包含一个或多个着色器程序,该一个或多个着 色器程序包括着色器指令2312。着色器语言指令可以采用高级着色器语言,诸 如,Direct3D的高级着色器语言(High-Level Shader Language,HLSL)、OpenGL 着色器语言(OpenGL ShaderLanguage,GLSL),等等。应用还可包括采用适 于由通用处理器核心2334执行的机器语言的可执行指令2314。应用还可包括 由顶点数据限定的图形对象2316。
操作系统2320可以是来自微软公司的
Figure BDA0003922424690000871
操作系统、 专属的类UNIX操作系统或使用Linux内核的变体的开放源类UNIX操作系统。 操作系统2320可支持图形API 2322,诸如,Direct3D API、OpenGL API或 Vulkan API。当Direct3D API在使用中时,操作系统2320使用前端着色器编 译器2324以将采用HLSL的任何着色器指令2312编译成较低级的着色器语言。 编译可以是即时(just-in-time,JIT)编译或者应用可执行着色器预编译。在3D 图形应用2310的编译期间,高级着色器可被编译为低级着色器。着色器指令 2312能以中间形式提供,该中间形式诸如,由Vulkan API使用的标准便携式 中间表示(Standard Portable Intermediate Representation,SPIR)的某个版本。
用户模式图形驱动器2326可包含后端着色器编译器2327以将着色 器指令2312编译为硬件特定表示。当OpenGL API在使用中时,将采用GLSL 高级语言的着色器指令2312传递至用户模式图形驱动器2326以用于编译。用 户模式图形驱动器2326可使用操作系统内核模式功能2328来与内核模式图形 驱动器2329通信。内核模式图形驱动器2329可与图形处理器2332通信以调 遣命令和指令。
IP核心实现方式
一个或多个方面可以由存储在机器可读介质上的代表性代码实现, 该机器可读介质表示和/或限定集成电路(诸如,处理器)内的逻辑。例如,机 器可读介质可包括表示处理器内的各种逻辑的指令。当由机器读取时,指令可 使机器制造用于执行本文所描述的技术的逻辑。此类表示(被称为“IP核心”) 是集成电路的逻辑的可重复使用单元,这些可重复使用单元可以作为描述集成 电路的结构的硬件模型而被存储在有形的、机器可读介质上。可以将硬件模型 供应至在制造集成电路的制造机器上加载硬件模型的各客户或制造设施。可以 制造集成电路,使得电路执行与本文中描述的实施例中的任一实施例相关联地描述的操作。
图24A是图示根据实施例的可用于制造集成电路以执行操作的IP 核心开发系统2400的框图。IP核心开发系统2400可以用于生成可并入到更大 的设计中或用于构建整个集成电路(例如,SOC集成电路)的模块化、可重复 使用的设计。设计设施2430可生成采用高级编程语言(例如,C/C++)的IP 核心设计的软件仿真2410。软件仿真2410可用于使用仿真模型2412来设计、 测试并验证IP核心的行为。仿真模型2412可包括功能仿真、行为仿真和/或时 序仿真。随后可从仿真模型2412创建或合成寄存器传输级(register transferlevel, RTL)设计2415。RTL设计2415是对硬件寄存器之间的数字信号的流进行建 模的集成电路(包括使用建模的数字信号来执行的相关联的逻辑)的行为的抽 象。除了RTL设计2415之外,还可创建、设计或合成逻辑级或晶体管级的较 低级别设计。由此,初始设计和仿真的特定细节可有所不同。
可由设计设施进一步将RTL设计2415或等效方案合成到硬件模型 2420中,该硬件模型2420可以采用硬件描述语言(hardware description language, HDL)或物理设计数据的某种其他表示。可以进一步仿真或测试HDL以验证 IP核心设计。可使用非易失性存储器2440(例如,硬盘、闪存或任何非易失 性存储介质)来存储IP核心设计以用于递送至第三方制造设施2465。替代地, 可通过有线连接2450或无线连接2460(例如,经由互联网)来传送IP核心设 计。制造设施2465随后可制造至少部分地基于IP核心设计的集成电路。所制造的集成电路可被配置成用于执行根据本文中描述的至少一个实施例的操作。
图24B图示集成电路封装组件2470的截面侧视图。集成电路封装 组件2470图示如本文中所描述的一个或多个处理器或加速器设备的实现方式。 封装组件2470包括连接至衬底2480的多个硬件逻辑单元2472、2474。逻辑 2472、2474可至少部分地在可配置逻辑或固定功能逻辑硬件中实现,并且可包 括本文中描述的(一个或多个)处理器核心、(一个或多个)图形处理器或其 他加速器设备中的任一者的一个或多个部分。每个逻辑单元2472、2474可在 半导体管芯内实现,并且经由互连组织2473与衬底2480耦合。互连组织2473 可被配置成用于在逻辑2472、2474与衬底2480之间路由电信号,并且可包括 互连,该互连诸如但不限于凸块或支柱。互连组织2473可被配置成路由电信 号,诸如例如,与逻辑2472、2474的操作相关联的输入/输出(I/O)信号和/ 或功率或接地信号。任选地,衬底2480可以是基于环氧树脂的层压衬底。衬 底2480还可包括其他合适类型的衬底。封装组件2470可经由封装互连2483 连接到其他电气设备。封装互连2483可耦合至衬底2480的表面以将电信号路 由到其他电气设备,诸如主板、其他芯片组或多芯片模块。
逻辑单元2472、2474可与桥接器2482电耦合,该桥接器2482被 配置成用于在逻辑2472与逻辑2474之间路由电信号。桥接器2482可以是为 电信号提供路由的密集互连组织。桥接器2482可包括由玻璃或合适的半导体 材料构成的桥接器衬底。电路由特征可形成在桥接器衬底上,以提供逻辑2472 与逻辑2474之间的芯片到芯片连接。
尽管图示了两个逻辑单元2472、2474和桥接器2482,但是本文中 所描述的实施例可包括在一个或多个管芯上的更多或更少的逻辑单元。这一个 或多个管芯可以由零个或更多个桥接器连接,因为当逻辑被包括在单个管芯上 时,可以排除桥接器2482。替代地,多个管芯或逻辑单元可以由一个或多个桥 接器连接。此外,多个逻辑单元、管芯和桥接器可按其他可能的配置(包括三 维配置)被连接在一起。
图24C图示封装组件2490,该封装组件2490包括连接到衬底2480 (例如,基础管芯)的多个单元的硬件逻辑小芯片。如本文中所描述的图形处 理单元、并行处理器和/或计算加速器可由分开制造的各种硅小芯片组成。在该 上下文中,小芯片是至少部分地被封装的集成电路,该至少部分地被封装的集 成电路包括可与其他小芯片一起被组装到更大的封装中的不同的逻辑单元。具 有不同IP核心逻辑的各种集合的小芯片可被组装到单个设备中。此外,小芯 片可使用有源中介层(interposer)技术而被集成到基础管芯或基础小芯片中。 本文中描述的概念启用GPU内的不同形式的IP之间的互连和通信。IP核心可 使用不同的工艺技术来制造并在制造期间被构成,这避免了尤其是对于具有若 干风格的IP的大型SoC的将多个IP汇聚到同一制造工艺的复杂性。允许使用 多种工艺技术改善了上市时间,并提供具有成本效益的方法来创建多个产品SKU。此外,分解的IP更易修改以被独立地功率门控,对于给定工作负载不 在使用中的部件可被关断,从而降低总功耗。
在各实施例中,封装组件2490可包括由结构2485或一个或多个桥 接器2487互连的更少或更多数量的部件和小芯片。封装组件2490内的小芯片 可具有使用芯片-晶片-衬底(Chip-on-Wafer-on-Substrate)堆叠的2.5D布置, 其中,多个管芯并排地堆叠在硅中介层上,该硅中介层包括硅通孔 (through-silicon vias,TSV)以将小芯片与衬底2480耦合,该衬底2480包括 至封装互连2483的电气连接。
在一个实施例中,硅中介层是有源中介层2489,该有源中介层2489 除了TSV之外还包括嵌入式逻辑。在此类实施例中,封装组件2490内的小芯 片使用3D面对面管芯堆叠被布置在有源中介层2489的顶部上。有源中介层 2489除互连结构2485和硅桥接器2487外还可包括用于I/O 2491的硬件逻辑、 缓存存储器2492和其他硬件逻辑2493。结构2485启用各种逻辑小芯片2472、 2474与有源中介层2489内的逻辑2491、2493之间的通信。结构2485可以是 在封装组件的部件之间交换数据分组的NoC互连或另一形式的分组交换型结 构。对于复杂组件,结构2485可以是启用封装组件2490的各硬件逻辑之间的 通信的专用小芯片。
有源中介层2489内的桥接器结构2487可用于促进例如逻辑或I/O 小芯片2474与存储器小芯片2475之间的点到点互连。在一些实现方式中,桥 接器结构2487还可被嵌入在衬底2480内。
硬件逻辑小芯片可包括专用硬件逻辑小芯片2472、逻辑或I/O小芯 片2474和/或存储器小芯片2475。硬件逻辑小芯片2472以及逻辑或I/O小芯 片2474可以至少部分地在可配置逻辑或固定功能逻辑硬件中实现,并且可包 括本文中描述的(一个或多个)处理器核心、(一个或多个)图形处理器、并 行处理器或其他加速器设备中的任一个的一个或多个部分。存储器小芯片2475 可以是DRAM(例如,GDDR、HBM)存储器或缓存(SRAM)存储器。有源 中介层2489(或衬底2480)内的缓存存储器2492可充当用于封装组件2490 的全局缓存,充当分布式全局缓存的部分,或充当用于结构2485的专用缓存。
每个小芯片可被制造为单独的半导体管芯,并且可与基础管芯耦合, 该基础管芯嵌入在衬底2480内或与衬底2480耦合。与衬底2480的耦合可经 由互连组织2473来执行。互连组织2473可被配置成用于在衬底2480内的各 种小芯片与逻辑之间路由电信号。互连组织2473可包括互连,诸如但不限于 凸块或支柱。在一些实施例中,互连组织2473可被配置成用于路由电信号, 诸如例如,与逻辑、I/O和存储器小芯片的操作相关联的输入/输出(I/O)信号 和/或功率或接地信号。在一个实施例中,附加的互连组织将有源中介层2489 与衬底2480耦合。
衬底2480可以是基于环氧树脂的层压衬底,然而,它不限于此, 并且衬底2480还可包括其他合适类型的衬底。封装组件2490可经由封装互连 2483连接到其他电气设备。封装互连2483可耦合至衬底2480的表面以将电信 号路由到其他电气设备,诸如,主板、其他芯片组或多芯片模块。
逻辑或I/O小芯片2474和存储器小芯片2475可经由桥接器2487 被电耦合,该桥接器2487被配置成用于在逻辑或I/O小芯片2474与存储器小 芯片2475之间路由电信号。桥接器2487可以是为电信号提供路由的密集互连 组织。桥接器2487可包括由玻璃或合适的半导体材料构成的桥接器衬底。电 路由特征可形成在桥接器衬底上以提供逻辑或I/O小芯片2474与存储器小芯 片2475之间的芯片到芯片连接。桥接器2487还可被称为硅桥接器或互连桥接 器。例如,桥接器2487是嵌入式多管芯互连桥接器(Embedded Multi-dieInterconnect Bridge,EMIB)。替代地,桥接器2487可简单地是从一个小芯片 到另一小芯片的直接连接。
图24D图示根据实施例的包括可互换小芯片2495的封装组件2494。 可互换小芯片2495可被组装到一个或多个基础小芯片2496、2498上的标准化 插槽中。基础小芯片2496、2498可经由桥接器互连2497被耦合,该桥接器互 连2497可与本文中描述的其他桥接器互连类似,并且可以是例如EMIB。存储 器小芯片也可经由桥接器互连被连接到逻辑或I/O小芯片。I/O和逻辑小芯片 可经由互连结构进行通信。基础小芯片各自都能以用于逻辑或I/O或存储器/ 缓存中的一者的标准化格式来支持一个或多个插槽。
SRAM和功率递送电路可被制造到基础小芯片2496、2498中的一 个或多个中,基础小芯片2496、2498可使用相对于可互换小芯片2495不同的 工艺技术来制造,可互换小芯片2495堆叠在基础小芯片的顶部上。例如,可 使用较大工艺技术来制造基础小芯片2496、2498,同时可使用较小工艺技术来 制造可互换小芯片。可互换小芯片2495中的一个或多个可以是存储器(例如, DRAM)小芯片。可基于针对使用封装组件2494的产品的功率和/或性能来为 封装组件2494选择不同的存储器密度。此外,可在组装时基于针对产品的功 率和/或性能来选择具有不同数量的类型的功能单元的逻辑小芯片。此外,可将 包含具有不同类型的IP逻辑核心的小芯片插入到可互换小芯片插槽中,从而 启用可混合并匹配不同技术的IP块的混合式处理器设计。
示例性片上系统集成电路
图25-图26B图示可使用一个或多个IP核心制造的示例性集成电路 和相关联的图形处理器。除了所图示的内容之外,还可包括其他逻辑和电路, 包括附加的图形处理器/核心、外围接口控制器或通用处理器核心。图25-图26B 的具有与本文中任何其他附图的元件相同或类似名称的元件描述与其他附图 中相同的元件,能以与其他附图中类似的方式进行操作或运行,可包括相同的 部件,并且可链接到其他实体,该实体如本文中其他地方所描述的那些实体, 但不限于此。
图25是图示可使用一个或多个IP核心来制造的示例性片上系统集 成电路2500的框图。示例性集成电路2500包括一个或多个应用处理器2505 (例如,CPU)、至少一个图形处理器2510,该至少一个图形处理器2510可 以是图形处理器1408、1508、2510的变体,或者可以是本文中描述的并且可 替代所描述的任何图形处理器被使用的任何图形处理器。因此,本文中结合图 形处理器对任何特征的公开也公开了对应的与图形处理器2510的结合,但不 限于此。集成电路2500可附加地包括图像处理器2515和/或视频处理器2520, 图像处理器2515和视频处理器2520中的任一者可以是来自相同的设计设施或 多个不同的设计设施的模块化IP核心。集成电路2500可包括外围或总线逻辑, 包括USB控制器2525、UART控制器2530、SPI/SDIO控制器2535和I2S/I2C 控制器2540。此外,集成电路可包括显示设备2545,该显示设备2545耦合至 高清晰度多媒体接口(high-definition multimedia interface,HDMI)控制器2550 和移动行业处理器接口(mobile industry processor interface,MIPI)显示接口 2555中的一个或多个。可以由闪存子系统2560(包括闪存和闪存控制器)来提供存储。可以经由存储器控制器2565来提供存储器接口以获得对SDRAM 或SRAM存储器设备的访问。一些集成电路附加地包括嵌入式安全引擎2570。
图26A-图26B是图示根据本文中所描述的实施例的用于在SoC内 使用的示例性图形处理器的框图。所图示的图形处理器可以是图形处理器1408、 1508、2510、或本文中描述的任何其他图形处理器的变体。图形处理器可替代 图形处理器1408、1508、2510、或本文中描述的图形处理器中的任何其他图形 处理器被使用。因此,结合图形处理器1408、1508、2510或本文中描述的图 形处理器中的任何其他图形处理器对任何特征的公开也公开了对应的与图 26A-图26B的图形处理器的结合,但不限于此。图26A图示根据实施例的可 以使用一个或多个IP核心来制造的片上系统集成电路的示例性图形处理器 2610。图26B图示根据实施例的可以使用一个或多个IP核心来制造的片上系 统集成电路的附加的示例性图形处理器2640。图26A的图形处理器2610是低 功率图形处理器核心的示例。图26B的图形处理器2640是较高性能的图形处 理器核心的示例。例如,如本段开头所提及,图形处理器2610和图形处理器 2640中的每个图形处理器可以是图25的图形处理器2510的变体。
如图26A中所示,图形处理器2610包括顶点处理器2605和一个或 多个片段处理器2615A-2615N(例如,2615A、2615B、2615C、2615D,一直 到2615N-1和2615N)。图形处理器2610可以经由单独的逻辑执行不同的着 色器程序,使得顶点处理器2605被优化以执行用于顶点着色器程序的操作, 而一个或多个片段处理器2615A-2615N执行用于片段或像素着色器程序的片 段(例如,像素)着色操作。顶点处理器2605执行3D图形管线的顶点处理阶段,并生成基元和顶点数据。(一个或多个)片段处理器2615A-2615N使用由 顶点处理器2605生成的基元数据和顶点数据来产生被显示在显示设备上的帧 缓冲器。(一个或多个)片段处理器2615A-2615N可被优化以执行如在OpenGL API中提供的片段着色器程序,这些片段着色器程序可以用于执行与如在 Direct 3D API中提供的像素着色器程序类似的操作。
图形处理器2610附加地包括一个或多个存储器管理单元(MMU) 2620A-2620B、(一个或多个)缓存2625A-2625B以及(一个或多个)电路互 连2630A-2630B。该一个或多个MMU2620A-2620B为图形处理器2610(包括 为顶点处理器2605和/或(一个或多个)片段处理器2615A-2615N)提供虚拟 到物理地址映射,除了存储在一个或多个缓存2625A-2625B中的顶点数据或图 像/纹理数据之外,该虚拟到物理地址映射还可以引用存储在存储器中的顶点数 据或图像/纹理数据。一个或多个MMU 2620A-2620B可以与系统内的其他 MMU同步,使得每个处理器2505-2520可以参与共享或统一的虚拟存储器系 统,系统内的其他MMU包括与图25的一个或多个应用处理器2505、图像处 理器2515和/或视频处理器2520相关联的一个或多个MMU。图形处理器2610 的部件可与本文中描述的其他图形处理器的部件相对应。一个或多个MMU 2620A-2620B可与图2C的MMU 245相对应。顶点处理器2605和片段处理器2615A-2515N可与图形多处理器234相对应。根据实施例,一个或多个电路互 连2630A-2630B使得图形处理器2610能够经由SoC的内部总线或经由直接连 接来与SoC内的其他IP核心对接。一个或多个电路互连2630A-2630B可与图 2C的数据交叉开关240相对应。可在图形处理器2610的类似部件与本文中描 述的各种图形处理器体系结构之间发现进一步的对应性。
如图26B中所示,图形处理器2640包括图26A的图形处理器2610 的一个或多个MMU2620A-2620B、缓存2625A-2625B和电路互连 2630A-2630B。图形处理器2640包括一个或多个着色器核心2655A-2655N(例 如,2655A、2655B、26555C、2655D、2655E、2655F,一直到2655N-1和2655N), 其提供统一的着色器核心体系结构,其中,单个核心或单个类型的核心可执行 所有类型的可编程着色器代码,包括用于实现顶点着色器、片段着色器和/或计 算着色器的着色器程序代码。存在的着色器核心的确切数量可以因实施例和实 现方式而异。此外,图形处理器2640包括核心间任务管理器2645,该核心间 任务管理器2645充当用于将执行线程调遣给一个或多个着色器核心 2655A-2655N的线程调遣器和用于加速对基于片的渲染的分片操作的分片单 元2658,在基于片的渲染中,针对场景的渲染操作在图像空间中被细分,例如 以利用场景内的局部空间一致性或优化内部缓存的使用。着色器核心2655A-2655N可例如与图2D中的图形多处理器234相对应,或分别与图3A 和图3B的图形多处理器325、350相对应,或与图3C的多核心组365A相对 应。
用于图形和机器学习工作负载的张量加速逻辑
图27是根据实施例的数据处理系统2700的框图。数据处理系统 2700是异构处理系统,其具有处理器2702、统一存储器2710和包括机器学习 加速逻辑的GPGPU 2720。处理器2702和GPGPU 2720可以是如本文中所描 述的处理器和GPGPU/并行处理器中的任一者。例如,额外参考图1,处理器 2702可以是所图示一个或多个处理器102中的处理器的变体和/或与所图示的 一个或多个处理器102中的处理器共享体系结构,并且GPGPU 2720可以是所 图示的一个或多个并行处理器112中的并行处理器的变体和/或与所图示的一 个或多个并行处理器112中的并行处理器共享体系结构。额外参考图14,处理 器2702可以是(多个)所图示的处理器1402中的一个处理器的变体和/或与(多 个)所图示的处理器1402中的一个处理器共享架体系结构,并且GPGPU 2720 可以是(多个)所图示的图形处理器1408中的一个图形处理器的变体和/或与 (多个)所图示的图形处理器1408中的一个图形处理器共享体系结构。
处理器2702可执行存储在系统存储器2712中的用于编译器2715 的指令。编译器2715在处理器2702上执行,以将源代码2714A编译成编译代 码2714B。编译代码2714B可包括可由处理器2702执行的指令和/或可由 GPGPU 2720执行的指令。要由GPGPU执行的指令的编译可使用着色器或计 算程序编译器(诸如,图23中的着色器编译器2327和/或着色器编译器2324) 促进。在编译期间,编译器2715可执行操作以插入元数据,该元数据包括关于编译代码2714B中存在的数据并行性水平的提示和/或关于与要基于编译代 码2714B而被调遣的线程相关联的数据局部性的提示。编译器2715可包括对 于执行此类操作必要的信息,或者可以在运行时库2716的辅助下执行这些操 作。运行时库2716还可辅助编译器2715编译源代码2714A,并且还可包括指 令,这些指令在运行时与编译代码2714B链接以促进编译指令在GPGPU 2720 上的执行。编译器2715还可促进经由寄存器分配器(registerallocator,RA) 对变量的寄存器分配,并且生成用于在存储器与为变量指派的寄存器之间移动 用于该变量的数据的加载和存储指令。
统一存储器2710表示可由处理器2702和GPGPU 2720访问的统一 地址空间。统一存储器可包括系统存储器2712和GPGPU存储器2718。GPGPU 存储器2718是GPGPU 2720的地址空间内的存储器,并且可包括系统存储器 2712中的一些或全部。在一个实施例中,GPGPU存储器2718还可包括专用于 由GPGPU 2720独占地使用的任何存储器的至少一部分。在一个实施例中,存 储在系统存储器2712中的编译代码2714B可被映射到GPGPU存储器2718中,以供由GPGPU 2720访问。
GPGPU 2720包括多个计算块2724A-2724N,这些计算块 2724A-2724N可包括本文中描述的各种处理资源中的一个或多个。处理资源可 以是或可包括各种不同的计算资源,诸如例如,执行单元、计算单元、流式多 处理器、图形多处理器或多核心组。在一个实施例中,GPGPU 2720附加地包 括张量加速器2723(例如,矩阵加速器),该张量加速器2723可包括被设计 为用于加速矩阵操作的子集(例如,点积等)的一个或多个专用计算单元。张 量加速器2723也可以被称为张量加速器或张量核心。在一个实施例中,张量 加速器2723内的逻辑部件可跨多个计算块2724A-2724N的处理资源而分布。
GPGPU 2720还可包括可由计算块2724A-2724N和张量加速器2723 共享的资源的集合,该资源的集合包括但不限于寄存器的集合2725、功率和性 能模块2726、和缓存2727。在一个实施例中,寄存器2725包括直接可访问和 间接可访问的寄存器,其中间接可访问的寄存器被优化以供由张量加速器2723 使用。功率和性能模块2726可被配置成用于调整用于计算块2724A-2724N的 功率递送和时钟频率,以对计算块2724A-2724N内的空闲部件进行功率门控。 在各种实施例中,缓存2727可包括指令缓存和/或低级数据缓存。
GPGPU 2720可附加地包括L3数据缓存2730,该L3数据缓存2730 可用于对由张量加速器2723和/或计算块2724A-2724N内的计算元件从统一存 储器2710访问的数据进行缓存。在一个实施例中,L3数据缓存2730包括共 享本地存储器2732,该共享本地存储器2732可由计算块2724A-2724N内的计 算元件和张量加速器2723共享。
在一个实施例中,GPGPU 2720包括指令处置逻辑,诸如,取得和 解码单元2721以及调度器控制器2722。取得和解码单元2721包括取得单元和 解码单元,用于取得指令并对指令解码以供由计算块2724A-2724N中的一个或 多个或由张量加速器2723执行。指令可经由调度器控制器2722调度给计算块 2724A-2724N或张量加速器内的适当的功能单元。在一个实施例中,调度器控 制器2722是能够配置成用于执行高级调度操作的ASIC。在一个实施例中,调 度器控制器2722是能够执行从固件模块加载的调度器指令的微控制器或低每 指令能量的处理核心。
在一个实施例中,用于由计算块2724A-2724N执行的一些功能可以 被直接调度或转移(offload)到张量加速器2723。在各种实施例中,张量加速 器2723包括被配置成用于高效地执行矩阵计算操作的处理元件逻辑,矩阵计 算操作诸如由3D图形或计算着色器程序使用的乘法和加法操作以及点积操作。 在一个实施例中,张量加速器2723可被配置成用于加速由机器学习框架使用 的操作。在一个实施例中,张量加速器2723是显式地被配置成用于执行并行 矩阵乘法和/或加法操作的特定集合的专用集成电路。在一个实施例中,张量加 速器2723是现场可编程门阵列(FPGA),其提供可在工作负载之间被更新的 固定功能逻辑。在一个实施例中,可由张量加速器2723执行的计算操作的集 合相对于可由计算块2724A-2724N执行的操作可能是有限的。然而,张量加速 器2723能够以相对于计算块2724A-2724N显著更高的吞吐量执行并行张量操 作。
图28A-图28B图示根据实施例的由指令管线2800执行的矩阵操作 2805。图28A图示当配置有张量加速器2723内的脉动阵列2808时的指令管线 2800。图28图示当配置有包括脉动阵列1912的执行单元1900时的指令管线。
如图28A中所示,指令管线2800可被配置成用于执行矩阵操作2805, 诸如但不限于点积操作。两个向量的点积是等于向量的对应分量的乘积之和的 标量值。可以如以下等式(1)中所示来计算点积。
Figure BDA0003922424690000971
点积可在用于卷积神经网络(CNN)的卷积操作中使用。尽管图示 2D卷积,但是可以使用N维滤波器对N维体积执行N维卷积。感受野(receptive field)片2802突出显示输入体积缓冲器2804中的输入体积的部分。输入体积 缓冲器可以被存储在存储器2830中。可以在感受野片2802内的数据与卷积滤 波器内的数据之间执行点积矩阵操作2805以在输出缓冲器2806内生成数据点, 该数据点也可以被存储在存储器2830中。存储器2830可以是本文所述的存储 器中的任一个,包括如图27中的系统存储器2712、GPGPU存储器2718或一 个或多个缓存存储器2727、2730。
输出缓冲器2806内的数据点的组合表示由卷积操作生成的激活图。 激活图内的每个点通过将感受野片滑过输入体积缓冲器2804来生成。可以将 激活图数据输入到激活函数以确定输出激活值。在一个实施例中,可以在框架 内将输入体积缓冲器2804的卷积定义为高级矩阵操作2805。可以经由基元操 作(诸如,基本线性代数子程序(basic linearalgebra subprogram,BLAS)操 作)来执行高级矩阵操作。可以经由指令管线2800执行的硬件指令来加速基 元操作。
用于加速硬件指令的指令管线2800可包括:指令取得和解码单元 2721,其可取得硬件指令并对硬件指令解码;以及调度器控制器2722,其可将 经解码的指令调度到计算块2724A-2724N和/或张量加速器2723内的一个或多 个处理资源。在一个实施例中,硬件指令可被调度到计算块2724A-2724N,并 且可被转移到张量加速器2723。用于执行矩阵操作2805的一个或多个硬件指 令和相关联的数据可以被存储在存储器2830中。硬件指令的输出也可以被存 储在存储器2830中。
在一个实施例中,张量加速器2723可执行一个或多个硬件指令以 使用处理元件的脉动阵列2808来执行矩阵操作2805。脉动阵列2808包括能够 配置成用于执行矩阵-矩阵点积操作和矩阵-向量点积操作以及其他操作(诸如, 矩阵-矩阵融合乘加操作和矩阵-向量融合乘加操作)的可编程功能硬件和固定 功能硬件的组合。
在各实施例中,作为张量加速器2723的替代或附加,矩阵加速逻 辑也可被包括在计算块2724A-2724N的处理资源内。例如,如在图28B中所 示,在一个实施例中,每个计算块(例如,计算块2724N)包括执行单元 1900A-1900N的阵列。在一个实施例中,执行单元1900A-1900N的阵列中的 每个执行单元可包括脉动矩阵1912A-1912N。在一个实施例中,执行单元的子 集中的一个或多个配置有脉动阵列。脉动阵列的数量和可用的脉动阵列的吞吐 量可基于设备的功率和性能目标而变化。。调度器控制器2722可将脉动矩阵 操作(点积、融合乘加等)调度到各种计算块2724A-2724N的执行单元 1900A-1900N内的可用的脉动阵列1912A-1912N。
虽然在一个实施例中计算块2724A-2724N中的每个计算块包括执 行单元1900A-1900N的阵列,但是在另一实施例中,计算块2724A-2724N与图 2A中的处理集群阵列的处理集群214A-214N共享体系结构。在此类实施例中, 计算块2724A-2724N包括图2C中的多个图形多处理器234,多个图形多处理 器234包括如图2D中图示的内部部件。因此,计算块内的图形多处理器可包 括加载/存储单元266、GPGPU核心262、和/或张量/RT(光线追踪)核心263。 在一个实施例中,计算块2724A-2724N可包括图3C的GPU 380的多核心组 365A-365N,并且可包括多个集合的GFX(图形)核心370、张量核心371和 光线追踪核心372。在此类实施例中,调度器控制器2722可将用于执行矩阵操 作的指令调度到计算块2724A-2724N内的张量/RT核心263和/或张量核心371。 经加速的矩阵操作包括点积操作、矩阵乘法操作和/或融合乘加操作,这些操作 可对整数或浮点矩阵元素以及各种精度级别执行。附加地,在一个实施例中, 计算块2724A-2724N可包括图15C的计算单元1560A-1560N的变体,其中, 此类变体包括能够执行整数或浮点矩阵加速指令的如本文中所描述的矩阵加 速逻辑(例如,脉动阵列、张量核心、脉动张量核心)。
图29图示包括以管线化的方式组织的乘法器电路和加法器电路的 脉动阵列2900。在一个实施例中,脉动阵列2900表示被包括在脉动阵列1912 中的物理管线阶段,并包括相关于脉动阵列1912描述的能力(包括对稀疏操 作和块稀疏操作的支持),并且可附加地被配置成用于支持元素向量内的或跨 通道集合的结构化稀疏度。用于第一输入矩阵的输入2912A-2912H由被包含在 标记为Src1和Src1+1至Src1+7的输入中的数据元素表示。输入2910A-2910H 对应于第二输入矩阵,并被标记为Src2。可以将可包括初始累加器值的输入 2902A-2902B作为Src0来提供。处理元件的阵列构成脉动阵列2900的物理管 线阶段2911A-2911H。矩阵-矩阵操作或矩阵-向量操作(包括融合乘加操作和/ 或点积操作)可在每个时钟周期期间在每个管线阶段2911A-2911H处被执行。 在每个周期,每个管线阶段可接收新的Src2输入,该新的Src2输入可由管线 阶段的处理元件使用,以使用新Src1输入或先前被读取的较旧的Src1输入来 计算值,但是在初始启动期间,在所有管线阶段2911A-2911H随着经计算的值 的初始集合传播通过各阶段而变得活跃之前,可能花费若干周期。
输入2902A可将Src0值提供给管线阶段2911A的处理元件,以用 作初始累加器值。替代地,输入2902B可提供Src0值,以被加到由脉动阵列 的管线阶段2911H计算的值,这能够在未被使用的较高阶段被功率门控时使用 阵列的较低阶段来进行针对脉动阵列2900的部分轮次操作。在操作期间,Src2 输入的所选择的通道的数据元素跨管线阶段2911A-2911H的处理元素的所有 通道被广播,其中,每个通道表示具有多个元素的向量。每通道的元素数量可 基于元素的大小而变化。阶段的处理元件随后使用所选择的Src2通道和给定的Src1输入的所有通道来执行操作。Src2输入与八个Src1输入(例如,每个 阶段一个Src1输入)一起操作。Src2输入的通道的数据元素跨处理元件 2911A-2911H的所有通道被广播。处理元件随后利用Src1输入的所有通道来 操作Src2通道。在第一时钟周期中,Src1输入与Src2的第一通道的数据元素 进行操作。在下一周期中,第二Src1(标记为Src1+1)与Src2的第二通道的 数据元素进行操作。该序列在管线的8个阶段上重复。每个阶段都将其操作加到前一阶段的输出。跨各管线阶段,以管线化方式操作多个Src2输入。随着 第一Src2输入的连续通道被推过各管线阶段,可以在第一阶段处提供新的Src2 输入。
来自最终阶段的输出2922被标记为Dst。其中d=脉动深度,并且 e=每通道的数据元素数量,通道的输出由下面的等式(2)描述:
Figure BDA0003922424690001001
如等式(2)中所示,每个通道可包括多个数据元素,对这些数据 元素并行地执行操作。在一个实施例中,每个通道表示四元素数据向量,但是 可以为每个通道配置不同数量的元素。在一个实施例中,通道内的数据元素的 数量可以基于每个数据元素的大小而变化。可以使用例如每个元素具有8比特 数据类型的四元素向量、具有16比特数据类型的两元素向量、具有4比特数 据类型(例如,INT4)的八元素向量、或具有2比特数据类型(例如,INT2) 的16元素向量来执行点积。可以取决于Src1和Src2的数据类型自动地调整通 道的数量。指令还可指定要用于指令的所需脉动深度。
在一个实施例中,处理元件2911A-2911H可直接从通用寄存器堆读 取输入2910A-2910H、2912A-2912H。在一个实施例中,脉动阵列2900包括 用于以下操作的逻辑:从通用寄存器堆读取输入2910A-2910H、2912A-2912H, 并将输入数据存储在脉动阵列内部的寄存器、缓冲器或存储器中。内部逻辑随 后可将输入数据元素馈送到处理元件2911A-2911D以供处理。可以将输出2922 写入到脉动阵列2900的内部寄存器或存储器和/或直接写入到通用寄存器堆。
图30A-图30B图示对被配置成用于以任意脉动深度执行操作的脉 动阵列3000的使用。在所图示的示例中,脉动阵列3000具有物理深度四,这 与四个物理管线阶段对应。脉动阵列可被配置成用于使用任意数量的逻辑阶段 来操作,任意数量的逻辑阶段包括四个、八个、十二个或十六个逻辑阶段、或 不可由使用下文描述的图31中的部分轮次操作的物理阶段的数量整除 (divisible)的其他数量的逻辑阶段。图30A示出从外部源接收Src0输入并利 用Src1输入和Src2输入处理前四个阶段的阵列。该阵列的输出被往回馈送到 图30B中示出的第二步骤中。图30B示出接下来的四个级,其使用包括已经 处理的值以及Src1输入和Src2输入的回路数据来计算。
如图30A中所示,脉动阵列3000可接受输入2902作为Src0输入, 该输入2902经由数据选择器3004被读取(3002)。数据选择器3004在输入 2902与回路输入3006之间进行选择。处理元件2911A-2911D能以类似于脉动 阵列2900的方式处理输入2910A-2910D和2912A-2912D。如果四个阶段足以 完成操作,则管线阶段2911D可以经由数据选择器3024将输出2922写入(3022) 到指定的Dst(目的地)寄存器或存储器。在需要进一步的阶段的情况下,数 据选择器3024可写入回路输出3026,该回路输出3026作为回路输入3006被 提供给管线阶段2911A的处理元件。
如图30B中所示,在一个实施例中,回路输入3006可进一步由处 理元件2911A-2911D处理。回路输入3006包括已经处理的值。在一个实施例 中,回路输入3006也可包括输入2910E-2910H、输入2912E-2912H,这些输 入可以在处理前四个阶段时被预取。数据选择器3004选择回路输入3006以用 于管线阶段2911A的输入。管线阶段2911A-2911D的处理元件随后可处理输 入2910E-2910H和2912E-2912H。数据选择器3024随后可将第八阶段结果作 为输出2922写入(3022)到指定的Dst寄存器。
在一个实施例中,脉动阵列3000经修改以排除回路输出3026和回 路输入3006,并且替代地包括中间存储装置3025,如图30A-图30B中所示。 中间存储装置3025可以是在脉动阵列3000内部的存储器设备或寄存器,或者 可以是在脉动阵列3000外部的寄存器堆中的寄存器。在图30A中示出的操作 期间,来自管线阶段2911D的输出在图30B中示出的操作之前可被存储在中 间存储装置3025中,而不是由回路输出3026输出并由回路输入3006读取。 在图30B中示出的操作期间,来自管线阶段2911D的输出可被加到存储在中 间存储装置3025中的数据并被写入到输出2922。脉动阵列3000还可被配置成 用于使用如下文所描述的至少一个部分轮次来执行多轮次操作,以启用不可由 阵列的物理深度整除的逻辑深度。
具有反馈输入的可缩放矩阵乘法加速器
第二实施例使用利用并行单元被执行的同时的指令来实现增加的 吞吐量。乘法加速器的若干实例或路径并行地运行。这些实例可共享Src1,或 者它们可具有独立的Src1输入。每个路径将具有它们自身的Src2输入和Src0 输入。这些实例将具有它们自身的src2输入和src0输入。在图31中示出了显 示具有四个阶段的深度的两个路径的版本。替代地,在图32中示出了使用具 有两个阶段的深度的四个路径的版本。
图31图示两路径矩阵乘法加速器3100,其中每个路径具有四个阶 段的深度。两路径矩阵乘法加速器3100包括:用于Src0输入的输入逻辑 3102A-3102B、用于存储从输入逻辑3110A-3110B接收的数据元素的输入缓冲 器3111A-3111B、以及用于存储从用于Src1的共享输入逻辑3112接收的数据 元素的输入缓冲器3113A-3113B。每个阶段包括可并行地操作的处理元件的对。 阶段1包括处理元件3131A-3131B,阶段2包括处理元件3132A-3132B,阶段 3包括处理元件3133A-3133B,阶段4包括处理元件3134A-3134B。处理元件 3131A-3131B、3132A-3132B、3131A-3133B、3134A-3134B中的每一个处理元 件的硬件逻辑可以与脉动阵列2900或脉动阵列3000的处理元件的硬件逻辑相 同或类似,并且可以利用相同的工艺技术或更先进的工艺技术来制造。两路径 矩阵乘法加速器3100的处理元件还能以相对于脉动阵列2900的实现方式更高 的频率来操作。处理元件可以使用更先进的工艺技术来制造。
可以使用与数据选择器3004、3024相同或类似的数据选择器来实 现反馈。取决于读取逻辑的配置,输入数据可以事先被预取到输入缓冲器中, 或者在输入到处理元件3131A-3131B中之前的一个或多个周期从两路径矩阵 乘法加速器3100内的寄存器或缓存读取。阶段4的处理元件3134A-3134B可 往回反馈到阶段1的对应处理元件3131A-3131B中。能以四的倍数启用动态逻 辑深度。在经配置数量的逻辑阶段之后,结果可以由输出逻辑3122A-3122B写 入指定的目的地。
图32图示四路径矩阵乘法加速器3200,其中每个路径具有两个阶 段的深度。四路径矩阵乘法加速器3200包括与两路径矩阵乘法加速器3100相 同数量的处理元件,其中处理元件配置有两倍之多的路径,但是每个路径的深 度是一半。四路径矩阵乘法加速器3200包括:用于Src0的输入逻辑 3202A-3202D、用于存储由用于Src2的输入逻辑3210A-3210D读取的输入元 素的输入缓冲器3211A-3211D和用于存储由用于Src1的共享输入逻辑3212读取的输入元素的输入缓冲器3213A-3213D。处理元件3231A-3231B启用针对阶 段1的并行处理。处理元件3232A-3232B启用针对阶段2的并行处理。每个路 径的阶段2可以往回反馈到阶段1,或经由输出逻辑3222A-3222D将结果写入 指定的目的地。处理元件3231A-3231B、3232A-3232B可包括与处理元件 3131A-3131B、3132A-3132B、3131A-3133B、3134A-3134B的硬件逻辑类似的 硬件逻辑,并且可以使用类似的硬件逻辑来实现回路功能。
两路径矩阵乘法加速器3100或四路径矩阵乘法加速器3200的优点 包括可缩放性、软件兼容性和吞吐量。这些加速器的模块化体系结构相对于深 度为8的脉动阵列实现更高效的缩放。可以针对不同的产品需求或用例定制矩 阵乘法加速器的不同配置,而无需重新设计。附加地,所使用的相同软件模型 独立于硬件实现方式。为旨在由八个阶段的脉动管线执行的指令设计的算法可 在使用四个阶段的矩阵乘法加速器的实现方式中使用。硬件将以对软件透明的 方式使用反馈来模拟8个阶段的管线。在要求高DPAS指令吞吐量的设计中可 以使用多个路径。具有更大数量路径的实现方式可以与更高带宽的输入逻辑和输出逻辑耦合。在一个实施例中,两路径矩阵乘法加速器3100和四路径矩阵 乘法加速器3200被配置成用于以比具有深度为8的脉动阵列的可能情况更高 的效率和/或更精细的粒度来绕过具有块稀疏度的输入。
可缩放矩阵乘法加速器上的稀疏乘法
第三实施例在处理具有不规则稀疏度的数据时促进增加的指令吞 吐量。可经由输入多路复用器逻辑单独地选择Src1输入和Src2输入的元素, 并且处理可仅使用非零值被执行。
图33图示使用具有反馈输入的脉动阵列的可缩放稀疏矩阵乘法加 速器3300。可缩放稀疏矩阵乘法加速器3300可包括如在四路径矩阵乘法加速 器3200中那样的处理元件3231A-3231D、或本文描述的任何其他处理元件。 在每个路径的开始处的处理元件3231A-3221B包括用于Src0的输入逻辑。可 缩放稀疏矩阵乘法加速器3300的每个路径的每个阶段可经由输入选择器 3312A-3312D接收独立的或共享的Src1的任何元素。每个路径的每个阶段也 可以接收Src2的任何元素。经由单独的输入元素选择器提供独立的Src2输入 (例如,经由输入选择器3310A和输入选择器3311A提供Src2A,经由输入选 择器3310B和输入选择器3311B提供Src2B)。单独的Src2输入使单独的路 径能够计算不同的指令。单独的输出逻辑3322A-3322B针对每个路径都是存在 的,以启用用于不同指令的输出。
图34示出使用在每个阶段上具有反馈输入和输出的脉动阵列的可 缩放稀疏矩阵乘法加速器3400。可缩放稀疏矩阵乘法加速器3400包括与可缩 放稀疏矩阵乘法加速器3300类似的硬件逻辑、以及附加的输入和输出逻辑, 该附加的输入和输出逻辑用于使得能够将Src0元素提供给每个路径的每个阶 段并且能够为每个路径的每个阶段提供单独的输出。除了用于为第一路径选择 Src2A元素的输入选择器3310A和3311A、用于为第二路径选择Src2B输入的 输入选择器3310A和3311B之外,还为每个路径针对Src0输入添加输入分离器3403A-3403B。每个输入分离器3402A-3402B可包括解复用器或类似的硬件 逻辑,以使被输入逻辑3402A-3402B读取的Src0输入元素能够发送到每个阶 段。还包括输入选择器3312A-3312D,以使Src1输入能够被每个路径的每个 阶段选择。除了来自每个路径的第二阶段的输出逻辑3322A-3322B(处理元件 3431C-3431D)之外,还提供了附加的输出逻辑3422A-3422B,以启用来自每 个路径的第一阶段的输出(3431A-3431B)。处理元件3431A-3431C能以其他 方式与本文描述的其他处理元件类似。
在操作期间,可缩放稀疏矩阵乘法加速器3400能配置成用于接受 仅一个元素的组。给定Src2输入{B0,0,B2,B3,0,0,0,0},对于第三实施例(例 如,可缩放稀疏矩阵乘法加速器3300),对Src2上的非零元素作出两组([B0, B2],[B3,0]),其中第二组包括零填补。图34中示出的优化使组能够形成为 [B0,B2],[B3]。B0和B2将被指派给路径的第一阶段和第二阶段(例如,包括 处理元件3431A和处理元件3431C的第一集合或包括处理元件3431B和处理 元件3431D的第二集合中的任一个)。在反馈之后,B3将被指派给那个路径 的第一阶段。由于路径的第一阶段可(例如,经由输出逻辑3422A或3422B) 提供输出,因此不需要消耗路径的第二阶段(处理元件3431C或处理元件3431D 中的任一个)。此外,所接受的用于那个路径的下一Src2输入可以从第二阶 段开始,因此,两个元素的组将分别被指派给第二阶段和第一阶段。可以将用 于处理新Src2输入的Src0指派给路径的第二阶段(例如,经由输出逻辑3422A 或3422B)。
除了图33中所图示的可缩放稀疏矩阵乘法加速器3300和图34中 所图示的可缩放稀疏矩阵乘法加速器3400的硬件逻辑之外,一些实施例附加 地包括输入和输出硬件存储器缓冲器。输入存储器缓冲器可用于存储并具有 Src0输入和Src2输入的就绪组(readygroup),这减少了对高带宽输入逻辑的 需求。输出缓冲器允许在同一周期中生成的Dst输出以较低的速率被稳定地写 入存储器,这减少了对高带宽输出逻辑的需求。
此外,一些实施例包括对其中所有元素均为零的输入的旁路。旁路 允许通过输出逻辑将Src0直接写入,而无需通过脉动阵列。此旁路与数据依 赖性策略配合使用,以防止指令之间的写后读(read-after-write,RAW)风险 会损坏数据的完整性。
具有双管线并行脉动阵列的矩阵加速器
图35图示根据实施例的用于矩阵加速器的双管线并行脉动阵列 3500。如本文中所描述的矩阵加速器(例如,张量加速器2723、张量/RT核心 263、张量核心371)或执行单元(例如,执行单元1900)可包括双管线并行 脉动阵列3500,该双管线并行脉动阵列3500包括并行地操作以执行指令的两 个脉动阵列管线(例如,脉动管线3502、脉动管线3504)。双管线并行脉动 阵列3500使作为Src2输入被提供的行数据能够被分区,其中,使用共同的Src1输入并行地处理分区。此类配置在不引发与两个分开的和完全独立的脉动阵列 相关联的功率和面积成本的情况下实现针对矩阵操作的增加的吞吐量。
可从与矩阵加速器相关联的寄存器堆(例如,(一个或多个)寄存 器堆258、334A-334B、369、向量寄存器1561、GRF 1821、寄存器堆1906等) 读取用于矩阵操作的输入。双管线并行脉动阵列3500包括在两个脉动阵列管 线之间被共享的用于Src1操作对象的输入3521。Src1输入端输入列数据,该 列数据由两个脉动阵列管线用于执行矩阵乘法操作,在这些矩阵乘法操作中, 矩阵行数据的两个集合(Src2输入3522A-3522B)与列数据的单个集合相乘。 单个Src2寄存器可存储用于操作的两个阶段的输入。例如,来自输入 3522A-3522B的数据可按64比特块被读取,其中,较低的32比特被用于在脉 动阵列的阶段处的操作,并且较高的32比特被用于在脉动阵列的下一连续的 阶段处的操作。由于一个Src2读取可被用于阵列上的两个操作,因此Src2读 取循环对的第二循环可被用于针对第二阵列读取新Src2。用于Src1数据的共 同的输入3521以及将Src2寄存器数据用于多个操作相对于两个完全独立的脉 动阵列减少了对GRF的读取需求。相对于使用独立的脉动阵列的减少的寄存 器读取需求可减少针对其他处理元件导致的对性能的潜在的负面影响,其他处 理元件在那些处理元件正与脉动阵列同时操作时与脉动阵列共享寄存器堆。
为Src0(累加器值)输入提供分开的输入3520A-3520B。来自输入 3520A-3520B的数据被存储在Src0数据缓冲器3530A-3530B中,并被加到来 自脉动阵列管线的输出,这与在其他脉动阵列设计中在阶段0处被相加形成对 照。来自每个阵列的输出可被存储在包括存储器(例如,累加器寄存器)和加 法器电路的累加器/加法器电路中。累加器/加法器电路3532可存储来自脉动管 线3502的输出,并且将输出加到存储在Src0数据缓冲器3530A中的数据。累 加器/加法器电路3534可存储来自脉动管线3504的输出,并且将输出加到存储 在Src0数据缓冲器3530B中的数据。
在一个实施例中,多轮次操作被启用,使得阵列的8个物理阶段操 作为16个逻辑状态。脉动管线3502和脉动管线3504中的每一个脉动管线的8 个阶段可通过分别将第一轮次的输出存储到第一累加器/加法器电路3532和第 二累加器/加法器电路3534来操作为16个逻辑状态。存储在电路中的值可与由 通过脉动管线3502和脉动管线3504中的每个脉动管线的第二轮次生成的输出 累加。对于给定的阶段i,该阶段在第一轮次期间操作为阶段i,并且在第二轮 次期间操作为阶段i+8。取决于阵列正在执行第一轮次操作还是第二轮次操作, 适当的输入数据被提供给阵列。在一个实施例中,可经由单轮次和/或多轮次或 部分轮次操作支持针对具有任何数量的逻辑阶段的指令的操作。选择器电路 3536使第一累加器/加法器电路3532和第二累加器/加法器3534内的数据能够 被输出到目的地寄存器。
图36图示用于脉动阵列的通道的阶段对3600。在一个实施例中, 用于图35的双管线并行脉动阵列3500的每个阵列的物理管线阶段成组为阶段 对3600。图示用于阶段0(3610)和阶段1(3611)的阶段对3600,其中,其 他阶段对(例如,[2,3]、[4,5]、[6,7])以类似方式被配置。每个阶段的每个通 道包括乘法器对(例如,用于阶段0的乘法器3612A-3612B、用于阶段1的乘 法器3613A-3613B)和共同的加法器3604。累加器输入3620(Src0)通过而 到达图35中示出的Src0数据缓冲器3530A-3530B,并且累加器输入3620(Src0) 不由阶段对3600操作。适当的Src1寄存器数据作为对适当阶段的输入被提供。 单个Src2寄存读取可将用于这两个阶段的数据存储在阶段对3600中。
图37图示包括用于加速稀疏矩阵乘法的部分和回路和电路的脉动 阵列3700。在上文描述的脉动阵列2808中,包括权重数据的操作对象在阵列 内可以是固定的,并且部分和贯穿阵列结构被传播。虽然关于脉动阵列2808 的其他细节可以是可适用的,但是在脉动阵列3700中,对部分和进行再循环 而不是将部分和传播至一脉动层。在一个实施例中,脉动阵列3700可以配置 有M行和N列的处理元件(PE 3712AA-PE 3712MN)。处理元件可以访问寄 存器,这些寄存器以行和列数据的形式存储输入数据以用于输入矩阵。寄存器 可以被存储在处于脉动阵列3700本地的寄存器堆中,或者存储在处理资源的 与脉动阵列3700耦合或包括脉动阵列3700的寄存器堆中。寄存器可以存储矩 阵A 3702A-3702M的行元素,这些行元素用于与矩阵B 3701A-3702N的列元 素相乘。
在一个实施例中,可以每个时钟周期在每个处理元件PE 3712AA-PE 3712MN处执行融合乘加(fused multiply-add,FMA)。矩阵A的 元素与矩阵B的对应元素相乘,然后被加到累加器值,或者对于第一周期被加 到可选的初始输入值(例如,SRC0)。可以在每个处理元件处配置部分和回 路。在每个周期之后,累加器值可以在处理元件内被回送,并且用作用于下一 周期的输入。一旦对整个行执行了操作,就可将结果存储到寄存器堆。在计算 周期的集合之后,处理元件PE 3712AA-PE 3712MN之间的数据移动可以基于 被执行的指令或宏操作而变化。
利用压缩的数据知晓稀疏度
本文中描述的实施例提供编码布局,该编码布局使稀疏神经网络数 据的样本块能以减少的比特形式来编码,该减少的比特形式在处理与数据相关 联的神经网络时减少要求传送或存储的数据量。在头部中指示样本块中的非零 值的数量,接着是指示块内的非零值的图谱的重要性图谱。按照在流内出现的 顺序对样本的非零值编码。在一个实施例中,压缩可以基于除零值之外的其他 值。例如,数据集内的指定值可以被编码并且从经压缩的数据流被排除,从而 启用基于一、二或其他指定值的压缩。在一个实施例中,基于接近值启用压缩。 数据集内的在阈值零内的、或在指定值的阈值内的值可以被压缩,如同那些值 为零或在指定值的阈值内。可以经由与矩阵加速器逻辑耦合或耦合在矩阵加速 器逻辑内的编解码器逻辑来启用利用压缩的数据知晓稀疏度。
图38A-图38B图示矩阵加速电路,该矩阵加速电路包括用于使得 能够以压缩格式读取稀疏数据的编解码器。图38A图示计算块3800,该计算 块3800包括启用编解码器的分解的脉动逻辑。图38B图示脉动阵列内的与编 解码器耦合以对输入数据解压缩的处理元件。
如图38A中所示,与在图28A中在单独的张量加速器2723中包括 脉动阵列2808、或者在每个如图19中的执行单元1900中包括脉动阵列1912 不同,脉动阵列的分解的集合3812A-3812B可以被包括在计算块3800中,该 计算块3800与图27的计算块2724A-2724N中的一个类似。计算块3800还可 包括图18A的执行逻辑1800的组件,包括可与EU 1808A-1808N类似的处理 资源,或如本文中所描述的任何其他处理资源的多个互连的处理资源(PR 3808A-3808O)。在一个实施例中,脉动阵列3812A-3812B包括编解码器 3824A-3824B,该编解码器3824A-3824B使得能够对被接收以进行处理的输入 数据和输出数据编码和解码。
脉动阵列3812A-3812B包括数据处理单元的宽W且深D的网络, 其可用于以脉动方式执行向量或其他数据并行操作,与本文中描述的其他脉动 阵列类似。在一个实施例中,脉动阵列3812A-3812B可被配置成用于执行矩阵 操作,诸如,矩阵点积操作。在一个实施例中,脉动阵列3812A-3812B支持 16比特浮点操作以及8比特和4比特整数操作。在一个实施例中,脉动阵列 3812A-3812B可被配置成用于加速机器学习操作。在此类实施例中,脉动阵列 3812A-3812B可配置有对bfloat 16比特浮点格式的支持。通过在计算块3800 内但是在PR 3808A-3808O外部包括脉动阵列3812A-3812B,脉动阵列 3812A-3812B的大小和数量可以独立于PR 3808A-3808O的数量而缩放。此外, 可以保留PR内的原本将由脉动阵列活动消耗的通信带宽。此外,当矩阵工作 负载不是正在被执行时,脉动阵列3812A-3812B可以被时钟/功率门控。
脉动阵列3812A-3812与PR 3808A-3808O之间的通信可以经由缓存 或共享本地存储器(缓存/SLM 3810)和/或共享寄存器堆3814来执行。在一 个实施例中,代替分立的共享寄存器堆3814,可以对缓存/SLM 3810分区以用 作共享寄存器堆。共享寄存器堆3814可类似地被结构化到其他GPGPU寄存器 堆(诸如图19中的寄存器堆1906)。共享寄存器堆还可以包括用于配置脉动 阵列3812A-3812B与PR 3808A-3808O之间的交互的专用寄存器的集合。缓存 /SLM 3810可以是L1缓存、L2缓存和/或显式地可寻址的管芯上存储器的块。
用于由脉动阵列3812A-3812B处理的矩阵数据可以被存储在缓存 /SLM 3810中。处理命令或指令可以经由共享寄存器堆3814被提供给脉动阵 列3812A-3812B。可以由PR3808A-3808O从缓存/SLM 3810读取处理结果, 或者可以从共享寄存器堆内的目的地/输出寄存器读取处理结果。在操作期间, 代替消耗PR 3808A-3808O内的总线/结构带宽,可以将通信通信量局部化到脉 动阵列3812A-3812B、缓存/SLM 3810、和/或共享寄存器堆3814。计算块3800 内的PR 3808A-3808O中的任一个可以将矩阵工作负载转移至脉动阵列 3812A-3812B中的一者或两者。可以将具有命令的消息从PR发送至脉动阵列, 该命令指定要执行的操作和用于该操作的操作对象。脉动阵列3812A-3812B可 以执行所请求的操作(乘法/加法、融合乘法/加法、乘法/累加、点积等)并且 将结果输出到共享寄存器堆3814。用于所请求的操作的输入数据、中间数据和 /或输出数据可以被存储在缓存/SLM 3810中,并且多个依赖性操作可以被链接。 在一个实施例中,当用于神经网络的训练或推断的处理操作被执行时,脉动阵 列3828A-3828B还可以执行激活函数,这些激活函数包括但不限于sigmoid激活、ReLU激活、和双曲正切(TanH)激活。在此类实施例中,用于神经网络 的操作可以以粗粒度被转移至脉动阵列3812A-3812B。
PR 3808A-3808O能以压缩格式将输入数据提供给脉动阵列 3812A-3812B,并且编解码器3824A-3824B可用于对数据解压缩。当输出数据 准备好被提供给PR 3808A-3808O时,如果PR将对数据执行操作并且不支持 对经压缩的数据的直接读取,则数据可以保持经解压缩。如果PR 3808A-3808O 支持对经压缩的数据的读取或者将不对数据执行附加操作,则输出数据可以被 重新编码。可以使用基于零的编码,并且可以基于数据稀疏度的程度来启用或 禁用压缩。替代地,可以基于要被处理或输出的数据集的分布来使用其他形式 的编码。例如,编解码器3824A-3824B可被配置成用于对稀疏数据解码,该稀 疏数据根据基于零的压缩或者使用本文中描述的另一形式的压缩(例如,基于 一、基于二、接近零、接近一、接近二等)被编码。
如图38B中所示,系统3850图示脉动阵列3700的处理元件,其中 脉动阵列被配置成用于对经压缩的稀疏数据解码。如参照图37所描述,每个 PE 3712AA-3713MN包括硬件逻辑,用于执行用于矩阵操作的计算。A(A0、 A1到AM)和B(B0、B1到BN)是与点积、矩阵乘法、乘法/加法、或乘法累 加操作相关联的输入矩阵的元素。在一个实施例中,每个PE 3712AA-3713MN 与编解码器(3851a、3851b、…、3851m;3852a、3852b、…、3852n)相关联, 以对与要被执行的操作相关联的经压缩的输入操作对象解码。编解码器可被配 置成用于对稀疏数据解码,该稀疏数据根据基于零的压缩或使用本文中描述的 另一形式的压缩被编码。
可以使用各种编码技术对稀疏神经网络数据编码(例如,压缩), 编码技术诸如但不限于唯一绝对值(unique absolute value,UAV)表编码、重 要性图谱(significancemap,SM)编码、表编码(table encodeing,TE)、唯 一值坐标(unique value coordinate,UVC)编码、和均值编码(mean encoding, ME)。用于经编码数据的元数据指示用于数据的编码格式的类型。在一个实 施例中,可以为特定类型的数据选择特定编码格式,特定类型的数据诸如核 (kernel)数据或特征数据。在一个实施例中,在编码之前对数据执行统计分析以使得能够为每个数据块选择适当的编码器。编码可以是基于零的编码、接 近零的编码、或基于其他值(一、二等)。
在一个实施例中,在SM编码期间生成的数据可用于促进将经压缩 的数据提供给脉动张量阵列。在基于零的SM编码模式中,仅块中的非零值被 编码。在头部中指示样本块中的非零值的数量,接着是指示块内的非零值的图 谱的重要性图谱。然后按照在流内出现的顺序来对样本的非零值编码。
使用混合精度卷积神经网络的时域摊销的超采样
本文中描述的是提供替代时域消锯齿(TAA)的基于机器学习的时 域摊销的超采样技术的实施例。使用混合低精度卷积神经网络,该混合低精度 卷积神经网络在不同阶段应用不同计算精度,以基于以相比目标输出分辨率相 对更低的分辨率渲染的源图像来启用高质量图像的高性能生成。网络模型利用 对多个缩放因子,包括分数缩放因子(诸如但不限于1.3x、1.5x、1.7x、2x或 2.2x)的支持来启用消锯齿和放大。其他缩放因子也是可能的。可生成时域稳 定的放大的输出,该时域稳定的放大的输出具有相比按目标分辨率的原生渲染 更好或等于按目标分辨率的原生渲染的图像质量。在各实施例中,提供可在各 种不同的图形处理体系结构上实现的各种版本,各种不同的图形处理体系结构 包括如上文在图28A至图34中描述的具有矩阵加速硬件的体系结构、以及缺 少专用的矩阵加速硬件的图形处理器体系结构。
图39图示利用时域消锯齿(TAA)的常规渲染器3900。栅格化和 照明阶段3910内的渲染器在对每一帧渲染以对屏幕空间3904中的不同坐标采 样期间可能使相机3902抖动(3905)。随着时间推移,可从不同帧采样不同 像素。TAA阶段3916在时域累积这些样本以产生超采样图像。扭曲操作3924 使用渲染器生成的速度/运动向量3922而被应用于先前累积的帧(历史3923), 以在累积前将先前累积的帧与当前帧3912(帧N)对齐。在向TAA阶段3916输入之前,可对当前帧执行可选的放大3914,使得当前帧能以比目标分辨率低 的分辨率被渲染。输出帧随后可被添加到历史3923,以在处理下一帧时使用。 随后能以放大的目标分辨率执行后处理操作3918。虽然应用利用TAA的放大 可改善渲染性能,但是输出图像具有比原生地以目标分辨率渲染的图像更低的 质量。一些TAA实现方式可使用试探法3915(诸如但不限于,邻域颜色箝位、 对象标识符比较、以及深度值比较)以检测当前帧与历史帧之间的失配并拒绝 历史像素。然而,这些试探法经常失败,并且产生明显量的重影、过度模糊和 /或闪烁。
图40图示根据本文中提供的实施例的利用时域摊销的超采样阶段 替代TAA阶段的渲染器4000。渲染器4000与图39的渲染器3900的区别在 于,在渲染器4000中,使用替代游戏渲染器中的TAA阶段的混合低精度卷积 神经网络4050执行时域摊销的超采样,从而实现比常规的基于TAA的技术显 著更好的图像质量,并且通过使渲染能够以更低分辨率被执行来提供性能提升。 渲染器4000能以比目标分辨率低的分辨率渲染当前帧3912。放大过滤器4014 被应用于经渲染的图像以将图像放大到目标分辨率。在一个实施例中,在当前 帧3912被提供给超采样阶段之前,放大过滤器4014由渲染器4000应用。在 一个实施例中,由神经网络模型4050在预处理操作期间执行放大过滤器。放 大过滤器4014可包括用于对从由神经网络模型4050执行的处理产生的图像的 时域稳定性的图像质量进行增强的优化。可由神经网络模型4050的输入块执 行对历史3923的扭曲操作4024。在一个实施例中,历史3923是包括来自多个 先前帧的数据的多帧历史。
混合低精度卷积神经网络经由由多个卷积层组成的神经网络模型 4050和与以高精度(例如,FP16)执行的操作混合的以低精度(诸如,INT8) 执行的其他操作来实现。精度的混合使网络能够实现快的计算速度,同时生成 高质量输出图像。低精度值不限于INT8,并且不同的低精度格式(例如,INT8、 二进制、双极二进制、三进制等)可被用于变体。神经网络4050以及与神经 网络模型相关联的操作的大部分以低精度执行以实现高推断性能。以相对较高 的精度执行计算上较小的部分以保持输出质量。除了将FP16用于较高精度操作之外,还可使用其他浮点精度,诸如,FP8、BF16或TF32。此外,神经网 络4050的大部分也处于减小的空间维度,以便通过在没有像素信息损失的情 况下将来自空间(宽度,高度)维度的输入像素混洗到深度或特征图谱通道维 度来提供快的推断性能。在生成输出图像期间,从通道往回混洗空间维度。
通过组合当前帧以及利用当前运动向量扭曲的先前的输出帧来执 行时域摊销的超采样。神经网络模型4050确定组合放大的当前帧3912和历史 3923所按照的方式。在各实施例中,应用多种不同的方式来保持输出质量。在 一个实施例中,使用1x1或3x3输出卷积执行放大的当前帧3912和历史的高 精度组合。在另一实施例中,执行放大的图像的像素预测和高精度过滤以生成 高质量的放大的图像。使用神经网络模型4050来生成被提供给核(kernel)预 测和过滤操作的输入。
在神经网络模型4050的训练期间,感知损失函数和时域损失函数 两者被优化,以增强放大和消锯齿的图像质量和时域稳定性两者。在一个实施 例中,广义训练足以在无需广泛的逐游戏、逐放大因子、或逐目标分辨率训练 的情况下实现跨各种游戏的高质量输出。
图41图示根据实施例的神经网络模型4100的实现方式。神经网络 模型4100是图40的神经网络模型4050的实现方式。在一个实施例中,神经 网络模型4100由三个部件组成:输入块4108、特征提取网络4110和输出块 4120。较低精度(例如,整数)操作被用于神经网络模型的大部分以实现快的 推断性能。神经网络模型的输出使用较高精度(例如,浮点)操作来生成,以 使得能够生成高质量输出图像。例如,特征提取网络4110中的编码器(编码器块1至编码器块N)、瓶颈块和解码器块(解码器块1至解码器块N)相比 输出块4120以相对较低的精度(例如,INT8)来执行,输出块4120以相对较 高的精度(例如,FP16)来执行。在特征提取网络4110中利用较低精度显著 地降低计算的复杂度并改善存储器带宽以实现快的推断性能。在输出块4120 中利用较高精度使得能够生成输出图像,该输出图像具有与原生地以目标分辨 率渲染的图像一样好的图像质量,或在一些情况下具有比原生地以目标分辨率 渲染的图像更好的图像质量。如上所述,除了INT8和FP16之外还可使用其他 精度或数据类型,诸如但不限于将INT4用于较低精度操作,并且将BF16或 TF32用于较高精度操作。
输入块4108接收历史数据4102、速度数据4104、当前帧4106和 用于相机的抖动偏移4107作为输入。历史数据4102包括先前生成的输出。先 前生成的输出至少包括紧接的前一帧(帧N-1),其使用速度数据4104扭曲以 将该帧与当前帧4106对齐以进行时域累积。在各实施例中,除了该前一帧, 历史数据4102还可包括先前生成的输出的一个或多个附加的帧(例如,帧N-2 等),它们也可作为对特征提取网络4110的输入被提供。抖动偏移4107是被应用以使场景抖动的相机偏移,其中,不同的抖动值被用于连续的帧。在一个 实施例中,抖动偏移4107是子像素偏移。输出块生成较低精度张量和较高精 度张量两者。较低精度张量被提供给特征提取网络4110。较高精度张量被提供 给输出块4120。在图42中示出关于输入块4108的进一步的细节。
特征提取网络4110建立在U形网络体系结构(诸如例如,U-net(U- 网络)体系结构)之上。特征提取网络4110与常规的U-net体系结构区别在于, 特征提取网络4110在编码器4112和解码器4116中包括非对称结构。特征提 取网络4110的编码器4112包括一系列编码器块,这一系列编码器块对输入张 量的空间维度下采样,同时增加通道(深度或特征图谱)的数量,直到在网络 中间的瓶颈块处产生潜伏表示(latent representation)4114。潜伏表示4114是 对输入数据的有意义的特征进行编码的抽象多维空间。解码器4116的解码器 块通过对空间维度上采样并减少通道的数量来逆转该过程。编码器块具有去往 对应的解码器块的跳过连接,这使得高频细节能够在编码器4112与解码器 4116之间被中继。来自编码器块1的输出被提供给解码器块2,以结合来自解 码器块3的输出被处理。来自编码器块2的输出被提供给解码器块3,以结合 来自网络中的先前的解码器块的输出被处理。用于编码器块N的输入被提供给 解码器块N。解码器块1(最终的解码器块)接收来自输入块4108和解码器块 2的输入。取决于用于输出块4120的实现方式,解码器4116以较高精度格式 或较低精度格式将数据从解码器块1提供给输出块4120。在图43A和图43B 中示出关于输出块的进一步的细节。
图42图示根据实施例的针对神经网络模型4100的输入块4108的 进一步的细节。输入块4108接收输入,该输入包括历史数据4102、速度数据 4104、当前帧4106和抖动偏移4107。输入块4108包括扭曲单元4202,用于 使用速度数据4104内的运动向量使历史数据4102内的先前输出扭曲。输入块 4108还包括放大单元4203,用于放大当前帧4106。在一个实施例中,由放大 单元4203应用的放大过滤器是基于抖动偏移4107来调节放大的自适应过滤器。 空间到通道/深度混洗单元4204将来自空间维度(宽度,高度)的像素混洗到 通道(例如,特征图谱)或深度维度,这经由在特征提取期间的数值精度和空 间维度的减少而促进高性能推断。例如,对于在空间维度中具有(通道,高度, 宽度)数据像素的输入图像,像素数据可被混洗到 
Figure BDA0003922424690001151
这减少了执行特征提取所按照的空间维度,这 改善了特征提取网络4110的性能。输入块4108生成较低精度(例如,INT8) 张量和较高精度(例如,FP16)张量两者。较低精度张量作为对特征提取网络 4110的输入被提供,而较高精度张量被传递到输出块4120、4320A-4320B。输 入块4108还包括在数据被输出到特征提取网络之前可被应用的可选的卷积/激 活层4206。
图43A-图43B图示根据实施例的用于神经网络模型的输出块变体。 图43A图示解码器块4320和输出块的变体4320A,该输出块的变体4320A被 配置成用于执行用于输出图像的像素数据的直接生成。图43B图示解码器块 4320和输出块的变体4320B,该输出块的变体4320B被配置为核预测网络, 该核预测网络应用核像素预测和过滤来生成输出图像。在图43A-图43B中, 示出解码器块4320(解码器块1)作为示例。在编码器4112的每个编码器块包括下采样块和促进特征提取的一个或多个卷积/激活层的同时,解码器4116 的每个解码器块包括用于增加空间维度的上采样块4322和用于恢复特征的一 个或多个卷积/激活层4324、4326。解码器块1接收来自解码器块2的数据以 及来自输入块的跳过连接数据。对于输出块4320A-4320B,可采用两种不同方 式来以较高精度保持质量。一个实施例提供输出块4320A,如在图43A中所示, 其将神经网络4100配置成用于操作为直接重构网络。一个实施例提供输出块 4320B,如在图43B中所示,其将神经网络4100配置成用于操作为核预测网络。
对于图43A的输出块4320A,使用1x1或3x3输出卷积层4330来 组合来自输入块4108和特征提取网络4110的数据,以直接生成用于输出图像 的数据。输出卷积层4330接收来自最终解码器块4320的(一个或多个)卷积 /激活层4326的较高精度(例如,FP16)输出、以及来自输入块4108的较高 精度输入作为输入。由输出卷积层4330生成的数据被提供给深度/通道到空间 混洗单元4332,该深度/通道到空间混洗单元4332将数据往回混洗到空间维度 中以生成输出图像4340。输出图像4340可经由显示器被输出,或在经由显示 器输出之前进一步被后处理。
对于图43B的输出块4320B,执行核预测和过滤。由核预测层4334 预测逐像素的核值(例如,权重),而不是直接生成输出图像。由解码器块4320 输出较低精度(INT8)张量以由核预测层4334使用,该核预测层4334结合由 输入块4108提供的较高精度张量来使用较低精度张量。深度/通道到空间混洗 单元4332将帧数据往回混洗到空间维度中以生成中间输出图像。随后由过滤/ 混合层4346使用由核预测层4334生成的逐像素的核值并与使用由核预测层 4334生成的混合权重的先前输出混合来过滤该中间输出图像。经过滤和混合的图像随后被提供为输出图像4340。
图44图示用于执行时域摊销的超采样的方法4400。方法4400包括: 在本文中描述的神经网络模型(例如,神经网络模型4050)的输入块处接收历 史数据、速度数据和当前帧数据(4402)。历史数据包括一个或多个先前生成 的帧。速度数据包括渲染器生成运动向量,该渲染器生成运动向量被用于将一 个或多个先前生成的帧与当前帧的像素数据对齐。当前帧数据包括由图形处理 器的渲染管线的栅格化和照明阶段输出的3D图形程序的帧,该3D图形程序 诸如3D游戏应用。在一个实施例中,当前帧是已由放大过滤器从初始渲染分辨率放大到目标分辨率的放大的帧。在一个实施例中,当前帧在预处理期间被 放大到目标分辨率。输入块以多个精度提供输出,其中,第一输出集合以高精 度被提供给输出块,并且第二输出集合以相对较低的精度被提供给特征提取网 络。在一个实施例中,第一输出集合被提供为浮点数据(例如,FP16、BF16), 而第二输出集合被提供为整数数据(例如,INT4、INT8)。
神经网络模型随后可在输入块处预处理历史数据、速度数据和当前 帧数据,并且将经预处理的数据提供给特征提取网络(4404)。被提供给特征 提取网络的经预处理的数据包括对齐的历史数据和当前帧数据。使用速度数据 来使历史数据扭曲以生成扭曲的历史数据。随后使扭曲的历史数据与当前帧数 据对齐以生成对齐的历史数据。对齐的历史数据提供附加的样本数据,该附加 的样本数据可被用于经由时域累积生成经超采样的消锯齿输出图像。在一个实 施例中,预处理包括:将当前帧数据从由栅格化和照明阶段输出的分辨率放大 到目标分辨率。
神经网络模型在特征提取网络处经由一个或多个编码器阶段和一 个或多个解码器阶段处理经预处理的数据(4406)。编码器阶段减小输入数据 的空间分辨率,并且提取输入数据内最突出的特征。空间分辨率随后经由解码 器阶段被扩展以生成张量数据,该张量数据被用于鉴于对齐的历史来处理当前 的放大的帧,以生成高质量的放大的帧,该高质量的放大的帧具有至少等于原 生地以目标分辨率渲染的图像的图像质量。被提取的特征被用于在时域累积期 间确定当前帧与先前帧之间的优化的组合。
神经网络模型随后可使用直接重构或核预测、经由神经网络模型的 输出块、经由时域累积来生成输出帧(4408)。输出帧是具有比渲染管线的渲 染分辨率更高的分辨率的消锯齿的图像,其中附加生成的像素用于使图像质量 增强到超出原始放大的图像的图像质量。在一个实施例中,神经网络模型被配 置为直接重构网络,该直接重构网络经由一个或多个卷积层生成用于显示的高 质量输出图像。当被配置为直接重构网络时,特征提取网络提供较高精度张量 (例如,FP16、BF16)作为对输出块的输入。输出块结合来自输入块的较高 精度输出来使用来自特征提取网络的较高精度输出来生成输出图像。在一个实 施例中,神经网络模型被配置为核预测网络,该核预测网络生成被应用于高精 度过滤器的逐像素的核值。当被配置为核预测网络时,特征提取网络将较低精 度张量(例如,INT4、INT8)提供给输出块。输出块结合来自输入块的较高 精度输出来使用来自特征提取网络的较低精度输出,以预测逐像素的核/混合权 重,这些逐像素的核/混合权重被用于过滤被放大的输入并将经过滤的输入与先 前的输出混合。
图45图示针对本文中描述的多个渲染技术的示例性渲染性能比较。 针对例如按照1080p分辨率的低质量渲染4505的渲染时间显著地低于针对例 如按照4K分辨率的高质量渲染4501的渲染时间。传统的放大4504(TAA上 采样、时域超分辨率、保真度FX超分辨率)以低分辨率渲染帧,并且低分辨 率图像被上采样到目标显示分辨率,以实现性能提升,并潜在地实现相对于低 质量渲染4505的图像质量改善。
使用混合精度卷积神经网络的时域摊销的超采样的一个实现方式 是由
Figure BDA0003922424690001181
公司提供的Xe SS。Xe SS可经由使用英特尔Xe矩阵扩展(Xe Matrix Extension,XMX)在包括矩阵加速器(例如,张量加速器2723)的硬件上执 行。经由Xe SS+XMX 4502的渲染可产生图像,该图像具有比低质量渲染4505 或传统放大4504显著更高的质量,并且具有比按照原生4K分辨率的高质量渲 染4501显著更低的渲染时间。经由Xe SS+DP4a 4503的渲染用点积指令(DP4a) 替代XMX,这可由来自各种卖方的各种图形处理器体系结构执行,并且引起 高质量图像和仍显著地低于按原生4K分辨率的高质量渲染4501的渲染时间。 在一个实施例中,经由图43A的输出块4320A、使用直接重构来执行Xe SS+XMX 4502,同时经由图43B的输出块4320B、使用核预测和过滤来执行 Xe SS+DP4a 4503。
附加的示例性计算设备
图46是根据实施例的包括图形处理器4604的计算设备4600的框 图。计算设备4600的多个版本可以是通信设备或可被包括在通信设备内,该 通信设备诸如机顶盒(例如,基于互联网的有线电视机顶盒等)、基于全球定 位系统(global positioning system,GPS)的设备等。计算设备4600还可以是 移动计算设备或可被包括在移动计算设备内,该移动计算设备诸如,蜂窝电话、 智能电话、个人数字助理(personal digital assistant,PDA)、平板计算机、膝 上型电脑、电子阅读器、智能电视、电视平台、可穿戴设备(例如,眼镜、手 表、项链、智能卡、首饰、服饰等)、媒体播放器等。例如,在一个实施例中, 计算设备5000包括采用集成电路(integrated circuit,“IC”)(诸如,片上系统 (“SoC”或“SOC”))的移动计算设备,该集成电路将计算设备4600的各种硬 件和/或软件部件集成在单个芯片上。计算设备4600可以是包括如图27中的数 据处理系统2700中图示的部件的计算设备。
计算设备4600包括图形处理器4604。图形处理器4604表示本文中 描述的任何图形处理器。在一个实施例中,图形处理器4604包括缓存4614, 该缓存4614可以是单个缓存,或可被划分为缓存存储器的多个片段,该缓存 4614包括但不限于任何数量的L1缓存、L2缓存、L3缓存或L4缓存、渲染缓 存、深度缓存、采样器缓存、和/或着色器单元缓存。在一个实施例中,缓存 4614可以是与应用处理器4606共享的最后一级缓存。
在一个实施例中,图形处理器4604包括图形微控制器,该图形微 控制器实现用于图形处理器的控制和调度逻辑。控制和调度逻辑可以是由图形 微控制器4615执行的固件。固件可以在引导时由图形驱动器逻辑4622加载。 固件也可以被编程到电子可擦除可编程只读存储器,或从图形微控制器4615 内的闪速存储器设备加载。固件可以启用GPU OS4616,该GPU OS 4616包 括设备管理逻辑4617和驱动器逻辑4618、以及调度器4619。GPU OS4616还 可包括图形存储器管理器4620,该图形存储器管理器4620可补充或替代图形 驱动器逻辑4622内的图形存储器管理器4621。
图形处理器4604还包括GPGPU引擎4644,该GPGPU引擎4644 包括如本文所述的一个或多个图形引擎、图形处理器核心、以及其他图形执行 资源。此类图形执行资源能以包括但不限于以下各项的形式来呈现:执行单元、 着色器引擎、片段处理器、顶点处理器、流式多处理器、图形处理器集群、或 适于处理图形资源或图像资源或在异构处理器中执行通用计算操作的计算资 源的任何集合。GPGPU引擎4644的处理资源可被包括在连接到衬底的硬件逻 辑的多个片内,如图24B-图24D中所图示。GPGPU引擎4644可包括GPU片 4645,这些GPU片4645包括图形处理和执行资源、缓存、采样器等。GPU片 4645还可包括本地易失性存储器或可与一个或多个存储器片耦合,这一个或多 个存储器片诸如图16B-图16C中的存储器片1626A-1626D。
GPGPU引擎4644还可包括一个或多个特殊片4646,这一个或多个 特殊片4646包括例如非易失性存储器片4656、网络处理器片4657、和/或通用 计算片4658。GPGPU引擎4644还包括矩阵乘法加速器4660。通用计算片4658 还可包括用于加速矩阵乘法操作的逻辑。非易失性存储器片4656可包括非易 失性存储器单元和控制器逻辑。非易失性存储器片4656的控制器逻辑可由设 备管理逻辑4617或驱动器逻辑4618中的一个来管理。网络处理器片4657可 包括网络处理资源,该网络处理资源耦合至计算设备4600的输入/输出(I/O) 源4610内的物理接口。网络处理器片4657可由设备管理逻辑4617或驱动器 逻辑4618中的一个或多个来管理。
在一个实施例中,矩阵乘法加速器4660是模块化可缩放稀疏矩阵 乘法加速器。矩阵乘法加速器4660可包括多个处理路径,其中每个处理路径 包括多个管线阶段。每个处理路径可执行单独的指令。在各实施例中,矩阵乘 法加速器4660可具有本文中描述的矩阵乘法加速器中的任何一个或多个的体 系结构特征。例如,在一个实施例中,矩阵乘法加速器4660是脉动阵列3000, 该脉动阵列3000能配置成用于利用四的倍数个逻辑阶段(例如,四个、八个、 十二个、十六个等)进行操作。在一个实施例中,矩阵乘法加速器4660包括 具有四阶段管线的两路径矩阵乘法加速器3100或具有两阶段管线的四路径矩 阵乘法加速器3200的一个或多个实例。在一个实施例中,矩阵乘法加速器4660 包括被配置为可缩放稀疏矩阵乘法加速器的处理元件矩阵乘法加速器4660可 被用于加速经由XMX扩展或促进矩阵计算操作的加速的另一计算库而被执行 的矩阵操作。例如,矩阵乘法加速器4660可执行用于本文中描述的神经网络 模型4050、4100的训练或推断的张量计算。
如所图示,在一个实施例中,除了图形处理器4604之外,计算设 备4600可进一步包括任何数量和类型的硬件部件和/或软件部件,包括但不限 于应用处理器4606、存储器4608、以及输入/输出(I/O)源4610。应用处理 器4606可与硬件图形管线交互以共享图形管线功能。经处理的数据被存储在 硬件图形管线中的缓冲器中,并且状态信息被存储在存储器4608中。所得的 数据可以被传递至显示控制器以用于经由显示设备来输出。显示设备可具有各 种类型,诸如,阴极射线管(Cathode Ray Tube,CRT)、薄膜晶体管(Thin FilmTransistor,TFT)、液晶显示器(Liquid Crystal Display,LCD)、有机发光二 极管(Organic Light Emitting Diode,OLED)阵列等,并且显示设备可被配置 成用于经由图形用户界面来向用户显示信息。
应用处理器4606可包括一个或多个处理器,诸如,图1的(一个 或多个)处理器102,并且可以是至少部分地用于执行计算设备4600的操作系 统(OS)4602的中央处理单元(CPU)。OS 4602可充当计算设备4600的硬 件和/或物理资源与一个或多个用户之间的接口。OS 4602可包括用于计算设备 4600中的各种硬件设备的驱动器逻辑。驱动器逻辑可包括图形驱动器逻辑4622, 该图形驱动器逻辑4622可包括图23的用户模式图形驱动器2326和/或内核模 式图形驱动器2329。图形驱动器逻辑可以包括图形存储器管理器4621,用于管理用于图形处理器4604的虚拟存储器地址空间。图形存储器管理器4621可 促进可由应用处理器4606和图形处理器4604访问的统一虚拟地址空间。
构想了在一些实施例中,图形处理器4604可作为应用处理器4606 的部分(诸如,作为物理CPU封装的部分)而存在,在这种情况下,存储器 4608的至少部分可由应用处理器4606和图形处理器4604共享,但是存储器 4608的至少部分对于图形处理器4604可以是独占的,或者图形处理器4604 可具有存储器的单独存储。存储器4608可包括缓冲器的预分配区域(例如, 帧缓冲器);然而,本领域普通技术人员应当理解,实施例不限于此,并且可 使用可由较低的图形管线访问的任何存储器。存储器4608可包括包含利用图 形处理器4604以渲染桌面或3D图形场景的应用的各种形式的随机访问存储器 (random-access memory,RAM)(例如,SDRAM、SRAM等)。存储器控 制器中枢(诸如,图14的存储器控制器1416)可访问存储器4608中的数据, 并将其转发到图形处理器4604以用于图形管线处理。存储器4608可变得对计 算设备4600内的其他部件可用。例如,在软件程序或应用的实现方式中,从 计算设备4600的各种I/O源4610接收的任何数据(例如,输入图形数据)在 由一个或多个处理器(例如,应用处理器4606)操作之前可临时被排队到存储 器4608中。类似地,软件程序确定应当从计算设备4600通过计算系统接口中 的一个计算系统接口被发送到外部实体或者应当被存储到内部存储元件内的 数据在被传送或被存储之前通常临时被排队在存储器4608中。
I/O源可包括诸如触摸屏、触摸面板、触摸板、虚拟或常规键盘、 虚拟或常规鼠标、端口、连接器、网络设备等之类的设备,并且可经由如图14 中引用的平台控制器中枢1430进行附接。此外,I/O源4610可包括被实现用 于将数据传递到计算设备4600和/或从计算设备4600传递数据的一个或多个 I/O设备(例如,网络适配器);或者被实现用于计算设备4600内的大规模非 易失性存储装置的一个或多个I/O设备(例如,SSD/HDD)。包括字母数字和 其他键的用户输入设备可用于将信息和命令选择传递到图形处理器4604。另一 类型的用户输入设备是用于将方向信息和命令选择传递到GPU并用于控制显 示设备上的光标移动的光标控件,诸如,鼠标、轨迹球、触摸屏、触摸板、或 光标方向键。可采用计算设备4600的相机和话筒阵列来观察姿势、记录音频 和视频,并且接收和传送可视命令和音频命令。
I/O源4610可包括一个或多个网络接口。网络接口可包括相关联的 网络处理逻辑和/或与网络处理器片4657耦合。一个或多个网络接口可提供对 以下各项的访问:LAN、广域网(wide area network,WAN)、城域网(metropolitan area network,MAN)、个域网(personal area network,PAN)、蓝牙、云网 络、蜂窝或移动网络(例如,第三代(3rdGeneration,3G)、第四代(4th Generation, 4G)、第五代(5th Generation,5G)等)、内联网、互联网等。(一个或多 个)网络接口可包括例如具有一个或多个天线的无线网络接口。(一个或多个) 网络接口还可包括例如用于经由网络电缆与远程设备通信的有线网络接口,网 络电缆可以是例如以太网电缆、同轴电缆、光纤电缆、串行电缆或并行电缆。
(一个或多个)网络接口可例如通过遵照IEEE 802.11标准来提供 对LAN的访问,并且/或者无线网络接口可例如通过遵照蓝牙标准来提供对个 域网的访问。还可支持其他无线网络接口和/或协议,包括先前版本和后续版本 的标准。附加于或替代于经由无线LAN标准的通信,(一个或多个)网络接 口可使用例如以下协议来提供无线通信:时分多址(Time Division,Multiple Access,TDMA)协议、全球移动通信系统(Global Systems forMobile Communications,GSM)协议、码分多址(Code Division,Multiple Access,CDMA)协议和/或任何其他类型的无线通信协议。
用于时域摊销的超采样的输入滤波和采样器加速
通过组合当前帧以及利用当前运动向量扭曲的先前的输出帧来执 行时域摊销的超采样。如上所述,时域消锯齿(Temporal Anti-Aliasing,TAA) 是在其中渲染器逐帧地抖动相机以对屏幕空间中的不同坐标采样的消锯齿技 术。TAA阶段在时域上累积这些样本以产生超采样图像。时域摊销的超采样 阶段可以如图40所图示,其中时域摊销的超采样使用混合的、低精度卷积神 经网络执行。
时域抖动序列(在本文中也被称为抖动模式)描述了相机如何从帧 到帧偏移。在到图像处理管线的输入中,将存在某些锯齿状边缘,这些锯齿状 边缘是因为在栅格化期间每个像素的单次采样而生成的。利用栅格化生成平滑 图像通常会需要渲染N次,具有相机偏移并且对于超采样看到越来越多的图像。 然而,该操作是昂贵的,并且在应用中可能是不切实际的。
在一些实施例中,装置、系统或过程为时域摊销的超采样提供了输 入滤波和采样器加速。通过应用输入滤波和采样器加速,系统能够应用反映抖 动模式的权重,并且因此辅助改善图像质量。
在超采样操作中,在生成网络的输入时存在放大(upscaling)和 扭曲。在此类操作中,由于超采样中实现的有限采样,栅格化和照明的输出 是锯齿状的栅格化图像。由应用于超采样的抖动所产生的相机偏移量相对较小, 远远小于像素的大小。关于被应用的抖动的信息(时域抖动序列)可被应用于 改善图像处理,但该信息通常在输入中丢失。因此,网络仅看到作为输出生成 的锯齿状栅格化图像。在常规操作中,网络不知晓抖动和采样信息。
在一些实施例中,抖动信息通过输入滤波被应用于输入数据。如 果知道如何基于样本位置来对图像的样本加权,那么图像输出的质量可能会被 改善。采样/抖动信息的至少一部分可以通过应用输入滤波器而在放大过程中 被返回。基于所接收的输入数据,图像要从原始输入分辨率被放大到更高的目 标分辨率。在特定的示例中,这可能包括从1280x720的输入分辨率放大到 2560x 1440的目标分辨率。然而,实施例并不限于任何特定的分辨率值或放 大因子。在放大期间,该过程不一定限于使图像变大。相反,应用像素滤波器并相应地对经放大的输入数据进行加权也是可能的,该像素滤波器知晓被栅格 化的样本的实际位置。以此方式,放大可操作用于将采样信息的至少一部分添 加回图像中。因此,系统是以将对抖动位置的认知建立在到网络的输入中的 方式对输入数据进行放大。
在一些实施例中,基于抖动信息生成输入滤波器(在本文中也称为 像素滤波器),该输入滤波器对网络的输入进行编码,从而使输入依赖于真实 的相机抖动和得到的样本所处的位置。因此,输入滤波器的并入可允许处理时 的加速,并在网络中提供更高质量的超采样。
在输入滤波器中使用的滤波技术的类型以及生成滤波器的方式可 能会取决于实现方式和可用的硬件支持而变化。例如,在一些实现方式中,输 入滤波器的生成可能包括,但不限于,实现高斯滤波器以在处理管线中进行放 大。高斯滤波器是高质量的像素滤波器,该滤波器可以有效地实现成像。然而, 高斯滤波器虽然在操作上是“软”滤波器,即在数据如何被滤波上不提供清晰 界限的滤波器。在一些实施例中,可以实现其他滤波技术以提供进一步的优化。 例如,可以基于测试和实验在输入滤波器中进行优化,以标识对样本的位置更 清晰和更敏感的滤波,以便在超采样中利用。
在一些实施例中,可以在装置或系统中提供关于在处理中使用运动 向量对历史进行扭曲的附加优化。使用运动向量对先前的图像进行扭曲产生与 放大类似的重采样问题,而所使用的图像滤波器可能是非常不同的。在结合运 动向量和要扭曲的图像时,可以使用像素滤波器针对每个样本评估新的权重, 以获得经扭曲的图像。在此类操作中,纹理采样硬件可以以与上采样相同的方 式被利用。可以应用测试来标识和选择改善的滤波器进行扭曲,以辅助加速操 作。
图47是根据一些实施例的用于时域摊销的超采样的输入滤波和采 样器加速的图示。图47图示图形系统内具有时域消锯齿(temporal anti-aliasing, TAA)的渲染器4700(如关于图40进一步所图示和所描述),包括在生成输 入数据4720时应用时域抖动序列。处理管线4730中的栅格化和照明阶段4735 内的渲染器在对每一帧渲染以对屏幕空间4710中的不同坐标采样期间可能使 相机4705抖动4715。使用混合的、低精度的卷积神经网络(convolutional neural network,NN)模型4750执行时域摊销的超采样。扭曲操作4745使用渲染器生 成的速度/运动向量而被应用于先前累积的帧,以在累积前将先前累积的帧与当 前帧3912对齐。放大滤波器4740被应用于经渲染的图像以将图像放大到目标 分辨率。随后能以放大的目标分辨率执行后处理操作4755。
在一些实施例中,表示应用于相机4705的抖动4715的时域抖动序 列数据4760被应用于生成像素滤波器4765。像素滤波器4765为输入数据提供 权重以反映系统中图像的抖动和采样。输入数据的权重可以如图48A-图48C 中所图示的那样被应用。在一些实施例中,所生成的像素滤波器4765可以在 所接收的数据的上采样4740中实现。在一些实施例中,像素滤波器4765的生 成可以包括如图50中所图示的过程。
在一些实施例中,像素滤波器4765基于以时域抖动序列数据4760 形式的抖动信息而被生成,从而对网络的输入进行编码,使得输入依赖于真实 的相机抖动和所得的样本所处的位置。在一些实施例中,实现方式可包括但不 限于实现高斯滤波器以在处理管线中进行放大。
需要若干样本的复杂滤波器是昂贵的,并且因此在某些实现方式中 (诸如在游戏操作中),该复杂滤波器对于输入滤波可能是困难的或不实际的。 在一些实施例中,装置、系统或过程包括估计提供更有效的滤波所需的滤波器。 在3D计算机图形中,各向异性滤波描述了用于增强计算机图形的表面上的纹 理的图像质量的过程或装置,计算机图形相对于相机处于倾斜视角,其中纹理 的投影看起来是非正交的。例如,图像是具有与其相关联的重建滤波器的点样 本,并且高质量的重建滤波器具有圆形的足迹。然而,屏幕空间圆形足迹的投 影是椭圆。纹理滤波算法应该返回经投影的像素足迹和由足迹所覆盖的纹理元素。高度偏心的椭圆可以利用多个较低偏心率的椭圆来近似,如由GPU硬件所 支持。生成滤波器时的近似可以大大降低滤波器的成本和难度。
在特定的实现方式中,系统或操作可以包括通过使用图形系统中 提供的纹理采样器硬件来加速原本需要复杂滤波器的补偿,以便提供滤波。纹 理采样器硬件作为滤波器可能具有限制,但该滤波器硬件通常存在于图形基础 设施中,并且能够比许多其他类型的滤波器更快地操作,从而改善系统或操作 的整体性能。在一些实施例中,滤波包括应用具有多个深度的双线性/三线性 近似器。
关于应用纹理采样器硬件来加速滤波,可以利用硬件纹理采样器的 效率来加速滤波器的近似,使用直接的像素查找来评估该滤波器是很昂贵的。 采样器可以有效地缓存和评估来自纹理的双线性或各向异性的查找,这可以用 作更复杂的滤波器的“构建块”。
在一些实施例中,像素滤波器的生成包括对提供更有效的滤波所需 的滤波器进行近似。在一些实施例中,像素滤波器4765可以包括加速原本需 要复杂滤波器的补偿,并且可以通过使用在图形系统中提供的纹理采样器硬件 4770来实现,以便提供滤波。纹理采样器硬件作为滤波器可能具有限制,但该 滤波器硬件通常存在于图形基础设施中,并且能够比许多其他类型的滤波器更 快地操作,从而改善系统或操作的整体性能。在一些实施例中,滤波包括应用 具有多个深度的双线性/三线性近似器。
图48A-图48C是图示根据实施例的包括抖动的像素采样的示图。如 果相机抖动是已知的,则采样的位置对增强图像质量是重要的。在一些实施例 中,相机抖动被应用于像素滤波器的生成,诸如图47中图示的所生成的像素 滤波器4765。更清晰的图像对因抖动而变化的样本的位置更敏感。这可以如图 48A和图48B中图示的那样。这些简化的图提供了两倍放大的可能示例,其中 一个像素被放大为四个像素。
例如,图48A图示通过放大被采样以生成所图示的四个像素集合 4810的像素4805。如果采样位置4815处于像素的中心(诸如图48A所图示), 那么对采样的复制会是正确的(如图48A所示),被上采样的像素中的每一者 具有相等的权重4820。每个像素的权重由图48A-图48C中每个像素的阴影的 相对暗度来表示,其中更暗的阴影指示更大的权重。例如,最暗的阴影(黑色) 可以表示像素的1.0权重,并且最亮的阴影(白色)可以表示像素的0.0权重, 其中总权重等于1.0。
然而,如果所应用的抖动导致样本位置从样本像素的中心偏移,那 么在滤波中证明的权重可以被修改,使得每个像素的权重至少部分地表示对样 本的定位。因此,上采样像素的权重可以是不平等的,其中这种相对权重被应 用于改善输入数据的质量。
例如,图48B图示通过放大被采样以生成所图示的四个像素的集合 4825的像素4830。如果采样位置4835由于抖动而被偏移(诸如如图48B所图 示),那么不相等的权重4840将被应用于经上采样的像素4830。如所示,权 重将基于经上采样的像素被定位成与采样位置有多近而变化。
应注意的是,图48A和图48B是简化的图示,并且在不考虑其他像 素的情况下提供权重。在实际操作中,在生成结果时可以考虑其他相邻的像素 来提供权重。例如,图48C图示出利用相邻像素的像素滤波4850,其中相邻像 素可以在确定样本权重应用于经上采样的像素中的每一者时被考虑。在所图示 的示例中,在双线性插值中考虑了四个最近的邻居像素。然而,实施例仅限于 该示例,并且其他像素滤波器也可用于建立权重。更高阶的上采样滤波器也可 以从使用硬件加速的纹理采样中受益。
在一些实施例中,图48A-图48C中图示的权重描述了像素滤波器, 该像素滤波器对网络的输入进行编码,使得输入至少部分地依赖于真实的相机 抖动和所得的样本所处的位置。此类像素滤波器的并入可应用于支持处理时的 加速和在网络中提供更高质量的超采样。
图49是根据一些实施例的利用至少部分地基于图像的抖动和采样 而生成的图像滤波器进行超采样的过程的图示。如所图示,过程4900包括执 行时域消锯齿,其中每个帧被抖动,以便对不同的坐标进行采样(步骤4905)。 在一些实施例中,抖动是根据表示相机如何随时间移位的时域抖动序列来应用 的。
在一些实施例中,相关联的时域抖动序列数据在用于滤波器生成的 设备或系统处被接收(步骤4907)。在一些实施例中,滤波器生成包括至少部 分基于时域抖动序列数据的输入滤波器的生成,以便对表示抖动序列的权重和 所得的采样位置进行编码,所得的采样位置在生成输入数据时被应用于对帧的 采样。如所图示,利用至少部分基于由所应用的抖动引起的样本位置的权重来 生成输入滤波器。在生成输入滤波器时利用的权重可以包括但不限于图48A- 图48C所示的权重。输入滤波器的生成可以包括但不限于如图50所图示的过 程。
在一些实施例中,所生成的输入滤波器可以在处理管线中实现(步 骤4915),诸如在处理管线中的上采样内(例如在图47中图示的上采样4740 内)。然而,输入滤波器可以取决于特定的实现方式在处理管线内的其他位置 中实现。该过程4900进一步包括接收输入数据以用于超采样处理(步骤4920)。 输入数据可以是具有较低分辨率的数据,该较低分辨率要被转换为目标分辨率。 所接收的输入数据被上采样以生成相关目标分辨率的经上采样的数据(步骤 4925)。在一些实施例中,输入滤波器被应用于经上采样的数据,以对关于相 机抖动和采样位置的数据进行采样。以此方式,经处理的数据将反映在生成输 入数据时利用的采样。
然后该过程可以利用经滤波的数据进行超采样处理(步骤4935)。
图50是根据一些实施例的用于至少部分地基于图像的抖动和采样 来生成图像滤波器的过程的图示。过程5000包括在生成输入数据集合时应用 的时域抖动序列。如关于图47的进一步描述,时域抖动序列表示相机如何随 时间移位以改变在一系列帧中的每一个帧中收集到的样本坐标。
在一些实施例中,基于输入数据中每个样本的位置确定像素的权重 (步骤5010)。所确定的权重例如可由图48A-图48C中所图示的权重表示。 权重出于用于超采样处理的滤波器生成的目的而被确定。
输入滤波器可以包括但不限于高斯滤波器或相关滤波器的实现方 式。在一些实施例中,为了减少输入滤波器的生成和操作中需要的处理,可 以生成滤波的近似(步骤5015)。例如,该近似值可以包括椭圆纹理滤波的 近似。
在一些实施例中,该过程包括在处理管线中实现输入滤波器(步骤 5020)。例如,滤波可以结合输入数据从输入分辨率到目标分辨率的上采样 来实现。在一些实施例中,滤波可包括通过使用图形系统中提供的纹理采样器 硬件来加速原本需要复杂的滤波器的补偿。在一些实施例中,滤波包括应用具 有多个深度的双线性/三线性近似器。
以下示例关于某些实施例:
在示例1中,一种图形处理器包括:处理资源集合,该处理资源集 合被配置成用于经由卷积神经网络执行超采样操作,该处理资源集合包括被配 置成用于进行以下操作的电路:接收输入数据以用于超采样处理,该输入数据 包括根据抖动模式采样的数据,该抖动模式改变数据样本的位置;将图像滤波 器应用于所接收的输入数据,其中该图像滤波器包括至少部分基于抖动模式的 像素权重;处理输入数据以生成经上采样的数据;以及对经上采样数据应用超 采样处理。
在示例2中,电路进一步被配置成用于接收第一分辨率的输入数据 并且用于将所接收的输入数据上采样到第二分辨率,第二分辨率高于第一分辨 率。
在示例3中,图像滤波器是利用图像处理所需的滤波的近似而生成 的滤波器。
在示例4中,图形处理器进一步包括纹理采样器硬件,其中,图像 滤波器包括纹理采样器硬件的应用。
在示例5中,输入滤波的应用发生在对输入数据的上采样中。
在示例6中,像素权重进一步基于相邻像素的采样。
在示例7中,图像滤波器为高斯滤波器。
在示例8中,一种方法,包括:接收输入数据以供图形处理器进行 超采样处理,该输入数据包括根据改变数据样本的位置的抖动模式采样的数据; 对所接收的输入数据应用图像滤波器,其中该图像滤波器包括至少部分基于抖 动模式的像素权重;处理输入数据以生成经上采样的数据;以及对经上采样的 数据应用超采样处理。
在示例9中,接收输入数据包括接收第一分辨率的输入数据;以及 生成经上采样的数据包括生成第二分辨率的经上采样的数据,第二分辨率大于 第一分辨率。
在示例10中,图像滤波器是利用图像处理所需的滤波的近似而生 成的滤波器。
在示例11中,图像滤波器包括图形处理器的纹理采样器硬件的应 用。
在示例12中,应用输入滤波包括在输入数据的上采样中应用滤波。
在示例13中,像素权重进一步基于相邻像素的采样。
在示例14中,图像滤波器为高斯滤波器。
在示例15中,一种或多种非暂态计算机可读存储介质,具有存储 于其上的可执行计算机程序指令,该可执行计算机程序指令当由一个或多个处 理器执行时,使得该一个或多个处理器执行包括以下各项的操作:接收输入数 据以供图形处理器进行超采样处理,该输入数据包括根据改变数据样本的位置 的抖动模式采样的数据;将图像滤波器应用于所接收的输入数据,其中该图像 滤波器包括至少部分基于抖动模式的像素权重;处理输入数据以生成经上采样 的数据;以及对经上采样的数据应用超采样处理。
在示例16中,接收输入数据包括接收第一分辨率的输入数据;以 及生成经上采样的数据包括生成第二分辨率的经上采样的数据,第二分辨率大 于第一分辨率。
在示例17中,图像滤波器是利用图像处理所需的滤波的近似而生 成的滤波器。
在示例18中,图像滤波器包括图形处理器的纹理采样器硬件的应 用。
在示例19中,应用输入滤波包括在输入数据的上采样中应用滤波。
在示例20中,像素权重进一步基于相邻像素的采样。
在示例21中,一种设备,包括:用于接收输入数据以供图形处理 器进行超采样处理的装置,该输入数据包括根据改变数据样本的位置的抖动模 式采样的数据;用于对所接收的输入数据应用图像滤波器的装置,其中该图像 滤波器包括至少部分基于抖动模式的像素权重;用于处理输入数据以生成经上 采样的数据的装置;以及用于对经上采样的数据应用超采样处理的装置。
在示例22中,用于接收输入数据的装置包括用于接收第一分辨率 的输入数据的装置;以及用于生成经上采样的数据的装置包括用于生成第二分 辨率的经上采样的数据的装置,第二分辨率大于第一分辨率。
在示例23中,图像滤波器是利用图像处理所需的滤波的近似而生 成的滤波器。
在示例24中,图像滤波器包括图形处理器的纹理采样器硬件的应 用。
在示例25中,用于应用输入滤波的装置包括用于在输入数据的上 采样中应用滤波的装置。
在示例26中,像素权重进一步基于相邻像素的采样。
应当明白,对于某些实现方式,比在上文中所描述的示例更少或更 多地配备的系统可以是优选的。因此,取决于多种因素,本文中描述的计算设 备的配置可因实现方式而异,这些因素诸如,价格约束、性能要求、技术改进、 或其他情况。示例包括(但不限于)移动设备、个人数字助理、移动计算设备、 智能电话、蜂窝电话、手机、单向寻呼机、双向寻呼机、消息收发设备、计算 机、个人计算机(personal computer,PC)、桌面型电脑、膝上型电脑、笔记 本计算机、手持式计算机、平板计算机、服务器、服务器阵列或服务器场、web 服务器、网络服务器、互联网服务器、工作站、小型计算机、大型计算机、超 级计算机、网络装置、web装置、分布式计算系统、多处理器系统、基于处理 器的系统、消费电子产品、可编程消费电子产品、电视机、数字电视、机顶盒、 无线接入点、基站、订户站、移动订户中心、无线电网络控制器、路由器、中 枢、网关、桥接器、交换机、机器、或其组合。
一个实施例提供一种图形处理器,该图形处理器包括被配置成用于 经由混合精度卷积神经网络来执行超采样消锯齿操作的处理资源的集合。处理 资源的集合包括被配置成用于在神经网络模型的输入块处接收包括先前帧数 据、当前帧数据和速度数据的数据集合的电路。先前帧数据包括一个或多个先 前生成的输出帧。当前帧数据包括渲染管线的栅格化和照明阶段的输出。速度 数据包括由渲染管线生成的运动向量。电路可以对数据集合进行预处理以生成 经预处理的数据,将第一经预处理的数据提供至神经网络模型的特征提取网络 并将第二经处理的数据提供至升级网络模型的输出块。第一经预处理的数据按 第一精度被提供,该第一精度诸如两比特、四比特或八比特整数精度。第二经 预处理的数据按第二精度被提供,该第二精度高于第一精度,诸如为16比特 浮点精度。
电路可以在特征提取网络处经由一个或多个编码器阶段以及一个 或多个解码器阶段对第一经预处理的数据进行处理,将来自特征提取网络的张 量数据提供至输出块,并且基于来自输入块的第二经预处理的数据和来自特征 提取网络的张量数据输出经由输出块生成输出帧。所生成的输出帧是经消锯齿 的帧。生成经预处理的数据包括:基于速度数据对先前帧数据进行扭曲,以生 成经扭曲的历史数据;将经扭曲的历史数据与当前帧数据对齐,以生成经对齐 的历史数据;以及将经对齐的历史数据和当前帧数据从空间纬度混洗到通道纬 度。通道纬度包括深度通道或多个特征图通道。
在一个实施例中,经由输出块生成输出帧包括经由输出块的一个或 多个卷积层来生成输出帧。在一个实施例中,经由输出块生成输出帧包括:预 测逐像素核值和混合权重的集合;经由逐像素核值来对当前帧数据进行滤波; 以及利用经滤波的当前帧数据来混合经对齐的历史数据。在一个实施例中,电 路被配置成用于:在当前帧数据被提供至神经网络模型的输出块之前,将栅格 化和照明阶段的输出从第一分辨率上采样至高于该第一分辨率的第二分辨率。 在一个实施例中,栅格化和照明阶段的输出在预处理期间被上采样。
附加实施例提供一种用于执行上文描述的图形处理器的操作的方 法。进一步的实施例提供一种数据处理器系统,其包括上文所描述的图形处理 器。
前述说明书和附图应以说明性意义而非限制性意义来看待。本领域 技术人员将理解,可对本文中描述的实施例作出各种修改和改变,而不背离如 所附权利要求所述的特征的更宽泛的精神和范围。

Claims (24)

1.一种图形处理器,包括:
处理资源集合,所述处理资源集合被配置成用于经由卷积神经网络来执行超采样操作,所述处理资源集合包括被配置成用于进行以下操作的电路:
接收输入数据以用于超采样处理,所述输入数据包括根据抖动模式采样的数据,所述抖动模式改变数据样本的位置;
将图像滤波器应用于所接收的输入数据,其中所述图像滤波器包括至少部分基于所述抖动模式的像素权重;
处理所述输入数据以生成经上采样的数据;以及
对所述经上采样的数据应用超采样处理。
2.如权利要求1所述的图形处理器,其中,所述电路进一步被配置成用于接收第一分辨率的输入数据并且用于将所述所接收的输入数据上采样到第二分辨率,所述第二分辨率高于所述第一分辨率。
3.如权利要求1所述的图形处理器,其中,所述图像滤波器是利用图像处理所需的滤波的近似而生成的滤波器。
4.如权利要求1所述的图形处理器,进一步包括:
纹理采样器硬件;
其中,所述图像滤波器包括所述纹理采样器硬件的应用。
5.如权利要求1所述的图形处理器,其中,输入滤波的应用发生在所述输入数据的上采样中。
6.如权利要求1所述的图形处理器,其中,所述像素权重进一步基于相邻像素的采样。
7.如权利要求1所述的图形处理器,其中,所述图像滤波器为高斯滤波器。
8.一种方法,包括:
接收输入数据以供图形处理器进行超采样处理,所述输入数据包括根据抖动模式采样的数据,所述抖动模式改变数据样本的位置;
将图像滤波器应用于所接收的输入数据,其中所述图像滤波器包括至少部分基于所述抖动模式的像素权重;
处理所述输入数据以生成经上采样的数据;以及
对所述经上采样的数据应用超采样处理。
9.如权利要求8所述的方法,其中:
接收所述输入数据包括接收第一分辨率的输入数据;以及
生成所述经上采样的数据包括生成第二分辨率的经上采样的数据,所述第二分辨率大于所述第一分辨率。
10.如权利要求8所述的方法,其中,所述图像滤波器是利用图像处理所需的滤波的近似而生成的滤波器。
11.如权利要求8所述的方法,其中,所述图像滤波器包括所述图形处理器的纹理采样器硬件的应用。
12.如权利要求8所述的方法,其中,应用所述输入滤波包括在所述输入数据的上采样中应用滤波。
13.如权利要求8所述的方法,其中,所述像素权重进一步基于相邻像素的采样。
14.如权利要求8所述的方法,其中,所述图像滤波器为高斯滤波器。
15.一种或多种非暂态计算机可读存储介质,具有存储于其上的可执行计算机程序指令,所述可执行计算机程序指令当由一个或多个处理器执行时,使所述一个或多个处理器执行包括以下各项的操作:
接收输入数据以供图形处理器进行超采样处理,所述输入数据包括根据抖动模式采样的数据,所述抖动模式改变数据样本的位置;
将图像滤波器应用于所接收的输入数据,其中所述图像滤波器包括至少部分基于所述抖动模式的像素权重;
处理所述输入数据以生成经上采样的数据;以及
对所述经上采样的数据应用超采样处理。
16.如权利要求15所述的一种或多种非暂态计算机可读存储介质,其中:
接收所述输入数据包括接收第一分辨率的输入数据;以及
生成所述经上采样的数据包括生成第二分辨率的经上采样的数据,所述第二分辨率大于所述第一分辨率。
17.如权利要求15所述的一种或多种非暂态计算机可读存储介质,其中,所述图像滤波器是利用图像处理所需的滤波的近似而生成的滤波器。
18.如权利要求15所述的一种或多种非暂态计算机可读存储介质,其中,所述图像滤波器包括所述图形处理器的纹理采样器硬件的应用。
19.如权利要求15所述的一种或多种非暂态计算机可读存储介质,其中,应用所述输入滤波包括在所述输入数据的上采样中应用滤波。
20.如权利要求15所述的一种或多种非暂态计算机可读存储介质,其中,所述像素权重进一步基于相邻像素的采样。
21.一种设备,包括:
用于接收输入数据以供图形处理器进行超采样处理的装置,所述输入数据包括根据抖动模式采样的数据,所述抖动模式改变数据样本的位置;
用于将图像滤波器应用于所接收的输入数据的装置,其中所述图像滤波器包括至少部分基于所述抖动模式的像素权重;
用于处理所述输入数据以生成经上采样的数据的装置;以及
用于对所述经上采样的数据应用超采样处理的装置。
22.如权利要求21所述的设备,其中,所述图像滤波器是利用图像处理所需的滤波的近似而生成的滤波器。
23.如权利要求21所述的设备,其中,所述图像滤波器包括所述图形处理器的纹理采样器硬件的应用。
24.如权利要求21所述的设备,其中,用于应用所述输入滤波的装置包括用于在所述输入数据的上采样中应用滤波的装置。
CN202211362204.0A 2021-11-05 2022-11-02 用于超采样的输入滤波和采样器加速 Pending CN116091680A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163276291P 2021-11-05 2021-11-05
US63/276,291 2021-11-05
US17/952,628 US20230143192A1 (en) 2021-11-05 2022-09-26 Input filtering and sampler acceleration for supersampling
US17/952,628 2022-09-26

Publications (1)

Publication Number Publication Date
CN116091680A true CN116091680A (zh) 2023-05-09

Family

ID=86053138

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211362204.0A Pending CN116091680A (zh) 2021-11-05 2022-11-02 用于超采样的输入滤波和采样器加速

Country Status (3)

Country Link
US (1) US20230143192A1 (zh)
CN (1) CN116091680A (zh)
DE (1) DE102022125600A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116681575A (zh) * 2023-07-27 2023-09-01 南京砺算科技有限公司 图形处理单元、图形渲染方法、存储介质、终端设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2602686B (en) * 2021-06-25 2022-12-28 Imagination Tech Ltd Efficient convolution operations

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116681575A (zh) * 2023-07-27 2023-09-01 南京砺算科技有限公司 图形处理单元、图形渲染方法、存储介质、终端设备
CN116681575B (zh) * 2023-07-27 2023-12-19 南京砺算科技有限公司 图形处理单元、图形渲染方法、存储介质、终端设备

Also Published As

Publication number Publication date
US20230143192A1 (en) 2023-05-11
DE102022125600A1 (de) 2023-05-11

Similar Documents

Publication Publication Date Title
US20230146259A1 (en) Sampling across multiple views in supersampling operation
US20230066626A1 (en) Temporally amortized supersampling using a mixed precision convolutional neural network
US20230143192A1 (en) Input filtering and sampler acceleration for supersampling
US20230146390A1 (en) Trainable visual quality metrics for measuring rendering quality in a graphics environment
EP4138028A1 (en) Sample distribution-informed denoising & rendering
CN115599289A (zh) 用于加速在图形环境中执行安全散列算法2(sha-2)工作负载的融合指令
US20240119558A1 (en) Temporally amortized supersampling using a kernel splatting network
EP4177824A1 (en) Motion vector refinement for temporally amortized supersampling
CN116091333A (zh) 利用用于历史验证的神经网络增强时域消锯齿
EP4109303A1 (en) Using sparsity metadata to reduce systolic array power consumption
CN117546200A (zh) 在图形环境中具有重要性采样的组合的降噪和升尺度网络
US20230109990A1 (en) Modular gpu architecture for clients and servers
CN115841417A (zh) 加载存储和原子指令的立即偏移
CN117121045A (zh) 空间接近数据的压缩和交织
US20230148225A1 (en) Joint denoising and supersampling of graphics data
US20230142467A1 (en) Temporal gradients of higher order effects to guide temporal accumulation
US20230144562A1 (en) Augmenting motion vectors via procedural shader output
US20240160478A1 (en) Increasing processing resources in processing cores of a graphics environment
EP4109252A1 (en) Dynamically scalable and partitioned copy engine
US20220414053A1 (en) Systolic array of arbitrary physical and logical depth
US20240168723A1 (en) Matrix transposition in matrix multiplication array circuitry
US20240168807A1 (en) Cross-thread register sharing for matrix multiplication compute
CN117859148A (zh) 使用混合精度卷积神经网络的时域摊销的超采样
CN116091300A (zh) 样本分布知情去噪和渲染
CN117223027A (zh) 将重心平面转换为属性平面

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication