CN117853311A - SoC架构的分解 - Google Patents

SoC架构的分解 Download PDF

Info

Publication number
CN117853311A
CN117853311A CN202410134206.7A CN202410134206A CN117853311A CN 117853311 A CN117853311 A CN 117853311A CN 202410134206 A CN202410134206 A CN 202410134206A CN 117853311 A CN117853311 A CN 117853311A
Authority
CN
China
Prior art keywords
graphics
memory
logic
processor
data
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
CN202410134206.7A
Other languages
English (en)
Inventor
N·马塔姆
L·切尼
E·芬利
V·乔治
S·贾哈吉尔达
A·科克
J·马斯特罗纳德
I·拉吉瓦尼
L·斯特里拉马萨马
M·特肖梅
V·韦姆拉帕利
B·萨维尔
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 CN117853311A publication Critical patent/CN117853311A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/409Mechanical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L25/00Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof
    • H01L25/03Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof all the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/00, or in a single subclass of H10K, H10N, e.g. assemblies of rectifier diodes
    • H01L25/04Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof all the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/00, or in a single subclass of H10K, H10N, e.g. assemblies of rectifier diodes the devices not having separate containers
    • H01L25/065Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof all the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/00, or in a single subclass of H10K, H10N, e.g. assemblies of rectifier diodes the devices not having separate containers the devices being of a type provided for in group H01L27/00
    • H01L25/0655Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof all the devices being of a type provided for in the same subgroup of groups H01L27/00 - H01L33/00, or in a single subclass of H10K, H10N, e.g. assemblies of rectifier diodes the devices not having separate containers the devices being of a type provided for in group H01L27/00 the devices being arranged next to each other
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L25/00Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof
    • H01L25/18Assemblies consisting of a plurality of individual semiconductor or other solid state devices ; Multistep manufacturing processes thereof the devices being of types provided for in two or more different subgroups of the same main group of groups H01L27/00 - H01L33/00, or in a single subclass of H10K, H10N
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2224/00Indexing scheme for arrangements for connecting or disconnecting semiconductor or solid-state bodies and methods related thereto as covered by H01L24/00
    • H01L2224/01Means for bonding being attached to, or being formed on, the surface to be connected, e.g. chip-to-package, die-attach, "first-level" interconnects; Manufacturing methods related thereto
    • H01L2224/10Bump connectors; Manufacturing methods related thereto
    • H01L2224/15Structure, shape, material or disposition of the bump connectors after the connecting process
    • H01L2224/16Structure, shape, material or disposition of the bump connectors after the connecting process of an individual bump connector
    • H01L2224/161Disposition
    • H01L2224/16151Disposition the bump connector connecting between a semiconductor or solid-state body and an item not being a semiconductor or solid-state body, e.g. chip-to-substrate, chip-to-passive
    • H01L2224/16221Disposition the bump connector connecting between a semiconductor or solid-state body and an item not being a semiconductor or solid-state body, e.g. chip-to-substrate, chip-to-passive the body and the item being stacked
    • H01L2224/16225Disposition the bump connector connecting between a semiconductor or solid-state body and an item not being a semiconductor or solid-state body, e.g. chip-to-substrate, chip-to-passive the body and the item being stacked the item being non-metallic, e.g. insulating substrate with or without metallisation
    • H01L2224/16227Disposition the bump connector connecting between a semiconductor or solid-state body and an item not being a semiconductor or solid-state body, e.g. chip-to-substrate, chip-to-passive the body and the item being stacked the item being non-metallic, e.g. insulating substrate with or without metallisation the bump connector connecting to a bond pad of the item
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/15Details of package parts other than the semiconductor or other solid state devices to be connected
    • H01L2924/151Die mounting substrate
    • H01L2924/1517Multilayer substrate
    • H01L2924/15192Resurf arrangement of the internal vias
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/15Details of package parts other than the semiconductor or other solid state devices to be connected
    • H01L2924/151Die mounting substrate
    • H01L2924/153Connection portion
    • H01L2924/1531Connection portion the connection portion being formed only on the surface of the substrate opposite to the die mounting surface
    • H01L2924/15311Connection portion the connection portion being formed only on the surface of the substrate opposite to the die mounting surface being a ball array, e.g. BGA
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Power Engineering (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Semiconductor Integrated Circuits (AREA)
  • Microcomputers (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Container, Conveyance, Adherence, Positioning, Of Wafer (AREA)
  • Semiconductor Memories (AREA)
  • Dram (AREA)

Abstract

本申请公开了SoC架构的分解。本文描述的实施例提供了用于将片上系统集成电路的架构分解成可封装到公共机箱上的多个不同芯粒的技术。在一个实施例中,图形处理单元或并行处理器由单独制造的各式各样的硅芯粒组成。芯粒是一种至少部分封装的集成电路,其包括可以与其它芯粒组装成更大封装的逻辑的不同单元。具有不同IP核逻辑的芯粒的多样化集合可以组装到单个器件中。

Description

SoC架构的分解
本发明专利申请是国际申请号为PCT/US2020/014766,国际申请日为2020年1月23日,进入中国国家阶段的申请号为202080014312.1,名称为“SoC架构的分解”的发明专利申请的分案申请。
相关申请
本申请要求2019年3月15日提交的编号为16/355377的美国申请的权益,该美国申请的全部内容由此以引用的方式并入到本文。
技术领域
实施例一般涉及通用图形和并行处理单元的设计和制造。
背景技术
当前并行图形数据处理包括被开发以对图形数据执行特定操作(诸如例如线性内插、曲面细分、光栅化、纹理映射、深度测试等)的系统和方法。传统上,图形处理器曾使用固定功能计算单元来处理图形数据;然而,最近,部分图形处理器已经被做成可编程的,使此类处理器能够支持用于处理顶点和片段数据的各种更广泛的操作。
为了进一步提高性能,图形处理器通常实现诸如流水线化之类的处理技术,这些技术尝试贯穿图形流水线的不同部分并行处理尽可能多的图形数据。具有单指令多线程(SIMT)架构的并行图形处理器设计成使图形流水线中的并行处理量最大化。在SIMT架构中,并行线程的群组尝试尽可能经常地一起同步执行程序指令来提高处理效率。对于SIMT架构的软件和硬件的一般概览可以在Shane Cook的CUDA Programming的第3章第37-51页(2013)中找到。
附图说明
为了详细理解本发明实施例的上面叙述的特征的方式,可通过参考实施例来获得对上文简要概述的实施例的更特定的描述,其中一些实施例在附图中进行了说明,并且图中:
图1是示出配置成实现本文中描述的实施例的一个或多个方面的计算机系统的框图;
图2A-2D示出根据实施例的并行处理器组件;
图3A-3C是根据实施例的图形多处理器和基于多处理器的GPU的框图;
图4A-4F示出其中多个GPU通信地耦合到多个多核处理器的示范性架构;
图5示出根据实施例的图形处理流水线;
图6示出根据实施例的机器学习软件栈;
图7示出根据实施例的通用图形处理单元;
图8示出根据实施例的多GPU计算系统;
图9A-9B示出示范性深度神经网络的层;
图10示出示范性递归神经网络;
图11示出深度神经网络的训练和部署;
图12是示出分布式学习的框图;
图13示出适合于使用经训练的模型执行推理的示范性推理片上系统(SOC);
图14是根据实施例的处理系统的框图;
图15是根据实施例的处理器的框图;
图16是根据实施例的图形处理器的框图;
图17是根据一些实施例的图形处理器的图形处理引擎的框图;
图18是根据本文描述的一些实施例的图形处理器核的硬件逻辑的框图;
图19A-19B示出根据本文描述的实施例包括在图形处理器核中采用的处理元件的阵列的线程执行逻辑;
图20是示出根据一些实施例的图形处理器指令格式的框图;
图21是根据另一个实施例的图形处理器的框图;
图22A-22B示出根据一些实施例的图形处理器命令格式和命令序列;
图23示出根据一些实施例的数据处理系统的示范性图形软件架构;
图24A是示出根据实施例的IP核开发系统的框图;
图24B示出根据本文中描述的一些实施例的集成电路封装组件的横截面侧视图;
图25是示出根据实施例在芯片集成电路上的示范性系统的框图;
图26A-26B是示出根据本文描述的实施例在SoC内使用的示范性图形处理器的框图;
图27示出根据实施例的并行计算系统;
图28A-28B示出根据本文中描述的实施例分离式并行处理器的混合逻辑/物理视图;
图29A-29B示出根据实施例的分解式并行处理器的封装视图;
图30示出根据实施例用于互连组构(interconnect fabric)的信息传输系统;
图31示出跨越互连组构的多个物理链路在功能单元之间传送消息或信号;
图32示出跨越互连组构的单个物理链路为多个功能单元传送信息或信号;
图33示出为分离式并行处理器内的功能单元配置组构连接的方法;
图34示出跨越分离式并行处理器内的互连组构中继消息和/或信号的方法;
图35示出在每个工作负荷的基础上对芯粒(chiplet)进行功率门控的方法;
图36示出包括可互换的芯粒的并行处理器组件;
图37示出根据实施例的可互换的芯粒系统;
图38是根据实施例在虚拟通道上携带的多个业务类别的图示;
图39示出根据实施例在可互换的芯粒的槽之间进行不可知数据传送的方法;
图40示出根据实施例的可互换的芯粒的模块化架构;
图41示出使用标准化机箱接口以用于启用芯粒测试、验证和集成;
图42示出使用单独分箱的芯粒来创建各种产品层次;以及
图43示出基于芯粒配置启用不同产品层次的方法。
具体实施方式
在一些实施例中,图形处理单元(GPU)通信地耦合到主机/处理器核来加速图形操作、机器学习操作、模式(pattern)分析操作和各种通用GPU(GPGPU)功能。GPU可以通过总线或另一个互连(例如,诸如PCIe或NVLink之类的高速互连)通信地耦合到主机处理器/核。在其它实施例中,可以将GPU集成在与核相同的封装或芯片上并且通过内部处理器总线/互连(即,在所述封装或芯片内部)通信地耦合到核。不管连接GPU所采用的方式如何,处理器核都可以采取工作描述符中所包含的命令/指令的序列的形式对GPU分配工作。然后,GPU将专用电路/逻辑用于高效处理这些命令/指令。
在下面的描述中,阐述许多特定细节来提供更加全面的理解。然而,本领域技术人员将明白,本文描述的实施例可以在没有这些特定细节中的一个或多个的情况下实践。在其它实例中,尚未描述众所周知的特征以避免使本发明实施例的细节混淆。
系统概览
图1是框图,其示出配置成实现本文描述的实施例的一个或多个方面的计算系统100。计算系统100包括处理子系统101,所述处理子系统101具有一个或多个处理器102和系统存储器104,所述一个或多个处理器102与所述系统存储器104经由可包括存储器集线器(hub)105的互连路径来通信。存储器集线器105可以是芯片集组件内的单独组件,或可以集成在所述一个或多个处理器102内。存储器集线器105经由通信链路106与I/O子系统111耦合。I/O子系统111包括I/O集线器107,所述I/O集线器107可以使得计算系统100能够从一个或多个输入装置108接收输入。另外,I/O集线器107可以使得显示控制器能够将输出提供给一个或多个显示装置110A,所述显示控制器可被包括在所述一个或多个处理器102中。在一个实施例中,与I/O集线器107耦合的所述一个或多个显示装置110A可以包括局部、内部或嵌入式显示装置。
在一个实施例中,处理子系统101包括一个或多个并行处理器112,所述并行处理器112经由总线或其它通信链路113耦合到存储器集线器105。通信链路113可以是任何数量的基于标准的通信链路技术或协议之一(诸如但不限于,快速PCI),或可以是供应商特定的通信接口或通信组构。在一个实施例中,所述一个或多个并行处理器112形成计算上集中的并行或向量处理系统,所述系统可包括大量处理核和/或处理集群(诸如,集成众核(MIC)处理器)。在一个实施例中,所述一个或多个并行处理器112形成图形处理子系统,所述图形处理子系统可以将像素输出到经由I/O集线器107耦合的一个或多个显示装置110A之一。所述一个或多个并行处理器112还可以包括显示控制器和显示器接口(未示出)以实现与一个或多个显示装置110B的直接连接。
在I/O子系统111内,系统存储单元114可以连接到I/O集线器107以提供用于计算系统100的存储机制。I/O开关116可以用于提供接口机制以实现I/O集线器107与其它组件(诸如,可集成到平台中的网络适配器118和/或无线网络适配器119,以及可以经由一个或多个附加(add-in)装置120添加的各种其它装置)之间的连接。网络适配器118可以是以太网适配器或另一有线网络适配器。无线网络适配器119可以包括以下项中的一项或多项:Wi-Fi、蓝牙、近场通信(NFC)、或包括一个或多个无线无线电装置(wireless radio)的其它网络装置。
计算系统100可以包括未明确示出的其它组件,包括USB或其它端口连接件、光学存储驱动器、视频捕获装置、和诸如此类,它们也可连接到I/O集线器107。将图1中的各种组件互连的通信路径可使用任何合适的协议来实现,诸如基于PCI(外设组件互连)的协议(例如,快速PCI)或任何其它总线或点对点通信接口和/或协议,诸如NV-Link高速互连、或本领域中已知的互连协议。
在一个实施例中,所述一个或多个并行处理器112合并针对图形和视频处理进行优化的电路(包括例如,视频输出电路),并且构成图形处理单元(GPU)。在另一实施例中,所述一个或多个并行处理器112合并针对通用处理进行优化的电路,同时保持本文更详细描述的底层计算架构。在又一实施例中,计算系统100的组件可与一个或多个其它系统元件一起集成在单个集成电路上。例如,所述一个或多个并行处理器112、存储器集线器105、(一个或多个)处理器102和I/O集线器107可以集成到片上系统(SoC)集成电路中。备选地,计算系统100的组件可以集成到单个封装中以形成封装中系统(SIP)配置。在一个实施例中,计算系统100的组件的至少一部分可以集成到多芯片模块(MCM)中,所述MCM可以与其它多芯片模块一起互连到模块化计算系统中。
将认识到的是,本文示出的计算系统100是说明性的,并且变化和修改是有可能的。可按期望修改连接拓扑,包括桥接器的数量和布置、(一个或多个)处理器102的数量和(一个或多个)并行处理器112的数量。例如,在一些实施例中,系统存储器104直接而非通过桥接器而被连接到(一个或多个)处理器102,而其它装置经由存储器集线器105与系统存储器104和(一个或多个)处理器102通信。在其它备选拓扑中,(一个或多个)并行处理器112连接到I/O集线器107或直接连接到所述一个或多个处理器102之一,而非连接到存储器集线器105。在其它实施例中,I/O集线器107和存储器集线器105可集成到单个芯片中。一些实施例可包括经由多个插口附连的两组或更多组处理器102,它们可以与(一个或多个)并行处理器112的两个或更多个实例耦合。
本文中示出的具体组件中的一些是可选的,并且可以不被包括在计算系统100的所有实现中。例如,可支持任何数量的插入式卡或外设,或可消除一些组件。此外,针对与图1中示出的那些组件类似的组件,一些架构可使用不同的术语。例如,在一些架构中,存储器集线器105可称为北桥,而I/O集线器107可称为南桥。
图2A示出了根据实施例的并行处理器200。并行处理器200的各种组件可使用一个或多个集成电路装置(诸如可编程处理器、专用集成电路(ASIC)或现场可编程门阵列(FPGA))来实现。根据实施例,所示出的并行处理器200是图1中所示的一个或多个并行处理器112的变形。
在一个实施例中,并行处理器200包括并行处理单元202。所述并行处理单元包括I/O单元204,所述I/O单元204能够实现与其它装置(包括并行处理单元202的其它实例)的通信。I/O单元204可直接连接到其它装置。在一个实施例中,I/O单元204经由使用集线器或开关接口(诸如,存储器集线器105)来与其它装置连接。存储器集线器105与I/O单元204之间的连接形成通信链路113。在并行处理单元202内,I/O单元204与主机接口206和存储器交叉开关(memory crossbar)216连接,其中,主机接口206接收针对执行处理操作的命令,并且存储器交叉开关216接收针对执行存储器操作的命令。
当主机接口206经由I/O单元204接收命令缓冲器时,主机接口206可以将用于执行那些命令的工作操作导引至前端208。在一个实施例中,前端208与调度器210耦合,该调度器210配置成将命令或其它工作项分布至处理集群阵列212。在一个实施例中,调度器210确保在任务被分布至处理集群阵列212的处理集群之前,处理集群阵列212被适当地配置且处于有效状态。在一个实施例中,调度器210经由微控制器上执行的固件逻辑来实现。微控制器实现的调度器210可配置成以粗糙粒度和精细粒度来执行复杂的调度和工作分布操作,从而实现处理阵列212上执行的线程的上下文切换和快速抢占(rapid preemption)。在一个实施例中,主机软件可以经由多个图形处理门铃(doorbell)之一来检验工作负荷在处理阵列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可以配置成执行图形处理相关的着色器(shader)程序,诸如但不限于顶点着色器、曲面细分着色器、几何着色器和像素着色器。并行处理单元202可以经由I/O单元204来转移来自系统存储器的数据以便处理。在处理期间,可以将所转移的数据在处理期间存储到芯片上存储器(例如,并行处理器存储器222),然后将其写回到系统存储器。
在一个实施例中,当并行处理单元202用于执行图形处理时,调度器210可以配置成将处理工作负荷划分成近似相等大小的任务,以更好地实现将图形处理操作分布到处理集群阵列212的多个集群214A-214N。在一些实施例中,部分处理集群阵列212可以配置成执行不同类型的处理。例如,第一部分可配置成执行顶点着色和拓扑生成,第二部分可配置成执行曲面细分和几何着色,并且第三部分可配置成执行像素着色或其它屏幕空间操作,以产生用于显示的渲染图像。由集群214A-214N中的一个或多个所产生的中间数据可存储在缓冲器中以允许所述中间数据在集群214A-214N之间传送以便进一步处理。
在操作期间,处理集群阵列212可以经由调度器210来接收待执行的处理任务,所述调度器从前端208接收定义处理任务的命令。针对图形处理操作,处理任务可以包括定义要如何处理数据(例如,要执行什么程序)的命令和状态参数以及待处理的数据的索引,例如,表面(补片(patch))数据、图元数据(primitive data)、顶点数据和/或像素数据的索引。调度器210可配置成提取与任务相对应的索引,或可从前端208接收索引。前端208可以配置成确保在发起由进入的命令缓冲器(例如,分批缓冲器、推动缓冲器等)所指定的工作负荷之前处理集群阵列212配置成有效状态。
并行处理单元202的一个或多个实例中的每个都可以与并行处理器存储器222耦合。并行处理器存储器222可以经由存储器交叉开关216来访问,存储器交叉开关216可以从处理集群阵列212以及I/O单元204接收存储器请求。存储器交叉开关216可以经由存储器接口218访问并行处理器存储器222。存储器接口218可以包括多个分区单元(例如,分区单元220A、分区单元220B、直到分区单元220N),其可以各自耦合到并行处理器存储器222的一部分(例如,存储器单元)。在一种实现中,将分区单元220A-220N的数量配置成等于存储器单元的数量,使得第一分区单元220A具有对应的第一存储器单元224A,第二分区单元220B具有对应的存储器单元224B,并且第N分区单元220N具有对应的第N存储器单元224N。在其它实施例中,分区单元220A-220N的数量可以不等于存储器装置的数量。
在各种实施例中,存储器单元224A-224N可以包括各种类型的存储器装置,包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如,同步图形随机存取存储器(SGRAM),包括图形双数据速率(GDDR)存储器。在一个实施例中,存储器单元224A-224N还可包括3D堆叠式存储器,包括但不限于高带宽存储器(HBM)。本领域技术人员将认识到,存储器单元224A-224N的特定实现可以变化,并且可以选自各种常规设计之一。渲染目标,诸如帧缓冲器或纹理映射(texture map),可跨存储器单元224A-224N存储,从而允许分区单元220A-220N并行写入每个渲染目标的部分以高效地使用并行处理器存储器222的可用带宽。在一些实施例中,可排除并行处理器存储器222的本地实例,以有利于利用系统存储器连同本地高速缓存存储器的统一存储器设计。
在一个实施例中,处理集群阵列212的集群214A-214N中的任何一个都可以处理将被写入到并行处理器存储器222内的存储器单元224A-224N中的任何存储器单元的数据。可以将存储器交叉开关216配置成将每个集群214A-214N的输出转移到任何分区单元220A-220N或另一集群214A-214N,其可以对输出执行附加处理操作。每个集群214A-214N都可以通过存储器交叉开关216与存储器接口218通信,以从各种外部存储器装置读取或写入到各种外部存储器装置。在一个实施例中,存储器交叉开关216具有与存储器接口218的连接以与I/O单元204通信,以及与并行处理器存储器222的本地实例的连接,从而使不同处理集群214A-214N内的处理单元能够与系统存储器或对于并行处理单元202不是本地的其它存储器通信。在一个实施例中,存储器交叉开关216可以使用虚拟通道以分离集群214A-214N与分区单元220A-220N之间的业务流。
虽然在并行处理器200内示出了并行处理单元202的单个实例,但是可以包括并行处理单元202的任何数量的实例。例如,可以在单个插入式卡上提供并行处理单元202的多个实例,或可以将多个插入式卡互连。并行处理单元202的不同实例可以配置成:即使所述不同实例具有不同数量的处理核、不同量的本地并行处理器存储器和/或其它配置差异也仍互操作。例如,在一个实施例中,并行处理单元202的一些实例相对于其它实例可以包括更高精度浮点单元。合并并行处理单元202或并行处理器200的一个或多个实例的系统可以用各种配置和形状因数(form factor)来实现,包括但不限于台式计算机、膝上型计算机、或手持个人计算机、服务器、工作站、游戏控制台和/或嵌入式系统。
图2B是根据实施例的分区单元220的框图。在一个实施例中,分区单元220是图2A的分区单元220A-220N之一的实例。如所示出,分区单元220包括L2高速缓存221、帧缓冲器接口225和ROP 226(光栅操作单元)。L2高速缓存221是读/写高速缓存,其配置成执行从存储器交叉开关216和ROP 226接收的加载和存储操作。由L2高速缓存221将读未命中(readmiss)和紧急回写请求输出到帧缓冲器接口225以便处理。也可以经由帧缓冲器接口225将更新发送到帧缓冲器以便处理。在一个实施例中,帧缓冲器接口225与并行处理器存储器中的存储器单元(诸如,图2A的存储器单元224A-224N(例如,在并行处理器存储器222内))之一进行对接。
在图形应用中,ROP 226是执行诸如模板印刷(stencil)、z测试、混合之类的光栅操作的处理单元。随后ROP 226输出存储在图形存储器中的经处理的图形数据。在一些实施例中,ROP 226包括压缩逻辑,该压缩逻辑用于压缩写入到存储器的深度或颜色数据,并且解压缩从存储器读取的深度或颜色数据。压缩逻辑可以是利用多种压缩算法中的一种或多种压缩算法的无损压缩逻辑。由ROP 226所执行的压缩的类型可以基于待压缩的数据的统计特性而变化。例如,在一个实施例中,△颜色压缩在逐图块的基础上对深度和颜色数据执行。
在一些实施例中,在每个处理集群(例如,图2A的集群214A-214N)而不是分区单元220内包括ROP 226。在这样的实施例中,通过存储器交叉开关216传送对于像素数据而不是像素片段数据的读和写请求。经处理的图形数据可以在显示装置(例如图1的一个或多个显示装置110)上显示、被路由以供(一个或多个)处理器102进一步处理或被路由以供图2A的并行处理器200内的处理实体中的其中之一来进一步处理。
图2C是根据实施例的并行处理单元内的处理集群214的框图。在一个实施例中,处理集群是图2A的处理集群214A-214N之一的实例。处理集群214可以配置成并行执行许多线程,其中,术语“线程”是指在特定的一组输入数据上执行的特定程序的实例。在一些实施例中,在不提供多个独立指令单元的情况下,使用单指令多数据(SIMD)指令发布技术以支持对大数量线程的并行执行。在其它实施例中,使用配置成将指令发布到处理集群中的每一个内的一组处理引擎的公共指令单元,单指令多线程(SIMT)技术被用于支持大量的一般同步的线程的并行执行。不同于SIMD执行制度(其中,所有处理引擎通常执行相同的指令),SIMT执行允许不同线程通过给定线程程序更容易地遵循分歧的执行路径。本领域技术人员将理解,SIMD处理制度表示SIMT处理制度的功能子集。
可以经由流水线管理器232来控制处理集群214的操作,所述流水线管理器将处理任务分布到SIMT并行处理器。流水线管理器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内的高速缓存存储器(例如,L1高速缓存248)。每个图形多处理器234还有权访问可用于在线程之间转移数据并且在所有处理集群214当中共享的分区单元(例如,图2A的分区单元220A-220N)内的L2高速缓存。图形多处理器234还可访问芯片外全局存储器,所述芯片外全局存储器可以包括本地并行处理器存储器和/或系统存储器中的一个或多个。可将并行处理单元202外部的任何存储器用作全局存储器。实施例(其中处理集群214包括图形多处理器234的多个实例)可以共享公共指令和数据,所述公共指令和数据可存储在L1高速缓存248中。
每个处理集群214可包括MMU 245(存储器管理单元),所述MMU配置成将虚拟地址映射到物理地址中。在其它实施例中,MMU 245的一个或多个实例可驻留在图2A的存储器接口218内。MMU 245包括:一组页表条目(PTE),用于将虚拟地址映射到图块的物理地址;以及可选地高速缓存行索引。MMU 245可包括可驻留在图形多处理器234或L1高速缓存或处理集群214内的地址转化后备缓冲器(TLB)或高速缓存。物理地址经处理以分布表面数据访问局域性,从而允许在分区单元当中高效的请求交织。高速缓存行索引可用于确定针对高速缓存行的请求是命中还是未命中。
在图形和计算应用中,处理集群214可被配置使得每个图形多处理器234耦合到纹理单元236以用于执行纹理映射操作,例如确定纹理样本位置、读取纹理数据和过滤纹理数据。根据需要,从内部纹理L1高速缓存(未示出)或在一些实施例中从图形多处理器234内的L1高速缓存读取纹理数据,并且从L2高速缓存、本地并行处理器存储器或系统存储器取所述纹理数据。每个图形多处理器234将经处理的任务输出到数据交叉开关240以将经处理的任务提供给另一处理集群214,以供进一步处理或以经由存储器交叉开关216将经处理的任务存储在L2高速缓存、本地并行处理器存储器或系统存储器中。preROP 242(预光栅操作单元)配置成从图形多处理器234接收数据、将数据引导到ROP单元,所述ROP单元可与如本文描述的分区单元(例如,图2A的分区单元220A-220N)位于一起。preROP 242单元可以执行针对颜色混合的优化、组织像素颜色数据和执行地址转化。
将认识到,本文描述的核架构是说明性的,并且变形和修改是有可能的。任何数量的处理单元(例如,图形多处理器234、纹理单元236、preROP 242等)可被包括在处理集群214内。此外,虽然仅示出了一个处理集群214,但是如本文描述的并行处理单元可以包括处理集群214的任何数量的实例。在一个实施例中,每个处理集群214可以配置成使用单独且不同的处理单元、L1高速缓存等独立于其它处理集群214来操作。
图2D示出了根据一个实施例的图形多处理器234。在此类实施例中,图形多处理器234与处理集群214的流水线管理器232耦合。图形多处理器234具有执行流水线,其包括但不限于:指令高速缓存252、指令单元254、地址映射单元256、寄存器堆(file)258、一个或多个通用图形处理单元(GPGPU)核262和一个或多个加载/存储单元266。GPGPU核262和加载/存储单元266经由存储器和高速缓存互连268与高速缓存存储器272和共享存储器270耦合。在一个实施例中,图形多处理器234另外包括张量和/或射线追踪核263,其包括硬件逻辑来加速矩阵和/或射线追踪操作。
在一个实施例中,指令高速缓存252从流水线管理器232接收待执行的指令流。所述指令被高速缓存在指令高速缓存252中,并且由指令单元254分派以供执行。指令单元254可以将指令分派为线程群组(例如,线程束(warp)),其中线程群组的每个线程被指派给GPGPU核262内的不同执行单元。指令可以通过指定统一地址空间内的地址来访问本地、共享或全局地址空间中的任一个。地址映射单元256可以用于将统一地址空间中的地址转化成可以由加载/存储单元266访问的不同的存储器地址。
寄存器堆258为图形多处理器234的功能单元提供一组寄存器。寄存器堆258为连接到图形多处理器234的功能单元(例如,GPGPU核262、加载/存储单元266)的数据路径的操作数提供临时存储。在一个实施例中,在所述功能单元中的每个之间划分寄存器堆258,使得每个功能单元分配有寄存器堆258的专用部分。在一个实施例中,在由图形多处理器234执行的不同线程束之间划分寄存器堆258。
GPGPU核262可以各自包括浮点单元(FPU)和/或整数算术逻辑单元(ALU),所述FPU和整数ALU用于执行图形多处理器234的指令。根据实施例,GPGPU核262可以在架构上是类似的,或可以在架构上是不同的。例如且在一个实施例中,GPGPU核262的第一部分包括单精度FPU和整数ALU,而GPGPU核的第二部分包括双精度FPU。在一个实施例中,FPU可以针对浮点算术来实现IEEE 754-2008标准,或能够实现可变精度浮点算术。图形多处理器234可以另外包括一个或多个固定功能或特殊功能单元以执行特定功能(诸如,复制矩形或像素混合操作)。在一个实施例中,GPGPU核中的一个或多个也可以包括固定或特殊功能逻辑。
在一个实施例中,GPGPU核262包括能够对多组数据执行单指令的SIMD逻辑。在一个实施例中,GPGPU核262可以物理地执行SIMD4、SIMD8和SIMD16指令,并且逻辑上执行SIMD1、SIMD2和SIMD32指令。用于GPGPU核的SIMD指令可以由着色器编译器在编译时间生成,或者可以在执行针对单程序多数据(SPMD)或SIMT架构而编写和编译的程序时自动生成。针对SIMT执行模型而配置的程序的多个线程可以经由单SIMD指令而执行。例如且在一个实施例中,执行相同或类似操作的八个SIMT线程可以经由单个SIMD8逻辑单元并行地执行。
存储器和高速缓存互连268是互连网络,其将图形多处理器234的功能单元中的每个连接到寄存器堆258并连接到共享存储器270。在一个实施例中,存储器和高速缓存互连268是交叉开关互连,其允许加载/存储单元266在共享存储器270与寄存器堆258之间实现加载和存储操作。寄存器堆258能以与GPGPU核262相同的频率操作,由此在GPGPU核262与寄存器堆258之间的数据转移是非常低的时延。共享存储器270可以用于实现图形多处理器234内的功能单元上执行的线程之间的通信。高速缓存存储器272可以用作例如数据高速缓存,以对功能单元与纹理单元236之间传递的纹理数据进行高速缓存。共享存储器270也可以用作程序管理的高速缓存(cached)。在GPGPU核262上执行的线程能以程序方式将除了存储在高速缓存存储器272内的自动高速缓存的数据之外的数据存储在共享存储器内。
图3A-图3C示出了根据实施例的附加图形多处理器。图3A-图3B示出了图形多处理器325、350,它们是图2C的图形多处理器234的变形。图3C示出了图形处理单元(GPU)380,其包括布置到多核群组365A-365N中的图形处理资源的专用集合。所示出的图形多处理器325、350和多核群组365A-365N可以是能够同时执行大量执行线程的流播多处理器(streaming multiprocessor,SM)。
图3A示出了根据附加实施例的图形多处理器325。图形多处理器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包括一个或多个交叉开关(crossbar switch)以实现图形多处理器325的各种组件之间的通信。在一个实施例中,互连组构327是分开的高速网络组构层,图形多处理器325的每个组件堆叠在该分开的高速网络组构层上。图形多处理器325的组件经由互连组构327与远程组件通信。例如,GPGPU核336A-336B、337A-337B以及338A-338B可以各自经由互连组构327与共享存储器346通信。互连组构327可以仲裁图形多处理器325内的通信以确保组件之间的公平带宽分配。
图3B示出了根据附加实施例的图形多处理器350。图形处理器包括多组执行资源356A-356D,其中,每组执行资源包括多个指令单元、寄存器堆、GPGPU核和加载存储单元,如图2D和图3A中所示出。执行资源356A-356D可以与(一个或多个)纹理单元360A-360D一致地工作以用于纹理操作,同时共享指令高速缓存354和共享存储器353。在一个实施例中,执行资源356A-356D可以共享指令高速缓存354和共享存储器353,以及纹理和/或数据高速缓存存储器358A-358B的多个实例。各种组件可以经由类似于图3A的互连组构327的互连组构352来通信。
本领域技术人员将理解,图1、2A-2D以及3A-3B中所描述的架构就本实施例的范畴而言是描述性的而非限制性的。因此,在不背离本文描述的实施例的范畴的情况下,本文描述的技术可在任何正确配置的处理单元上实现,所述处理单元包括但不限于一个或多个移动应用处理器、一个或多个台式计算机或服务器中央处理单元(CPU)(包括多核CPU)、一个或多个并行处理单元(诸如,图2A的并行处理单元202)以及一个或多个图形处理器或专用处理单元。
在一些实施例中,如本文描述的并行处理器或GPGPU以通信方式耦合到主机/处理器核以加速图形操作、机器学习操作、模式分析操作和各种通用GPU(GPGPU)功能。GPU可通过总线或其它互连(例如,诸如PCIe或NVLink的高速互连)以通信方式耦合到主机处理器/核。在其它实施例中,GPU可集成在与所述核相同封装或芯片上,并且通过内部处理器总线/互连(即,在所述封装或芯片的内部)以通信方式耦合到所述核。不管连接GPU所采用的方式如何,处理器核都可采取以工作描述符中所包含的命令/指令的序列的形式将工作分配给GPU。GPU然后使用专用的电路/逻辑以用于高效地处理这些命令/指令。
图3C示出了图形处理单元(GPU)380,所述图形处理单元380包含布置到多核群组365A-N中的专门的图形处理资源集合。虽然只提供了单个多核群组365A的细节,但将认识到,其它多核群组365B-365N可以配备有相同或类似的图形处理资源集合。
如图所示,多核群组365A可以包括一组图形核370、一组张量核371和一组射线追踪核372。调度器/分派器368调度和分派图形线程以便在各种核370、371、372上执行。当执行图形线程时,一组寄存器堆369存储供核370、371、372所使用的操作数值。例如,这些可包括用于存储整数值的整数寄存器、用于存储浮点值的浮点寄存器、用于存储紧缩数据元素(整数和/或浮点数据元素)的向量寄存器和用于存储张量/矩阵值的图块寄存器。在一个实施例中,图块寄存器被实现为向量寄存器的组合集合。
一个或多个组合的1级(L1)高速缓存和共享存储器单元373将诸如纹理数据、顶点数据、像素数据、射线数据、边界体积数据等的图形数据本地存储在每个多核群组365A内。一个或多个纹理单元374还可用于执行纹理操作,诸如纹理映射和采样。由多核群组365A-365N的全部或子集共享的2级(L2)高速缓存375存储多个并发图形线程的图形数据和/或指令。如图所示,L2高速缓存375可以跨多个多核群组365A-365N共享。一个或多个存储器控制器367将GPU 380耦合到存储器366,所述存储器366可以是系统存储器(例如,DRAM)和/或专用图形存储器(例如,GDDR6存储器)。
输入/输出(I/O)电路363将GPU 380耦合到一个或多个I/O装置362,诸如数字信号处理器(DSP)、网络控制器或用户输入装置。芯片上互连可以用于将I/O装置362耦合到GPU380和存储器366。I/O电路3195的一个或多个I/O存储器管理单元(IOMMU)364将I/O装置362直接耦合到系统存储器366。在一个实施例中,IOMMU 364管理多组页表以将虚拟地址映射到系统存储器366中的物理地址。在该实施例中,I/O装置362、(一个或多个)CPU 361和(一个或多个)GPU 380可以共享相同的虚拟地址空间。
在一个实现中,IOMMU 364支持虚拟化。在这种情况下,它可以管理第一组页表以将客户/图形虚拟地址映射到客户/图形物理地址,并管理第二组页表以将客户/图形物理地址映射到系统/主机物理地址(例如,在系统存储器366中)。第一组和第二组页表中的每一组页表的基地址可以存储在控制寄存器中,并在上下文切换时被交换出去(例如,以便为新的上下文提供对相关页表集合的访问)。虽然在图3C中没有示出,但是核370、371、372和/或多核群组365A-365N中的每一个都可包括转化后备缓冲器(TLB),以用于缓存客户虚拟到客户物理转化、客户物理到主机物理转化和客户虚拟到主机物理转化。
在一个实施例中,CPU 361、GPU 380和I/O装置362被集成在单个半导体芯片和/或芯片封装上。所示出的存储器366可集成在相同芯片上,或可经由芯片外接口耦合到存储器控制器367。在一个实现中,存储器366包括GDDR6存储器,其与其它物理系统级存储器共享相同的虚拟地址空间,但本发明的根本原理不限于该特定实现。
在一个实施例中,张量核371包括专门设计用于执行矩阵操作的多个执行单元,所述矩阵操作是用于执行深度学习操作的基本计算操作。例如,同时矩阵乘法操作可以用于神经网络训练和推理。张量核371可以使用多种操作数精度来执行矩阵处理,包括单精度浮点(例如,32位)、半精度浮点(例如16位)、整数字(16位)、字节(8位)和半字节(4位)。在一个实施例中,神经网络实现提取每个渲染场景的特征,潜在地结合来自多个帧的细节,以构建高质量的最终图像。
在深度学习实现中,并行矩阵乘法工作可以安排以便在张量核371上的执行。神经网络的训练特别需要大量矩阵点积操作。为了处理N×N×N矩阵乘法的内积公式,张量核371可以包含至少N个点积处理元件。在矩阵乘法开始之前,将一个完整的矩阵加载到图块寄存器中,并且对于N个循环中的每个循环,加载第二矩阵的至少一个列。每个循环,有N个点积被处理。
取决于特定实现,矩阵元素可以用不同的精度加以存储,包括16位字、8位字节(例如,INT8)和4位半字节(例如,INT4)。可以为张量核371指定不同的精度模式,以确保对不同的工作负荷(例如,诸如可以容忍量化到字节和半字节的推理工作负荷)使用最高效的精度。
在一个实施例中,射线追踪核372加速了实时射线追踪和非实时射线追踪实现两者的射线追踪操作。特别地,射线追踪核372包括射线遍历/相交电路,射线遍历/相交电路用于使用边界体积层次(BVH)执行射线遍历,并识别射线与包围在BVH体积内的图元之间的相交。射线追踪核372还可以包括用于执行深度测试和拣选的电路(例如,使用Z缓冲器或类似的布置)。在一个实现中,射线追踪核372与本文描述的图像去噪技术合作执行遍历和相交操作,其中至少一部分可以在张量核371上执行。例如,在一个实施例中,张量核371实现了深度学习神经网络,以便对由射线追踪核372生成的帧执行去噪。然而,(一个或多个)CPU361、图形核370和/或射线追踪核372也可以实现全部或部分去噪和/或深度学习算法。
另外,如上所述,可以采用分布式方法来去噪,其中GPU 380位于计算装置中,所述计算装置通过网络或高速互连耦合到其它计算装置。在该实施例中,互连的计算装置共享神经网络学习/训练数据,以提高整个系统学习对不同类型的图像帧和/或不同图形应用执行去噪的速度。
在一个实施例中,射线追踪核372处理所有BVH遍历和射线图元相交,避免图形核370因每条射线有数千条指令而过载。在一个实施例中,每个射线追踪核372包括用于执行边界框测试(例如,用于遍历操作)的第一组专用电路和用于执行射线-三角形相交测试(例如,已遍历的相交射线)的第二组专用电路。因此,在一个实施例中,多核群组365A可以简单地启动射线探测,并且射线追踪核372独立地执行射线遍历和相交,并将命中数据(例如,命中、没有命中、多次命中等)返回到线程上下文。其它核370、371被释放来执行其它图形或计算工作,而射线追踪核372执行遍历和相交操作。
在一个实施例中,每个射线追踪核372包括用于执行BVH测试操作的遍历单元和执行射线图元相交测试的相交单元。相交单元生成“命中”、“没有命中”或“多次命中”响应,并将它提供给合适的线程。在遍历和相交操作期间,其它核(例如,图形核370和张量核371)的执行资源被释放,以执行其它形式的图形工作。
在下面描述的一个特定实施例中,使用了混合光栅化/射线追踪方法,其中工作分布在图形核370和射线追踪核372之间。
在一个实施例中,射线追踪核372(和/或其它核370、371)包括对射线追踪指令集的硬件支持,诸如微软的DirectX射线追踪(DXR),它包括DispatchRays命令以及射线生成、最近命中、任何命中和未命中着色器,它们使得能够为每个对象指派唯一的着色器和纹理集合。射线追踪核372、图形核370和张量核371可支持的另一个射线追踪平台是Vulkan1.1.85。然而,请注意,本发明的根本原理并不局限于任何特定的射线追踪ISA。
一般来说,各种核372、371、370可支持射线跟踪指令集,该指令集包括用于射线生成、最近命中、任何命中、射线-图元相交、每图元和层次边界框构造、未命中、访问和异常的指令/函数。更具体来说,一个实施例包括用于执行以下功能的射线追踪指令:
射线生成——可以为每个像素、样本或其它用户定义的工作指派来执行射线生成指令。
最近命中——可以执行最近命中指令以便在场景内定位射线与图元的最近交点。
任何命中——任何命中指令识别场景内射线和图元之间的多个相交,以便潜在地识别新的最近的交点。
相交——相交指令执行射线-图元相交测试并输出结果。
每个图元边界框构造——该指令在给定的图元或图元群组周围构建边界框(例如,当构建新的BVH或其它加速数据结构时)。
未命中——指示射线未命中场景或场景的指定区域内的所有几何体。
访问——指示射线将遍历的子体积。
异常——包括各种类型的异常处置器(例如,为各种错误条件调用)。
用于GPU与主机处理器互连的技术
图4A示出了示范性架构,其中多个GPU 410-413通过高速链路440A-440D(例如,总线、点对点互连等)以通信方式耦合到多个多核处理器405-406。在一个实施例中,取决于实现,高速链路440A-440D支持4GB/s、30GB/s、80GB/s或更高的通信吞吐量。可使用各种互连协议,包括但不限于PCIe 4.0或5.0以及NVLink 2.0。然而,本发明的基本原理不限于任何特定通信协议或吞吐量。
另外,在一个实施例中,GPU 410-413中的两个或更多个通过高速链路442A-442B互连,所述高速链路可使用与用于高速链路440A-440D的那些协议/链路相同或不同的协议/链路来实现。类似地,多核处理器405-406中的两个或更多个可通过高速链路443连接,所述高速链路443可以是以20GB/s、30GB/s、120GB/s或更高来操作的对称多处理器(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或Nano-Ram。在一个实施例中,存储器的某部分可以是易失性存储器,并且另一部分可以是非易失性存储器(例如,使用两级存储器(2LM)层级)。
如下文所述,虽然各种处理器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可包括1级(L1)和2级(L2)高速缓存。另外,一个或多个共享的高速缓存456可被包括在高速缓存层级中并且由多组核460A-460D共享。例如,处理器407的一个实施例包括24个核,其各自具有其自身的L1高速缓存、十二个共享的L2高速缓存和十二个共享的L3高速缓存。在本实施例中,L2和L3高速缓存中的一个由两个邻近的核共享。处理器407和图形加速器集成模块446与系统存储器441连接,所述系统存储器441可包括处理器存储器401-402。
通过一致性总线464经由核间通信来针对存储在各种高速缓存462A-462D、456和系统存储器441中的数据和指令而维持一致性。例如,每个高速缓存可具有与其相关联的高速缓存一致性逻辑/电路以响应于对于特定高速缓存行的检测到的读或写来通过一致性总线464进行通信。在一个实现中,通过一致性总线464来实现高速缓存监听协议,以监听高速缓存访问。高速缓存监听/一致性技术被本领域技术人员良好地理解,并且此处将不详细描述以避免使本发明的根本原理混淆。
在一个实施例中,代理电路425将图形加速模块446以通信方式耦合到一致性总线464,从而允许图形加速模块446作为核的对等物来加入高速缓存一致性协议。具体而言,接口435提供通过高速链路440(例如,PCIe总线、NVLink等)至代理电路425的连接性,并且接口437将图形加速模块446连接到高速链路440。
在一个实现中,加速器集成电路436代表图形加速模块446的多个图形处理引擎431、432、N来提供高速缓存管理、存储器访问、上下文管理和中断管理服务。图形处理引擎431、432、N可各自包括单独的图形处理单元(GPU)。备选地,图形处理引擎431、432、N可包括GPU内不同类型的图形处理引擎,诸如图形执行单元、媒体处理引擎(例如,视频编码器/解码器)、采样器和位块传送引擎。换句话说,图形加速模块可以是具有多个图形处理引擎431-432、N的GPU,或图形处理引擎431-432、N可以是集成在公共封装、线卡或芯片上的个体GPU。
在一个实施例中,加速器集成电路436包括存储器管理单元(MMU)439以用于执行各种存储器管理功能,诸如虚拟至物理存储器转化(也称为有效至真实存储器转化)和用于访问系统存储器441的存储器访问协议。MMU 439还可包括转化后备缓冲器(TLB)(未示出)以用于缓存虚拟/有效至物理/真实地址转化。在一个实现中,高速缓存438存储命令和数据以供图形处理引擎431-432、N进行高效访问。在一个实施例中,存储在高速缓存438和图形存储器433-434、M中的数据与核高速缓存462A-462D、456以及系统存储器411保持一致。如所提到,这可经由代理电路425来实现,所述代理电路425代表高速缓存438和存储器433-434、M来参与高速缓存一致性机制(例如,将更新发送到高速缓存438(与处理器高速缓存462A-462D、456上的高速缓存行的修改/访问相关),以及从高速缓存438接收更新)。
一组寄存器445存储用于由图形处理引擎431-432、N执行的线程的上下文数据,并且上下文管理电路448管理线程上下文。例如,上下文管理电路448可在上下文切换期间执行保存和恢复操作以保存和恢复各种线程的上下文(例如,其中,第一线程被保存并且第二线程被存储,使得可以由图形处理引擎来执行第二线程)。例如,在上下文切换时,上下文管理电路448可将当前寄存器值存储到存储器中指派的(例如,由上下文指针标识的)区域。然后,其可在返回到上下文时恢复所述寄存器值。在一个实施例中,中断管理电路447接收并处理从系统装置接收的中断。
在一个实现中,由MMU 439将来自图形处理引擎431的虚拟/有效地址转化成系统存储器411中的真实/物理地址。加速器集成电路436的一个实施例支持多个(例如,4、8、16个)图形加速器模块446和/或其它加速器装置。图形加速器模块446可专用于在处理器407上执行的单个应用,或可在多个应用之间共享。在一个实施例中,呈现虚拟化的图形执行环境,其中与多个应用或虚拟机(VM)共享图形处理引擎431-432、N的资源。所述资源可被细划分成“切片”,其被分配给不同的VM和/或应用,这基于与所述VM和/或应用相关联的处理要求和优先级来进行。
因此,加速器集成电路充当到对于图形加速模块446的系统的桥接器,并且提供地址转化和系统存储器高速缓存服务。另外,加速器集成电路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或Nano-Ram。
在一个实施例中,为减少高速链路440上的数据业务,使用偏置技术以确保存储在图形存储器433-434、M中的数据是将被图形处理引擎431-432、N最频繁地使用的并且优选地不被核460A-460D(至少不是频繁地)使用的数据。类似地,偏置机制试图将由核(且优选地不是图形处理引擎431-432、N)所需的数据保存在系统存储器411和所述核的高速缓存462A-462D、456内。
图4C示出了另一个实施例,其中加速器集成电路436被集成在处理器407内。在本实施例中,图形处理引擎431-432、N经由接口437和接口435(其再次可利用任何形式的总线或接口协议)通过高速链路440来直接与加速器集成电路436通信。加速器集成电路436可执行与针对于图4B所描述的那些操作相同的操作,但考虑到其与一致性总线464和高速缓存462A-462D、456的紧密接近性而潜在地处于更高的吞吐量。
一个实施例支持不同的编程模型,包括专用进程编程模型(没有图形加速模块虚拟化)和共享的编程模型(有虚拟化)。后者可包括由加速器集成电路436控制的编程模型和由图形加速模块446控制的编程模型。
在专用进程模型的一个实施例中,图形处理引擎431-432、N在单一操作系统下专用于单个应用或进程。单个应用可以将其它应用请求汇集(funnel)到图形引擎431-432、N,从而在VM/分区内提供虚拟化。
在专用进程编程模型中,可由多个VM/应用分区来共享图形处理引擎431-432、N。共享的模型要求系统管理程序来虚拟化图形处理引擎431-432、N,以允许由每个操作系统进行访问。针对无管理程序的单分区系统,图形处理引擎431-432、N由操作系统所拥有。在两种情况下,操作系统可以虚拟化图形处理引擎431-432、N以提供对每个进程或应用的访问。
针对共享的编程模型,图形加速模块446或个体图形处理引擎431-432、N使用进程句柄(process handle)来选择进程元素(process element)。在一个实施例中,进程元素存储在系统存储器441中,并且使用本文描述的有效地址至真实地址转化技术是可寻址的。进程句柄可以是在向图形处理引擎431-432、N来登记其上下文(那就是说,调用系统软件以将进程元素添加到进程元素链表)时被提供给主机进程的实现特定的值。进程句柄的较低16位可以是进程元素链表内的进程元素的偏移。
图4D示出了示范性加速器集成切片490。如本文所使用,“切片”包括加速器集成电路436的处理资源的指定部分。系统存储器441内的应用有效地址空间482存储进程元素483。在一个实施例中,响应于来自处理器407上执行的应用480的GPU调用(invocation)481来存储进程元素483。进程元素483包含对应的应用480的进程状态。包含在进程元素483中的工作描述符(WD)484可以是由应用请求的单个作业,或可包含指向作业队列的指针。在后一种情况下,WD 484是指向应用的地址空间482中的作业请求队列的指针。
图形加速模块446和/或个体图形处理引擎431-432、N可以被系统中的进程中的全部或子集共享。本发明的实施例包括用于设置进程状态并且向图形加速模块446发送WD484以在虚拟化环境中开始作业的基础设施。
在一个实现中,专用进程编程模型是实现特定的。在这个模型中,单个进程拥有图形加速模块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的段/页行走电路(walk circuitry)。中断管理电路447可处理从图形加速模块446接收的中断事件492。当执行图形操作时,由MMU 439将由图形处理引擎431-432、N所生成的有效地址493转化为真实地址。
在一个实施例中,为每个图形处理引擎431-432、N和/或图形加速模块446复制相同一组寄存器445,并且这组寄存器445可由管理程序或操作系统来初始化。这些复制的寄存器中的每个可被包括在加速器集成切片490中。表1中示出了可由管理程序来初始化的示范性寄存器。
表1-管理程序初始化的寄存器
表2中示出了可由操作系统来初始化的示范性寄存器。
表2-操作系统初始化的寄存器
1 进程和线程标识
2 有效地址(EA)上下文保存/恢复指针
3 虚拟地址(VA)加速器利用记录指针
4 虚拟地址(VA)存储段表指针
5 权限掩蔽
6 工作描述符
在一个实施例中,每个WD 484是特定于特定图形加速模块446和/或图形处理引擎431-432、N的。它包含图形处理引擎431-432、N要完成其工作所要求的全部信息,或者它可以是对其中应用已设立待完成的工作的命令队列的存储器位置的指针。
图4E示出了对于共享模型的一个实施例的附加细节。本实施例包括其中存储有进程元素列表499的管理程序真实地址空间498。管理程序真实地址空间498经由管理程序496是可访问的,所述管理程序496虚拟化用于操作系统495的图形加速模块引擎。
共享的编程模型允许来自系统中所有分区或分区子集的所有进程或进程子集使用图形加速模块446。存在两个编程模型,其中,图形加速模块446由多个进程和分区共享:时间切片共享和图形定向共享(graphics directed shared)。
在这个模型中,系统管理程序496拥有图形加速模块446,并且使其功能可用于所有操作系统495。为使图形加速模块446支持由系统管理程序496进行的虚拟化,图形加速模块446可遵守以下要求:1)应用的作业请求必须是自主的(那就是说,无需在作业之间保持状态),或图形加速模块446必须提供上下文保存和恢复机制。2)由图形加速模块446保证在指定时间量内完成应用的作业请求(包括任何转化故障),或图形加速模块446提供抢占作业的处理的能力。3)当在定向共享编程模型中操作时,必须保证图形加速模块446在进程之间的公平性。
在一个实施例中,针对共享模型,要求应用480用图形加速模块446类型、工作描述符(WD)、权限掩蔽寄存器(AMR)值和上下文保存/恢复区域指针(CSRP)来进行操作系统495系统调用。图形加速模块446类型描述了用于系统调用的靶向加速功能。图形加速模块446类型可以是系统特定的值。WD专门针对图形加速模块446被格式化,并且可以采用如下形式:图形加速模块446命令、对用户定义的结构的有效地址指针、对命令队列的有效地址指针或用于描述待由图形加速模块446完成的工作的任何其它数据结构。在一个实施例中,AMR值是待用于当前进程的AMR状态。被传递到操作系统的值类似于设定AMR的应用。如果加速器集成电路436和图形加速模块446实现不支持用户权限掩蔽覆盖寄存器(UAMOR),则在管理程序调用中传递AMR之前操作系统可将当前UAMOR值应用于AMR值。可选地,在将AMR放置到进程元素483中之前管理程序496可应用当前权限掩蔽覆盖寄存器(AMOR)值。在一个实施例中,CSRP是寄存器445之一,其包含应用的地址空间482中的区域的有效地址以用于使图形加速模块446保存和恢复上下文状态。如果不要求在作业之间保存状态或当作业被抢占时,这个指针是可选的。上下文保存/恢复区域可以是固定的(pinned)系统存储器。
在接收到系统调用时,操作系统495可验证应用480已注册并且已被给予使用图形加速模块446的权限。然后,操作系统495用表3中所示的信息来调用管理程序496。
表3–OS至管理程序调用参数
1 工作描述符(WD)
2 权限掩蔽寄存器(AMR)值(潜在地被掩蔽)
3 有效地址(EA)上下文保存/恢复区域指针(CSRP)
4 进程ID(PID)和可选线程ID(TID)
5 虚拟地址(VA)加速器利用记录指针(AURP)
6 存储段表指针(SSTP)的虚拟地址
7 逻辑中断服务号(LISN)
在接收到管理程序调用时,管理程序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 状态寄存器(SR)值
10 逻辑分区ID(LPID)
11 真实地址(RA)管理程序加速器利用记录指针
12 存储装置描述符寄存器(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中的一个或多个内的偏置/一致性管理电路494A-494E确保主机处理器(例如,405)与GPU 410-413的高速缓存之间的高速缓存一致性,并且实现指示其中应存储有某些类型的数据的物理存储器的偏置技术。虽然图4F中示出了偏置/一致性管理电路494A-494E的多个实例,但是可在一个或多个主机处理器405的MMU内和/或在加速器集成电路436内实现偏置/一致性电路。
一个实施例允许使用共享虚拟存储器(SVM)技术来访问GPU附连的存储器420-423并将其映射为系统存储器的一部分,而无需经受与完全系统高速缓存一致性相关联的典型性能缺陷。GPU附连的存储器420-423作为系统存储器被访问而无繁重的高速缓存一致性开销的能力为GPU卸载提供了有益的操作环境。这种布置允许主机处理器405软件设置操作数和访问计算结果,而没有传统I/O DMA数据拷贝的开销。此类传统拷贝涉及驱动器调用、中断和存储器映射I/O(MMIO)访问,其相对于简单的存储器访问全部都是低效的。同时,访问GPU附连的存储器420-423而无高速缓存一致性开销的能力对于被卸载的计算的执行时间可以是关键的。在具有实质流播写存储器业务的情况下,例如,高速缓存一致性开销可以显著减少由GPU 410-413所见的有效写带宽。操作数设置的效率、结果访问的效率和GPU计算的效率在确定GPU卸载的有效性中全部都起到一定作用。
在一个实现中,由偏置跟踪器数据结构来驱动GPU偏置与主机处理器偏置之间的选择。例如,可使用偏置表,其可以是每GPU附连的存储器页包括1或2个位的页粒度结构(即,以存储器页的粒度来控制)。可以在一个或多个GPU附连的存储器420-423的被偷的(stolen)存储器范围中实现偏置表,其中在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,从而指导它改变偏置状态并且针对一些转变在主机中执行高速缓存清空(flushing)操作。高速缓存清空操作对于从主机处理器405偏置转变到GPU偏置来说是需要的,但对于反向转变来说是不需要的。
在一个实施例中,通过暂时渲染由主机处理器405不可高速缓存的GPU偏置页来维持高速缓存一致性。为了访问这些页,处理器405可请求来自GPU 410的访问,其可或可不立即授予访问(取决于实现)。因此,为减少主机处理器405与GPU 410之间的通信,对于确保GPU偏置页是由GPU所要求但非被主机处理器405所要求(且反之亦然)的那些页是有利的。
图形处理流水线
图5示出根据实施例的图形处理流水线500。在一个实施例中,图形处理器可以实现所示出的图形处理流水线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。在一个实施例中,可以由通用处理器(例如,CPU)内的并行处理逻辑来执行图形处理流水线500的一个或多个部分。在一个实施例中,图形处理流水线500的一个或多个部分可以经由存储器接口528来访问芯片上存储器(例如,如图2A中的并行处理器存储器222),所述存储器接口528可以是图2A的存储器接口218的实例。
在一个实施例中,数据组装器502是收集对于表面和图元的顶点数据的处理单元。数据组装器502随后将包括顶点属性的顶点数据输出至顶点处理单元504。顶点处理单元504是可编程执行单元,其执行顶点着色器程序,如由顶点着色器程序所指定那样照亮(lighting)并变换顶点数据。顶点处理单元504读取存储在高速缓存、本地或系统存储器中的数据以供在处理顶点数据时使用,并且顶点处理单元504可被编程为将顶点数据从基于对象的坐标表示变换到世界空间坐标空间或归一化装置坐标空间。
图元组装器506的第一实例从顶点处理单元504接收顶点属性。图元组装器506按需读取存储的顶点属性,并且构建图形图元以用于由曲面细分控制处理单元508处理。图形图元包括如由各种图形处理应用编程接口(API)所支持的三角、线段、点、补片(patch)等等。
曲面细分控制处理单元508将输入顶点视为用于几何补片的控制点。控制点是从来自补片的输入表示(例如,补片的基础)变换到适合于供曲面细分评估处理单元512在表面评估中使用的表示。曲面细分控制处理单元508也可以计算对于几何补片的边缘的曲面细分因数。曲面细分因数应用于单个边缘,并且对与该边缘相关联的依赖视图的细节等级进行量化。曲面细分单元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是处理单元,其执行包括但不限于模板印刷、z测试、混合之类的光栅操作,并将像素数据作为经处理的图形数据输出以便存储在图形存储器(例如,如图2A中的并行处理器存储器222和/或如图1中的系统存储器104)中,从而显示在所述一个或多个显示装置110上,或者供(一个或多个)并行处理器112或(一个或多个)处理器102中的一个做进一步处理。在一些实施例中,将光栅操作单元526配置成压缩被写入到存储器的z或颜色数据,并且解压缩从存储器读取的z或颜色数据。
机器学习概览
可应用上文描述的架构以使用机器学习模型来执行训练和推理操作。机器学习已经成功解决了多种任务。在训练和使用机器学习算法(例如,神经网络)时出现的计算自然适合高效并行实现。因此,诸如通用图形处理单元(GPGPU)之类的并行处理器已经在深度神经网络的实际实现中起到重要作用。具有单指令多线程(SIMT)架构的并行图形处理器设计成使图形流水线中的并行处理量最大化。在SIMT架构中,并行线程的群组尝试尽可能经常地一起同步执行程序指令来提高处理效率。并行机器学习算法实现所提供的效率允许使用高容量网络并且使得那些网络能够在更大的数据集上得到训练。
机器学习算法是可以基于数据集学习的算法。机器学习算法的实施例可以设计成对数据集内的高级抽象建模。例如,图像识别算法可以用于确定给定输入属于若干类别中的哪一个;给定输入的话,回归(regression)算法可以输出数值;并且模式识别算法可以用于生成经转换的文本或执行文本到语音和/或语音识别。
示范性类型的机器学习算法是神经网络。有许多类型的神经网络;简单类型的神经网络是前馈网络。前馈网络可以实现为其中节点用层布置的非循环图(acyclic graph)。通常,前馈网络拓扑包括被至少一个隐藏层分开的输入层和输出层。隐藏层将输入层接收的输入变换为对在输出层中生成输出有用的表示。网络节点经由到相邻层中的节点的边缘而完全连接,但在每个层内的节点之间没有边缘。在前馈网络的输入层的节点处接收的数据经由激活函数被传播(即,“前馈(fed forward)”)到输出层的节点,该激活函数基于分别与连接层的边缘中的每个相关联的系数(“权重”)计算网络中每个连续层的节点的状态。根据由被执行的算法所表示的特定模型,来自神经网络算法的输出可以采取各种形式。
在机器学习算法可以用于对特定问题建模之前,使用训练数据集来训练算法。训练神经网络涉及选择网络拓扑、使用表示正被网络建模的问题的训练数据的集以及调整权重直到网络模型以最小误差对训练数据集的所有实例执行。例如,在对于神经网络的受监督学习训练过程期间,网络响应于表示训练数据集中的实例而产生的输出与对该实例的“正确的”经标记输出比较,计算表示输出与经标记输出之间的差异的误差信号,并且调整与连接相关联的权重以在误差信号通过网络层向后传播时使该误差最小化。在对于从训练数据集的实例生成的输出中的每个的误差被最小化时,网络被认为“经过训练(trained)”。
机器学习算法的精度可以明显受到用于训练算法的数据集的质量的影响。训练过程可以是计算密集的并且在常规的通用处理器上可能需要大量时间。因此,并行处理硬件用于训练许多类型的机器学习算法。这对于优化神经网络的训练特别有用,这是因为在调整神经网络中的系数中执行的计算使得它们很自然地有助于并行实现。具体地,许多机器学习算法和软件应用已适合于利用通用图形处理装置内的并行处理硬件。
图6是机器学习软件栈600的通用图。机器学习应用602可以配置成使用训练数据集来训练神经网络或使用经训练的深度神经网络来实现机器智能。机器学习应用602可以包括用于神经网络的训练和推理功能性和/或可以用于在部署之前训练神经网络的专用软件。机器学习应用602可以实现任何类型的机器智能,其包括但不限于图像识别、测绘(mapping)和定位(localization)、自主导航、语音合成、医学成像或语言翻译。
用于机器学习应用602的硬件加速可以经由机器学习框架604而启用。机器学习框架604可以提供机器学习图元库。机器学习图元是机器学习算法普遍执行的基本操作。在没有机器学习框架604的情况下,将需要机器学习算法的开发人员创建和优化与机器学习算法相关联的主计算逻辑,然后在开发新的并行处理器时重新优化计算逻辑。取而代之,机器学习应用可以配置成使用机器学习框架604提供的图元来执行必要的计算。示范性图元包括张量卷积、激活函数和池化(pooling),它们是在训练卷积神经网络(CNN)时执行的计算操作。机器学习框架604还可以提供图元来实现由许多机器学习算法执行的基本线性代数子程序,例如矩阵和向量运算。
机器学习框架604可以处理从机器学习应用602接收的输入数据并且生成到计算框架606的合适的输入。计算框架606可以抽取提供给GPGPU驱动器608的底层指令以使机器学习框架604能够经由GPGPU硬件610利用硬件加速而不需要机器学习框架604深入了解GPGPU硬件610的架构。另外,计算框架606可以对机器学习框架604实现跨各种类型的和各代GPGPU硬件610的硬件加速。
GPGPU机器学习加速
图7示出根据实施例的通用图形处理单元700。在一个实施例中,通用处理单元(GPGPU)700可以配置成在处理与训练深度神经网络相关联的那类计算工作负荷时特别高效。另外,GPGPU 700可以直接链接到GPGPU的其它实例来创建多GPU集群以针对特定深度神经网络提高训练速度。
GPGPU 700包括主机接口702,用于实现与主机处理器的连接。在一个实施例中,主机接口702是快速PCI接口。然而,主机接口还可以是供应商特定通信接口或通信组构。GPGPU 700从主机处理器接收命令并且使用全局调度器704将与那些命令相关联的执行线程分布到一组计算集群706A-706H。计算集群706A-706H共享高速缓存存储器708。高速缓存存储器708可以对于计算集群706A-706H内的高速缓存存储器充当较高级高速缓存。
GPGPU 700包括经由存储器控制器712A-712B的集合而与计算集群706A-H耦合的存储器714A-B。在各种实施例中,存储器714A-714B可以包括各种类型的存储器装置,其包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如同步图形随机存取存储器(SGRAM),其包括图形双数据速率(GDDR)存储器。在一个实施例中,存储器单元714A-714N还可以包括3D堆叠存储器,其包括但不限于高带宽存储器(HBM)。
在一个实施例中,每个计算集群706A-706H包括一组图形多处理器,例如图4A的图形多处理器400。计算集群的图形多处理器包括多种类型的整数和浮点逻辑单元,其可以在包括适合于机器学习计算的一定精度范围执行计算操作。例如,并且在一个实施例中,至少计算集群706A-H中的每个中的浮点单元的子集可以配置成执行16位或32位浮点运算,而浮点单元的不同子集可以配置成执行64位浮点运算。
GPGPU 700的多个实例可以配置成作为计算集群操作。该计算集群用于同步和数据交换的通信机制因实施例而变化。在一个实施例中,GPGPU 700的多个实例通过主机接口702通信。在一个实施例中,GPGPU 700包括I/O集线器709,其将GPGPU 700与GPU链路710耦合,该GPU链路710实现到GPGPU的其它实例的直接连接。在一个实施例中,GPU链路710耦合到专用GPU到GPU网桥,其实现GPGPU 700的多个实例之间的通信和同步。在一个实施例中,GPU链路710与高速互连耦合以向其它GPGPU或并行处理器传送数据和接收数据。在一个实施例中,GPGPU 700的多个实例位于独立数据处理系统中并且经由网络装置通信,该网络装置经由主机接口702而可访问。在一个实施例中,除主机接口702外或作为主机接口702的备选,GPU链路710可以配置成启用与主机处理器的连接。
尽管示出的GPGPU 700的配置可以配置成训练神经网络,但一个实施例提供可以为在高性能或低功率推理平台内部署而配置的GPGPU 700的备选配置。在推理配置中,相对于训练配置,GPGPU 700包括更少的计算集群706A-706H。另外,与存储器714A-714B相关联的存储器技术在推理和训练配置之间可以不同。在一个实施例中,GPGPU 700的推理配置可以支持推理特定的指令。例如,推理配置可为通常在对于部署的神经网络的推理操作期间使用的一个或多个8位整数点积指令提供支持。
图8示出根据实施例的多GPU计算系统800。该多GPU计算系统800可以包括处理器802,其经由主机接口开关804耦合到多个GPGPU 806A-806D。在一个实施例中,主机接口开关804是快速PCI开关装置,其将处理器802耦合到快速PCI总线,处理器802通过该快速PCI总线可以与一组GPGPU 806A-806D通信。多个GPGPU 806A-806D中的每个可以是图7的GPGPU700的实例。GPGPU 806A-806D可以经由一组高速点到点GPU到GPU链路816互连。高速GPU到GPU链路可以经由专用GPU链路(诸如图7中的GPU链路710)而连接到GPGPU 806A-806D中的每个。P2P GPU链路816在GPGPU 806A-806D中的每个之间实现直接通信而不需要在处理器802被连接到其的主机接口总线上通信。利用被引导到P2P GPU链路的GPU到GPU业务,主机接口总线仍然可用于系统存储器访问或者例如经由一个或多个网络装置与多GPU计算系统800的其它实例通信。虽然在所示出的实施例中,GPGPU 806A-D经由主机接口开关804连接到处理器802,但在一个实施例中,处理器802包括对P2P GPU链路816的直接支持并且可以直接连接到GPGPU 806A-806D。
机器学习神经网络实现由本文描述的实施例提供的计算架构可以配置成执行特别适合于训练和部署神经网络以用于机器学习的那类并行处理。神经网络可以归纳为具有图关系(graph relationship)的功能的网络。如在本领域内众所周知的,有多种类型的神经网络实现在机器学习中使用。一个示范性类型的神经网络是前馈网络,如之前描述的那样。
第二个示范性类型的神经网络是卷积神经网络(CNN)。CNN是用于处理具有已知的网格状拓扑的数据(诸如图像数据)的专门前馈神经网络。因此,CNN通常用于计算视觉和图像识别应用,但它们也可以用于其它类型的模式识别,例如语音和语言处理。CNN输入层中的节点被组织成一组“滤波器”(受在视网膜中发现的接受域启发的特征检测器),并且每组滤波器的输出被传播到网络的连续层中的节点。对于CNN的计算包括对每个滤波器应用卷积数学运算来产生该滤波器的输出。卷积是由两个函数执行以产生第三函数的一种专门的数学运算,该第三函数是该两个原始函数中的一个的修改后的版本。在卷积网络术语中,到卷积的第一函数可以称为输入,而第二函数可以称为卷积内核。输出可以称为特征图。例如,到卷积层的输入可以是定义输入图像的各种颜色分量的多维阵列的数据。卷积内核可以是多维阵列的参数,其中这些参数由训练过程为神经网络而适配。
递归神经网络(RNN)是前馈神经网络系列,其包括层之间的反馈连接。RNN通过跨神经网络的不同部分共享参数数据而启用对顺序(sequential)数据建模。RNN的架构包括循环。循环代表变量的当前值在未来时间对它自身的值的影响,这是因为来自RNN的输出数据的至少一部分被用作反馈以用于处理序列中的后续输入。该特征由于可以在其中组成语言数据的变量性质而使得RNN对于语言处理特别有用。
下文描述的图呈现示范性前馈、CNN和RNN网络,以及描述用于分别训练和部署那些类型的网络中的每个的通用过程。将理解这些描述关于本文描述的任何特定实施例是示范性且非限制性的并且所示出的概念一般可以应用于深度神经网络和一般的机器学习技术。
上文描述的示范性神经网络可以用于执行深度学习。深度学习是使用深度神经网络的机器学习。在深度学习中使用的深度神经网络是由多个隐藏层组成的人工神经网络,这与只包括单个隐藏层的浅层神经网络相对。更深层神经网络通常在计算上更密集来训练。然而,网络的额外隐藏层实现多步模式识别,其相对于浅机器学习技术导致输出误差减少。
在深度学习中使用的深度神经网络通常包括耦合到后端网络的前端网络,用于执行特征识别,该后端网络表示可以基于提供给模型的特征表示来执行操作(例如,对象分类、语音识别等)的数学模型。深度学习使机器学习能够被执行而不需要对模型执行手工特征工程化。取而代之,深度神经网络可以基于输入数据内的统计结构或相关性来学习特征。习得的特征可以提供给数学模型,其可以将所检测的特征映射到输出。网络使用的数学模型一般专门针对待执行的特定任务,并且不同的模型将用于执行不同任务。
一旦神经网络被构造,则学习模型可以应用于网络来训练网络以执行特定任务。学习模型描述了如何调整模型内的权重来减少网络的输出误差。误差后向传播是用于训练神经网络的常见方法。向网络呈现输入向量以用于处理。使用损耗函数将网络的输出与期望输出比较并且对输出层中的神经元中的每个计算误差值。然后,误差值被向后传播直到每个神经元具有相关联的误差值,其大致表示它对原始输出的贡献。然后,网络可以使用算法(诸如随机梯度下降算法)从那些误差中学习,以更新神经网络的权重。
图9A-9B示出示范性卷积神经网络。图9A示出CNN内的各种层。如在图9A中示出的,用于对图像处理建模的示范性CNN可以接收输入902,其描述输入图像的红、绿和蓝(RGB)分量。输入902可以被多个卷积层(例如,卷积层904、卷积层906)处理。来自多个卷积层的输出可以可选地被一组完全连接层908处理。完全连接层中的神经元具有到之前的层中的所有激活的完全连接,如之前针对前馈网络描述的那样。来自完全连接层908的输出可以用于从网络生成输出结果。完全连接层908内的激活可以使用矩阵乘法而不是卷积来计算。不是所有的CNN实现都利用完全连接层908。例如,在一些实现中,卷积层906能够为CNN生成输出。
卷积层稀疏连接,这与在完全连接层908中发现的传统神经网络配置不同。传统神经网络层完全连接,使得每个输出单元与每个输入单元交互。然而,如示出的,因为场的卷积的输出是到后续层的节点的输入(而不是场中的节点中的每个节点的相应状态值),所以卷积层稀疏连接。与卷积层相关联的内核执行卷积运算,其输出被发送给下一个层。在卷积层内执行的降维是使CNN能够放缩以处理大的图像的一个方面。
图9B示出CNN的卷积层内的示范性计算级。到CNN的卷积层912的输入可以在卷积层914的三个级中被处理。这三个级可以包括卷积级916、检测器级918和池化级920。然后,卷积层914可以向连续卷积层输出数据。网络的最后的卷积层可以生成输出特征图数据或向完全连接层提供输入,例如以对到CNN的输入生成分类值。
在卷积级916中,并行执行若干卷积以产生一组线性激活。卷积级916可以包括仿射变换,其是可以规定作为线性变换加平移的任何变换。仿射变换包括这些变换的旋转、平移、缩放和组合。卷积级计算连接到输入中的特定区域的功能(例如,神经元)的输出,该特定区域可以被确定作为与神经元相关联的局部区域。神经元计算神经元的权重与神经元连接到其的局部输入中的区域之间的点积。来自卷积级916的输出定义被卷积层914的连续级所处理的一组线性激活。
线性激活可以被检测器级918处理。在检测器级918中,每个线性激活被非线性激活函数处理。该非线性激活函数使整体网络的非线性性质增加而不影响卷积层的相应场。可以使用若干类型的非线性激活函数。一个特定类型是整流线性单元(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变型是长短期记忆(LSTM)RNN。LSTM RNN能够学习长期依赖性,其对于处理较长语言序列是必要的。关于CNN的变型是卷积深度信任网络,其具有与CNN相似的结构并且采用与深度信任网络相似的方式来训练。深度信任网络(DBN)是生成式神经网络,其由多层的概率性(随机)变量组成。DBN可以使用贪婪的无监督学习而逐层训练。然后,DBN的习得权重可以用于通过对神经网络确定权重的最佳初始集合而提供预先训练神经网络。
图11示出深度神经网络的训练和部署。一旦已经为任务构造给定网络,就使用训练数据集1102来训练神经网络。已开发各种训练框架1104来启用训练过程的硬件加速。例如,图6的机器学习框架604可以配置为训练框架604。训练框架604可以钩入(hook into)未经训练的神经网络1106并且使该未经训练的神经网能够使用本文描述的并行处理资源来训练以生成经训练的神经网1108。
为了开始训练过程,可以随机或通过使用深度信任网络的预先训练来选择初始权重。然后,采用受监督或无监督方式执行训练循环。
受监督学习是其中训练作为介导(mediated)操作而执行的学习方法,诸如当训练数据集1102包括与输入的期望输出配对的输入时,或在训练数据集包括具有已知输出的输入并且神经网络的输出被人工分级的情况下。网络处理输入并且将所得的输出与一组预期或期望输出相比较。然后,误差通过系统被向后传播。训练框架1104可以调整成调整控制未经训练的神经网络1106的权重。训练框架1104可以提供工具来监测未经训练的神经网络1106在多大程度上向适合于基于已知输入数据生成正确应答的模型收敛。随着调整网络的权重来改善神经网络生成的输出,训练过程反复出现。训练过程可以持续直到神经网络达到与经训练的神经网1108相关联的统计上期望的精确度。然后,可以部署经训练的神经网络1108来实现任何数量的机器学习操作,以基于新数据1112的输入生成推理结果1114。
无监督学习是其中网络尝试使用未标记的数据来训练它自己的学习方法。从而,对于无监督学习,训练数据集1102将包括输入数据而没有任何相关联的输出数据。未经训练的神经网络1106可以学习未标记的输入内的分组并且可以确定个体输入如何与整体数据集相关。无监督训练可以用于生成自组织图,其是能够执行在数据的降维方面有用的操作的一类经训练的神经网络1108。无监督训练还可以用于执行异常检测,其允许标识输入数据集中偏离数据的正常模式的数据点。
还可以采用关于受监督和无监督训练的变化。半监督学习是其中训练数据集1102包括相同分布的标记和无标记数据的混合的技术。递增式学习是其中输入数据被持续用于进一步训练模型的受监督学习的变型。递增式学习使经训练的神经网络1108能够适合于新的数据1112而没有忘记初始训练期间网络内灌输的知识。
无论是受监督还是无监督,对于特别是深度神经网络的训练过程对于单个计算节点在计算上可能太密集。代替使用单个计算节点,计算节点的分布式网络可以用于加速训练过程。
图12是示出分布式学习的框图。分布式学习是使用多个分布式计算节点来执行神经网络的受监督或无监督训练的训练模型。分布式计算节点可以各自包括一个或多个主机处理器以及通用处理节点中的一个或多个,诸如,如图7中的高度并行通用图形处理单元700。如示出的,分布式学习可以是所执行的模型并行结构1202、数据并行结构1204或模型和数据并行结构1204的组合。
在模型并行结构1202中,分布式系统中的不同计算节点可以对单个网络的不同部分执行训练计算。例如,神经网络的每个层可以由分布式系统的不同处理节点训练。模型并行结构的益处包括缩放到尤其大模型的能力。拆分与神经网络的不同层相关联的计算启用了其中所有层的权重将不适合单个计算节点的存储器的这一非常大的神经网络的训练。在一些实例中,模型并行结构在执行大的神经网络的无监督训练中可以特别有用。
在数据并行结构1204中,分布式网络的不同节点具有模型的完整实例并且每个节点接收数据的不同部分。然后,来自不同节点的结果组合。虽然不同的方法对于数据并行结构是可能的,但数据并行训练方法全部需要将结果组合并且使每个节点之间的模型参数同步的技术。组合数据的示范性方法包括参数平均和基于更新的数据并行结构。参数平均训练了训练数据子集上的每个节点并且将全局参数(例如,权重、偏置)设置成来自每个节点的参数的平均值。参数平均使用中央参数服务器,其维持参数数据。基于更新的数据并行结构与参数平均相似,不同之处在于对模型的更新被传输,而不是将来自节点的参数传输到参数服务器。另外,基于更新的数据并行结构可以采用分散方式执行,其中更新被压缩并且在节点之间传输。
组合模型和数据并行结构1206可以例如在其中每个计算节点包括多个GPU的分布式系统中实现。每个节点可以具有模型的完整实例,其中每个节点内的独立GPU用于训练模型的不同部分。
分布式训练相对于在单个机器上的训练具有增加的开销。然而,本文描述的并行处理器和GPGPU可以各自实现各种技术来减少分布式训练的开销,这些技术包括实现高带宽GPU到GPU数据传输和加速远程数据同步的技术。
示范性机器学习应用
机器学习可以应用于解决各种技术问题,其包括但不限于计算机视觉、自主驾驶和导航、语音识别和语言处理。在传统上,计算机视觉已经是机器学习应用的最活跃研究领域之一。计算机视觉的应用范围从再现人类视觉能力(例如识别面部)到创建视觉能力的新类别而变化。例如,计算机视觉应用可以配置成从视频中可见的对象中引发的振动中识别声波。并行处理器加速机器学习使计算机视觉应用能够使用比之前可行的明显更大的训练数据集来训练并且使推理系统能够使用低功率并行处理器来部署。
并行处理器加速机器学习具有自主驾驶应用,其包括车道和道路标志识别、障碍避免、导航和驾驶控制。加速机器学习技术可以用于基于定义对特定训练输入的合适的响应的数据集来训练驾驶模型。本文描述的并行处理器可以对用于自主驾驶技术方案的日益复杂的神经网络实现快速训练并且在适合于集成到自主车辆内的移动平台中启用低功率推理处理器的部署。
并行处理器加速深度神经网络对自动语音识别(ASR)启用机器学习方法。ASR包括创建这样的函数,即:给定输入声序列,计算最可能的语言序列。使用深度神经网络的加速机器学习已经实现了对之前用于ASR的隐藏马尔可夫模型(HMM)和高斯混合模型(GMM)的替换。
并行处理器加速机器学习还可以用于加速自然语言处理。自动学习规程可以利用统计推理算法来产生对错误或不熟悉输入具有鲁棒性的模型。示范性自然语言处理器应用包括人类语言之间的自动机器翻译。
用于机器学习的并行处理平台可以分成训练平台和部署平台。训练平台一般是高度并行的并且包括优化,以加速多GPU单节点训练和多节点多GPU训练。适合于训练的示范性并行处理器包括图7的通用图形处理单元700和图8的多GPU计算系统800。相反,所部署的机器学习平台一般包括适合于用在诸如照相机、自主机器人和自主车辆之类的产品的较低功率并行处理器。
图13示出适合于使用经训练的模型来执行推理的示范性推理片上系统(SOC)1300。SOC 1300可以集成处理组件,其包括媒体处理器1302、视觉处理器1304、GPGPU 1306和多核处理器1308。SOC 1300可以另外包括片上存储器1305,其可以实现处理组件中的每个可访问的共享片上数据池。处理组件可以对低功率操作优化以实现到各种机器学习平台的部署,其包括自主车辆和自主机器人。例如,SOC 1300的一个实现可以用作自主车辆的主控制系统的一部分。在SOC 1300配置成供自主车辆使用的情况下,SOC设计且配置成遵从部署管辖的相关功能安全标准。
在操作期间,媒体处理器1302和视觉处理器1304可以一起(in concert)工作来加速计算机视觉操作。媒体处理器1302可以实现多个高分辨率(例如,4K、8K)视频流的低时延解码。经解码的视频流可以写入片上存储器1305中的缓冲器。然后,视觉处理器1304可以对经解码的视频解析并且在准备使用经训练的图像识别模型处理帧时对经解码的视频的帧执行初步处理操作。例如,视觉处理器1304可以针对用于在高分辨率视频数据上执行图像识别的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至图26的图形处理系统和装置说明了可以实现上文描述的任何和所有技术的备选系统和图形处理硬件。
图14是根据实施例的处理系统1400的框图。系统1400可用于单处理器桌上型系统、多处理器工作站系统或具有大量的处理器1402或处理器核1407的服务器系统。在一个实施例中,系统1400是合并在片上系统(SoC)集成电路内的处理平台以供诸如具有到局域网或广域网的有线或无线连接的物联网(IoT)装置内的移动装置、手持装置或嵌入式装置使用。
在一个实施例中,系统1400可以包括以下各项、与以下各项耦合或被集成在以下各项内:基于服务器的游戏平台;游戏控制台,包括游戏和媒体控制台;移动游戏控制台、手持式游戏控制台或在线游戏控制台。在一些实施例中,系统1400是移动电话、智能电话、平板计算装置或移动因特网连接的装置(诸如具有低内部存储能力的膝上型装置)的部分。处理系统1400还可以包括以下各项、与以下各项耦合或被集成在以下各项内:可穿戴式装置,诸如智能手表可穿戴式装置;智能眼镜(eyewear)或服装,其通过增强现实(AR)或虚拟现实(VR)特征增强,以提供视觉、听觉或触觉输出来补充现实世界视觉、听觉或触觉体验,或以其它方式提供文本、音频、图形、视频、全息图像或视频、或触觉反馈;其它增强现实(AR)装置;或其它虚拟现实(VR)装置。在一些实施例中,处理系统1400包括或者是电视或机顶盒装置的部分。
在一些实施例中,系统1400可以包括以下各项、与以下各项耦合或被集成在以下各项内:自动驾驶车辆,诸如公共汽车、拖拉机挂车、汽车、摩托车或电动单车、飞机或滑翔机(或其任何组合)。自动驾驶车辆可使用系统1400来处理在车辆周围感应的环境。
在一些实施例中,一个或多个处理器1402各自包括用于处理指令的一个或多个处理器核1407,所述指令在被执行时执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核1407中的至少一个配置成处理特定指令集1409。在一些实施例中,指令集1409可以促进复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW)的计算。一个或多个处理器核1407可以处理不同的指令集1409,所述指令集可以包括用于促进对其它指令集进行仿真的指令。处理器核1407还可包括其它处理装置,诸如数字信号处理器(DSP)。
在一些实施例中,处理器1402包括高速缓存存储器1404。取决于架构,处理器1402可以具有单个内部高速缓存或多级内部高速缓存。在一些实施例中,在处理器1402的各种组件之间共享高速缓存存储器。在一些实施例中,处理器1402还使用外部高速缓存(例如,3级(L3)高速缓存或末级高速缓存(LLC))(未示出),其可使用已知的高速缓存一致性技术在处理器核1407之间被共享。寄存器堆1406被另外包括在处理器1402中,并且可包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其它寄存器可以是特定于处理器1402的设计。
在一些实施例中,一个或多个处理器1402与一个或多个接口总线1410耦合以在处理器1402与系统1400中的其它组件之间传送通信信号(诸如,地址、数据或控制信号)。在一个实施例中,接口总线1410可以是处理器总线,诸如直接媒体接口(DMI)总线的版本。然而,处理器总线不限于DMI总线,而是可以包括一个或多个外设组件互连总线(例如,PCI、快速PCI)、存储器总线或其它类型的接口总线。在一个实施例中,(一个或多个)处理器1402包括集成式存储器控制器1416和平台控制器集线器1430。存储器控制器1416促进存储器装置与系统1400的其它组件之间的通信,而平台控制器集线器(ICH)1430提供经由本地I/O总线到I/O装置的连接。
存储器装置1420可以是动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪速存储器装置、相变存储器装置或具有合适的性能以充当进程存储器的一些其它存储器装置。在一个实施例中,存储器装置1420可以作为用于系统1400的系统存储器操作以存储数据1422和指令1421,以供当所述一个或多个处理器1402执行应用或过程时使用。存储器控制器1416也与可选的外部图形处理器1418耦合,所述外部图形处理器可与处理器1402中的一个或多个图形处理器1408通信,以执行图形和媒体操作。在一些实施例中,可以通过加速器1412来协助图形、媒体和计算操作,该加速器1412是可以配置成执行图形、媒体或计算操作的专门集合的协处理器。例如,在一个实施例中,加速器1412是用于优化机器学习或计算操作的矩阵乘法加速器。在一个实施例中,加速器1412是可以用于与图形处理器1408一起执行射线追踪操作的射线追踪加速器。在一些实施例中,显示装置1411可以连接到(一个或多个)处理器1402。显示装置1411可以是内部显示装置(如同在移动电子装置或膝上型装置中一样)或经由显示接口(例如,DisplayPort等)附连的外部显示装置中的一个或多个。在一个实施例中,显示装置1411可以是头戴式显示器(HMD),例如用于虚拟现实(VR)应用或增强现实(AR)应用的立体显示装置。
在一些实施例中,平台控制器集线器1430使外设能够经由高速I/O总线连接到存储器装置1420和处理器1402。I/O外设包含但不限于:音频控制器1446、网络控制器1434、固件接口1428、无线收发器1426、触摸传感器1425、数据存储装置1424(例如,非易失性存储器、易失性存储器、硬盘驱动器、闪速存储器、NAND、3D NAND、3D XPoint等)。数据存储装置1424可经由存储设备接口(例如,SATA)或经由诸如外设组件互连总线(例如,PCI、快速PCI)的外设总线连接。触摸传感器1425可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发器1426可以是Wi-Fi收发器、蓝牙收发器、或诸如3G、4G、5G或长期演进(LTE)收发器之类的移动网络收发器。固件接口1428实现与系统固件的通信,并且可以是例如统一的可扩展固件接口(UEFI)。网络控制器1434可以使能到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线1410耦合。在一个实施例中,音频控制器1446是多通道高清音频控制器。在一个实施例中,系统1400包括用于将传统(例如,个人系统2(PS/2))装置耦合到系统的可选的传统I/O控制器1440。平台控制器集线器1430还可以连接到一个或多个通用串行总线(USB)控制器1442连接输入装置,诸如键盘和鼠标1443组合、照相机1444或其它USB输入装置。
将认识到,所示出的系统1400是示范性的而非限制性的,因为还可以使用以不同方式配置的其它类型的数据处理系统。例如,存储器控制器1416和平台控制器集线器1430的实例可以集成到分立式外部图形处理器(诸如外部图形处理器1418)中。在一个实施例中,平台控制器集线器1430和/或存储器控制器1416可以位于一个或多个处理器1402的外部。例如,系统1400可以包括外部存储器控制器1416和平台控制器集线器1430,它们可以配置为与(一个或多个)处理器1402通信的系统芯片集中的存储器控制器集线器和平台控制器集线器。
例如,电路板(“雪橇(sled)”)可以用来放置诸如CPU、存储器和其它组件之类的组件,所述电路板是为了提高热性能而设计的。在一些示例中,诸如处理器之类的处理组件位于雪橇的顶部上,而诸如DIMM之类的附近存储器则位于雪橇的底部上。作为由这种设计提供的增强气流的结果,组件可以比典型系统中更高的频率和功率电平操作,从而提高性能。此外,雪橇配置成盲目地与机架中的电源和数据通信电缆配合,从而增强它们快速拆卸、升级、重新安装和/或更换的能力。类似地,位于雪橇上的单个组件(诸如处理器、加速器、存储器和数据存储驱动器)由于它们彼此之间增加的间距而配置成易于升级。在说明性实施例中,组件额外包括硬件认证特征以证明它们的真实性。
数据中心可以利用单个网络架构(“组构”),所述单个网络架构支持多个其它网络架构,包括以太网和Omni-Path。雪橇可以经由光纤耦合到交换机,这提供比典型的双绞线电缆布线(例如,类别5、类别5e、类别6等)更高的带宽和更低的时延。由于高带宽、低时延互连和网络架构,数据中心可在使用中池化资源,诸如存储器、加速器(例如,GPU、图形加速器、FPGA、ASIC、神经网络和/或人工智能加速器等)和物理地分解的数据存储驱动器,并根据需要将它们提供给计算资源(例如,处理器),以使计算资源能够像访问本地资源一样访问池化的资源。
电源供应器或电源可以为系统1400或本文描述的任何组件或系统提供电压和/或电流。在一个示例中,电源供应器包括插入到墙上插座的AC到DC(交流电到直流电)适配器。此类AC功率可以是可再生能源(例如,太阳能)电源。在一个示例中,电源包括DC电源,诸如外部AC到DC转换器。在一个示例中,电源或电源供应器包括经由接近充电场充电的无线充电硬件。在一个示例中,电源可以包括内部电池、交流电源供应器、基于运动的电源供应器、太阳能电源供应器或燃料电池电源。
图15是处理器1500的实施例的框图,所述处理器具有一个或多个处理器核1502A-1502N、集成式存储器控制器1514和集成式图形处理器1508。图15中具有与本文任何其它图的元件相同的参考数字(或名称)的那些元件能够以与本文在其它地方描述的方式类似的任何方式来操作或运作,但并不限于此。处理器1500可包括多达且包括由虚线框表示的附加核1502N的附加核。处理器核1502A-1502N中的每个都包括一个或多个内部高速缓存单元1504A-1504N。在一些实施例中,每个处理器核还有权访问一个或多个共享高速缓存单元1506。
内部高速缓存单元1504A-1504N和共享高速缓存单元1506表示处理器1500内的高速缓存存储器层级。高速缓存存储器层级可包括每个处理器核内的至少一级指令和数据高速缓存以及一个或多个级别的共享中间级高速缓存,诸如,2级(L2)、3级(L3)、4级(L4)或其它级高速缓存,其中,在外部存储器前面的最高级别高速缓存被归类为LLC。在一些实施例中,高速缓存一致性逻辑保持各种高速缓存单元1506和1504A-1504N之间的一致性。
在一些实施例中,处理器1500还可包括一组一个或多个总线控制器单元1516以及系统代理核1510。所述一个或多个总线控制器单元1516管理一组外设总线,诸如一个或多个PCI或快速PCI总线。系统代理核1510提供对各种处理器组件的管理功能性。在一些实施例中,系统代理核1510包括一个或多个集成式存储器控制器1514以管理对各种外部存储器装置(未示出)的访问。
在一些实施例中,处理器核1502A-1502N中的一个或多个包括对同时多线程的支持。在这样的实施例中,系统代理核1510包括用于在多线程处理期间协调和操作核1502A-1502N的组件。系统代理核1510可另外包括功率控制单元(PCU),所述PCU包括用于调节处理器核1502A-1502N和图形处理器1508的功率状态的逻辑和组件。
在一些实施例中,处理器1500另外包括用于执行图形处理操作的图形处理器1508。在一些实施例中,图形处理器1508与一组共享高速缓存单元1506和系统代理核1510(包括一个或多个集成式存储器控制器1514)耦合。在一些实施例中,系统代理核1510还包括显示控制器1511以将图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器1511也可以是经由至少一个互连与图形处理器耦合的单独模块,或者可以集成在图形处理器1508内。
在一些实施例中,使用基于环的互连单元1512来耦合处理器1500的内部组件。然而,可以使用备选互连单元,诸如点到点互连、切换式互连、或其它技术,包括本领域众所周知的技术。在一些实施例中,图形处理器1508经由I/O链路1513与环互连1512耦合。
示范性I/O链路1513表示多种I/O互连中的至少一种,包括促进各种处理器组件与高性能嵌入式存储器模块1518(诸如eDRAM模块)之间的通信的封装上(on-package)I/O互连。在一些实施例中,处理器核1502A-1502N中的每个和图形处理器1508可以将嵌入式存储器模块1518用作共享末级高速缓存。
在一些实施例中,处理器核1502A-1502N是执行相同的指令集架构的同质核。在另一个实施例中,处理器核1502A-1502N在指令集架构(ISA)方面是异质的,其中,处理器核1502A-1502N中的一个或多个执行第一指令集,而其它核中的至少一个执行第一指令集的子集或不同指令集。在一个实施例中,处理器核1502A-1502N在微架构方面是异质的,其中,具有相对较高功耗的一个或多个核与具有较低功耗的一个或多个功率核耦合。在一个实施例中,处理器核1502A-1502N在计算能力方面是异质的。另外,处理器1500可以实现在一个或多个芯片上或者被实现为具有除其它组件之外的所示组件的SoC集成电路。
图16是图形处理器1600的框图,所述图形处理器可以是分立式图形处理单元,或可以是与多个处理核或其它半导体器件(诸如但不限于存储器装置或网络接口)集成的图形处理器。在一些实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射I/O接口并且利用被放置在处理器存储器中的命令进行通信。在一些实施例中,图形处理器1600包括用于访问存储器的存储器接口1614。存储器接口1614可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存、和/或到系统存储器的接口。
在一些实施例中,图形处理器1600还包括用于将显示输出数据驱动到显示装置1618的显示控制器1602。显示控制器1602包括多层视频或用户界面元件的组成以及用于显示器的一个或多个重叠平面的硬件。显示装置1618可以是内部或外部显示装置。在一个实施例中,显示装置1618是头戴式显示装置,诸如虚拟现实(VR)显示装置或增强现实(AR)显示装置。在一些实施例中,图形处理器1600包括用于向、从一个或多个媒体编码格式或在这些格式之间对媒体进行编码、解码、或者转码的视频编解码器引擎1606,这些格式包括但不限于:移动图像专家组(MPEG)格式(诸如MPEG-2)、高级视频编码(AVC)格式(诸如H.265/MPEG-4AVC、H.265/HEVC、开放媒体联盟(AOMedia)VP8、VP9)、以及电影和电视工程师协会(SMPTE)421M/VC-1、和联合图像专家组(JPEG)格式,诸如JPEG、以及运动JPEG(MJPEG)格式。
在一些实施例中,图形处理器1600包括用于执行二维(2D)光栅化器操作的块图像传输(BLIT)引擎1604,所述2D光栅化器操作包括例如位边界块传输。然而,在一个实施例中,使用图形处理引擎(GPE)1610的一个或多个组件执行2D图形操作。在一些实施例中,GPE1610是用于执行图形操作的计算引擎,所述图形操作包括三维(3D)图形操作和媒体操作。
在一些实施例中,GPE 1610包括用于执行3D操作的3D流水线1612,诸如使用作用于3D图元形状(例如矩形、三角形等)的处理功能来渲染三维图像和场景。3D流水线1612包含可编程和固定功能元件,这些元件执行元件内的各种任务和/或向3D/媒体子系统1615生成执行线程。虽然3D流水线1612可以用于执行媒体操作,但是GPE 1610的实施例还包括媒体流水线1616,所述媒体流水线特定地用于执行媒体操作,诸如视频后期处理和图像增强。
在一些实施例中,媒体流水线1616包括用于代替或代表视频编解码器引擎1606执行一个或多个专门的媒体操作(诸如视频解码加速、视频去交织和视频编码加速)的固定功能或可编程逻辑单元。在一些实施例中,媒体流水线1616另外包括线程生成单元以便生成用于在3D/媒体子系统1615上执行的线程。所生成的线程在3D/媒体子系统1615中所包括的一个或多个图形执行单元上执行对媒体操作的计算。
在一些实施例中,3D/媒体子系统1615包括用于执行由3D流水线1612和媒体流水线1616生成的线程的逻辑。在一个实施例中,流水线向3D/媒体子系统1615发送线程执行请求,其包括用于对可用线程执行资源仲裁和分派各种请求的线程分派逻辑。执行资源包括用于处理3D和媒体线程的图形执行单元阵列。在一些实施例中,3D/媒体子系统1615包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,子系统还包括共享存储器,其包括寄存器和可寻址存储器,用于在线程之间共享数据并且存储输出数据。
图形处理引擎
图17是根据一些实施例的图形处理器的图形处理引擎1710的框图。在一个实施例中,图形处理引擎(GPE)1710是图16中示出的GPE 1610的版本。图17中具有与本文的任何其它图的元件相同的参考数字(或名称)的元件能够以与本文在其它地方描述的方式类似的任何方式操作或运作,但不限于此。例如,示出图16的3D流水线1612和媒体流水线1616。媒体流水线1616在GPE 1710的一些实施例中是可选的并且可以不显式包含在GPE 1710中。例如,并且在至少一个实施例中,独立媒体和/或图像处理器耦合到GPE 1710。
在一些实施例中,GPE 1710与命令流播器1703耦合或包括命令流播器1703,其向3D流水线1612和/或媒体流水线1616提供命令流。在一些实施例中,命令流播器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内的多用途执行逻辑(例如,执行单元)包括对各种3DAPI着色器语言的支持并且可以执行与多个着色器相关联的同时执行线程。
在一些实施例中,图形核阵列1714包括用于执行诸如视频和/或图像处理之类的媒体功能的执行逻辑。在一个实施例中,执行单元包括通用逻辑,其可编程以执行除了图形处理操作之外的并行通用计算操作。通用逻辑可以与图14的(一个或多个)处理器核1407或如图15中的核1502A-1502N内的通用逻辑并行或结合而执行处理操作。
在图形核阵列1714上执行的线程所生成的输出数据可以向统一返回缓冲器(URB)1718中的存储器输出数据。URB 1718可以存储多个线程的数据。在一些实施例中,URB 1718可以用于在图形核阵列1714上执行的不同线程之间发送数据。在一些实施例中,URB 1718可以另外用于图形核阵列上的线程之间的同步和共享功能逻辑1720内的固定功能逻辑。
在一些实施例中,图形核阵列1714是可缩放的,使得阵列包括数量可变的图形核,每个基于GPE 1710的目标功率和性能水平具有数量可变的执行单元。在一个实施例中,执行资源是动态可缩放的,使得执行资源可以根据需要被启用或停用。
图形核阵列1714与共享功能逻辑1720耦合,该共享功能逻辑包括在图形核阵列中的图形核之间共享的多个资源。共享功能逻辑1720内的共享功能是向图形核阵列1714提供专门补充功能性的硬件逻辑单元。在各种实施例中,共享功能逻辑1720包括但不限于采样器1721、数学1722和线程间通信(ITC)1723逻辑。另外,一些实施例实现共享功能逻辑1720内的一个或多个高速缓存1725。
在对于给定专门功能的需求不足以包括在图形核阵列1714内的情况下实现共享功能。取而代之,该专门功能的单个实例化实现为共享功能逻辑1720中的独立实体并且在图形核阵列1714内的执行资源之间共享。在图形核阵列1714之间共享并且包括在图形核阵列1714内的精确功能集跨实施例而变化。在一些实施例中,供图形核阵列1714广泛使用的共享功能逻辑1720内的特定共享功能可以包含在图形核阵列1714内的共享功能逻辑1716中。在各种实施例中,图形核阵列1714中的共享功能逻辑1716可以包括共享功能逻辑1720中的一些或所有逻辑。在一个实施例中,共享功能逻辑1720中的所有逻辑元件可以在图形核阵列1714的共享功能逻辑1716中重复。在一个实施例中,为了有利于图形核阵列1714中的共享功能逻辑1716而排除了共享功能逻辑1720。
图18是根据本文描述的一些实施例的图形处理器核1800的硬件逻辑的框图。图18中具有与本文的任何其它图的元件相同的参考数字(或名称)的元件可以采用与在本文其它地方描述的方式类似的任何方式操作或运作,但不限于此。在一些实施例中,所示出的图形处理器核1800包括在图17的图形核阵列1714中。图形处理器核1800(有时称为核切片)可以是模块化图形处理器中的一个或多个图形核。图形处理器核1800是一个图形核切片的范例,并且本文描述的图形处理器可基于目标功率和性能包线(performance envelope)包括多个图形核切片。每个图形处理器核1800可以包含与多个子核1801A-1801F(又称为子切片)耦合的固定功能块1830,所述多个子核包括通用和固定功能逻辑的模块化块。
在一些实施例中,固定功能块1830包括几何/固定功能流水线1836,其可以被图形处理器核1800中的所有子核共享,例如,在较低性能和/或较低功耗的图形处理器实现中。在各种实施例,几何/固定功能流水线1836包括3D固定功能流水线(例如,如同图16和图17中的3D流水线1612)、视频前端单元、线程生成器和线程分派器、以及统一返回缓冲器管理器,该统一返回缓冲器管理器管理统一返回缓冲器,诸如图17的统一返回缓冲器1718。
在一个实施例中,固定功能块1830还包括图形SoC接口1837、图形微控制器1838和媒体流水线1839。图形SoC接口1837在图形处理器核1800与片上系统集成电路内的其它处理器核之间提供接口。图形微控制器1838是可编程的子处理器,其可配置成管理图形处理器核1800的各种功能,包括线程分派、调度和抢占。媒体流水线1839(例如,图16和图17的媒体流水线1616)包括促进多媒体数据(包括图像和视频数据)的解码、编码、预处理和/或后处理的逻辑。媒体流水线1839经由对子核1801-1801F内的计算或采样逻辑的请求实现媒体操作。
在一个实施例中,SoC接口1837使图形处理器核1800能够与通用应用处理器核(例如,CPU)和/或SoC内的其它组件通信,SoC内的其它组件包括诸如共享末级高速缓存存储器、系统RAM和/或嵌入式芯片上或封装上DRAM之类的存储器层级元件。SoC接口1837还可以使能与SoC内的固定功能装置(诸如照相机成像流水线)的通信,并使能使用和/或实现可在图形处理器核1800与SoC内的CPU之间共享的全局存储器原子。SoC接口1837还可以实现对图形处理器核1800的功率管理控制,并使能图形核1800的时钟域与SoC内的其它时钟域之间的接口。在一个实施例中,SoC接口1837使能从命令流播器和全局线程分派器接收命令缓冲器,其配置成向图形处理器中的一个或多个图形核中的每一个提供命令和指令。当要执行媒体操作时,可以将命令和指令分派到媒体流水线1839,或者当要执行图形处理操作时,可以将命令和指令分派到几何和固定功能流水线(例如,几何和固定功能流水线1836、几何和固定功能流水线1814)。
图形微控制器1838可以配置成为图形处理器核1800执行各种调度和管理任务。在一个实施例中,图形微控制器1838可以在子核1801A-1801F内的执行单元(EU)阵列1802A-1802F、1804A-1804F中的各种图形并行引擎上执行图形和/或计算工作负荷调度。在该调度模型中,在包括图形处理器核1800的SoC的CPU核上执行的主机软件可以向多个图形处理器门铃之一提交工作负荷,这将在适当的图形引擎上调用调度操作。调度操作包括:确定接着运行哪个工作负荷,将工作负荷提交给命令流播器,抢占在引擎上运行的现有工作负荷,监测工作负荷的进度,以及在工作负荷完成时通知主机软件。在一个实施例中,图形微控制器1838还可以促进图形处理器核1800的低功耗或空闲状态,由此独立于操作系统和/或系统上的图形驱动软件,为图形处理器核1800提供跨低功耗状态转变在图形处理器核1800内保存和恢复寄存器的能力。
图形处理器核1800可具有比所示出的子核1801A-1801F多或少的子核,最多可达N个模块化子核。对于每一组N个子核,图形处理器核1800还可以包括共享功能逻辑1810、共享和/或高速缓存存储器1812、几何/固定功能流水线1814以及附加的固定功能逻辑1816,以加速各种图形和计算处理操作。共享功能逻辑1810可以包括与图17的共享功能逻辑1720(例如,采样器、数学和/或线程间通信逻辑)相关联的逻辑单元,所述逻辑单元可以被图形处理器核1800内的每个N个子核共享。共享和/或高速缓存存储器1812可以是图形处理器核1800中的该组N个子核1801A-1801F的末级高速缓存,并且也可以充当共享存储器,其可被多个子核访问。几何/固定功能流水线1814可以包含在固定功能块1830中而不是包含在几何/固定功能流水线1836中,并且可以包含相同或类似的逻辑单元。
在一个实施例中,图形处理器核1800包括额外的固定功能逻辑1816,该逻辑可以包括供图形处理器核1800使用的各种固定功能加速逻辑。在一个实施例中,附加的固定功能逻辑1816包括用于在仅位置着色中使用的附加几何流水线。在仅位置着色中,存在两个几何流水线,即,几何/固定功能流水线1816、1836中的完整几何流水线和拣选流水线,拣选流水线是附加的几何流水线,其可包含在附加的固定功能逻辑1816中。在一个实施例中,拣选流水线是完整几何流水线的精简版本。完整流水线和拣选流水线可以执行相同应用的不同实例,每个实例具有单独的上下文。仅位置着色可以隐藏丢弃的三角形的长拣选运行,以使着色在一些实例中能够提前完成。例如,并且在一个实施例中,附加的固定功能逻辑1816中的拣选流水线逻辑可以与主应用并行执行位置着色器,并且一般比完整流水线更快生成关键结果,因为拣选流水线只取并着色顶点的位置属性,而不对到帧缓冲器的像素执行光栅化和渲染。拣选流水线可以使用生成的关键结果来计算所有三角形的可见性信息,而不考虑这些三角形是否被拣选。完整流水线(在这种情况下可以称为重播流水线)可以消耗可见性信息来跳过拣选的三角形,而只对最终传递到光栅化阶段的可见三角形进行着色。
在一个实施例中,附加的固定功能逻辑1816还可以包括机器学习加速逻辑,诸如固定功能矩阵乘法逻辑,以用于包括机器学习训练或推理的优化的实现。
在每个图形子核1801A-1801F内,包含一组执行资源,所述执行资源可以用于执行图形、媒体和计算操作,以响应于图形流水线、媒体流水线或着色器程序的请求。图形子核1801A-1801F包括多个EU阵列1802A-1802F、1804A-1804F、线程分派和线程间通信(TD/IC)逻辑1803A-1803F、3D(例如,纹理)采样器1805A-1805F、媒体采样器1806A-1806F、着色器处理器1807A-1807F和共享本地存储器(SLM)1808A-1808F。EU阵列1802A-1802F、1804A-1804F每个都包括多个执行单元,所述执行单元是通用图形处理单元,其能够在图形、媒体或计算操作(包括图形、媒体或计算着色器程序)的服务中执行浮点和整数/固定点逻辑操作。TD/IC逻辑1803A-1803F为子核内的执行单元执行本地线程分派和线程控制操作,并且促进在子核的执行单元上执行的线程之间的通信。3D采样器1805A-1805F可以将纹理或其它3D图形相关的数据读取到存储器中。3D采样器可以基于配置的采样状态和与给定纹理相关联的纹理格式不同地读取纹理数据。媒体采样器1806A-1806F可以基于与媒体数据相关联的类型和格式执行类似的读取操作。在一个实施例中,每个图形子核1801A-1801F可以备选地包括统一的3D和媒体采样器。在子核1801A-1801F中的每一个内的执行单元上执行的线程可以利用每个子核内的共享本地存储器1808A-1808F,以使在线程群组内执行的线程能够使用片上存储器的公共池执行。
执行单元
图19A-19B示出了根据本文描述的实施例的线程执行逻辑1900,其包括在图形处理器核中所采用的处理元件的阵列。图19A-19B中具有与本文任何其它图的元件相同的参考数字(或名称)的元件能够以与本文其它地方描述的方式类似的任何方式来操作或运作,但并不限于此。图19A示出线程执行逻辑1900的概览,其可以包括与图18的每个子核1801A-1801F示出的硬件逻辑的变形。图19B示出执行单元的示范性内部细节。
如图19A中所示出,在一些实施例中,线程执行逻辑1900包括着色器处理器1902、线程分派器1904、指令高速缓存1906、可缩放执行单元阵列(包括多个执行单元1908A-1908N)、采样器1910、数据高速缓存1912和数据端口1914。在一个实施例中,可缩放执行单元阵列可以通过基于工作负荷的计算要求启用或停用一个或多个执行单元(例如,执行单元1908A、1908B、1908C、1908D至1908N-1和1908N中的任一个)而动态缩放。在一个实施例中,所包括的组件经由链接到组件中的每个的互连组构而互连。在一些实施例中,线程执行逻辑1900包括通过指令高速缓存1906、数据端口1914、采样器1910和执行单元1908A-1908N中的一个或多个与存储器(例如系统存储器或高速缓存存储器)的一个或多个连接。在一些实施例中,每个执行单元(例如,1908A)是独立可编程通用计算单元,其能够执行多个同时的硬件线程,同时针对每个线程并行处理多个数据元素。在各种实施例中,执行单元阵列1908A-1908N可缩放以包括任何数量的个体执行单元。
在一些实施例中,执行单元1908A-1908N主要用于执行着色器程序。着色器处理器1902可以处理各种着色器程序并且经由线程分派器1904分派与着色器程序相关联的执行线程。在一个实施例中,线程分派器包括用于仲裁来自图形和媒体流水线的线程发起请求并且在执行单元1908A-1908N中的一个或多个执行单元上将所请求的线程实例化的逻辑。例如,几何流水线可以向线程执行逻辑分派顶点、曲面细分或几何着色器以用于处理。在一些实施例中,线程分派器1904还可以处理来自执行着色器程序的运行时线程生成请求。
在一些实施例中,执行单元1908A-1908N支持包括对许多标准3D图形着色器指令的原生支持的指令集,使得以最小的转化执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)和通用处理(例如,计算和媒体着色器)。执行单元1908A-1908N中的每个都能够多发单指令多数据(SIMD)执行并且多线程化操作面对较高时延存储器访问而启用高效执行环境。每个执行单元内的每个硬件线程具有专用高带宽寄存器堆和相关联的独立线程状态。执行是向能够进行整数、单和双精度浮点运算、SIMD分支能力、逻辑运算、超越运算和其它混杂运算的流水线的每时钟多发。在等待来自存储器或共享功能中的一个的数据时,执行单元1908A-1908N内的依赖逻辑使等待线程休眠直到所请求的数据已返回。在等待线程正在休眠时,硬件资源可以专注于处理其它线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可以对像素着色器、片段着色器或另一个类型的着色器程序(其包括不同的顶点着色器)执行操作。作为使用SIMD的备选或除了使用SIMD之外,各种实施例可以应用于通过使用单指令多线程(SIMT)来使用执行。对SIMD核或操作的引用也可以应用于SIMT或应用于SIMD与SIMT的组合。
执行单元1908A-1908N中的每个执行单元对数据元素的阵列进行操作。数据元素的数量是“执行大小”或用于指令的通道的数量。执行通道是用于指令内的数据元素访问、掩蔽和流控制的执行的逻辑单元。通道的数量可以与针对特定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量无关。在一些实施例中,执行单元1908A-1908N支持整数和浮点数据类型。
执行单元指令集包括SIMD指令。可以将各种数据元素作为紧缩数据类型存储在寄存器中,并且执行单元将基于元素的数据大小来处理各种元素。例如,当在256位宽的向量上进行操作时,所述256位的向量存储在寄存器中,并且所述执行单元作为四个单独64位紧缩数据元素(四倍字长(QW)大小的数据元素)、八个单独32位紧缩数据元素(双倍字长(DW)大小的数据元素)、十六个单独16位紧缩数据元素(字长(W)大小的数据元素)、或三十二个单独8位数据元素(字节(B)大小的数据元素)在所述向量上进行操作。然而,不同的向量宽度和寄存器大小是可能的。
在一个实施例中,一个或多个执行单元可以组合成融合执行单元1909A-1909N,其具有对于融合EU共同的线程控制逻辑(1907A-1907N)。多个EU可以融合成EU群组。可以将融合EU群组中的每个EU配置成执行单独的SIMD硬件线程。融合EU群组中的EU的数量可以根据实施例而变化。另外,针对每个EU可以执行各种SIMD宽度,包括但不限于SIMD8、SIMD16和SIMD32。每个融合图形执行单元1909A-1909N包括至少两个执行单元。例如,融合执行单元1909A包括第一EU 1908A、第二EU 1908B和对于第一EU 1908A和第二EU 1908B共同的线程控制逻辑1907A。线程控制逻辑1907A控制在融合图形执行单元1909A上执行的线程,以允许融合执行单元1909A-1909N中的每个EU使用共同的指令指针寄存器执行。
一个或多个内部指令高速缓存(例如,1906)被包括在线程执行逻辑1900中,以高速缓存用于执行单元的线程指令。在一些实施例中,一个或多个数据高速缓存(例如,1912)被包括以高速缓存线程执行期间的线程数据。在一些实施例中,采样器1910被包括来为3D操作提供纹理采样并且为媒体操作提供媒体采样。在一些实施例中,采样器1910包括专门的纹理或媒体采样功能性,以在向执行单元提供采样数据之前在采样过程期间处理纹理或媒体数据。
在执行期间,图形和媒体流水线经由线程生成和分派逻辑向线程执行逻辑1900发送线程发起请求。一旦一组几何对象已被处理并且光栅化为像素数据,就调用像素着色器1902内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等)以进一步计算输出信息并且使得将结果写入到输出表面(例如,颜色缓冲区、深度缓冲区、模板缓冲区等)。在一些实施例中,像素着色器或片段着色器计算待跨光栅化对象插值的各种顶点属性的值。在一些实施例中,着色器处理器1902内的像素处理器逻辑随后执行应用编程接口(API)供应的像素或片段着色器程序。为了执行着色器程序,着色器处理器1902经由线程分派器1904向执行单元(例如,1908A)分派线程。在一些实施例中,像素着色器1902使用采样器1910中的纹理采样逻辑来访问存储器中存储的纹理图中的纹理数据。对纹理数据和输入几何数据的算术运算计算了每个几何片段的像素颜色数据,或丢弃来自进一步处理的一个或多个像素。
在一些实施例中,数据端口1914提供用于使线程执行逻辑1900将经处理的数据输出到存储器以便在图形处理器输出流水线上进一步处理的存储器访问机制。在一些实施例中,数据端口1914包括或耦合到一个或多个高速缓存存储器(例如,数据高速缓存1912)从而经由数据端口高速缓存用于存储器访问的数据。
如图19B中所示出,图形执行单元1908可以包括指令取单元1937、通用寄存器堆阵列(GRF)1924、架构寄存器堆阵列(ARF)1926、线程仲裁器1922、发送单元1930、分支单元1932、一组SIMD浮点单元(FPU)1934,并且在一个实施例中,包括一组专用整数SIMD ALU1935。GRF 1924和ARF 1926包括与在图形执行单元1908中可活动的每个同步硬件线程相关联的通用寄存器堆和架构寄存器堆的集合。在一个实施例中,每个线程架构状态保持在ARF1926中,而线程执行期间所使用的数据则存储在GRF 1924中。每个线程的执行状态(包括每个线程的指令指针)可以保留在ARF 1926中的线程特定的寄存器中。
在一个实施例中,图形执行单元1908具有作为同步多线程(SMT)和细粒度交织多线程(IMT)的组合的架构。该架构具有模块化配置,其可以在设计时基于同步线程的目标数量和每个执行单元的寄存器的数量进行微调,其中执行单元资源跨用于执行多个同步线程的逻辑而进行划分。
在一个实施例中,图形执行单元1908可以共同发出多个指令,每个指令可以是不同的指令。图形执行单元线程1908的线程仲裁器1922可以将指令分派到发送单元1930、分支单元1932或(一个或多个)SIMD FPU 1934中的一个以用于执行。每个执行线程可以访问GRF 1924中的128个通用寄存器,其中每个寄存器可以存储32个字节,其可作为32位数据元素的8元素向量进行访问。在一个实施例中,每个执行单元线程有权访问GRF 1924中的4Kbytes,尽管实施例没有这样的限制,并且在其它实施例中可以提供更多或更少的寄存器资源。在一个实施例中,最多可以同时执行七个线程,尽管每个执行单元的线程数也可以根据实施例改变。在七个线程可以访问4Kbytes的实施例中,GRF 1924可以存储总共28Kbytes。灵活的寻址模式可以允许一起寻址寄存器,从而有效地构建更宽的寄存器或表示跨越式矩形块数据结构。
在一个实施例中,经由“发送”指令分派存储器操作、采样器操作和其它较长时延系统通信,所述指令由消息传递发送单元1930执行。在一个实施例中,分支指令被分派到专用分支单元1932以促进SIMD发散和最终收敛。
在一个实施例中,图形执行单元1908包括一个或多个SIMD浮点单元((一个或多个)FPU)1934来执行浮点操作。在一个实施例中,(一个或多个)FPU 1934也支持整数计算。在一个实施例中,(一个或多个)FPU 1934可以SIMD执行多达M个32位浮点(或整数)操作,或SIMD执行多达2M个16位整数或16位浮点操作。在一个实施例中,至少一个FPU提供扩展数学能力,以支持高吞吐量超越数学函数和双精度64位浮点。在一些实施例中,还存在一组8位整数SIMD ALU 1935,并且它们可被专门优化以执行与机器学习计算相关联的操作。
在一个实施例中,图形执行单元1908的多个实例的阵列可以在图形子核分组(例如,子切片)中实例化。对于可缩放性,产品架构师可以选择每个子核分组的执行单元的确切数量。在一个实施例中,执行单元1908可以跨多个执行通道执行指令。在另外的实施例中,在图形执行单元1908上执行的每个线程在不同的通道上执行。
图20是根据一些实施例示出图形处理器指令格式2000的框图。在一个或多个实施例中,图形处理器执行单元支持具有采用多个格式的指令的指令集。实线框示出通常包括在执行单元指令中的分量,而虚线包括可选的或仅包括在指令的子集中的分量。在一些实施例中,所描述和示出的指令格式2000是宏指令,在于它们是供应至执行单元的指令,这与从指令解码得出的微操作是相对的(一旦所述指令被处理的话)。
在一些实施例中,图形处理器执行单元原生支持采用128位指令格式2010的指令。64位紧凑指令格式2030对于基于所选的指令、指令选项和操作数的数量的一些指令是可用的。原生128位指令格式2010提供对所有指令选项的访问,而一些选项和操作被限制于64位格式2030中。以64位格式2030可用的原生指令根据实施例而变化。在一些实施例中,使用索引字段2013中的一组索引值将指令部分地压缩。执行单元硬件基于这些索引值引用一组紧凑表,并且使用紧凑表输出来以128位指令格式2010重构原生指令。可以使用其它大小和格式的指令。
对于每个格式,指令操作码2012定义执行单元将执行的操作。执行单元跨每个操作数的多个数据元素并行执行每个指令。例如,响应于加法指令,执行单元跨表示纹理元素或图片元素的每个颜色通道执行同时的加法运算。执行单元默认跨操作数的所有数据通道执行每个指令。在一些实施例中,指令控制字段2014启用对例如通道选择(例如,预测)和数据通道阶(例如,调配)等某些执行选项的控制。对于128位指令格式2010中的指令,执行大小(exec-size)字段2016限制将被并行执行的数据通道的数量。在一些实施例中,执行大小字段2016不可供64位紧凑指令格式2030使用。
一些执行单元指令具有多达三个操作数,包括两个源操作数src0 2020、src12022和一个目的地2018。在一些实施例中,执行单元支持双目的地指令,其中,这些目的地之一是隐式的。数据操纵指令可以具有第三源操作数(例如,SRC2 2024),其中,指令操作码2012确定源操作数的数量。指令的最后一个源操作数可以是通过所述指令传递的立即数(例如,硬编码)值。
在一些实施例中,128位指令格式2010包括访问/寻址模式字段2026,其指定(例如)使用直接寄存器寻址模式还是间接寄存器寻址模式。当使用直接寄存器寻址模式时,直接由指令中的位来提供一个或多个操作数的寄存器地址。
在一些实施例中,128位指令格式2010包括访问/寻址模式字段2026,其指定针对所述指令的寻址模式和/或访问模式。在一个实施例中,访问模式用于定义针对所述指令的数据访问对准。一些实施例支持包括16字节对准的访问模式和1字节对准的访问模式的访问模式,其中,访问模式的字节对准确定指令操作数的访问对准。例如,当处于第一模式时,指令可针对源操作数和目的地操作数使用字节对准的寻址,并且当处于第二模式时,指令可针对所有的源操作数和目的地操作数使用16字节对准的寻址。
在一个实施例中,访问/寻址模式字段2026的寻址模式部分确定指令将使用直接寻址还是间接寻址。当使用直接寄存器寻址模式时,指令中的位直接提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时,可基于指令中的地址立即数字段和地址寄存器值来计算一个或多个操作数的寄存器地址。
在一些实施例中,基于操作码2012位字段对指令分组以简化操作码解码2040。针对8位操作码,位4、5和6允许执行单元确定操作码的类型。所示出的精确操作码分组仅仅是示例。在一些实施例中,移动和逻辑操作码群组2042包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。在一些实施例中,移动和逻辑群组2042共享五个最高有效位(MSB),其中,移动(mov)指令采用0000xxxxb的形式,以及逻辑指令采用0001xxxxb的形式。流控制指令群组2044(例如,调用、跳(jmp))包括采用0010xxxxb形式(例如,0x20)的指令。混杂指令群组2046包括指令的混合体,其包括采用0011xxxxb形式(例如,0x30)的同步指令(例如,等待、发送)。并行数学指令群组2048包括采用0100xxxxb形式(例如,0x40)的逐个分量的算术指令(例如,加、乘(mul))。并行数学群组2048跨数据通道并行执行算术运算。向量数学群组2050包括采用0101xxxxb形式(例如,0x50)的算术指令(例如,dp4)。向量数学组执行诸如对向量操作数的点积计算的算术。
图形流水线
图21是图形处理器2100的另一个实施例的框图。图21中具有与本文任何其它图的元件相同的参考数字(或名称)的元件能够以与本文在其它地方描述的方式类似的任何方式来操作或运作,但不限于此。
在一些实施例中,图形处理器2100包括几何流水线2120、媒体流水线2130、显示器引擎2140、线程执行逻辑2150和渲染输出流水线2170。在一些实施例中,图形处理器2100是包括一个或多个通用处理核的多核处理系统内的图形处理器。图形处理器由到一个或多个控制寄存器(未示出)的寄存器写入控制或者经由环互连2102经由发布至图形处理器2100的命令控制。在一些实施例中,环互连2102将图形处理器2100耦合到其它处理组件,诸如其它图形处理器或通用处理器。来自环互连2102的命令由命令流播器2103解译,所述命令流播器将指令供应给几何流水线2120或媒体流水线2130的单独组件。
在一些实施例中,命令流播器2103指引顶点取出器(fetcher)2105的操作,所述顶点取出器从存储器读取顶点数据并执行由命令流播器2103提供的顶点处理命令。在一些实施例中,顶点取出器2105将顶点数据提供给顶点着色器2107,所述顶点着色器向每个顶点执行坐标空间变换和照亮操作。在一些实施例中,顶点取出器2105和顶点着色器2107通过经由线程分派器2131将执行线程分派给执行单元2152A-2152B来执行顶点处理指令。
在一些实施例中,执行单元2152A-2152B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。在一些实施例中,执行单元2152A-2152B具有特定用于每个阵列或在阵列之间共享的附连的L1高速缓存2151。所述高速缓存可以被配置为数据高速缓存、指令高速缓存或单个高速缓存,其被分区以将数据和指令包含在不同的分区中。
在一些实施例中,几何流水线2120包括用于执行对3D对象的硬件加速曲面细分的曲面细分组件。在一些实施例中,可编程的外壳着色器2111配置曲面细分操作。可编程的域着色器2117提供对曲面细分输出的后端评估。曲面细分器2113在外壳着色器2111的方向上进行操作并且包含专用逻辑,所述专用逻辑用于基于粗糙几何模型来生成一组详细的几何对象,所述粗糙几何模型作为输入被提供给几何流水线2120。在一些实施例中,如果未使用曲面细分,则可以对曲面细分组件(例如,外壳着色器2111、曲面细分器2113和域着色器2117)进行旁路。
在一些实施例中,完整的几何对象可以由几何着色器2119经由被分派给执行单元2152A-2152B的一个或多个线程来处理,或可以直接继续进行至剪辑器2129。在一些实施例中,几何着色器在整个几何对象上进行操作而非如图形流水线的先前阶段中的顶点的补片或者顶点上进行操作。如果曲面细分被禁用,则几何着色器2119从顶点着色器2107接收输入。在一些实施例中,如果曲面细分单元被禁用,则几何着色器2119可由几何着色器程序编程以执行几何曲面细分。
在光栅化之前,剪辑器2129处理顶点数据。剪辑器2129可以是固定功能的剪辑器或者具有剪辑和几何着色器功能的可编程剪辑器。在一些实施例中,渲染输出流水线2170中的光栅化器和深度测试组件2173分派像素着色器以将几何对象转换成按像素表示。在一些实施例中,像素着色器逻辑包括在线程执行逻辑2150中。在一些实施例中,应用可以对光栅化器和深度测试组件2173进行旁路,并且经由向外流播单元(stream out unit)2123来访问未光栅化的顶点数据。
图形处理器2100具有互连总线、互连组构或一些其它互连机制,其允许在处理器的主要组件当中传递数据和消息。在一些实施例中,执行单元2152A-2152B和相关联的逻辑单元(例如,L1高速缓存2151、采样器2154、纹理高速缓存2158等)经由数据端口2156互连,以执行存储器访问并与处理器的渲染输出流水线组件通信。在一些实施例中,采样器2154、L1高速缓存2151、纹理高速缓存2158和执行单元2152A-2152B各自具有单独的存储器访问路径。在一个实施例中,纹理高速缓存2158也可以配置为采样高速缓存。
在一些实施例中,渲染输出流水线2170包含光栅化器和深度测试组件2173,其将基于顶点的对象转换成相关联的基于像素的表示。在一些实施例中,光栅化器逻辑包括用于执行固定功能三角形和线光栅化的窗口器(windower)/掩蔽器单元。相关联的渲染高速缓存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)的开放图形库(OpenGL)、开放计算语言(OpenCL)和/或Vulkan图形和计算API提供支持。在一些实施例中,还可以为来自微软公司的Direct3D库提供支持。在一些实施例中,可以支持这些库的组合。还可以为开源计算机视觉库(OpenCV)提供支持。如果可以进行从未来API的流水线至图形处理器的流水线的映射,则还将支持具有可兼容的3D流水线的未来API。
图形流水线编程
图22A是根据一些实施例示出图形处理器命令格式2200的框图。图22B是根据实施例示出图形处理器命令序列2210的框图。图22A中的实线框示出一般包括在图形命令中的分量,而虚线包括可选的或仅包括在图形命令的子集中的分量。图22A的示范性图形处理器命令格式2200包括用于标识命令的客户端2202、命令操作代码(操作码)2204和数据2206的数据字段。在一些命令中还包括子操作码2205和命令大小2208。
在一些实施例中,客户端2202指定处理命令数据的图形装置的客户端单元。在一些实施例中,图形处理器命令解析器(parser)检查每个命令的客户端字段以调整对命令的进一步处理并将命令数据路由至合适的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、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流水线2222或媒体流水线2224来定制命令序列,所述3D流水线以3D流水线状态2230开始,所述媒体流水线始于媒体流水线状态2240。
配置3D流水线状态2230的命令包括用于以下各项的3D状态设置命令:顶点缓冲器状态、顶点元素状态、恒定颜色状态、深度缓冲器状态和将在处理3D图元命令之前配置的其它状态变量。至少部分地基于使用中的特定3D API来确定这些命令的值。在一些实施例中,3D流水线状态2230命令还能够选择性地禁用或旁路某些流水线元件,如果将不使用那些元件的话。
在一些实施例中,3D图元2232命令用于提交由3D流水线处理的3D图元。经由3D图元2232命令传递到图形处理器的命令和相关联的参数被转发到图形流水线中的取顶点功能。取顶点功能使用3D图元2232命令数据来产生顶点数据结构。顶点数据结构被存储在一个或多个返回缓冲器中。在一些实施例中,3D图元2232命令用于经由顶点着色器对3D图元执行顶点操作。为了处理顶点着色器,3D流水线2222将着色器执行线程分派给图形处理器执行单元。
在一些实施例中,经由执行2234命令或事件来触发3D流水线2222。在一些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序列中的‘走(go)’或‘踢(kick)’命令来触发执行。在一个实施例中,使用流水线同步命令来触发命令执行,以通过图形流水线来清空命令序列。3D流水线将执行针对3D图元的几何处理。一旦操作完成,对所得几何对象光栅化,并且像素引擎给所得像素上色。针对那些操作还可包括用于控制像素着色和像素后端操作的附加命令。
在一些实施例中,当执行媒体操作时,图形处理器命令序列2210遵循媒体流水线2224路径。一般地,针对媒体流水线2224编程的方式和特定使用取决于要执行的媒体或计算操作。在媒体解码期间,可将特定的媒体解码操作卸载到媒体流水线。在一些实施例中,还可以对媒体流水线进行旁路并且可以整体地或部分地执行媒体解码(使用由一个或多个通用处理核提供的资源)。在一个实施例中,媒体流水线还包括用于通用图形处理器单元(GPGPU)操作的元件,其中,图形处理器用于使用计算着色器程序来执行SIMD向量操作,所述计算着色器程序不明确地与图形图元的渲染相关。
在一些实施例中,以与3D流水线2222类似的方式配置媒体流水线2224。在媒体对象命令2242之前将配置媒体流水线状态2240的一组命令分派到或放置到命令队列中。在一些实施例中,媒体流水线状态2240的命令包括用于配置媒体流水线元件的数据,所述媒体流水线元件将用于处理媒体对象。这包括用于配置媒体流水线内的视频解码和视频编码逻辑的数据(诸如编码或解码格式)。在一些实施例中,媒体流水线状态2240的命令还支持将一个或多个指针用于包含一批状态设置的“间接”状态元件。
在一些实施例中,媒体对象命令2242将指针供应给用于由媒体流水线处理的媒体对象。媒体对象包括存储器缓冲器,其包含要处理的视频数据。在一些实施例中,在发布媒体对象命令2242之前,所有的媒体流水线状态必须是有效的。一旦流水线状态被配置并且媒体对象命令2242被排队,则经由执行命令2244或等效的执行事件(例如,寄存器写入)来触发媒体流水线2224。然后,可以通过由3D流水线2222或媒体流水线2224提供的操作对来自媒体流水线2224的输出进行后期处理。在一些实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。
图形软件架构
图23示出根据一些实施例的用于数据处理系统2300的示范性图形软件架构。在一些实施例中,软件架构包括3D图形应用2310、操作系统2320、以及至少一个处理器2330。在一些实施例中,处理器2330包括图形处理器2332以及一个或多个通用处理器核2334。图形应用2310和操作系统2320各自在数据处理系统的系统存储器2350中执行。
在一些实施例中,3D图形应用2310包含一个或多个着色器程序,所述着色器程序包括着色器指令2312。着色器语言指令可以采用高级着色器语言,诸如Direct3D的高级着色器语言(HLSL)、OpenGL着色器语言(GLSL)等。所述应用还包括采用适用于由通用处理器核2334执行的机器语言的可执行指令2314。所述应用还包括由顶点数据定义的图形对象2316。
在一些实施例中,操作系统2320是来自微软公司的操作系统、专有类UNIX操作系统或开源类UNIX操作系统,其使用Linux内核的变形。操作系统2320可以支持图形API 2322,诸如Direct3D API、OpenGL API或Vulkan API。当Direct3DAPI在使用时,操作系统2320使用前端着色器编译器2324以将采用HLSL的任何着色器指令2312编译成较低级着色器语言。所述编译可以是即时制(JIT)编译,或者所述应用可执行着色器预编译。在一些实施例中,在对3D图形应用2310进行编译期间,将高级着色器编译成低级着色器。在一些实施例中,采用中间形式提供着色器指令2312,例如Vulkan API所使用的标准便携式中间表示(SPIR)的版本。
在一些实施例中,用户模式图形驱动器2326包含后端着色器编译器2327,所述后端着色器编译器用于将着色器指令2312转换成硬件特定表示。当OpenGL API在使用中时,采用GLSL高级语言的着色器指令2312被传递到用户模式图形驱动器2326以用于编译。在一些实施例中,用户模式图形驱动器2326使用操作系统内核模式功能2328与内核模式图形驱动器2329进行通信。在一些实施例中,内核模式图形驱动器2329与图形处理器2332进行通信以分派命令和指令。
IP核实现
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性代码来实现,所述代表性代码表示和/或定义诸如处理器的集成电路内的逻辑。例如,机器可读介质可以包括表示处理器内的各种逻辑的指令。当由机器读取时,所述指令可以使所述机器制造用于执行本文描述的技术的逻辑。这类表示(称为“IP核”)是用于集成电路的逻辑的可重复使用单元,其可以作为对集成电路的结构进行描述的硬件模型而存储在有形、机器可读介质上。可以将硬件模型供应至各种消费者或制造设施,其在制造集成电路的制造机器上加载硬件模型。可以制造集成电路使得所述电路执行与本文描述的任何实施例相关联地描述的操作。
图24A是根据实施例示出IP核开发系统2400的框图,所述IP核开发系统可用于制造集成电路以执行操作。IP核开发系统2400可以用于生成可合并到更大的设计中或用于构建整个集成电路(例如,SOC集成电路)的模块化、可重复使用设计。设计设施2430可采用高级编程语言(例如,C/C++)生成对IP核设计的软件仿真2410。软件仿真2410可用于使用仿真模型2412来设计、测试并验证IP核的行为。仿真模型2412可以包括功能、行为和/或定时仿真。然后,可按照仿真模型2412来创建或综合寄存器传输级(RTL)设计2415。RTL设计2415是集成电路的行为的抽取(abstraction),所述集成电路对硬件寄存器(包括使用建模的数字信号来执行的相关联的逻辑)之间的数字信号的流进行建模。除了RTL设计2415之外,还可以创建、设计或综合以逻辑级别或晶体管级别的较低级别设计。因此,初始设计和仿真的特定细节可以变化。
可由设计设施进一步将RTL设计2415或等效物综合到硬件模型2420中,所述硬件模型可以采用硬件描述语言(HDL)或物理设计数据的某一其它表示。可以进一步仿真或测试HDL以验证IP核设计。可以使用非易失性存储器2440(例如,硬盘、闪速存储器或任何非易失性存储介质)来存储IP核设计以便递送到第3方制造设施2465。备选地,可以通过有线连接2450或无线连接2460来传送(例如,经由因特网)IP核设计。然后,制造设施2465可以制造至少部分地基于IP核设计的集成电路。所制造的集成电路可被配置成执行根据本文描述的至少一个实施例的操作。
图24B示出根据本文描述的一些实施例的集成电路封装组件2470的横截面侧视图。集成电路封装组件2470示出了如本文所描述的一个或多个处理器或加速器装置的实现。封装组件2470包括连接到衬底2480的硬件逻辑2472、2474的多个单元。逻辑2472、2474可以至少部分地在可配置逻辑或固定功能逻辑硬件中实现,并且可以包括本文描述的(一个或多个)处理器核、(一个或多个)图形处理器或其它加速器装置中的任何装置的一个或多个部分。逻辑2472、2474的每个单元都可以在半导体管芯中实现,并经由互连结构2473与衬底2480耦合。互连结构2473可配置成在逻辑2472、2474与衬底2480之间路由电信号,并且可以包括诸如但不限于凸块或支柱之类的互连。在一些实施例中,互连结构2473可配置成路由电信号,诸如例如输入/输出(I/O)信号和/或与逻辑2472、2474的操作相关联的功率或接地信号。在一些实施例中,衬底2480是基于环氧树脂的层压衬底。在其它实施例中,衬底2480可包括其它合适类型的衬底。封装组件2470可以经由封装互连2483连接到其它电气装置。封装互连2483可耦合到衬底2480的表面,以将电信号路由到其它电气装置,诸如主板、其它芯片集或多芯片模块。
在一些实施例中,逻辑2472、2474的单元与桥接器2482电耦合,桥接器2482被配置为在逻辑2472、2474之间路由电信号。桥接器2482可以是为电信号提供路由的密集互连结构。桥接器2482可包括由玻璃或合适的半导体材料组成的桥接器衬底。桥接器衬底上可以形成电气路由特征,以在逻辑2472、2474之间提供芯片到芯片连接。
虽然示出了桥接器2482和逻辑2472、2474的两个单元,但是本文描述的实施例可在一个或多个管芯上包括更多或更少的逻辑单元。一个或多个管芯可以由零个或多个桥接器连接,因为当逻辑包含在单个管芯上时,可排除桥接器2482。备选地,可以通过一个或多个桥接器连接多个管芯或逻辑单元。另外,多个逻辑单元、管芯和桥接器可以按其它可能的配置(包括三维配置)连接在一起。
示范性片上系统集成电路
图25-26示出根据本文描述的各种实施例可以使用一个或多个IP核来制造的示范性集成电路和相关联的图形处理器。除了所示出的之外,可以包括其它逻辑和电路,包括额外的图形处理器/核、外设接口控制器或通用处理器核。
图25是示出根据实施例的示范性片上系统集成电路2500的框图,可使用一个或多个IP核来制造所述片上系统集成电路2500。示范性集成电路2500包括一个或多个应用处理器2505(例如,CPU)、至少一个图形处理器2510,并且可以另外包括图像处理器2515和/或视频处理器2520,其中的任何一个可以是来自相同或多个不同设计设施的模块化IP核。集成电路2500包括外设或总线逻辑,其包括USB控制器2525、UART控制器2530、SPI/SDIO控制器2535、以及I2S/I2C控制器2540。另外,集成电路可以包括显示装置2545,所述显示装置耦合到高清晰度多媒体接口(HDMI)控制器2550和移动行业处理器接口(MIPI)显示器接口2555中的一个或多个。可以由闪速存储器子系统2560(包括闪速存储器和闪速存储器控制器)来提供存储。可经由存储器控制器2565来提供存储器接口以用于访问SDRAM或SRAM存储器装置。一些集成电路另外包括嵌入式安全引擎2570。
图26A-26B是示出根据本文描述的实施例在SoC内使用的示范性图形处理器的框图。图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同步,其它MMU包括与图25的一个或多个应用处理器2505、图像处理器2515和/或视频处理器2520相关联的一个或多个MMU,使得每个处理器2505-2520可以参与共享或统一虚拟存储器系统。根据实施例,一个或多个电路互连2630A-2630B使图形处理器2610能够经由SoC的内部总线或经由直接连接与SoC内的其它IP核接口连接。
如图26B所示,图形处理器2640包括图26A的图形处理器2610的一个或多个MMU2620A-2620B、(一个或多个)高速缓存2625A-2625B和(一个或多个)电路互连2630A-2630B。图形处理器2640包括一个或多个着色器核2655A-2655N(例如,2655A、2655B、2655C、2655D、2655E、2655F至2655N-1和2655N),其提供统一着色器核架构,其中单个核或单一类型的核可以执行所有类型的可编程着色器代码(包括着色器程序代码)来实现顶点着色器、片段着色器和/或计算着色器。存在的着色器核的确切数量在实施例和实现之间可以变化。另外,图形处理器2640包括核间任务管理器2645,其充当线程分派器来向一个或多个着色器核2655A-2655N和分块单元2658来加速对于基于图块的渲染的分块操作,其中对于场景的渲染操作在图像空间中细划分,例如以利用场景内的局部空间一致性或优化内部高速缓存的使用。
SoC架构的分解由于各种原因,建造越来越大的硅管芯是挑战性的。随着硅管芯变得更大,制造产量变得更小,并且对不同组件的工艺技术要求可能会有所不同。另一方面,为了拥有高性能的系统,关键组件应当通过高速、高带宽、低时延接口进行互连。这些相互矛盾的需求对高性能芯片的发展提出了挑战。
本文描述的实施例提供了用于将片上系统集成电路的架构分解成可封装到公共机箱上的多个不同芯粒的技术。在一个实施例中,图形处理单元或并行处理器由单独制造的多种多样的硅芯粒组成。芯粒是至少部分封装的集成电路,其包括不同的逻辑单元,所述逻辑单元可以与其它芯粒组装成更大的封装。具有不同IP核逻辑的芯粒的多样化集合可以组装到单个器件中。另外,芯粒可以使用有源插入器技术集成到基底管芯或基底芯粒中。本文描述的概念实现GPU内的不同形式的IP之间的互连和通信。不同工艺上的IP的开发可以是混合的。这避免了将多个IP汇聚到相同工艺的复杂性,特别是在具有若干个风味的IP的大型SoC上。
允许使用多种工艺技术改善了上市时间,并提供了一种成本有效的方法来创建多个产品SKU。对于客户来说,这意味着以成本有效和及时的方式获得更适合它们需求的产品。此外,分解的IP更易于独立地进行功率门控,可以对在给定工作负荷上不在使用的组件断电,从而降低总体功耗。
图27示出了根据实施例的并行计算系统2700。在一个实施例中,并行计算系统2700包括并行处理器2720,其可以是本文描述的图形处理器或计算加速器。并行处理器2720包括全局逻辑2701单元、接口2702、线程分派器2703、媒体单元2704、一组计算单元2705A-2705H和高速缓存/存储器单元2706。在一个实施例中,全局逻辑单元2701包括用于并行处理器2720的全局功能性,包括装置配置寄存器、全局调度器、功率管理逻辑等。接口2702可以包括用于并行处理器2720的前端接口。线程分派器2703可以从接口2702接收工作负荷,并将工作负荷的线程分派到计算单元2705A-2705H。如果工作负荷包括任何媒体操作,那么那些操作中的至少一部分可以由媒体单元2704执行。媒体单元还可以将一些操作卸载到计算单元2705A-2705H。高速缓存/存储器单元2706可以包括用于并行处理器2720的高速缓存存储器(例如,L3高速缓存)和本地存储器(例如,HBM、GDDR)。
图28A-28B示出了根据本文描述的实施例的分解式并行处理器的混合逻辑/物理视图。图28A示出了分解式并行计算系统2800。图28B示出了分解式并行计算系统2800的芯粒2830。
如图28A所示,分解式计算系统2800可以包括并行处理器2820,其中并行处理器SOC的各种组件跨多个芯粒分布。每个芯粒可以是不同的IP核,其独立设计并且配置成经由一个或多个公共接口与其它芯粒通信。芯粒包括但不限于计算芯粒2805、媒体芯粒2804和存储器芯粒2806。每个芯粒可以使用不同的工艺技术单独制造。例如,计算芯粒2805可以使用在制造时可用的最小或最先进的工艺技术来制造,而存储器芯粒2806或其它芯粒(例如,I/O、联网等)可以使用较大或不那么先进的工艺技术来制造。
各种芯粒可以连接到基底管芯2810,并且配置成经由互连层2812与彼此以及基底管芯2810内的逻辑通信。在一个实施例中,基底管芯2810可以包括全局逻辑2801,其可包括调度器2811和功率管理2821逻辑单元、接口2802、分派单元2803以及与一个或多个L3高速缓存库2809A-2809N耦合或集成的互连组构模块2808。互连组构2808可以是集成到基底管芯2810中的芯粒间组构。逻辑芯粒可以使用组构2808来在各种芯粒之间中继信息。另外,基底管芯中的L3高速缓存库2809A-2809N和/或存储器芯粒2806内的L3高速缓存库可以缓存从以及向存储器芯粒2806内的DRAM芯粒和主机的系统存储器读取和传送的数据。
在一个实施例中,全局逻辑2801是微控制器,其可以执行固件以执行并行处理器2820的调度器2811和功率管理2821功能性。执行全局逻辑的微控制器可以针对并行处理器2820的目标用例进行定制。调度器2811可以为并行处理器2820执行全局调度操作。功率管理2821功能性可以用来启用或停用并行处理器内的个体芯粒(当那些芯粒不使用时)。
并行处理器2820的各种芯粒可以设计成执行特定的功能性,在现有的设计中,这些功能性将被集成到单个管芯中。一组计算芯粒2805可以包括计算单元的集群(例如,执行单元、流播多处理器等),其包括可编程逻辑来执行计算或图形着色器指令。媒体芯粒2804可以包括硬件逻辑来加速媒体编码和解码操作。存储器芯粒2806可以包括易失性存储器(例如,DRAM)和一个或多个SRAM高速缓存存储器库(例如,L3库)。
如图28B所示,每个芯粒2830可以包括公共组件和应用特定组件。芯粒2830内的芯粒逻辑2836可以包括芯粒的特定组件,诸如本文描述的流播多处理器、计算单元或执行单元的阵列。芯粒逻辑2836可以与可选的高速缓存或共享本地存储器2838耦合,或者可以在芯粒逻辑2836中包含高速缓存或共享本地存储器。芯粒2830可以包括组构互连节点2842,该组构互连节点经由芯粒间组构接收命令。经由组构互连节点2842接收的命令和数据可以临时存储在互连缓冲器2839中。向以及从组构互连节点2842传送和接收的数据可以存储在互连高速缓存2840中。功率控制2832和时钟控制2834逻辑也可以包含在芯粒内。功率控制2832和时钟控制2834逻辑可以经由组构接收配置命令,可以为芯粒2830配置动态电压和频率缩放。在一个实施例中,每个芯粒可以具有独立的时钟域和功率域,并且可以独立于其它芯粒进行时钟门控和功率门控。
所示出的芯粒2830内的组件的至少一部分也可以包含在嵌入在图28A的基底管芯2810内的逻辑中。例如,与组构通信的基底管芯内的逻辑可以包括组构互连节点2842的版本。可以独立进行时钟或功率门控的基底管芯逻辑可以包括功率控制2832和/或时钟控制2834逻辑的版本。
图29A-29B示出根据实施例的分解式并行处理器的封装视图。图29A示出封装组件2920的物理布局。图29B示出多个芯粒2904、2906与互连组构2940之间的互连。
如图29A所示,封装组件2920可以包括连接到衬底2910(例如基底管芯)的硬件逻辑芯粒的多个单元。硬件逻辑芯粒可以包括专用硬件逻辑芯粒2902、逻辑或I/O芯粒2904和/或存储器芯粒2905。硬件逻辑芯粒2902和逻辑或I/O芯粒2904可以至少部分地在可配置逻辑或固定功能性逻辑硬件中实现,并且可以包括本文描述的(一个或多个)处理器核、(一个或多个)图形处理器、并行处理器或其它加速器装置中的任何装置的一个或多个部分。存储器芯粒2905可以是DRAM(例如,GDDR、HBM)存储器或高速缓存(SRAM)存储器,如本文描述和图示。
每个芯粒可以制作为单独的半导体管芯,并经由互连结构2903与衬底2910耦合。互连结构2903可以配置成在衬底2910内的各种芯粒和逻辑之间路由电信号。互联结构2903可以包括诸如但不限于凸块或支柱之类的互连。在一些实施例中,互连结构2903可以配置成路由电信号,诸如例如输入/输出(I/O)信号和/或与逻辑、I/O和存储器芯粒的操作相关联的功率或接地信号。
在一些实施例中,衬底2910是基于环氧树脂的层压衬底。在其它实施例中,衬底2910可以包括其它合适类型的衬底。封装组件2920可以经由封装互连2914连接到其它电气装置。封装互连2914可以耦合到衬底2910的表面,以将电信号路由到其它电气装置,诸如主板、其它芯粒或多芯片模块。
在一些实施例中,逻辑或I/O芯粒2904和存储器芯粒2905可以经由桥接器2917电耦合,所述桥接器2917被配置成在逻辑或I/O芯粒2904与存储器芯粒2905之间路由电信号。桥接器2917可以是为电信号提供路由的密集互连结构。桥接器2917可以包括由玻璃或合适的半导体材料组成的桥接器衬底。可在桥接器衬底上形成电气路由特征,以在逻辑或I/O芯粒2904与存储器芯粒2905之间提供芯片到芯片连接。桥接器2917又可称为硅桥接器或互连桥接器。例如,在一些实施例中,桥接器2917是嵌入式多管芯互连桥接器(EMIB)。在一些实施例中,桥接器2917可能仅仅是从一个芯粒到另一个芯粒的直接连接。
衬底2910可以包括用于I/O 2911、高速缓存存储器2912和其它硬件逻辑2913的硬件组件。组构2915可以嵌入在衬底2910中,以使能在衬底2910内在各种逻辑芯粒与逻辑2911、2913之间的通信。
在各种实施例中,封装组件2920可以包括数量更少或更多的组件和芯粒,这些组件和芯粒通过组构2915或一个或多个桥接器2917互连。封装组件2920内的芯粒可以以3D或2.5D布置方式来布置。一般来说,桥接器结构2917可用于促进例如逻辑或I/O芯粒与存储器芯粒之间的点到点互连。组构2915可用于互连各种逻辑和/或I/O芯粒(例如,芯粒2902、2904、2911、2913)与其它逻辑和/或I/O芯粒。在一个实施例中,衬底内的高速缓存存储器2912可以充当封装组件2920的全局高速缓存、分布式全局高速缓存的部分,或充当组构2915的专用高速缓存。
如图29B所示,存储器芯粒2906可以经由通过互连桥接器2947路由的芯粒互连2935与逻辑或I/O芯粒2904连接。互连桥接器2947可以是嵌入在如图29A所示的封装组件2920的衬底2910中的桥接器2917的变形。逻辑或I/O芯粒2904可以经由互连组构2940与其它芯粒通信,该互连组构2940是图29A的组构2915的变形。
在一个实施例中,存储器芯粒2906包括与芯粒所提供的存储器技术相对应的一组存储器库2931。存储器库2931可以包括本文描述的任何类型的存储器,包括但不限于DRAM、SRAM、或闪存、或3D XPoint存储器。存储器控制协议层2932可以允许控制存储器库2931,并且可以包括用于一个或多个存储器控制器的逻辑。互连桥接器协议层2933可以在存储器控制协议2932与互连桥接器I/O层2934之间中继消息。互连桥接器I/O层2934可以通过芯粒互连2935与互连桥接器I/O层2936通信。互连桥接器I/O层2934、2936可以代表物理层,所述物理层通过芯粒互连2935向或从对应的互连点传送信号或接收信号。物理I/O层可以包括通过芯粒互连2935驱动信号和/或从芯粒互连2935接收信号的电路。逻辑或I/O芯粒2904内的互连桥接器协议层2937可以将来自互连桥接器I/O层2936的信号转化成可以传递到计算或I/O逻辑2939的消息或信号。在一个实施例中,数字适配器层2938可用于促进将信号转化成供计算或I/O逻辑2939使用的消息或信号。
计算或I/O逻辑2939可以经由互连组构2940与其它逻辑或I/O芯粒通信。在一个实施例中,计算或I/O逻辑2939包括可以与互连组构2940通信的集成的组构节点逻辑2939,例如图28B的组构互连节点2942。
在一个实施例中,存储器芯粒2906中的控制层2968可以与逻辑或I/O芯粒中的控制层2970通信。这些控制层2968、2970可用于以带外方式传播或传送某些控制信号,例如,在逻辑或I/O芯粒2904的接口总线协议层2937与存储器芯粒2906的接口总线协议层2933、存储器控制协议2932和/或存储器库2931之间发送功率和配置消息。
图30示出了根据实施例用于互连组构的消息传输系统3000。消息传输系统3000可以配置成取决于可用的接口宽度以不同的速率处理业务。具体的接口宽度可以在逐个芯粒的基础上变化,并且组构的速度或配置可以调整,以使数据能够以适合于要互连的各种功能单元的速率传送。传输层还可以经由在时钟域之间的边界使用跨时钟域的FIFO来跨越一个或多个时钟域,从而使数据能够跨时钟域传输。传输层还可以划分为一个或多个子层,其中每个子层包括一个或多个时钟域。虽然描述和示出了传输层,但是在一些实施例中,所示出的操作可以在互连组构的数据链路层执行。
在一个实施例中,位于起源层3010中的第一功能单元3001A可以经由一个或多个传输层3011、3012通过位于目的地层3013中的第二功能单元3001B进行通信。起源层3010可以是封装组件的衬底(诸如图29A中的封装组件2920的衬底2910)内或芯粒内的逻辑或I/O。目的地层3013也可以是芯粒内或衬底内的逻辑或I/O。在一个实施例中,起源层3010和/或目的地层3013可以与芯粒或衬底/基底管芯内的高速缓存存储器相关联。
一个或多个传输层3011、3012可以在单独的时钟域内。例如,传输层3011可以在第一时钟域中,而传输层3012可以在第二时钟域中。单独的时钟域可以在不同的频率操作。可在时钟域之间经由传输层内的时钟跨越模块3003传送数据。在一个实施例中,时钟跨越模块3003内的第一缓冲器或高速存储器模块3004可以缓冲要经由交叉跨越FIFO 3005中继到第二缓冲器或高速存储器模块3006的数据。第一缓冲器/高速存储器模块3004可以在第一时钟域中,而第二缓冲器/高速存储器模块3006可以在第二时钟域中。
功能单元3001A和功能单元3001B可以经由相应的组构接口3002A-3002B向以及从组构传送和接收消息。组构接口3002A-3002B可以动态地配置在组构内用于跨传输层中继消息和信号的连接的宽度,如下图31-32所示。
图31示出跨互连组构的多个物理链路在功能单元之间传送消息或信号。在一个实施例中,其中在一组功能单元之间的通信通道具有超过经由单个物理链路所能提供的带宽要求,可以使用多个链路来促进功能单元之间的通信。
在一个实施例中,第一功能单元3101A可以向第一组构接口3102A发送消息或信号。第一组构接口3102A可以分散消息或信号,并且跨多个物理链路作为单个虚拟通道发送消息或信号。例如,可以将多条物理链路指派给相同虚拟通道,并且每条物理链路都可以为虚拟通道携带消息或信号。
可在时钟域之间经由一个或多个传输层3011、3012内的时钟跨越模块3103来传送数据,所述传输层采用如图30所示的类似方式经由多个缓冲器或高速存储器3104A-3104B、3106A-3106B(和时钟域跨越FIFO)跨多个物理链路为通道传送消息或信号。在将消息或信号提供给第二功能单元3101B之前,多个物理链路可以汇聚到第二组构接口3102B。
图32示出了跨互连组构的单个通道的多个功能单元的消息或信号的传输。在一个实施例中,其中一组功能单元之间的通信通道具有不利用物理链路的所有可用带宽的带宽需求,可以跨物理链路传输多个虚拟通道。虚拟通道可以沿物理链路进行时间切换,物理链路中的数据线的特定集合可以分配给特定的功能单元。
在一个实施例中,第一组功能单元3201A、3211A可以通过互连组构的单个物理链路与第二组功能单元3201B、3211B通信。功能单元3201A-3201B可以与第一虚拟通道相关联,而功能单元3211A-3211B可以与第二虚拟通道相关联。第一虚拟通道和第二虚拟通道可以在第一组构接口3202A处汇聚。可以跨一个或多个传输层3011、3012中继消息或信号。可以采用如图30所示的类似方式在时钟域之间经由多个缓冲器或高速存储器3204、3106(以及时钟域跨越FIFO)通过一个或多个传输层3011、3012中的时钟跨越模块3203传送数据。在向第二组功能单元3201B、3211B提供消息或信号之前,可在第二组构接口3202B处分散多个虚拟通道。
图33示出了为分解式并行处理器内的功能单元配置组构连接的方法3300。本文描述的分解式并行处理器的互连组构可配置成为各种多样化组件传送消息和/或信号,所述组件可以是具有不同设计者和/或制造商的IP核。在芯粒或基底管芯逻辑组件内的每个功能单元所使用的特定类型的链路可以是可配置的。在一个实施例中,该链路在功能单元所使用的组构互连节点处是可配置的。
在一个实施例中,组构互连节点可以接收即将配置以便经由并行处理器封装内的互连组构进行通信的功能单元的带宽配置数据(框3302)。配置数据可以在分解式并行处理器的初始组装和供应期间静态地提供,或者可以在分解式并行处理器的初始化期间动态地配置。对于动态初始化,组构互连节点可以从功能单元接收带宽配置请求,该带宽配置请求指定功能单元与组构互连节点之间的互连的物理宽度和频率以及功能单元的带宽要求。
接着,组构互连节点可以分析为功能单元配置的互连宽度和频率(框3304)。然后,组构互连节点可以为功能单元配置汇聚和/或发散链路(框3306)。一旦被配置,组构互连节点就可以跨配置的链路为功能单元中继消息和/或信号(框3308)。
图34示出了跨分解式并行处理器内的互连组构中继消息和/或信号的方法3400。本文描述的分解式并行处理器的互连组构可以跨分解式并行处理器的一个或多个层中继消息和/或信号,同时跨越多个时钟域。
在一个实施例中,处理器的芯粒或基底管芯内的第一功能单元可以采用要传送的消息或信号的形式生成数据(框3402)。第一功能单元可以经由第一组构接口节点将消息或信号传送到互连组构(框3404)。组构接口节点可以将虚拟通道汇聚或分散到物理传输链路中(框3406),如图31和图32所示。要传送的消息或信号可以与虚拟通道相关联,并经由相关联的虚拟通道进行传送。组构互连如何执行消息或信号的转发和/或切换操作可受到指派给消息或信号的虚拟通道的影响。另外,多个虚拟通道可以合并为单个物理链路,或者虚拟通道可以由多条物理链路携带。
在一个实施例中,互连组构可以跨一个或多个传输和/或数据链路层内的多个时钟域传输消息或信号(框3408)。可以使用一个或多个时钟跨越模块(包括高速存储器和域跨越FIFO)来跨越多个时钟域。在一个实施例中,每个芯粒可以具有相对于互连组构的独立的时钟域。互连组构也可以具有多个时钟域。跨多个时钟域传送消息或信号可以包括使用互连组构内的切换逻辑来切换消息或信号。
第二组构接口节点可以接收消息或信号(框3410)。接着,第二组构接口节点可以从第二组构接口节点处的物理传输链路分散或汇聚虚拟通道(框3412)。可以从单个物理链路中分散多个虚拟通道,或者可以从多条物理链路中汇聚虚拟通道。然后,处理器的芯粒或基底管芯内的第二功能单元可以在第二硬件逻辑处以消息或信号的形式接收数据(框3414)。第二功能单元然后可以基于所接收的数据执行操作。
图35示出了在每个工作负荷的基础上对芯粒进行功率门控的方法3500。在一个实施例中,分解式并行处理器内的功率控制逻辑可以在执行工作负荷时基于工作负荷的要求确定应当对哪些芯粒或逻辑单元供电。在一个实施例中,功率控制逻辑可以与其它全局逻辑(诸如全局调度器或前端接口)一起工作,以确定将使用哪些组件来处理工作负荷。
方法3500包括接收要在并行处理器上执行的工作负荷的命令缓冲器(框3502)。例如,可以在全局调度器或前端接口处接收命令缓冲器。方法3500另外包括确定即将用于执行工作负荷的一组芯粒(框3504)。可以通过确定将用于执行命令缓冲器内的命令的功能单元的全局集合和/或类型来执行此确定。
方法3500另外包括确定即将用于处理工作负荷的任何功能芯粒是否驻留在进行功率门控的芯粒上,并且如果即将使用的芯粒尚未通电,则对那些芯粒加电(框3506)。另外,可以确定将不用于处理工作负荷的功能单元。如果芯粒内的所有功能单元将不都用于处理工作负荷,那么功率控制逻辑可以对不用于处理工作负荷的芯粒断电(例如,进行功率门控)(框3508)。为了对芯粒通电和断电,全局功率控制逻辑可以发信号通知芯粒内的本地功率控制逻辑。芯粒内的本地功率控制逻辑可以接着对芯粒执行适当的断电序列。然后,分解式并行处理器可以使用通电(例如,活动)的芯粒来执行工作负荷(框3510)。
基于芯粒配置启用产品SKU
半导体管芯在制造过程中被测试,以评估在管芯上形成的集成电路。总体功能性的标准测试可以通过在晶圆上对管芯进行探针测试来执行。老化测试(burn-in testing)可以在已经将管芯划分和封装之后执行,或者使用裸管芯的测试用具来执行。有缺陷的管芯可以丢弃。然而,通过初始测试但在最高频率下未能通过后续测试的管芯可以在较低频率正常工作。这种分箱过程可以选择性能较差或较好的管芯,并将这些管芯作为具有不同库存单位(SKU)的性能较高或较低产品的目标。对于芯片集成电路上的单片系统而言,分箱过程是粗粒度过程。尽管具有少量有缺陷的计算或图形核的处理器可以向下分箱,但是必须呈现最少数量的无缺陷组件来满足最低的产品要求。
使用本文描述的分解式SoC架构,可以在芯片级对单个芯粒进行测试和分箱,并且可以基于给定产品SKU的要求在组装期间为产品确定SKU级。在组装期间,通过指定特定芯粒或相同芯粒设计的不同箱子,可以为具有不同配置的不同产品SKU组装不同量的存储器、不同的功能性和不同的性能。
一种分解式处理器封装可配置成接受可互换的芯粒。通过为芯粒指定标准物理互连(这可以使芯粒能够与组构或桥接器互连接口连接),可实现互换性。来自不同IP设计者的芯粒可以符合共同的互连,从而使此类芯粒能够在组装期间可互换。然后,可以配置芯粒上的组构和桥接器互连逻辑,以确认芯粒的板上逻辑的实际互连布局。另外,可以使用包封(encapsulation)跨芯粒间组构传送来自芯粒的数据,使得传输的实际数据对组构是不透明的,从而进一步实现单个芯粒的互换性。使用此类可互换的设计,可以将更高或更低密度的存储器插入到存储器芯粒槽中,而具有更高或更低核计数的计算或图形芯粒可以插入到逻辑芯粒槽中。
功能性也可以在组装期间确定。例如,媒体芯粒可以基于产品规范和要求增加或排除。在一些产品中,可以增加封装上联网或其它通信芯粒。在一些产品中,可以使用不同的芯粒来启用不同类型的主机连接。例如,在主机互连版本改变涉及对互连逻辑的改变而不涉及物理形状因数的改变的情况下,升级到新的互连版本可通过在组装期间改变主机互连芯粒来执行,而不需要重新设计SoC来将新的互连逻辑插入到单片管芯中。
通过提供符合标准化的机箱接口的芯粒测试用具,可以进一步启用芯粒分箱。该芯粒测试用具可以使能对不同SKU的芯粒进行快速测试和分箱。
图36示出包括可互换的芯粒3602的并行处理器组件3600。可互换的芯粒3602可以组装到一个或多个基底芯粒3604、3608上的标准化槽中。基底芯粒3604、3608可以经由桥接器互连3606耦合,桥接器互连3606可以类似于本文描述的其它桥接器互连。存储器芯粒可以经由桥接器互连连接到逻辑或I/O芯粒。I/O和逻辑芯粒可以经由互连组构进行通信。基底芯粒各自可支持逻辑或I/O或存储器/高速缓存之一的标准化格式的一个或多个槽。基于产品的目标SKU,可以将不同的存储器密度组装到芯粒槽中。另外,可以在组装时基于产品的目标SKU来选择具有不同数量的类型的功能单元的逻辑芯粒。另外,包含不同类型的IP逻辑核的芯粒可以插入到可互换的芯粒槽中。
图37示出了根据实施例的可互换的芯粒系统3700。在一个实施例中,可互换的芯粒系统3700包括至少一个基底芯粒3710,其包括多个存储器芯粒槽3701A-3701F和多个逻辑芯粒槽3702A-3702F。逻辑芯粒槽(例如,3702A)和存储器芯粒槽(例如,3701A)可以通过互连桥接器3735连接,该互连桥接器可以类似于本文描述的其它互连桥接器。逻辑芯粒槽3702A-3702F可以经由组构互连3708进行互连。组构互连3708包括切换逻辑3718,该逻辑3718可以配置成通过将数据包封到组构分组中来以对数据不可知的方式实现在逻辑芯粒槽之间中继数据分组。组构分组然后可以切换到组构互连3708内的目的地槽。
组构互连3708可以包括一个或多个物理数据通道。一个或多个可编程的虚拟通道可以由每个物理通道携带。虚拟通道可以独立进行仲裁,其中每个虚拟通道单独协商通道访问。虚拟通道上的业务可以分类为一个或多个业务类别。在一个实施例中,优先级系统允许为虚拟通道和业务类别指派相对优先级以用于仲裁。在一个实施例中,业务平衡算法进行操作以便对耦合到组构的每个节点维持基本相等的带宽和吞吐量。在一个实施例中,组构互连逻辑以比耦合到组构的节点更高的时钟速率操作,以允许在维持节点之间的带宽要求的同时减少互连宽度。在某些节点需要更高的带宽的情况下,可以将多条物理链路组合起来以携带单个虚拟通道,如同以上在图31中那样。在一个实施例中,每个物理链路在空闲时都是单独进行时钟门控的。即将到来的活动的早期指示可以用作触发器,以在传送数据之前唤醒物理链路。
图38是根据实施例在虚拟通道上携带的多个业务类别的图示。第一组构连接器3802和第二组构连接器3804促进具有多达“M”个虚拟通道3806A-3806M的组构通道3806上的通信。虚拟通道使能在物理通道的固定集合上传输可变长度的信息。虚拟通道可以是永久虚拟通道,或者可以基于系统配置动态地启用或停用虚拟通道。使用永久虚拟通道允许固定的通道ID,这将使虚拟通道管理的开销最小化。动态地配置通道增加了设计灵活性,以额外的通道管理开销为代价。
可以为每个虚拟通道指派多个业务类别。业务类别是与仲裁相关的业务的划分。每个虚拟通道可携带多达“N”个业务类别。通过编程(熔断器、配置寄存器等)将每个业务类别指派给特定的虚拟通道。可将多达“L”个业务类型的类别指派给给定的虚拟通道。
表5-业务类别指派
# 业务类别 虚拟通道
1 类别1 1
2 类别2 0
3 类别3 M
4 类别4 1
5 类别5 0
N 类别N 2
上表5示出了如图38所示的示范性业务类别到虚拟通道指派。组构互连对传入的业务的每个单元进行分类,并且可以包括用于确保传入单元在其指派的虚拟通道内行进的逻辑。在一个实施例中,通道上的数据传输以先进先出(FIFO)顺序进行,并且通道仲裁基于虚拟通道进行。虚拟通道内的业务可阻塞相同虚拟通道上的额外业务的传输。但是,给定的虚拟通道将不会阻塞不同的虚拟通道。因此,不同虚拟通道上的业务是独立仲裁的。
在组构互连节点之间进行数据传输期间保持一致性。在一个实施例中,GPGPU或并行处理器上的发起线程的数据在相同的业务类别中路由,并将业务类别指派给特定的虚拟通道。单个虚拟通道上的单个业务类别中的数据以FIFO顺序传送。因此,当经由组构传送时,将来自单个线程的数据严格排序,并且维持每个线程一致性,以避免写后读或读后写的数据风险。在一个实施例中,经由资源节点之间的全局同步机制来维持线程群组一致性。
表6-业务类别优先化
# 业务类别 优先级
1 类别1 2
2 类别2 1
3 类别3 4
4 类别4 2
5 类别5 1
N 类别N 3
上表6示出了示范性业务类别优先化。可以对优先级算法进行编程,以确定指派给每个业务类别的优先级。可编程的业务类别优先级允许使用业务类别作为任意的业务分组机制,其中业务可以仅仅被分组在一类别中以维持一致性,或者特定的业务可以被指派高优先级并且专用于高优先级数据。例如,类别1和类别4各自被指派给虚拟通道1 3806B,可以为它们指派优先级2。类别2和类别5各自被指派给虚拟通道0 3806A,可以为它们指派优先级1。可以将业务类别“N”指派给虚拟通道2 3806C,其优先级为3。类别2中的业务可是应尽快传送或不应被其它业务类别阻塞的时延敏感数据,而类别1中的业务可是来自单个线程的中等时延敏感业务,该线程被分组以保持一致性。
可以相对于所有业务类别或者相对于相同虚拟通道上的业务类别的优先级为业务类别指派优先级。在一个实施例中,优先级方案通过为业务类别指派权重来设计,其中,较高的权重指示较高的优先级。可以采用公平的优先级算法,其中保证每个参与者都具有最低量的带宽以防止饥饿。在一个实施例中,在某些情况下使用绝对优先级算法,其中较高优先级的业务总是阻塞较低优先级的业务。
在使用绝对优先级的情况下,附加的算法可以适当防止通信死锁。组合使用虚拟通道和业务类别减少了死锁的可能性,因为在给定的虚拟通道上具有绝对优先级的单个业务类别不会阻塞不同虚拟通道上的业务。在一个实施例中,如果在一个虚拟通道上检测到饥饿状态或潜在的死锁,则可以将阻塞的业务类别重新指派给不同的虚拟通道。
表7-虚拟通道优先化
# 虚拟通道 优先级
1 1 2
2 2 1
3 3 3
M M 4
上表7示出了示范性虚拟通道优先级。与业务类别一样,每个虚拟通道也可以接收优先级,并且通道仲裁可以考虑虚拟通道的相对优先级。例如,虚拟通道2上的数据业务可具有比其它虚拟通道上的数据更高的相对优先级。可以与虚拟通道优先级一起采用加权优先级系统,其中越高的权重指示越高的优先级。可以采用公平的优先级系统或绝对优先级系统。
图39示出根据实施例用于在可互换的芯粒的槽之间进行不可知数据传送的方法3900。方法3900可以通过本文描述的组构互连和组构互连节点中的硬件逻辑来执行。在一个实施例中,方法3900包括使第一组构接口节点从第一芯粒逻辑槽接收数据(框3902)。第一组构接口节点可以将数据包封到组构分组中(框3904)。然后,第一组构接口节点可以经由组构互连内的切换逻辑将分组传送到第二组构接口节点。第二组构接口节点可以接收分组(框3908)并从分组解包封数据(框3910)。然后,第二组构接口节点可以将从分组解包封的数据传送到第二芯粒逻辑槽(框3912)。
图40示出根据实施例用于可互换的芯粒的模块化架构。在一个实施例中,通过使芯粒逻辑4002适于与接口模板4008互操作,可以使芯粒设计4030可互换。接口模板4008可以包括标准化逻辑,诸如功率控制2832和时钟控制2834逻辑、以及互连缓冲器2839、互连高速缓存2840、组构互连节点2842,如同图28B的芯粒2830中一样。然后,IP设计者可以提供芯粒逻辑4002,其被设计成与接口模板4008接口连接。芯粒逻辑4002的具体细节可以改变,并且可以包括本文描述的执行单元、计算单元或流播多处理器。芯粒逻辑4002还可以包括媒体编码和/或解码逻辑、矩阵加速逻辑、或射线跟踪逻辑。对于存储器芯粒,可以用存储器单元来替换芯粒逻辑4002,并且可以用互连桥接器I/O电路来替换组构互连节点,例如,如图29B的存储器芯粒2906所示。
图41示出了使用标准化的机箱接口来用于实现芯粒测试、验证和集成。芯粒4130可以包括逻辑层4110和接口层4112,类似于图40的芯粒4030。接口层4112可以是标准化的接口,其可以与临时互连4114进行通信,该临时互连4114使芯粒能够可拆卸地耦合到测试用具4116。测试用具4116可以与测试主机4118通信。在测试主机4118的通信下,测试用具4116可以在初始测试或分箱过程期间对单个芯粒4130执行一系列测试,以检查逻辑层4110内的缺陷并确定芯粒4130的性能或功能性箱。例如,可以对逻辑层4110进行测试,以确定有缺陷和无缺陷的功能单元的数量以及阈值数量的特殊功能单元(例如,矩阵加速器、射线追踪核等)是否是起作用的。还可以测试逻辑层4110,以确定内部逻辑是否可以目标频率操作。
图42示出了使用单独分箱的芯粒来创建各种产品层次。可以对一组未测试的芯粒4202进行测试并将其分箱到一组箱中,包括性能箱4204、主流箱4206和经济箱4208,这取决于单个芯粒是否符合特定的性能或功能性层次。性能箱4204可以包括超过主流箱4206的性能(例如,稳定的频率)的芯粒,而经济箱4208可以包括起作用但性能低于主流箱4206的性能的芯粒。
由于芯粒可在组装期间可互换地放置,所以不同的产品层次可以基于芯粒的所选择集合进行组装。层次1产品4212可只从性能箱4204中的芯粒进行组装,而层次2产品4214可以包括从性能箱4204中选择芯粒并从主流箱4206中选择其它芯粒。例如,为需要高带宽、低时延存储器的工作负荷设计的层次2产品4214可以使用来自性能箱4204的高性能存储器芯粒,同时使用来自主流箱的计算、图形或媒体芯粒。另外,层次3产品4216可以使用来自主流箱4206的主流计算芯粒和来自经济箱4208的存储器进行组装(如果此类产品是针对不具有高存储器带宽要求的工作负荷定制的话)。层次4产品4218可以从经济箱4208中的起作用但性能不佳的芯粒组装。
图43示出了基于芯粒配置启用不同产品层次的方法4300。方法4300包括将芯粒管芯封装到测试封装中(框4302)。接着,可以对芯粒进行测试以基于功能单元的频率和/或数量对芯粒进行分箱(框4304)。然后,可以基于产品要求使用来自一个或多个箱的芯粒来组装分解式并行处理器(框4306)。还可以基于功能要求增加额外的芯粒(例如,媒体、射线追踪等)(框4308)。
以下条款和/或示例涉及其特定实施例或示例。示例中的具体细节可以在一个或多个实施例中的任何地方使用。可将不同实施例或示例的各种特征与包含的一些特征和被排除的其它特征以各种方式组合,以适应各种不同的应用。示例可以包括诸如方法、用于执行方法的动作的部件、包含指令(所述指令在由机器执行时使机器执行根据本文描述的实施例和示例的方法、或设备或系统的动作)的至少一个机器可读介质之类的主题。各种组件可以作为用于执行所描述的操作或功能的部件。
本文描述的实施例提供了用于将片上系统集成电路的架构分解成可封装到公共机箱上的多个不同芯粒的技术。在一个实施例中,图形处理单元或并行处理器由单独制造的多样化的硅芯粒组成。芯粒是至少部分封装的集成电路,其包括可以与其它芯粒一起组装成更大的封装的逻辑的不同单元。具有不同IP核逻辑的芯粒多样化集合可以组装成单个器件。
一个实施例提供了一种通用图形处理器,其包括:包括互连组构的基底管芯;以及经由互连结构与基底管芯和互连组构耦合的一个或多个芯粒,互连结构使能在一个或多个芯粒与互连组构之间的电通信。所述一个或多个芯粒可以包括第一芯粒和第二芯粒,其中第一芯粒与基底管芯耦合并经由第一互连结构连接到互连组构,并且第二芯粒与基底管芯耦合并经由第二互连结构连接到互连组构。芯粒可以包括配置成执行通用图形处理操作、媒体编码或解码操作、矩阵操作加速和/或射线追踪的功能单元。在一个实施例中,芯粒包括网络处理器和物理网络接口(例如,网络端口、无线无线电等)。芯粒额外可以包括存储器,存储器可以是高速缓存存储器或DRAM。每个芯粒可以单独且独立地进行功率门控。另外,逻辑或存储器可以包含在基底管芯中。在一个实施例中,基底管芯包括高速缓存存储器。基底管芯中的高速缓存存储器可以是处理器范围的高速缓存。基底管芯高速缓存存储器可以配置成与芯粒中的高速缓存存储器一起工作。
一个实施例提供了一种包括通用图形处理器的数据处理系统,该通用图形处理器包括:包括互连组构的基底管芯;以及经由多个互连结构与基底管芯和互连组构耦合的多个芯粒,所述多个互连结构使能多个芯粒与互连组构之间的电通信,其中互连组构将从与多个芯粒中的第一芯粒相关联的第一组构接口节点接收消息或信号,并将消息或信号中继到与多个芯粒中的第二芯粒相关联的第二组构接口节点。互连组构可以经由互连组构的多个物理链路上的多个虚拟通道传送消息或信号。在一个实施例中,可以跨单个物理链路传送多个虚拟通道。在一个实施例中,可以跨多个物理链路传送单个虚拟通道。可单独对空闲的物理链路进行功率门控。
一个实施例提供了一种方法,该方法包括:在处理器的芯粒或基底管芯内的第一功能单元处生成数据;经由第一组构接口节点将数据传送到互连组构;在处理器内跨多个时钟域传输数据;在第二组构接口节点处接收数据;将数据传送到处理器的芯粒或基底管芯内的第二功能单元;以及基于所接收的数据在第二功能单元处执行操作。该方法另外包括:将数据与互连组构的虚拟通道相关联;并基于虚拟通道转发或切换数据。在另外的实施例中,该方法包括:在第一组构接口节点处发散虚拟通道;使用多个物理链路跨多个时钟域传输虚拟通道的数据;以及在第二组构接口节点处汇聚虚拟通道。在又一个实施例中,虚拟通道是第一虚拟通道,并且该方法另外包括:将第一组构接口节点处的第一虚拟通道与第二虚拟通道汇聚;使用单个物理链路跨多个时钟域传输第一虚拟通道和第二虚拟通道;以及在第二组构接口节点的第二虚拟通道处发散第一虚拟通道。
一个实施例提供了一种非暂时性机器可读介质,其存储具有分解式架构的处理器内的微控制器的固件,所述固件包括使微控制器执行操作的指令,所述操作包括:接收使工作负荷在处理器上执行的命令缓冲器;确定处理器上包括用于执行工作负荷的功能单元的一组芯粒;对不包含用于执行工作负荷的功能单元的一个或多个芯粒进行功率门控;以及使用通电的芯粒执行工作负荷。操作可另外包括:确定包括用于执行工作负荷的功能单元的芯粒是否通电;以及当对芯粒进行功率门控时,对芯粒加电。
进一步实施例提供了一种可配置为接受可互换芯粒的分解式处理器封装。通过为芯粒指定标准的物理互连(这可以使芯粒能够与组构或桥接器互连接口连接),可实现互换性。来自不同IP设计者的芯粒可以符合共同的互连,以使此类芯粒能够在组装期间可互换。然后,可以配置芯粒上的组构和桥接器互连逻辑,以确认芯粒的板上逻辑的实际互连布局。另外,可使用包封跨芯粒间组构来传送来自芯粒的数据,使得传输的实际数据对组构是不透明的,从而进一步实现单个芯粒的互换性。使用此类可互换的设计,可以将更高或更低密度的存储器插入到存储器芯粒槽中,而具有较高或较低核计数的计算或图形芯粒可以插入到逻辑芯粒槽中。
一个实施例提供了一种通用图形处理器,该处理器包括:包括互连组构的基底管芯;以及经由互连结构与基底管芯和互连组构耦合的一个或多个芯粒,互连结构使能一个或多个芯粒与互连组构之间的电通信,其中一个或多个芯粒在通用图形处理器的组装期间可互换。一个或多个芯粒包括具有与存储器装置相关联的存储器单元的存储器芯粒。存储器芯粒耦合到第一存储器芯粒槽。一个或多个芯粒另外可以包括第一逻辑芯粒和第二逻辑芯粒。第一逻辑芯粒可以与基底管芯耦合并经由第一互连结构连接到互连组构。第一互连结构结合到第一逻辑芯粒槽。第二逻辑芯粒与基底管芯耦合并经由第二互连结构连接到互连组构。第二互连结构结合到第二逻辑芯粒槽。
在一个实施例中,第一逻辑芯粒槽配置成接受第一逻辑芯粒或第三逻辑芯粒。第一逻辑芯粒包括配置成执行通用图形处理操作的功能单元(例如,执行单元、计算单元、流播多处理器等),而第三逻辑芯粒包括配置成执行矩阵加速操作的功能单元,诸如张量核。第二逻辑芯粒槽可以配置成接受第二逻辑芯粒或第四逻辑芯粒。第二逻辑芯粒包括功能单元,其配置成执行本文描述的媒体操作,以对媒体进行编码、从媒体解码或在一种或多种媒体编码格式之间对媒体进行转码。第四逻辑芯粒而是可以包括网络处理器和物理网络接口。每个芯粒都可以独立进行功率门控。
在一个实施例中,本文描述的逻辑芯粒包括包含功能单元的第一层和包含组构互连节点的第二层。本文描述的存储器芯粒可以包括包含存储器单元库的第一层以及包括与存储器芯粒和逻辑芯粒之间的互连桥接器相关联的I/O电路的第二层。在另外的实施例中,基底管芯是第一基底管芯,并且第一基底管芯经由互连桥接器与第二基底管芯耦合。
一个实施例提供了一种包括通用图形处理器的数据处理系统,该通用图形处理器包括:包括互连组构的基底管芯;以及经由多个互连结构与基底管芯和互连组构耦合的多个芯粒。所述多个互连结构使能多个芯粒与互连组构之间的电通信。互连组构可以从与所述多个芯粒中的第一逻辑芯粒相关联的第一组构接口节点接收组构分组,并将组构分组中继到与所述多个芯粒中的第二逻辑芯粒相关联的第二组构接口节点。互连组构可以经由互连组构的多个物理链路上的多个虚拟通道传送组构分组。互连组构可以跨互连组构的多个物理链路传送与单个虚拟通道相关联的组构分组。互连组构还可以跨互连组构的单个物理链路为多个虚拟通道传送组构分组。当多个物理链路中的物理链路空闲时,可以对该物理链路进行功率门控。在一个实施例中,虚拟通道的组构分组可以与一个或多个业务类别相关联。虚拟通道和业务类别各自可以具有相关联的优先级。
一个实施例提供了一种方法,该方法包括:在第一组构接口节点处从第一逻辑芯粒槽接收数据;在第一组构接口节点处将数据包封到组构分组中;经由切换逻辑将组构分组传送到第二组构接口节点;在第二组构接口节点处接收分组;在第二组构接口节点处从组构分组解包封数据;以及将来自组构分组的数据从第二组构接口节点传送到第二逻辑芯粒槽。组构分组可以在第一组构接口节点与第二组构接口节点之间传输多个时钟域。
当然,实施例的一个或多个部分可以使用软件、固件和/或硬件的不同组合来实现。贯穿本详细描述,为了解释的目的,阐述了众多具体细节以便提供对本发明的充分理解。然而,本领域技术人员将认识到,没有这些具体细节中的一些细节也可以实践实施例。在某些实例中,没有详细描述众所周知的结构和功能,以避免使实施例的发明主题混淆。因此,应根据随附权利要求来判断本发明的范围和精神。

Claims (15)

1.一种装置,包括:
封装组件,包括:
第一基底芯粒,包括:
第一互连组构;以及
第一多个L3高速缓存库,与所述第一互连组构耦合或集成;
第一逻辑芯粒,堆叠在所述第一基底芯粒上,所述第一逻辑芯粒包括:
计算单元的集群,用于执行计算着色器指令或图形着色器指令的并行执行;
第一互连结构,用于将所述计算单元的集群耦合至所述第一互连组构;
第二基底芯粒,通过第二互连结构耦合至所述第一基底芯粒,所述第二基底芯粒包括:
第二互连组构;以及
第二多个L3高速缓存库,与所述第二互连组构耦合或集成;
第二逻辑芯粒,堆叠在所述第二基底芯粒上,所述第二逻辑芯粒包括:
多个处理器核;以及
第三互连结构,用于将所述第二逻辑芯粒耦合至所述第二互连组构,
其中,所述第一逻辑芯粒使用与用于制造所述第一基底芯粒和所述第二基底芯粒不同的工艺技术来制造。
2.如权利要求1所述的装置,其中,所述第一基底芯粒和所述第二基底芯粒中的至少一个基底芯粒进一步包括:
第四互连结构,用于将所述第一基底芯粒和所述第二基底芯粒中的所述至少一个基底芯粒耦合至存储器。
3.如权利要求2所述的装置,其中,所述计算单元的集群和所述多个处理器核用于分别通过所述第一基底芯粒和所述第二基底芯粒访问所述存储器。
4.如权利要求3所述的装置,其中,所述存储器包括高带宽存储器HBM。
5.如权利要求1至4中任一项所述的装置,进一步包括:
封装衬底,耦合至所述第一基底芯粒和所述第二基底芯粒;以及
封装互连,用于将所述封装衬底电耦合至一个或多个器件。
6.如权利要求1至5中任一项所述的装置,其中,所述第一基底芯粒、所述第二基底芯粒、所述第一逻辑芯粒和所述第二逻辑芯粒中的每一个芯粒处于独立的时钟域和功率域中、并且能独立于其它芯粒进行时钟门控和功率门控。
7.一种用于制造封装组件的方法,其中,所述封装组件包括:
第一基底芯粒,包括:
第一互连组构;以及
第一多个L3高速缓存库,与所述第一互连组构耦合或集成;
第一逻辑芯粒,堆叠在所述第一基底芯粒上,所述第一逻辑芯粒包括:
计算单元的集群,用于执行计算着色器指令或图形着色器指令的并行执行;
第一互连结构,用于将所述计算单元的集群耦合至所述第一互连组构;
第二基底芯粒,通过第二互连结构耦合至所述第一基底芯粒,所述第二基底芯粒包括:
第二互连组构;以及
第二多个L3高速缓存库,与所述第二互连组构耦合或集成;
第二逻辑芯粒,堆叠在所述第二基底芯粒上,所述第二逻辑芯粒包括:
多个处理器核;以及
第三互连结构,用于将所述第二逻辑芯粒耦合至所述第二互连组构,
其中,所述方法包括:
通过使用与用于制造所述第一基底芯粒和所述第二基底芯粒不同的工艺技术来制造所述第一逻辑芯粒;
通过使用与用于制造所述第一逻辑芯粒不同的工艺技术来制造所述第一基底芯粒和所述第二基底芯粒。
8.如权利要求7所述的方法,其中,所述第一基底芯粒和所述第二基底芯粒中的至少一个基底芯粒进一步包括:
第四互连结构,用于将所述第一基底芯粒和所述第二基底芯粒中的所述至少一个基底芯粒耦合至存储器。
9.如权利要求8所述的方法,其中,所述计算单元的集群和所述多个处理器核用于分别通过所述第一基底芯粒和所述第二基底芯粒访问所述存储器。
10.如权利要求9所述的方法,其中,所述存储器包括高带宽存储器HBM。
11.如权利要求7至10中任一项所述的方法,其中,所述封装组件进一步包括:
封装衬底,耦合至所述第一基底芯粒和所述第二基底芯粒;以及
封装互连,用于将所述封装衬底电耦合至一个或多个器件。
12.如权利要求7至11中任一项所述的方法,进一步包括:
包括对所述第一基底芯粒、所述第二基底芯粒、所述第一逻辑芯粒和所述第二逻辑芯粒的功率控制和时钟控制,其中,所述第一基底芯粒、所述第二基底芯粒、所述第一逻辑芯粒和所述第二逻辑芯粒中的每一个芯粒处于独立的时钟域和功率域中、并且能独立于其它芯粒进行时钟门控和功率门控。
13.一种方法,所述方法包括:
在第一组构接口节点处从第一逻辑芯粒槽接收数据;
在第一组构接口节点处将数据包封到组构分组中;
经由切换逻辑将组构分组传送到第二组构接口节点;
在第二组构接口节点处接收分组;
在第二组构接口节点处从组构分组解包封数据;以及
将来自组构分组的数据从第二组构接口节点传送到第二逻辑芯粒槽。
14.一种计算机系统,包括:
处理子系统,包括处理器、系统存储器和存储器集线器;
I/O子系统,耦合至所述存储器集线器;
输入装置,耦合至所述I/O子系统;以及
显示装置,耦合至所述处理子系统和所述I/O子系统。
15.一种方法,包括:
执行流水线清空以使得活动图形流水线完成任何未决命令;
执行流水线选择;
配置用于操作的图形流水线并且对流水线进行编程;
配置返回缓冲器的集合以供相应的流水线写入数据;
判定所选择的流水线是3D流水线还是媒体流水线;以及
执行与所选择的流水线相关的命令。
CN202410134206.7A 2019-03-15 2020-01-23 SoC架构的分解 Pending CN117853311A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US16/355,377 2019-03-15
US16/355,377 US10803548B2 (en) 2019-03-15 2019-03-15 Disaggregation of SOC architecture
CN202080014312.1A CN113396404A (zh) 2019-03-15 2020-01-23 SoC架构的分解
PCT/US2020/014766 WO2020190369A1 (en) 2019-03-15 2020-01-23 Disaggregation of soc architecture

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202080014312.1A Division CN113396404A (zh) 2019-03-15 2020-01-23 SoC架构的分解

Publications (1)

Publication Number Publication Date
CN117853311A true CN117853311A (zh) 2024-04-09

Family

ID=69743905

Family Applications (3)

Application Number Title Priority Date Filing Date
CN202080014312.1A Pending CN113396404A (zh) 2019-03-15 2020-01-23 SoC架构的分解
CN202410134206.7A Pending CN117853311A (zh) 2019-03-15 2020-01-23 SoC架构的分解
CN202111335050.1A Pending CN113989099A (zh) 2019-03-15 2020-01-23 SoC架构的分解

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202080014312.1A Pending CN113396404A (zh) 2019-03-15 2020-01-23 SoC架构的分解

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202111335050.1A Pending CN113989099A (zh) 2019-03-15 2020-01-23 SoC架构的分解

Country Status (9)

Country Link
US (6) US10803548B2 (zh)
EP (3) EP3964969B1 (zh)
JP (2) JP2022523342A (zh)
KR (3) KR20210135996A (zh)
CN (3) CN113396404A (zh)
BR (1) BR112021015821A2 (zh)
DK (1) DK3964969T3 (zh)
FI (1) FI3964969T3 (zh)
WO (1) WO2020190369A1 (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10803548B2 (en) 2019-03-15 2020-10-13 Intel Corporation Disaggregation of SOC architecture
US11841803B2 (en) 2019-06-28 2023-12-12 Advanced Micro Devices, Inc. GPU chiplets using high bandwidth crosslinks
US11507527B2 (en) * 2019-09-27 2022-11-22 Advanced Micro Devices, Inc. Active bridge chiplet with integrated cache
US20210098419A1 (en) * 2019-09-27 2021-04-01 Advanced Micro Devices, Inc. Fabricating active-bridge-coupled gpu chiplets
US20220386180A1 (en) * 2019-10-04 2022-12-01 Nippon Telegraph And Telephone Corporation Control apparatus, wireless communication system, communication control method and program
US11232622B2 (en) 2019-11-27 2022-01-25 Advanced Micro Devices, Inc. Data flow in a distributed graphics processing unit architecture
CN111506154B (zh) * 2020-04-14 2021-05-25 深圳比特微电子科技有限公司 计算机提高算力和降低功耗算力比的方法及系统
US11574100B2 (en) * 2020-06-19 2023-02-07 Micron Technology, Inc. Integrated sensor device with deep learning accelerator and random access memory
CN112148670B (zh) * 2020-10-19 2023-12-19 北京大地信合信息技术有限公司 多功能业务板卡以及数据处理方法
US11392448B2 (en) 2020-10-20 2022-07-19 Micron Technology, Inc. Payload parity protection for a synchronous interface
CN116569151A (zh) * 2020-10-20 2023-08-08 美光科技公司 多通道存储器系统
JP2024505396A (ja) * 2021-01-08 2024-02-06 マンタ システムオンチップアーキテクチャ、インターポーザー、fpga及び設計方法
CN112817905A (zh) * 2021-02-05 2021-05-18 中国电子科技集团公司第五十八研究所 互联裸芯、互联微组件、互联微系统及其通信方法
US12001256B2 (en) * 2021-03-09 2024-06-04 Hewlett Packard Enterprise Development Lp Job agent-based power-capping of systems
CN112667557A (zh) * 2021-03-16 2021-04-16 南京蓝洋智能科技有限公司 一种适用于chiplet架构的数据传输方法
US11720521B2 (en) * 2021-03-29 2023-08-08 Alibaba Singapore Holding Private Limited Topologies and algorithms for multi-processing unit interconnected accelerator systems
US20220320042A1 (en) * 2021-03-30 2022-10-06 Advanced Micro Devices, Inc. Die stacking for modular parallel processors
US11481343B1 (en) 2021-04-02 2022-10-25 Micron Technology, Inc. Transporting request types with different latencies
US11488935B1 (en) * 2021-05-07 2022-11-01 Applied Materials, Inc. Scalable network-on-package for connecting chiplet-based designs
JP2024519267A (ja) * 2021-05-07 2024-05-10 グーグル エルエルシー 機械学習ワークロードの非同期分散データフロー
CN115686164A (zh) * 2021-07-26 2023-02-03 瑞昱半导体股份有限公司 供电端装置、供电系统以及非暂态电脑可读取媒体
US11894356B2 (en) * 2021-08-17 2024-02-06 Macronix International Co., Ltd. Chip having multiple functional units and semiconductor structure using the same
WO2023049123A1 (en) * 2021-09-21 2023-03-30 The Regents Of The University Of California Reliable and fault-tolerant clock generation and distribution for chiplet-based waferscale processors
WO2023097298A1 (en) * 2021-11-23 2023-06-01 University Of South Florida Electronic component authenticity identification system and related methods
CN114286119B (zh) * 2021-12-03 2023-12-26 北京达佳互联信息技术有限公司 数据处理方法、装置、服务器、终端、系统及存储介质
CN114780227B (zh) * 2022-06-20 2022-09-23 中国人民解放军国防科技大学 一种基于芯粒化网络处理器架构的任务调度映射方法及系统
CN114970409A (zh) * 2022-07-27 2022-08-30 北极雄芯信息科技(西安)有限公司 基于多管芯互联的集成电路
CN115248796B (zh) * 2022-07-28 2023-08-04 芯砺智能科技(上海)有限公司 用于芯粒到芯粒互连的总线流水线结构和芯片
US20240152657A1 (en) * 2022-11-08 2024-05-09 Google Llc Method and Apparatus for Integrated Information Technology Services Management Controller
CN117237182B (zh) * 2023-11-16 2024-02-13 武汉凌久微电子有限公司 一种基于批量片段处理的rop单元组处理方法
CN118069581A (zh) * 2024-01-18 2024-05-24 深圳市遇贤微电子有限公司 基于芯粒技术的处理器及其运行方法、电子设备、介质
CN118377730B (zh) * 2024-06-25 2024-09-20 成都凯天电子股份有限公司 一种基于fpga的多通道高速数据缓存系统及方法

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7296174B2 (en) * 2002-10-11 2007-11-13 Broadcom Corporation Apparatus and method to interface two different clock domains
US7873812B1 (en) 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
KR100867640B1 (ko) * 2007-02-06 2008-11-10 삼성전자주식회사 다중 접근 경로를 가지는 이미지 프로세싱 메모리를포함하는 시스템 온 칩
US9218290B2 (en) * 2009-04-27 2015-12-22 Intel Corporation Data caching in a network communications processor architecture
US10095548B2 (en) 2012-05-21 2018-10-09 Nvidia Corporation Mechanism for waking common resource requests within a resource management subsystem
US9063727B2 (en) * 2012-08-31 2015-06-23 Intel Corporation Performing cross-domain thermal control in a processor
US8922571B2 (en) * 2012-09-11 2014-12-30 Apple Inc. Display pipe request aggregation
US8701073B1 (en) * 2012-09-28 2014-04-15 Taiwan Semiconductor Manufacturing Co., Ltd. System and method for across-chip thermal and power management in stacked IC designs
US9071765B2 (en) * 2012-12-28 2015-06-30 Nvidia Corporation System, method, and computer program product implementing an image processing pipeline for high-dynamic range images
US9195630B2 (en) 2013-03-13 2015-11-24 International Business Machines Corporation Three-dimensional computer processor systems having multiple local power and cooling layers and a global interconnection structure
US9106229B1 (en) 2013-03-14 2015-08-11 Altera Corporation Programmable interposer circuitry
US9000599B2 (en) * 2013-05-13 2015-04-07 Intel Corporation Multichip integration with through silicon via (TSV) die embedded in package
US10223333B2 (en) 2014-08-29 2019-03-05 Nvidia Corporation Performing multi-convolution operations in a parallel processing system
US9548289B2 (en) * 2014-09-15 2017-01-17 Mediatek Inc. Semiconductor package assemblies with system-on-chip (SOC) packages
US9514093B2 (en) * 2014-09-26 2016-12-06 Intel Corporation Method and apparatus for stacking core and uncore dies having landing slots
US9640521B2 (en) * 2014-09-30 2017-05-02 Taiwan Semiconductor Manufacturing Company, Ltd. Multi-die package with bridge layer and method for making the same
US9570399B2 (en) * 2014-12-23 2017-02-14 Mediatek Inc. Semiconductor package assembly with through silicon via interconnect
US9860841B2 (en) * 2015-08-20 2018-01-02 Apple Inc. Communications fabric with split paths for control and data packets
US10483250B2 (en) * 2015-11-04 2019-11-19 Intel Corporation Three-dimensional small form factor system in package architecture
US10984838B2 (en) * 2015-11-17 2021-04-20 Advanced Micro Devices, Inc. Interconnect architecture for three-dimensional processing systems
US10090236B2 (en) * 2016-01-13 2018-10-02 Advanced Micro Devices, Inc. Interposer having a pattern of sites for mounting chiplets
GB2551748B (en) * 2016-06-29 2020-09-09 Advanced Risc Mach Ltd Power control circuitry for controlling power domains
US10528864B2 (en) 2016-08-11 2020-01-07 Nvidia Corporation Sparse convolutional neural network accelerator
US10891538B2 (en) 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
EP3288076B1 (en) * 2016-08-25 2021-06-23 IMEC vzw A semiconductor die package and method of producing the package
KR102393946B1 (ko) * 2016-10-07 2022-05-03 엑셀시스 코포레이션 직접-접합된 네이티브 상호접속부 및 능동 베이스 다이
US11289443B2 (en) * 2017-04-20 2022-03-29 Palo Alto Research Center Incorporated Microspring structure for hardware trusted platform module
US10483156B2 (en) * 2017-11-29 2019-11-19 International Business Machines Corporation Non-embedded silicon bridge chip for multi-chip module
US11625245B2 (en) * 2018-09-28 2023-04-11 Intel Corporation Compute-in-memory systems and methods
US10461076B1 (en) * 2018-10-24 2019-10-29 Micron Technology, Inc. 3D stacked integrated circuits having functional blocks configured to accelerate artificial neural network (ANN) computation
US10840240B2 (en) * 2018-10-24 2020-11-17 Micron Technology, Inc. Functional blocks implemented by 3D stacked integrated circuit
US10803548B2 (en) 2019-03-15 2020-10-13 Intel Corporation Disaggregation of SOC architecture

Also Published As

Publication number Publication date
BR112021015821A2 (pt) 2021-11-03
US20240013338A1 (en) 2024-01-11
US20220036500A1 (en) 2022-02-03
CN113396404A (zh) 2021-09-14
FI3964969T3 (fi) 2024-09-17
US12112398B2 (en) 2024-10-08
KR20240017972A (ko) 2024-02-08
US10803548B2 (en) 2020-10-13
KR20210135996A (ko) 2021-11-16
JP2024041918A (ja) 2024-03-27
JP2022523342A (ja) 2022-04-22
WO2020190369A1 (en) 2020-09-24
EP3964969B1 (en) 2024-07-03
US11756150B2 (en) 2023-09-12
EP4328971A2 (en) 2024-02-28
US11410266B2 (en) 2022-08-09
US20240005443A1 (en) 2024-01-04
US20220180468A1 (en) 2022-06-09
US20210133913A1 (en) 2021-05-06
EP4328971A3 (en) 2024-05-15
JP2022070229A (ja) 2022-05-12
KR20210137231A (ko) 2021-11-17
US12056789B2 (en) 2024-08-06
US11763416B2 (en) 2023-09-19
US20200294181A1 (en) 2020-09-17
EP3964969A1 (en) 2022-03-09
DK3964969T3 (da) 2024-09-23
EP3938918A1 (en) 2022-01-19
CN113989099A (zh) 2022-01-28

Similar Documents

Publication Publication Date Title
US12112398B2 (en) Disaggregation of system-on-chip (SOC) architecture
US11386521B2 (en) Enabling product SKUS based on chiplet configurations
CN113366454A (zh) 用于图形操作的多片架构
CN111694601A (zh) 使用细粒度依赖性检查加速同步并基于可用共享存储器空间调度优化的图形系统和方法
CN113711185A (zh) 抢占式页故障处理
CN113066042A (zh) 用于评估3d点云的质量的装置和方法
CN113495793A (zh) 用于缓冲器共享的方法和装置
CN115526760A (zh) 用于动态地改变高速缓存中的数据优先级的方法和装置
CN112785482A (zh) 用于将可执行对象适配到处理单元的系统和方法
CN112785481A (zh) 动态分割激活和核以提高存储器效率
CN113256745A (zh) 用于基于重要度值来编码的方法和装置
CN117121045A (zh) 空间接近数据的压缩和交织
CN115526765A (zh) 用于多个图形处理单元的排序中间架构
CN115509830A (zh) 用于为重叠的高速缓存行防止停止的伺机晚期深度测试
JP7570997B2 (ja) Socアーキテクチャの分解
CN117223027A (zh) 将重心平面转换为属性平面
CN115511691A (zh) 像素流水线上的类型化乱序访问视图过载
CN115794228A (zh) 用于点云处理的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination