CN110389783A - 用于具有累加的收缩点积的指令和逻辑 - Google Patents

用于具有累加的收缩点积的指令和逻辑 Download PDF

Info

Publication number
CN110389783A
CN110389783A CN201910207919.0A CN201910207919A CN110389783A CN 110389783 A CN110389783 A CN 110389783A CN 201910207919 A CN201910207919 A CN 201910207919A CN 110389783 A CN110389783 A CN 110389783A
Authority
CN
China
Prior art keywords
instruction
dot product
logic
unit
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
CN201910207919.0A
Other languages
English (en)
Inventor
S·马余兰
路奎元
S·帕尔
A·加吉
C·S·古拉姆
J·E·帕拉
J·顾
K·特里芬诺维奇
H·B·廖
M·B·麦克弗森
S·B·沙阿
S·马瓦哈
S·琼金斯
T·R·鲍尔
V·乔治
W·陈
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 CN110389783A publication Critical patent/CN110389783A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

本申请公开了用于具有累加的收缩点积的指令和逻辑。本文所描述的实施例提供了一种指令和相关联逻辑,以使GPGPU程序代码能够访问专用硬件逻辑从而加速点积运算。一个实施例提供了一种图形处理单元,所述图形处理单元包括用于取出指令以便执行的取出单元以及用于将所述指令解码成经解码指令的解码单元。所述经解码指令是用于使所述图形处理单元执行并行点积运算的矩阵指令。所述GPGPU还包括用于使用多个收缩层来跨一个或多个SIMD通道执行所述经解码指令的收缩点积单元,其中,为了执行所述经解码指令,在第一收缩层处计算的点积将被输出到第二收缩层,其中,每个收缩层包括一组或多组互连的乘法器与加法器,每组乘法器与加法器用于生成点积。

Description

用于具有累加的收缩点积的指令和逻辑
背景技术
神经网络可以被建模为在非循环图中连接的神经元集合。神经网络可以接收输入(单个向量)并通过一系列隐藏层对其进行变换。每个隐藏层由一组神经元组成,其中,每个神经元完全连接到前一层中的所有神经元,并且其中,单个层中的神经元完全独立地起作用并且不共享任何连接。卷积神经网络(CNN)类似于标准神经网络。每个神经元接收一些输入、执行点积、并且可选地非线性地跟随所述点积。然而,CNN被明确定制成用于处理输入图像数据。基于原始图像数据输入,网络输出输入数据的分类分数。
被配置用于执行神经网络处理的并行数据处理系统可以包括图形处理器,所述图形处理器可以被配置用于对图形数据执行指定操作,诸如例如,线性插值、曲面细分、光栅化、纹理映射、深度测试等。部分图形处理器可以被制成是可编程的,使得这种处理器能够支持广泛的操作以处理顶点和片段数据。可以利用图形处理器内的完全可编程执行单元来执行各种并行处理操作。然而,为了最大化吞吐量,图形处理器可以使用专门的固定功能逻辑单元来执行一些操作。
附图说明
为了能够详细理解本发明的特征,可以通过参照实施例来对本发明进行更具体的描述,其中一些实施例在附图中展示。然而,要注意的是,附图仅展示了典型的实施例,并且因此不被认为是对全部实施例的范围的限制。
图1是根据实施例的处理系统的框图;
图2是根据实施例的处理器的框图;
图3是根据实施例的图形处理器的框图;
图4是根据一些实施例的图形处理器的图形处理引擎的框图;
图5是根据本文所描述的一些实施例的图形处理器核的硬件逻辑的框图;
图6A至图6B展示了根据本文所描述的实施例的包括在图形处理器核中所采用的处理元件阵列的线程执行逻辑;
图7是框图,展示了根据一些实施例的图形处理器指令格式;
图8是根据另一个实施例的图形处理器的框图。
图9A至图9B展示了根据一些实施例的图形处理器命令格式和命令序列;
图10展示了根据一些实施例的数据处理系统的示例性图形软件架构;
图11A是框图,展示了根据实施例的IP核开发系统;
图11B展示了根据本文所描述的一些实施例的集成电路封装体组件的截面侧视图;
图12是框图,展示了根据实施例的示例性芯片上系统集成电路;
图13A至图13B是框图,展示了根据本文所描述的实施例的用于在SoC内使用的示例性图形处理器;
图14A至图14B展示了根据本文所描述的实施例的附加示例性图形处理器逻辑;
图15是根据实施例的数据处理系统的框图;
图16展示了根据实施例的由指令流水线执行的矩阵运算;
图17A至图17B展示了根据一些实施例的基于硬件的点积逻辑的细节;
图18A至图18B展示了根据本文所描述的实施例的可由点积逻辑执行的指令;
图19展示了根据实施例的程序代码编译过程;
图20展示了根据本文所描述的实施例的用于在指令执行流水线内执行点积指令的过程;
图21展示了根据实施例的一种方法,通过所述方法,功能单元处的硬件逻辑可以执行指令以执行具有累加的收缩点积;并且
图22是根据本文所描述的实施例的计算装置的框图。
具体实施方式
可以对现有的图形和计算着色器程序进行编译以使用在通用图形处理单元(GPGPU)内的通用图形执行单元上执行的指令来执行操作。对于某些专门操作(诸如机器学习指定操作),GPGPU内的通用执行单元可以经由专用硬件逻辑来进行增强以加速指定操作。本文所描述的实施例提供了一种指令和相关联逻辑,以使针对GPGPU执行的程序代码能够访问专用硬件逻辑从而加速点积运算。
出于解释的目的,阐述了许多具体的细节以便提供对以下所述的各实施例的透彻理解。然而,对于本领域技术人员而言,可以在不具有这些具体细节中的一些细节的情况下实践本实施例将是明显的。在其他情况下,以框图的形式示出公知的结构和装置以避免模糊基本原理并提供对实施例的更透彻的理解。尽管以下实施例中的一些引用图形处理器来描述,但是本文所描述的技术和教导可适用于各种类型的电路或半导体装置,包括通用处理装置或图形处理装置。本文对“一个实施例(one embodiment)”或“实施例(anembodiment)”的引用指示结合所述实施例或与所述实施例相关联地描述的具体特征、结构或特性可以被包括在这类实施例中的至少一个实施例中。然而,说明书中各种地方出现的短语“在一个实施例中(in one embodiment)”不一定全都指代相同的实施例。
在以下说明书和权利要求中,可以使用术语“耦合”和“连接”及其衍生词。应当理解,这些术语并不意为彼此的同义词。“耦合”用于指示彼此协作或相互作用的彼此之间可能或可能不直接物理或电接触的两个或更多个元件。“连接”用于指示彼此耦合的两个或更多个元件之间的通信的建立。
在接下来的说明中,图1至图14提供了对结合各个实施例或与其相关的示例性数据处理系统和图形处理器逻辑的概述。图15至图22提供了各个实施例的具体细节。以下实施例的一些方面是参照图形处理器进行描述的,而其他方面是关于诸如中央处理单元(CPU)等通用处理器进行描述的。类似的技术和教导可以应用于其他类型的电路或半导体器件,包括但不限于集成众核处理器、GPU集群、或现场可编程门阵列(FPGA)的一个或多个实例。一般而言,这些教导适用于对图像(例如,样本、像素)、顶点数据、或几何数据进行操控或处理的任何处理器或机器。
系统概述
图1是根据实施例的处理系统100的框图。在各实施例中,系统100包括一个或多个处理器102以及一个或多个图形处理器108,并且可以是单处理器台式系统、多处理器工作站系统或具有大量处理器102或处理器核107的服务器系统。在一个实施例中,系统100是被并入用于在移动装置、手持式装置或嵌入式装置内使用的芯片上系统(SoC)集成电路内的处理平台。
在一个实施例中,系统100可以包括基于服务器的游戏平台、游戏控制台,或被并入基于服务器的游戏平台、游戏控制台内,该游戏控制台包括游戏与媒体控制台、移动游戏控制台、手持式游戏控制台、或在线游戏控制台。在一些实施例中,系统100是移动电话、智能电话、平板计算装置或移动互联网装置。处理系统100还可以包括可穿戴装置、与可穿戴装置耦合、或者集成在可穿戴装置中,该可穿戴装置诸如智能手表可穿戴装置、智能眼镜装置、增强现实装置、或虚拟现实装置。在一些实施例中,处理系统100是电视或机顶盒装置,该电视或机顶盒装置具有一个或多个处理器102以及由一个或多个图形处理器108生成的图形界面。
在一些实施例中,一个或多个处理器102各自包括用于处理指令的一个或多个处理器核107,这些指令在被执行时执行系统和用户软件的操作。在一些实施例中,一个或多个处理器核107中的每个处理器核被配置成用于处理特定的指令集109。在一些实施例中,指令集109可促进复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW)的计算。多个处理器核107可各自处理不同的指令集109,该指令集109可包括用于促进对其他指令集进行仿真的指令。处理器核107还可包括其他处理装置,诸如,数字信号处理器(DSP)。
在一些实施例中,处理器102包括高速缓存存储器104。取决于架构,处理器102可以具有单个内部高速缓存或多个层级的内部高速缓存。在一些实施例中,在处理器102的各部件之间共享高速缓存存储器。在一些实施例中,处理器102还使用外部高速缓存(例如,第3级(L3)高速缓存或末级高速缓存(LLC))(未示出),可使用已知的高速缓存一致性技术在处理器核107之间共享外部高速缓存。另外,寄存器堆106被包括在处理器102中,该处理器102可包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器、以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可特定于处理器102的设计。
在一些实施例中,一个或多个处理器102与一个或多个接口总线110耦合,以在处理器102与系统100中的其他部件之间传输诸如地址、数据、或控制信号之类的通信信号。在一个实施例中,接口总线110可以是处理器总线,诸如,直接媒体接口(DMI)总线的版本。然而,处理器总线不限于DMI总线,并且可包括一个或多个外围部件互连总线(例如,PCI、PCI快速)、存储器总线或其他类型的接口总线。在一个实施例中,(多个)处理器102包括集成存储器控制器116和平台控制器中枢130。存储器控制器116促进存储器装置与系统100的其他部件之间的通信,而平台控制器中枢(PCH)130提供经由本地I/O总线至I/O装置的连接。
存储器装置120可以是动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪存装置、相变存储器装置、或具有合适的性能以充当进程存储器的某种其他存储器装置。在一个实施例中,存储器装置120可以作为系统100的系统存储器来进行操作,以存储数据122和指令121,以供在一个或多个处理器102执行应用或进程时使用。存储器控制器116还与任选的外部图形处理器112耦合,该任选的外部图形处理器112可与处理器102中的一个或多个图形处理器108通信以执行图形和媒体操作。在一些实施例中,显示装置111可以连接至(多个)处理器102。显示装置111可以是以下各项中的一项或多项:内部显示装置,如在移动电子装置或膝上型装置中;或经由显示接口(例如,显示端口(DisplayPort)等)附接的外部显示装置。在一个实施例中,显示装置111可以是头戴式显示器(HMD),诸如用于在虚拟现实(VR)应用或增强现实(AR)应用中使用的立体显示装置。
在一些实施例中,平台控制器中枢130启用外围装置以经由高速I/O总线连接到存储器装置120和处理器102。I/O外围装置包括但不限于音频控制器146、网络控制器134、固件接口128、无线收发机126、触摸传感器125、数据存储装置124(例如,硬盘驱动器、闪存等)。数据存储装置124可以经由存储接口(例如,SATA)或经由诸如外围部件互连总线(例如,PCI、PCI快速)之类的外围总线来进行连接。触摸传感器125可以包括触摸屏传感器、压力传感器、或指纹传感器。无线收发机126可以是Wi-Fi收发机、蓝牙收发机、或者诸如3G、4G或长期演进(LTE)收发机之类的移动网络收发机。固件接口128实现与系统固件的通信,并且可以是例如统一可扩展固件接口(UEFI)。网络控制器134可以实现到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线110耦合。在一个实施例中,音频控制器146是多通道高清音频控制器。在一个实施例中,系统100包括任选的用于将传统(legacy)(例如,个人系统2(PS/2))装置耦合至系统的传统I/O控制器140。平台控制器中枢130还可以连接至一个或多个通用串行总线(USB)控制器142连接输入装置,这些输入装置诸如键盘和鼠标143的组合、相机144或其他USB输入装置。
将会领会,所示的系统100是示例性的而非限制性的,因为也可使用以不同方式配置的其他类型的数据处理系统。例如,存储器控制器116和平台控制器中枢130的实例可被集成到诸如外部图形处理器112之类的分立的外部图形处理器中。在一个实施例中,平台控制器中枢130和/或存储器控制器116可在一个或多个处理器102外部。例如,系统100可以包括外部存储器控制器116和平台控制器中枢130,该外部存储器控制器116和平台控制器中枢130可被配置为在与(多个)处理器102通信的系统芯片组内的存储器控制器中枢和外围控制器中枢。
图2是处理器200的实施例的框图,该处理器200具有一个或多个处理器核202A-202N、集成存储器控制器214、以及集成图形处理器208。图2的具有与本文中任何其他附图的元件相同的附图标记(或名称)的那些元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。处理器200可包括附加核,这些附加核多达且包括由虚线框表示的附加核202N。处理器核202A-202N中的每一个都包括一个或多个内部高速缓存单元204A-204N。在一些实施例中,每个处理器核还可访问一个或多个共享高速缓存单元206。
内部高速缓存单元204A-204N和共享高速缓存单元206表示处理器200内的高速缓存存储器层级结构。高速缓存存储器层级结构可包括每个处理器核内的至少一个层级的指令和数据高速缓存、以及一个或多个层级的共享中级高速缓存,诸如,第2级(L2)、第3级(L3)、第4级(L4)、或其他层级的高速缓存,其中,在外部存储器之前的最高层级的高速缓存被分类为LLC。在一些实施例中,高速缓存一致性逻辑维持各高速缓存单元206与204A-204N之间的一致性。
在一些实施例中,处理器200还可包括一组一个或多个总线控制器单元216和系统代理核210。一个或多个总线控制器单元216管理一组外围总线,诸如,一个或多个PCI或PCI快速总线。系统代理核210提供对各处理器部件的管理功能。在一些实施例中,系统代理核210包括一个或多个集成存储器控制器214,以管理对各外部存储器装置(未示出)的访问。
在一些实施例中,处理器核202A-202N中的一个或多个包括对同时多线程的支持。在此类实施例中,系统代理核210包括用于在多线程处理期间对核202A-202N进行协调和操作的部件。系统代理核210可附加地包括功率控制单元(PCU),该功率控制单元包括用于调节处理器核202A-202N以及图形处理器208的功率状态的逻辑和部件。
在一些实施例中,处理器200附加地包括用于执行图形处理操作的图形处理器208。在一些实施例中,图形处理器208与共享高速缓存单元的集合206以及系统代理核210耦合,该系统代理核210包括一个或多个集成存储器控制器214。在一些实施例中,系统代理核210还包括显示控制器211,以将图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器211还可以是经由至少一个互连与图形处理器耦合的分开的模块,或者可被集成在图形处理器208内。
在一些实施例中,基于环的互连单元212用于耦合处理器200的内部部件。然而,可使用替代的互连单元,诸如,点对点互连、切换式互连、或其他技术,包括本领域公知的技术。在一些实施例中,图形处理器208经由I/O链路213与环形互连212耦合。
示例性I/O链路213表示各种各样的I/O互连中的至少一者,包括促进各处理器部件与高性能嵌入式存储器模块218(诸如,eDRAM模块)之间的通信的封装上I/O互连。在一些实施例中,处理器核202A-202N中的每个处理器核以及图形处理器208将嵌入式存储器模块218用作共享末级高速缓存。
在一些实施例中,处理器核202A-202N是执行同一指令集架构的同构核。在另一实施例中,处理器核202A-202N就指令集架构(ISA)而言是异构的,其中,处理器核202A-202N中的一者或多者执行第一指令集,而其他核中的至少一者执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核202A-202N就微架构而言是同质的,其中,具有相对较高功耗的一个或多个核与具有较低功耗的一个或多个功率核耦合。另外,处理器200可被实现在一个或多个芯片上或者被实现为除其他部件之外还具有所图示的部件的SoC集成电路。
图3是图形处理器300的框图,该图形处理器300可以是分立的图形处理单元、或者可以是与多个处理核集成的图形处理器。在一些实施例中,图形处理器经由至图形处理器上的寄存器的存储器映射的I/O接口并且利用被置入处理器存储器中的命令进行通信。在一些实施例中,图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存、和/或到系统存储器的接口。
在一些实施例中,图形处理器300还包括用于将显示输出数据驱动到显示装置320的显示控制器302。显示控制器302包括用于显示器的一个或多个重叠平面以及视频或用户接口元件的多个层的组合的硬件。显示装置320可以是内部或外部显示装置。在一个实施例中,显示装置320是头戴式显示装置,诸如,虚拟现实(VR)显示装置或增强现实(AR)显示装置。在一些实施例中,图形处理器300包括视频编解码器引擎306,以将媒体编码、解码或转码为一种或多种媒体编码格式,从一种或多种媒体编码格式编码、解码或转码媒体,或在一种或多种媒体编码格式之间进行对媒体进行编码、解码或转码,这些媒体编码格式包括但不限于:运动图像专家组(MPEG)格式(诸如,MPEG-2)、高级视频译码(AVC)格式(诸如,H.264/MPEG-4AVC)、以及电影&电视工程师协会(SMPTE)421M/VC-1、和联合图像专家组(JPEG)格式(诸如,JPEG、以及运动JPEG(MJPEG)格式)。
在一些实施例中,图形处理器300包括用于执行包括例如位边界块传递的二维(2D)光栅化器操作的块图像传递(BLIT)引擎304。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个部件执行2D图形操作。在一些实施例中,GPE 310是用于执行图形操作的计算引擎,这些图形操作包括三维(3D)图形操作和媒体操作。
在一些实施例中,GPE 310包括用于执行3D操作的3D流水线312,3D操作诸如,使用作用于3D图元形状(例如,矩形、三角形等)的处理功能来渲染三维图像和场景。3D流水线312包括可编程的固定功能元件,这些可编程的固定功能元件执行元件内的各种任务和/或将执行线程生成(spawn)至3D/媒体子系统315。虽然3D流水线312可以用于执行媒体操作,但是GPE 310的实施例还包括专门用于执行诸如视频后处理和图像增强之类的媒体操作的媒体流水线316。
在一些实施例中,媒体流水线316包括固定功能或可编程逻辑单元以便代替、或代表视频编解码器引擎306来执行一种或多种专业的媒体操作,诸如,视频解码加速、视频解交织、以及视频编码加速。在一些实施例中,媒体流水线316附加地包括用于生成供在3D/媒体子系统315上执行的线程的线程生成单元。所生成的线程对3D/媒体子系统315中所包括的一个或多个图形执行单元执行对媒体操作的计算。
在一些实施例中,3D/媒体子系统315包括用于执行由3D流水线312和媒体流水线316生成的线程的逻辑。在一个实施例中,流水线向3D/媒体子系统315发送线程执行请求,该3D/媒体子系统包括用于仲裁并将各请求分派到可用的线程执行资源的线程分派逻辑。执行资源包括用于处理3D和媒体线程的图形执行单元阵列。在一些实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,子系统还包括用于在线程之间共享数据并用于存储输出数据的共享存储器,包括寄存器和可寻址存储器。
图形处理引擎
图4是根据一些实施例的图形处理器的图形处理引擎410的框图。在一个实施例中,图形处理引擎(GPE)410是图3中所示的GPE 310的一个版本。图4的具有与本文中任何其他附图的元件相同的附图标记(或名称)的那些元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。例如,图示了图3的3D流水线312和媒体流水线316。媒体流水线316在GPE 410的一些实施例中是任选的,并且可以不显式地包括在GPE 410内。例如以及在至少一个实施例中,单独的媒体和/或图像处理器耦合至GPE 410。
在一些实施例中,GPE 410与命令流转化器403耦合或包括命令流转化器403,该命令流转化器403向3D流水线312和/或媒体流水线316提供命令流。在一些实施例中,命令流转化器403与存储器耦合,该存储器可以是系统存储器、或者是内部高速缓存存储器和共享高速缓存存储器中的一者或多者。在一些实施例中,命令流转化器403从存储器接收命令并将这些命令发送至3D流水线312和/或媒体流水线316。这些命令是从存储用于3D流水线312和媒体流水线316的环形缓冲器取出的指示。在一个实施例中,环形缓冲器可以附加地包括存储多批多个命令的批命令缓冲器。用于3D流水线312的命令还可以包括对在存储器中存储的数据的引用,诸如但不限于用于3D流水线312的顶点数据和几何数据和/或用于媒体流水线316的图像数据和存储器对象。3D流水线312和媒体流水线316通过以下方式来处理命令和数据:经由相应流水线内的逻辑来执行操作;或将一个或多个执行线程分派给图形核阵列414。在一个实施例中,图形核阵列414包括一个或多个图形核块(例如,(多个)图形核415A、(多个)图形核415B),每个块包括一个或多个图形核。每个图形核包括一组图形执行资源,这些图形执行资源包括:用于执行图形操作和计算操作的通用执行逻辑和图形专用执行逻辑;以及固定功能纹理处理逻辑和/或机器学习和人工智能加速逻辑。
在各实施例中,3D流水线312包括:固定功能逻辑和可编程逻辑,用于通过处理指令并将执行线程分派给图形核阵列414来处理一个或多个着色器程序,该着色器程序诸如,顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其他着色器程序。图形核阵列414提供了供在处理这些着色器程序时使用的统一的执行资源块。图形核阵列414的(多个)图形核415A-414B内的多用途执行逻辑(例如,执行单元)包括对各种3D API着色器语言的支持,并且可以执行与多个着色器相关联的多个同时的执行线程。
在一些实施例中,图形核阵列414还包括用于执行诸如视频和/或图像处理之类的媒体功能的执行逻辑。在一个实施例中,执行单元附加地包括通用逻辑,除了图形处理操作之外,该通用逻辑还可编程以执行并行通用计算操作。通用逻辑可以与图1的(多个)处理器核107或如图2中的核202A-202N内的通用逻辑并行地或结合地执行处理操作。
由在图形核阵列414上执行的线程生成的输出数据可以将数据输出到统一返回缓冲器(URB)418中的存储器。URB 418可以存储多个线程的数据。在一些实施例中,URB 418可用于在图形核阵列414上执行的不同线程之间发送数据。在一些实施例中,URB 418可另外用于图形核阵列上的线程与共享功能逻辑420内的固定功能逻辑之间的同步。
在一些实施例中,图形核阵列414是可缩放的,以使得该阵列包括可变数量的图形核,这些图形核各自具有基于GPE 410的目标功率和性能水平的可变数量的执行单元。在一个实施例中,执行资源是动态可缩放的,以使得该执行资源可根据需要而被启用或禁用。
图形核阵列414与共享功能逻辑420耦合,该共享功能逻辑420包括在图形核阵列中的图形核之间共享的多个资源。共享功能逻辑420内的共享功能是向图形核阵列414提供专业的补充功能的硬件逻辑单元。在各实施例中,共享功能逻辑420包括但不限于采样器421、数学422和线程间通信(ITC)423逻辑。另外,一些实施例实现共享功能逻辑420内的一个或多个高速缓存425。
在给定的专业功能的需求不足以包含在图形核阵列414中的情况下实施共享功能。相反,该专业功能的单个实例化被实现为共享功能逻辑420中的独立实体并且在图形核阵列414内的执行资源之间共享。在图形核阵列414之间共享并包括在图形核阵列414内的精确的功能的集合在跨实施例而变化。在一些实施例中,共享功能逻辑420内由图形核阵列414广泛使用的特定共享功能可被包括在图形核阵列414内的共享功能逻辑416内。在各实施例中,图形核阵列414内的共享功能逻辑416可以包括共享功能逻辑420内的一些或所有逻辑。在一个实施例中,共享功能逻辑420内的所有逻辑元件可在图形核阵列414的共享功能逻辑416内重复。在一个实施例中,共享功能逻辑420被排除以有利于图形核阵列414内的共享功能逻辑416。
图5是根据本文中所描述的一些实施例的图形处理器核500的硬件逻辑的框图。图5的具有与本文中任何其他附图的元件相同的附图标记(或名称)的元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。在一些实施例中,所图示的图形处理器核500被包括在图4的图形核阵列414内。图形处理器核500——有时称为核切片——可以是模块化图形处理器内的一个或多个图形核。图形处理器核500是示例性的一个图形核切片,并且如本文中所描述的图形处理器可包括基于目标功率和性能包络的多个图形核切片。每个图形核500可以包括与多个子核501A-501F(也被称为子切片)耦合的固定功能块530,这些子核包括模块化通用和固定功能逻辑块。
在一些实施例中,固定功能块530包括几何/固定功能流水线536,例如,在低性能和/或低功率图形处理器实施方式中,该几何/固定功能流水线536可以由图形处理器500中的所有子核共享。在各实施例中,几何/固定功能流水线536包括3D固定功能流水线(例如,如图3和图4中的3D流水线312)、视频前端单元、线程生成器和线程分派器、以及统一返回缓冲器管理器,该统一返回缓冲器管理器管理诸如图4的统一返回缓冲器418之类的统一返回缓冲器。
在一个实施例中,固定功能块530还包括图形SoC接口537、图形微控制器538和媒体流水线539。图形SoC接口537提供了图形核500与芯片上系统集成电路内的其他处理器核之间的接口。图形微控制器538是可配置成用于管理图形处理器500的包括线程分派、调度和先占(pre-emption)在内的各种功能的可编程子处理器。媒体流水线539(例如,图3和图4的媒体流水线316)包括用于促进对包括图像数据和视频数据在内的多媒体数据进行解码、编码、预处理和/或后处理的逻辑。媒体流水线539经由对子核501-501F内的计算或采样逻辑的请求来实现媒体操作。
在一个实施例中,SoC接口537使得图形核500能够与通用应用处理器核(例如,CPU)和/或SoC内的其他部件进行通信,这些其他部件包括诸如共享末级高速缓存存储器之类的存储器层级结构元件、系统RAM、和/或嵌入式芯片上或封装上DRAM。SoC接口537还可以使得能够与SoC内诸如相机成像流水线之类的固定功能装置进行通信,并且使得能够使用和/或实现可在图形核500与SoC内的CPU之间共享的全局存储器原子。SoC接口537还可以实现针对图形核500的功率管理控制,并且实现图形核500的时钟域与SoC内的其他时钟域之间的接口。在一个实施例中,SoC接口537实现命令缓冲器的从被配置成向图形处理器内的一个或多个图形核中的每个图形核提供命令和指令的命令流转化器和全局线程分派器的接收。当媒体操作将要被执行时,这些命令和指令可以被分派给媒体流水线539,或者当图形处理操作将要被执行时,这些命令和指令可以被分派给几何和固定功能流水线(例如,几何和固定功能流水线536、几何和固定功能流水线514)。
图形微控制器538可以被配置成用于执行针对图形核500的各种调度任务和管理任务。在一个实施例中,图形微控制器538可以对子核501A-501F内的执行单元(EU)阵列502A-502F、504A-504F内的各图形并行引擎执行图形和/或计算工作负荷调度。在这种调度模型中,在包括图形核500的SoC的CPU核上执行的主机软件可以经由多个图形处理器门铃(doorbell)中的一个来提交工作负荷,这调用了对适当图形引擎的调度操作。调度操作包括:确定接下来要运行哪个工作负荷、向命令流转化器提交工作负荷、对在引擎上运行的现有工作负荷进行先占、监测工作负荷的进展、以及通知主机软件何时完成工作负荷。在一个实施例中,图形微控制器538还可以促进图形核500的低功率或空闲状态,从而为图形核500提供独立于操作系统和/或系统上的图形驱动器软件跨低功率状态转换来对图形核500内的寄存器进行保存和恢复的能力。
图形核500可具有多于或少于所图示的子核501A-501F的、多达N个的模块化子核。对于每个N个子核的集合,图形核500还可以包括共享功能逻辑510、共享和/或高速缓存存储器512、几何/固定功能流水线514、以及用于加速各种图形和计算处理操作的附加固定功能逻辑516。共享功能逻辑510可以包括与图4的共享功能逻辑420相关联的逻辑单元(例如,采样器逻辑、数学逻辑、和/或线程间通信逻辑),这些逻辑单元可由图形核500内的每N个子核共享。共享和/或高速缓存存储器512可以是用于图形核500内的N个子核501A-501F的集合的末级高速缓存,并且还可以充当可由多个子核访问的共享存储器。几何/固定功能流水线514可以代替几何/固定功能流水线536被包括在固定功能块530内,并且可以包括相同的或类似的逻辑单元。
在一个实施例中,图形核500包括附加固定功能逻辑516,该附加固定功能逻辑516可以包括用于由图形核500使用的各种固定功能加速逻辑。在一个实施例中,附加固定功能逻辑516包括用于在仅位置着色中使用的附加几何流水线。在仅位置着色中,存在两个几何流水线:几何/固定功能流水线516、536内的完全几何流水线;以及拣选流水线,该拣选流水线是可被包括在附加固定功能逻辑516内的附加几何流水线。在一个实施例中,拣选流水线是完全几何流水线的精简版本。完全流水线和拣选流水线可以执行同一应用的不同实例,每个实例具有单独的上下文。仅位置着色可以隐藏被丢弃的三角形的长拣选运行,从而使得在一些实例中能够更早完成着色。例如并且在一个实施例中,附件固定功能逻辑516内的拣选流水线逻辑可以与主应用并行地执行位置着色器,并且一般比完全流水线更快地生成关键结果,因为完全流水线仅对顶点的位置属性进行取出和着色,而不向帧缓冲器执行对像素的光栅化和渲染。拣选流水线可以使用所生成的关键结果来计算所有三角形的可见性信息,而无需考虑那些三角形是否被拣选。完全流水线(其在本实例中可被称为重放(replay)流水线)可以消耗可见性信息以便跳过被拣选的三角形从而仅对最终被传递到光栅化阶段的可见三角形进行着色。
在一个实施例中,附加固定功能逻辑516还可以包括用于包括对机器学习训练或推理的优化在内的实现方式的机器学习加速逻辑,诸如固定功能矩阵乘法逻辑。
在每个图形子核501A-501F内包括可用于响应于由图形流水线、媒体流水线、或着色器程序的请求而执行图形操作、媒体操作和计算操作的一组执行资源。图形子核501A-501F包括:多个EU阵列502A-502F、504A-504F;线程分派和线程间通信(TD/IC)逻辑503A-503F;3D(例如,纹理)采样器505A-505F;媒体采样器506A-506F;着色器处理器507A-507F;以及共享本地存储器(SLM)508A-508F。EU阵列502A-502F、504A-504F各自包括多个执行单元,这些执行单元是能够执行浮点逻辑运算和整数/定点逻辑运算以便为图形操作、媒体操作或计算操作(包括图形程序、媒体程序或计算着色器程序)服务的通用图形处理单元,。TD/IC逻辑503A-503F执行针对子核内的执行单元的本地线程分派和线程控制操作,并且促进在该子核的执行单元上执行的线程之间的通信。3D采样器505A-505F可以将纹理或其他3D图形相关的数据读取到存储器中。3D采样器可以基于所配置的样本状态以及与给定纹理相关联的纹理格式来以不同方式读取纹理数据。媒体采样器506A-506F可以基于与媒体数据相关联的类型和格式来执行类似的读取操作。在一个实施例中,每个图形子核501A-501F可以替代地包括统一3D和媒体采样器。在子核501A-501F中的每个子核内的执行单元上执行的线程可以利用每个子核内的共享本地存储器508A-508F,以便使得在线程组内执行的线程能够使用公共的芯片上存储器池来执行。
执行单元
图6A-图6B图示出根据本文中所描述的实施例的线程执行逻辑600,该线程执行逻辑600包括在图形处理器核中所采用的处理元件的阵列。图6A-图6B的具有与本文中任何其他附图的元件相同的附图标记(或名称)的元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。图6A图示出线程执行逻辑600的概览,该线程执行逻辑600可以包括被图示为具有图5的每个子核501A-501F的硬件逻辑的变体。图6B图示出执行单元的示例性内部细节。
如图6A中所图示,在一些实施例中,线程执行逻辑600包括着色器处理器602、线程分派器604、指令高速缓存606、包括多个执行单元608A-608N的可缩放执行单元阵列、采样器610、数据高速缓存612、以及数据端口614。在一个实施例中,可缩放执行单元阵列可以通过基于工作负荷的计算要求来启用或禁用一个或多个执行单元(例如,执行单元608A、608B、608C、608D至608N-1和608N中的任一个)来动态地缩放。在一个实施例中,所包括的部件经由互连结构而互连,该互连结构链接到这些部件中的每个部件。在一些实施例中,线程执行逻辑600包括通过指令高速缓存606、数据端口614、采样器610、以及执行单元阵列608A-608N中的一者或多者到存储器(诸如系统存储器或高速缓存存储器)的一个或多个连接。在一些实施例中,每个执行单元(例如,608A)是能够并行地为每个线程在处理多个数据元素的同时执行多个同时硬件线程的独立可编程通用计算单元。在各实施例中,执行单元608A-608N的阵列是可缩放的,以包括任何数量的单独的执行单元。
在一些实施例中,执行单元608A-608N主要用于执行着色器程序。着色器处理器602可以处理各种着色器程序并且经由线程分派器604分派与着色器程序相关联的执行线程。在一个实施例中,线程分派器包括用于对来自图形和媒体流水线的线程发起请求进行仲裁并且在执行单元608A-608N中的一个或多个执行单元上实例化所请求的线程的逻辑。例如,几何流水线可以将顶点、曲面细分或几何着色器分派至线程执行逻辑以进行处理。在一些实施例中,线程分派器604还可以处理来自执行着色器程序的运行时线程生成请求。
在一些实施例中,执行单元608A-608N支持包括对许多标准3D图形着色器指令的原生支持的指令集,从而使得以最小的转换来执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。这些执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。执行单元608A-608N中的每个执行单元都能够执行多发布的单指令多数据(SIMD),并且多线程操作能够在面对较高等待时间的存储器访问时实现高效的执行环境。每个执行单元内的每个硬件线程都具有专用的高带宽寄存器堆和相关的独立线程状态。对于能够进行整数、单精度浮点运算和双精度浮点运算、SIMD分支功能、逻辑运算、超越运算和其他混杂运算的流水线,执行是每个时钟多发布的。在等待来自存储器或共享功能之一的数据时,执行单元608A-608N内的依赖性逻辑使等待线程休眠,直到所请求的数据已被返回。当等待线程正在休眠时,硬件资源可专门用于处理其他线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可以执行针对像素着色器、片段着色器或包括不同顶点着色器的另一种类型的着色器程序的操作。
执行单元608A-608N中的每个执行单元对数据元素的阵列进行操作。数据元素的数量是“执行大小”、或指令的通道数量。执行通道是执行数据元素访问、掩码、和指令内的流控制的逻辑单元。通道的数量可与针对特定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量无关。在一些实施例中,执行单元608A-608N支持整数和浮点数据类型。
执行单元指令集包括SIMD指令。各种数据元素可以作为紧缩数据类型被存储在寄存器中,并且执行单元将基于元素的数据大小来处理各种元素。例如,当对256位宽的向量进行操作时,该256位的向量被存储在寄存器中,并且执行单元作为四个单独的64位紧缩数据元素(四字(QW)大小的数据元素)、八个单独的32位紧缩数据元素(双字(DW)大小的数据元素)、十六个单独的16位紧缩数据元素(字(W)大小的数据元素)、或三十二个单独的8位数据元素(字节(B)大小的数据元素)对向量上操作。然而,不同的向量宽度和寄存器大小是可能的。
在一个实施例中,可以将一个或多个执行单元组合到融合执行单元609A-609N中,这些融合执行单元具有对于融合EU而言共同的线程控制逻辑(607A-607N)。可以将多个EU融合到EU组中。融合EU组中的每个EU可以被配置成用于执行单独的SIMD硬件线程。融合EU组中的EU数量可以根据实施例而变化。另外,可以每个EU地执行不同的SIMD宽度,包括但不限于SIMD8、SIMD16和SIMD32。每个所融合的图形执行单元609A-609N包括至少两个执行单元。例如,所融合的执行单元609A包括第一EU 608A、第二EU 608B、以及对于第一EU 608A和第二EU 608B而言共同的线程控制逻辑607A。线程控制逻辑607A控制在所融合的图形执行单元609A上执行的线程,从而允许所融合的执行单元609A-609N内的每个EU使用共同的指令指针寄存器来执行。
一个或多个内部指令高速缓存(例如,606)被包括在线程执行逻辑600中,以便对执行单元的线程指令进行高速缓存。在一些实施例中,一个或多个数据高速缓存(例如,612)被包括,以对在线程执行期间的线程数据进行高速缓存。在一些实施例中,采样器610被包括,从而为3D操作提供纹理采样并且为媒体操作提供媒体采样。在一些实施例中,采样器610包括专业的纹理或媒体采样功能,以便在向执行单元提供所采样的数据之前在采样过程中处理纹理或媒体数据。
在执行期间,图形和媒体流水线经由线程生成和分派逻辑向线程执行逻辑600发送线程发起请求。一旦一组几何对象已经被处理并被光栅化成像素数据,则着色器处理器602内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等)被调用以便进一步计算输出信息并且使得结果被写入到输出表面(例如,颜色缓冲器、深度缓冲器、模板印刷(stencil)缓冲器等)。在一些实施例中,像素着色器或片段着色器计算各顶点属性的值,这些顶点属性跨光栅化对象被内插。在一些实施例中,着色器处理器602内的像素处理器逻辑随后执行应用编程接口(API)供应的像素或片段着色器程序。为了执行着色器程序,着色器处理器602经由线程分派器604将线程分派给执行单元(例如,608A)。在一些实施例中,着色器处理器602使用采样器610中的纹理采样逻辑来访问存储器中所存储的纹理图中的纹理数据。对纹理数据和输入几何数据的算术运算计算每个几何片段的像素颜色数据,或丢弃一个或多个像素而不进行进一步处理。
在一些实施例中,数据端口614提供存储器访问机制,以供线程执行逻辑600将经处理的数据输出至存储器以便在图形处理器输出流水线上进行进一步处理。在一些实施例中,数据端口614包括或耦合至一个或多个高速缓存存储器(例如,数据高速缓存612)从而对经由数据端口进行的存储器访问的数据进行高速缓存。
如图6B中所图示,图形执行单元608可以包括指令取出单元637、通用寄存器堆阵列(GRF)624、架构寄存器堆阵列(ARF)626、线程仲裁器622、发送单元630、分支单元632、SIMD浮点单元(FPU)634的集合、以及在一个实施例中的专用整数SIMD ALU 635的集合。GRF624和ARF 626包括与在图形执行单元608中可能活跃的每个同时的硬件线程相关联的通用寄存器堆和架构寄存器堆的集合。在一个实施例中,每线程架构状态被维持在ARF 626中,而在线程执行期间所使用的数据被存储在GRF 624中。包括针对每个线程的指令指针的每个线程的执行状态可以保持在ARF 626中的线程专用寄存器中。
在一个实施例中,图形执行单元608具有作为同时多线程化(SMT)与细粒度交织多线程化(IMT)的组合的架构。该架构具有模块化配置,该模块化配置可以基于每执行单元的目标同时线程数量和目标寄存器数量而在设计时得到微调,在该模块化配置中,跨用于执行多个同时线程的逻辑来划分执行单元资源。
在一个实施例中,图形执行单元608可以共同发布多条指令,这些指令可以各自是不同的指令。图形执行单元线程608的线程仲裁器622可以将指令分派给以下各项中的一项以供执行:发送单元630、分支单元632或(多个)SIMD FPU 634。每个执行线程可以访问GRF624内的128个通用寄存器,其中,每个寄存器可以存储作为具有32位数据元素的SIMD 8元素向量可访问的32个字节。在一个实施例中,每个执行单元线程访问GRF 624内的4个千字节,但是实施例并不限于此,并且在其他实施例中可以提供更多或更少的寄存器资源。在一个实施例中,多达七个线程可以同时执行,但是每执行单元的线程数量还可以根据实施例而变化。在其中七个线程可访问4个千字节的实施例中,GRF 624可以存储总共28千字节。灵活寻址模式可以准许对多个寄存器进行一起寻址,从而高效地建立更宽的寄存器或者表示跨步矩形块数据结构。
在一个实施例中,通过由消息传递发送单元630所执行的“发送”指令来分派存储器操作、采样器操作以及其他较长等待时间系统通信。在一个实施例中,分支指令被分派给专用分支单元632以便促进SIMD发散和最终收敛。
在一个实施例中,图形执行单元608包括用于执行浮点运算的一个或多个SIMD浮点单元(FPU)634。在一个实施例中,(多个)FPU 634还支持整数计算。在一个实施例中,(多个)FPU 634可以SIMD执行多达数量M个32位浮点(或整数)运算,或者SIMD执行多达2M个16位整数或16位浮点运算。在一个实施例中,(多个)FPU中的至少一个提供支持高吞吐量超越数学功能和双精度64位浮点的扩展数学能力。在一些实施例中,8位整数SIMD ALU 635的集合还表示并且还可以具体地优化成执行与机器学习计算相关联的运算。
在一个实施例中,可以在图形子核分组(例如,子切片)时对图形执行单元608的多个实例的阵列进行实例化。为了可缩放性,产品架构可以选择每子核分组的确切执行单元数量。在一个实施例中,执行单元608可以跨多个执行通道来执行指令。在进一步的实施例中,在图形执行单元608上所执行的每个线程是在不同通道上执行的。
图7是图示出根据一些实施例的图形处理器指令格式700的框图。在一个或多个实施例中,图形处理器执行单元支持具有以多种格式的指令的指令集。实线框图示出一般被包括在执行单元指令中的组成部分,而虚线包括任选的或仅被包括在指令子集中的组成部分。在一些实施例中,所描述和图示的指令格式700是宏指令,因为它们是供应至执行单元的指令,这与从一旦指令被处理就进行的指令解码产生的微操作相对照。
在一些实施例中,图形处理器执行单元原生地支持采用128位指令格式710的指令。64位紧凑指令格式730可用于基于所选择的指令、多个指令选项和操作数数量的一些指令。原生的128位指令格式710提供对所有指令选项的访问,而一些选项和操作在64位格式730中受限。64位格式730中可用的原生指令根据实施例而不同。在一些实施例中,使用索引字段713中的一组索引值将指令部分地压缩。执行单元硬件基于索引值来引用一组压缩表,并使用压缩表输出来重构采用128位指令格式710的原生指令。
针对每种格式,指令操作码712限定执行单元要执行的操作。执行单元跨每个操作数的多个数据元素并行地执行每条指令。例如,响应于添加指令,执行单元跨标识纹理元素或图片元素的每个颜色通道执行同步添加操作。默认地,执行单元跨操作数的所有数据通道执行每条指令。在一些实施例中,指令控制字段714实现对某些执行选项的控制,这些执行选项诸如通道选择(例如,断言)以及数据通道排序(例如,混合)。针对采用128位指令格式710的指令,执行大小字段716限制了将并行地执行的数据通道的数量。在一些实施例中,执行大小字段716不可用于64位紧凑指令格式730。
一些执行单元指令具有多达三个操作数,包括两个源操作数src0720、src1 722和一个目的地718。在一些实施例中,执行单元支持双目的地指令,其中这些目的地中的一个是隐式的。数据操纵指令可以具有第三源操作数(例如,SRC2 724),其中,指令操作码712确定源操作数的数量。指令的最后的源操作数可以是利用该指令传递的立即数(例如,硬编码的)值。
在一些实施例中,128位指令格式710包括访问/地址模式字段726,该访问/地址模式字段726指定例如是使用直接寄存器寻址模式还是间接寄存器寻址模式。当使用直接寄存器寻址模式时,由指令中的位直接提供一个或多个操作数的寄存器地址。
在一些实施例中,128位指令格式710包括访问/地址模式字段726,该访问/地址模式字段726指定针对指令的地址模式和/或访问模式。在一个实施例中,访问模式用于限定针对指令的数据访问对齐。一些实施例支持包括16字节对齐访问模式和1字节对齐访问模式的访问模式,其中,访问模式的字节对齐确定指令操作数的访问对齐。例如,当处于第一模式时,指令可将字节对齐的寻址用于源操作数和目的地操作数,并且当处于第二模式时,指令可将16字节对齐的寻址用于所有的源操作数和目的地操作数。
在一个实施例中,访问/地址模式字段726的地址模式部分确定指令要使用直接寻址还是间接寻址。当使用直接寄存器寻址模式时,指令中的位直接提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时,可基于指令中的地址寄存器值和地址立即数字段来计算一个或多个操作数的寄存器地址。
在一些实施例中,基于操作码712的位字段对指令进行分组从而简化操作码解码740。针对8位的操作码,位4、5、和6允许执行单元确定操作码的类型。所示出的确切的操作码分组仅为示例。在一些实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。在一些实施例中,移动和逻辑组742共享五个最高有效位(MSB),其中移动(mov)指令采用0000xxxxb的形式,并且逻辑指令采用0001xxxxb的形式。流控制指令组744(例如,调用(call)、跳转(jmp))包括采用0010xxxxb形式(例如,0x20)的指令。混杂指令组746包括指令的混合,包括采用0011xxxxb形式(例如,0x30)的同步指令(例如,等待(wait)、发送(send))。并行数学指令组748包括采用0100xxxxb形式(例如,0x40)的按分量的算术指令(例如,加(add)、乘(mul))。并行数学组748跨数据通道并行地执行算术运算。向量数学组750包括采用0101xxxxb形式(例如,0x50)的算术指令(例如,dp4)。向量数学组对向量操作数执行算术运算,诸如,点积计算。
图形流水线
图8是图形处理器800的另一实施例的框图。图8的具有与本文中任何其他附图中的元件相同的附图标记(或名称)的元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。
在一些实施例中,图形处理器800包括几何流水线820、媒体流水线830、显示引擎840、线程执行逻辑850、以及渲染输出流水线870。在一些实施例中,图形处理器800是包括一个或多个通用处理核的多核处理系统内的图形处理器。图形处理器通过至一个或多个控制寄存器(未示出)的寄存器写入或者经由通过环形互连802发布至图形处理器800的命令而受控。在一些实施例中,环形互连802将图形处理器800耦合至其他处理部件,其他处理部件诸如其他图形处理器或通用处理器。来自环形互连802的命令由命令流转化器803解译,该命令流转化器803将指令供应至几何流水线820或媒体流水线830的单独部件。
在一些实施例中,命令流转化器803引导顶点获取器805的操作,该顶点获取器805从存储器读取顶点数据并执行由命令流转化器803提供的顶点处理命令。在一些实施例中,顶点获取器805将顶点数据提供给顶点着色器807,该顶点着色器807对每个顶点执行坐标空间变换和照明操作。在一些实施例中,顶点获取器805和顶点着色器807通过经由线程分派器831向执行单元852A-852B分派执行线程来执行顶点处理指令。
在一些实施例中,执行单元852A-852B是具有用于执行图形和媒体操作的指令集的向量处理器阵列。在一些实施例中,执行单元852A-852B具有专用于每个阵列或在多个阵列之间被共享的附加的L1高速缓存851。高速缓存可以被配置为数据高速缓存、指令高速缓存、或被分区以不同分区中包含数据和指令的单个高速缓存。
在一些实施例中,几何流水线820包括用于执行3D对象的硬件加速的曲面细分的曲面细分部件。在一些实施例中,可编程的外壳着色器811配置曲面细分操作。可编程域着色器817提供对曲面细分输出的后端评估。曲面细分器813在外壳着色器811的指示下进行操作,并且包含专用逻辑,该专用逻辑用于基于作为输入被提供至几何流水线820的粗糙的几何模型来生成详细的几何对象的集合。在一些实施例中,如果未使用曲面细分,则可以绕过曲面细分部件(例如,外壳着色器811、曲面细分器813、域着色器817)。
在一些实施例中,完整的几何对象可以由几何着色器819经由被分派至所述执行单元852A-852B的一个或多个线程来处理、或者可以直接行进至剪辑器829。在一些实施例中,几何着色器对整个几何对象进行操作,而不是如在图形流水线的先前级中那样对顶点或顶点补片(patch))进行操作。如果禁用曲面细分,则几何着色器819从顶点着色器807接收输入。在一些实施例中,几何着色器819是可由几何着色器程序编程的,以便在曲面细分单元被禁用时执行几何曲面细分。
在光栅化之前,剪辑器829能够处理顶点数据。剪辑器829可以是固定功能剪辑器或者具有剪辑和几何着色器功能的可编程剪辑器。在一些实施例中,渲染输出流水线870中的光栅化器和深度测试部件873分派像素着色器,以将几何对象转换为每像素表示。在一些实施例中,像素着色器逻辑被包括在线程执行逻辑850中。在一些实施例中,应用可绕过光栅化器和深度测试部件873,并且经由流出单元823访问未光栅化的顶点数据。
图形处理器800具有允许数据和消息在处理器的主要部件之间传递的互连总线、互连结构或某个其他互连机制。在一些实施例中,执行单元852A-852B和相关联的逻辑单元(例如,L1高速缓存851、采样器854、纹理高速缓存858等)经由数据端口856进行互连,以执行存储器访问并且与处理器的渲染输出流水线部件进行通信。在一些实施例中,采样器854、高速缓存851、858以及执行单元852A-852B各自都具有单独的存储器访问路径。在一个实施例中,纹理高速缓存858还可以被配置为采样器高速缓存。
在一些实施例中,渲染输出流水线870包含光栅化器和深度测试部件873,该光栅化器和深度测试部件873将基于顶点的对象转换为相关联的基于像素的表示。在一些实施例中,光栅化器逻辑包括用于执行固定功能三角形和线光栅化的窗口器/掩蔽器单元。相关联的渲染高速缓存878和深度高速缓存879在一些实施例中也是可用的。像素操作部件877对数据执行基于像素的操作,然而在一些实例中,与2D操作(例如,利用混合的位块图像传递)相关联的像素操作由2D引擎841执行,或者在显示时间由显示控制器843使用重叠显示平面来代替。在一些实施例中,共享L3高速缓存875可用于所有的图形部件,从而允许在无需使用主系统存储器的情况下共享数据。
在一些实施例中,图形处理器媒体流水线830包括媒体引擎837和视频前端834。在一些实施例中,视频前端834从命令流转化器803接收流水线命令。在一些实施例中,媒体流水线830包括单独的命令流转化器。在一些实施例中,视频前端834在将命令发送至媒体引擎837之前处理媒体命令。在一些实施例中,媒体引擎837包括用于生成线程以用于经由线程分派器831分派至线程执行逻辑850的线程生成功能。
在一些实施例中,图形处理器800包括显示引擎840。在一些实施例中,显示引擎840在处理器800外部,并且经由环形互连802、或某个其他互连总线或结构与图形处理器耦合。在一些实施例中,显示引擎840包括2D引擎841和显示控制器843。在一些实施例中,显示引擎840包含能够独立于3D流水线而操作的专用逻辑。在一些实施例中,显示控制器843与显示装置(未示出)耦合,该显示装置可以是系统集成的显示装置(如在膝上型计算机中)、或者经由显示装置连接器附接的外部显示装置。
在一些实施例中,几何流水线820和媒体流水线830可被配置成用于基于多个图形和媒体编程接口执行操作,并且并非专用于任何一种应用编程接口(API)。在一些实施例中,图形处理器的驱动器软件将专用于特定图形或媒体库的API调用转换为可由图形处理器处理的命令。在一些实施例中,为开放图形库(OpenGL)、开放计算语言(OpenCL)和/或Vulkan图形和计算API(这些全部来自科纳斯组织(Khronos Group))提供支持。在一些实施例中,还可以为来自微软公司的Direct3D库提供支持。在一些实施例中,可支持这些库的组合。还可为开源计算机视觉库(OpenCV)提供支持。如果可做出从未来API的流水线到图形处理器的流水线的映射,则具有兼容的3D流水线的未来API也将受到支持。
图形流水线编程
图9A是图示出根据一些实施例的图形处理器命令格式900的框图。图9B是图示出根据实施例的图形处理器命令序列910的框图。图9A中的实线框图示出一般被包括在图形命令中的组成成分,而虚线包括任选的或者仅被包括在图形命令的子集中的组成部分。图9A的示例性图形处理器命令格式900包括用于标识客户端902、命令操作代码(操作码)904、以及用于命令的数据906的数据字段。一些命令中还包括子操作码905和命令大小908。
在一些实施例中,客户端902指定处理命令数据的图形装置的客户端单元。在一些实施例中,图形处理器命令解析器检查每个命令的客户端字段,以调整对命令的进一步处理,并将命令数据路由至合适的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元、和媒体单元。每个客户端单元具有对命令进行处理的相应的处理流水线。一旦命令被客户端单元接收到,客户端单元就读取操作码904以及子操作码905(如果存在),从而确定要执行的操作。客户端单元使用数据字段906中的信息来执行命令。针对一些命令,期望显式的命令大小908来指定命令的大小。在一些实施例中,命令解析器基于命令操作码自动地确定命令中的至少一些命令的大小。在一些实施例中,经由双字的倍数使命令对齐。
图9B中的流程图图示出示例性图形处理器命令序列910。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示出的命令序列的版本来启动、执行并终止图形操作集合。仅出于示例性目的示出并描述了样本命令序列,因为实施例并不限于这些特定命令,也不限于此命令序列。而且,所述命令可以作为批量命令以命令序列被发布,以使得图形处理器将以至少部分同时的方式处理命令序列。
在一些实施例中,图形处理器命令序列910可开始于:流水线转储清除命令912,以使得任一活跃的图形流水线完成该流水线的当前未决的命令。在一些实施例中,3D流水线922和媒体流水线924不同时进行操作。执行流水线转储清除,以使得活跃的图形流水线完成任何未决的命令。响应于流水线转储清除,用于图形处理器的命令解析器将暂停命令处理,直到活跃的绘图引擎完成未决的操作并且相关的读高速缓存被无效。任选地,渲染高速缓存中被标记为‘脏’的任何数据可以被转储清除到存储器。在一些实施例中,流水线转储清除命令912可以用于流水线同步或者用在将图形处理器置于低功率状态之前。
在一些实施例中,当命令序列需要图形处理器在流水线之间显式地切换时,使用流水线选择命令913。在一些实施例中,除非上下文是发布用于这两条流水线的命令,否则在发布流水线命令之前,在执行上下文中仅需要一次流水线选择命令913。在一些实施例中,在经由流水线选择命令913的流水线切换之前正好需要流水线转储清除命令912。
在一些实施例中,流水线控制命令914配置用于操作的图形流水线,并且用于对3D流水线922和媒体流水线924进行编程。在一些实施例中,流水线控制命令914配置用于活跃流水线的流水线状态。在一个实施例中,流水线控制命令914用于流水线同步,并且用于在处理批量命令之前清除来自活跃的流水线内的一个或多个高速缓存存储器的数据。
在一些实施例中,返回缓冲器状态命令916用于配置返回缓冲器的集合以供相应的流水线写入数据。一些流水线操作需要分配、选择、或配置一个或多个返回缓冲器,在处理期间,这些操作将中间数据写入到该一个或多个返回缓冲器中。在一些实施例中,图形处理器还使用一个或多个返回缓冲器以存储输出数据并且执行跨线程通信。在一些实施例中,返回缓冲器状态916包括选择用于流水线操作集合的返回缓冲器的大小和数量。
命令序列中的剩余命令基于用于操作的活跃的流水线而不同。基于流水线判定920,命令序列被定制用于以3D流水线状态930开始的3D流水线922、或者开始于媒体流水线状态940的媒体流水线924。
用于配置3D流水线状态930的命令包括用于顶点缓冲器状态、顶点元素状态、常量颜色状态、深度缓冲器状态、以及有待在处理3D图元命令之前配置的其他状态变量的3D状态设置命令。这些命令的值至少部分地基于使用中的特定3D API来确定。在一些实施例中,如果将不使用某些流水线元件,则3D流水线状态930命令还能够选择性地禁用或绕过这些特定的流水线元件。
在一些实施例中,3D图元932命令用于提交待由3D流水线处理的3D图元。经由3D图元932命令传递给图形处理器的命令和相关联参数将被转发到图形流水线中的顶点获取功能。顶点获取功能使用3D图元932命令数据来生成顶点数据结构。顶点数据结构被存储在一个或多个返回缓冲器中。在一些实施例中,3D图元932命令用于经由顶点着色器对3D图元执行顶点操作。为了处理顶点着色器,3D流水线922将着色器执行线程分派至图形处理器执行单元。
在一些实施例中,经由执行934命令或事件来触发3D流水线922。在一些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序列中的‘前进’(‘go’)或‘踢除’(‘kick’)命令来触发执行。在一个实施例中,使用流水线同步命令来触发命令执行,以对通过图形流水线的命令序列进行转储清除。3D流水线将针对3D图元来执行几何处理。一旦完成操作,则对所得到的几何对象进行光栅化,并且像素引擎对所得到的像素进行着色。对于那些操作,还可以包括用于控制像素着色和像素后端操作的附加命令。
在一些实施例中,当执行媒体操作时,图形处理器命令序列910跟随媒体流水线924路径。一般地,针对媒体流水线924进行编程的具体用途和方式取决于待执行的媒体或计算操作。在媒体解码期间,特定的媒体解码操作可被卸载到媒体流水线。在一些实施例中,还可绕过媒体流水线,并且可使用由一个或多个通用处理核提供的资源来整体地或部分地执行媒体解码。在一个实施例中,媒体流水线还包括用于通用图形处理器单元(GPGPU)操作的元件,其中,图形处理器用于使用计算着色器程序来执行SIMD向量运算,该计算着色器程序与渲染图形图元不是显式地相关的。
在一些实施例中,以与3D流水线922相似的方式对媒体流水线924进行配置。将一组用于配置媒体流水线状态940的命令分派或放置到命令队列中,在媒体对象命令942之前。在一些实施例中,用于媒体流水线状态的命令940包括用于配置媒体流水线元件的数据,这些媒体流水线元件将用于处理媒体对象。这包括用于在媒体流水线内配置视频解码和视频编码逻辑的数据,诸如,编码或解码格式。在一些实施例中,用于媒体流水线状态940的命令还支持将一个或多个指针用于包含批量的状态设置的“间接”状态元件。
在一些实施例中,媒体对象命令942将指针供应至媒体对象以用于由媒体流水线进行处理。媒体对象包括存储器缓冲器,该存储器缓冲器包含待处理的视频数据。在一些实施例中,在发布媒体对象命令942之前,所有的媒体流水线状态必须是有效的。一旦流水线状态被配置并且媒体对象命令942被排队,则经由执行944命令或等效的执行事件(例如,寄存器写入)来触发媒体流水线924。随后可通过由3D流水线922或媒体流水线924提供的操作对来自媒体流水线924的输出进行后处理。在一些实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。
图形软件架构
图10图示出根据一些实施例的用于数据处理系统1000的示例性图形软件架构。在一些实施例中,软件架构包括3D图形应用1010、操作系统1020、以及至少一个处理器1030。在一些实施例中,处理器1030包括图形处理器1032以及一个或多个通用处理器核1034。图形应用1010和操作系统1020各自在数据处理系统的系统存储器1050中执行。
在一些实施例中,3D图形应用1010包含一个或多个着色器程序,该一个或多个着色器程序包括着色器指令1012。着色器语言指令可以采用高级着色器语言,诸如,高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)。应用还包括可执行指令1014,该可执行指令1014采用适合用于由通用处理器核1034执行的机器语言。应用还包括由顶点数据限定的图形对象1016。
在一些实施例中,操作系统1020是来自微软公司的 操作系统、专用类UNIX操作系统、或使用Linux内核的变体的开源类UNIX操作系统。操作系统1020可以支持图形API 1022,诸如,Direct3D API、OpenGL API或Vulkan API。当Direct3DAPI正在使用时,操作系统1020使用前端着色器编译器1024以将采用HLSL的任何着色器指令1012编译成较低级的着色器语言。编译可以是即时(JIT)编译,或者应用可以执行着色器预编译。在一些实施例中,在对3D图形应用1010进行编译期间,将高级着色器编译成低级着色器。在一些实施例中,以中间形式(诸如,由Vulkan API使用的标准可移植中间表示(SPIR)的版本)提供着色器指令1012。
在一些实施例中,用户模式图形驱动器1026包含后端着色器编译器1027,该后端着色器编译器1027用于将着色器指令1012转换为硬件专用的表示。当OpenGL API正在使用时,将采用GLSL高级语言的着色器指令1012传递至用户模式图形驱动器1026以用于编译。在一些实施例中,用户模式图形驱动器1026使用操作系统内核模式功能1028来与内核模式图形驱动器1029进行通信。在一些实施例中,内核模式图形驱动器1029与图形处理器1032进行通信以分派命令和指令。
IP核实现
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性代码实现,该机器可读介质表示和/或限定集成电路(诸如,处理器)内的逻辑。例如,机器可读介质可包括表示处理器内的各个逻辑的指令。当由机器读取时,指令可使机器制造用于执行本文中所描述的技术的逻辑。此类表示(称为“IP核”)是集成电路的逻辑的可重复使用单元,这些可重复使用单元可以作为对集成电路的结构进行描述的硬件模型而被存储在有形的机器可读介质上。可将该硬件模型供应给各消费者或制造设施,这些消费者或制造设施将该硬件模型加载在制造集成电路的制造机器上。可制造集成电路,以使得电路执行与本文中所描述的实施例中的任一实施例相关联地描述的操作。
图11A是图示出根据实施例的可以用于制造集成电路以执行操作的IP核开发系统1100的框图。IP核开发系统1100可用于生成可以并入到更大的设计中或用于构建整个集成电路(例如,SOC集成电路)的模块化、可重复使用的设计。设计设施1130可以采用高级编程语言(例如,C/C++)来生成对IP核设计的软件仿真1110。软件仿真1110可以用于使用仿真模型1112来设计、测试并验证IP核的行为。仿真模型1112可以包括功能、行为和/或时序仿真。然后可以从仿真模型1112创建或合成寄存器传输级(RTL)设计1115。RTL设计1115是对硬件寄存器之间的数字信号的流动进行建模的集成电路(包括使用建模的数字信号执行的相关联的逻辑)的行为的抽象。除了RTL设计1115之外,还可以创建、设计或合成处于逻辑级或晶体管级的较低层级的设计。由此,初始设计和仿真的具体细节可有所不同。
可由设计设施将RTL设计1115或等效方案进一步合成为硬件模型1120,该硬件模型1120可采用硬件描述语言(HDL)或物理设计数据的某种其他表示。可以进一步仿真或测试HDL以验证IP核设计。可使用非易失性存储器1140(例如,硬盘、闪存、或任何非易失性存储介质)来存储IP核设计以用于递送至第3方制造设施1165。替代地,可以通过有线连接1150或无线连接1160来传输(例如,经由互联网)IP核设计。制造设施1165随后可制造至少部分地基于IP核设计的集成电路。所制造的集成电路可以被配置成用于执行根据本文中所描述的至少一个实施例的操作。
图11B图示出根据本文中所描述的一些实施例的集成电路封装组件1170的截面侧视图。集成电路封装组件1170图示出如本文中所描述的一个或多个处理器或加速器装置的实现方式。封装组件1170包括连接至衬底1180的多个硬件逻辑单元1172、1174。逻辑1172、1174可以至少部分地在可配置逻辑或固定功能逻辑硬件中实现,并且可以包括(多个)处理器核、(多个)图形处理器或本文中所描述的其他加速器装置中的任何一者的一个或多个部分。每个逻辑单元1172、1174可以在半导体管芯内实现并且经由互连结构1173与衬底1180耦合。互连结构1173可以被配置成在逻辑1172、1174与衬底1180之间路由电信号,并且可以包括互连,诸如但不限于凸块或支柱。在一些实施例中,互连结构1173可被配置成用于路由电信号,这些电信号诸如例如,与逻辑1172、1174的操作相关联的输入/输出(I/O)信号和/或功率或接地信号。在一些实施例中,衬底1180是基于环氧树脂的层压衬底。在其他实施例中,封装衬底1180可以包括其他合适类型的衬底。封装体组件1170可以经由封装互连1183连接至其他电气装置。封装互连1183可耦合至衬底1180的表面以便将电信号路由到其他电气装置,诸如母板、其他芯片组或多芯片模块。
在一些实施例中,逻辑单元1172、1174与桥接器1182电耦合,该桥接器1182被配置成用于在逻辑1172、1174之间路由电信号。桥接器1182可以是为电信号提供路由的密集互连结构。桥接器1182可包括由玻璃或合适的半导体材料构成的桥接器衬底。电路由特征可以在桥接器衬底上形成以便提供逻辑1172、1174之间的芯片到芯片连接。
尽管图示了两个逻辑单元1172、1174和桥接器1182,但是本文中所描述的实施例可包括一个或多个管芯上的更多或更少的逻辑单元。一个或多个管芯可由零个或多个桥接器连接,因为逻辑被包括在单个管芯上时,可以排除桥接器1182。替代地,多个管芯或逻辑单元可以由一个或多个桥接器连接。另外,多个逻辑单元、管芯和桥接器能以包括三维配置的其他可能的配置连接在一起。
示例性芯片上系统集成电路
图12-图14图示出根据本文中所描述的各实施例的可使用一个或多个IP核来制造的示例性集成电路和相关联的图形处理器。除了所图示的之外,还可包括其他逻辑和电路,包括附加的图形处理器/核、外围接口控制器或通用处理器核。
图12是图示出根据实施例的可使用一个或多个IP核来制造的示例性芯片上系统集成电路1200的框图。示例性集成电路1200包括一个或多个应用处理器1205(例如,CPU)、至少一个图形处理器1210,并且可附加地包括图像处理器1215和/或视频处理器1220,其中的任一项都可以是来自相同的或多个不同的设计设施的模块化IP核。集成电路1200包括外围或总线逻辑,该外围或总线逻辑包括USB控制器1225、UART控制器1230、SPI/SDIO控制器1235和I2S/I2C控制器1240。另外,集成电路可以包括显示装置1245,该显示装置1245耦合至高清晰度多媒体接口(HDMI)控制器1250和移动产业处理器接口(MIPI)显示接口1255中的一个或多个。可由闪存子系统1260(包括闪存和闪存控制器)来提供存储。可经由存储器控制器1265来提供存储器接口以访问SDRAM或SRAM存储器装置。另外,一些集成电路附加地包括嵌入式安全引擎1270。
图13A-图13B是图示出根据本文中所描述的实施例的用于在SoC内使用的示例性图形处理器的框图。图13A图示出根据实施例的可使用一个或多个IP核来制造的芯片上系统集成电路的示例性图形处理器1310。图13B图示出根据实施例的可使用一个或多个IP核来制造的芯片上系统集成电路的附加示例性图形处理器1340。图13A的图形处理器1310是低功率图形核的示例。图13B的图形处理器1340是较高性能图形核的示例。图形处理器1310、1340中的每个图形处理器可以是图12的图形处理器1210的变体。
如图13A中所示,图形处理器1310包括顶点处理器1305以及一个或多个片段处理器1315A-1315N(例如,1315A、1315B、1315C、1315D至1315N-1和1315N)。图形处理器1310可以经由分开的逻辑执行不同的着色器程序,以使得顶点处理器1305被优化成执行用于顶点着色器程序的操作,而一个或多个片段处理器1315A-1315N执行用于片段或像素着色器程序的片段(例如,像素)着色操作。顶点处理器1305执行3D图形流水线的顶点处理级,并生成图元和顶点数据。(多个)片段处理器1315A-1315N使用由顶点处理器1305生成的图元和顶点数据来产生显示在显示装置上的帧缓冲器。在一个实施例中,(多个)片段处理器1315A-1315N被优化成执行如提供用于OpenGL API中的片段着色器程序,片段处理器1315A-1315N可用于执行与如提供用于Direct 3D API中的像素着色器程序类似的操作。
图形处理器1310附加地包括一个或多个存储器管理单元(MMU)1320A-1320B、(多个)高速缓存1325A-1325B和(多个)电路互连1330A-1330B。一个或多个MMU 1320A-1320B提供用于图形处理器1310的虚拟到物理地址映射,包括用于顶点处理器1305和/或(多个)片段处理器1315A-1315N的虚拟到物理地址映射,除了存储在一个或多个高速缓存1325A-1325B中的顶点或图像/纹理数据之外,顶点处理器1305和/或(多个)片段处理器1315A-1315N还可引用存储在存储器中的顶点或图像/纹理数据。在一个实施例中,一个或多个MMU1320A-1320B可与系统内的其他MMU同步,以使得每个处理器1205-1220可以参与共享或统一虚拟存储器系统,其他MMU包括与图12的一个或多个应用处理器1205、图像处理器1215和/或视频处理器1220相关联的一个或多个MMU。根据实施例,一个或多个电路互连1330A-1330B使得图形处理器1310能够经由SoC的内部总线或经由直接连接与SoC内的其他IP核接口连接。
如图13B中所示,图形处理器1340包括图13A的图形处理器1310的一个或多个MMU1320A-1320B、高速缓存1325A-1325B和电路互连1330A-1330B。图形处理器1340包括一个或多个着色器核1355A-1355N,该一个或多个着色器核1355A-1355N(例如,1355A、1355B、1355C、1355D、1355E、1355F至1355N-1和1355N)提供统一着色器核架构,在该统一着色器核架构中,单个核或单类型的核可以执行所有类型的可编程着色器代码,包括用于实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。存在的着色器核的确切数量在各实施例和各实现方式之间可以有所不同。另外,图形处理器1340包括核间任务管理器1345和分块单元(tiling unit)1358,该核间任务管理器1345充当线程分派器以将执行线程分派给一个或多个着色器核1355A-1355N,该分块单元1358用于加速用于基于图块的渲染的分块操作,在用于基于图块的渲染的分块操作中,对场景的渲染操作被细分在图像空间中,从而例如利用场景内的局部空间一致性,或优化内部高速缓存的使用。
图14A-图14B图示出根据本文中所描述的实施例的附加示例性图形处理器逻辑。图14A图示出图形核1400,该图形核1400可包括在图12的图形处理器1210内并且可以是如图13B中的统一着色器核1355A-1355N。图14B图示出适合于部署在多芯片模块上的高度并行的通用图形处理单元。
如图14A中所示,图形核1400包括对于图形核1400内的执行资源而言共同的共享指令高速缓存1402、纹理单元1418和高速缓存存储器/共享存储器1420。图形核1400可以包括多个切片1401A-1401N或针对每个核的分区,并且图形处理器可以包括图形核1400的多个实例。切片1401A-1401N可以包括支持逻辑,该支持逻辑包括本地指令高速缓存1404A-1404N、线程调度器1406A-1406N、线程分派器1408A-1408N、以及一组寄存器1410A-1410N。为了执行逻辑运算,切片1401A-1401N可以包括一组附加功能单元(AFU1412A-1412N)、浮点单元(FPU 1414A-1414N)、整数算术逻辑单元(ALU1416A-1416N)、寻址计算单元(ACU1413A-1413N)、双精度浮点单元(DPFPU1415A-1415N)、以及矩阵处理单元(MPU 1417A-1417N)。
这些计算单元中的一些以特定精度进行操作。例如,FPU1414A-1414N可以执行单精度(32位)和半精度(16位)浮点运算,而DPFPU1415A-1415N执行双精度(64位)浮点运算。ALU 1416A-1416N可以以8位精度、16位精度和32位精度执行可变精度整数运算,并且可以被配置用于混合精度运算。MPU 1417A 1417N也可以被配置用于混合精度矩阵运算,包括半精度浮点运算和8位整数运算。MPU 1417A-1417N可以执行各种各样的矩阵运算以便加速机器学习应用框架,包括实现对于加速的通用矩阵-矩阵乘法(GEMM)的支持。AFU 1412A-1412N可以执行不受浮点单元或整数单元支持的附加逻辑运算,包括三角函数运算(例如,正弦、余弦等)。
如图14B中所示,通用处理单元(GPGPU)1430可以被配置成使得能够由图形处理单元阵列执行高度并行的计算操作。另外,GPGPU 1430可以直接链接到GPGPU的其他实例以便创建多GPU集群,从而提高尤其是深度神经网络的训练速度。GPGPU 1430包括用于实现与主机处理器的连接的主机接口1432。在一个实施例中,主机接口1432是PCI快速接口。然而,主机接口还可以是供应方特定的通信接口或通信结构。GPGPU 1430从主机处理器接收命令并且使用全局调度器1434将与那些命令相关联的执行线程分发给一组计算集群1436A-1436H。计算集群1436A-1436H共享高速缓存存储器1438。高速缓存存储器1438可以充当计算集群1436A-1436H内的高速缓存存储器的较高层级的高速缓存。
GPGPU 1430包括经由一组存储器控制器1442A-1442B与计算集群1436A-1436H耦合的存储器1444A至1444B。在各实施例中,存储器1444A至1444B可以包括各种类型的存储器装置,包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如同步图形随机存取存储器(SGRAM),包括图形双倍数据速率(GDDR)存储器。
在一个实施例中,计算集群1436A-1436H各自包括一组图形核(如图14A的图形核1400),这些图形核可以包括多种类型的整数逻辑单元和浮点逻辑单元,这些逻辑单元可以在一定精度范围内执行包括适合于机器学习计算的计算操作。例如并且在一个实施例中,计算集群1436A-1436H中的每个计算集群中的浮点单元的至少一个子集可以被配置成用于执行16位或32位浮点运算,而浮点单元的不同子集可以被配置成用于执行64位浮点运算。
GPGPU 1430的多个实例可以被配置成作为计算集群进行操作。由计算集群用来进行同步和数据交换的通信机制跨实施例而变化。在一个实施例中,GPGPU 1430的多个实例通过主机接口1432进行通信。在一个实施例中,GPGPU 1430包括I/O中枢1439,该I/O中枢1439将GPGPU 1430与实现到GPGPU的其他实例的直接连接的GPU链路1440耦合。在一个实施例中,GPU链路1440耦合至实现GPGPU 1430的多个实例之间的通信和同步的专用GPU到GPU桥接器。在一个实施例中,GPU链路1440与高速互连耦合,以便向其他GPGPU或并行处理器传输和接收数据。在一个实施例中,GPGPU 1430的多个实例位于单独的数据处理系统中并且经由可经由主机接口1432访问的网络装置进行通信。在一个实施例中,除了主机接口1432或作为对主机接口1432的替代方案,GPU链路1440还可以被配置成用于实现到主机处理器的连接。
尽管GPGPU 1430的所图示的配置可以被配置成训练神经网络,但是一个实施例提供了GPGPU 1430的替代配置,该替代配置可以被配置成部署在高性能或低功率推断平台内。在推断配置中,GPGPU 1430包括计算集群1436A-1436H中与训练配置有关的更少计算集群。另外,与存储器1444A-1444B相关联的存储器技术可在推断配置与训练配置之间不同,其中,更高带宽存储器技术专用于训练配置。在一个实施例中,GPGPU 1430的推断配置可以支持推断特定指令。例如,推断配置可以提供对一个或多个8位整数点积指令的支持,这些指令通常在所部署的神经网络的推断操作期间使用。
具有矩阵加速逻辑的GPGPU
图15是根据实施例的数据处理系统1500的框图。数据处理系统1500是具有处理器1502、统一存储器1510、和包括机器学习加速逻辑的GPGPU1520的异构处理系统。处理器1502和GPGPU 1520可以是如本文所描述的任何处理器和GPGPU/并行处理器。处理器1502可以执行存储在系统存储器1512中的用于编译器1515的指令。编译器1515在处理器1502上执行以将源代码1514A编译成经编译代码1514B。经编译代码1514B可以包括可以由处理器1502执行的指令和/或可以由GPGPU 1520执行的指令。在编译期间,编译器1515可以执行操作来插入元数据,包括关于存在于经编译代码1514B中的数据并行性的水平的提示和/或关于与将基于经编译代码1514B分派的线程相关联的数据本地性的提示。编译器1515可以包括执行这样的操作必需的信息,或者可以借助运行时库1516来执行操作。运行时库1516还可以辅助编译器1515编译源代码1514A并且还可以包括在运行时与经编译代码1514B链接的指令,以便于执行GPGPU 1520上的经编译指令。
统一存储器1510表示可以由处理器1502和GPGPU 1520访问的统一地址空间。统一存储器可以包括系统存储器1512以及GPGPU存储器1518。GPGPU存储器1518是GPGPU 1520的地址空间内的存储器,并且可以包括系统存储器1512中的一些或全部。在一个实施例中,GPGPU存储器1518还可以包括专用于由GPGPU 1520专用的任何存储器的至少一部分。在一个实施例中,存储在系统存储器1512中的经编译代码1514B可以被映射到GPGPU存储器1518中供GPGPU 1520进行访问。
GPGPU 1520包括多个计算块1524A至1524N,所述计算块可以包括本文所描述的各种计算单元或执行元件中的一个或多个。在一个实施例中,GPGPU 1520另外包括矩阵加速器1523,所述矩阵加速器可以包括被设计为对矩阵运算的子集(例如,点积等)进行加速的一个或多个专用功能计算单元。GPGPU 1520还可以包括可以由计算块1524A至1524N和矩阵加速器1523共享的一组资源,包括但不限于一组寄存器1525、功率和性能模块1526以及高速缓存1527。在一个实施例中,寄存器1525包括直接可访问和间接可访问的寄存器,其中,间接可访问寄存器被优化以便由矩阵加速器1523使用。功率和性能模块1526可以被配置用于调整计算块1524A至1524N的功率输送和时钟频率以便对计算块1524A至1524N内的空闲组件进行功率门控。在各个实施例中,高速缓存1527可以包括指令高速缓存和/或较低级的数据高速缓存。
GPGPU 1520可以另外包括L3数据高速缓存1530,所述数据高速缓存可以用于对由矩阵加速器1523和/或计算块1524A至1524N内的计算元件从统一存储器1510中访问的数据进行高速缓存。在一个实施例中,L3数据高速缓存1530包括可以由计算块1524A至1524N内计算元件以及矩阵加速器1523共享的共享本地存储器1532。
在一个实施例中,GPGPU 1520包括诸如取出和解码单元1521以及调度器控制器1522等指令处理逻辑。取出和解码单元1521包括用于取出并解码指令以便由计算块1524A至1524N中的一个或多个或者矩阵加速器1523来执行的取出单元和解码单元。所述指令可以经由调度器控制器1522被调度到计算块1524A至1524N或矩阵加速器内的适当功能单元。在一个实施例中,调度器控制器1522是可配置用于执行高级调度操作的ASIC。在一个实施例中,调度器控制器1522是能够执行从固件模块加载的调度器指令的微控制器或每指令低能量处理核。
在一个实施例中,将由计算块1524A至1524N执行的一些功能可以被直接调度到或卸载到矩阵加速器1523。在各个实施例中,矩阵加速器1523包括被配置用于高效地执行诸如由3D图形或计算着色器程序使用的乘法和加法运算以及点积运算等矩阵计算运算的处理元件逻辑。在一个实施例中,矩阵加速器1523可以被配置用于对由机器学习框架使用的运算进行加速。在一个实施例中,矩阵加速器1523是被显式地配置用于执行指定一组并行矩阵乘法和/或加法运算的专用集成电路。在一个实施例中,矩阵加速器1523是现场可编程门阵列(FPGA),其提供可以在工作负载之间更新的固定功能逻辑。可以由矩阵加速器1523执行的所述一组矩阵运算可以相对于可以由计算块1524A至1524N执行的运算来限制。然而,矩阵加速器1523可以相对于计算块1524A至1524N以显著更高的吞吐量来执行那些运算。
图16展示了根据实施例的由指令流水线1600执行的矩阵运算1605。指令流水线1600可以被配置用于执行矩阵运算1605,诸如但不限于点积运算。两个向量的点积是等于所述向量的相应分量之积的和的标量值。点积可以被计算为如下面等式(1)中所示。
点积可以用于卷积神经网络(CNN)的卷积运算。图16展示了使用包括点积运算在内的矩阵运算1605的二维(2D)卷积。虽然展示了2D卷积,但是可以使用N维滤波器来对N维量(volume)执行N维卷积。接受域图块1602突出显示输入量缓冲器1604中的输入量的一部分。输入量缓冲器可以被存储在存储器1630中。可以在接受域图块1602内的数据与卷积滤波器之间执行点阵运算1605,以在输出缓冲器1606内生成数据点,所述输出缓冲器也可以被存储在存储器1630中。存储器1630可以是本文所描述的任何存储器,包括如图15中的系统存储器1512、GPGPU存储器1518、或者一个或多个高速缓存存储器1527、1530。
输出缓冲器1606内的数据点的组合表示由卷积运算生成的激活图(activationmap)。激活图内的每个点是通过在输入量缓冲器1604上滑动接受域图块来生成的。可以将激活图数据输入到激活函数以确定输出激活值。在一个实施例中,输入量缓冲器1604的卷积可以在框架内定义为高级矩阵运算1705。所述高级矩阵运算可以经由诸如基本线性代数子程序(BLAS)运算等图元运算来执行。所述图元运算可以通过由运算流水线1600执行的硬件指令来进行加速。
用于对硬件指令进行加速的指令流水线1600可以包括:指令取出和解码单元1521,其可以取出并解码硬件指令;以及调度器控制器1522,其可以将经解码指令调度到计算块1524A至1524N和/或矩阵加速器1523内的一个或多个执行单元。在一个实施例中,硬件指令可以被调度到计算块1524A至1524N以及被卸载到矩阵加速器1523。用于执行矩阵运算1605的所述一个或多个硬件指令以及相关联数据可以被存储在存储器1630中。所述硬件指令的输出也可以被存储在存储器1630中。
在一个实施例中,矩阵加速器1523可以执行一个或多个硬件指令,以便使用集成点积逻辑1608(DP逻辑)来执行矩阵运算1605。点积逻辑1608可以包括可配置用于执行点积运算的可编程且固定的功能硬件的组合。虽然计算块1524A至1524N内的功能单元也可以被配置用于执行点积运算,但是点积逻辑1608可以被配置用于相对于计算块1524A至1524N以显著更高的吞吐量来执行点积运算的有限子集。
图17A至图17B展示了根据一些实施例的基于硬件的点积逻辑1608的细节。图17A展示了可配置用于在单个时钟周期内执行多个点积运算的多个功能单元的网格。图17B展示了单个示例性功能单元。
如图17A中所示出的,在一个实施例中,点积逻辑1608可配置用于使用各种功能逻辑来执行一组并行点积运算。点积可以以“收缩”方式来执行,其中在多层功能单元上泵送SIMD数据。在一个实施例中,点积逻辑1608可以使用可配置收缩深度来处理可配置数量的SIMD数据信道。对于给定指令,可以选择SIMD宽度和收缩深度来处理一组源数据。收缩深度限定将被用于处理指令的硬件逻辑收缩层的数量。收缩层是具有可变SIMD宽度的一组乘法器与加法器逻辑单元,其中,所述收缩层可以接收初始累加器值作为输入并且生成点积值用于输出到后续收缩层或到输出寄存器。
在一些实施例中,可以对三个源进行处理,其中,每个源可以是向量寄存器或立即数。在一个实施例中,源1700(SRC0)可以是一个或多个初始累加器值,其可以是单个值或者累加器值的向量。初始累加器值将被加到由第一收缩层内的每个功能单元所计算的第一组点积。由功能单元所计算的点积可以被提供至给定SIMD信道的下一个收缩层。可以基于源1701(SRC1)和源1702(SRC2)来计算点积,所述源可以是可以包含一个或多个紧缩数据信道的向量寄存器,每个信道包含四元素向量。在一个实施例中,每个信道是32位宽并且提供四个8位向量元素。一些实施例可配置用于根据具有8位元素、4位元素和/或2位元素的输入向量来计算点积。在一个实施例中,可以使用所支持元素大小的任何组合来执行混合精度运算。(例如,8位×2位、8位×4位、4位×4位等)。在一个实施例中,点积逻辑1608被配置用于整数计算,虽然在一些实施例中自动定点运算是可配置的。虽然本文所描述的指令是四元素点积,但是在一些实施例中,点积逻辑1608也可以被配置用于支持对不同数量的每向量元素的浮点点积计算。
在一个实施例中,可以将多个四元素向量信道紧缩成各种宽度(例如,64位、128位、256位、512位等)的单个向量寄存器。可以通过经由源1701和源1702提供的多个向量元素信道的点积逻辑1608来计算联立点积。可以基于点积计算的所选执行大小和收缩深度来配置要处理的矢量元素信道的数量。在一个实施例中,可以使用点积逻辑1608的多个周期来计算宽于指定执行大小和/或收缩深度的源向量。
可以在给定时钟周期内执行的计算的数量可以基于SIMD通道和收缩层的数量而不同。如所展示的,点积逻辑1608可以使用为四的收缩深度来针对每个吞吐量SIMD通道执行十六次点积。如果被配置用于八个SIMD通道,则所述逻辑可以在给定周期内执行128次的八位整数(INT8)点积。如果被配置用于八个SIMD通道以及为八的收缩深度,则每个通道可以执行32次八位整数(INT8)点积和总共256次点积。这些具体运算数量是一个实施例的示例,并且其他实施例在吞吐量方面不同。此外,如果数据类型不同,则将基于不同的数据类型来缩放运算数量。
在每个功能单元处,经由乘法器与加法器逻辑来计算点积并将所述点积加到累加器值。可以将所产生的数据输出到目的地寄存器或提供至下一收缩层的累加器。图17B中示出了功能单元1712的细节。
如图17B中所示出的,功能单元1712可以包括可以各自接受输入数据的一组输入数据缓冲器1704、1706和累加器1722。在一个实施例中,数据缓冲器1706可以接受源1702(SRC2),所述源可以是输入数据的紧缩向量。输入数据缓冲器1704可以接受源1701(SRC1),所述源也可以是输入数据的紧缩向量。累加器1722可以接受为功能单元1712提供初始累加器值的源1700(SRC0)。所述初始累加器值被加到根据源1701和源1702的元素计算的点积。所述点积是使用一组乘法器1723A至1723D与加法器1724经由源向量的按元素相乘来计算的。乘法器1723A至1723D用于计算一组积。所述一组积的和是由加法器1724来计算的。所述和可以与经由源1700提供的任何初始值累加(例如,被加到所述初始值)。在一个实施例中,这个累加值可以作为输入值1726提供至可以驻留在随后的收缩层中的下一个累加器。在一个实施例中,源1701可以包括多个输入数据信道。可以将源1701的附加信道作为SRC1输入中继到另外的SIMD通道1728。在一个实施例中,源1702可以包括多个输入数据信道。可以将源1702的附加信道作为SRC2输入数据用于另外收缩深度内的逻辑单元。在一个实施例中,源1700可以可选地包括多个信道,其中附加信道被作为输入提供至另外的功能单元内的累加器。在一个实施例中,源1700可以是被加到初始收缩层的每个功能单元中的每个累加器的单个值。
图18A至图18B展示了根据本文所描述的实施例的可由点积逻辑执行的指令1800。图18A展示了具有由实施例提供的可由收缩矩阵逻辑执行的累加指令的四元素点积的字段。图18B展示了在使用收缩矩阵逻辑来计算具有累加u的四元素点积期间执行的按元素计算。
图18A展示了具有累加指令1800的四元素点积的字段,所述累加指令当被执行时使收缩矩阵累加器执行具有累加的四元素点积。在一个实施例中,指令1800包括断言(predicate)字段1802、操作码字段1804、条件修饰符字段1806、执行大小字段1808、以及用于指定目的地1810、第零源1812(src0)第一源1814(src1)、第二源1816(src2)和收缩深度1818(s深度)的操作数字段。
断言字段1802可以指定断言掩码。断言掩码可以用于启用或禁用指令的SIMD执行信道。在各个实施例中,禁用的信道可以绕过执行,或者可以执行同时防止执行逻辑修改与禁用的信道相关联的架构状态。在一个实施例中,可以丢弃执行的输出而不进行提交。
操作码字段1804可以指定将指令1800识别到执行逻辑的操作码。在一个实施例中,操作码字段1804包括一个或多个位,所述一个或多个位当被启用时指示将由矩阵加速器(例如,矩阵加速器1523)来执行指令。在一个实施例中,操作码字段1804还可以包括一个或多个位,所述一个或多个位指定将由诸如矩阵加速器内的点积逻辑(例如,点积逻辑1608)等专用点积逻辑来执行指令1800。
条件修饰符字段1806可以用于基于从执行管线输出的诸如符号、零、上溢、非数字(NaN)等内部条件信号来设置标记寄存器。如果此字段被设置为0000,则不更新标记寄存器。在一个实施例中,所支持的条件包括但不限于:零或等于、非零或不等于、大于、大于或等于、小于、小于或等于、上溢、以及具有所计算NaN的无序。此外,在一些配置中,可以启用源修饰符字段。
执行大小1808(执行_大小)指定指令1800的执行信道数量。在四元素点积指令的情况下,在一个实施例中,执行信道的数量可以用于指定将在其上执行计算的四元素向量对的数量。
目的地1810、第零源1812(src0)、第一源1814(src1)、第二源1816(src2)可以用于指定向其写入计算的目的地以及可以从中检索源数据的位置。在一个实施例中,目的地1810可以指定要向其写入数据的寄存器。在一个实施例中,目的地1810可以是标量寄存器,虽然在一些实施例中目的地也可以是存储来自多个信道的输出的向量寄存器。例如,在指定单个四元素信道的情况下,可以将单个点积写入到目的地处的单个输出信道。在指定多个四元素信道的情况下,可以将多个点积写入到向量目的地寄存器。第零源1812、第一源1814和第二源1816可以是包括一个或多个源数据信道的寄存器或立即值,每个信道具有要由点积逻辑处理的四个元素,与如图17A至图17B中的源1700、源1701和源1702一样。收缩深度1818(s深度)可以用于指定为了处理输入数据要使用的收缩层数量。在一个实施例中,收缩深度1818可以作为立即值来提供。
在一些实施例中,可以存在除了所展示的那些字段之外的附加字段。例如,在一个实施例中,存在指定源操作数的数字修改的源修饰符字段。源操作数的每个数据元素的值可以可选地在递送到执行流水线之前取其绝对值和/或将其符号反转。可以在否定修饰符之前应用绝对值修饰符,使得可以产生有保证的负值。在一个实施例中,存在可以用于控制目的地饱和度的饱和度字段。当启用饱和度时,到目的地寄存器的输出数据饱和。指定饱和度运算取决于目的地数据类型。饱和度是将在数据类型的饱和度目标范围之外的任何数据转换成与目标范围最接近的表示值的运算。
图18B中示出了指令1800的按元素运算。在一个实施例中,硬件缓冲器、临时寄存器、或收缩矩阵加速器的点积逻辑内的功能单元的内部寄存器可以存储第一源1814的信道1824的元素A3至A0。附加硬件缓冲器或临时寄存器可以存储第二源1816的信道1826的元素B3至B0。可以将所述元素加载到点积逻辑(例如,图16和图17A的点积逻辑1608)的功能单元(例如,图17A的功能单元1712)中。一组乘法器(例如,图17B的乘法器1723A至1723D)可以生成一组点积1834。可以将所述一组点积加载到加法器(例如,图17B的加法器1724)中。
所述加法器可以生成所述一组点积1835的和,所述和可以与现有的累加器值1822(例如,C0)累加。现有的累加器值1822可以是经由指令1800提供的初始累加器值,或者可以是由前一收缩层提供的累加器值。然后,可以将所述一组点积1835的累加和输出到目的地1838,所述目的地可以是由指令1800指定的目的地1810,或者可以将所述累加和作为下一收缩层的初始累加器值1836进行加载。
图19展示了根据实施例的程序代码编译过程1900。在一个实施例中,在可以包括多级编译的编译器1902处将软件程序的源码级别描述1901编译到具有包括或指定要由处理逻辑执行的点积的运算1903的级。运算1903可以是以中间语言指定的运算,或者可以是参考计算框架的图元(诸如,由机器学习框架提供的图元)的程序代码。然后,可以由附加编译器1904(其可以是着色器编译器)将包括或指定点积的运算1903进一步编译成包括要由矩阵运算加速器执行的点积指令的机器级目标代码1905,如本文所描述的。
图20展示了根据本文所描述的实施例的用于在指令执行流水线内执行点积指令的过程2000。过程2000可以使用本文所描述的数据处理系统的计算逻辑来执行,所述数据处理系统包括但不限于图15的数据处理系统1500。在一个实施例中,取出和解码逻辑(例如,取出和解码单元1521)可以取出并解码要在GPGPU内执行的单个指令,其中,所述单个指令被解码成经解码矩阵指令,如框2002处示出的。经解码指令可以使GPGPU执行如本文所描述的并行点积运算。如框2004处示出的,过程2000可以使执行流水线确定要执行以在诸如图15和图16中示出的矩阵加速器1523等矩阵加速器上执行经解码矩阵指令的一组流水线命令。如框2006处示出的,过程2000包括将所述一组流水线命令调度到诸如本文所描述的点积逻辑1608等收缩点积流水线,以执行经解码矩阵指令。如框2008处示出的,过程2000另外包括响应于完成所述一组流水线命令而引退经解码矩阵指令。
图21展示了根据实施例的一种方法2100,通过所述方法,功能单元处的硬件逻辑可以执行指令以执行具有累加的收缩点积。方法2100可以经由如本文所描述的基于硬件的收缩点积计算逻辑(例如,点积逻辑1608)来执行。
在一个实施例中,方法2100包括用于基于硬件的收缩点积计算逻辑取出要由GPGPU的矩阵运算加速器执行的指令的源值和计算深度,如框2102处示出的。计算深度可以指定为了计算指令的点积而要使用的收缩层数量。点积逻辑可以可选地取出初始累加器值并将所述初始值存储到累加器,如框2104处示出的。然而,取决于向指令提供的操作数,所述初始值可以是零值。在一个实施例中,所述初始值是从不同收缩层的功能单元输出的值。
如框2106处示出的,对于每个指定的计算层,方法2100包括用于点积逻辑对写启用掩码求值,以确定一组启用的并行处理信道。所述写启用掩码可以用于禁用指定SIMD信道的计算。在一个实施例中,所述写启用掩码是至少部分地基于提供有要执行的指令的断言掩码来配置的。
如框2108处示出的,方法2100另外包括用于点积逻辑针对收缩层中的每个启用的并行处理信道、基于源输入元素的按元素相乘来生成一组积。对于本文所描述的一些实施例的四元素点积,将两个源的四个元素相乘以生成所述一组积。在框2110处,方法2100包括用于点积逻辑计算所述一组积的和并将所述和加到累加器中的值。所述累加器中的值可以是框2104处取出的初始值,或者可以是由来自不同收缩层的功能单元提供的值。
在一个实施例中,在最后一个计算层中的功能单元处执行方法2100的情况下,如框2111处示出的,所述功能单元可以将所计算的点积输出到指定目的地寄存器。如果方法2100不在最后一个计算层中的功能单元处执行,则所述功能单元可以将所计算的点积输出到下一层的累加器,如框2112处示出的。
每个层都可以在每个周期期间使用所提供的源数据来执行计算。在一个实施例中,以流水线方式来执行给定指令的计算。取决于针对指令而指定的执行大小和收缩深度,点积逻辑可以并行执行一个或多个指令的运算。可替代地,单个指令可能需要多个周期来完成。
在一个实施例中,图21的方法2100可以由基于下面的表1中示出的伪代码而配置的硬件逻辑来执行。
表1——具有累加的四元素收缩点积
在表1的伪代码中,Src0、Src1和Src2是存储对应于如图18A中的第零源1812(src0)、第一源1814(src1)和第二源1816(src2)的操作数数据的寄存器。进一步参照图18A,s深度对应于收缩深度1818,执行_大小对应于执行大小1808,并且dst对应于目的地1810。在所述伪代码中,所识别的寄存器参照寄存器编号和子寄存器编号字段。寄存器编号字段提供操作数的寄存器编号。子寄存器编号字段提供操作数的子寄存器编号。子寄存器编号字段与相应的寄存器编号字段一起提供寄存器区域原点的字节对齐地址。对于一些指令,此字段提供字节地址的位[4:0],而寄存器编号字段提供位[12:5]。
图22是根据实施例的包括图形处理器2204的计算装置2200的框图。计算装置2200可以是诸如图1中的数据处理系统100等计算装置。计算装置2200还可以是诸如机顶盒(例如,基于互联网的有线电视机顶盒等)、基于全球定位系统(GPS)的装置等通信装置,或者被包括在所述通信装置内。计算装置2200还可以是诸如蜂窝电话、智能电话、个人数字助理(PDA)、平板计算机、膝上型计算机、电子阅读器、智能电视、电视平台、可穿戴装置(例如,眼镜、手表、手环、智能卡、珠宝、衣物等)、媒体播放器等移动计算装置,或者被包括在所述移动计算装置内。例如,在一个实施例中,计算装置2200包括移动计算装置,所述移动计算装置采用将计算装置2200的各种硬件组件和/或软件组件集成在单个芯片上的集成电路(“IC”),诸如芯片上系统(“SoC”或“SOC”)。
计算装置2200包括图形处理器2204。图形处理器2204表示本文所描述的任何图形处理器。图形处理器包括一个或多个图形引擎、图形处理器核、以及如本文所描述的其他图形执行资源。这种图形执行资源可以呈现为各种形式,包括但不限于执行单元、着色器引擎、片段处理器、顶点处理器、流式多处理器、图形处理器集群、或者适合于处理图形资源或图像资源、或在异构处理器中执行通用计算操作的任何计算资源集合。
在一个实施例中,图形处理器2204包括高速缓存2214,所述高速缓存可以是单个高速缓存或被分成多个高速缓存存储器片段,包括但不限于任何数量的L1、L2、L3或L4高速缓存、渲染高速缓存、深度高速缓存、采样器高速缓存和/或着色器单元高速缓存。在一些实施例中,图形处理器2204包括工作负载单元2224、矩阵单元2234和GPGPU引擎2244。工作负载单元2224可以调度工作负载操作,以在矩阵单元2234和GPGPU引擎2244上执行。工作负载单元2224可以具有硬件逻辑单元,包括但不限于图15的调度器控制器1522。在一个实施例中,矩阵单元2234包括如图15中的矩阵加速器1523。矩阵单元2234可以包括点积加速逻辑,包括但不限于本文所描述的收缩点积逻辑。
如所展示的,在一个实施例中,并且除了图形处理器2204之外,计算装置2200可以进一步包括任何数量和类型的硬件组件和/或软件组件,包括但不限于应用处理器2206、存储器2208以及输入/输出(I/O)源2210。应用处理器2206可以如参照图3所展示的那样与硬件图形流水线交互,以共享图形流水线功能。经处理的数据被存储在硬件图形流水线的缓冲器中,并且状态信息被存储在存储器2208中。所产生的数据可以传送到显示控制器,以经由诸如图3的显示装置320等显示装置来输出。所述显示装置可以属于各种类型,诸如阴极光线管(CRT)、薄膜晶体管(TFT)、液晶显示器(LCD)、有机发光二极管(OLED)阵列等,并且可以被配置用于经由图形用户界面向用户显示信息。
应用处理器2206可以包括一个或多个处理器,诸如图1的(多个)处理器102,并且可以是至少部分地用于执行计算装置2200的操作系统(OS)2202的中央处理单元(CPU)。OS2202可以用作计算装置2200的硬件资源和/或物理资源与一个或多个用户之间的接口。OS2202可以包括用于计算装置2200中的各种硬件装置的驱动器逻辑,包括图形驱动器逻辑2222,诸如图10的用户模式图形驱动器1026和/或内核模式图形驱动器1029。
可以设想,在一些实施例中,图形处理器2204可以作为应用处理器2206的一部分(诸如物理CPU封装体的一部分)而存在,在这种情况下,存储器2208的至少一部分可以由应用处理器2206和图形处理器2204来共享,但是存储器2208的至少一部分可以专用于图形处理器2204,或者图形处理器2204可以具有单独的存储器存储设备。存储器2208可以包括缓冲器(例如,帧缓冲器)的预分配区域;然而,本领域普通技术人员应当理解,实施例不限于此,并且可以使用更低级图形流水线可访问的任何存储器。存储器2208可以包括各种形式的随机存取存储器(RAM)(例如,SDRAM、SRAM等),包括利用图形处理器2204来渲染桌面场景或3D图形场景的应用。诸如图1的存储器控制器116等存储器控制器中枢可以访问存储器2208中的数据并且将其转发到图形处理器2204以便进行图形流水线处理。可以使存储器2208对计算装置2200内的其他组件可用。例如,在实施软件程序或应用时由一个或多个处理器(例如,应用处理器2206)对从计算装置2200的各种I/O源2210接收的任何数据(例如,输入图形数据)进行操作之前,可以将所述数据临时排队到存储器2208中。类似地,软件程序确定应通过计算系统接口之一从计算装置2200发送到外部实体或存储到内部存储元件中的数据在其被传输或存储之前经常在存储器2208中临时排队。
I/O源可以包括诸如触摸屏、触摸面板、触摸板、虚拟或常规键盘、虚拟或常规鼠标、端口、连接器、网络装置等装置,并且可以经由如图1所引用的平台控制器中枢130来附接。另外,I/O源2210可以包括一个或多个I/O装置,所述一个或多个I/O装置被实施为用于向和/或从计算装置2200(例如,网络适配器)传送数据;或者用于在计算装置2200(例如,硬盘驱动器)内进行大规模非易失性存储。包括字母数字及其他键的用户输入装置可以用于将信息和命令选择传达至图形处理器2204。另一类型的用户输入装置是用于将方向信息和命令选择传达至GPU并控制显示装置上的光标移动的光标控件,诸如鼠标、轨迹球、触摸屏、触摸板或光标方向键。可以采用计算装置2200的相机和麦克风阵列来观察手势、记录音频和视频并接收和发射视觉命令和音频命令。
被配置为网络接口的I/O源2210可以包括提供对网络的访问,诸如LAN、广域网(WAN)、城域网(MAN)、个域网(PAN)、蓝牙、云网络、蜂窝或移动网络(例如,第3代(3G)、第4代(4G)等)、内联网、互联网等。(多个)网络接口可以包括例如具有一个或多个天线的无线网络接口。(多个)网络接口还可以包括例如经由网络电缆与远程装置通信的有线网络接口,所述网络电缆可以是例如以太网电缆、同轴电缆、光缆、串行电缆或并行电缆。
(多个)网络接口可以例如通过遵循IEEE 802.11标准来提供对LAN的访问,和/或无线网络接口可以例如通过遵循蓝牙标准来提供对个域网的访问。还可以支持其他无线网络接口和/或协议,包括所述标准的先前版本以及后续版本。除了或代替经由无线LAN标准通信,(多个)网络接口可以使用例如以下协议来提供无线通信:时分多址(TDMA)协议、全球移动通信系统(GSM)协议、码分多址(CDMA)协议和/或任何其他类型的无线通信协议。
应当理解,对于某些实施方式,比在上文中所描述的示例更少或更多地配备的系统可以是优选的。因此,取决于众多因素,如价格约束、性能要求、技术改进或其他情况,计算装置2200的配置可以随着实施方式而改变。示例可以包括但不限于:移动装置、个人数字助理、移动计算装置、智能电话、蜂窝电话、手持设备、单向寻呼机、双向寻呼机、消息收发装置、计算机、个人计算机(PC)、台式计算机、膝上型计算机、笔记本计算机、手持式计算机、平板计算机、服务器、服务器阵列或服务器场、web服务器、网络服务器、互联网服务器、工作站、小型计算机、大型计算机、超级计算机、网络设备、web设备、分布式计算系统、多处理器系统、基于处理器的系统、消费电子设备、可编程消费电子设备、电视、数字电视、机顶盒、无线接入点、基站、订户站、移动订户中心、无线电网络控制器、路由器、集线器、网关、桥接器、交换机、机器或上述各项的组合。
实施例可以被实施为以下各项中的任何一项或其组合:使用母板互连的一个或多个微芯片或集成电路、硬连线逻辑、由存储器装置存储且由微处理器执行的软件、固件、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)。以示例的方式,术语“逻辑”可以包括软件或硬件和/或软件和硬件的组合。
实施例可以被提供为例如计算机程序产品,所述计算机程序产品可以包括其上存储有机器可执行指令的一种或多种机器可读介质,所述机器可执行指令在由一个或多个机器(诸如计算机、计算机网络或其他电子装置)执行时可以导致所述一个或多个机器执行根据本文所述实施例的操作。机器可读介质可以包括但不限于:软盘、光盘、CD-ROM(CD盘-只读存储器)以及磁光盘、ROM、RAM、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪存、或者适用于存储机器可执行指令的其他类型非暂态机器可读介质。
此外,实施例可以作为计算机程序产品被下载,其中,可以经由通信链路(例如,调制解调器和/或网络连接),借助于在载波或其他传播介质中具体化和/或由载波或其他传播介质调制的一个或多个数据信号来将程序从远程计算机(例如,服务器)转移至请求计算机(例如,客户机)。
本文所描述的实施例提供了一种指令和相关联逻辑,以使GPGPU程序代码能够访问专用硬件逻辑从而加速点积运算。以下条款和/或示例涉及其特定实施例或示例。可在一个或多个实施例中的任何地方使用示例中的细节。可以以各种方式将不同的实施例或示例的各种特征与所包括的一些特征以及被排除的其他特征组合以适应各种不同的应用。示例可以包括主题,诸如,方法;用于执行方法的动作的装置;包括指令的至少一种机器可读介质,所述指令当由机器执行时使机器执行所述方法的动作、或根据本文所描述的实施例和示例的设备或系统的动作。各组件可以是用于执行所描述的操作或功能的装置。
一个实施例提供了一种图形处理单元,所述图形处理单元包括用于取出指令以便执行的取出单元以及用于将所述指令解码成经解码指令的解码单元。所述经解码指令是用于使所述图形处理单元执行并行点积运算的矩阵指令。所述GPGPU还包括用于使用多个收缩层来跨一个或多个SIMD通道执行所述经解码指令的收缩点积单元,其中,为了执行所述经解码指令,在第一收缩层处计算的点积将被输出到第二收缩层,其中,每个收缩层包括一组或多组互连的乘法器与加法器,每组乘法器与加法器用于生成点积。
一个实施例提供了一种执行指令以计算通用图形处理单元(GPGPU)内的一组或多组四元素向量的点积的方法。所述方法包括:取出并解码将在所述GPGPU内执行的单个指令,所述单个指令被解码成用于使所述GPGPU执行并行点积运算的经解码矩阵指令;确定要执行的一组流水线命令,以在矩阵加速器上执行所述经解码矩阵指令;以及将所述一组流水线命令调度到所述矩阵加速器的收缩点积流水线,以执行所述经解码矩阵指令。
一个实施例提供了一种数据处理系统,所述数据处理系统包括:一个或多个处理器,所述一个或多个处理器中的至少一个处理器包括图形处理单元,所述图形处理单元包括用于加速矩阵运算的硬件逻辑,所述硬件逻辑包括包含多个收缩层的收缩点积单元,其中,每个收缩层包括一组或多组互连的乘法器与加法器,每组乘法器与加法器用于生成点积;以及存储有用于由所述收缩点积单元执行的指令的非暂态机器可读介质,其中,至少一个指令当被解码时用于使所述收缩点积单元使用一个或多个单指令多数据(SIMD)通道来执行并行点积计算。
本领域技术人员将从以上描述中领会到,实施例的宽泛技术可以以各种形式实施。因此,虽然已经结合其特定示例描述了这些实施例,但是实施例的实际范围不应由此受限,因为其他的修改在本领域技术人员学习了附图、说明书和所附权利要求之后就将变得显而易见。

Claims (23)

1.一种图形处理单元,包括:
取出单元,用于取出用于执行的指令;
解码单元,用于将所述指令解码成经解码指令,其中,所述经解码指令是用于使所述图形处理单元执行并行点积运算的矩阵指令;以及
收缩点积单元,用于使用多个收缩层来跨一个或多个单指令多数据SIMD通道执行所述经解码指令的,其中,为了执行所述经解码指令,在第一收缩层处计算的点积用于被输出到第二收缩层,其中,每个收缩层包括一组或多组互连的乘法器与加法器,每组乘法器与加法器用于生成点积。
2.如权利要求1所述的图形处理单元,在所述第一收缩层处计算的所述点积用于被加到初始累加器值。
3.如权利要求2所述的图形处理单元,所述经解码指令用于提供所述初始累加器值。
4.如权利要求2所述的图形处理单元,其中,用于被输出到所述第二收缩层的点积用于被输入到所述第二收缩层的累加器作为所述第二收缩层的初始累加器值。
5.如权利要求4所述的图形处理单元,所述收缩点积单元针对每个收缩层还包括至少一个累加器。
6.如权利要求1至5中任一项所述的图形处理单元,其中,所述经解码指令与断言掩码相关联,所述断言掩码用于启用或禁用一个或多个SIMD通道的一个或多个信道。
7.如权利要求6所述的图形处理单元,其中,每个信道与一个或多个四元素向量相关联。
8.如权利要求7所述的图形处理单元,所述经解码指令用于指定收缩深度,所述收缩深度用于指示为了计算所述点积要使用的收缩层数量。
9.如权利要求7所述的图形处理单元,所述经解码指令用于指定执行大小,所述执行大小用于指示为了计算所述点积要使用的SIMD信道数量。
10.一种执行指令以计算通用图形处理单元GPGPU内的一组或多组四元素向量的点积的方法,所述方法包括:
取出并解码用于在所述GPGPU内执行的单条指令,所述单条指令被解码成用于使所述GPGPU执行并行点积运算的经解码矩阵指令;
确定要执行以在矩阵加速器上执行所述经解码矩阵指令的流水线命令的集合;以及
将所述流水线命令的集合调度到所述矩阵加速器的收缩点积流水线,以执行所述经解码矩阵指令。
11.如权利要求10所述的方法,还包括:响应于在所述矩阵加速器上完成所述流水线命令的集合而引退所述经解码矩阵指令。
12.如权利要求10所述的方法,还包括:
取出用于所述经解码矩阵指令的源值和计算深度,其中,所述计算深度指定为了执行所述并行点积运算要使用的所述收缩点积流水线的收缩层数量;
取出用于累加器的初始值;以及
将所述初始值存储到所述收缩点积流水线的收缩层的累加器。
13.如权利要求10所述的方法,其中,要执行以在所述矩阵加速器上执行所述经解码矩阵指令的流水线命令的集合使所述矩阵加速器的所述收缩点积流水线:对写启用掩码求值,以确定被启用的并行处理信道的集合;以及针对每个被启用的并行处理信道,基于源输入元素的按元素相乘来生成积的集合。
14.如权利要求13所述的方法,其中,所述流水线命令的集合还使所述收缩点积流水线计算所述积的集合的和并将所述和加到所述收缩点积流水线的层的累加器中的值,并且其中,所述方法还包括:基于所述经解码矩阵指令的计算深度,将点积输出到所述收缩点积流水线的后续层的累加器或输出到目的地寄存器。
15.一种系统,包括用于执行如权利要求10至14中任一项所述的方法的装置。
16.一种机器可读介质,具有存储在其上的数据,所述数据如果由至少一个机器执行则使所述至少一个机器制造至少一个用于执行如权利要求10至14中任一项所述的方法的集成电路。
17.一种数据处理系统,包括:
一个或多个处理器,所述一个或多个处理器中的至少一个处理器包括图形处理单元,所述图形处理单元包括用于加速矩阵运算的硬件逻辑,所述硬件逻辑包括包含多个收缩层的收缩点积单元,其中,每个收缩层包括一组或多组互连的乘法器与加法器,每组乘法器与加法器用于生成点积;以及
非暂态机器可读介质,存储有用于由所述收缩点积单元执行的指令,其中,至少一条指令当被解码时用于使所述收缩点积单元使用一个或多个单指令多数据SIMD通道来执行并行点积计算。
18.如权利要求17所述的数据处理系统,所述至少一条指令用于使所述收缩点积单元在第一收缩层处计算点积并将所述点积输出到第二收缩层。
19.如权利要求18所述的数据处理系统,其中,所述收缩点积单元用于在将所述点积输出到所述第二收缩层之前,将所述点积加到所述第一收缩层处的累加器值。
20.如权利要求19所述的数据处理系统,所述至少一条指令用于指定所述累加器值。
21.如权利要求19所述的数据处理系统,所述累加器值由所述收缩点积单元的第三收缩层提供。
22.如权利要求21所述的数据处理系统,所述第三收缩层用于计算两个或更多个向量的点积,其中,所述两个或更多个向量中的每个向量是四元素向量。
23.如权利要求22所述的数据处理系统,其中,所述第三收缩层用于将多个点积输出到向量目的地寄存器。
CN201910207919.0A 2018-04-19 2019-03-19 用于具有累加的收缩点积的指令和逻辑 Pending CN110389783A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/957,728 2018-04-19
US15/957,728 US11042370B2 (en) 2018-04-19 2018-04-19 Instruction and logic for systolic dot product with accumulate

Publications (1)

Publication Number Publication Date
CN110389783A true CN110389783A (zh) 2019-10-29

Family

ID=68105290

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910207919.0A Pending CN110389783A (zh) 2018-04-19 2019-03-19 用于具有累加的收缩点积的指令和逻辑

Country Status (3)

Country Link
US (3) US11042370B2 (zh)
CN (1) CN110389783A (zh)
DE (1) DE102019101118A1 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019220692A1 (ja) * 2018-05-15 2019-11-21 三菱電機株式会社 演算装置
US11468304B1 (en) * 2019-11-26 2022-10-11 Amazon Technologies, Inc. Synchronizing operations in hardware accelerator
US11182458B2 (en) * 2019-12-12 2021-11-23 International Business Machines Corporation Three-dimensional lane predication for matrix operations
US11829439B2 (en) * 2019-12-30 2023-11-28 Qualcomm Incorporated Methods and apparatus to perform matrix multiplication in a streaming processor
US11507817B2 (en) 2020-04-17 2022-11-22 Samsung Electronics Co., Ltd. System and method for performing computations for deep neural networks
DE102020132088A1 (de) * 2020-05-01 2021-11-04 Intel Corporation Berechnung effizienter kanalübergreifender operationen in parallelrechenmaschinen mit systolischen arrays
US11182337B1 (en) * 2020-05-01 2021-11-23 Intel Corporation Computing efficient cross channel operations in parallel computing machines using systolic arrays
US11263291B2 (en) * 2020-06-26 2022-03-01 Intel Corporation Systems and methods for combining low-mantissa units to achieve and exceed FP64 emulation of matrix multiplication
US11977885B2 (en) 2020-11-30 2024-05-07 Intel Corporation Utilizing structured sparsity in systolic arrays

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2806524B2 (ja) * 1988-03-04 1998-09-30 日本電気株式会社 ベクトル演算命令発行制御方法
JP3805314B2 (ja) * 2003-02-27 2006-08-02 Necエレクトロニクス株式会社 プロセッサ
US7587579B2 (en) * 2004-12-28 2009-09-08 Ceva D.S.P. Ltd. Processor core interface for providing external hardware modules with access to registers of the core and methods thereof
WO2013101018A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Dot product processors, methods, systems, and instructions
US20160267111A1 (en) * 2015-03-11 2016-09-15 Microsoft Technology Licensing, Llc Two-stage vector reduction using two-dimensional and one-dimensional systolic arrays
US10380481B2 (en) * 2015-10-08 2019-08-13 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs concurrent LSTM cell calculations
CN109871236A (zh) * 2017-12-01 2019-06-11 超威半导体公司 具有低功率并行矩阵乘法流水线的流处理器

Also Published As

Publication number Publication date
US20210303299A1 (en) 2021-09-30
US20230297373A1 (en) 2023-09-21
US11640297B2 (en) 2023-05-02
US11042370B2 (en) 2021-06-22
US20190324746A1 (en) 2019-10-24
DE102019101118A1 (de) 2019-10-24

Similar Documents

Publication Publication Date Title
CN110399978B (zh) 机器学习加速架构
US11494163B2 (en) Conversion hardware mechanism
CN109961392A (zh) 在稀疏值映射到非零值的情况下针对深度学习的压缩
CN109993277A (zh) 用于深度神经网络的计算优化机制
CN110389783A (zh) 用于具有累加的收缩点积的指令和逻辑
CN110363698A (zh) 用于压缩包围体层级结构(bvh)的叶节点的设备和方法
CN109993683A (zh) 任意神经网络的机器学习稀疏计算机制、用于训练机制的算术计算微架构以及稀疏性
CN108734272A (zh) 卷积神经网络优化机构
CN108805792A (zh) 具有先进调度的可编程粗粒度化和稀疏矩阵计算硬件
CN109388777A (zh) 一种用于经优化的Winograd卷积加速器的系统和方法
CN109993684A (zh) 机器学习和深度学习处理中的压缩
CN108734274A (zh) 用于深度神经网络的计算优化机制
CN108694689A (zh) 神经网络调度机制
CN108805795A (zh) 用于机器学习的硬件实现的点对点通信原语
CN108734648A (zh) 计算优化机制
CN108734285A (zh) 神经网络的计算优化
CN108805794A (zh) 对自主机器处的机器学习进行存储管理
US11721059B2 (en) Apparatus and method for cross-instance front-to-back traversal for ray tracing heavily-instanced scenes
CN110384925A (zh) 自主运载工具在混合现实环境中的现实和虚拟无碰撞移动
CN108734649A (zh) 神经网络训练机构
CN108694684A (zh) 共享本地存储器分块机制
CN108694081A (zh) 用于机器学习的快速数据操作和有限状态机
CN109564699A (zh) 用于经优化光线追踪的装置和方法
CN110187977A (zh) 用于基于软件提示和硬件线程切换来降低寄存器区块冲突的系统和方法
CN110390625A (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