掌桥专利:专业的专利平台
掌桥专利
首页

用于分解式3D结构化SoC的原子性处置

文献发布时间:2023-06-19 19:28:50


用于分解式3D结构化SoC的原子性处置

相关申请的交叉引用

本专利申请要求美国临时申请第63/253437号、美国临时申请第63/253439号和美国临时申请第63/253452号的优先权,它们各自都提交于2021年10月7日,其中每一篇的内容通过引用整体结合到本文中。

背景技术

可编程图形处理器可配置成用于将对共享存储器的一些操作执行为原子性操作。如果对共享存储器的操作相对于其他线程在单个步骤中完成并且没有其他线程能够在完成一半时观察修改,则该操作是原子性的。用于可编程图形处理器的经更新的设计将图形处理器容纳在分解式3D结构化SoC体系结构内。然而,对分解式3D SoC结构上的原子性事务的处置还未被常规系统解决。

附图说明

在所附附图中以示例方式而非限制方式来图示本发明,在附图中,类似的附图标记指示类似的要素,其中:

图1是根据实施例的图形处理器的框图;

图2A-图2B图示根据实施例的图形处理器和计算加速器;

图3图示图形SoC的框图;

图4A-图4C图示图形处理器SoC的分解式3D结构化SoC体系结构;

图5A-图5B图示用于对系统存储器和本地存储器的原子性操作的事务流;

图6A-图6C图示根据实施例的对与对非设备存储器的原子性操作相关联的数据的设备侧缓存操作;

图7A-图7B图示根据实施例的用于改善对与对非设备存储器的原子性操作相关联的数据的设备侧缓存操作的效率的方法;

图8是根据实施例的处理系统的框图;

图9A-图9B图示由本文中描述的实施例提供的计算系统和图形处理器;

图10A-图10B图示处理器和相关联的处理器体系结构的示例性有序管线和示例性的寄存器重命名、乱序发出/执行管线;

图11图示根据本文中描述的实施例的执行单元电路;

图12是根据一些实施例的寄存器体系结构的框图;

图13图示根据实施例的指令格式的实施例;

图14图示指令格式的寻址字段的实施例;

图15图示指令格式的第一前缀的实施例;

图16A-图16D图示根据一些实施例的对第一前缀的R、X和B字段的使用;

图17A-图17B图示根据实施例的第二前缀;

图18图示根据实施例的第三前缀;

图19图示根据实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图;

图20A-图20D图示IP核心开发以及能够由各种IP核心组装而来的相关联的封装组件;以及

图21图示根据本文中描述的各实施例的可以使用一个或多个IP核心制造的示例性集成电路和相关联的处理器。

具体实施方式

出于解释的目的,陈述了众多特定细节以提供对下文描述的各实施例的透彻理解。然而,对于本领域的技术人员将显而易见的是,可以在没有这些特定细节中的一些细节的情况下实践实施例。在其他实例中,以框图形式图示公知的结构和设备,以避免使基本原理变得含糊,并且提供对实施例的更透彻的理解。本文中描述的技术和教导可应用于包括各种类型的电路或半导体器件的设备、系统或装置,包括通用处理设备或图形处理设备。本文中提到“一个实施例”或“实施例”指示结合或关联于该实施例所描述的特定特征、结构或特性可以被包括在此类实施例中的至少一个实施例中。然而,在本说明书中的不同位置出现短语“在一个实施例中”不一定全都是指同一个实施例。

在以下说明书和权利要求书中,可使用术语“耦合的”和“连接的”及其衍生词。这些术语不旨在作为彼此的同义词。“耦合的”用于指示彼此可以或可以不直接物理接触或电气接触的两个或更多个元件彼此协作或相互作用。“连接的”用于指示彼此耦合的两个或更多个元件之间的通信的建立。

本文中描述的是分解式3D结构化SoC体系结构,其包括封装衬底,该封装衬底具有底部层级缓存管芯,该底部层级缓存管芯与缓存管芯顶部上的分解式计算管芯接口连接,其中附加的系统管芯用于管理位于缓存管芯的顶部上的SoC操作。在该体系结构中,计算引擎是从SoC部件的其余部分分解的分解式片段。对分解式3D SoC结构的原子性事务的处置未被常规系统解决。下文描述的实施例提供用于处置分解式3D SoC结构上的原子性事务的体系结构。

图形处理系统概览

图1是根据实施例的图形处理器100的框图。图形处理器100可以是分立的图形处理单元,或可以是与多个处理核心或其他半导体器件集成的图形处理器,其他半导体器件诸如但不限于存储器设备或网络接口。图形处理器可经由至图形处理器上的寄存器的存储器映射的I/O接口并且利用被放置到处理器存储器中的命令进行通信。图形处理器100可包括用于访问存储器的存储器接口114。存储器接口114可以是至本地存储器、一个或多个内部缓存、一个或多个共享的外部缓存、和/或至系统存储器的接口。

可选地,图形处理器100还包括用于将显示输出数据驱动到显示设备118的显示控制器102。显示控制器102包括用于显示器的一个或多个叠加平面以及多层的视频或用户界面元素的合成的硬件。显示设备118可以是内部或外部显示设备。在一个实施例中,显示设备118是头戴式显示设备,诸如,虚拟现实(virtual reality,VR)显示设备或增强现实(augmented reality,AR)显示设备。图形处理器100可包括用于将媒体编码到一种或多种媒体编码格式,从一种或多种媒体编码格式对媒体解码,或在一种或多种媒体编码格式之间对媒体转码的视频编解码器引擎106,这一种或多种媒体编码格式包括但不限于:移动图片专家组(Moving Picture Experts Group,MPEG)格式(诸如,MPEG-2)、高级视频译码(Advanced Video Coding,AVC)格式(诸如,H.264/MPEG-4AVC、H.265/HEVC、开放媒体联盟(Alliance for Open Media,AOMedia)VP8、VP9)、以及电影和电视工程师协会(Society ofMotion Picture&Television Engineers,SMPTE)421M/VC-1、和联合图像专家组(JointPhotographic Experts Group,JPEG)格式(诸如,JPEG、以及运动JPEG(Motion JPEG,MJPEG)格式)。

图形处理器100可包括块图像传输(block image transfer,BLIT)引擎103,用于执行二维(two-dimensional,2D)栅格化器操作,包括例如,比特边界块传输。然而,替代地,可使用图形处理引擎(graphics processing engine,GPE)110的一个或多个部件执行2D图形操作。在一些实施例中,GPE110是用于执行图形操作的计算引擎,这些图形操作包括三维(three-dimensional,3D)图形操作和媒体操作。

GPE 110可包括用于执行3D操作的3D管线112,该3D操作诸如,使用作用于3D基元形状(例如,矩形、三角形等)的处理函数来渲染三维图像和场景。3D管线112包括可编程和固定功能元件,这些可编程和固定功能元件执行元件内的各种任务和/或生成到3D/媒体子系统115的执行线程。虽然3D管线112可用于执行媒体操作,但是GPE 110的实施例还包括媒体管线116,该媒体管线116专门用于执行媒体操作,诸如,视频后处理和图像增强。

媒体管线116可包括固定功能或可编程逻辑单元,用于代替、或代表视频编解码器引擎106来执行一个或多个专业的媒体操作,诸如,视频解码加速、视频去隔行、以及视频编码加速。媒体管线116可附加地包括线程生成单元,用于生成线程以供在3D/媒体子系统115上执行。所生成的线程在3D/媒体子系统115中所包括的一个或多个图形执行单元上执行用于媒体操作的计算。

3D/媒体子系统115可包括用于执行由3D管线112和媒体管线116生成的线程的逻辑。管线可将线程执行请求发送到3D/媒体子系统115,该3D/媒体子系统115包括用于对于对可用的线程执行资源的各种请求进行仲裁和调遣的线程调遣逻辑。执行资源包括用于处理3D线程和媒体线程的图形执行单元的阵列。3D/媒体子系统115可包括用于线程指令和数据的一个或多个内部缓存。此外,3D/媒体子系统115还可包括用于在线程之间共享数据并用于存储输出数据的共享存储器,其包括寄存器和可寻址存储器。

图2A图示根据实施例的图形处理器220。图形处理器220可以是图形处理器100的变体,并且可替代图形处理器100被使用,并且反之亦然。因此,本文中结合图形处理器100对任何特征的公开也公开了对应的与图形处理器220的结合,但不限于此。根据本文中描述的实施例,图形处理器220具有分片体系结构。图形处理器220可包括图形处理引擎集群222,该图形处理引擎集群222在图形引擎片210A-210D内具有图1的图形处理器引擎110的多个实例。每个图形引擎片210A-210D可经由片互连的集合223A-223F被互连。每个图形引擎片210A-210D还可经由存储器互连225A-225D被连接到存储器模块或存储器设备226A-226D。存储器设备226A-226D可使用任何图形存储器技术。例如,存储器设备226A-226D可以是图形双倍数据速率(graphics double data rate,GDDR)存储器。存储器设备226A-226D可以是HBM模块,这些HBM模块可与其相应的图形引擎片210A-210D一起在管芯上。存储器设备226A-226D可以是可被堆叠在其相应的图形引擎片210A-210D的顶部上的堆叠式存储器设备。每个图形引擎片210A-210D和相关联的存储器226A-226D可驻留在分开的小芯片上,这些分开的小芯片被接合到基础管芯或基础衬底。

图形处理器220可配置有非统一存储器访问(non-uniform memory access,NUMA)系统,在该NUMA系统中,存储器设备226A-226D与相关联的图形引擎片210A-210D耦合。给定的存储器设备可由与该存储器设备直接连接到的图形引擎片不同的片访问。然而,当访问本地片时,对存储器设备226A-226D的访问等待时间可以最低。在一个实施例中,启用缓存一致的NUMA(cache coherent NUMA,ccNUMA)系统,该ccNUMA系统使用片互连223A-223F来启用图形引擎片210A-210D内的缓存控制器之间的通信,以便当多于一个缓存存储相同的存储器位置时保持一致的存储器镜像。

图形处理引擎集群222可与片上或封装上组织(fabric)互连224连接。在一个实施例中,组织互连224包括网络处理器、片上网络(network on a chip,NoC)、或用于使组织互连224能充当在图形处理器220的部件之间交换数据分组的分组交换型组织互连的另一交换处理器。组织互连224可启用图形引擎片210A-210D与诸如视频编解码器206和一个或多个副本引擎204之类的部件之间的通信。副本引擎204可用于将数据移出存储器设备226A-226D和在图形处理器220外部的存储器(例如,系统存储器),将数据移入存储器设备226A-226D和在图形处理器220外部的存储器(例如,系统存储器),并且在存储器设备226A-226D与在图形处理器220外部的存储器(例如,系统存储器)之间移动数据。组织互连224还可用于将图形引擎片210A-210D互连。图形处理器220可以可选地包括显示控制器202,用于启用与外部显示设备218的连接。图形处理器还可被配置为图形加速器或计算加速器。在加速器配置中,显示控制器202和显示设备218可被省略。

图形处理器220可经由主机接口228连接到主机系统。主机接口228可启用图形处理器220、系统存储器和/或其他系统部件之间的通信。主机接口228可以是例如PCI快速(PCI express)总线或另一类型的主机系统接口。例如,主机接口228可以是NVLink或NVSwitch接口。主机接口228和组织互连224可以协作以使图形处理器220的多个实例能充当单个逻辑设备。主机接口228和组织互连224之间的协作还可使各个图形引擎片210A-210D能够作为不同的逻辑图形设备向主机系统呈现。

图2B图示根据本文中描述的实施例的计算加速器230。计算加速器230可包括与图2B的图形处理器220的体系结构类似性,并且针对计算加速进行优化。计算引擎集群232可包括计算引擎片的集合240A-240D,计算引擎片的集合240A-240D包括针对并行或基于向量的通用计算操作优化的执行逻辑。计算引擎片240A-240D可以不包括固定功能图形处理逻辑,但是在一些实施例中,计算引擎片240A-240D中的一个或多个可包括用于执行媒体加速的逻辑。计算引擎片240A-240D可经由存储器互连225A-225D连接到存储器226A-226D。存储器226A-226D和存储器互连225A-225D可以是与在图形处理器220中类似的技术,或者可以是不同的技术。图形计算引擎片240A-240D还可经由片互连的集合223A-223F被互连,并且可与组织互连224连接和/或通过组织互连224被互连。在一个实施例中,计算加速器230包括可被配置为设备范围的缓存的大型L3缓存236。计算加速器230还能以与图2B的图形处理器220类似的方式经由主机接口228连接到主机处理器和存储器。

计算加速器230还可包括集成网络接口242。在一个实施例中,集成网络接口242包括网络处理器和控制器逻辑,该控制器逻辑使计算引擎集群232能够在无需数据跨越主机系统的存储器的情况下通过物理层互连244进行通信。在一个实施例中,计算引擎片240A-240D中的一个由网络处理器逻辑替代,并且要经由物理层互连244传送或接收的数据可直接向存储器226A-226D或从存储器226A-226D传送。计算加速器230的多个实例可经由物理层互连244被结合到单个逻辑设备中。替代地,各计算引擎片240A-240D可被呈现为不同的网络可访问计算加速器设备。

模块化图形SoC体系结构

图3图示用于图形SoC 300的模块化客户端/服务器体系结构的框图。示出汇聚式体系结构视图,其包括利用体系结构内的特定的模块化连接点构造的图形SoC 300的部件,使得部件可被添加,可从单片式设计被移除,或者可按分解式设计被划分在多个小芯片之间。例如,主机连接性可以在分开的主机接口管芯310上,其中,物理接口(physicalinterface,PHY 311)、上游交换机/端口(upstream switch/port,USP 312)和组织桥接器(313)在第一管芯上,并且交换组织和其余SoC部件在第二管芯上。客户端配置可包括具有外围部件互连快速(peripheral component interconnect express,PCIe)支持(例如,PCIe 5等)的主机接口管芯310,而服务器配置可利用对PCIe以及计算快速链路(computelink,CXL)和CXL.mem/cache(CXL.存储器/缓存)351的支持启用对主机接口管芯310的使用。在一个实施例中,功率管理块320也可从主SoC体系结构分解。功率管理块320包括用于促进图形SoC 300上的功率管理功能的功率管理单元(power management unit,PUNIT321)以及各种功率和平台互连。图形SoC 300内的部件通信可使用边带网络来执行,该边带网络是用于在图形SoC的部件之间传递带外信息的标准化机制。边带路由器(例如,SBR353)可在边带网络上在部件之间路由消息。SoC地址解码器362可通过维护用于存储器映射的输入/输出(memory mapped input/output,MMIO)的地址空间与用于同各地址范围相关联的SoC部件的地址空间之间的映射来促进通过边带网络的消息传送。在一个实施例中,SoC地址解码器362是可编程的,使得用于各SoC部件的地址映射可基于针对被组装的产品而选择的部件被动态地编程。来自各部件的遥测也可由图形SoC 300输出。遥测输出可经由来自主交换组织的带内请求和经由边带网络的带外请求两者被配置。

一个或多个主交换组织352A-352C提供用于图形SoC 300的主通信机制。在一个实施例中,第一主交换组织(primary switch fabric-0,PSF-0)352A可与主机接口管芯310上的组织桥接器313耦合,而第二主交换组织(PSF-1)和第三主交换组织(PSF-2)352C与第一主交换组织352A耦合。主交换组织352A-352C的客户端可经由虚拟交换端口(例如,virtualswitch port,VSP 360)与交换组织耦合。在一个实施例中,至汇聚式存储器接口桥接器357的主交换组织与主交换组织352A-352C中的至少一个耦合,以经由主机接口管芯310启用对与存储器接口390耦合的存储器的访问,该主机接口管芯310允许外部设备访问图形SoC300的存储器。在一个实施例中,测试访问模块(test access module,TAM 354)与主交换组织(例如,PSF-1 352B)耦合,以启用针对图形SoC 300的调试功能。在一个实施例中,TAM354可用于经由SMT通用输入/输出(general-purpose input/output,GPIO)接口来访问调试逻辑。

GPIO接口(例如,GPIO 358)还可用于访问闪存设备356,该闪存设备356可存储例如用于图形SoC 300的各部件的固件以及用于安全控制器355的固件。在一个实施例中,安全控制器355是用于基于服务器的GPU系统的底座安全控制器。一个实施例还包括熔丝阵列363和相关联的熔丝控制器364。熔丝阵列363包括一旦经编程就变成只读的一次性可编程非易失性存储装置。在一个实施例中,熔丝阵列包括真随机数生成器(true random numbergenerator,TRNG),该TRNG用于使熔丝阵列中的熔丝被感测的方式随机化,使得较难简单地演练设备并确定熔丝阵列363内的存储元素的所有值。

设备单元361可经由VSP 360与主交换组织(例如,PSF-0 352A)耦合,在一个实施例中,该VSP 360是用于图形SoC 300的PCIe/CXL端点控制器。设备单元361可与用于一些产品的显示控制器332和相关联的显示物理接口333耦合,而其他产品、尤其是基于服务器的产品可排除显示控制器332和相关联的显示物理接口333。图形SoC 300还可包括音频设备330,以经由附连的显示连接促进音频输出。在一个实施例中,显示和音频输出可经由USB4/雷电(Thunderbolt)互连366被执行。可提供显示端口(DisplayPort)替代模式、USB协议隧穿、和高速数据传递。

第二管芯上的SoC部件中的一些部件也可位于第三管芯上。例如,包括多个图形核心集群的计算块380以及相关联的存储器接口390可驻留在第三管芯上。计算块380可包括图形核心,该图形核心具有矩阵加速器和/或用于专注于计算和/或机器学习的服务器产品的脉动阵列,而脉动阵列对于针对不同的细分服务器的另一产品(诸如,对于专注于媒体的服务器产品)可被排除或被修改。相应地,计算块380内的图形核心集群在细分客户端与细分服务器之间可有所不同,而无需重新设计SoC体系结构。替代地,具有不同版本的计算块380的不同小芯片可在组装期间被附加至有源基础管芯。如本文中所描述,有源基础管芯是除了将小芯片的片互连到封装互连的TSV外还包括嵌入式逻辑的硅管芯。

在计算块380和相关联的存储器接口390驻留在第三管芯上的情况下,不同类型的图形核心和存储器配对可被用于不同产品,并且不同的图形核心体系结构可被使用。基于服务器的计算块380可与HBM存储器(例如,HBM2E、HBM3)相关联,而基于客户端的计算块380可与GDDR存储器(例如,GDDR6、GDDR6X)相关联。在一个实施例中,低功率产品可与低功率DDR(low power DDR,LPDDR)存储器子系统耦合。存储器接口382和/或存储器桥接器384可用于连接计算块380和存储器接口390。在一个实施例中,存储器接口382可驻留在有源基础管芯内。此外,当制造针对不同的细分市场或产品类别的模块时,可使用不同的工艺技术节点。

在一个实施例中,存储器接口390可驻留在第四管芯上,其中,不同的存储器技术被用于共享计算块380内的图形核心体系结构的不同细分产品。例如,服务器产品可与HBM存储器的堆叠耦合,而针对游戏爱好者的客户端产品可包括结合GDDR6X存储器的某个版本的专注于服务器的计算块380。还可对具有封装上HBM的产品以及经由高速存储器互连与分开的HBM封装耦合的产品作出区分。

在一个实施例中,可缩放媒体块和全局控制369可被包括并与存储器组织368耦合。存储器组织368启用可缩放媒体块和全局控制369与计算块380和附连的存储器接口390之间的通信。存储器组织368与图4A中的存储器互连408A-408B相关联。

在一个实施例中,存储器接口390和相关联的存储器设备可利用动态电压和频率缩放。当执行受存储器子系统的性能限制的存储器密集型工作负载时,存储器系统的电压和频率可被缩放以提供更高的存储器性能。当空闲时或当执行相比存储器性能更受计算性能限制的工作负载时,存储器子系统的电压和频率可被减小,从而允许计算引擎的电压和频率缩放而不超出总设备功率限制。

在一个实施例中,针对每个图形产品SKU、基于与那个SKU相关联的功率包络标识工作点的集合。在分立的图形系统中,存储器设备(GDDR、HBM等)仅能以有限的电压集合来操作。在存储器训练期间,在工厂重置时,可操作电压和频率点被训练。经训练的参数随后被存储在闪存设备上以用于稍后取回。基于硅后校准,适当的电压和频率点被确定,并且存储器子系统配置成用于启用那些点之间的转变。硬件配置成用于在不在用户体验或工作负载性能方面显著地影响现有工作负载的情况下迅速地切换频率。在必要时,较高的电压可被用于启用最高的存储器频率的集合。

在一个实施例中,本文中描述的图形SoC 300体系结构可配置成用于针对服务器和客户端设备启用多片产品,并且对于服务器设备启用多插槽产品。片到片接口371可被包括以使图形SoC 300能够与附加的片或管芯耦合。片到插槽接口373可被包括并与附加的小芯片插槽374和连接性管芯375耦合,该连接性管芯375允许多板服务器图形GPU被组装。片到片接口371和片到插槽接口373各自可与存储器组织368耦合,以使用于各片和插槽的存储器能够经由远程片和插槽被访问。

模块化3D结构化SoC体系结构上的原子性操作处置

本文中描述的是针对被用于主管图形处理器的模块化分解式3D结构化SoC体系结构上的原子性操作处置的技术。对针对此类分解式3D结构化SoC的原子性事务的处置还未被常规系统解决。由于底层的3D SoC结构是新的体系结构方式,因此此类新颖的3D SoC结构内的原子性事务的处置还未被常规系统解决。常规系统中的原子性事务处置的先前方式不会解决本文中描述的新3D SoC结构的该体系结构和用例的集合。

为了解决先前方式的上述缺陷,实施例通过可处置以下两种种类的原子性操作的分解式3D结构SoC体系结构来提供原子性事务处置:(1)系统存储器原子性;以及(2)本地存储器原子性。图形引擎和媒体引擎两者都可利用本公开的实现方式中的该能力。例如,分解式3D结构SoC体系结构可针对附连到主机处理器的系统存储器或附连到图形处理器的本地存储器。可响应于由图形SoC 300的处理资源执行的指令来执行原子性操作。在一个实施例中,可执行原子性操作,这些原子性操作包括但不限于取得并相加(Fetch and Add)、交换(SWAP)、CAS(Compare and Swap,比较并交换)。然而,本文中描述的技术可用于执行任何原子性操作。在一个实施例中,针对例如32比特、64比特、128比特的操作对象大小提供支持。然而,在其他实施例中,可支持其他操作对象大小。

在本文中描述的一些实施例中,经由使用CXL互连(计算快速链路)启用原子性操作。CXL包括对各种互连协议的支持,包括CXL.io、CLX.cache和CXL.mem。CXL.io协议使主机能够执行设备发现、配置、寄存器访问、中断、虚拟化和批量DMA。CXL.cache协议定义主机与设备之间的交互,并且启用主机存储器的一致的设备侧缓存操作。CXL.memory协议使主机处理器能够经由使用加载和存储命令直接访问附连的CXL设备的本地存储器。

图4A-图4C图示图形处理器SoC 400的分解式3D结构化SoC体系结构。如图4A中所示,图形处理器SoC 400包括封装衬底402,该封装衬底402具有有源基础管芯404形式的底部层级缓存管芯,该有源基础管芯404包括第4级(level 4,L4)缓存存储器。有源基础管芯404与计算管芯407和系统管芯406接口连接,该计算管芯407和系统管芯406定位在有源基础管芯404的顶部上。图形处理器SoC 400包括存储器互连408A-408B和系统管芯406,该存储器互连408A-408B将本地设备存储器耦合到有源基础管芯404。本地设备存储器可以是低功率双倍数据速率(low power double data rate,LPDDR)或图形DDR(graphics DDR,GDDR)存储器。在一些实施例中,本地设备存储器也可以是高带宽存储器(high bandwidthmemory,HBM)。

图4B示出针对有源基础管芯404、系统管芯406和计算管芯407的附加体系结构细节。在一个实施例中,有源基础管芯404包括管芯互连的集合411A-411D,该管芯互连的集合411A-411D将有源基础管芯404内的电路耦合到系统管芯406和计算管芯407。管芯互连411A-411D可以是图3的片到片接口371的实例。有源基础管芯404还包括L4缓存,该L4缓存具有L4缓存块的集合412A-412F和L4缓存控制器413。L4缓存控制器413对与对L4缓存块412A-412F内的本地设备存储器的存储器访问相关联的数据进行缓存。L4缓存块412A-412F的数量可基于L4缓存的大小而变化,并且L4缓存可与本地设备存储器的大小成比例地设定大小。在一个实施例中,由计算引擎414和媒体引擎419执行的存储器访问经由L4缓存被服务,其中,L4缓存控制器413在缓存未命中的情况下访问本地设备存储器。L4缓存控制器413经由存储器接口430访问本地设备存储器,该存储器接口430经由存储器互连408A-408B与本地设备存储器连接。在一个实施例中,存储器接口430是图3的存储器接口382的实例。

计算管芯407包括计算引擎414、L4接口415和多个CXL通道416A-416B。计算引擎414包括如图3中的计算块308的一个或多个实例的形式的通用图形处理元件。计算引擎414与图形处理器SoC 400的其他部件分解,该图形处理器SoC 400启用模块化体系结构,在该模块化体系结构中,图形处理器SoC 400的处理能力可经由使用计算管芯407的不同实现方式容易地被调整。此外,可在无需对有源基础管芯404或系统管芯406的显著调整的情况下使用不同的工艺技术和/或不同的制造商来制造计算管芯407的不同实现方式。L4接口415促进计算引擎414对L4缓存的访问。由计算引擎414执行的对本地设备存储器的经缓存的存储器访问可经由L4接口415被服务。CXL通道416A-416B启用对包括本地设备存储器和系统存储器两者的公共存储器空间的一致性访问。计算引擎414的原子性访问经由多个CXL通道416A-416B中的一个或多个被执行。

系统管芯406包括多个CXL通道417和CXL分割器418、媒体引擎419、系统接口420、显示引擎421、原子性处置器422、以及系统组织425。系统组织425包括图3的主交换组织352A-352C。CXL通道417包括用于各种CXL协议的通道,并包括由计算管芯407使用的CXL通道416A-416B,各种CXL协议包括CXL.io、CXL.cache和/或CXL.memory。系统管芯406还包括CXL分割器的集合418,该CXL分割器的集合418可将CXL事务路由到用于事务的处置器。例如,CXL分割器418可将事务从计算引擎414或媒体引擎419路由到系统接口420或原子性处置器422,该系统接口420可用于通过主机接口总线访问系统存储器,该原子性处置器422促进对系统存储器或本地存储器的原子性操作的执行。

媒体引擎419包括用于执行媒体编码和解码操作的功能单元。媒体引擎419的多个实例可以存在。在一个实施例中,媒体引擎419也可被分解为分开的管芯。显示引擎421促进帧缓冲器存储器的呈现,并且启用对通过各种物理显示接口被耦合的显示设备的控制。原子性处置器422启用本文中描述的原子性存储器操作的执行。

包括计算引擎414和媒体引擎419的处理元件端点支持AtomicOp(原子性操作)请求方能力。系统接口420包括具有对AtomicOp路由能力的支持的上游交换机/端口(例如,图3的USP 312)。如本文中所使用,术语“引擎”可以指用于执行SoC中的操作的硬件电路(例如,处理资源、执行资源、执行单元等)。计算引擎和媒体引擎可分割AtomicOp操作码和发出(issue)操作码,该AtomicOp操作码和发出操作码执行针对与原子性操作相关联的缓存行的读取以获得所有权(read-for-ownership)操作和缓存转储清除操作。分割命令被发出到CXL接口上,以用于经由系统接口420或L4缓存来服务。还可在本文中描述的实施例中利用其他数据传输接口协议,诸如,外围部件互连快速(PCIe),或者可实现数据传输接口协议的组合(例如,在SoC内使用的CXL、以及用于SoC与主机之间的通信的PCIe)。

本文中的实施例通过提供对新的分解式3D结构SoC的原子性事务处置支持提供对常规方式的技术优势,从而改善此类体系结构的性能和吞吐量。当(1)计算引擎414发出原子性事务时以及(2)媒体引擎419发出原子性事务时,实现方式覆盖原子性处置。当由计算引擎414或媒体引擎419发出原子性事务时,请求去往系统管芯406中的原子性处置器422。

如图4C中所示,计算引擎414包括多个计算块440A-440B,其中的每一个可以是图3的计算块380的实例。计算块440A-440B与存储器组织441耦合,该存储器组织441可包括存储器交叉开关。计算引擎414还可包括图形地址管理器(graphics address manager,GAM)和散列逻辑的一个或多个实例,该GAM和散列逻辑用于对多个存储器访问节点中的每一个存储器访问节点的存储器访问进行散列。经由存储器组织441提交的请求被排队到多个超级队列442中的一个超级队列中,这些超级队列442存储对未命中计算块440A-440B和/或存储器组织441的内部缓存的存储器事务的存储器请求。原子性事务被执行为CXL事务。附加散列电路443执行基于地址的散列以选择CXL通道416中的、CXL事务要通过其被执行的一个或多个CXL通道。在一个实施例中,经由L4接口415执行非原子性存储器访问。L4接口415与至L4缓存的管芯互连445耦合,该至L4缓存的管芯互连445经由计算管芯407与有源基础管芯404之间的管芯互连将命令从L4接口415中继到L4缓存控制器413。管芯互连445可包括管芯互连411A-411B中的任一个。与L4缓存控制器413的通信通过汇聚式存储器接口(converged memory interface,CMI)执行。

媒体引擎419可被包括在系统管芯406内,或被分解为单独的媒体管芯。媒体引擎419包括PCIe排序逻辑447,该PCIe排序逻辑447用于管理对将通过与系统接口420耦合的PCIe总线被提交的事务的排序。媒体引擎419还包括与视频解码/视频编码电路(videodecode/video encode,VD/VE 449)耦合的图形地址管理器(GAM 448)。GAM 448可将本地存储器访问请求插入到超级队列451中,或通过组织425将系统存储器访问路由到系统接口420。媒体引擎419可通过支持各种CXL协议的iCXL总线449路由本地存储器访问请求。

系统管芯406包括启用图形处理器SoC的部件之间以及图形处理器SoC与主机之间的通信的各种SoC级部件。系统管芯406包括组织桥接器462,该组织桥接器462包括图3的组织桥接器313的某个版本以及具有对各种CXL协议的支持的iCXL总线,各种CXL协议包括iCXL.cache协议446,其是CXL缓存协议的实现方式。系统管芯406还包括CXL分割器(iCXL418A-418B),用于处理从计算引擎414和媒体引擎419接收的iCXL总线事务。在一个实施例中,总线事务使用iCXL.cache协议446来执行。CXL分割器将接收到的事务标识为系统存储器事务或原子性事务。系统存储器事务经由系统接口420、通过系统组织425、经由组织桥接器462被服务。原子性事务被路由到原子性处置器422。

原子性处置器422将接收到的事务的目的地确定为系统存储器或本地存储器。原子性处置器接收原子性事务,对该事务解码,确定该事务的源(例如,计算引擎414、媒体引擎419),并且确定该事务需要去往系统存储器(例如,主机存储器)还是本地存储器(例如,L4缓存等)。在一个实现方式中,原子性事务包括指示原子性事务被引导到的存储器的标志或字段。原子性处置器随后发送执行原子性操作的适当的操作码,跟踪用于运行中(in-flight)原子性操作的完成状态,并将完成往回发送到源。在一些实施例中,原子性处置器可包括缓存/FIFO 465,用于使原子性处置器422能够处置多个传入原子性事务并维持传入原子性事务的顺序。

原子性操作使用iCXL.cache协议446来执行,并且L4控制器413使用CMI 455接口,原子性事务经由iCXL.cache至CMI转换器470从iCXL.cache被转译为CMI。所得到的CMI命令经由至L4缓存的管芯互连472被中继到L4缓存控制器413,该至L4缓存的管芯互连472可包括管芯互连411A-411D中的任一个。L4缓存控制器413经由至系统管芯406的管芯互连476与用于设备本地存储器492的存储器仲裁器491通信,该至系统管芯406的管芯互连474可包括管芯互连411A-411D中的任一个。

在一个实施例中,L4缓存控制器包括设备一致性代理(device coherency agent,DCOH 476),该DCOH负责解析关于L4缓存的一致性以及管理用于一致性存储器的主机/设备偏置状态。主机/设备偏置状态与管理对设备附连的存储器(诸如,本地存储器492)的访问相关。当操作对象正由主机在工作提交期间被写入存储器时,或当在工作完成之后结果正从存储器被读出时,主机偏置模式可被使用。在主机偏置模式期间,一致性流允许从主机到本地存储器492的高吞吐量访问。在工作负载执行期间,设备偏置模式被用于使设备能够在不查阅主机的一致性引擎的情况下访问本地存储器492。主机仍可访问本地存储器492,但可被设备强迫放弃所有权。DCOH 475可配置成用于自主地管理用于本地存储器492的主机/设备偏置状态和L4缓存中的相关联的缓存行。

图5A-图5B图示用于对系统存储器和本地存储器的原子性操作的事务流500、520。图5A图示处理元件501与系统存储器504之间的事务流500,该处理元件501诸如计算引擎414或媒体引擎419。图5B图示处理元件501与本地存储器492之间的事务流520。

如图5A中所示,事务流500开始于处理元件501并结束于系统存储器504。在到达主机设备502之前,事务流500跨越iCXL分割器418、原子性处置器422、组织桥接器462和系统接口479。主机设备502上的系统存储器访问处置器(其可以是主机处理器或专用CXL事务处置器)可将事务中继到系统存储器504。处理元件501可执行读取以获得所有权操作(RFO511)。读取以获得所有权操作组合读取和无效广播,该无效广播执行存储器地址的读取,意图在于执行对那个存储器地址的后续写入。读取以获得所有权操作将存储器地址处的数据读取到(例如,处理元件501内的)缓存行中,并使所有其他缓存将与那个存储器地址相关联的缓存行的状态设置为无效。iCXL分割器418确定RFO 511与原子性操作(例如,取得和相加、交换、CAS等)相关联,并且将RFO 512发出到原子性处置器422。在各实施例中,RFO 512可以是RFO 511的中继,或者可包括对RFO 511的修改。原子性处置器422确定RFO 512去往系统存储器504。一系列读取以获得所有权命令(RFO 513A-513C)传播通过组织桥接器462、系统接口479和主机设备502。主机设备502可将存储器读取(memory read,MemRd 514)命令发出到系统存储器504。数据515A-515D随后经由主机设备502、系统接口479和组织桥接器462被返回到原子性处置器422。原子性处置器422随后将数据515E返回到iCXL分割器418,该iCXL分割器418将数据515F传送到处理元件501。

处理器元件501在接收到数据515F之后可执行处理操作以修改该数据,并将经修改的数据写入处理元件501内的缓存。处理元件501随后引起缓存转储清除(cache flush,Cflush 516A-516B),以将经修改的数据写回到存储器,该存储器在一个实施例中可以是本地存储器492的被配置为用于系统存储器504的一致共享的池中的数据的缓存的部分,或者该存储器在另一实施例中可以是被用于对系统存储器504的原子性操作的专用原子性缓存。响应于转储清除,原子性处置器422可经由iCXL分割器418将监听517A-517B(例如,CXLSnpData、SnpIv、SnpCur)发送到处理元件501,以确定在与系统存储器地址相关联的本地存储器中是否存在任何数据。处理元件501经由iCXL分割器418将对监听的响应518A-518B发送到原子性处置器422,该响应518A-518B随后作为存储器写入(memory write,MemWr519A-519D)由原子性处置器422路由到系统存储器504,并且事务结束。

如图5B中所示,用于从处理元件501到本地存储器492的原子性操作的事务流520利用iCXL.cache至CMI转换器470和L4缓存控制器413来路由用于原子性事务的读取以获得所有权(RFO 523A-523B)。原子性事务开始于:读取以获得所有权(RFO 521)从处理元件被发送到iCXL分割器418。iCXL分割器418随后将RFO 522发送到原子性处置器422。在各实施例中,RFO 522可以是RFO 521的中继,或者可包括对RFO 521的修改。原子性处置器422可确定RFO针对存储在本地存储器492中的数据,并且发送读取以获得所有权(RFO 523A-523B),该读取以获得所有权经由iCXL.cache至CMI转换器470被路由至L4缓存控制器413。如果针对原子性操作的数据被存储在L4缓存中,则L4缓存控制器413可返回数据526B。如果该读取未命中L4缓存,则L4缓存控制器413可将存储器读取(MemRd 524)发送到本地存储器492,该本地存储器492将数据526A返回到L4缓存控制器413,该缓存控制器413可将返回的数据缓存在L4缓存中。管理设备与主机之间的、针对对于本地存储器492的操作的一致性的DCOH475将会将消息发送到主机,以使作为RFO命令的目标的数据的任何主机缓存的版本无效。如果RFO命令的目标被保持在主机偏置模式,则DCOH 475还可发起从主机偏置到设备偏置的偏置翻转操作。可(经由主机设备502)执行针对系统存储器504的RFO/MemWr转变525,以取得本地存储器492的相关部分的所有权,并且接收由主机设备502或系统存储器504保存的任何经修改的数据。经修改的数据在由本地存储器492返回数据526A之前被用于更新本地存储器492。

处理元件501在从存储器读取接收到数据并执行针对原子性操作的计算之后可引起缓存转储清除(Cflush 526A-526B),该缓存转储清除引起将数据写回到存储器。响应于转储清除,原子性处置器422可将监听528A-528B发送到处理元件501,以维持本地存储器492与系统存储器504之间的一致性。处理元件501经由iCXL分割器418将响应529A-529B往回发送到原子性处置器422。该响应随后由原子性处置器422作为存储器写入(MemWr 530)路由到系统存储器504,从而完成事务。

用于非设备存储器原子性操作的设备缓存

如上文所描述,CXL.cache协议定义主机与设备之间的、用于允许设备缓存主机存储器的交互。该访问是一致的。CXL协议提供用于维持存储器池内的、在设备与主机之间或设备与另一经连接的设备之间被共享的数据的一致性,该另一经连接的设备具有经由CXL.cache或CXL.memory协议能够访问的存储器。当要由设备对非本地/非设备存储器执行原子性操作时,由设备请求对原子性的目标存储器地址的读取以获得所有权,从而允许设备修改共享数据。

一个实施例提供可临时存储主机数据的设备侧原子性缓存,该主机数据将是原子性操作的目标。一旦原子性操作被执行,设备就可在数据被存储在设备侧原子性缓存中的同时执行对数据的进一步修改。设备随后可将数据从原子性缓存往回驱逐到主机存储器。

图6A-图6C图示根据实施例的对与对非设备存储器的原子性操作相关联的数据的设备侧缓存操作。图6A图示系统600,在该系统600中,GPU601包括用于存储与非设备原子性操作相关联的数据的原子性缓存616。图6B图示用于设备侧原子性缓存的猝发缓冲器缓存。图6C图示基于原子性猝发速率启用猝发缓冲器缓存的方法630。虽然下文将参照附连至主机处理器的存储器描述操作,但是技术也可应用于对任何非设备存储器执行的原子性操作,诸如,在GPU与同另一CXL设备相关联的存储器之间的原子性事务。

如图6A中所示,一个实施例提供包括主机602、GPU 601和GPU附连的本地存储器623的系统600。CXL链路403在主机602与GPU 601之间携载用于各种CXL协议的消息。在一个实施例中,CXL链路403可以是通过PCIe 5.0建立的CXL 2.0链路。然而,本文中描述的技术可适用于其他版本的CXL和PCIe、或者具有对图形处理器设备的支持的任何其他设备对主机互连。GPU 601包括互连管线604,在一个实施例中,该互连管线604包括至系统互连的物理互连(PHY),诸如,PCIe。

GPU 601还包括CXL控制器610、CXL.io端点618。CXL控制器610包括逻辑PHY 611和仲裁器/复用器(arbitrator/multiplexor,ARBMux 612),该仲裁器/复用器将CXL.cache/memory(CXL.缓存/存储器)613通道和CXL.io上游端口/上游交换端口614与逻辑PHY 611互连。为了维持针对CXL.cache操作的一致性,GPU 601包括主机存储器DCOH(host memoryDCOH,HDCOH615),该主机存储器DCOH是设备一致性代理,该设备一致性代理以与图4C中的DCOH 475管理针对与本地存储器623相关联的缓存行的一致性类似的方式来管理针对与主机存储器或其他非本地/非设备存储器相关联的缓存行的一致性。在一个实施例中,主机602还包括与DCOH 472和HDCOH 615类似的结构。在一个实施例中,互连管线604、CXL控制器610、HDCOH 615和CXL.io端点618驻留在图4B-图4C的系统接口420中。HDCOH 615和CXL.io端点618与桥接器619连接,在一个实施例中,该桥接器619是图4C的组织桥接器462。

GPU 601还包括计算引擎620,该计算引擎可以是图4B-图4C的计算引擎414的实现方式的某个版本。计算引擎620可包括第3级(level 3,L3)缓存621或与第3级(L3)缓存621耦合。GPU 601还可包括L4缓存622,该L4缓存622可包括图4B的L4缓存块412A-412F以及L4控制器413。GPU601与本地存储器623耦合,该本地存储器623可以是图4C和图5B的本地存储器492的某个实例或版本。GPU 601可经由图4A的存储器互连408A-408B和图4B的存储器接口430来与本地存储器623耦合。

HDCOH 615的原子性缓存616被用于存储从主机存储器读取的数据,该主机存储器是可使用CXL或等效互连被执行的任何原子性操作的目标。在一个配置中,当原子性操作请求(例如,经由原子性处置器422)被发起时,原子性缓存616被检查以确定操作的目标是否已经被存储在缓存中。如果命中发生,则可在无需CXL事务访问主机存储器的情况下在原子性缓存616中执行原子性操作。如果未命中发生,则HDCOH 615可执行对与原子性操作的目标相关联的缓存行的RFO,如上文针对图5A所描述。所接收的数据将被添加到新分配的缓存行,或者将替换现有的缓存行。对于一致的读取-修改-写入原子性操作,被驱逐的缓存行将存储经修改的数据,该经修改的数据在驱逐时将被写回到主机。由这些经修改的缓存行驱逐引起的上游通信量会减少可用于CXL设备可缓存读取的总带宽。

本文中描述的实施例通过采用以下各项来改善针对GPU的CXL事务的性能:1)猝发缓冲器缓存,其在原子性操作的猝发期间提供附加的缓存空间;以及2)动态确定的缓存满阈值,其指定缓存行何时将从缓存被驱逐。这些技术提供针对主机602的处理器与GPU 601之间的原子性事务/同步的改善的性能的技术优势。

猝发缓冲器缓存

如图6B中所示,在一个实施例中,HDCOH 615包括原子性缓存616和猝发缓冲器缓存625,该原子性缓存616和猝发缓冲器缓存625被用于结合原子性操作对从非设备存储器626读取的数据进行缓存。非设备存储器626可以是主机存储器或经附连的(例如,经由CXL.mem协议)CXL设备的主机管理的存储器。在一个实施例中,猝发缓冲器缓存625是原子性缓存616的、被预留以用作猝发缓冲器缓存625的可配置百分比(例如,约30%)。在一个实施例中,猝发缓冲器缓存625是分开的缓存或存储器的、可被访问达短的持续时间的部分。例如,在一个实施例中,L3缓存621、L4缓存622或本地存储器623的部分可被分配以用作猝发缓冲器缓存625。

在一个实施例中,CXL事务流与图5A的事务流500和图5B的事务流520类似,例外在于,在原子性处置器422处接收的缓存转储清除操作(Cflush 515B、Cflush 525B)可引起缓存行从原子性缓存616或猝发缓冲器缓存625的转储清除。监听操作在由原子性处置器422中继到处理元件501之前可命中原子性缓存616或猝发缓冲器缓存625。

如图6C中所示,根据方法630,可基于针对原子性操作的原子性猝发速率来启用猝发缓冲器缓存。在操作期间,用于原子性缓存616的控制逻辑(其在一个实施例中驻留在HDCOH 615中)可定期确定原子性猝发请求速率(框632)。原子性猝发请求速率可被确定为关于在给定时间段上接收的原子性请求的数量的瞬时速率。原子性猝发请求速率还可基于滑动窗口来确定。在一个实施例中,原子性猝发请求速率基于GPU 601的流入原子性请求缓冲器的占用来确定。被采样的原子性请求缓冲器可以是例如图4C中所示的原子性处置器422的缓存/FIFO 465、或GPU 601的原子性请求管线内的原子性请求的另一缓冲器。当原子性猝发速率被确定为低于阈值(框633,“否”)时,一旦缓存满阈值达到,HDCOH 615或用于原子性缓存616的其他控制逻辑就可开始驱逐维持在原子性缓存中的数据(即,步骤634)。

当低于猝发速率阈值时,由于缓存行驱逐而导致的写回不会负面地影响CXL缓存的读取吞吐量。猝发速率阈值可基于最大可用的CXL吞吐量的百分比、或这样的另一值来确定:已确定在超出该另一值的情况下由于缓存行驱逐而导致的写回开始负面地影响CXL缓存的读取吞吐量。缓存满阈值可以是基于多个缓存参数确定的动态阈值。在一个实施例中,缓存参数可包括当猝发缓冲器缓存625从原子性缓存中的预留空间被分配时该原子性缓存616中的被预留用于猝发缓冲器缓存的空间量。此外,缓存满阈值还可基于缓存性能被调整,该缓存性能作为缓存行从原子性缓存616的延迟驱逐(例如,以启用潜在的重用)与在原子性操作后缓存行的立即驱逐(例如,以减少来自主机的监听请求)之间的权衡。

当猝发速率超出阈值(框633,“是”)时,用于原子性缓存616的控制逻辑可启用猝发缓冲器缓存并启用新缓存行从猝发缓冲器缓存的分配(框635)。在该操作模式中,用于原子性缓存616的缓存控制逻辑可调整缓存替换算法以解除脏驱逐和写回的优先级(或禁用脏驱逐和写回),以保存原本会由通过经修改的缓存行从原子性缓存616的驱逐导致的写回而消耗的CXL带宽。由主机监听引起的驱逐照常继续以防止主机处理器操作的停止。然而,将在猝发缓冲器缓存625中分配空间直到猝发速率跌到低于阈值或猝发缓冲器缓存625变为满,而不是执行针对新原子性操作的缓存行替换。一旦猝发缓冲器缓存625变为满,缓存行驱逐就能以标准速率恢复。然而,由猝发缓冲器缓存625提供的附加空间将保持可用,直到原子性猝发速率跌到低于阈值。当原子性猝发速率跌倒低于阈值时,存储在猝发缓冲器缓存625中的缓存行可被驱逐到主机以为下一原子性猝发作好准备。在一个实施例中,可结合新缓存行从猝发缓冲器缓存的分配来执行有限数量的脏驱逐和写回操作。驱逐与猝发缓冲器分配之间的平衡可基于原子性猝发速率动态地调整。

动态缓存满阈值

在一个实施例中,使用动态缓存满阈值来调节原子性缓存616的性能。执行常规缓存操作来启用对由处理资源执行的存储器操作的等待时间或带宽改善。相应地,用于那些缓存的缓存替换策略尝试使缓存重用最大化。相比之下,执行原子性缓存操作以启用系统级原子性,在系统级原子性下,设备利用硬件一致性语义在主机存储器上执行原子性操作,或在设备本地的存储器上原位地(in-place)在其他非设备上执行原子性操作。因此,针对替换原子性缓存中的缓存行的考量与在常规缓存中不同。例如,原子性操作可以是时效性操作或者可以是非时效性操作,在时效性操作中,预期原子性的目标由设备重用,在非时效性操作中,数据不太可能被重用。将数据保留在将不由设备重用的原子性缓存616中益处很少。此外,将要求主机处理器将监听请求发送到设备,以确定数据的当前值,或重新获得数据的所有权以进行主机处理器修改。相应地,仅针对缓存重用进行优化会由于通过CXL链路603执行的监听操作而引入的等待时间而负面地影响CPU性能。然而,如果缓存访问模式表明高时效性程度,则保留缓存行达较长的时间段可能是有益的。

图7A-图7B图示根据实施例的用于改善对与对非设备存储器的原子性操作相关联的数据的设备侧缓存操作的效率的方法700、710。图7A图示用于提升通过CXL的原子性效率的动态缓存分配的方法700。图7B图示使用可变缓存满阈值和猝发缓冲器缓存的用于非设备存储器的原子性缓存操作的方法710。方法700、710由图6A-图6B的原子性缓存616的控制逻辑执行。

执行方法700以平衡原子性缓存616中的缓存行的延迟驱逐与在执行原子性操作后缓存行的立即驱逐之间的权衡。在一个实施例中,该权衡通过调整被用于确定在非猝发场景下何时驱逐缓存行的缓存满阈值来执行。例如,尽管存在被预留以被用作猝发缓冲器缓存625的任何空间,但是缓存满阈值可被设置为小于缓存的最大容量。如果阈值为50%,则HDCOH 615中的缓存控制逻辑将不从原子性缓存616驱逐任何缓存行,直到该缓存50%被占据。一旦缓存满阈值达到,缓存行就从原子性缓存616被驱逐,以为针对原子性操作的传入读取腾出空间。

如图7A中所示,方法700包括:跟踪对原子性缓存中的行的被驱逐的命中率(框702);以及跟踪对原子性缓存中的行的主机监听命中率(框704)。原子性缓存616配置成用于跟踪内容可寻址存储器(content addressable memory,CAM)命中,以使缓存行无效,从而维持被驱逐的命中度量。被驱逐的命中指示先前被存储在缓存行中的数据针对新原子性请求会是命中,其指示设备会重用存储在缓存中的该数据。替代地,在另一原子性操作可对那个地址执行之前,设备必须重新从主机设备请求数据的所有权。因此,如果缓存行未被驱逐,则原子性执行带宽会被改善。然而,对缓存行的监听命中指示主机要么希望读取经缓存的数据的当前值(例如,CXL.cache SnpData或SnpCur请求),要么希望向数据写入(例如,CXL.cache SnpInv请求)。CXL监听引入对主机处理器的操作的等待时间,并且如果保存数据的缓存行已被驱逐且被写回到主机,则CXL监听可被避免。相应地,方法700包括:缓存控制逻辑基于被驱逐的命中率增加缓存满阈值(框706),以及基于主机监听命中率减小缓存满阈值(框708)。在各实施例中,在所确定的时间间隔后或在其他所确定的窗口的期满时可调整缓存满阈值。

如图7B中所示,方法700包括:用于原子性缓存的缓存控制逻辑初始化用于对非设备存储器执行的原子性操作的缓存(框712)。缓存控制逻辑可基于原子性缓存度量调整用于原子性缓存的缓存满阈值(框714),这可根据图7A的方法700来执行。此外,当原子性猝发速率高于猝发阈值时,缓存控制逻辑可抑制缓存驱逐,并从猝发缓冲器缓存分配缓存行(框716),这可根据图6C的方法630来执行。当原子性猝发速率跌到低于猝发阈值时,缓存控制逻辑随后可从猝发缓冲器缓存驱逐缓存行(框718)。

根据上述公开,提供了一种装置,诸如,图形处理器设备,其包括:半导体衬底;多个存储器管芯;并行处理器管芯的集合,安装在半导体衬底上;本地存储器互连,用于将并行处理器管芯的集合连接到多个存储器管芯,本地存储器互连包括多个存储器接口,每个存储器接口与多个存储器管芯中的存储器管芯相关联。并行处理器管芯的集合中的至少一个并行处理器管芯包括互连组织,该互连组织,并且输入/输出接口与该互连组织耦合。在一个实施例中,并行处理器管芯的集合包括图形处理器计算引擎和一个或多个媒体引擎。图形处理器计算引擎和一个或多个媒体引擎配置成用于执行指令以执行对多个存储器管芯和对存储器的一个或多个原子性读取-修改-写入操作,该存储器在装置外部并经由输入/输出接口连接到图形处理资源。

在进一步的实施例中,提供了片上系统集成电路(SoC),该SoC包括:有源基础管芯,包括第一缓存存储器;第一管芯,安装在有源基础管芯上并与有源基础管芯耦合;以及第二管芯,安装在有源基础管芯上并与有源基础管芯和第一管芯耦合。第一管芯包括互连组织、输入/输出接口和原子性操作处置器。第二管芯包括图形处理元件的阵列以及至有源基础管芯的第一缓存存储器的接口。图形处理元件中的至少一个配置成用于经由原子性操作处置器执行对存储器设备的原子性操作。

在一个实施例中,第一管芯包括配置成用于执行对存储器设备的原子性操作的媒体引擎。在一个实施例中,媒体引擎被包括在与第一管芯耦合的第三管芯内。在一个实施例中,存储器设备经由第一管芯与第二管芯耦合。在一个实施例中,存储器设备是被包括在SoC上的第一存储器设备,并且第一缓存存储器配置成用于缓存对第一存储器设备的访问。在一个实施例中,存储器设备是与主机处理器耦合且能够经由输入/输出接口访问的第二存储器设备。

SoC还可包括第二缓存存储器,用于对与对第二存储器设备执行的原子性操作相关联的数据进行缓存。第二缓存存储器可与猝发缓冲器缓存相关联,该猝发缓冲器缓存在传入原子性请求的速率超出猝发速率阈值时被启用。在一个实施例中,响应于确定了传入原子性请求的速率超出猝发速率阈值,与第二缓存存储器相关联的控制电路配置成用于调整与第二缓存存储器相关联的缓存替换策略,以解除对经修改的缓存行的驱逐的优先级,并且分配猝发缓冲器缓存中的缓存行以存储用于传入原子性请求的数据。在一个实施例中,猝发缓冲器缓存是第二缓存存储器的预留部分。

在一个实施例中,对存储器设备的原子性操作是读取-修改-写入操作,并且原子性操作处置器配置成用于:响应于来自图形处理元件中的至少一个图形处理元件的请求,执行读取以获得所有权操作以获得与原子性操作相关联的数据的一致性所有权,其中,图形处理元件中的该至少一个图形处理元件配置成用于修改与原子性操作相关联的数据,并且原子性操作处置器配置成用于执行写入操作以将经修改的数据写入到存储器设备。

在一些方面,本文中描述的技术关于在片上系统集成电路(SoC)上执行的方法,该SoC包括配置成用于执行图形操作和媒体操作的处理资源。该方法包括:在SoC上接收访问存储器地址的存储器访问请求;根据与存储器访问请求相关联的访问类型和与存储器地址相关联的存储器设备,在SoC内路由存储器访问请求,其中,路由存储器访问请求包括:响应于确定了访问类型是原子性的,将存储器访问请求路由到SoC的原子性处置器,其中,原子性处置器用于跟踪由处理资源执行的原子性存储器访问的完成;以及响应于确定了访问类型是非原子性的且存储器设备是与主机处理器耦合的系统存储器设备,将存储器访问请求路由到SoC的系统接口,其中,主机处理器能够经由系统接口访问,并且系统接口将SoC耦合到主机互连总线。

在一个实施例中,访问类型是原子性的,存储器设备是系统存储器设备,并且该方法进一步包括:经由原子性处置器将对一致性所有权的请求传送到系统存储器设备,该请求经由系统接口被传送;经由系统接口接收对于对一致性所有权的请求的响应;将响应于对一致性所有权的请求而经由系统接口接收的数据传送到存储器访问请求的源;以及经由存储器接口将从存储器访问请求的源接收的经修改的数据传送到系统存储器设备。

在一个实施例中,访问类型是原子性的,存储器设备是系统存储器设备,并且该方法进一步包括:经由原子性处置器将对一致性所有权的请求传送到SoC的一致性管理器,该一致性管理器用于管理针对由SoC对系统存储器的访问的一致性;由一致性管理器确定用于存储器地址的数据是否被缓存在SoC的原子性缓存内;响应于确定了用于存储器地址的数据被缓存在原子性缓存的有效缓存行内,由一致性管理器执行缓存命中操作;以及否则,由一致性管理器执行缓存未命中操作。

在一个实施例中,该方法进一步包括:经由原子性处置器创建用于跟踪存储器访问请求的完成的跟踪条目;接收用于指示完成了将经修改的数据写入到系统存储器设备的完成通知;以及经由原子性处置器删除跟踪条目。在一个实施例中,缓存命中操作包括:将被存储在原子性缓存的有效缓存行内的数据返回到原子性处置器。在一个实施例中,缓存未命中操作包括:经由一致性管理器将对一致性所有权的请求传送到系统存储器设备,该请求经由系统接口被传送;经由系统接口接收对于对一致性所有权的响应;

将响应于对一致性所有权的请求而经由系统接口接收的数据存储到原子性缓存;以及将该数据传送到原子性处置器。

在一个实施例中,访问类型是原子性的,存储器设备是本地存储器设备,并且该方法进一步包括:经由原子性处置器将对一致性所有权的请求传送到SoC的协议转译器电路;以及经由SoC的协议转译器电路将对一致性所有权的请求从第一互连协议转译为第二互连协议。第一互连协议与原子性处置器相关联,并且第二协议与SoC的本地存储器缓存相关联,其中,本地存储器缓存配置成用于缓存对本地存储器设备的存储器访问。

在一个实施例中,原子性处置器驻留在SoC的第一管芯上,本地存储器缓存驻留在SoC的有源基础管芯上,并且第一管芯被安装在有源基础管芯上并与有源基础管芯耦合。

一个实施例提供一种数据处理系统,其包括:系统互连,用于促进与主机处理器设备的通信,主机处理器设备与主机存储器耦合;以及片上系统集成电路(SoC),与系统互连耦合。该SoC包括:有源基础管芯,包括第一缓存存储器;第一管芯,安装在有源基础管芯上且与有源基础管芯耦合,该第一管芯包括互连组织、输入/输出接口、原子性操作处置器、以及至设备存储器的存储器接口;以及第二管芯,安装在有源基础管芯上,并与有源基础管芯和第一管芯耦合。第二管芯包括图形处理元件的阵列以及至有源基础管芯的第一缓存存储器的接口。图形处理元件中的至少一个配置成用于经由原子性操作处置器执行对主机存储器的第一原子性操作和对设备存储器的第二原子性操作。在一个实施例中,第一管芯包括媒体引擎,该媒体引擎配置成用于执行对主机存储器的第三原子性操作和对设备存储器的第四原子性操作。在一个实施例中,媒体引擎替代地被包括在与第一管芯耦合的第三管芯上。

可也可根据上文描述的技术提供其他实施例,并且可使用下文描述的CPU和GPU系统实现其他实施例。

CPU和GPU系统体系结构

图8是根据实施例的处理系统800的框图。处理系统800可在以下各项中被使用:单处理器台式机系统、多处理器工作站系统、或具有大量处理器802或处理器核心807的服务器系统。在一个实施例中,处理系统800是被并入在片上系统(system-on-a-chip,SoC)集成电路内的处理平台,该片上系统(SoC)集成电路用于在移动设备、手持式设备或嵌入式设备中使用,诸如,用于在具有至局域网或广域网的有线或无线连接性的物联网(Internet-of-things,IoT)设备内使用。

在一个实施例中,处理系统800可包括以下各项,可与以下各项耦合,或可集成在以下各项内:基于服务器的游戏平台、包括游戏和媒体控制台的游戏控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台。在一些实施例中,处理系统800是移动电话、智能电话、平板计算设备或移动互联网连接的设备(诸如,具有低内部存储容量的膝上型电脑)的部分。处理系统800也可包括以下各项,与以下各项耦合,或被集成在以下各项内:可穿戴设备,诸如,智能手表可穿戴设备;智能眼镜或服装,其利用增强现实(augmented reality,AR)或虚拟现实(virtual reality,VR)特征来增强,以提供视觉、音频或触觉输出来补充现实世界视觉、音频或触觉体验或以其他方式提供文本、音频、图形、视频、全息图像或视频、或触觉反馈;其他增强现实(AR)设备;或其他虚拟现实(VR)设备。在一些实施例中,处理系统800包括电视机或机顶盒设备,或者是电视机或机顶盒设备的部分。在一个实施例中,处理系统800可包括自动驾驶交通工具,与自动驾驶交通工具耦合,或集成在自动驾驶交通工具内,该自动驾驶交通工具诸如,公共汽车、拖拉机拖车、汽车、电机或电力循环、飞机或滑翔机(或其任何组合)。自动驾驶交通工具可使用处理系统800来处理在该交通工具周围感测到的环境。

在一些实施例中,一个或多个处理器802各自都包括用于处理指令的一个或多个处理器核心807,这些指令当被执行时,执行用于系统或用户软件的操作。在一些实施例中,一个或多个处理器核心807中的至少一个被配置成用于处理特定的指令集809。在一些实施例中,指令集809可促进复杂指令集计算(Complex Instruction Set Computing,CISC)、精简指令集计算(Reduced Instruction Set Computing,RISC)或经由超长指令字(VeryLong Instruction Word,VLIW)的计算。一个或多个处理器核心807可以处理不同的指令集809,不同的指令集809可包括用于促进对其他指令集的仿真的指令。处理器核心807还可包括其他处理设备,诸如,数字信号处理器(Digital Signal Processor,DSP)。

在一些实施例中,处理器802包括缓存存储器804。取决于体系结构,处理器802可具有单个内部缓存或多级的内部缓存。在一些实施例中,缓存存储器在处理器802的各种部件之间被共享。在一些实施例中,处理器802也使用外部缓存(例如,第三级(L3)缓存或末级缓存(LLC))(未示出),可使用已知的缓存一致性技术在处理器核心807之间共享该外部缓存。寄存器堆806可附加地被包括在处理器802中,并且可包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器802的设计。

在一些实施例中,一个或多个处理器802与一个或多个接口总线810耦合,以在处理器802与处理系统800中的其他部件之间传输通信信号,诸如,地址、数据、或控制信号。在一个实施例中,接口总线810可以是处理器总线,诸如,直接媒体接口(Direct MediaInterface,DMI)总线的某个版本。然而,处理器总线不限于DMI总线,并且可包括一个或多个外围部件互连总线(例如,PCI、PCI快速(PCI express))、存储器总线、或其他类型的接口总线。在一个实施例中,(一个或多个)处理器802包括集成存储器控制器816和平台控制器中枢830。存储器控制器816促进存储器设备与处理系统800的其他部件之间的通信,而平台控制器中枢(platform controller hub,PCH)830提供经由本地I/O总线至I/O设备的连接。

存储器设备820可以是动态随机存取存储器(dyanmic random-access memory,DRAM)设备、静态随机存取存储器(static random-access memory,SRAM)设备、闪存设备、相变存储器设备、或具有合适的性能以充当进程存储器的某个其他存储器设备。在一个实施例中,存储器设备820可以作为用于处理系统800的系统存储器来操作,以存储数据822和指令821用于在一个或多个处理器802执行应用或进程时使用。存储器控制器816也与可选的外部图形处理器818耦合,该可选的外部图形处理器818可与处理器802中的一个或多个图形处理器808通信以执行图形操作和媒体操作。在一些实施例中,可由加速器812辅助图形操作、媒体操作和/或计算操作,该加速器812是可被配置成用于执行专业的图形操作、媒体操作或计算操作的集合的协处理器。例如,在一个实施例中,加速器812是用于优化机器学习或计算操作的矩阵乘法加速器。在一个实施例中,加速器812是光线追踪加速器,该光线追踪加速器可用于与图形处理器808协作地执行光线追踪操作。在一个实施例中,可替代加速器812使用外部加速器819,或可与加速器812协作地使用外部加速器819。

在一些实施例中,显示设备811能够接至(一个或多个)处理器802。显示设备811可以是以下各项中的一项或多项:内部显示设备,如在移动电子设备或膝上型设备中;或经由显示接口(例如,显示端口等)附接的外部显示设备。在一个实施例中,显示设备811可以是头戴式显示器(head mounted display,HMD),诸如,用于在虚拟现实(VR)应用或增强现实(AR)应用中使用的立体显示设备。

在一些实施例中,平台控制器中枢830使外围设备能够经由高速I/O总线而连接至存储器设备820和处理器802。I/O外围设备包括但不限于音频控制器846、网络控制器834、固件接口828、无线收发器826、触摸传感器825、数据存储设备824(例如,非易失性存储器、易失性存器、硬盘驱动器、闪存、NAND、3D NAND、3D XPoint等)。数据存储设备824可以经由存储接口(例如,SATA)或经由外围总线(诸如,外围部件互连总线(例如,PCI、PCI快速))连接。触摸传感器825可以包括触摸屏传感器、压力传感器、或指纹传感器。无线收发器826可以是Wi-Fi收发器、蓝牙收发器、或移动网络收发器,该移动网络收发器诸如3G、4G、5G或长期演进(LTE)收发器。固件接口828启用与系统固件的通信,并且可以例如是统一可扩展固件接口(unified extensible firmware interface,UEFI)。网络控制器834可启用至有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线810耦合。在一个实施例中,音频控制器846是多通道高清音频控制器。在一个实施例中,处理系统800包括用于将传统(例如,个人系统2(PS/2))设备耦合至系统的可选的传统I/O控制器840。平台控制器中枢830还能够连接到一个或多个通用串行总线(Universal Serial Bus,USB)控制器842连接输入设备,诸如,键盘和鼠标843组合、相机844、或其他USB输入设备。

将会明白,所示的处理系统800是示例性的而非限制性的,因为也可以使用以不同方式配置的其他类型的数据处理系统。例如,存储器控制器816和平台控制器中枢830的实例可以集成到分立的外部图形处理器中,该分立的外部图形处理器诸如外部图形处理器818。在一个实施例中,平台控制器中枢830和/或存储器控制器816可以在一个或多个处理器802外部。例如,处理系统800可包括外部存储器控制器816和平台控制器中枢830,该外部存储器控制器816和平台控制器中枢830可以被配置为在与(一个或多个)处理器802通信的系统芯片组内的存储器控制器中枢和外围控制器中枢。

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

数据中心能够利用支持多个其他网络体系结构的单个网络体系结构(“组织”),多个其他网络体系结构包括以太网和全方位路径。橇板可经由光纤被耦合至交换机,该光纤相比典型的双绞线布线提供更高的带宽和更低的等待时间。由于高带宽、低等待时间的互连和网络体系结构,数据中心在使用中可集中在物理上分散的诸如存储器、加速器(例如,GPU、图形加速器、FPGA、ASIC、神经网络和/或人工智能加速器等)和数据存储驱动器之类的资源,并且根据需要将它们提供给计算资源(例如,处理器),从而使计算资源能够就好像被集中的资源在本地那样访问这些被集中的资源。

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

图9A-图9B图示由本文中描述的实施例提供的计算系统和图形处理器。图9A-图9B的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的那些元件可以与本文中其他地方描述的方式类似的任何方式操作或运行,但不限于此。

图9A是处理器900的实施例的框图,该处理器900具有一个或多个处理器核心902A-902N、一个或多个集成存储器控制器914以及集成图形处理器908。处理器900包括至少一个核心902A,并且可附加地包括附加核心,直到并且包括附加核心902N,如由虚线框所表示。处理器核心902A-902N中的每一个包括一个或多个内部缓存单元904A-904N。在一些实施例中,每个处理器核心也具有对一个或多个共享缓存单元906的访问权。内部缓存单元904A-904N和共享缓存单元906表示处理器900内的高速缓存存储器层次体系。缓存存储器层次体系可包括每个处理器核心内的至少一个级别的指令和数据缓存以及一个或多个级别的共享的中级缓存,诸如第二级(L2)、第三级(L3)、第四级(L4)、或其他级别的缓存,其中,在外部存储器之前的最高级别的缓存被分类为LLC。在一些实施例中,缓存一致性逻辑维持各缓存单元906与904A-904N之间的一致性。

在一些实施例中,处理器900还可包括一个或多个总线控制器单元的集合916和系统代理核心910。一个或多个总线控制器单元916管理外围总线的集合,诸如,一个或多个PCI总线或PCI快速总线。系统代理核心910提供对各处理器部件的管理功能。在一些实施例中,系统代理核心910包括用于管理对各种外部存储器设备(未示出)的访问的一个或多个集成存储器控制器914。

在一些实施例中,处理器核心902A-902N中的一个或多个处理器核心包括对同步多线程的支持。在此类实施例中,系统代理核心910包括用于在多线程处理期间协调并操作核心902A-902N的部件。系统代理核心910可附加地包括功率控制单元(power controlunit,PCU),该功率控制单元(PCU)包括用于调节处理器核心902A-902N和图形处理器908的功率状态的逻辑和部件。

在一些实施例中,处理器900附加地包括用于执行图形处理操作的图形处理器908。在一些实施例中,图形处理器908与共享缓存单元的集合906以及系统代理核心910耦合,该系统代理核心910包括一个或多个集成存储器控制器914。在一些实施例中,系统代理核心910还包括用于将图形处理器输出驱动到一个或多个经耦合的显示器的显示控制器911。在一些实施例中,显示控制器911还可以是经由至少一个互连与图形处理器耦合的分开的模块,或者可以集成在图形处理器908内。

在一些实施例中,基于环的互连912用于耦合处理器900的内部部件。然而,可以使用替代的互连单元,诸如,点到点互连、交换式互连、或其他技术,包括本领域中公知的技术。在一些实施例中,图形处理器908经由I/O链路913而与基于环的互连912耦合。

示例性I/O链路913表示各种各样的I/O互连中的至少一者,这些I/O互连包括促进各种处理器部件与存储器模块918(诸如,eDRAM或高带宽存储器(high-bandwidth memory,HBM)存储器模块)之间的通信的封装上I/O互连。在一个实施例中,存储器模块918可以是eDRAM模块,并且处理器核心902A-902N和图形处理器908中的每一个能够将存储器模块918用作共享LLLC。在一个实施例中,存储器模块918是HBM存储器模块,该HBM存储器模块能够被用作主存储器模块或被用作分层式或混合式存储器系统的部分,该分层式或混合式存储器系统还包括双倍数据速率同步DRAM,诸如,DDR5SDRAM和/或持久存储器(persistentmemory,PMem)。处理器900可包括I/O链路913和存储器模块918的多个实例。

在一些实施例中,处理器核心902A-902N是执行相同指令集体系结构的同构核心。在另一实施例中,处理器核心902A-902N在指令集体系结构(ISA)方面是异构的,其中,处理器核心902A-902N中的一个或多个执行第一指令集,而其他核心中的至少一个执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核心902A-902N在微体系结构方面是异构的,其中,具有相对较高功耗的一个或多个核心与具有较低功耗的一个或多个功率核心耦合。在一个实施例中,处理器核心902A-902N在计算能力方面是异构的。此外,处理器900可在一个或多个芯片上实现,或者被实现为除其他部件之外还具有所图示的部件的SoC(system-on-a-chip)集成电路。

图9B是根据本文中描述的一些实施例的图形处理器核心块919的硬件逻辑的框图。图形处理器核心块919是图形处理器的一个分区的示例。如本文中所描述的图形处理器可包括基于目标功率和性能包络的多个图形核心块。每个图形处理器核心块919可包括与多个执行核921A-921F耦合的功能块930,多个执行核921A-921F包括固定功能逻辑和通用可编程逻辑的模块化的块。图形处理器核心块919还包括能够由所有的执行核心921A-921F、栅格化器逻辑937和附加的固定功能逻辑938访问的共享/缓存存储器936。

在一些实施例中,功能块930包括能够由图形处理器核心块919中的所有执行核心共享的几何/固定功能管线931。在各实施例中,几何/固定功能管线931包括3D几何管线视频前端单元、线程生成器和全局线程调遣器以及统一返回缓冲器管理器,该统一返回缓冲器管理器管理统一返回缓冲器。在一个实施例中,功能块930还包括图形SoC接口932、图形微控制器933和媒体管线934。图形SoC接口932提供图形处理器核心块919与图形处理器或计算加速器SoC内的其他核心块之间的接口。图形微控制器933是可被配置成用于管理图形处理器核心块919的各种功能的可编程子处理器,这些功能包括线程调遣、调度和抢占。媒体管线934包括用于促进多媒体数据(包括图像和视频数据)的解码、编码、预处理和/或后处理的逻辑。媒体管线934经由对执行核心921A-921F内的计算或采样逻辑的请求来实现媒体操作。一个或多个像素后端935也可被包括在功能块930内。像素后端935包括用于存储像素颜色值的缓冲存储器,并且能够执行对经渲染的像素数据的混合操作和无损颜色压缩。

在一个实施例中,SoC接口932使图形处理器核心块919能够与SoC或经由外围接口与SoC耦合的系统主机CPU内的通用应用处理器核心(例如,CPU)和/或其他部件进行通信。SoC接口932还启用与片外存储器层次体系元件的通信,片外存储器层次体系元件诸如,共享的最后一级缓存存储器、系统RAM、和/或嵌入式片上或封装上DRAM。SoC接口932还能够启用与SoC内的诸如相机成像管线之类的固定功能设备的通信,并且启用全局存储器原子性的使用和/或实现全局存储器原子性,该全局存储器原子性可在图形处理器核心块919与SoC内的CPU之间被共享。SoC接口932还可实现针对图形处理器核心块919的功率管理控制,并且启用图形处理器核心块919的时钟域与SoC内的其他时钟域之间的接口。在一个实施例中,SoC接口932使得能够从命令流转化器和全局线程调遣器接收命令缓冲器,该命令流转化器和全局线程调遣器被配置成用于将命令和指令提供给图形处理器内的一个或多个图形核心中的每一个图形核心。命令和指令在媒体操作要被执行时能够被调遣到媒体管线934,并且在图形处理操作要被执行时能够被调遣到几何和固定功能管线931。当计算操作要被执行时,计算调遣逻辑能够将命令调遣到执行核心921A-921F,从而绕过几何流水线和媒体流水线。

图形微控制器933可被配置成用于执行针对图形处理器核心块919的各种调度任务和管理任务。在一个实施例中,图形微控制器933可对执行核心921A-921F内的执行单元(EU)阵列922A-922F、924A-924F内的各图形并行引擎执行图形和/或计算工作负载调度。在该调度模型中,在包括图形处理器核心块919的SoC的CPU核心上执行的主机软件能够经由多个图形处理器门铃(doorbell)中的一个图形处理器门铃来提交工作负载,这调用了对适当的图形引擎的调度操作。调度操作包括:确定接下来要运行哪个工作负载,将工作负载提交到命令流转化器,抢占在引擎上运行的现有工作负载,监测工作负载的进度,以及当工作负载完成时通知主机软件。在一个实施例中,图形微控制器933还能够促进图形处理器核心块919的低功率或空闲状态,从而向图形处理器核心块919提供独立于操作系统和/或系统上的图形驱动器软件跨低功率状态转变来保存和恢复图形处理器核心块919内的寄存器的能力。

图形处理器核心块919可具有多于或少于所图示的执行核心921A-921F,多达N个模块化执行核心。对于N个执行核心的每个集合,图形处理器核心块919还可包括:共享/缓存存储器936,其可被配置为共享存储器或缓存存储器;栅格化器逻辑937;以及附加的固定功能逻辑938,用于加速各种图形和计算处理操作。

在每个执行核心921A-921F内的是可用于响应于由图形管线、媒体管线、或着色器程序作出的请求而执行图形操作、媒体操作和计算操作的执行资源的集合。图形执行核心921A-921F包括多个向量引擎922A-922F、924A-924F、矩阵加速单元923A-923F、925A-925D、缓存/共享本地存储器(shared local memory,SLM)、采样器926A-926F、以及光线追踪单元927A-927F。

向量引擎922A-922F、924A-924F是能够执行浮点和整数/定点逻辑操作以服务于图形操作、媒体操作或计算操作(包括图形程序、媒体程序或计算/GPGPU程序)的通用图形处理单元。向量引擎922A-922F、924A-924F能够使用SIMD执行模式、SIMT执行模式或SIMT+SIMD执行模式、以可变向量宽度进行操作。矩阵加速单元923A-923F、925A-925D包括矩阵-矩阵和矩阵-向量加速逻辑,该矩阵-矩阵和矩阵-向量加速逻辑改善矩阵操作、尤其是用于机器学习的低精度和混合精度(例如,INT8、FP16)矩阵操作的性能。在一个实施例中,矩阵加速单元923A-923F、925A-925D中的每一个包括能够对矩阵元素执行并发的矩阵乘法或点积操作的处理元件的一个或多个脉动阵列。

采样器925A-925F能够将媒体数据或纹理数据读入存储器,并且能够基于经配置的采样器状态和正被读取的纹理/媒体格式以不同方式对数据采样。在向量引擎922A-922F、924A-924F或矩阵加速单元923A-923F、925A-925D上执行的线程能够利用每个执行核心内的缓存/SLM 928A-928F。缓存/SLM928A-928F能够被配置为在相应的执行核心921A-921F中的每个执行核心的本地的缓存存储器或共享存储器的池。执行核心921A-921F内的光线追踪单元927A-927F包括光线遍历/相交电路,该光线遍历/相交电路用于使用包围体层次体系(bounding volume hierarchy,BVH)来执行光线遍历并标识封围在BVH容体内的光线与基元之间的相交。在一个实施例中,光线追踪单元927A-927F包括用于执行深度测试和剔除(例如,使用深度缓冲器或类似布置)的电路。在一个实现方式中,光线追踪单元927A-927F与图像降噪协作地执行遍历和相交操作,该图像降噪的至少部分可使用相关联的矩阵加速单元923A-923F、925A-925F来执行。

图10A是图示出本文中描述的处理器的示例性有序管线以及示例性寄存器重命名、乱序发出/执行管线两者的框图。图10B是图示出用于处理器核心的体系结构的框图,该处理器核心能够被配置为有序架构核心或寄存器重命名、乱序发出/执行体系结构核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。

如图10A中所示,处理器管线1000包括取得阶段1002、可选的长度解码阶段1004、解码阶段1006、可选的分配阶段1008、可选的重命名阶段1010、调度(也称为调遣或发出)阶段1012、可选的寄存器读取/存储器读取阶段1014、执行阶段1016、写回/存储器写入阶段1018、可选的异常处置阶段1022、以及可选的提交阶段1024。在这些处理器管线阶段的每一者中可以执行一个或多个操作。例如,在取得阶段1002期间,从指令存储器取得一个或多个指令,在解码阶段1006期间,可以对取得的一个或多个指令进行解码,可以生成使用转发寄存器端口的地址(例如,加载存储单元(load store unit,LSU)地址),并且可以执行分支转发(例如,立即数偏移或者链接寄存器(link register,LR))。在一种实施例中,解码阶段1006和寄存器读取/存储器读取阶段1014可以被组合到一个管线阶段中。在一种实施例中,在执行阶段1016期间,可以执行经解码的指令,可以执行到高级微控制器总线(AdvancedMicrocontroller Bus,AMB)接口的LSU地址/数据管线化,可以执行乘法和加法操作,可以执行具有分支结果的算术操作,等等。

如图10B中所示,处理器核心1090可包括耦合到执行引擎电路1050的前端单元电路1030,并且两者都耦合到存储器单元电路1070。处理器核心1090可以是图9A中的处理器核心902A-902N中的一个。处理器核心1090可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心、或者混合或替代性核心类型。作为另外一个选项,处理器核心1090可以是专用核心,例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心,等等。

前端单元电路1030可以包括分支预测单元电路1032,该分支预测单元电路耦合到指令缓存单元电路1034,该指令缓存单元电路耦合到指令转译后备缓冲器(translationlookaside buffer,TLB)1036,该指令TLB耦合到指令取得单元电路1038,该指令取得单元电路耦合到解码单元电路1040。在一种实施例中,指令缓存单元电路1034被包括在存储器单元电路1070中,而不是前端单元电路1030中。解码单元电路1040(或解码器)可以对指令解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。解码单元电路1040还可以包括地址生成单元电路(address generation unit,AGU,未示出)。在一种实施例中,AGU使用经转发的寄存器端口来生成LSU地址,并且可以进一步执行分支转发(例如,立即数偏移分支转发,LR寄存器分支转发,等等)。可以利用各种不同的机制来实现解码单元电路1040。适当机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(programmable logicarray,PLA)、微代码只读存储器(read only memory,ROM),等等。在一种实施例中,处理器核心1090包括微代码ROM(未示出)或其他介质,其存储用于某些宏指令的微代码(例如,在解码单元电路1040中或者以其他方式在前端单元电路1030内)。在一种实施例中,解码单元电路1040包括微操作(micro-op)或操作缓存(未示出),以保存/缓存在处理器管线1000的解码或其他阶段期间生成的经解码的操作、微标记或微操作。解码单元电路1040可以耦合到执行引擎单元电路1050中的重命名/分配器单元电路1052。

执行引擎电路1050包括重命名/分配器单元电路1052,其耦合到引退单元电路1054和一组一个或多个调度器电路1056。调度器电路1056代表任意数目个不同调度器,包括预留站、中央指令窗口,等等。在一些实施例中,(一个或多个)调度器电路1056可以包括算术逻辑单元(arithmetic logic unit,ALU)调度器/调度电路、ALU队列、地址生成单元(address generation unit,AGU)调度器/调度电路、AGU队列,等等。(一个或多个)调度器电路1056耦合到(一个或多个)物理寄存器堆电路1058。(一个或多个)物理寄存器堆电路1058的每一者代表一个或多个物理寄存器堆,这些物理寄存器堆中的不同物理寄存器堆存储一个或多个不同的数据类型,例如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,指令指针,即要执行的下一指令的地址),等等。在一种实施例中,(一个或多个)物理寄存器堆电路1058包括向量寄存器单元电路、写入掩码寄存器单元电路、以及标量寄存器单元电路。这些寄存器单元可以提供体系结构式向量寄存器、向量掩码寄存器、通用寄存器,等等。(一个或多个)物理寄存器堆电路1058被引退单元电路1054(也称为引退队列)重叠,以展示可以用来实现寄存器重命名和乱序执行的各种方式(例如,利用(一个或多个)重排序缓冲器(reorder buffer,ROB)和(一个或多个)引退寄存器堆;利用(一个或多个)未来的堆、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器堆;利用寄存器图谱和寄存器的池;等等)。引退单元电路1054和(一个或多个)物理寄存器堆电路1058耦合到(一个或多个)执行集群1060。(一个或多个)执行集群1060包括一组一个或多个执行单元电路1062和一组一个或多个存储器访问电路1064。执行单元电路1062可以对各种类型的数据(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行各种算术、逻辑、浮点或其他类型的操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集合的若干个执行单元或执行单元电路,但其他实施例可以只包括一个执行单元电路或者全部执行所有功能的多个执行单元/执行单元电路。(一个或多个)调度器电路1056、(一个或多个)物理寄存器堆电路1058以及(一个或多个)执行集群1060被示为可能是多个,因为某些实施例为某些类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线和/或存储器访问管线,它们各自具有其自己的调度器电路、(一个或多个)物理寄存器堆单元电路和/或执行集群——并且在单独的存储器访问管线的情况下,所实现的某些实施例中只有该管线的执行集群具有(一个或多个)存储器访问单元电路1064)。还应当理解,在使用分开的管线的情况下,这些管线中的一个或多个可以是乱序发出/执行,而其余是有序的。

在一些实施例中,执行引擎电路1050可以执行到高级微控制器总线(AMB)接口(未示出)的加载存储单元(LSU)地址/数据管线化,以及地址阶段和写回、数据阶段加载、存储、以及分支。

一组存储器访问电路1064耦合到存储器单元电路1070,该存储器单元电路包括数据TLB单元电路1072,该数据TLB电路耦合到数据缓存电路1074,该数据缓存电路耦合到第2级(L2)缓存电路1076。在一个示例性实施例中,存储器访问电路1064可以包括加载单元电路、存储地址单元电路、以及存储数据单元电路,它们中的每一者耦合到存储器单元电路1070中的数据TLB电路1072。指令缓存电路1034进一步耦合到存储器单元电路1070中的第2级(L2)缓存电路1076。在一种实施例中,指令缓存电路1034和数据缓存电路1074被组合成L2缓存电路1076、第3级(L3)缓存单元电路(未示出)和/或主存储器中的单个指令和数据缓存(未示出)。L2缓存电路1076耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。

处理器核心1090可以支持一个或多个指令集(例如,x86指令集(带有已随着更新版本添加的一些扩展);MIPS指令集;ARM指令集(带有可选的额外扩展,例如NEON)),该指令集包括本文描述的(一个或多个)指令。在一种实施例中,处理器核心1090包括支持紧缩数据指令集扩展(例如,AVX1、AVX2、AVX512)的逻辑,从而允许利用紧缩数据类型或向量数据类型来执行被许多多媒体应用、高性能计算应用(包括同态加密应用)使用的操作。

图10B的处理器核心1090能够按如下方式实现图10A的处理器管线1000:1)指令取得电路1038执行取得阶段1002和长度解码阶段1004;2)指令解码单元电路1040执行解码阶段1006;3)重命名/分配器单元电路1052执行分配阶段1008和重命名阶段1010;4)(一个或多个)调度器单元电路1056执行调度阶段1012;5)(一个或多个)物理寄存器堆单元电路1058和存储器单元电路1070执行寄存器读取/存储器读取阶段1014;执行集群1060执行执行阶段1016;6)存储器单元电路1070和(一个或多个)物理寄存器堆单元电路1058执行写回/存储器写入阶段1018;7)各单元(单元电路)可牵涉到异常处置阶段1022;以及8)引退单元电路1054和(一个或多个)物理寄存器堆单元电路1058执行提交阶段1024。

图11图示了根据本文中描述的实施例的执行单元电路的实施例,例如图10B的执行单元电路1062。如图所示,执行单元电路1062可以包括一个或多个ALU电路1101、向量/SIMD单元电路1103、加载/存储单元电路1105、分支/跳转单元电路1107、和/或FPU电路1109。在执行单元电路1062可配置成用于执行GPGPU并行计算操作的情况下,执行单元电路可附加地包括SIMT电路1111和/或矩阵加速电路1112。ALU电路1101执行整数算术和/或布尔操作。向量/SIMD单元电路1103对紧缩数据(例如SIMD/向量寄存器)执行向量/SIMD操作。加载/存储单元电路1105执行加载和存储指令,以将数据从存储器加载到寄存器中,或者从寄存器存储到存储器。加载/存储单元电路1105也可以生成地址。分支/跳转单元电路1107取决于指令而引起到某个存储器地址的分支或跳转。FPU电路1109执行浮点算术。在一些实施例中,SIMT电路1111使执行单元电路1062能够使用一个或多个ALU电路1101和/或向量/SIMD单元电路1103来执行SIMT GPGPU计算程序。在一些实施例中,执行单元电路1062包括矩阵加速电路1112,该矩阵加速电路1112包括图9B的矩阵加速单元923A-923F、925A-925D中的一个或多个的硬件逻辑。(一个或多个)执行单元电路1062的宽度取决于实施例而有所不同,并且可以在从16比特到4096比特的范围中。在一些实施例中,两个或更多个更小的执行单元被逻辑地组合以形成更大的执行单元(例如,两个128比特执行单元被逻辑组合以形成256比特执行单元)。

图12是根据一些实施例的寄存器体系结构1200的框图。如图所示,存在向量寄存器1210,其宽度从128比特到1024比特不等。在一些实施例中,向量寄存器1210在物理上是512比特的,并且取决于映射,只有一些低位比特被使用。例如,在一些实施例中,向量寄存器1210是512比特的ZMM寄存器:低位256比特被用于YMM寄存器,并且低位128比特被用于XMM寄存器。因此,存在寄存器的覆盖。在一些实施例中,向量长度字段在最大长度和一个或多个其他更短的长度之间作出选择,其中每个这种更短长度是前一长度的一半长度。标量操作是对ZMM/YMM/XMM寄存器中的最低阶数据元素位置执行的操作;更高阶数据元素位置或者被保持为与其在该指令之前相同,或者被归零,这取决于实施例。

在一些实施例中,寄存器体系结构1200包括写入掩码/谓词(predicate)寄存器1215。例如,在一些实施例中,有8个写入掩码/谓词寄存器(有时称为k0至k7),它们各自的大小是16比特、32比特、64比特或128比特。写入掩码/谓词寄存器1215可以允许合并(例如,允许目的地中的任何元素集合在任何操作的执行期间被保护免于更新)和/或归零(例如,归零向量掩码允许目的地中的任何元素集合在任何操作的执行期间被归零)。在一些实施例中,给定的写入掩码/谓词寄存器1215中的每个数据元素位置对应于目的地的数据元素位置。在其他实施例中,写入掩码/谓词寄存器1215是可缩放的,并且由针对给定向量元素的设定数目个使能比特组成(例如,给每个64比特向量元素8个使能比特)。

寄存器体系结构1200包括多个通用寄存器1225。这些寄存器可以是16比特、32比特、64比特等等,并能够被用于标量操作。在一些实施例中,这些寄存器用名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8至R15来称呼。

在一些实施例中,寄存器体系结构1200包括标量浮点寄存器1245,它被用于使用x87指令集扩展对32/64/80比特浮点数据进行标量浮点操作,或者作为MMX寄存器,来对64比特紧缩整数数据执行操作,以及针对在MMX和XMM寄存器之间执行的一些操作保存操作对象。

一个或多个标志寄存器1240(例如,EFLAGS,RFLAGS,等等)存储状态和控制信息,用于算术、比较和系统操作。例如,一个或多个标志寄存器1240可以存储条件代码信息,例如进位、奇偶性、辅助进位、零、符号、以及溢出。在一些实施例中,一个或多个标志寄存器1240被称为程序状态和控制寄存器。

段寄存器1220包含用于访问存储器的段点。在一些实施例中,这些寄存器由名称CS、DS、SS、ES、FS和GS来称呼。

机器特定寄存器(machine-specific register,MSR)1235对处理器性能进行控制和报告。大多数MSR 1235处置与系统有关的功能,并且是应用程序不可访问的。机器检查寄存器1260由用于对硬件错误进行检测和报告的控制、状态和错误报告MSR组成。

一个或多个指令指针寄存器1230存储指令指针值。(一个或多个)控制寄存器1255(例如,CR0-CR4)确定处理器的操作模式和当前在执行的任务的特性。调试寄存器1250控制并允许监视处理器或核心的调试操作。

存储器管理寄存器1265指定用于保护模式存储器管理中的数据结构的位置。这些寄存器可以包括GDTR、IDTR、任务寄存器、以及LDTR寄存器。

替代性实施例使用更宽或更窄的寄存器,并且还可以使用更多、更少或不同的寄存器堆和寄存器。

示例性指令格式

可以按不同的格式来实现本文描述的(一个或多个)指令。此外,下文详述了示例性系统、体系结构和管线。(一个或多个)指令的实施例可以在这些系统、体系结构和管线上被执行,但不限于详述的那些。

图13图示了根据实施例的指令格式的实施例。如图所示,指令可以包括多个成分,这些成分包括但不限于用于以下项的一个或多个字段:一个或多个前缀1301、操作码1303、寻址信息1305(例如,寄存器标识符、存储器寻址信息,等等)、位移值1307、和/或立即数1309。注意,一些指令利用了该格式的一些或所有字段,而其他指令可能只使用操作码1303的字段。在一些实施例中,图示的顺序是这些字段要被编码的顺序,然而应当明白,在其他实施例中,这些字段可以被按另外的顺序来编码、被组合,等等。

(一个或多个)前缀字段1301在被使用时对指令进行修改。在一些实施例中,一个或多个前缀被用于重复字符串指令(例如,0xF0、0xF2、0xF3,等等)、提供节超控(sectionoverride)(例如,0x2E、0x36、0x3E、0x26、0x64、0x65、0x2E、0x3E,等等)、执行总线锁定操作、和/或改变操作对象(例如,0x66)和地址大小(例如,0x67)。某些指令要求强制性的前缀(例如,0x66、0xF2、0xF3,等等)。这些前缀中的某些可以被认为是“传统”前缀。其他前缀(本文详述了其一个或多个示例)指示出和/或提供了进一步的能力,例如指定特定的寄存器等等。这些其他前缀通常跟随在“传统”前缀之后。

操作码字段1303被用于至少部分地定义在指令的解码时要执行的操作。在一些实施例中,在操作码字段1303中编码的主操作码的长度为1个、2个或3个字节。在其他实施例中,主操作码可以是其他的长度。额外的3比特操作码字段有时被编码在另一个字段中。

寻址字段1305被用于对指令的一个或多个操作对象进行寻址,例如存储器中的位置或者一个或多个寄存器。

图14图示了寻址字段1305的实施例。在这个图示中,示出了可选的MOD R/M字节1402和可选的缩放、索引、基址(Scale,Index,Base,SIB)字节1404。MOD R/M字节1402和SIB字节1404被用来编码指令的最多两个操作对象,每个操作对象是直接寄存器或有效存储器地址。注意,这些字段中的每一者是可选的,即,不是所有的指令都包括这些字段中的一个或多个。MOD R/M字节1402包括MOD字段1442、寄存器字段1444、以及R/M字段1446。

MOD字段1442的内容区分存储器访问和非存储器访问模式。在一些实施例中,当MOD字段1442具有值b11时,利用寄存器直接寻址模式,否则使用寄存器间接寻址。

寄存器字段1444可以编码目的地寄存器操作对象或者源寄存器操作对象,或者也可以编码操作码扩展而不被用于编码任何指令操作对象。寄存器索引字段1444的内容直接指定或者通过地址生成来指定源或目的地操作对象的位置(在寄存器中或者在存储器中)。在一些实施例中,寄存器字段1444得到来自前缀(例如,前缀1301)的额外比特的补充,以允许更大的寻址。

R/M字段1446可以用来编码引用了存储器地址的指令操作对象,或者可以用来编码目的地寄存器操作对象或源寄存器操作对象。注意,在一些实施例中,R/M字段1446可以被与MOD字段1442相组合以规定寻址模式。

SIB字节1404包括缩放字段1452、索引字段1454、以及基址字段1456,以用于地址的生成。缩放字段1452指示缩放因子。索引字段1454指定要使用的索引寄存器。在一些实施例中,索引字段1454得到来自前缀(例如,前缀1301)的额外比特的补充,以允许更大的寻址。基址字段1456指定了要使用的基址寄存器。在一些实施例中,基址字段1456得到来自前缀(例如,前缀1301)的额外比特的补充,以允许更大的寻址。在实践中,缩放字段1452的内容允许缩放索引字段1454的内容以进行存储器地址生成(例如,对于使用2

一些寻址形式利用位移值来生成存储器地址。例如,可以根据2

在一些实施例中,立即数字段1309为指令指定立即数。立即数可以被编码为1字节值、2字节值、4字节值等等。

图15图示了第一前缀1301(A)的实施例。在一些实施例中,第一前缀1301(A)是REX前缀的实施例。使用这个前缀的指令可以指定通用寄存器、64比特紧缩数据寄存器(例如,单指令多数据(SIMD)寄存器或向量寄存器)、和/或控制寄存器和调试寄存器(例如,CR8-CR15和DR8-DR15)。

使用第一前缀1301(A)的指令可以使用3比特字段指定最多三个寄存器,这取决于格式:1)使用MOD R/M字节1402的reg字段1444和R/M字段1446;2)使用MOD R/M字节1402与SIB字节1404,包括使用reg字段1444以及基址字段1456和索引字段1454;或者3)使用操作码的寄存器字段。

在第一前缀1301(A)中,比特位置7:4被设置为0100。比特位置3(W)可以被用于确定操作对象大小,但不能单独确定操作对象宽度。因此,当W=0时,操作对象大小由代码段描述符(code segment descriptor,CS.D)决定,而当W=1时,操作对象大小为64比特。

注意,添加另一个比特允许对16(2

在第一前缀1301(A)中,比特位置2(R)可以是MOD R/M的reg字段1444的扩展,并且当该字段编码了通用寄存器、64比特紧缩数据寄存器(例如,SSE寄存器)或者控制或调试寄存器时,可被用来修改MOD R/M的reg字段1444。当MOD R/M字节1402指定其他寄存器或定义扩展操作码时,R被忽略。

比特位置1(X)X比特可以修改SIB字节索引字段1454。

比特位置B(B)B可以修改MOD R/M的R/M字段1446或SIB字节基址字段1456中的基址;或者它可以修改用于访问通用寄存器(例如,通用寄存器1225)的操作码寄存器字段。

图16A-16D图示了根据一些实施例的第一前缀1301(A)的R、X和B字段的使用。图16A图示了当SIB字节1404不被用于存储器寻址时,来自第一前缀1301(A)的R和B被用来扩展MOD R/M字节1402的reg字段1444和R/M字段1446。图16B图示了当不使用SIB字节1404时,来自第一前缀1301(A)的R和B被用来扩展MOD R/M字节1402的reg字段1444和R/M字段1446(寄存器-寄存器寻址)。图16C图示了当SIB字节14 04被用于存储器寻址时,来自第一前缀1301(A)的R、X和B被用于扩展MOD R/M字节1402的reg字段1444以及索引字段1454和基址字段1456。图16D图示了当寄存器被编码在操作码1303中时,来自第一前缀1301(A)的B被用来扩展MOD R/M字节1402的reg字段1444。

图17A-17B图示了根据实施例的第二前缀1301(B)。在一些实施例中,第二前缀1301(B)是VEX前缀的实施例。第二前缀1301(B)编码允许指令具有多于两个操作对象,并且允许SIMD向量寄存器(例如,向量/SIMD寄存器1210)长于64比特(例如,128比特和256比特)。第二前缀1301(B)的使用提供了三操作对象(或更多)的语法。例如,先前的两操作对象指令执行诸如A=A+B之类的操作,这覆写了源操作对象。对第二前缀1301(B)的使用使得操作对象能够执行非破坏性操作,比如A=B+C。

在一些实施例中,第二前缀1301(B)有两种形式——两字节形式和三字节形式。两字节的第二前缀1301(B)主要被用于128比特、标量和一些256比特指令;而三字节的第二前缀1301(B)提供了3字节操作码指令和第一前缀1301(A)的紧凑替换。

图17A图示了第二前缀1301(B)的两字节形式的实施例。在一个示例中,格式字段1701(字节0 1703)包含值C5H。在一个示例中,字节1 1705在比特[7]中包括“R”值。这个值是第一前缀1301(A)的同一值的补码。比特[2]被用来规定向量的长度(L)(其中0的值是标量或者128比特向量,而1的值是256比特向量)。比特[1:0]提供等同于一些传统前缀的操作码扩展性(例如,00=无前缀,01=66H,10=F3H,并且11=F2H)。被示为vvvv的比特[6:3]可以被用于:1)编码第一源寄存器操作对象,该操作对象以反转(反码)形式指定,并且对于具有2个或更多个源操作对象的指令有效;2)编码目的地寄存器操作对象,该操作对象以反码形式指定,用于某些向量移位;或者3)不编码任何操作对象,该字段被保留并且应当包含某个值,例如1111b。

使用这个前缀的指令可以使用MOD R/M的R/M字段1446,以编码引用存储器地址的指令操作对象,或者编码目的地寄存器操作对象或源寄存器操作对象。

使用这个前缀的指令可以使用MOD R/M的reg字段1444,以编码目的地寄存器操作对象或者源寄存器操作对象,被作为操作码扩展来对待而不被用于编码任何指令操作对象。

对于支持四个操作对象的指令语法,vvvv、MOD R/M的R/M字段1446和MOD R/M的reg字段1444编码了四个操作对象中的三个。然后立即数1309的比特[7:4]被用来编码第三源寄存器操作对象。

图17B图示了第二前缀1301(B)的三字节形式的实施例。在一种示例中,格式字段1711(字节0 1713)包含值C4H。字节1 1715在比特[7:5]中包括“R”、“X”和“B”,它们是第一前缀1301(A)的这些值的补码。字节11715的比特[4:0](示为mmmmm)包括根据需要来对一个或多个隐含的前导操作码字节进行编码的内容。例如,00001意味着0FH前导操作码,00010意味着0F38H前导操作码,00011意味着0F3AH前导操作码,等等。

字节2 1717的比特[7]的使用与第一前缀1301(A)的W类似,包括帮助确定可提升的操作对象大小。比特[2]被用来规定向量的长度(L)(其中0的值是标量或者128比特向量,而1的值是256比特向量)。比特[1:0]提供等同于一些传统前缀的操作码扩展性(例如,00=无前缀,01=66H,10=F3H,并且11=F2H)。被示为vvvv的比特[6:3]可以被用于:1)编码第一源寄存器操作对象,该操作对象以反转(反码)形式指定,对于具有2个或更多个源操作对象的指令有效;2)编码目的地寄存器操作对象,该操作对象以反码形式指定,用于某些向量移位;或者3)不编码任何操作对象,该字段被保留并且应当包含某个值,例如1111b。

使用这个前缀的指令可以使用MOD R/M的R/M字段1446,以编码引用存储器地址的指令操作对象,或者编码目的地寄存器操作对象或源寄存器操作对象。

使用这个前缀的指令可以使用MOD R/M的reg字段1444,以编码目的地寄存器操作对象或者源寄存器操作对象,或者被作为操作码扩展来对待而不被用于编码任何指令操作对象。

对于支持四个操作对象的指令语法,vvvv、MOD R/M的R/M字段1446和MOD R/M的reg字段1444编码了四个操作对象中的三个。然后立即数1309的比特[7:4]被用来编码第三源寄存器操作对象。

图18图示了第三前缀1301(C)的实施例。在一些实施例中,第三前缀1301(C)是EVEX前缀的实施例。第三前缀1301(C)是四字节前缀。

第三前缀1301(C)能够在64比特模式中编码32个向量寄存器(例如,128比特、256比特和512比特寄存器)。在一些实施例中,利用写入掩码/操作掩码(参见对于先前图中的寄存器的论述,例如图12)或谓词的指令利用这个前缀。操作掩码寄存器允许条件处理或选择控制。操作掩码指令——其源/目的地操作对象是操作掩码寄存器并且将操作掩码寄存器的内容视为单个值——是使用第二前缀1301(B)而被编码的。

第三前缀1301(C)可以编码特定于指令类别的功能(例如,具有“加载+操作”语义的紧缩指令可以支持嵌入式广播功能,具有舍入语义的浮点指令可以支持静态舍入功能,具有非舍入算术语义的浮点指令可以支持“抑制所有异常”功能,等等)。

第三前缀1301(C)的第一字节是格式字段1811,它在一种示例中具有0x62的值,其是标识向量友好指令格式的唯一值。随后的字节被称为有效载荷字节1815、1817、1819,并且共同形成P[23:0]的24比特值,以(本文中详述的)一个或多个字段的形式提供特定的能力。

在一些实施例中,有效载荷字节1819的P[1:0]与低位的两个mm比特相同。在一些实施例中,P[3:2]被保留。比特P[4](R')在与P[7]和MOD R/M的reg字段1444相组合时允许访问高16向量寄存器集合。当不需要SIB类型寻址时,P[6]也可以提供对高16向量寄存器的访问。P[7:5]由R、X和B构成,它们是针对向量寄存器、通用寄存器、存储器寻址的操作对象指定符修饰符比特,并且当与MOD R/M寄存器字段1444和MOD R/M的R/M字段1446相组合时,允许访问超出低8个寄存器的下一组8个寄存器。P[9:8]提供等同于一些传统前缀的操作码扩展性(例如,00=无前缀,01=0x66,10=0xF3,并且11=0xF2)。P[10]在一些实施例中是固定值1。被示为vvvv的P[14:11]可以被用于:1)编码第一源寄存器操作对象,该操作对象以反转(反码)形式指定,对于具有2个或更多个源操作对象的指令有效;2)编码目的地寄存器操作对象,该操作对象以反码形式指定,用于某些向量移位;或者3)不编码任何操作对象,该字段被保留并且应当包含某个值,例如1111b。

P[15]类似于第一前缀1301(A)和第二前缀1311(B)的W,并且可以作为操作码扩展比特或操作对象大小提升。

P[18:16]指定操作掩码(写入掩码)寄存器(例如,写入掩码/谓词寄存器1215)中的寄存器的索引。在本发明的一种实施例中,特定值aaa=000具有特殊行为,暗示着没有操作掩码被用于这个特定的指令(这可以通过多种方式实现,包括使用硬连线到全一的操作掩码或者绕过掩蔽硬件的硬件)。当合并时,向量掩码允许目的地中的任何元素集合在(由基本操作和增强操作指定的)任何操作的执行期间被保护免于更新;在另一实施例中,保留目的地的每个元素的旧值(如果相应的掩码比特具有0值)。与之不同,当归零时,向量掩码允许目的地中的任何元素集合在(由基本操作和增强操作指定的)任何操作的执行期间被归零;在一种实施例中,目的地的元素在相应掩码比特具有0值时被设置到0。这个功能的子集是对于正被执行的操作的向量长度(即,被修改的元素的跨度,从第一个到最后一个)进行控制的能力;然而,被修改的元素不一定要连续。从而,操作掩码字段允许了部分向量操作,包括加载、存储、算术、逻辑,等等。虽然在描述的本发明的实施例中,操作掩码字段的内容选择若干个操作掩码寄存器中包含要使用的操作掩码的那一个(从而操作掩码字段的内容间接标识了要执行的掩蔽),但替代地或附加地,替代性实施例允许掩码写入字段的内容直接指定要执行的掩蔽。

P[19]可以与P[14:11]相组合,来以非破坏性源语法编码第二源向量寄存器,该语法可以利用P[19]来访问高16个向量寄存器。P[20]编码多种功能,这些功能在不同类别的指令中有所不同,并且可以影响向量长度/舍入控制指定符字段(P[22:21])的含义。P[23]指示出对合并-写入掩蔽的支持(例如,当被设置为0时)或者对归零和合并-写入掩蔽的支持(例如,当被设置为1时)。

下面的表格详述了在使用第三前缀1301(C)的指令中对寄存器的编码的示例性实施例。

表16-64比特模式中的32寄存器支持

表17-在32比特模式中编码寄存器指定符

表18-操作掩码寄存器指定符编码

程序代码可被应用到输入指令以执行本文描述的功能并且生成输出信息。输出信息可以按已知的方式被应用到一个或多个输出设备。对于本申请而言,处理系统包括任何具有处理器的系统,处理器例如是数字信号处理器(DSP)、微控制器、专用集成电路(application specific integrated circuit,ASIC)、或者微处理器。

可以用面向过程或面向对象的高级编程语言来实现程序代码以与处理系统进行通信。如果希望,也可以用汇编或机器语言来实现程序代码,如本文描述的机制在范围上不限于任何特定的编程语言。此外,该语言可以是编译语言或者解释语言。

本文公开的机制可以用硬件、软件、固件或者这些实现途径的组合来实现。本发明的实施例可以被实现为计算机程序或程序代码,在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备的可编程系统上执行。

ISA仿真和二进制转译

在一些情况下,指令转换器可以被用于将指令从源指令集转换到目标指令集。例如,指令转换器可以将指令转译(例如,利用静态二进制转译、包括动态编译的动态二进制转译)、变形、仿真或者以其他方式转换到要被核心处理的一个或多个其他指令。可以用软件、硬件、固件或者其组合来实现指令转换器。指令转换器可以在处理器上、在处理器外、或者一部分在处理器上而一部分在处理器外。

图19图示根据实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在图示的实施例中,指令转换器是软件指令转换器,但可替代地,可以用软件、固件、硬件或者其各种组合来实现指令转换器。图19示出了高级语言1902的程序可以被利用第一ISA编译器1904编译以生成第一ISA二进制代码1906,该代码可以由具有至少一个第一ISA指令集核心的处理器1916原生执行。具有至少一个第一ISA指令集核心的处理器1916代表任何这样的处理器:这种处理器能够通过兼容地执行或以其他方式处理(1)第一ISA指令集核心的指令集的实质部分或者(2)以在具有至少一个第一ISA指令集核心的

IP核心实现方式

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

图20A-图20D图示IP核心开发以及能够由各种IP核心组装而来的相关联的封装组件。

图20A是图示根据实施例的可用于制造集成电路以执行操作的IP核心开发系统2000的框图。IP核心开发系统2000可以用于生成可并入到更大的设计中或用于构建整个集成电路(例如,SOC集成电路)的模块化、可重复使用的设计。设计设施2030能够生成采用高级编程语言(例如,C/C++)的IP核心设计的软件仿真2010。软件仿真2010能够用于使用仿真模型2012来设计、测试并验证IP核心的行为。仿真模型2012可包括功能仿真、行为仿真和/或时序仿真。随后可从仿真模型2012创建或合成寄存器传输级(register transferlevel,RTL)设计2015。RTL设计2015是对硬件寄存器之间的数字信号的流进行建模的集成电路(包括使用建模的数字信号来执行的相关联的逻辑)的行为的抽象。除了RTL设计2015之外,还可创建、设计或合成逻辑级或晶体管级的较低级别设计。由此,初始设计和仿真的特定细节可有所不同。

可由设计设施进一步将RTL设计2015或等效方案合成到硬件模型2020中,该硬件模型2020可以采用硬件描述语言(hardware description language,HDL)或物理设计数据的某种其他表示。可以进一步仿真或测试HDL以验证IP核心设计。可使用非易失性存储器2040(例如,硬盘、闪存、或任何非易失性存储介质)来存储IP核心设计以用于递送至第三方制造设施2065。替代地,可通过有线连接2050或无线连接2060(例如,经由互联网)来传送IP核心设计。制造设施2065随后可制造至少部分地基于IP核心设计的集成电路。所制造的集成电路能够被配置成用于执行根据本文中描述的至少一个实施例的操作。

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

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

尽管图示了两个逻辑单元2072、2074和桥接器2082,但是本文中所描述的实施例可包括在一个或多个管芯上的更多或更少的逻辑单元。这一个或多个管芯可以由零个或更多个桥接器连接,因为当逻辑被包括在单个管芯上时,可以排除桥接器2082。替代地,多个管芯或逻辑单元可以由一个或多个桥接器连接。此外,多个逻辑单元、管芯和桥接器可按其他可能的配置(包括三维配置)被连接。

图20C图示封装组件2090,该封装组件2090包括连接到衬底2080的多个单元的硬件逻辑小芯片。如本文中所描述的图形处理单元、并行处理器和/或计算加速器可由分开制造的各种硅小芯片组成。在该上下文中,小芯片是至少部分地被封装的集成电路,该至少部分地被封装的集成电路包括能够与其他小芯片一起被组装到更大的封装中的不同的逻辑单元。具有不同IP核心逻辑的各种集合的小芯片能够被组装到单个器件中。此外,小芯片能够使用有源中介层(interposer)技术而被集成到基础管芯或基础小芯片中。本文中描述的概念启用GPU内的不同形式的IP之间的互连和通信。IP核心能够使用不同的工艺技术来制造并在制造期间被构成,这避免了尤其是对于具有若干风格的IP的大型SoC的将多个IP汇聚到同一制造工艺的复杂性。允许使用多种工艺技术改善了上市时间,并提供具有成本效益的方法来创建多个产品SKU。此外,分解的IP更易修改以被独立地功率门控,对于给定工作负载不在使用中的部件能够被关断,从而降低总功耗。

在各实施例中,封装组件2090可包括由组织2085和/或一个或多个桥接器2087互连的部件和小芯片。封装组件2090内的小芯片可具有使用芯片-晶片-衬底(Chip-on-Wafer-on-Substrate)堆叠的2.5D布置,其中,多个管芯并排地堆叠在硅中介层2089上,该硅中介层2089将小芯片与衬底2080耦合。衬底2080包括至封装互连2083的电气连接。在一个实施例中,硅中介层2089是无源中介层,其包括硅通孔(through-silicon via,TSV)以将封装组件2090内的小芯片电气地耦合至衬底2080。在一个实施例中,硅中介层2089是有源中介层,该有源中介层除TSV外还包括嵌入式逻辑。在此类实施例中,封装组件2090内的小芯片使用3D面对面管芯堆叠被布置在硅中介层2089的顶部上。硅中介层2089(当是有源中介层时)除互连组织2085和硅桥接器2087外还可包括用于I/O 2091的硬件逻辑、缓存存储器2092和其他硬件逻辑2093。组织2085启用各种逻辑小芯片2072、2074与硅中介层2089内的逻辑2091、2093之间的通信。组织2085可以是在封装组件的部件之间交换数据分组的NoC(Network on Chip,片上网络)互连或另一形式的分组交换型结构。对于复杂组件,组织2085可以是启用封装组件2090的各硬件逻辑之间的通信的专用小芯片。

硅中介层2089内的桥接器结构2087可用于促进例如逻辑或I/O小芯片2074与存储器小芯片2075之间的点到点互连。在一些实现方式中,桥接器结构2087还可被嵌入在衬底2080内。硬件逻辑小芯片可包括专用硬件逻辑小芯片2072、逻辑或I/O小芯片2074、和/或存储器小芯片2075。硬件逻辑小芯片2072以及逻辑或I/O小芯片2074可以至少部分地实现在可配置逻辑或固定功能逻辑硬件中,并且可包括本文中描述的(一个或多个)处理器核心、(一个或多个)图形处理器、并行处理器或其他加速器设备中的任一个的一个或多个部分。存储器小芯片2075可以是DRAM(例如,GDDR、HBM)存储器或缓存(SRAM)存储器。硅中介层2089(或衬底2080)内的缓存存储器2092能够充当用于封装组件2090的全局缓存,充当分布式全局缓存的部分,或充当用于组织2085的专用缓存。

每个小芯片能够被制造为分开的半导体管芯,并且能够与基础管芯耦合,该基础管芯嵌入在衬底2080内或与衬底2080耦合。与衬底2080的耦合可经由互连结构2073来执行。互连结构2073可被配置成用于在衬底2080内的各种小芯片与逻辑之间路由电信号。互连结构2073可包括互连,诸如但不限于凸块或支柱。在一些实施例中,互连结构2073可被配置成用于路由电信号,诸如例如,与逻辑、I/O和存储器小芯片的操作相关联的输入/输出(input/output,I/O)信号和/或功率或接地信号。在一个实施例中,附加的互连结构将硅中介层2089与衬底2080耦合。

在一些实施例中,衬底2080是基于环氧树脂的层压衬底。在其他实施例中,衬底2080可包括其他合适类型的衬底。封装组件2090能够经由封装互连2083连接到其他电气设备。封装互连2083可耦合至衬底2080的表面以将电信号路由到其他电气设备,诸如,主板、其他芯片组或多芯片模块。

在一些实施例中,逻辑或I/O小芯片2074和存储器小芯片2075能够经由桥接器2087被电耦合,该桥接器2087被配置成用于在逻辑或I/O小芯片2074与存储器小芯片2075之间路由电信号。桥接器2087可以是为电信号提供路由的密集互连结构。桥接器2087可包括由玻璃或合适的半导体材料构成的桥接器衬底。电路由特征可形成在桥接器衬底上以提供逻辑或I/O小芯片2074与存储器小芯片2075之间的芯片-芯片连接。桥接器2087还可被称为硅桥接器或互连桥接器。例如,在一些实施例中,桥接器2087是嵌入式多管芯互连桥接器(Embedded Multi-die Interconnect Bridge,EMIB)。在一些实施例中,桥接器2087可以简单地是从一个小芯片到另一小芯片的直接连接。

图20D图示根据实施例的包括可互换小芯片2095的封装组件2094。可互换小芯片2095能够被组装到一个或多个基础小芯片2096、2098上的标准化插槽中。基础小芯片2096、2098能够经由桥接器互连2097被耦合,该桥接器互连2097可与本文中描述的其他桥接器互连类似,并且可以是例如EMIB。存储器小芯片也能够经由桥接器互连被连接到逻辑或I/O小芯片。I/O和逻辑小芯片能够经由互连组织进行通信。基础小芯片各自都能以用于逻辑或I/O或存储器/缓存中的一者的标准化格式来支持一个或多个插槽。

在一个实施例中,SRAM和功率递送电路可被制造到基础小芯片2096、2098中的一个或多个中,基础小芯片2096、2098能够使用相对于可互换小芯片2095不同的工艺技术来制造,可互换小芯片2095堆叠在基础小芯片的顶部上。例如,能够使用较大工艺技术来制造基础小芯片2096、2098,同时能够使用较小工艺技术来制造可互换小芯片。可互换小芯片2095中的一个或多个可以是存储器(例如,DRAM)小芯片。可基于针对使用封装组件2094的产品的功率和/或性能来为封装组件2094选择不同的存储器密度。此外,可在组装时基于针对产品的功率和/或性能来选择具有不同数量的类型的功能单元的逻辑小芯片。此外,能够将包含具有不同类型的IP逻辑核心的小芯片插入到可互换小芯片插槽中,从而启用能够混合并匹配不同技术的IP块的混合式处理器设计。

图21图示根据本文中描述的各实施例的可以使用一个或多个IP核心制造的示例性集成电路和相关联的处理器。除了所图示的内容之外,还可包括其他逻辑和电路,包括附加的图形处理器/核心、外围接口控制器或通用处理器核心。如图21中所示,集成电路2100可包括一个或多个应用处理器2105(例如,CPU)、至少一个图形处理器2110,并且可附加地包括图像处理器2115和/或视频处理器2120,其中的任一个都可以是来自相同设计设施或多个不同设计设施的模块化IP核心。集成电路2100包括外围或总线逻辑,包括USB控制器2125、UART控制器2130、SPI/SDIO控制器2135和I

本文中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可包括特定的特征、结构或特性,但是每个实施例可以不一定包括该特定的特征、结构或特性。而且,此类短语不一定是指同一实施例。此外,当结合实施例描述特定的特征、结构或特性时,认为结合无论是否被明确描述的其他实施例而影响此类特征、结构或特性是在本领域技术人员的知识范围之内的。

在上文描述的各实施例中,除非另外专门指出,否则,诸如短语“A、B或C中的至少一个”之类的分隔语言旨在被理解为意味着A、B、或C、或其任何组合(例如,A、B、和/或C)。由此,分隔语言不旨在也不应当被理解为暗示给定的实施例要求A中的至少一个、B中的至少一个或C中的至少一个各自都存在。

因此,说明书和附图应被认为是说明性而非限制性意义的。本领域技术人员将明白,本文中描述的实施例的广泛技术能以各种形式来实现。因此,尽管已结合其示例描述了实施例,但实施例的真实范围不应当限于此,因为在研究附图、说明书和所附权利要求书之后,其他修改对于本领域技术人员将变得显而易见。

相关技术
  • 用于SOC应用的高密度沟槽式非易失性随机访问SONOS存储单元的结构及制造方法
  • 用于分布式系统的事务性非结构化数据驱动的顺序联合查询方法
技术分类

06120115921287