抢占式页故障处理

文档序号:1895046 发布日期:2021-11-26 浏览:4次 >En<

阅读说明:本技术 抢占式页故障处理 (Preemptive page fault handling ) 是由 M·拉马多斯 V·韦姆拉帕利 N·库雷 W·B·萨德勒 J·D·皮亚尔斯 M·A·彼得 于 2020-02-10 设计创作,主要内容包括:涉及预测性页故障处理的方法和设备。在示例中,一种设备包括处理器,所述处理器用于:接收触发了计算进程的页故障的虚拟地址;检查用于虚拟存储器分配的虚拟存储器空间,所述虚拟存储器分配针对触发了所述页故障的所述计算进程;以及根据以下项之一来管理所述页故障:第一协议,所述第一协议响应于确定触发了所述页故障的所述虚拟地址是针对所述计算进程的所述虚拟存储器分配中的最后页,或者第二协议,所述第二协议响应于确定触发了所述页故障的所述虚拟地址不是针对所述计算进程的所述虚拟存储器分配中的最后页。还公开并要求保护其它实施例。(To methods and apparatus for predictive page fault handling. In an example, an apparatus includes a processor to: receiving a virtual address that triggered a page fault of a computing process; checking virtual memory space for a virtual memory allocation, the virtual memory allocation being for the computing process that triggered the page fault; and managing the page fault according to one of: a first protocol in response to determining that the virtual address that triggered the page fault is the last page in the virtual memory allocation for the computing process, or a second protocol in response to determining that the virtual address that triggered the page fault is not the last page in the virtual memory allocation for the computing process. Other embodiments are also disclosed and claimed.)

具体实施方式

在一些实施例中,图形处理单元(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-管理程序初始化的寄存器

1 切片控制寄存器
2 真实地址(RA)调度的进程区域指针
3 权限掩蔽覆盖寄存器
4 中断向量表条目偏移
5 中断向量表条目限制
6 状态寄存器
7 逻辑分区ID
8 真实地址(RA)管理程序加速器利用记录指针
9 存储描述寄存器

表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。

机器学习神经网络实现

由本文描述的实施例提供的计算架构可以配置成执行特别适合于训练和部署神经网络以用于机器学习的那类并行处理。神经网络可以归纳为具有图关系(graphrelationship)的功能的网络。如在本领域内众所周知的,有多种类型的神经网络实现在机器学习中使用。一个示范性类型的神经网络是前馈网络,如之前描述的那样。

第二个示范性类型的神经网络是卷积神经网络(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),其使用定义为的激活函数,使得激活阈值为零。

池化级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)的处理期间所确定的状态信息处理。给定状态可以计算为,其中UW是参数矩阵。函数f一般是非线性的,例如双曲正切函数(Tanh)或整流函数的变型。然而,在隐藏层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中所描绘的操作可在页故障处理器中实现,所述页故障处理器进而可在硬件中实现或由执行逻辑指令(例如,软件)的通用处理器来实现。作为示例,在一些实施例中,图15中所描绘的操作可在通信地耦合到一个或多个存储器管理单元(MMU)的微控制器中实现,所述一个或多个存储器管理单元(MMU)与图形处理器相关联或通信地耦合到图形处理器。

参考图14,在操作1410处,接收页故障虚拟地址。作为示例,与执行进程的处理器相关联的存储器管理单元可在进程访问未被映射到与进程相关联的虚拟地址空间中的存储器页时检测页故障。在一些示例中,与虚拟地址相关联的页可存在于存储器中,但可尚未由存储器管理单元标志(即,软页故障)。在其它示例中,与虚拟地址相关联的存储器页可不在存储器中被加载(即,硬页故障),在该情况下,必须通过扩展专用于进程的存储器或通过逐出存储器的某个部分的内容从而为存储器页创建空闲空间,来为存储器页创建存储器空间。

在操作1415处,检查进程的虚拟地址分配以确定在操作1410中接收的虚拟地址在为进程分配的虚拟地址空间内的页位置。在操作1420处,如果在操作1410中接收的虚拟地址不表示针对进程的存储器分配的最后页,则控制转到操作1425,并且在页表中分配存储器。在一些示例中,从在操作1410中接收的页故障虚拟地址开始映射存储器,并且在页表中映射额外数量(由N所指示)的页,并且控制转到操作1430。在一些示例中,页的数量可部分通过可用存储器的量来确定。相反,在操作1420,如果在操作1410中接收的虚拟地址表示针对进程的存储器分配的最后页,则控制转到操作1430。

在操作1430处,在虚拟存储器中更新页表以反映存储器的分配。在操作1435处,将与页故障相关联的信息存储在存储器中。例如,可以将至少包括进程标识符、虚拟存储器地址、和时间戳的页故障数据记录存储在存储器中。另外,页故障数据记录可以包括针对进程的存储器分配参数、存储器容量参数、和线程计数参数。当存储器管理单元检测到页故障时,可以重复执行图14的操作,以便管理页表中的页的分配。此外,操作1435的重复执行在存储器中构建页故障数据记录的数据表。

在一些示例中,在操作1435中存储在存储器中的页故障数据记录可用于生成页故障预测,页故障预测进而可用于抢占式地检索数据以试图避免预测的页故障。参考图15,在操作1510处,从存储器检索经由操作1435的重复执行而被存储在数据记录中的页故障信息,并且在操作1515处,从在操作1435中存储的页故障数据来构建时间序列数据集。在一些示例中,时间序列数据集可整理一个或多个进程的数据记录,并构建数据记录中的一个或多个参数与页故障事件之间的相关性。

在操作1520处,时间序列数据集可用于预测一个或多个进程的页故障事件。响应于对页故障事件的预测,可以抢占式地从存储器中检索数据,以便避免在操作1520中预测的(一个或多个)页故障。

图16是根据实施例的适于实现抢占式页故障处理的环境1600的示意性框图。参考图16,在一些示例中,环境包括通信地耦合到微控制器1620的多个存储器管理单元1610。微控制器1620被通信地耦合到直接存储器访问控制器1630和存储器1640。在一些示例中,页故障处理算法(诸如参考图14和图15所描述的那些)可以在本地微控制器1620中实现,所述本地微控制器1620被通信地耦合到存储器管理单元1610。微控制器1620还可以管理页故障、调度处置(cope)、和更新页表。使用页故障处理器的基于硬件的实施例可以减少与页故障处理相关联的时延。

额外示范性图形处理系统

上面描述的实施例的细节可以合并到下面描述的图形处理系统和装置中。图17至图29的图形处理系统和装置说明了可以实现上文描述的任何和所有技术的备选系统和图形处理硬件。

系统概览

图17是根据实施例的处理系统1700的框图。系统1700可用于单处理器桌上型系统、多处理器工作站系统或具有大量的处理器1702或处理器核1707的服务器系统。在一个实施例中,系统1700是合并在片上系统(SoC)集成电路内的处理平台以供诸如具有到局域网或广域网的有线或无线连接的物联网(IoT)装置内的移动装置、手持装置或嵌入式装置使用。

在一个实施例中,系统1700可以包括以下各项、与以下各项耦合或被集成在以下各项内:基于服务器的游戏平台;游戏控制台,包括游戏和媒体控制台;移动游戏控制台、手持式游戏控制台或在线游戏控制台。在一些实施例中,系统1700是移动电话、智能电话、平板计算装置或移动因特网连接的装置(诸如具有低内部存储能力的膝上型装置)的部分。处理系统1700还可以包括以下各项、与以下各项耦合或被集成在以下各项内:可穿戴式装置,诸如智能手表可穿戴式装置;智能眼镜(eyewear)或服装,其通过增强现实(AR)或虚拟现实(VR)特征增强,以提供视觉、听觉或触觉输出来补充现实世界视觉、听觉或触觉体验,或以其它方式提供文本、音频、图形、视频、全息图像或视频、或触觉反馈;其它增强现实(AR)装置;或其它虚拟现实(VR)装置。在一些实施例中,处理系统1700包括或者是电视或机顶盒装置的部分。

在一些实施例中,系统1700可以包括以下各项、与以下各项耦合或被集成在以下各项内:自动驾驶车辆,诸如公共汽车、拖拉机挂车、汽车、摩托车或电动单车、飞机或滑翔机(或其任何组合)。自动驾驶车辆可使用系统1700来处理在车辆周围感应的环境。

在一些实施例中,一个或多个处理器1702各自包括用于处理指令的一个或多个处理器核1707,所述指令在被执行时执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核1707中的至少一个配置成处理特定指令集1709。在一些实施例中,指令集1709可以促进复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW)的计算。一个或多个处理器核1707可以处理不同的指令集1709,所述指令集可以包括用于促进对其它指令集进行仿真的指令。处理器核1707还可包括其它处理装置,诸如数字信号处理器(DSP)。

在一些实施例中,处理器1702包括高速缓存存储器1704。取决于架构,处理器1702可以具有单个内部高速缓存或多级内部高速缓存。在一些实施例中,在处理器1702的各种组件之间共享高速缓存存储器。在一些实施例中,处理器1702还使用外部高速缓存(例如,3级(L3)高速缓存或末级高速缓存(LLC))(未示出),其可使用已知的高速缓存一致性技术在处理器核1707之间被共享。寄存器堆1706被另外包括在处理器1702中,并且可包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其它寄存器可以是特定于处理器1702的设计。

在一些实施例中,一个或多个处理器1702与一个或多个接口总线1710耦合以在处理器1702与系统1700中的其它组件之间传送通信信号(诸如,地址、数据或控制信号)。在一个实施例中,接口总线1710可以是处理器总线,诸如直接媒体接口(DMI)总线的版本。然而,处理器总线不限于DMI总线,而是可以包括一个或多个外设组件互连总线(例如,PCI、快速PCI)、存储器总线或其它类型的接口总线。在一个实施例中,(一个或多个)处理器1702包括集成式存储器控制器1716和平台控制器集线器1730。存储器控制器1716促进存储器装置与系统1700的其它组件之间的通信,而平台控制器集线器(ICH)1730提供经由本地I/O总线到I/O装置的连接。

存储器装置1720可以是动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪速存储器装置、相变存储器装置或具有合适的性能以充当进程存储器的一些其它存储器装置。在一个实施例中,存储器装置1720可以作为用于系统1700的系统存储器操作以存储数据1722和指令1721,以供当所述一个或多个处理器1702执行应用或过程时使用。存储器控制器1716也与可选的外部图形处理器1718耦合,所述外部图形处理器可与处理器1702中的一个或多个图形处理器1708通信,以执行图形和媒体操作。在一些实施例中,可以通过加速器1712来协助图形、媒体和计算操作,该加速器1712是可以配置成执行图形、媒体或计算操作的专门集合的协处理器。例如,在一个实施例中,加速器1712是用于优化机器学习或计算操作的矩阵乘法加速器。在一个实施例中,加速器1712是可以用于与图形处理器1708一起执行射线追踪操作的射线追踪加速器。在一些实施例中,显示装置1711可以连接到(一个或多个)处理器1702。显示装置1711可以是内部显示装置(如同在移动电子装置或膝上型装置中一样)或经由显示接口(例如,DisplayPort等)附连的外部显示装置中的一个或多个。在一个实施例中,显示装置1711可以是头戴式显示器(HMD),例如用于虚拟现实(VR)应用或增强现实(AR)应用的立体显示装置。

在一些实施例中,平台控制器集线器1730使外设能够经由高速I/O总线连接到存储器装置1720和处理器1702。I/O外设包含但不限于:音频控制器1746、网络控制器1734、固件接口1728、无线收发器1726、触摸传感器1725、数据存储装置1724(例如,非易失性存储器、易失性存储器、硬盘驱动器、闪速存储器、NAND、3D NAND、3D XPoint等)。数据存储装置1724可经由存储设备接口(例如,SATA)或经由诸如外设组件互连总线(例如,PCI、快速PCI)的外设总线连接。触摸传感器1725可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发器1726可以是Wi-Fi收发器、蓝牙收发器、或诸如3G、4G、5G或长期演进(LTE)收发器之类的移动网络收发器。固件接口1728实现与系统固件的通信,并且可以是例如统一的可扩展固件接口(UEFI)。网络控制器1734可以使能到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线1710耦合。在一个实施例中,音频控制器1746是多通道高清音频控制器。在一个实施例中,系统1700包括用于将传统(例如,个人系统2(PS/2))装置耦合到系统的可选的传统I/O控制器1740。平台控制器集线器1730还可以连接到一个或多个通用串行总线(USB)控制器1742连接输入装置,诸如键盘和鼠标1743组合、照相机1744或其它USB输入装置。

将认识到,所示出的系统1700是示范性的而非限制性的,因为还可以使用以不同方式配置的其它类型的数据处理系统。例如,存储器控制器1716和平台控制器集线器1730的实例可以集成到分立式外部图形处理器(诸如外部图形处理器1718)中。在一个实施例中,平台控制器集线器1730和/或存储器控制器1716可以位于一个或多个处理器1702的外部。例如,系统1700可以包括外部存储器控制器1716和平台控制器集线器1730,它们可以配置为与(一个或多个)处理器1702通信的系统芯片集中的存储器控制器集线器和平台控制器集线器。

例如,电路板(“雪橇(sled)”)可以用来放置诸如CPU、存储器和其它组件之类的组件,所述电路板是为了提高热性能而设计的。在一些示例中,诸如处理器之类的处理组件位于雪橇的顶部上,而诸如DIMM之类的附近存储器则位于雪橇的底部上。作为由这种设计提供的增强气流的结果,组件可以比典型系统中更高的频率和功率电平操作,从而提高性能。此外,雪橇配置成盲目地与机架中的电源和数据通信电缆配合,从而增强它们快速拆卸、升级、重新安装和/或更换的能力。类似地,位于雪橇上的单个组件(诸如处理器、加速器、存储器和数据存储驱动器)由于它们彼此之间增加的间距而配置成易于升级。在说明性实施例中,组件额外包括硬件认证特征以证明它们的真实性。

数据中心可以利用单个网络架构(“组构”),所述单个网络架构支持多个其它网络架构,包括以太网和Omni-Path。雪橇可以经由光纤耦合到交换机,这提供比典型的双绞线电缆布线(例如,类别5、类别5e、类别6等)更高的带宽和更低的时延。由于高带宽、低时延互连和网络架构,数据中心可在使用中池化资源,诸如存储器、加速器(例如,GPU、图形加速器、FPGA、ASIC、神经网络和/或人工智能加速器等)和物理地分解的数据存储驱动器,并根据需要将它们提供给计算资源(例如,处理器),以使计算资源能够像访问本地资源一样访问池化的资源。

电源供应器或电源可以为系统1700或本文描述的任何组件或系统提供电压和/或电流。在一个示例中,电源供应器包括插入到墙上插座的AC到DC(交流电到直流电)适配器。此类AC功率可以是可再生能源(例如,太阳能)电源。在一个示例中,电源包括DC电源,诸如外部AC到DC转换器。在一个示例中,电源或电源供应器包括经由接近充电场充电的无线充电硬件。在一个示例中,电源可以包括内部电池、交流电源供应器、基于运动的电源供应器、太阳能电源供应器或燃料电池电源。

图18是处理器1800的实施例的框图,所述处理器具有一个或多个处理器核1802A-1802N、集成式存储器控制器1814和集成式图形处理器1808。图18中具有与本文任何其它图的元件相同的参考数字(或名称)的那些元件能够以与本文在其它地方描述的方式类似的任何方式来操作或运作,但并不限于此。处理器1800可包括多达且包括由虚线框表示的附加核1802N的附加核。处理器核1802A-1802N中的每个都包括一个或多个内部高速缓存单元1804A-1804N。在一些实施例中,每个处理器核还有权访问一个或多个共享高速缓存单元1806。

内部高速缓存单元1804A-1804N和共享高速缓存单元1806表示处理器1800内的高速缓存存储器层级。高速缓存存储器层级可包括每个处理器核内的至少一级指令和数据高速缓存以及一个或多个级别的共享中间级高速缓存,诸如,2级(L2)、3级(L3)、4级(L4)或其它级高速缓存,其中,在外部存储器前面的最高级别高速缓存被归类为LLC。在一些实施例中,高速缓存一致性逻辑保持各种高速缓存单元1806和1804A-1804N之间的一致性。

在一些实施例中,处理器1800还可包括一组一个或多个总线控制器单元1816以及系统代理核1810。所述一个或多个总线控制器单元1816管理一组外设总线,诸如一个或多个PCI或快速PCI总线。系统代理核1810提供对各种处理器组件的管理功能性。在一些实施例中,系统代理核1810包括一个或多个集成式存储器控制器1814以管理对各种外部存储器装置(未示出)的访问。

在一些实施例中,处理器核1802A-1802N中的一个或多个包括对同时多线程的支持。在这样的实施例中,系统代理核1810包括用于在多线程处理期间协调和操作核1802A-1802N的组件。系统代理核1810可另外包括功率控制单元(PCU),所述PCU包括用于调节处理器核1802A-1802N和图形处理器1808的功率状态的逻辑和组件。

在一些实施例中,处理器1800另外包括用于执行图形处理操作的图形处理器1808。在一些实施例中,图形处理器1808与一组共享高速缓存单元1806和系统代理核1810(包括一个或多个集成式存储器控制器1814)耦合。在一些实施例中,系统代理核1810还包括显示控制器1811以将图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器1811也可以是经由至少一个互连与图形处理器耦合的单独模块,或者可以集成在图形处理器1808内。

在一些实施例中,使用基于环的互连单元1812来耦合处理器1800的内部组件。然而,可以使用备选互连单元,诸如点到点互连、切换式互连、或其它技术,包括本领域众所周知的技术。在一些实施例中,图形处理器1808经由I/O链路1813与环互连1812耦合。

示范性I/O链路1813表示多种I/O互连中的至少一种,包括促进各种处理器组件与高性能嵌入式存储器模块1818(诸如eDRAM模块)之间的通信的封装上(on-package)I/O互连。在一些实施例中,处理器核1802A-1802N中的每个和图形处理器1808可以将嵌入式存储器模块1818用作共享末级高速缓存。

在一些实施例中,处理器核1802A-1802N是执行相同的指令集架构的同质核。在另一个实施例中,处理器核1802A-1802N在指令集架构(ISA)方面是异质的,其中,处理器核1802A-1802N中的一个或多个执行第一指令集,而其它核中的至少一个执行第一指令集的子集或不同指令集。在一个实施例中,处理器核1802A-1802N在微架构方面是异质的,其中,具有相对较高功耗的一个或多个核与具有较低功耗的一个或多个功率核耦合。在一个实施例中,处理器核1802A-1802N在计算能力方面是异质的。另外,处理器1800可以实现在一个或多个芯片上或者被实现为具有除其它组件之外的所示组件的SoC集成电路。

图19是图形处理器1900的框图,所述图形处理器可以是分立式图形处理单元,或可以是与多个处理核或其它半导体器件(诸如但不限于存储器装置或网络接口)集成的图形处理器。在一些实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射I/O接口并且利用被放置在处理器存储器中的命令进行通信。在一些实施例中,图形处理器1900包括用于访问存储器的存储器接口1914。存储器接口1914可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存、和/或到系统存储器的接口。

在一些实施例中,图形处理器1900还包括用于将显示输出数据驱动到显示装置1918的显示控制器1902。显示控制器1902包括多层视频或用户界面元件的组成以及用于显示器的一个或多个重叠平面的硬件。显示装置1918可以是内部或外部显示装置。在一个实施例中,显示装置1918是头戴式显示装置,诸如虚拟现实(VR)显示装置或增强现实(AR)显示装置。在一些实施例中,图形处理器1900包括用于向、从一个或多个媒体编码格式或在这些格式之间对媒体进行编码、解码、或者转码的视频编解码器引擎1906,这些格式包括但不限于:移动图像专家组(MPEG)格式(诸如MPEG-2)、高级视频编码(AVC)格式(诸如H.264/MPEG-4 AVC、H.265/HEVC、开放媒体联盟(AOMedia)VP8、VP9)、以及电影和电视工程师协会(SMPTE)421M/VC-1、和联合图像专家组(JPEG)格式,诸如JPEG、以及运动JPEG(MJPEG)格式。

在一些实施例中,图形处理器1900包括用于执行二维(2D)光栅化器操作的块图像传输(BLIT)引擎1904,所述2D光栅化器操作包括例如位边界块传输。然而,在一个实施例中,使用图形处理引擎(GPE)1910的一个或多个组件执行2D图形操作。在一些实施例中,GPE1910是用于执行图形操作的计算引擎,所述图形操作包括三维(3D)图形操作和媒体操作。

在一些实施例中,GPE 1910包括用于执行3D操作的3D流水线1912,诸如使用作用于3D图元形状(例如矩形、三角形等)的处理功能来渲染三维图像和场景。3D流水线1912包含可编程和固定功能元件,这些元件执行元件内的各种任务和/或向3D/媒体子系统1915生成执行线程。虽然3D流水线1912可以用于执行媒体操作,但是GPE 1910的实施例还包括媒体流水线1916,所述媒体流水线特定地用于执行媒体操作,诸如视频后期处理和图像增强。

在一些实施例中,媒体流水线1916包括用于代替或代表视频编解码器引擎1906执行一个或多个专门的媒体操作(诸如视频解码加速、视频去交织和视频编码加速)的固定功能或可编程逻辑单元。在一些实施例中,媒体流水线1916另外包括线程生成单元以便生成用于在3D/媒体子系统1915上执行的线程。所生成的线程在3D/媒体子系统1915中所包括的一个或多个图形执行单元上执行对媒体操作的计算。

在一些实施例中,3D/媒体子系统1915包括用于执行由3D流水线1912和媒体流水线1916生成的线程的逻辑。在一个实施例中,流水线向3D/媒体子系统1915发送线程执行请求,其包括用于对可用线程执行资源仲裁和分派各种请求的线程分派逻辑。执行资源包括用于处理3D和媒体线程的图形执行单元阵列。在一些实施例中,3D/媒体子系统1915包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,子系统还包括共享存储器,其包括寄存器和可寻址存储器,用于在线程之间共享数据并且存储输出数据。

图形处理引擎

图20是根据一些实施例的图形处理器的图形处理引擎2010的框图。在一个实施例中,图形处理引擎(GPE)2010是图19中示出的GPE 1910的版本。图20中具有与本文的任何其它图的元件相同的参考数字(或名称)的元件能够以与本文在其它地方描述的方式类似的任何方式操作或运作,但不限于此。例如,示出图19的3D流水线1912和媒体流水线1916。媒体流水线1916在GPE 2010的一些实施例中是可选的并且可以不显式包含在GPE 2010中。例如,并且在至少一个实施例中,独立媒体和/或图像处理器耦合到GPE 2010。

在一些实施例中,GPE 2010与命令流播器2003耦合或包括命令流播器2003,其向3D流水线1912和/或媒体流水线1916提供命令流。在一些实施例中,命令流播器2003与存储器耦合,该存储器可以是系统存储器,或内部高速缓存存储器和共享高速缓存存储器中的一个或多个。在一些实施例中,命令流播器2003从存储器接收命令并且向3D流水线1912和/或媒体流水线1916发送命令。命令是从为3D流水线1912和媒体流水线1916存储命令的环形缓冲器中所取的指示。在一个实施例中,环形缓冲器可以另外包括存储批量多个命令的批量命令缓冲器。对于3D流水线1912的命令还可以包括对存储器中存储的数据的引用,例如但不限于对于3D流水线1912的顶点和几何数据和/或对于媒体流水线1916的图像数据和存储器对象。3D流水线1912和媒体流水线1916通过经由相应流水线内的逻辑执行操作或通过向图形核阵列2014分派一个或多个执行线程来处理命令和数据。在一个实施例中,图形核阵列2014包括图形核(例如,(一个或多个)图形核2015A、(一个或多个)图形核2015B)的一个或多个块,每个块包括一个或多个图形核。每个图形核包括一组图形执行资源,其包括用于执行图形和计算操作的通用和图形特定执行逻辑以及固定功能纹理处理和/或机器学习与人工智能加速逻辑。

在各种实施例中,3D流水线1912可以包括用于通过处理指令并且向图形核阵列2014分派执行线程来处理一个或多个着色器程序的固定功能和可编程逻辑,所述着色器程序是诸如顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其它着色器程序。图形核阵列2014提供统一执行资源块以用于处理这些着色器程序。图形核阵列2014的(一个或多个)图形核2015A-2015B内的多用途执行逻辑(例如,执行单元)包括对各种3DAPI着色器语言的支持并且可以执行与多个着色器相关联的同时执行线程。

在一些实施例中,图形核阵列2014包括用于执行诸如视频和/或图像处理之类的媒体功能的执行逻辑。在一个实施例中,执行单元包括通用逻辑,其可编程以执行除了图形处理操作之外的并行通用计算操作。通用逻辑可以与图17的(一个或多个)处理器核1707或如图18中的核1802A-1802N内的通用逻辑并行或结合而执行处理操作。

在图形核阵列2014上执行的线程所生成的输出数据可以向统一返回缓冲器(URB)2018中的存储器输出数据。URB 2018可以存储多个线程的数据。在一些实施例中,URB 2018可以用于在图形核阵列2014上执行的不同线程之间发送数据。在一些实施例中,URB 2018可以另外用于图形核阵列上的线程之间的同步和共享功能逻辑2020内的固定功能逻辑。

在一些实施例中,图形核阵列2014是可缩放的,使得阵列包括数量可变的图形核,每个基于GPE 2010的目标功率和性能水平具有数量可变的执行单元。在一个实施例中,执行资源是动态可缩放的,使得执行资源可以根据需要被启用或停用。

图形核阵列2014与共享功能逻辑2020耦合,该共享功能逻辑包括在图形核阵列中的图形核之间共享的多个资源。共享功能逻辑2020内的共享功能是向图形核阵列2014提供专门补充功能性的硬件逻辑单元。在各种实施例中,共享功能逻辑2020包括但不限于采样器2021、数学2022和线程间通信(ITC)2023逻辑。另外,一些实施例实现共享功能逻辑2020内的一个或多个高速缓存2025。

在对于给定专门功能的需求不足以包括在图形核阵列2014内的情况下实现共享功能。取而代之,该专门功能的单个实例化实现为共享功能逻辑2020中的独立实体并且在图形核阵列2014内的执行资源之间共享。在图形核阵列2014之间共享并且包括在图形核阵列2014内的精确功能集跨实施例而变化。在一些实施例中,供图形核阵列2014广泛使用的共享功能逻辑2020内的特定共享功能可以包含在图形核阵列2014内的共享功能逻辑2016中。在各种实施例中,图形核阵列2014中的共享功能逻辑2016可以包括共享功能逻辑2020中的一些或所有逻辑。在一个实施例中,共享功能逻辑2020中的所有逻辑元件可以在图形核阵列2014的共享功能逻辑2016中重复。在一个实施例中,为了有利于图形核阵列2014中的共享功能逻辑2016而排除了共享功能逻辑2020。

图21是根据本文描述的一些实施例的图形处理器核2100的硬件逻辑的框图。图21中具有与本文的任何其它图的元件相同的参考数字(或名称)的元件可以采用与在本文其它地方描述的方式类似的任何方式操作或运作,但不限于此。在一些实施例中,所示出的图形处理器核2100包括在图20的图形核阵列2014中。图形处理器核2100(有时称为核切片)可以是模块化图形处理器中的一个或多个图形核。图形处理器核2100是一个图形核切片的范例,并且本文描述的图形处理器可基于目标功率和性能包线(performance envelope)包括多个图形核切片。每个图形处理器核2100可以包含与多个子核2101A-2101F(又称为子切片)耦合的固定功能块2130,所述多个子核包括通用和固定功能逻辑的模块化块。

在一些实施例中,固定功能块2130包括几何/固定功能流水线2136,其可以被图形处理器核2100中的所有子核共享,例如,在较低性能和/或较低功耗的图形处理器实现中。在各种实施例,几何/固定功能流水线2136包括3D固定功能流水线(例如,如同图19和图20中的3D流水线1912)、视频前端单元、线程生成器和线程分派器、以及统一返回缓冲器管理器,该统一返回缓冲器管理器管理统一返回缓冲器,诸如图20的统一返回缓冲器2018。

在一个实施例中,固定功能块2130还包括图形SoC接口2137、图形微控制器2138和媒体流水线2139。图形SoC接口2137在图形处理器核2100与片上系统集成电路内的其它处理器核之间提供接口。图形微控制器2138是可编程的子处理器,其可配置成管理图形处理器核2100的各种功能,包括线程分派、调度和抢占。媒体流水线2139(例如,图19和图20的媒体流水线1916)包括促进多媒体数据(包括图像和视频数据)的解码、编码、预处理和/或后处理的逻辑。媒体流水线2139经由对子核2101-2101F内的计算或采样逻辑的请求实现媒体操作。

在一个实施例中,SoC接口2137使图形处理器核2100能够与通用应用处理器核(例如,CPU)和/或SoC内的其它组件通信,SoC内的其它组件包括诸如共享末级高速缓存存储器、系统RAM和/或嵌入式芯片上或封装上DRAM之类的存储器层级元件。SoC接口2137还可以使能与SoC内的固定功能装置(诸如照相机成像流水线)的通信,并使能使用和/或实现可在图形处理器核2100与SoC内的CPU之间共享的全局存储器原子。SoC接口2137还可以实现对图形处理器核2100的功率管理控制,并使能图形核2100的时钟域与SoC内的其它时钟域之间的接口。在一个实施例中,SoC接口2137使能从命令流播器和全局线程分派器接收命令缓冲器,其配置成向图形处理器中的一个或多个图形核中的每一个提供命令和指令。当要执行媒体操作时,可以将命令和指令分派到媒体流水线2139,或者当要执行图形处理操作时,可以将命令和指令分派到几何和固定功能流水线(例如,几何和固定功能流水线2136、几何和固定功能流水线2114)。

图形微控制器2138可以配置成为图形处理器核2100执行各种调度和管理任务。在一个实施例中,图形微控制器2138可以在子核2101A-2101F内的执行单元(EU)阵列2102A-2102F、2104A-2104F中的各种图形并行引擎上执行图形和/或计算工作负荷调度。在该调度模型中,在包括图形处理器核2100的SoC的CPU核上执行的主机软件可以向多个图形处理器门铃之一提交工作负荷,这将在适当的图形引擎上调用调度操作。调度操作包括:确定接着运行哪个工作负荷,将工作负荷提交给命令流播器,抢占在引擎上运行的现有工作负荷,监测工作负荷的进度,以及在工作负荷完成时通知主机软件。在一个实施例中,图形微控制器2138还可以促进图形处理器核2100的低功耗或空闲状态,由此独立于操作系统和/或系统上的图形驱动软件,为图形处理器核2100提供跨低功耗状态转变在图形处理器核2100内保存和恢复寄存器的能力。

图形处理器核2100可具有比所示出的子核2101A-2101F多或少的子核,最多可达N个模块化子核。对于每一组N个子核,图形处理器核2100还可以包括共享功能逻辑2110、共享和/或高速缓存存储器2112、几何/固定功能流水线2114以及附加的固定功能逻辑2116,以加速各种图形和计算处理操作。共享功能逻辑2110可以包括与图20的共享功能逻辑2020(例如,采样器、数学和/或线程间通信逻辑)相关联的逻辑单元,所述逻辑单元可以被图形处理器核2100内的每个N个子核共享。共享和/或高速缓存存储器2112可以是图形处理器核2100中的该组N个子核2101A-2101F的末级高速缓存,并且也可以充当共享存储器,其可被多个子核访问。几何/固定功能流水线2114可以包含在固定功能块2130中而不是包含在几何/固定功能流水线2136中,并且可以包含相同或类似的逻辑单元。

在一个实施例中,图形处理器核2100包括额外的固定功能逻辑2116,该逻辑可以包括供图形处理器核2100使用的各种固定功能加速逻辑。在一个实施例中,附加的固定功能逻辑2116包括用于在仅位置着色中使用的附加几何流水线。在仅位置着色中,存在两个几何流水线,即,几何/固定功能流水线2116、2136中的完整几何流水线和拣选流水线,拣选流水线是附加的几何流水线,其可包含在附加的固定功能逻辑2116中。在一个实施例中,拣选流水线是完整几何流水线的精简版本。完整流水线和拣选流水线可以执行相同应用的不同实例,每个实例具有单独的上下文。仅位置着色可以隐藏丢弃的三角形的长拣选运行,以使着色在一些实例中能够提前完成。例如,并且在一个实施例中,附加的固定功能逻辑2116中的拣选流水线逻辑可以与主应用并行执行位置着色器,并且一般比完整流水线更快生成关键结果,因为拣选流水线只取并着色顶点的位置属性,而不对到帧缓冲器的像素执行光栅化和渲染。拣选流水线可以使用生成的关键结果来计算所有三角形的可见性信息,而不考虑这些三角形是否被拣选。完整流水线(在这种情况下可以称为重播流水线)可以消耗可见性信息来跳过拣选的三角形,而只对最终传递到光栅化阶段的可见三角形进行着色。

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

在每个图形子核2101A-2101F内,包含一组执行资源,所述执行资源可以用于执行图形、媒体和计算操作,以响应于图形流水线、媒体流水线或着色器程序的请求。图形子核2101A-2101F包括多个EU阵列2102A-2102F、2104A-2104F、线程分派和线程间通信(TD/IC)逻辑2103A-2103F、3D(例如,纹理)采样器2105A-2105F、媒体采样器2106A-2106F、着色器处理器2107A-2107F和共享本地存储器(SLM)2108A-2108F。EU阵列2102A-2102F、2104A-2104F每个都包括多个执行单元,所述执行单元是通用图形处理单元,其能够在图形、媒体或计算操作(包括图形、媒体或计算着色器程序)的服务中执行浮点和整数/固定点逻辑操作。TD/IC逻辑2103A-2103F为子核内的执行单元执行本地线程分派和线程控制操作,并且促进在子核的执行单元上执行的线程之间的通信。3D采样器2105A-2105F可以将纹理或其它3D图形相关的数据读取到存储器中。3D采样器可以基于配置的采样状态和与给定纹理相关联的纹理格式不同地读取纹理数据。媒体采样器2106A-2106F可以基于与媒体数据相关联的类型和格式执行类似的读取操作。在一个实施例中,每个图形子核2101A-2101F可以备选地包括统一的3D和媒体采样器。在子核2101A-2101F中的每一个内的执行单元上执行的线程可以利用每个子核内的共享本地存储器2108A-2108F,以使在线程群组内执行的线程能够使用片上存储器的公共池执行。

执行单元

图22A-22B示出了根据本文描述的实施例的线程执行逻辑2200,其包括在图形处理器核中所采用的处理元件的阵列。图22A-22B中具有与本文任何其它图的元件相同的参考数字(或名称)的元件能够以与本文其它地方描述的方式类似的任何方式来操作或运作,但并不限于此。图22A示出线程执行逻辑2200的概览,其可以包括与图21的每个子核2101A-2101F示出的硬件逻辑的变形。图22B示出执行单元的示范性内部细节。

如图22A中所示出,在一些实施例中,线程执行逻辑2200包括着色器处理器2202、线程分派器2204、指令高速缓存2206、可缩放执行单元阵列(包括多个执行单元2208A-2208N)、采样器2210、数据高速缓存2212和数据端口2214。在一个实施例中,可缩放执行单元阵列可以通过基于工作负荷的计算要求启用或停用一个或多个执行单元(例如,执行单元2208A、2208B、2208C、2208D至2208N-1和2208N中的任一个)而动态缩放。在一个实施例中,所包括的组件经由链接到组件中的每个的互连组构而互连。在一些实施例中,线程执行逻辑2200包括通过指令高速缓存2206、数据端口2214、采样器2210和执行单元2208A-2208N中的一个或多个与存储器(例如系统存储器或高速缓存存储器)的一个或多个连接。在一些实施例中,每个执行单元(例如,2208A)是独立可编程通用计算单元,其能够执行多个同时的硬件线程,同时针对每个线程并行处理多个数据元素。在各种实施例中,执行单元阵列2208A-2208N可缩放以包括任何数量的个体执行单元。

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

在一些实施例中,执行单元2208A-2208N支持包括对许多标准3D图形着色器指令的原生支持的指令集,使得以最小的转化执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)和通用处理(例如,计算和媒体着色器)。执行单元2208A-2208N中的每个都能够多发单指令多数据(SIMD)执行并且多线程化操作面对较高时延存储器访问而启用高效执行环境。每个执行单元内的每个硬件线程具有专用高带宽寄存器堆和相关联的独立线程状态。执行是向能够进行整数、单和双精度浮点运算、SIMD分支能力、逻辑运算、超越运算和其它混杂运算的流水线的每时钟多发。在等待来自存储器或共享功能中的一个的数据时,执行单元2208A-2208N内的依赖逻辑使等待线程休眠直到所请求的数据已返回。在等待线程正在休眠时,硬件资源可以专注于处理其它线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可以对像素着色器、片段着色器或另一个类型的着色器程序(其包括不同的顶点着色器)执行操作。作为使用SIMD的备选或除了使用SIMD之外,各种实施例可以应用于通过使用单指令多线程(SIMT)来使用执行。对SIMD核或操作的引用也可以应用于SIMT或应用于SIMD与SIMT的组合。

执行单元2208A-2208N中的每个执行单元对数据元素的阵列进行操作。数据元素的数量是“执行大小”或用于指令的通道的数量。执行通道是用于指令内的数据元素访问、掩蔽和流控制的执行的逻辑单元。通道的数量可以与针对特定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量无关。在一些实施例中,执行单元2208A-2208N支持整数和浮点数据类型。

执行单元指令集包括SIMD指令。可以将各种数据元素作为紧缩数据类型存储在寄存器中,并且执行单元将基于元素的数据大小来处理各种元素。例如,当在256位宽的向量上进行操作时,所述256位的向量存储在寄存器中,并且所述执行单元作为四个单独64位紧缩数据元素(四倍字长(QW)大小的数据元素)、八个单独32位紧缩数据元素(双倍字长(DW)大小的数据元素)、十六个单独16位紧缩数据元素(字长(W)大小的数据元素)、或三十二个单独8位数据元素(字节(B)大小的数据元素)在所述向量上进行操作。然而,不同的向量宽度和寄存器大小是可能的。

在一个实施例中,一个或多个执行单元可以组合成融合执行单元2209A-2209N,其具有对于融合EU共同的线程控制逻辑(2207A-2207N)。多个EU可以融合成EU群组。可以将融合EU群组中的每个EU配置成执行单独的SIMD硬件线程。融合EU群组中的EU的数量可以根据实施例而变化。另外,针对每个EU可以执行各种SIMD宽度,包括但不限于SIMD8、SIMD16和SIMD32。每个融合图形执行单元2209A-2209N包括至少两个执行单元。例如,融合执行单元2209A包括第一EU 2208A、第二EU 2208B和对于第一EU 2208A和第二EU 2208B共同的线程控制逻辑2207A。线程控制逻辑2207A控制在融合图形执行单元2209A上执行的线程,以允许融合执行单元2209A-2209N中的每个EU使用共同的指令指针寄存器执行。

一个或多个内部指令高速缓存(例如,2206)被包括在线程执行逻辑2200中,以高速缓存用于执行单元的线程指令。在一些实施例中,一个或多个数据高速缓存(例如,2212)被包括以高速缓存线程执行期间的线程数据。在一些实施例中,采样器2210被包括来为3D操作提供纹理采样并且为媒体操作提供媒体采样。在一些实施例中,采样器2210包括专门的纹理或媒体采样功能性,以在向执行单元提供采样数据之前在采样过程期间处理纹理或媒体数据。

在执行期间,图形和媒体流水线经由线程生成和分派逻辑向线程执行逻辑2200发送线程发起请求。一旦一组几何对象已被处理并且光栅化为像素数据,就调用像素着色器2202内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等)以进一步计算输出信息并且使得将结果写入到输出表面(例如,颜色缓冲区、深度缓冲区、模板缓冲区等)。在一些实施例中,像素着色器或片段着色器计算待跨光栅化对象插值的各种顶点属性的值。在一些实施例中,着色器处理器2202内的像素处理器逻辑随后执行应用编程接口(API)供应的像素或片段着色器程序。为了执行着色器程序,着色器处理器2202经由线程分派器2204向执行单元(例如,2208A)分派线程。在一些实施例中,像素着色器2202使用采样器2210中的纹理采样逻辑来访问存储器中存储的纹理图中的纹理数据。对纹理数据和输入几何数据的算术运算计算了每个几何片段的像素颜色数据,或丢弃来自进一步处理的一个或多个像素。

在一些实施例中,数据端口2214提供用于使线程执行逻辑2200将经处理的数据输出到存储器以便在图形处理器输出流水线上进一步处理的存储器访问机制。在一些实施例中,数据端口2214包括或耦合到一个或多个高速缓存存储器(例如,数据高速缓存2212)从而经由数据端口高速缓存用于存储器访问的数据。

如图22B中所示出,图形执行单元2208可以包括指令取单元2237、通用寄存器堆阵列(GRF)2224、架构寄存器堆阵列(ARF)2226、线程仲裁器2222、发送单元2230、分支单元2232、一组SIMD浮点单元(FPU)2234,并且在一个实施例中,包括一组专用整数SIMD ALU2235。GRF 2224和ARF 2226包括与在图形执行单元2208中可活动的每个同步硬件线程相关联的通用寄存器堆和架构寄存器堆的集合。在一个实施例中,每个线程架构状态保持在ARF2226中,而线程执行期间所使用的数据则存储在GRF 2224中。每个线程的执行状态(包括每个线程的指令指针)可以保留在ARF 2226中的线程特定的寄存器中。

在一个实施例中,图形执行单元2208具有作为同步多线程(SMT)和细粒度交织多线程(IMT)的组合的架构。该架构具有模块化配置,其可以在设计时基于同步线程的目标数量和每个执行单元的寄存器的数量进行微调,其中执行单元资源跨用于执行多个同步线程的逻辑而进行划分。

在一个实施例中,图形执行单元2208可以共同发出多个指令,每个指令可以是不同的指令。图形执行单元线程2208的线程仲裁器2222可以将指令分派到发送单元2230、分支单元2232或(一个或多个)SIMD FPU 2234中的一个以用于执行。每个执行线程可以访问GRF 2224中的128个通用寄存器,其中每个寄存器可以存储32个字节,其可作为32位数据元素的8元素向量进行访问。在一个实施例中,每个执行单元线程有权访问GRF 2224中的4Kbytes,尽管实施例没有这样的限制,并且在其它实施例中可以提供更多或更少的寄存器资源。在一个实施例中,最多可以同时执行七个线程,尽管每个执行单元的线程数也可以根据实施例改变。在七个线程可以访问4 Kbytes的实施例中,GRF 2224可以存储总共28Kbytes。灵活的寻址模式可以允许一起寻址寄存器,从而有效地构建更宽的寄存器或表示跨越式矩形块数据结构。

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

在一个实施例中,图形执行单元2208包括一个或多个SIMD浮点单元((一个或多个)FPU)2234来执行浮点操作。在一个实施例中,(一个或多个)FPU 2234也支持整数计算。在一个实施例中,(一个或多个)FPU 2234可以SIMD执行多达M个32位浮点(或整数)操作,或SIMD执行多达2M个16位整数或16位浮点操作。在一个实施例中,至少一个FPU提供扩展数学能力,以支持高吞吐量超越数学函数和双精度64位浮点。在一些实施例中,还存在一组8位整数SIMD ALU 2235,并且它们可被专门优化以执行与机器学习计算相关联的操作。

在一个实施例中,图形执行单元2208的多个实例的阵列可以在图形子核分组(例如,子切片)中实例化。对于可缩放性,产品架构师可以选择每个子核分组的执行单元的确切数量。在一个实施例中,执行单元2208可以跨多个执行通道执行指令。在另外的实施例中,在图形执行单元2208上执行的每个线程在不同的通道上执行。

图23是根据一些实施例示出图形处理器指令格式2300的框图。在一个或多个实施例中,图形处理器执行单元支持具有采用多个格式的指令的指令集。实线框示出通常包括在执行单元指令中的分量,而虚线包括可选的或仅包括在指令的子集中的分量。在一些实施例中,所描述和示出的指令格式2300是宏指令,在于它们是供应至执行单元的指令,这与从指令解码得出的微操作是相对的(一旦所述指令被处理的话)。

在一些实施例中,图形处理器执行单元原生支持采用128位指令格式2310的指令。64位紧凑指令格式2330对于基于所选的指令、指令选项和操作数的数量的一些指令是可用的。原生128位指令格式2310提供对所有指令选项的访问,而一些选项和操作被限制于64位格式2330中。以64位格式2330可用的原生指令根据实施例而变化。在一些实施例中,使用索引字段2313中的一组索引值将指令部分地压缩。执行单元硬件基于这些索引值引用一组紧凑表,并且使用紧凑表输出来以128位指令格式2310重构原生指令。可以使用其它大小和格式的指令。

对于每个格式,指令操作码2312定义执行单元将执行的操作。执行单元跨每个操作数的多个数据元素并行执行每个指令。例如,响应于加法指令,执行单元跨表示纹理元素或图片元素的每个颜色通道执行同时的加法运算。执行单元默认跨操作数的所有数据通道执行每个指令。在一些实施例中,指令控制字段2314启用对例如通道选择(例如,预测)和数据通道阶(例如,调配)等某些执行选项的控制。对于128位指令格式2310中的指令,执行大小(exec-size)字段2316限制将被并行执行的数据通道的数量。在一些实施例中,执行大小字段2316不可供64位紧凑指令格式2330使用。

一些执行单元指令具有多达三个操作数,包括两个源操作数src0 2320、src12322和一个目的地2318。在一些实施例中,执行单元支持双目的地指令,其中,这些目的地之一是隐式的。数据操纵指令可以具有第三源操作数(例如,SRC2 2324),其中,指令操作码2312确定源操作数的数量。指令的最后一个源操作数可以是通过所述指令传递的立即数(例如,硬编码)值。

在一些实施例中,128位指令格式2310包括访问/寻址模式字段2326,其指定(例如)使用直接寄存器寻址模式还是间接寄存器寻址模式。当使用直接寄存器寻址模式时,直接由指令中的位来提供一个或多个操作数的寄存器地址。

在一些实施例中,128位指令格式2310包括访问/寻址模式字段2326,其指定针对所述指令的寻址模式和/或访问模式。在一个实施例中,访问模式用于定义针对所述指令的数据访问对准。一些实施例支持包括16字节对准的访问模式和1字节对准的访问模式的访问模式,其中,访问模式的字节对准确定指令操作数的访问对准。例如,当处于第一模式时,指令可针对源操作数和目的地操作数使用字节对准的寻址,并且当处于第二模式时,指令可针对所有的源操作数和目的地操作数使用16字节对准的寻址。

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

在一些实施例中,基于操作码2312位字段对指令分组以简化操作码解码2340。针对8位操作码,位4、5和6允许执行单元确定操作码的类型。所示出的精确操作码分组仅仅是示例。在一些实施例中,移动和逻辑操作码群组2342包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。在一些实施例中,移动和逻辑群组2342共享五个最高有效位(MSB),其中,移动(mov)指令采用0000xxxxb的形式,以及逻辑指令采用0001xxxxb的形式。流控制指令群组2344(例如,调用、跳(jmp))包括采用0010xxxxb形式(例如,0x20)的指令。混杂指令群组2346包括指令的混合体,其包括采用0011xxxxb形式(例如,0x30)的同步指令(例如,等待、发送)。并行数学指令群组2348包括采用0100xxxxb形式(例如,0x40)的逐个分量的算术指令(例如,加、乘(mul))。并行数学群组2348跨数据通道并行执行算术运算。向量数学群组2350包括采用0101xxxxb形式(例如,0x50)的算术指令(例如,dp4)。向量数学组执行诸如对向量操作数的点积计算的算术。

图形流水线

图24是图形处理器2400的另一个实施例的框图。图24中具有与本文任何其它图的元件相同的参考数字(或名称)的元件能够以与本文在其它地方描述的方式类似的任何方式来操作或运作,但不限于此。

在一些实施例中,图形处理器2400包括几何流水线2420、媒体流水线2430、显示器引擎2440、线程执行逻辑2450和渲染输出流水线2470。在一些实施例中,图形处理器2400是包括一个或多个通用处理核的多核处理系统内的图形处理器。图形处理器由到一个或多个控制寄存器(未示出)的寄存器写入控制或者经由环互连2402经由发布至图形处理器2400的命令控制。在一些实施例中,环互连2402将图形处理器2400耦合到其它处理组件,诸如其它图形处理器或通用处理器。来自环互连2402的命令由命令流播器2403解译,所述命令流播器将指令供应给几何流水线2420或媒体流水线2430的单独组件。

在一些实施例中,命令流播器2403指引顶点取出器(fetcher)2405的操作,所述顶点取出器从存储器读取顶点数据并执行由命令流播器2403提供的顶点处理命令。在一些实施例中,顶点取出器2405将顶点数据提供给顶点着色器2407,所述顶点着色器向每个顶点执行坐标空间变换和照亮操作。在一些实施例中,顶点取出器2405和顶点着色器2407通过经由线程分派器2431将执行线程分派给执行单元2452A-2452B来执行顶点处理指令。

在一些实施例中,执行单元2452A-2452B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。在一些实施例中,执行单元2452A-2452B具有特定用于每个阵列或在阵列之间共享的附连的L1高速缓存2451。所述高速缓存可以被配置为数据高速缓存、指令高速缓存或单个高速缓存,其被分区以将数据和指令包含在不同的分区中。

在一些实施例中,几何流水线2420包括用于执行对3D对象的硬件加速曲面细分的曲面细分组件。在一些实施例中,可编程的外壳着色器2411配置曲面细分操作。可编程的域着色器2417提供对曲面细分输出的后端评估。曲面细分器2413在外壳着色器2411的方向上进行操作并且包含专用逻辑,所述专用逻辑用于基于粗糙几何模型来生成一组详细的几何对象,所述粗糙几何模型作为输入被提供给几何流水线2420。在一些实施例中,如果未使用曲面细分,则可以对曲面细分组件(例如,外壳着色器2411、曲面细分器2413和域着色器2417)进行旁路。

在一些实施例中,完整的几何对象可以由几何着色器2419经由被分派给执行单元2452A-2452B的一个或多个线程来处理,或可以直接继续进行至剪辑器2429。在一些实施例中,几何着色器在整个几何对象上进行操作而非如图形流水线的先前阶段中的顶点的补片或者顶点上进行操作。如果曲面细分被禁用,则几何着色器2419从顶点着色器2407接收输入。在一些实施例中,如果曲面细分单元被禁用,则几何着色器2419可由几何着色器程序编程以执行几何曲面细分。

在光栅化之前,剪辑器2429处理顶点数据。剪辑器2429可以是固定功能的剪辑器或者具有剪辑和几何着色器功能的可编程剪辑器。在一些实施例中,渲染输出流水线2470中的光栅化器和深度测试组件2473分派像素着色器以将几何对象转换成按像素表示。在一些实施例中,像素着色器逻辑包括在线程执行逻辑2450中。在一些实施例中,应用可以对光栅化器和深度测试组件2473进行旁路,并且经由向外流播单元(stream out unit)2423来访问未光栅化的顶点数据。

图形处理器2400具有互连总线、互连组构或一些其它互连机制,其允许在处理器的主要组件当中传递数据和消息。在一些实施例中,执行单元2452A-2452B和相关联的逻辑单元(例如,L1高速缓存2451、采样器2454、纹理高速缓存2458等)经由数据端口2456互连,以执行存储器访问并与处理器的渲染输出流水线组件通信。在一些实施例中,采样器2454、L1高速缓存2451、纹理高速缓存2458和执行单元2452A-2452B各自具有单独的存储器访问路径。在一个实施例中,纹理高速缓存2458也可以配置为采样高速缓存。

在一些实施例中,渲染输出流水线2470包含光栅化器和深度测试组件2473,其将基于顶点的对象转换成相关联的基于像素的表示。在一些实施例中,光栅化器逻辑包括用于执行固定功能三角形和线光栅化的窗口器(windower)/掩蔽器单元。相关联的渲染高速缓存2478和深度高速缓存2479在一些实施例中也是可用的。像素操作组件2477对数据执行基于像素的操作,虽然在一些实例中,与2D操作相关联的像素操作(例如,位块图像采用混合来传输)由2D引擎2441执行,或在显示时间由使用重叠显示平面的显示控制器2443代替。在一些实施例中,共享的L3高速缓存2475可用于所有的图形组件,从而允许在无需使用主系统存储器的情况下共享数据。

在一些实施例中,图形处理器媒体流水线2430包括媒体引擎2437和视频前端2434。在一些实施例中,视频前端2434从命令流播器2403接收流水线命令。在一些实施例中,媒体流水线2430包括单独的命令流播器。在一些实施例中,视频前端2434在将命令发送给媒体引擎2437之前处理媒体命令。在一些实施例中,媒体引擎2437包括用于生成线程以用于经由线程分派器2431分派给线程执行逻辑2450的线程生成功能性。

在一些实施例中,图形处理器2400包括显示器引擎2440。在一些实施例中,显示器引擎2440在处理器2400外部并且经由环互连2402、或一些其它互连总线或组构与图形处理器耦合。在一些实施例中,显示器引擎2440包括2D引擎2441和显示控制器2443。在一些实施例中,显示器引擎2440包含能够独立于3D流水线而操作的专用逻辑。在一些实施例中,显示控制器2443与显示装置(未示出)耦合,所述显示装置可以是系统集成式显示装置(如在膝上型计算机中),或可以是经由显示装置连接器所附连的外部显示装置。

在一些实施例中,几何流水线2420和媒体流水线2430可配置成基于多个图形和媒体编程接口来执行操作,并且不特定于任何一个应用编程接口(API)。在一些实施例中,用于图形处理器的驱动器软件将特定于特定图形或媒体库的API调用转化成可由图形处理器处理的命令。在一些实施例中,为全部来自科纳斯集团(Khronos Group)的开放图形库(OpenGL)、开放计算语言(OpenCL)和/或Vulkan图形和计算API提供支持。在一些实施例中,还可以为来自微软公司的Direct3D库提供支持。在一些实施例中,可以支持这些库的组合。还可以为开源计算机视觉库(OpenCV)提供支持。如果可以进行从未来API的流水线至图形处理器的流水线的映射,则还将支持具有可兼容的3D流水线的未来API。

图形流水线编程

图25A是根据一些实施例示出图形处理器命令格式2500的框图。图25B是根据实施例示出图形处理器命令序列2510的框图。图25A中的实线框示出一般包括在图形命令中的分量,而虚线包括可选的或仅包括在图形命令的子集中的分量。图25A的示范性图形处理器命令格式2500包括用于标识命令的客户端2502、命令操作代码(操作码)2504和数据2506的数据字段。在一些命令中还包括子操作码2505和命令大小2508。

在一些实施例中,客户端2502指定处理命令数据的图形装置的客户端单元。在一些实施例中,图形处理器命令解析器(parser)检查每个命令的客户端字段以调整对命令的进一步处理并将命令数据路由至合适的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元、和媒体单元。每个客户端单元具有处理命令的对应的处理流水线。一旦命令被客户端单元接收,客户端单元读取操作码2504以及(如果存在的话)子操作码2505以确定要执行的操作。客户端单元使用数据字段2506中的信息来执行命令。针对一些命令,期待显式命令大小2508以指定命令的大小。在一些实施例中,命令解析器基于命令操作码自动地确定命令中的至少一些命令的大小。在一些实施例中,经由双倍字长的倍数对命令进行对准。可以使用其它命令格式。

图25B中的流程图示出了示范性图形处理器命令序列2510。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示出的命令序列的版本来设立、执行并终止图形操作的集合。仅出于示例目的示出并描述了样本命令序列,因为实施例并不限于这些特定命令或者此命令序列。此外,所述命令可以作为一批命令以命令序列被发布,从而使得图形处理器将以至少部分同时的方式处理命令序列。

在一些实施例中,图形处理器命令序列2510可以以流水线清空命令2512开始,以使任何活动的图形流水线完成对于所述流水线的当前未决命令。在一些实施例中,3D流水线2522和媒体流水线2524不同时进行操作。执行流水线清空以使活动的图形流水线完成任何未决命令。响应于流水线清空,用于图形处理器的命令解析器将暂停命令处理,直到活动的绘图引擎完成未决操作且相关的读取高速缓存无效。可选地,渲染高速缓存中被标志为‘脏’的任何数据可以被清空转储到存储器。在一些实施例中,可以针对流水线同步或在将图形处理器放置处于低功率状态之前使用流水线清空命令2512。

在一些实施例中,当命令序列要求图形处理器在流水线之间作显式切换时,使用流水线选择命令2513。在一些实施例中,在发布流水线命令之前在执行上下文内仅要求一次流水线选择命令2513,除非所述上下文要发布针对两条流水线的命令。在一些实施例中,在经由流水线选择命令2513的流水线切换之前立即要求流水线清空命令2512。

在一些实施例中,流水线控制命令2514配置用于操作的图形流水线,并用于对3D流水线2522和媒体流水线2524编程。在一些实施例中,流水线控制命令2514配置针对活动流水线的流水线状态。在一个实施例中,流水线控制命令2514被用于流水线同步并在处理一批命令之前将数据从活动流水线内的一个或多个高速缓存存储器中清除。

在一些实施例中,使用配置返回缓冲器状态2516的命令来配置用于使相应的流水线写入数据的一组返回缓冲器。一些流水线操作要求分配、选择或配置一个或多个返回缓冲器,这些操作在处理期间将中间数据写入到所述返回缓冲器中。在一些实施例中,图形处理器还使用一个或多个返回缓冲器以存储输出数据并且执行跨线程通信。在一些实施例中,返回缓冲器状态2516包括选择返回缓冲器的大小和数量以用于流水线操作的集合。

命令序列中的剩余命令基于用于操作的活动流水线而不同。基于流水线确定2520,针对3D流水线2522或媒体流水线2524来定制命令序列,所述3D流水线以3D流水线状态2530开始,所述媒体流水线始于媒体流水线状态2540。

配置3D流水线状态2530的命令包括用于以下各项的3D状态设置命令:顶点缓冲器状态、顶点元素状态、恒定颜色状态、深度缓冲器状态和将在处理3D图元命令之前配置的其它状态变量。至少部分地基于使用中的特定3D API来确定这些命令的值。在一些实施例中,3D流水线状态2530命令还能够选择性地禁用或旁路某些流水线元件,如果将不使用那些元件的话。

在一些实施例中,3D图元2532命令用于提交由3D流水线处理的3D图元。经由3D图元2532命令传递到图形处理器的命令和相关联的参数被转发到图形流水线中的取顶点功能。取顶点功能使用3D图元2532命令数据来产生顶点数据结构。顶点数据结构被存储在一个或多个返回缓冲器中。在一些实施例中,3D图元2532命令用于经由顶点着色器对3D图元执行顶点操作。为了处理顶点着色器,3D流水线2522将着色器执行线程分派给图形处理器执行单元。

在一些实施例中,经由执行2534命令或事件来触发3D流水线2522。在一些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序列中的‘走(go)’或‘踢(kick)’命令来触发执行。在一个实施例中,使用流水线同步命令来触发命令执行,以通过图形流水线来清空命令序列。3D流水线将执行针对3D图元的几何处理。一旦操作完成,对所得几何对象光栅化,并且像素引擎给所得像素上色。针对那些操作还可包括用于控制像素着色和像素后端操作的附加命令。

在一些实施例中,当执行媒体操作时,图形处理器命令序列2510遵循媒体流水线2524路径。一般地,针对媒体流水线2524编程的方式和特定使用取决于要执行的媒体或计算操作。在媒体解码期间,可将特定的媒体解码操作卸载到媒体流水线。在一些实施例中,还可以对媒体流水线进行旁路并且可以整体地或部分地执行媒体解码(使用由一个或多个通用处理核提供的资源)。在一个实施例中,媒体流水线还包括用于通用图形处理器单元(GPGPU)操作的元件,其中,图形处理器用于使用计算着色器程序来执行SIMD向量操作,所述计算着色器程序不明确地与图形图元的渲染相关。

在一些实施例中,以与3D流水线2522类似的方式配置媒体流水线2524。在媒体对象命令2542之前将配置媒体流水线状态2540的一组命令分派到或放置到命令队列中。在一些实施例中,媒体流水线状态2540的命令包括用于配置媒体流水线元件的数据,所述媒体流水线元件将用于处理媒体对象。这包括用于配置媒体流水线内的视频解码和视频编码逻辑的数据(诸如编码或解码格式)。在一些实施例中,媒体流水线状态2540的命令还支持将一个或多个指针用于包含一批状态设置的“间接”状态元件。

在一些实施例中,媒体对象命令2542将指针供应给用于由媒体流水线处理的媒体对象。媒体对象包括存储器缓冲器,其包含要处理的视频数据。在一些实施例中,在发布媒体对象命令2542之前,所有的媒体流水线状态必须是有效的。一旦流水线状态被配置并且媒体对象命令2542被排队,则经由执行命令2544或等效的执行事件(例如,寄存器写入)来触发媒体流水线2524。然后,可以通过由3D流水线2522或媒体流水线2524提供的操作对来自媒体流水线2524的输出进行后期处理。在一些实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。

图形软件架构

图26示出根据一些实施例的用于数据处理系统2600的示范性图形软件架构。在一些实施例中,软件架构包括3D图形应用2610、操作系统2620、以及至少一个处理器2630。在一些实施例中,处理器2630包括图形处理器2632以及一个或多个通用处理器核2634。图形应用2610和操作系统2620各自在数据处理系统的系统存储器2650中执行。

在一些实施例中,3D图形应用2610包含一个或多个着色器程序,所述着色器程序包括着色器指令2612。着色器语言指令可以采用高级着色器语言,诸如Direct3D的高级着色器语言(HLSL)、OpenGL着色器语言(GLSL)等。所述应用还包括采用适用于由通用处理器核2634执行的机器语言的可执行指令2614。所述应用还包括由顶点数据定义的图形对象2616。

在一些实施例中,操作系统2620是来自微软公司的Microsoft® Windows®操作系统、专有类UNIX操作系统或开源类UNIX操作系统,其使用Linux内核的变形。操作系统2620可以支持图形API 2622,诸如Direct3D API、OpenGL API或Vulkan API。当Direct3DAPI在使用时,操作系统2620使用前端着色器编译器2624以将采用HLSL的任何着色器指令2612编译成较低级着色器语言。所述编译可以是即时制(JIT)编译,或者所述应用可执行着色器预编译。在一些实施例中,在对3D图形应用2610进行编译期间,将高级着色器编译成低级着色器。在一些实施例中,采用中间形式提供着色器指令2612,例如Vulkan API所使用的标准便携式中间表示(SPIR)的版本。

在一些实施例中,用户模式图形驱动器2626包含后端着色器编译器2627,所述后端着色器编译器用于将着色器指令2612转换成硬件特定表示。当OpenGL API在使用中时,采用GLSL高级语言的着色器指令2612被传递到用户模式图形驱动器2626以用于编译。在一些实施例中,用户模式图形驱动器2626使用操作系统内核模式功能2628与内核模式图形驱动器2629进行通信。在一些实施例中,内核模式图形驱动器2629与图形处理器2632进行通信以分派命令和指令。

IP核实现

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

图27A是根据实施例示出IP核开发系统2700的框图,所述IP核开发系统可用于制造集成电路以执行操作。IP核开发系统2700可以用于生成可合并到更大的设计中或用于构建整个集成电路(例如,SOC集成电路)的模块化、可重复使用设计。设计设施2730可采用高级编程语言(例如,C/C++)生成对IP核设计的软件仿真2710。软件仿真2710可用于使用仿真模型2712来设计、测试并验证IP核的行为。仿真模型2712可以包括功能、行为和/或定时仿真。然后,可按照仿真模型2712来创建或综合寄存器传输级(RTL)设计2715。RTL设计2715是集成电路的行为的抽取(abstraction),所述集成电路对硬件寄存器(包括使用建模的数字信号来执行的相关联的逻辑)之间的数字信号的流进行建模。除了RTL设计2715之外,还可以创建、设计或综合以逻辑级别或晶体管级别的较低级别设计。因此,初始设计和仿真的特定细节可以变化。

可由设计设施进一步将RTL设计2715或等效物综合到硬件模型2720中,所述硬件模型可以采用硬件描述语言(HDL)或物理设计数据的某一其它表示。可以进一步仿真或测试HDL以验证IP核设计。可以使用非易失性存储器2740(例如,硬盘、闪速存储器或任何非易失性存储介质)来存储IP核设计以便递送到第3方制造设施2765。备选地,可以通过有线连接2750或无线连接2760来传送(例如,经由因特网)IP核设计。然后,制造设施2765可以制造至少部分地基于IP核设计的集成电路。所制造的集成电路可被配置成执行根据本文描述的至少一个实施例的操作。

图27B示出根据本文描述的一些实施例的集成电路封装组件2770的横截面侧视图。集成电路封装组件2770示出了如本文所描述的一个或多个处理器或加速器装置的实现。封装组件2770包括连接到衬底2780的硬件逻辑2772、2774的多个单元。逻辑2772、2774可以至少部分地在可配置逻辑或固定功能逻辑硬件中实现,并且可以包括本文描述的(一个或多个)处理器核、(一个或多个)图形处理器或其它加速器装置中的任何装置的一个或多个部分。逻辑2772、2774的每个单元都可以在半导体管芯中实现,并经由互连结构2773与衬底2780耦合。互连结构2773可配置成在逻辑2772、2774与衬底2780之间路由电信号,并且可以包括诸如但不限于凸块或支柱之类的互连。在一些实施例中,互连结构2773可配置成路由电信号,诸如例如输入/输出(I/O)信号和/或与逻辑2772、2774的操作相关联的功率或接地信号。在一些实施例中,衬底2780是基于环氧树脂的层压衬底。在其它实施例中,衬底2780可包括其它合适类型的衬底。封装组件2770可以经由封装互连2783连接到其它电气装置。封装互连2783可耦合到衬底2780的表面,以将电信号路由到其它电气装置,诸如主板、其它芯片集或多芯片模块。

在一些实施例中,逻辑2772、2774的单元与桥接器2782电耦合,桥接器2782被配置为在逻辑2772、2774之间路由电信号。桥接器2782可以是为电信号提供路由的密集互连结构。桥接器2782可包括由玻璃或合适的半导体材料组成的桥接器衬底。桥接器衬底上可以形成电气路由特征,以在逻辑2772、2774之间提供芯片到芯片连接。

虽然示出了桥接器2782和逻辑2772、2774的两个单元,但是本文描述的实施例可在一个或多个管芯上包括更多或更少的逻辑单元。一个或多个管芯可以由零个或多个桥接器连接,因为当逻辑包含在单个管芯上时,可排除桥接器2782。备选地,可以通过一个或多个桥接器连接多个管芯或逻辑单元。另外,多个逻辑单元、管芯和桥接器可以按其它可能的配置(包括三维配置)连接在一起。

示范性片上系统集成电路

图28-29示出根据本文描述的各种实施例可以使用一个或多个IP核来制造的示范性集成电路和相关联的图形处理器。除了所示出的之外,可以包括其它逻辑和电路,包括额外的图形处理器/核、外设接口控制器或通用处理器核。

图28是示出根据实施例的示范性片上系统集成电路2800的框图,可使用一个或多个IP核来制造所述片上系统集成电路2800。示范性集成电路2800包括一个或多个应用处理器2805(例如,CPU)、至少一个图形处理器2810,并且可以另外包括图像处理器2815和/或视频处理器2820,其中的任何一个可以是来自相同或多个不同设计设施的模块化IP核。集成电路2800包括外设或总线逻辑,其包括USB控制器2825、UART控制器2830、SPI/SDIO控制器2835、以及I2S/I2C控制器2840。另外,集成电路可以包括显示装置2845,所述显示装置耦合到高清晰度多媒体接口(HDMI)控制器2850和移动行业处理器接口(MIPI)显示器接口2855中的一个或多个。可以由闪速存储器子系统2860(包括闪速存储器和闪速存储器控制器)来提供存储。可经由存储器控制器2865来提供存储器接口以用于访问SDRAM或SRAM存储器装置。一些集成电路另外包括嵌入式安全引擎2870。

图29A-29B是示出根据本文描述的实施例在SoC内使用的示范性图形处理器的框图。图29A示出了根据实施例可使用一个或多个IP核制造的片上系统集成电路的示范性图形处理器2910。图29B示出了根据实施例可使用一个或多个IP核制造的片上系统集成电路的附加示范性图形处理器2940。图29A的图形处理器2910是低功率图形处理器核的示例。图29B的图形处理器2940是高性能图形处理器核的示例。图形处理器2910、2940中的每一个都可以是图28的图形处理器2810的变形。

如图29A所示,图形处理器2910包括顶点处理器2905和一个或多个片段处理器2915A-2915N(例如,2915A、2915B、2915C、2915D至2915N-1和2915N)。图形处理器2910可以经由独立逻辑执行不同着色器程序,使得顶点处理器2905被优化以执行顶点着色器程序的操作,而一个或多个片段处理器2915A-2915N执行片段或像素着色器程序的片段(例如,像素)着色操作。顶点处理器2905执行3D图形流水线的顶点处理级并且生成图元和顶点数据。(一个或多个)片段处理器2915A-2915N使用由顶点处理器2905生成的图元和顶点数据来产生在显示装置上显示的帧缓冲区。在一个实施例中,(一个或多个)片段处理器2915A-2915N被优化以执行如对在OpenGL API中提供的片段着色器程序,其可以用于执行与如对在Direct 3D API中提供的像素着色器程序相似的操作。

图形处理器2910另外包括一个或多个存储器管理单元(MMU)2920A-2920B、(一个或多个)高速缓存2925A-2925B和(一个或多个)电路互连2930A-2930B。一个或多个MMU2920A-2920B对图形处理器2910(其包括顶点处理器2905和/或(一个或多个)片段处理器2915A-2915N)提供虚拟到物理地址映射,除了存储在一个或多个高速缓存2925A-2925B中的顶点或图像/纹理数据之外,这些处理器还可以引用存储在存储器中的顶点或图像/纹理数据。在一个实施例中,一个或多个MMU 2920A-2920B可以与系统内的其它MMU同步,其它MMU包括与图28的一个或多个应用处理器2805、图像处理器2815和/或视频处理器2820相关联的一个或多个MMU,使得每个处理器2805-2820可以参与共享或统一虚拟存储器系统。根据实施例,一个或多个电路互连2930A-2930B使图形处理器2910能够经由SoC的内部总线或经由直接连接与SoC内的其它IP核接口连接。

如图29B所示,图形处理器2940包括图29A的图形处理器2910的一个或多个MMU2920A-2920B、(一个或多个)高速缓存2925A-2925B和(一个或多个)电路互连2930A-2930B。图形处理器2940包括一个或多个着色器核2955A-2955N(例如,2955A、2955B、2955C、2955D、2955E、2955F至2955N-1和2955N),其提供统一着色器核架构,其中单个核或单一类型的核可以执行所有类型的可编程着色器代码(包括着色器程序代码)来实现顶点着色器、片段着色器和/或计算着色器。存在的着色器核的确切数量在实施例和实现之间可以变化。另外,图形处理器2940包括核间任务管理器2945,其充当线程分派器来向一个或多个着色器核2955A-2955N和分块单元2958来加速对于基于图块的渲染的分块操作,其中对于场景的渲染操作在图像空间中细划分,例如以利用场景内的局部空间一致性或优化内部高速缓存的使用。

以下涉及另外的示例。

示例1是一种设备,包括处理器,所述处理器用于:接收触发了计算进程的页故障的虚拟地址;检查用于虚拟存储器分配的虚拟存储器空间,所述虚拟存储器分配针对触发了所述页故障的所述计算进程;以及根据以下项之一来管理所述页故障:第一协议,所述第一协议响应于确定触发了所述页故障的所述虚拟地址是针对所述计算进程的所述虚拟存储器分配中的最后页,或者第二协议,所述第二协议响应于确定触发了所述页故障的所述虚拟地址不是针对所述计算进程的所述虚拟存储器分配中的最后页。

在示例2中,示例1的主题可以可选地包括处理器,所述处理器用于在所述虚拟存储器空间中为触发了所述页故障的所述计算进程分配并映射预定数量的页。

在示例3中,示例1-2中任一项的主题,其中,所述预定数量的页从触发了所述页故障的所述虚拟地址开始。

在示例4中,示例1-3中任一项的主题可以可选地包括处理器,所述处理器用于在所述虚拟存储器空间中更新页表。

在示例5中,示例1-4中任一项的主题可以可选地包括处理器,所述处理器用于在存储器中存储页故障事件数据记录,所述页故障事件数据记录包括进程标识符、虚拟存储器地址、和时间戳。

在示例6中,示例1-5中任一项的主题可以可选地包括处理器,所述处理器用于:从存储在存储器中的一系列页故障事件数据记录来构建时间序列数据集;基于对所述时间序列数据的分析来生成预测的页故障;以及基于所述预测的页故障将数据抢占式地检索到虚拟存储器中。

在示例7中,示例1-6中任一项的主题可以可选地包括布置,其中,所述处理器被嵌入在存储器管理单元中。

示例8是一种方法,包括:接收触发了计算进程的页故障的虚拟地址;检查用于虚拟存储器分配的虚拟存储器空间,所述虚拟存储器分配针对触发了所述页故障的所述计算进程;以及根据以下项之一来管理所述页故障:第一协议,所述第一协议响应于确定触发了所述页故障的所述虚拟地址是针对所述计算进程的所述虚拟存储器分配中的最后页,或者第二协议,所述第二协议响应于确定触发了所述页故障的所述虚拟地址不是针对所述计算进程的所述虚拟存储器分配中的最后页。

在示例9中,示例8的主题可以可选地包括在所述虚拟存储器空间中为触发了所述页故障的所述计算进程分配并映射预定数量的页。

在示例10中,示例8-9中任一项的主题,其中,所述预定数量的页从触发了所述页故障的所述虚拟地址开始。

在示例11中,示例8-10中任一项的主题可以可选地包括在所述虚拟存储器空间中更新页表。

在示例12中,示例8-11中任一项的主题可以可选地包括在存储器中存储页故障事件数据记录,所述页故障事件数据记录包括进程标识符、虚拟存储器地址、和时间戳。

在示例13中,示例8-12中任一项的主题可以可选地包括:从存储在存储器中的一系列页故障事件数据记录来构建时间序列数据集;基于对所述时间序列数据的分析来生成预测的页故障;以及基于所述预测的页故障将数据抢占式地检索到虚拟存储器中。

在示例14中,示例8-13中任一项的主题可以可选地包括布置,其中,所述处理器被嵌入在存储器管理单元中。

示例15是一种包括指令的非暂时性计算机可读介质,所述指令当由处理器执行时将所述处理器配置成:接收触发了计算进程的页故障的虚拟地址;检查用于虚拟存储器分配的虚拟存储器空间,所述虚拟存储器分配针对触发了所述页故障的所述计算进程;以及根据以下项之一来管理所述页故障:第一协议,所述第一协议响应于确定触发了所述页故障的所述虚拟地址是针对所述计算进程的所述虚拟存储器分配中的最后页,或者第二协议,所述第二协议响应于确定触发了所述页故障的所述虚拟地址不是针对所述计算进程的所述虚拟存储器分配中的最后页。

在示例16中,示例15的主题可以可选地包括一个或多个指令,所述一个或多个指令当在所述至少一个处理器上执行时将所述至少一个处理器配置成在所述虚拟存储器空间中为触发了所述页故障的所述计算进程分配并映射预定数量的页。

在示例17中,示例15-16中任一项的主题,其中,所述预定数量的页从触发了所述页故障的所述虚拟地址开始。

在示例18中,示例15-17中任一项的主题可以可选地包括一个或多个指令,所述一个或多个指令当在所述至少一个处理器上执行时将所述至少一个处理器配置成在所述虚拟存储器空间中更新页表。

在示例19中,示例15-18中任一项的主题可以可选地包括一个或多个指令,所述一个或多个指令当在所述至少一个处理器上执行时将所述至少一个处理器配置成在存储器中存储页故障事件数据记录,所述页故障事件数据记录包括进程标识符、虚拟存储器地址、和时间戳。

在示例20中,示例15-19中任一项的主题可以可选地包括一个或多个指令,所述一个或多个指令当在所述至少一个处理器上执行时将所述至少一个处理器配置成。

在示例21中,示例15-20中任一项的主题可以可选地包括布置,其中,所述处理器被嵌入在存储器管理单元中。

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

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

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

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

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

96页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于云规模存储和数据传输的分布式对象放置、复制和检索

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!