共享加速器存储器系统和方法

文档序号:1042646 发布日期:2020-10-09 浏览:17次 >En<

阅读说明:本技术 共享加速器存储器系统和方法 (Shared accelerator memory system and method ) 是由 S.库马尔 D.库法蒂 P.兰茨 P.马罗利亚 R.桑卡兰 K.科宁 于 2020-02-28 设计创作,主要内容包括:本公开涉及在处理器存储器电路和多个对等连接的加速器单元中的每一个中的加速器存储器电路之间共享存储器电路的系统和方法。每个加速器单元都包括物理到虚拟地址转换电路和迁移电路。每个加速器单元中的物理到虚拟地址转换电路包括针对所述多个加速器单元中的至少一些中每一个的页面。迁移电路使数据在处理器存储器电路和所述多个加速器电路的每一个中的加速器存储器电路之间转移。迁移电路基于统计信息将数据迁移到加速器存储器电路和从加速器存储器电路逐出数据,所述统计信息与对以下各项中至少一项的访问相关联:处理器存储器电路或一个或多个对等加速器电路中的加速器存储器电路。因此,可以动态分配处理器存储器电路和加速器存储器电路以有利地最小化可归因于数据访问操作的系统等待时间。(The present disclosure relates to systems and methods of sharing memory circuitry between a processor memory circuit and accelerator memory circuits in each of a plurality of peer-to-peer connected accelerator units. Each accelerator unit includes physical-to-virtual address translation circuitry and migration circuitry. The physical-to-virtual address translation circuitry in each accelerator unit includes a page for each of at least some of the plurality of accelerator units. Migration circuitry transfers data between the processor memory circuitry and the accelerator memory circuitry in each of the plurality of accelerator circuits. Migration circuitry migrates data to and evicts data from the accelerator memory circuitry based on statistical information associated with accesses to at least one of: a processor memory circuit or an accelerator memory circuit of one or more peer accelerator circuits. Thus, processor memory circuitry and accelerator memory circuitry may be dynamically allocated to advantageously minimize system latency attributable to data access operations.)

共享加速器存储器系统和方法

技术领域

本公开涉及共享数据存储,更具体地,涉及对等共享加速器存储器。

背景技术

许多现代的异构计算平台包括一个或多个主控处理器,该主控处理器与多个计算加速器(通用图形处理单元(GPGPU);现场可编程门阵列(FPGA);张量处理单元(TPU))耦合。高速存储器(例如DRAM)可能存在于处理器内,并且高速/带宽存储器(例如,HBM)可能存在于所述多个计算加速器中的每一个内。与经由一个或多个主控总线(例如PCIe总线)访问的主控系统存储器相比,这样的高速存储器提供了显著减少的访问时间。因此,在经常访问的数据保持在使用点(例如处理器或计算加速器)附近的存储器中而不是简单地保持在仅经由相对较慢的主控系统总线访问的系统存储器中的情况下,可以存在显著的优势。例如,相比于主控或系统存储器的大约30 GB/s(PCIe Gen 3x16),现代的可编程并行加速器(诸如GPGPU)可以包括针对GPGPU(或设备)存储器的大约900吉比特/秒(GB/s)的带宽。为了实现计算加速器的峰值性能,应使用加速器存储器为加速器执行的大多数数据访问提供服务。

具体实施方式

在具有多个加速器的系统中,通常使用平台级缩放或封装内缩放来缩放加速器性能。利用平台级缩放,使用加速器间结构将设置在单个服务器节点中的多个加速器通信耦合。每个加速器将其自身呈现为具有针对处理器电路的本地高带宽存储器的单独设备。每个加速器都能够经由加速器间结构来访问对等方的存储器。利用平台级缩放,访问加速器的本地存储器与访问对等加速器的存储器相比提供了最高的带宽和最低的等待时间。

在封装内缩放情况下,鉴于大型硅管芯的相对较高的成本和制造复杂性,趋势是朝着使用较小的小芯片构造的加速器的方向,该小芯片使用硅中介层或硅桥(诸如嵌入式多管芯互连桥(EMIB))通信耦合。例如,小芯片可以包括处理器电路和存储器控制器电路。与访问对等小芯片的存储器相比,访问小芯片本地存储器具有最高的带宽和最低的等待时间。

为了优化这种异构平台的性能,程序员将在三个级别执行非统一的存储器访问优化:第一,在处理器电路和加速器电路之间;第二,当工作集无法适应本地存储器电路时,在加速器电路和远程存储器电路之间;以及第三,在加速器电路中包括的小芯片之间。

在本文公开的系统和方法中,加速器电路(GPGPU、FPGA、TPU等)使用输入/输出(I/O)链路(如PCIe)或一致性链路(如IAL、CCIX、NVLink等)通信耦合到处理器电路。加速器电路包括本地高带宽存储器,以下称为“加速器存储器电路”。如果加速器电路被一致性地附接,则加速器存储器电路可被处理器电路访问,并作为系统存储器电路暴露给设备操作系统。加速器电路是支持共享虚拟存储器(SVM)的设备,其可以使用应用虚拟地址执行存储器访问。在本文公开的系统和方法中,加速器电路使用由PCIe ATS定义的地址转换服务(ATS)来实现地址转换高速缓存。在本文公开的系统和方法中,加速器电路还支持页面错误。页面错误处置是特定于实现的,其中一些实现阻止错误,并且其他实现情境切换出加速器线程。

通过允许应用透明地使用加速器存储器电路,本文公开的系统和方法提供了优于常规加速器电路的益处和优势。更具体地,本文公开的系统和方法提出了几种有益的增强。首先,本文公开的系统和方法通过允许程序员分配比在加速器电路中物理可用的更多的存储器来允许加速器存储器电路的超额预订。加速器存储器管理器可以溢出到处理器连接的存储器电路(例如,CPU DRAM)。其次,本文公开的系统和方法有利地允许自动非统一存储器访问(NUMA)优化,以便加速器电路向驱动器提供信息,驱动器使用该信息来实现启发式方法,启发式方法用于基于访问频率引起存储器页面在加速器存储器电路和处理器存储器电路之间迁移。有利地,物理上接近使用点的数据的智能迁移提高了应用性能。第三,本文公开的系统和方法有益地提供了可缩放的地址转换。加速器电路支持安全虚拟机(SVM),因此加速器电路生成的存储器访问需要转换。加速器转换后备缓冲器电路(A-TLB)中的未命中通过PCIe链路向I/O存储器管理单元(IOMMU)生成地址转换服务(ATS)转换请求。随着针对加速器存储器电路的加速器带宽增加以及加速器存储器电路容量增加,除非A-TLB保持相对较高的命中率,否则A-TLB未命中路径将成为瓶颈。第四,本文公开的系统和方法有利地允许加速器存储器电路虚拟化,以通过处理器电路中实现的虚拟机提供对加速器存储器电路的隔离和高性能的直接访问。第五,本文公开的系统和方法允许对等映射,从而为加速器电路提供在A-TLB中映射对等加速器存储器电路的能力。第六,本文公开的系统和方法提供了对等迁移能力,使得加速器电路能够通过加速器间结构来迁移来自另一加速器中的存储器电路的页面,从而促进了高速页面迁移,并最小限度地涉及处理器电路。

本文公开的系统和方法有利地允许加速器存储器管理单元电路(A-MMU)与系统IOMMU一起执行地址转换,以提高在本地获得成功转换的可能性,从而改善系统性能。此外,加速器电路向加速器驱动器电路提供使用统计信息。加速器驱动器电路使用所述使用统计信息来确定哪些页面从处理器存储器电路迁移到加速器存储器电路,以及哪些页面从加速器存储器电路逐出到处理器存储器电路从而为到达加速器存储器电路的到来页面创建空间或减少对被处理器电路逐出的页面的访问时间。A-MMU支持在无需显著的虚拟机管理器(VMM)开销(嵌套的第一级和第二级转换)情况下的加速器存储器电路的高效虚拟化、对来自访客驱动器的迁移提示的直接访问以及对来自访客驱动器的A-MMU无效队列的直接访问。另外,加速器页表格式包括表示元数据的数据,该元数据除配置转换和访问权限外还用以配置数据变换操作(压缩/解压缩;编码/解码等)。

本文公开的系统和方法有益地提供了多个对等加速器电路,每个对等加速器电路具有存储器电路用于存储供加速器电路使用的存储器页面。加速器电路还包括迁移预测器电路和数据移动器电路,数据移动器电路用于基于由迁移预测器电路搜集的统计使用信息在处理器存储器电路和加速器存储器电路之间转移数据。加速器电路包括转换后备缓冲器电路(A-TLB)和存储器管理单元电路(A-MMU)。在操作中,A-TLB电路执行一个或多个虚拟存储器地址到加速器存储器电路中一个或多个物理存储器地址的转换。迁移预测电路收集与由A-TLB电路执行的对物理存储器的存储器访问相关的数据。至少部分地基于所收集的统计信息,迁移预测器电路使迁移电路在加速器存储器电路和处理器存储器电路之间转移数据。有利地,可以基于生成存储器访问的电路(例如,加速器电路或处理器电路)在加速器存储器电路和处理器存储器电路之间转移页面,从而通过减少可归因于实际物理存储器访问的等待时间来提高系统的性能。

提供了一种加速器系统。该系统可以包括:至少一个加速器电路;加速器存储器电路,通信耦合到所述至少一个加速器电路,所述加速器存储器电路用于本地存储从处理器存储器电路转移来的多个页面;加速器虚拟到物理地址转换电路,用于将从所述至少一个加速器电路接收到的虚拟地址转换为以下之一中的物理存储器地址:处理器存储器电路或加速器存储器电路;加速器迁移电路,用于:收集针对由A-TLB电路执行的对物理存储器的存储器访问的使用数据;以及至少部分地基于所收集的使用数据来引起在处理器存储器电路与加速器存储器电路之间的双向数据转移。

提供了一种电子设备。所述电子设备可以包括:处理器电路;处理器存储器管理单元(MMU)电路;处理器存储器电路;至少一个加速器系统,包括:至少一个加速器电路;加速器存储器电路,通信耦合到所述至少一个加速器电路,所述加速器存储器电路用于本地存储从处理器存储器电路转移来的多个页面;加速器虚拟到物理地址转换电路,用于将从所述至少一个加速器电路接收到的虚拟地址转换为以下之一中的物理存储器地址:处理器存储器电路或加速器存储器电路;以及加速器迁移电路,用于:收集针对由加速器虚拟到物理地址转换电路执行的虚拟到物理地址转换的使用数据;以及至少部分地基于所收集的使用数据来引起在处理器存储器电路与加速器存储器电路之间的双向数据转移。

提供了一种处理器加速方法。所述方法可以包括:由设置在加速器单元中的加速器虚拟地址到物理地址转换电路执行一个或多个虚拟存储器地址到一个或多个物理存储器地址的转换;由加速器迁移电路收集与由加速器虚拟地址到物理地址转换电路执行的多个虚拟存储器地址到物理存储器地址转换相关的数据;以及由加速器迁移电路至少部分地基于所收集的虚拟存储器地址到物理存储器地址转换数据引起一个或多个页面从处理器存储器电路到加速器存储器电路的迁移。

提供了处理器加速系统。该系统可以包括:用于执行一个或多个虚拟存储器地址到一个或多个物理存储器地址的转换的装置;用于收集与由加速器虚拟地址到物理地址转换电路执行的多个虚拟存储器地址到物理存储器地址转换相关的数据的装置;以及用于至少部分地基于所收集的虚拟存储器地址到物理存储器地址转换数据在处理器存储器电路和加速器存储器电路之间迁移一个或多个页面的装置。

提供了一种非暂时性存储设备。非暂时性存储设备可以包括指令,当由加速器电路执行时,所述指令使加速器电路:使设置在加速器单元中的加速器虚拟地址到物理地址转换电路把一个或多个虚拟存储器地址转换为一个或多个物理存储器地址;使加速器迁移电路收集与由加速器虚拟地址到物理地址转换电路执行的多个虚拟存储器地址到物理存储器地址转换相关的数据;以及使加速器迁移电路至少部分地基于所收集的虚拟存储器地址到物理存储器地址转换数据从处理器存储器电路到加速器存储器电路迁移一个或多个页面。

图1是根据本文描述的至少一个实施例的说明性系统100的框图,说明性系统100包括:处理器电路110;处理器存储器管理单元(P-MMU)电路120;处理器存储器电路130;多个加速单元140A/140B(统称为“加速单元140”),每个加速单元具有相应的加速器存储器电路180A/180B;以及通信耦合加速单元140A/140B的加速器间结构电路190。加速单元140A、140B中的每个均包括相应的加速电路150A,150B、迁移电路160A,160B以及物理到虚拟地址转换电路170A,170B。在实施例中,迁移电路160可以包括:迁移预测电路162,用于收集页面使用信息和/或数据(虚拟到物理地址转换命中/未命中计数等);以及页面数据移动器电路164,用于在加速器存储器电路180和处理器存储器电路130之间转移页面数据。在实施例中,物理到虚拟地址转换电路170可以包括多个电路,诸如:转换后备缓冲器(A-TLB)电路172,用于存储代表在通信耦合的加速器存储器电路180中虚拟到物理地址转换的数据;和存储器管理单元(A-MMU)电路174,用于管理去往/来自加速器存储器电路180的信息和/或数据的存储、逐出和取回。

在操作中,当加速器电路150基于存储器使用来执行诸如向量/张量数学运算之类的操作时,迁移电路160可以使页面从系统存储器电路和/或处理器存储器电路130迁移到加速器存储器电路180中。在加速器存储器电路180中保持频繁使用/访问的数据通过减少加速器单元140的访问时间/等待时间来提高系统性能。在实施例中,迁移电路160收集、搜集、接收或以其他方式获得与加速器存储器电路180中保持的一些或全部或多个页面相关联的统计信息。随着页面访问频率增加,迁移电路160可使得页面从处理器存储器电路130和/或系统存储器电路转移到加速器存储器电路180。相反,随着页面访问频率降低,迁移电路160可以使得这种不太频繁访问的页面从加速器存储器电路180逐出到处理器存储器电路130或系统存储器电路。

在操作中,当执行存储器操作时,A-TLB电路172不仅可以为耦合到相应加速器电路150A的加速器存储器电路180A内的物理地址提供虚拟到物理地址转换,而且还可以为耦合到其余加速器电路150B-150n中的每个的一些或全部其它加速器存储器电路180B-180n中的物理地址提供虚拟到物理地址转换。这种访问受益于通信耦合加速器单元140A-140n的相对较高带宽的加速器间结构连接190。另外,A-TLB电路172与P-MMU电路120协同工作,从而允许加速器电路150访问存储、包含或以其他方式保留在处理器存储器电路(例如,处理器DRAM)130中的页面。因此,加速器电路150所请求的存储器操作通常将使用相对较高带宽的加速器间结构连接190或去往处理器存储器130的高带宽连接来访问耦合到加速器电路150的物理存储器地址。此外,A-MMU电路174支持加速器存储器电路180的虚拟化。在实施例中,A-MMU电路174执行嵌套的第一级和第二级转换,提供对来自(一个或多个)访客驱动器的页面迁移提示的直接访问,和/或提供对来自(一个或多个)访客驱动器的A-MMU无效队列的直接访问。有利地,除了对加速器存储器电路180内保持的数据指定各种数据变换操作的元数据之外,加速器页表格式还可以包括表示虚拟到物理地址转换、访问权限的信息/数据。

可以使用任何形式的系统架构(诸如片上系统(SoC)架构)或使用在多芯片模块(MCM)架构中多个通信耦合的小芯片来实现系统100。处理器电路110可以包括任何数量的以下各项和/或以下各项的组合:当前可用和/或未来开发的电气部件、半导体器件和/或逻辑元件,它们被配置或通信耦合以执行一个或多个机器可读指令集。处理器电路110可以包括任何数量的单线程或多线程核心电路或包括上述各项的组合。在实施例中,处理器电路110可以执行配置一个或多个VMM的指令和/或指令集,一个或多个VMM中的每一个监督一个或多个虚拟机的操作。处理器电路110可以包括任何数量的处理器、微处理器、控制器、微控制器、信号处理器或类似物和/或包括上述各项其组合。处理器电路110通信耦合到P-MMU电路120和处理器存储器电路130。尽管在图1中未示出,但是处理器电路110可以耦合到处理器转换后备缓冲器(P-TLB)电路。

P-MMU电路120包括任何数量的以下各项和/或以下各项的组合:能够存储表示处理器存储器电路130中的虚拟到物理地址转换的信息和/或数据的当前可用的和/或未来开发的电气部件、半导体部件和/或逻辑元件。在实施例中,表示处理器存储器电路130中的虚拟到物理地址转换的信息和/或数据可以以页表的形式被存储、包含或以其他方式保留在P-MMU电路120中。在实施例中,存储、保留和/或包含在P-MMU电路120中的信息和/或数据可以包括虚拟到物理系统存储器电路地址转换。在实施例中,P-MMU电路120可以设置在一个或多个小芯片或类似半导体管芯中、上或附近。在实施例中,P-MMU电路120可以与一些或全部处理器电路110一起设置在共同半导体管芯上。

处理器存储器电路130可以包括任何数量的以下各项和/或以下各项的组合:能够非持久地存储信息和/或数据的当前可用的和/或未来开发的电气部件、半导体器件和/或逻辑元件。在实施例中,处理器存储器电路130可以包括任何数量的以下各项和/或以下各项的组合:静态随机存取存储器(SRAM)和/或动态随机存取存储器(DRAM)。在实施例中,处理器存储器电路130可以设置在一个或多个小芯片或类似的半导体管芯中、上或附近。在实施例中,处理器存储器电路130可以与一些或全部处理器电路110一起设置在共同半导体管芯上。

多个加速器单元140A-140n中的每一个包括加速器电路150A-150n(统称为“加速器电路150”)、迁移电路160A-160n(统称为“迁移电路160”)以及物理到虚拟地址转换电路170A-170n(统称为“物理到虚拟地址转换电路170”)。加速器电路150可以包括可以包括任何数量的以下各项和/或以下各项的组合:被配置为提供张量处理单元(TPU)或类似设备或者能够执行数学运算(诸如使用数组、矩阵或张量的数学运算)的系统的当前可用和/或未来开发的电子部件、半导体器件和/或逻辑元件。

迁移电路160包括任何数量的以下各项和/或以下各项的组合:能够提供迁移预测电路162和页面数据移动器电路164的电气设备、半导体部件和/或逻辑元件。在实施例中,迁移预测电路162接收、收集、轮询或以其它方式获取统计信息,该统计信息表示涉及加速器存储器电路180的发生的存储器事务。在实施例中,迁移预测电路162将统计信息与一个或多个定义的阈值进行比较。在实施例中,所述一个或多个定义的阈值可以包括任何数量的以下各项或以下各项的组合:固定阈值和/或由迁移预测电路162生成的动态确定的阈值。使用接收到的统计信息,迁移预测电路162可以使页面数据移动器电路164将数据从处理器存储器电路130或系统主存储器电路转移到加速器存储器电路180。使用接收到的统计信息,迁移预测电路162可以使页面数据移动器电路164把数据从加速器存储器电路180逐出到处理器存储器电路130或系统主存储器电路。因此,迁移预测电路162有益地将新鲜数据(例如,加速器电路150最频繁访问的数据)保持在加速器存储器电路180中。通过在经由高带宽连接耦合到加速器电路150的加速器存储器电路180中保持被加速器电路150最频繁访问的数据,减少了等待时间并且有益地改善了系统性能。在实施例中,迁移预测电路162可以包括人工智能(AI)推理引擎,用以学习、检测和/或预测共同存储器访问模式,并因此主动触发从加速器存储器电路180的数据迁移和/或逐出。在其它实施例中,迁移预测电路162可以接收由一个或多个应用驱动器引发的一个或多个信号。这样的信号可以基于应用驱动器策略,该应用驱动器策略触发从加速器存储器电路180的数据迁移和/或逐出。在又其它实施例中,迁移预测电路162可以接收由处理器电路110所执行的一个或多个应用引发的一个或多个信号。

迁移预测电路162包括性能计数器电路和/或硬件监视电路,当与由迁移预测电路162执行的预测指令集组合时,性能计数器电路和/或硬件监视电路提供提示用以识别用于从处理器存储器电路130迁移到加速器存储器电路180的候选页面或用于从加速器存储器电路180逐出到处理器存储器电路130的候选页面。在实施例中,迁移预测电路162可被实现为A-TLB电路172的扩展,其中迁移预测电路162提供以下各项的历史缓冲器:从P-MMU电路120获得的向处理器存储器电路130中的页面的频繁引用的虚拟到物理地址转换、或者从A-MMU电路174获得的向本地加速器存储器电路180A或对等加速器存储器电路180B-180n中的页面的虚拟到物理地址转换。处理器存储器电路130和加速器存储器电路180之间的迁移可以由加速器单元140驱动器基于来自迁移预测电路162的提示、基于由应用明确预取回的提示或基于针对服务于CPU或XPU页面错误的需求来启动。

页面数据移动器电路164包括直接存储器访问(DMA)电路,用以在本地加速器存储器电路180到处理器存储器电路130之间迁移页面。在包括多个加速器单元180A-180n的配置中,页面数据移动器电路164还可以在本地加速器存储器电路180A和对等加速器存储器电路180B-180n之间迁移页面。页面数据移动器电路164可以执行加速器单元特定的数据变换,诸如格式转换、压缩、打包/解包RGB表面等。加速器页表(A-PT)可以包括诸如元数据之类的信息和/或数据,用以识别这种变换后的页面。变换后的页面只可以由加速器单元设备访问,在这样的实施例中,页面不可以由处理器电路110访问。

物理到虚拟地址转换电路170包括A-TLB电路172和A-MMU电路174。在操作中,加速器电路150对存储在虚拟存储器地址处的数据执行存储器操作。为了访问物理存储器地址处的数据,加速器电路150生成的虚拟地址被转换。最初,加速器单元140确定虚拟到物理地址转换是否被存储或以其他方式保留在A-TLB电路172内。如果虚拟地址没有被存储或以其他方式保留在A-TLB电路172中,则加速器单元140确定虚拟到物理地址转换是否被存储或以其他方式保留在A-MMU电路174内。如果在A-MMU电路174内未找到虚拟到物理地址转换,则A-TLB电路172导致在P-MMU电路120中查找虚拟地址。

A-TLB电路172包括任何数量的以下各项和/或以下各项的组合:能够提供虚拟到物理地址转换的当前可用或未来开发的电子部件、半导体器件和/或逻辑元件。如果虚拟地址在A-TLB电路172内不可用,则有利的是,首先使用A-MMU电路174服务于转换请求,而不是使用P-MMU电路120来执行或服务于转换请求。加速器页表(A-PT)中虚拟到物理地址转换的不可用可能意味着该页面未被存储、包含或以其他方式保留在加速器存储器电路180中。在这种情况下,可以将A-TLB中的该未命中传送给P-MMU电路120并由P-MMU的页表执行虚拟到物理地址转换。A-TLB电路172区分并高速缓存从A-MMU电路174或P-MMU电路120获得的虚拟到物理地址转换。A-TLB电路172支持与常规A-TLB相同的无效能力并服务于加速器单元140驱动器生成的关于A-PT改变的无效。A-TLB电路172还支持页面请求接口,用以报告在从P-MMU页表获得的转换上遇到的页面错误。另外,A-TLB电路172可以针对在从A-PT获得的虚拟到物理存储器地址转换上遇到的特定页面错误状况提供向加速器单元140驱动器报告A-MMU本地页面错误的能力。

A-MMU电路174包括任何数量的以下各项和/或以下各项的组合:能够使用加速器页表(A-PT)来为页面提供虚拟到物理地址转换的当前可用或未来开发的电子部件、半导体器件和/或逻辑元件,所述页面驻留在本地加速器存储器电路180A、对等加速器存储器电路180B-180n和/或处理器存储器电路130中。如果所述页面未存储或未以其他方式保留在主控或对等加速器存储器电路180中,则A-PT规定是使用P-MMU电路120执行另一虚拟到物理地址查找还是向加速器单元140的驱动器生成A-MMU页面错误。A-MMU页面错误可以导致页面数据移动器电路164启动从处理器存储器电路130或对等加速器存储器电路180B-180n到本地加速器存储器电路180A的页面迁移。A-PT被存储、包含或以其他方式保留在加速器存储器电路180内,从而使A-MMU电路174进行页面行进(walk)的带宽与加速器存储器电路180带宽成比例。

加速器存储器电路180包括任何数量的以下各项和/或以下各项的组合:能够保留、存储或以其他方式提供非持久数据存储的当前可用和/或未来开发的电气部件、半导体器件和/或逻辑元件。其余加速器单元140B-140n中的一个或多个可以经由加速器间结构190访问每个加速器单元140A中包括的加速器存储器电路180A。因此,在任何加速器单元140A-140n中的A-TLB电路172A-172n可用于访问位于任何其他加速器存储器电路180A-180n中的物理存储器地址。在实施例中,处理器电路110可以访问存储在任何加速器存储器电路180A-180n中的信息和/或数据。因此,可以将处理器电路110访问的数据存储、包含或以其他方式保留在处理器存储器电路130和任何数量的加速器存储器电路180A-180n的至少一部分的任何组合中。

图2是根据本文描述的至少一个实施例的用于由加速器单元140执行存储器访问操作的说明性系统200的框图。在实施例中,由加速器电路150执行的指令在虚拟存储器地址处生成存储器访问操作。在实施例中,加速器电路150把包含该虚拟地址的请求210传送到虚拟到物理地址转换电路170。响应于从虚拟到物理地址转换电路170获得有效转换,数据被访问220并从加速器存储器电路180取回230。

如果把物理到虚拟地址转换电路170中的虚拟到物理地址转换编程为强制迁移,则加速器页面请求被报告给主控驱动器。主控驱动器通过如下步骤来服务于加速器页面请求:启动从处理器存储器电路130到加速器存储器电路180的页面迁移;在具有请求的对加速器存储器电路180中新物理地址的许可的情况下更新物理到虚拟地址转换电路170中的虚拟地址转换;以及将加速器页表响应返回给加速器电路150。响应于接收到加速器页表响应,加速器单元140可以恢复或重新调度错误访问。作为页面迁移过程的一部分,页面的加速器存储器目录状态在加速器存储器电路180中。

在实施例中,如果加速器单元140通过调用虚拟地址的ATS转换需求而推迟240去往P-MMU电路120的虚拟到物理地址转换。P-MMU电路120在ATS转换响应中返回来自主控系统页表的虚拟地址的转换。如果转换响应包括有效的虚拟到物理地址映射,则加速器单元140访问被发布到由ATS转换响应返回的处理器存储器130中的物理地址。在实施例中,A-MMU电路174向设备驱动器报告错误。该驱动器将检查错误,以查看错误是否可以由设备驱动器处置,例如,是否将出错的虚拟地址映射到对等加速器设备,而不是驱动器可以将一映射***到A-MMU电路174中并因此清除错误。在设备驱动器无法修复错误的实施例中,设备驱动器可以将错误向上输送给操作系统或虚拟机管理器(OS / VMM)。

OS / VMM页面错误处置器通过如下方式来服务于页面错误:确保页面驻留在处理器存储器电路130中;在具有所请求的引用处理器存储器电路130中的物理地址的许可的情况下更新系统页表中的虚拟地址映射;以及向加速器单元140返回页面请求响应(经由P-MMU电路120)。基于系统页表页面请求响应,加速器单元140可以恢复或重新调度错误地址。

图3是根据本文描述的至少一个实施例的当页面驻留在处理器存储器电路中时与当页面被迁移到加速器存储器电路180时相比的由处理器电路110执行页面访问操作的说明性系统300的框图。在实施例中,由处理器电路110执行的指令在虚拟存储器地址处生成存储器访问操作。在实施例中,处理器电路110将包含虚拟地址的请求310传送到P-MMU电路120。响应于从P-MMU电路120获得有效转换,所述数据被访问320并从处理器存储器电路130取回330。

响应于在P-MMU电路120中未能检测到虚拟地址而生成CPU页面错误。响应于由操作系统存储器管理活动引起的页面错误(诸如,写入时复制错误或由于到存储的页交换活动),O/S存储器管理器通过如下步骤服务于页面错误:使页面驻留在处理器存储器电路130中;在具有所要求的许可的情况下更新P-MMU电路120中的虚拟地址映射;以及恢复导致页面错误的指令的执行。

如果在处理器电路110试图访问先前在P-MMU电路120中由于页面驻留在加速器存储器电路180中而被标记为只读(或不存在)的页面时发生页面错误,则O/S进行的页面错误处理涉及处理器电路通知器,例如,O/S可以调用OS MMU通知器,该通知器将调用拥有返回页面(backing page)的注册驱动器。处理器电路通知器使加速器存储器电路180中的页面无效(通过将该页面迁移回处理器存储器电路130并将对应的虚拟到物理地址转换电路170条目转变为“不存在”,此后可以由O/S存储器管理器完成正常错误处理,并恢复引起页面错误的指令。

图4是根据本文描述的至少一个实施例的说明性系统400的框图,其中页面从处理器存储器电路130迁移到加速器存储器电路180。如图4中所描绘的,加速器单元140驱动器可导致向加速器存储器电路180的页面迁移。在实施例中,加速器单元驱动器基于虚拟存储器地址处发生存储器访问操作而启动迁移事件。在实施例中,加速器单元驱动器420为一个或多个页面分配加速器存储器电路180内的空间。

加速器单元驱动器420向O/S传送更新处理器页表电路430的请求。作为响应,O/S可以将P-MMU电路120和A-TLB电路172与TLB击落流程同步。在实施例中,响应于在只读状态下页面被迁移到加速器存储器电路180,TLB击落流程可以请求O/S存储器管理器在处理器页表电路430中把虚拟地址标记为只读。在实施例中,响应于在读/写状态下页面被迁移到加速器存储器电路180,TLB击落流程可以请求O/S存储器管理器在处理器页表电路430中把虚拟地址标记为“不存在”。

然后,加速器单元驱动器420将加速器页表电路中的虚拟地址映射更新到加速器存储器电路180中的页面。响应于在只读状态下页面被迁移到加速器存储器电路180,加速器单元驱动器420使处理器页表电路430和加速器页表都具有针对所述虚拟地址的只读映射。在这样的实施例中,处理器页表电路430包括虚拟地址到处理器存储器电路130中的页面的只读映射,并且加速器页表包括加速器存储器电路180中的页面的只读映射。另外,加速器单元驱动器420针对虚拟地址注册A-MMU同步处置器,以将加速器存储器电路180与对处理器页表电路430的未来更新进行同步。在实施例中,O/S存储器管理器针对未来更新来调用A-MMU同步处置器,以针对虚拟地址映射处理器页表电路430。在实施例中,A-MMU同步处置器使加速器存储器电路180中的页面无效。

响应于在读/写状态下页面被迁移到加速器存储器电路180,对于I/O附接的加速器单元140,加速器单元驱动器420向与A-MMU电路174相关联的O/S注册虚拟地址返回页面。注册虚拟地址使O/S存储器管理器能够在未来对虚拟地址引用时调用A-MMU电路174,从而允许页面从加速器存储器电路180反向迁移到处理器存储器电路130。对于一致性附接的加速器单元140,加速器单元驱动器420可以请求O/S存储器管理器更新处理器页表电路430中的向加速器存储器电路180中的已迁移页面的物理地址的虚拟地址映射。处理器页表电路430和加速器页表包括向加速器存储器电路180中的页面的读/写映射,从而实现跨CPU和加速器单元140的一致性访问。在实施例中,由于处理器页表电路430和加速器页表可以具有针对虚拟地址的映射,所以加速器单元驱动器420针对该虚拟地址注册A-MMU同步处置器,使得O/S存储器管理器对处理器页表电路430中的虚拟地址映射的任何未来修改可以与加速器页表同步。在实施例中,加速器单元驱动器420可以根据需要强制页面从加速器存储器电路180到设备存储器电路130的反向迁移。

图5是根据本文描述的至少一个实施例的说明性系统500的框图,其中页面从加速器存储器电路180迁移到处理器存储器电路130。如图5中所描绘的,加速器单元140驱动器可导致向处理器存储器电路130的页面迁移。在这种情况下,由处理器电路110执行的应用510可使加速器单元驱动器520基于在虚拟存储器地址发生存储器访问操作而启动迁移事件。在所访问的页面处于只读状态的实施例中,加速器单元驱动器520可以在A-PT中取消映射虚拟地址,从而引起把加速器单元140对虚拟地址的访问委派给P-MMU电路120,以便向存储或以其他方式保留在处理器存储器电路130中的页面转换。在所访问的页面处于读/写状态的实施例中,加速器单元驱动器520在加速器页表中取消映射虚拟地址。如果加速器单元140包括附接I/O的加速器单元,则加速器单元驱动器520在迁移页面时设置“FORCE FAULT”标志。“FORCE FAULT”标志迫使在页面迁移期间加速器单元140对虚拟地址的访问生成A-MMU页面错误。在页面迁移结束时,加速器单元驱动器可以将A-MMU页面错误视为假的。

加速器单元驱动器520然后去除去往加速器存储器电路180中的页面的链接。例如,对于一致性地附接的加速器单元140,加速器单元驱动器520可以去除A-MMU同步处置器与页面的处理器页表映射之间的链接。

加速器单元驱动器520然后调用页面数据移动器电路164内的加速器DMA电路540,用以将页面从加速器系统存储器180复制到处理器系统存储器130。

加速器单元驱动器520然后在具有与A-PT中的虚拟地址和处理器页面相关联的相同许可的情况下请求O/S更新处理器页表中的虚拟地址映射。

在完成页面迁移后,加速器单元驱动器520清除A-PT中的“ FORCE FAULT”标志(如果响应于处于读/写状态中的页面而设置的话,请参见上文)。重置“FORCE FAULT”标志允许加速器单元140将未来访问委派给P-MMU电路120,用于向处理器存储器电路180的虚拟到物理地址转换。

图6是根据本文描述的至少一个实施例的说明性的基于处理器的电子设备600的示意图,基于处理器的电子设备600包括中央处理单元(CPU)或多芯片模块(MCM)610和一个或多个加速器单元140,该中央处理单元(CPU)或多芯片模块(MCM)610包括处理器电路110。基于处理器的设备600可以另外包括图形处理单元(GPU)电路612。基于处理器的设备600可以另外包括以下各项中一个或多个:无线输入/输出(I/O)接口620、有线I/O接口630、系统存储器640、电源管理电路650、非暂时性存储设备660和网络接口670,网络接口670用于将基于处理器的设备600经由一个或多个网络680通信耦合到一个或多个外部设备(例如,基于云的服务器)690。以下讨论提供了对形成说明性的基于处理器的设备600的部件的一般简要概述。示例非限制性基于处理器的设备600可以包括但不限于:自动驾驶汽车、半自动驾驶汽车、手动控制汽车、智能电话、可穿戴计算机、便携式计算设备、手持计算设备、台式计算设备、刀片服务器设备、工作站等等。

相关领域的技术人员将理解,可以利用其他基于处理器的设备配置来实践所示的实施例以及其他实施例,其他基于处理器的设备包括便携式电子或手持式电子设备,例如智能电话、便携式计算机、可穿戴计算机、消费电子产品、个人计算机(“ PC”)、网络PC、小型计算机、刀片式服务器、大型计算机等。处理器电路120可以包括任何数量的硬连线或可配置电路,其中一些或全部可以包括电子部件、半导体器件和/或逻辑元件的可编程和/或可配置组合,所述电子部件、半导体器件和/或逻辑元件部分或全部设置在PC、服务器、或其他能够执行机器可读指令的计算系统中。

基于处理器的设备600包括总线或类似的通信链路616,该总线或类似的通信链路616通信耦合各种系统部件并促进各种系统部件之间的信息和/或数据的交换,所述各种系统部件包括CPU 610 /处理器电路110、图形处理器电路612、一个或多个无线I/O接口620、一个或多个有线I/O接口630、系统存储器640、一个或多个存储设备660和/或网络接口电路670的。基于处理器的设备600可在本文中以单数形式被提及,但这并不意图将实施例限制于单个基于处理器的设备600,因为在某些实施例中,可能存在多于一个基于处理器的设备600,其合并、包括或包含任何数量的通信耦合、并置或远程联网的电路或设备。

处理器电路110可以包括任何数量、类型的能够执行机器可读指令集的当前可用或未来开发的设备或它们的组合。处理器电路110可以包括但不限于任何当前或未来开发的单核或多核处理器或微处理器,诸如:一个或多个片上系统(SOC);多芯片模块(MCM);数字信号处理器(DSP);图形处理单元(GPU);专用集成电路(ASIC)、可编程逻辑单元、现场可编程门阵列(FPGA)等。除非另有说明,否则图6中所示的各个块的构造和操作是常规设计。因此,本文中不需要对这些块进行进一步详细描述,因为它们将被相关领域的技术人员理解。互连基于处理器的设备600的至少一些部件的总线616可以采用任何当前可用或未来开发的串行或并行总线结构或架构。

系统存储器640可以包括只读存储器(“ROM”)642和随机存取存储器(“RAM”)646。ROM 642的一部分可以用于存储或以其他方式保留基本输入/输出系统(“BIOS”)。BIOS 644例如通过使处理器电路110加载和/或执行一个或多个机器可读指令集614来向基于处理器的设备600提供基本功能。在实施例中,一个或多个机器可读指令集614中的至少一些使处理器电路110的至少一部分提供、创建、产生、转变和/或用作专用、特定和特别机器。

基于处理器的设备600可以包括至少一个无线输入/输出(I/O)接口620。所述至少一个无线I/O接口620可以通信耦合到一个或多个物理输出设备622(触觉设备、视频显示器、音频输出设备、硬拷贝输出设备等)。所述至少一个无线I/O接口620可以通信耦合到一个或多个物理输入设备624(指示设备、触摸屏、键盘、触觉设备等)。所述至少一个无线I/O接口620可以包括任何当前可用或未来开发的无线I/O接口。示例无线I/O接口包括但不限于:蓝牙®、近场通信(NFC)等。

基于处理器的设备600可以包括一个或多个有线输入/输出(I/O)接口630。所述至少一个有线I/O接口630可以通信耦合到一个或多个物理输出设备622(触觉设备、视频显示器、音频输出设备、硬拷贝输出设备等)。所述至少一个有线I/O接口630可以通信耦合到一个或多个物理输入设备624(指示设备、触摸屏、键盘、触觉设备等)。有线I/O接口630可以包括任何当前可用或未来开发的I/O接口。示例有线I/O接口包括但不限于:通用串行总线(USB)、IEEE 1394(“FireWire”)等。

基于处理器的设备600可以包括一个或多个通信耦合的非暂时性数据存储设备660。数据存储设备660可以包括一个或多个硬盘驱动器(HDD)和/或一个或多个固态存储设备(SSD)。一个或多个数据存储设备660可以包括任何当前或未来开发的存储器具、网络存储设备和/或系统。这种数据存储设备660的非限制性示例可以包括但不限于任何当前或未来开发的非暂时性存储器具或设备,诸如一个或多个磁存储设备、一个或多个光存储设备、一个或多个电阻性存储设备、一个或多个分子存储设备、一个或多个量子存储设备或以上各项的各种组合。在一些实施方式中,所述一个或多个数据存储设备660可以包括一个或多个可移动存储设备,诸如一个或多个闪速驱动器、闪速存储器、闪速存储单元、或能够通信耦合到基于处理器的设备600和从其解耦的类似器具或设备。

一个或多个数据存储设备660可以包括将相应存储设备或系统通信耦合到总线616的接口或控制器(未示出)。一个或多个数据存储设备660可以存储、保留或以其他方式包含机器可读指令集、数据结构、程序模块、数据存储、数据库、逻辑结构和/或对处理器电路110和/或图形处理器电路612和/或在处理器电路110和/或图形处理器电路612上执行或由它们执行的一个或多个应用有用的其他数据。在一些情况下,一个或多个数据存储设备660可以例如经由总线616或经由一个或多个有线通信接口630(例如,通用串行总线或USB)、一个或多个无线通信接口620(例如,蓝牙®、近场通信或NFC)、和/或一个或多个网络接口670(IEEE 802.3或以太网、IEEE 802.11或WiFi®等)通信耦合至处理器电路110。

机器可读指令集614和其他程序、应用、逻辑集和/或模块可以全部或部分存储在系统存储器640中。这样的指令集614可以全部或部分地从所述一个或多个数据存储设备660转移。指令集614可以在由处理器电路110和/或图形处理器电路612执行期间全部或部分地加载、存储或以其他方式保留在系统存储器640中。

基于处理器的设备600可以包括电源管理电路650,电源管理电路650控制能量存储设备652的一个或多个操作方面。在实施例中,能量存储设备652可以包括一个或多个一次(即,不可充电)或二次(即可充电)电池或类似的能量存储设备。在实施例中,能量存储设备652可以包括一个或多个超电容器或超级电容器。在实施例中,电源管理电路650可以改变、调整或控制从外部电源654到能量存储设备652和/或到基于处理器的设备600的能量流。电源654可以包括但不限于太阳能系统、商业电网、便携式发电机、外部能量存储设备或上述各项的任意组合。

为了方便起见,CPU 610 /处理器电路110、GPU电路612、无线I/O接口620、有线I/O接口630、系统存储器640、电源管理电路650、存储设备660和网络接口670被图示为经由总线616彼此通信耦合,从而在上述部件之间提供连接性。在替代实施例中,上述部件可以以与图6中所示不同的方式通信耦合。例如,上述部件中的一个或多个可以直接耦合到其他部件,或者可以经由一个或多个中间部件(未示出)彼此耦合。在另一示例中,上述部件中的一个或多个可以集成到处理器电路110和/或图形处理器电路612中。在一些实施例中,可以省略总线616的全部或一部分,并且使用合适的有线或无线连接把所述部件直接彼此耦合。

图7是说明性方法700的高级流程图,该说明性方法700使得页面在系统中的加速器存储器电路180和处理器存储器电路130之间转移,该系统包括耦合到处理器电路110的多个对等加速器单元。方法700有益地提高了存储器访问效率并使系统等待时间最小化。方法700开始于702。

在704,响应于在虚拟地址处接收到存储器访问,加速器虚拟到物理地址转换电路170确定与虚拟地址相对应的物理存储器地址。在实施例中,物理存储器地址可以位于本地加速器存储器电路180A中。在其他实施例中,物理存储器地址可以位于对等加速器单元存储器电路180B-180n中。在又其他实施例中,物理存储器地址可以位于处理器物理存储器电路130中。

在706,页面迁移电路160收集与在704处执行的虚拟到物理存储器地址查找相关联的信息和/或数据。在实施例中,迁移电路160收集与未命中相关联的信息和/或数据(即,在虚拟到物理地址转换电路170中没找到虚拟地址)。在实施例中,迁移电路160收集与命中(即,在虚拟到物理地址转换电路170中找到虚拟地址)相关联的信息和/或数据。这种信息可用于(i)通过确定加速器存储器访问去往远程存储器(诸如处理器存储器电路和/或一个或多个对等加速器电路中的加速器存储器电路)的频率来跟踪“热”页面;和/或(ii)通过确定加速器存储器访问访问本地加速器存储器电路中的数据的频率来跟踪“冷”页面。

在708处,迁移电路160使页面从处理器存储器电路130转移到加速器存储器电路180。在实施例中,迁移电路160可以响应于在物理到虚拟地址转换电路170中未找到虚拟地址但在处理器存储器电路130中找到虚拟地址而引起页面的转移。

在710处,迁移电路160使页面从加速器存储器电路180逐出到处理器存储器电路130。在实施例中,迁移电路160可以响应于处理器电路110在虚拟地址处执行存储器访问操作并且页面被存储或以其他方式保留在加速器存储器电路180中而引起页面的逐出。方法700在712处结束。

以下附图详述了用于实现上述实施例的示例性架构和系统。在一些实施例中,如上所述的一个或多个硬件部件和/或指令被如下详述的那样仿真,或者被实现为软件模块。

可以按照下面详述的“通用向量友好指令格式”来体现以上详述的(一个或多个)指令的实施例。在其他实施例中,没有利用这种格式,而是使用了另一种指令格式,但是,以下对写掩码寄存器、各种数据变换(混合(swizzle)、广播等)、寻址等的描述通常适用于对上述(一个或多个)指令的实施例的描述。另外,下面详述示例性系统、架构和流水线。上述(一个或多个)指令的实施例可以在这样的系统、架构和流水线上执行,但是不限于详述的那些。

指令集可以包括一种或多种指令格式。给定的指令格式可以定义各种字段(例如,位数、位的位置)以除了其它之外尤其指定要执行的操作(例如,操作码)以及要执行所述操作的(一个或多个)操作数和/或(一个或多个)其他数据字段(例如,掩码)。通过定义指令模板(或子格式),进一步细分一些指令格式。例如,给定指令格式的指令模板可以被定义为具有指令格式的字段的不同子集(所包括的字段通常具有相同的顺序,但是至少一些字段具有不同的位位置,因为包括的字段较少)和/或被定义为具有不同解释的给定字段。因此,ISA的每个指令都使用给定指令格式表达(并且,如果已被定义的话,按照该指令格式的指令模板中的给定一个表达),并且包括用于指定操作和操作数的字段。例如,示例性ADD指令具有特定操作码和指令格式,该指令格式包括用以指定该操作码的操作码字段和用以选择操作数的操作数字段(源1/目标和源2);并且该ADD指令在指令流中的出现将在选择特定操作数的操作数字段中具有特定内容。已发布和/或公开了SIMD扩展集合,其被称为高级向量扩展(AVX)(AVX1和AVX2)并使用向量扩展(VEX)编码方案(例如,参见Intel® 64 and IA-32Architectures Software Developer’s Manual, September 2014,2014年9月;并参见Intel® Advanced Vector Extensions Programming Reference, October 2014)。

示例性指令格式

本文描述的(一个或多个)指令的实施例可以以不同的格式体现。另外,下面详述示例性系统、架构和流水线。(一个或多个)指令的实施例可以在这样的系统、架构和流水线上执行,但是不限于详述的那些。

通用向量友好指令格式

向量友好指令格式是适合于向量指令(例如,存在某些特定于向量操作的字段)的指令格式。虽然描述了通过向量友好指令格式支持向量和标量运算二者的实施例,但是替代实施例仅使用向量友好指令格式的向量运算。

图8A-8B是图示根据本发明的实施例的通用向量友好指令格式及其指令模板的框图。图8A是图示根据本发明实施例的通用向量友好指令格式及其A类指令模板的框图;而图8B是图示根据本发明实施例的通用向量友好指令格式及其B类指令模板的框图。具体地,针对通用向量友好指令格式800定义A类和B类指令模板,这两个模板均不包括存储器访问805指令模板和存储器访问820指令模板。在向量友好指令格式的情境中,术语“通用”指代未与任何特定指令集绑定的指令格式。

尽管将描述其中向量友好指令格式支持以下内容的本发明实施例:具有32位(4字节)或64位(8字节)数据元素宽度(或大小)的64字节向量操作数长度(或大小)(并且因此,64字节的向量由16个双字大小的元素或替代地由8个四字大小的元素组成);具有16位(2字节)或8位(1字节)数据元素宽度(或大小)的64字节向量操作数长度(或大小);具有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小)的32字节向量操作数长度(或大小);以及具有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小)的16位向量操作数长度(或大小);但是替代实施例可以支持具有更多、更少或不同数据元素宽度(例如128位(16字节)数据元素宽度)的更多、更少和/或不同的向量操作数大小(例如256字节向量操作数)。

图8A中的A类指令模板包括:1)在非存储器访问805指令模板内示出非存储器访问、全舍入控制类型操作810指令模板和非存储器访问、数据变换类型操作815指令模板;2)在存储器访问820指令模板内示出了存储器访问、暂时性825指令模板和存储器访问、非暂时性830指令模板。图8B中的B类指令模板包括:1)在非存储器访问805指令模板内示出了非存储器访问、写掩码控制、部分舍入控制类型操作812指令模板和非存储器访问、写掩码控制、vsize类型操作817指令模板;和2)在存储器访问820指令模板内示出存储器访问、写掩码控制827指令模板。

通用向量友好指令格式800包括以下以图8A和8B中所示的顺序列出的以下字段。

格式字段840–此字段中的特定值(指令格式标识符值)唯一标识向量友好指令格式,并因此标识在指令流中向量友好指令格式的指令的出现。这样,在仅具有通用向量友好指令格式的指令集不需要该字段的意义上,该字段是可选的。

基本操作字段842–其内容区分不同的基本操作。

寄存器索引字段844–其内容直接或通过地址生成来指定源操作数和目标操作数的位置,无论它们在寄存器中还是在存储器中。这些包括足够数量的位用以从PxQ(例如32x512、16x128、32x1024、64x1024)寄存器文件中选择N个寄存器。尽管在一个实施例中,N可以是多达三个源和一个目标寄存器,但是替代实施例可以支持更多或更少的源和目标寄存器(例如,可以支持多达两个源,其中这些源之一也充当目标,可以支持多达三个源,其中这些源之一也充当目标,可支持多达两个源和一个目标)。

修饰符字段846–其内容将指定存储器访问的通用向量指令格式的指令的出现与未指定存储器访问的那些区分开;也就是说,在非存储器访问805指令模板和存储器访问820指令模板之间进行区分。存储器访问操作读取和/或写入到存储器层次结构(在一些情况下,使用寄存器中的值指定源和/或目标地址),而非存储器访问操作则不(例如,源和目标是寄存器)。尽管在一个实施例中该字段也在执行存储器地址计算的三种不同方式之间进行选择,但是替代实施例可以支持更多、更少或不同的方式来执行存储器地址计算。

扩充操作字段850–其内容区分除基本操作之外还要执行多种不同操作中的哪一种。该字段是特定于情境的。在本发明的一个实施例中,该字段被划分为类字段868、α字段852和β字段854。扩充操作字段850允许在单个指令而不是2、3或4个指令中执行共同的几组操作。

缩放字段860–其内容允许缩放索引字段的内容,以用于存储器地址生成(例如,用于使用2缩放 *索引+ 基数的地址生成)。

位移字段862A–其内容用作存储器地址生成的一部分(例如,用于使用2缩放*索引+基数+位移的地址生成)。

位移因子字段862B(请注意,位移字段862A直接在位移因子字段862B上方的并置指示使用一个或另一个)–其内容用作地址生成的一部分;它指定了要被缩放存储器访问的大小(N)倍的位移因子–其中N是存储器访问中的字节数(例如,用于使用2缩放 *索引+基数+经缩放的位移的地址生成)。冗余的低阶位被忽略,并且因此,将位移因子字段的内容乘以存储器操作数总大小(N)以便生成最终位移来用于计算有效地址。N的值由处理器硬件在运行时基于完整操作码字段874(在下文中描述)和数据操纵字段854C来确定。在不将位移字段862A和位移因子字段862B用于非存储器访问805指令模板和/或不同的实施例可以仅实现这两者中的一个或不实现的意义上来说,位移字段862A和位移因子字段862B是可选的。

数据元素宽度字段864–其内容区分要使用多个数据元素宽度中的哪一个(在一些实施例中,针对所有指令;在其他实施例中,仅针对一些指令)。在如果仅支持一个数据元素宽度和/或使用操作码的一些方面支持数据元素宽度则不需要该字段的意义上来说,该字段是可选的。

写掩码字段870–其内容基于每个数据元素位置控制目标向量操作数中的数据元素位置是否反映了基本操作和扩充操作的结果。A类指令模板支持合并写入掩蔽,而B类指令模板支持合并写入掩蔽和归零写入掩蔽二者。在合并时,向量掩码允许在执行任何操作(由基本操作和扩充操作指定)期间保护目标中的任何元素集免于更新。在另一个实施例中,当对应掩码位为0时,保留目标的每个元素的旧值。相反,当归零时,向量掩码允许在执行任何操作(由基本操作和扩充操作指定)期间将目标中的任何元素集归零;在一个实施例中,当对应掩码位具有0值时,将目标的元素设置为0。此功能的子集是控制正在执行的操作的向量长度的能力(即,从第一个到最后一个元素,被修改的元素的范围);但是,修改的元素不必是连续的。因此,写掩码字段870允许部分向量操作,包括加载、存储、算术、逻辑等。尽管描述了其中写掩码字段870的内容选择多个写掩码寄存器中包含要使用的写掩码的写掩码寄存器(并且因此写掩码字段870的内容间接地标识要执行的掩蔽)的本发明的实施例,但替代实施例替代地或附加地允许写掩码字段870的内容直接指定要执行的掩蔽。

立即数字段872–其内容允许指定立即数。在不支持立即数的通用向量友好格式的实现中不存在该字段并且在不使用立即数的指令中也不存在该字段的意义上该字段是可选的。

类别字段868–其内容区分不同类别的指令。参考图8A和8B,该字段的内容在A类指令和B类指令之间选择。在图8A和8B中,圆角方形用于指示在字段中存在特定值(例如,在图8A和8B中分别针对类别字段868的A类868A和B类868B)。

A类指令模板

在A类的非存储器访问805指令模板的情况下,α字段852被解释为RS字段852A,其内容区分要执行不同的扩充操作类型中的哪一个(例如,舍入852A.1和数据变换852A.2分别指定非存储器访问、舍入类型操作810和非存储器访问、数据变换类型操作815指令模板),而β字段854区分要执行所指定类型的操作中的哪一个。在非存储器访问805指令模板中,不存在缩放字段860、位移字段862A和位移缩放字段862B。

非存储器访问指令模板–全舍入控制类型操作

在非存储器访问全舍入控制类型操作810指令模板中,β字段854被解释为舍入控制字段854A,其(一个或多个)内容提供静态舍入。尽管在本发明的所描述的实施例中,舍入控制字段854A包括抑制所有浮点异常(SAE)字段856和舍入操作控制字段858,但是替代实施例可以支持可以将这两个概念都编码为同一字段或仅具有这些概念/字段中的一个或另一个(例如,可以仅具有舍入操作控制字段858)。

SAE字段856 –其内容区分是否禁用异常事件报告;当SAE字段856的内容指示抑制被启用,给定指令不会报告任何种类的浮点异常标志,并且不会引发任何浮点异常处置器。

舍入操作控制字段858–其内容区分要执行一组舍入操作中的哪一个(例如,向上舍入、向下舍入、向零舍入和向最近舍入)。因此,舍入操作控制字段858允许在每个指令的基础上改变舍入模式。在处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段850的内容优先于该寄存器值。

非存储器访问指令模板–数据变换类型操作

在非存储器访问数据变换类型操作815指令模板中,β字段854被解释为数据变换字段854B,其内容区分要执行多个数据变换中的哪一个(例如,无数据变换、混乱、广播)。

在A类存储器访问820指令模板的情况下,α字段852被解释为驱逐提示字段852B,其内容区分要使用哪个驱逐提示(在图8A中,暂时性852B.1和非暂时性852B.2分别指定存储器访问、暂时性825指令模板和存储器访问、非暂时性830指令模板),而β字段854被解释为数据操纵字段854C,其内容区分要执行多个数据操纵操作(也称为基元)中的哪一个(例如,不操纵;广播;源的上转换;和目标的下转换)。存储器访问820指令模板包括缩放字段860,以及可选地包括位移字段862A或位移缩放字段862B。

向量存储器指令在转换支持的情况下执行从存储器的向量加载以及向存储器的向量存储。与常规向量指令一样,向量存储器指令按照逐数据元素方式从/向存储器转移数据,其中实际转移的元素由被选作写掩码的向量掩码的内容指定。

存储器访问指令模板–暂时性

暂时性数据是有可能会被足够快地重用从而受益于高速缓存的数据。但是,这是一个提示,并且不同的处理器可能以不同的方式实现它,包括完全忽略提示。

存储器访问指令模板–非暂时性

非暂时性数据是这样的数据:该数据不太可能被足够快地重用以使其受益于在第一级高速缓存中的高速缓存,并应该将其优先逐出。但是,这是一个提示,并且不同的处理器可以以不同的方式实现它,包括完全忽略提示。

B类指令模板

在B类指令模板的情况下,α字段852被解释为写掩码控制(Z)字段852C,其内容区分由写掩码字段870控制的写掩蔽应当合并还是归零。

在B类非存储器访问805指令模板的情况下,β字段854的一部分被解释为RL字段857A,其内容区分要执行不同扩充操作类型中的哪一个(例如,舍入857A.1和向量长度(VSIZE)857A.2分别指定非存储器访问、写掩码控制、部分舍入控制类型操作812指令模板和非存储器访问、写掩码控制、VSIZE类型操作817指令模板),而β字段854的其余部分区分要执行所指定的类型的操作中的哪一个。在非存储器访问805指令模板中,不存在缩放字段860、位移字段862A和位移缩放字段862B。

在非存储器访问、写掩码控制、部分舍入控制类型操作810指令模板中,β字段854的其余部分被解释为舍入操作字段859A,并且异常事件报告被禁用(给定指令不报告任何种类的浮点异常标志,并且不会引发任何浮点异常处置器)。

舍入操作控制字段859A–就像舍入操作控制字段858一样,其内容区分要执行一组舍入操作(例如,向上舍入、向下舍入、向零舍入和向最近舍入)中的哪一个。因此,舍入操作控制字段859A允许在每个指令的基础上改变舍入模式。在处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段850的内容优先于该寄存器值。

在非存储器访问、写掩码控制、VSIZE类型操作817指令模板中,β字段854的其余部分被解释为向量长度字段859B,其内容区分要对多个数据向量长度中的哪一个执行(例如128、256或512字节)。

在B类存储器访问820指令模板的情况下,β字段854的一部分被解释为广播字段857B,其内容区分是否要执行广播类型数据操纵操作,而β字段854的其余部分被解释为向量长度字段859B。存储器访问820指令模板包括缩放字段860,并且可选地包括位移字段862A或位移缩放字段862B。

关于通用向量友好指令格式800,示出了完整操作码字段874,完整操作码字段874包括格式字段840、基本操作字段842和数据元素宽度字段864。虽然示出了其中完整操作码字段874包括所有这些字段的一个实施例,但在不支持所有这些字段的实施例中,完整操作码字段874并非包括所有这些字段。完整操作码字段874提供操作代码(操作码)。

扩充操作字段850、数据元素宽度字段864和写掩码字段870允许以通用向量友好指令格式在每个指令的基础上指定这些特征。

写掩码字段和数据元素宽度字段的组合创建类型化指令,因为它们允许基于不同的数据元素宽度来应用掩码。

在A类和B类内找到的各种指令模板在不同情况下是有益的。在本发明的一些实施例中,不同的处理器或处理器内的不同核心可以仅支持A类、仅支持B类或支持这两类。例如,意图用于通用计算的高性能通用乱序核心可以仅支持B类,意图主要用于图形和/或科学(吞吐量)计算的核心可以仅支持A类,而意图用于上述两者的核心可以支持A类和B类二者(当然,具有来自两个类别的模板和指令的某种混合但是并非全部模板和指令都来自两个类别的核心在本发明的范围内)。同样,单个处理器可以包括多个核心,所有这些核心都支持相同的类别,或者其中不同的核心支持不同的类别。例如,在具有分离的图形和通用核心的处理器中,意图主要用于图形和/或科学计算的图形核心之一可以仅支持A类,而一个或多个通用核心可以是仅支持B类的高性能通用核心,具有意图用于通用计算的乱序执行和寄存器重命名。不具有分离的图形核心的另一处理器可以包括支持A类和B类这两者的一个或多个通用按序或乱序核心。当然,在本发明的不同实施例中,来自一个类别的特征也可以在另一类别中实现。用高级语言编写的程序将被适配(例如,及时编译或静态编译)成为各种不同的可执行形式,包括:1)仅具有用于执行的目标处理器支持的(一个或多个)类别的指令的形式;或2)具有替代例程并具有控制流代码的形式,所述替代例程是使用所有类别的指令的不同组合编写的,所述控制流代码基于当前正在执行所述代码的处理器所支持的指令来选择要执行的例程。

示例性特定向量友好指令格式

图9是图示根据本发明实施例的示例性特定向量友好指令格式的框图。图9示出了特定向量友好指令格式900,该特定向量友好指令格式900在其指定字段的位置、大小、解释和顺序以及针对这些字段中的一些的值的意义上是特定的。特定向量友好指令格式900可以用于扩展x86指令集,并且因此一些字段与现有x86指令集及其扩展(例如AVX)中使用的字段类似或相同。该格式与具有扩展的现有x86指令集的前缀编码字段、真实操作码字节字段、MOD R/M字段、SIB字段、位移字段和立即数字段保持一致。图示了来自图8 A和8B的字段,来自图9的字段映射到图8 A和8B的字段中。

应当理解,尽管出于说明性目的在通用向量友好指令格式800的情境中参考特定向量友好指令格式900描述了本发明的实施例,但是本发明不限于特定向量友好指令格式900,除非有声明。例如,通用向量友好指令格式800考虑了各个字段的各种可能的大小,而特定向量友好指令格式900被示为具有特定大小的字段。作为特定示例,虽然在特定向量友好指令格式900中将数据元素宽度字段864图示为一位字段,但是本发明不限于此(即,通用向量友好指令格式800考虑了数据元素宽度字段864的其他大小)。

通用向量友好指令格式800包括以下按照图9A中所示的顺序列出的以下字段。

EVEX前缀(字节0-3)902-以四字节形式编码。

格式字段840(EVEX字节0,位[7:0])-第一字节(EVEX字节0)是格式字段840,并且它包含0x62(在本发明的一个实施例中用于区分向量友好指令格式的唯一值)。

第二到第四字节(EVEX字节1-3)包括提供特定能力的多个位字段。

REX字段905(EVEX字节1,位[7-5])–由以下各项组成:EVEX.R位字段(EVEX字节1,位[7]–R)、EVEX.X位字段(EVEX字节1,位[6] ]–X)、以及857BEX字节1,位[5]–B)。EVEX.R、EVEX.X和EVEX.B位字段提供与对应的VEX位字段相同的功能,并使用1s补码形式进行编码,即ZMM0被编码为1111B,ZMM15被编码为0000B。如本领域中已知的,指令的其他字段对寄存器索引的低三位(rrr、xxx和bbb)进行编码,使得可以通过EVEX.R、EVEX.X、和EVEX.B 相加来形成Rrrr、Xxxx和Bbbb。

REX'字段810–这是REX'字段810的第一部分并且是EVEX.R'位字段(EVEX字节1,位[4]-R'),用于对扩展的32个寄存器集合的高16个或低16个进行编码。在本发明的一个实施例中,该位以及如下所指示的其他位以位反转格式存储以区别于(采用众所周知的x86 32位模式)真实操作码字节为62的BOUND指令,但是在MOD R/M字段(如下所述)中不接受MOD字段中的值11;本发明的替代实施例不以反转格式存储该位和下面指示的其他位。值1用于对低16个寄存器进行编码。换句话说,R'Rrrr是通过组合EVEX.R'、EVEX.R和来自其他字段的其他RRR而形成的。

操作码映射字段915(EVEX字节1,位[3:0]–mmmm)–其内容编码隐含的前导操作码字节(0F、0F 38或0F 3)。

数据元素宽度字段864(EVEX字节2,位[7]–W)-由符号EVEX.W表示。 EVEX.W用于定义数据类型的粒度(大小)(32位数据元素或64位数据元素)。

EVEX.vvvv 920(EVEX字节2,位[6:3] -vvvv)-EVEX.vvvv的作用可以包括以下各项:1)EVEX.vvvv对以反转(1s补码)形式指定的第一源寄存器操作数进行编码,并且对于具有2个或更多个源操作数的指令有效; 2)EVEX.vvvv对以1s补码形式指定的用于某些向量移位的目标寄存器操作数进行编码;或3)EVEX.vvvv不对任何操作数进行编码,该字段为保留字段,并且应包含1111b。因此,EVEX.vvvv字段920对以反转(1s补码)形式存储的第一源寄存器指定符的4个低阶位进行编码。根据该指令,额外的不同EVEX位字段用于将指定符大小扩展到32个寄存器。

EVEX.U 868类别字段(EVEX字节2,位[2] -U)–如果EVEX.U=0,则它指示A类或EVEX.U0;如果EVEX.U=1,则它指示B类或EVEX.U1。

前缀编码字段925(EVEX字节2,位[1:0] -pp)–为基本操作字段提供附加位。除了为采用EVEX前缀格式的旧版SSE指令提供支持之外,这还具有压缩SIMD前缀的优点(EVEX前缀只需要2位,而不是需要一个字节来表达SIMD前缀)。在一个实施例中,为了支持使用采用旧版格式且采用EVEX前缀格式的SIMD前缀(66H、F2H、F3H)的旧版SSE指令,将这些旧版SIMD前缀被编码到SIMD前缀编码字段中;并且在提供给解码器的PLA之前,在运行时将其扩展为旧版SIMD前缀(因此PLA可以执行旧版格式和EVEX格式的这些旧版指令,而无需进行修改)。尽管较新的指令可以将EVEX前缀编码字段的内容直接用作操作码扩展,但是某些实施例以类似方式扩展以保持一致性,但允许这些旧版SIMD前缀指定不同的含义。替代实施例可以重新设计PLA以支持2位SIMD前缀编码,并因此不需要扩展。

α字段852(EVEX字节3,位[7]–EH;也称为EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写掩码控制和EVEX.N;也用α图示)–如前所述,此字段是特定于情境的。

β字段854(EVEX字节3,位[6:4] -SSS,也称为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也用βββ图示)–如前所述,该字段是特定于情境的。

REX'字段810–这是REX'字段的其余部分,并且是EVEX.V'位字段(EVEX字节3,位[3]-V'),其可用于编码扩展的32个寄存器集合的高16个或低16个。该位以位反转格式存储。值1用于对低16个寄存器进行编码。换句话说,V'VVVV是通过合并EVEX.V'、EVEX.vvvv形成的。

写掩码字段870(EVEX字节3,位[2:0] -kkk)–如前所述,其内容指定写掩码寄存器中寄存器的索引。在本发明的一个实施例中,特定值EVEX.kkk=000具有暗示没有写掩码用于该特定指令的专用行为(这可以以各种方式实现,包括使用硬连线到所有的写掩码,或绕过掩蔽硬件的硬件)。

真实操作码字段930(字节4)也称为操作码字节。在此字段中指定操作码的一部分。

MOD R/M字段940(字节5)包括MOD字段942、Reg字段944和R/M字段946。如前所述,MOD字段942的内容区分存储器访问操作和非存储器访问操作。Reg字段944的作用可以概括为两种情况:对目标寄存器操作数或源寄存器操作数进行编码,或者被视为操作码扩展,并且不用于对任何指令操作数进行编码。R/M字段946的作用可以包括以下内容:对引用存储器地址的指令操作数进行编码,或者对目标寄存器操作数或源寄存器操作数进行编码。

缩放、索引、基础(SIB)字节(字节6)-如前所述,缩放字段850的内容用于存储器地址生成。SIB.xxx 954和SIB.bbb 956–这些字段的内容之前已关于寄存器索引Xxxx和Bbbb被提及。

位移字段862A(字节7-10)–当MOD字段942包含10时,字节7-10是位移字段862A,并且它的工作方式与旧版32位位移(disp32)相同,并且以字节粒度工作。

位移因子字段862B(字节7)–当MOD字段942包含01时,字节7是位移因子字段862B。该字段的位置与旧版x86指令集8位位移(disp8)的位置相同,旧版x86指令集8位位移以字节粒度工作。由于disp8是符号扩展的,因此它只能在-128和127个字节偏移量之间寻址。就64字节高速缓存线而言,disp8使用8位,该8位可以被设置为仅四个真正有用的值-128、-64、0和64;由于通常需要更大的范围,因此使用了disp32;但是,disp32需要4个字节。与disp8和disp32相比,位移因子字段862B是对disp8的重新解释;当使用位移因子字段862B时,实际位移由位移因子字段的内容乘以存储器操作数访问的大小(N)来确定。这种类型的位移称为disp8 * N。这样减少了平均指令长度(单个字节用于位移,但范围要大得多)。这种压缩的位移基于这样的假设:有效位移是存储器访问的粒度的倍数,并且因此,不需要对地址偏移量的冗余低阶位进行编码。换句话说,位移因子字段862B替代了旧版的x86指令集8位位移。因此,位移因子字段862B以与x86指令集8位位移相同的方式被编码(因此,在ModRM/SIB编码规则中没有改变),唯一的例外是disp8被过载为disp8 * N。换句话说,编码规则或编码长度没有改变,但只有硬件对位移值的解释方面有改变(需要对位移进行缩放度为存储器操作数的大小的缩放,以获得逐字节的地址偏移量)。立即数字段872如前所述操作。

完整操作码字段

图9B是图示根据本发明的一个实施例的构成完整操作码字段874的特定向量友好指令格式900的字段的框图。具体而言,完整操作码字段874包括格式字段840、基本操作字段842和数据元素宽度(W)字段864。基本操作字段842包括前缀编码字段925、操作码映射字段915和真实操作码字段930。

寄存器索引字段

图9C是图示根据本发明的一个实施例的构成寄存器索引字段844的特定向量友好指令格式900的字段的框图。具体地,寄存器索引字段844包括REX字段905、REX'字段910、MODR/M.reg字段944、MODR/M.r/m字段946、VVVV字段920、xxx字段954和bbb字段956。

扩充操作字段

图9D是图示根据本发明的一个实施例的构成扩充操作字段850的特定向量友好指令格式900的字段的框图。当类别(U)字段868包含0时,它表示EVEX.U0(A类 868A);当它包含1时,它表示EVEX.U1(B类 868B)。当U=0且MOD字段942包含11(表示非存储器访问操作)时,α字段852(EVEX字节3,位[7]–EH)被解释为rs字段852A。当rs字段852A包含1(舍入852A.1)时,将β字段854(EVEX字节3,位[6:4]-SSS)解释为舍入控制字段854A。舍入控制字段854A包括一位SAE字段856和两位舍入操作字段858。当rs字段852A包含0(数据变换852A.2)时,β字段854(EVEX字节3,位[6:4]-SSS)解释为三位数据变换字段854B。当U=0且MOD字段942包含00、01或10(表示存储器访问操作)时,α字段852(EVEX字节3,位[7]–EH)被解释为逐出提示(EH)字段852B并且β字段854(EVEX字节3,位[6:4] -SSS)被解释为三位数据操纵字段854C。

当U=1时,α字段852(EVEX字节3,位[7]–EH)被解释为写掩码控制(Z)字段852C。当U=1并且MOD字段942包含11(表示非存储器访问操作)时,β字段854的一部分(EVEX字节3,位[4] -S0)被解释为RL字段857A;当它包含1(舍入857A.1)时,β字段854的其余部分(EVEX字节3,位[6-5]-S2-1)被解释为舍入操作字段859A,而当RL字段857A包含0(VSIZE 857.A2)时,β字段854的其余部分(EVEX字节3,位[6-5]-S2-1)被解释为向量长度字段859B(EVEX字节3,位[6-5]-L1-0)。当U=1且MOD字段942包含00、01或10(表示存储器访问操作)时,将β字段854(EVEX字节3,位[6:4]-SSS)解释为向量长度字段859B (EVEX字节3,位[6-5] -L1-0)和广播字段857B(EVEX字节3,位[4] -B)。

示例性性寄存器架构

图10是根据本发明的一个实施例的寄存器架构1000的框图。在图示的实施例中,有32个向量寄存器1010,它们的宽度为512位;这些寄存器称为zmm0至zmm31。低16个zmm寄存器的低阶256位覆盖在寄存器ymm0-16上。低16个zmm寄存器的低阶128位(ymm寄存器的低阶128位)覆盖在寄存器xmm0-15上。特定向量友好指令格式900如下表中所示对这些覆盖的寄存器文件进行操作。

Figure 243736DEST_PATH_IMAGE001

换句话说,向量长度字段859B在最大长度和一个或多个其他较短长度之间进行选择,其中每个这种较短长度是先前长度的一半;并且不具有向量长度字段859B的指令模板对最大向量长度进行操作。此外,在一个实施例中,特定向量友好指令格式900的B类指令模板对打包或标量单/双精度浮点数据和打包或标量整数数据进行操作。标量操作是对zmm/ymm/xmm寄存器中最低阶的数据元素位置执行的操作;高阶数据元素位置与该指令之前它们的位置相同或者取决于实施例被归零。

写掩码寄存器1015-在所示的实施例中,有8个写掩码寄存器(k0至k7),每个大小为64位。在替代实施例中,写掩码寄存器1015的大小为16位。如前所述,在本发明的一个实施例中,向量掩码寄存器k0不能用作写掩码。当通常将指示k0的编码用于写掩码时,它选择硬连线的写掩码0xFFFF,从而有效地禁用针对该指令的写掩蔽。

通用寄存器1025-在所示的实施例中,有十六个64位通用寄存器,它们与现有的x86寻址模式一起用于寻址存储器操作数。这些寄存器名称为RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP和R8至R15。

标量浮点堆栈寄存器文件(x87堆栈)1045,其别名为MMX打包整数平坦寄存器文件1050-在所示的实施例中,x87堆栈是八元素堆栈,用于使用x87指令集扩展对32/64/80位浮点数据执行标量浮点操作;而MMX寄存器用于对64位打包整数数据执行操作,以及用于为在MMX和XMM寄存器之间执行的一些操作保存操作数。

本发明的替代实施例可以使用更宽或更窄的寄存器。另外,本发明的替代实施例可以使用更多、更少或不同的寄存器文件和寄存器。

示例性核心架构、处理器和计算机架构

可以以不同的方式,出于不同的目的以及在不同的处理器中实现处理器核心。例如,这样的核心的实现可以包括:1)意图用于通用计算的通用有序核心;2)意图用于通用计算的高性能通用乱序核心;3)主要用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实现可以包括:1)CPU,包括意图用于通用计算的一个或多个通用有序核心和/或意图用于通用计算的一个或多个通用乱序核心;和2)协处理器,包括意图主要用于图形和/或科学(吞吐量)的一个或多个专用核心。这种不同的处理器导致了不同的计算机系统架构,不同的计算机系统架构可以包括:1)协处理器位于与CPU分离的芯片上;2)协处理器位于与CPU相同的封装中的分离管芯上;3)协处理器与CPU位于同一管芯上(在这种情况下,这种协处理器有时被称为专用逻辑,诸如集成图形和/或科学(吞吐量)逻辑,或称为专用核心); 4)片上系统,其可以在相同管芯上包括所描述的CPU(有时称为(一个或多个)应用核心或(一个或多个)应用处理器)、上述协处理器以及附加功能。接下来描述示例性核心架构,随后描述示例性处理器和计算机架构。

示例性核心架构

有序和乱序核心框图

图11A是图示了根据本发明实施例的示例性有序流水线和示例性寄存器重命名乱序发布/执行流水线二者的框图。图11B是图示根据本发明实施例的处理器中将包括的有序架构核心的示例性实施例和示例性寄存器重命名乱序发布/执行架构核心二者的框图。图11A和11B中的实线框图示了有序流水线和有序核心,而可选添加的虚线框图示了寄存器重命名乱序发布/执行流水线和核心。假定有序方面是乱序方面的子集,将描述乱序方面。

在图11A中,处理器流水线1100包括取回阶段1102、长度解码阶段1104、解码阶段1106、分配阶段1108、重命名阶段1110、调度(也称为分派或发布)阶段1112、寄存器读取/存储器读取阶段1114、执行阶段1116、回写/存储器写入阶段1118、异常处置阶段1122和提交阶段1124。

图11B示出了处理器核心1190,其包括耦合至执行引擎单元1150的前端单元1130,并且前端单元1130和执行引擎单元1150两者均耦合至存储器单元1170。核心1190可以是精简指令集计算(RISC)核心、复杂指令集计算(CISC)核心、超长指令字(VLIW)核心或混合或替代的核心类型。作为又一选择,核心1190可以是专用核心,诸如例如网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(GPGPU)核心、图形核心等等。

前端单元1130包括分支预测单元1132,分支预测单元1132耦合到指令高速缓存单元1134,指令高速缓存单元1134耦合到指令转换后备缓冲器(TLB)1136,TLB 1136耦合到指令取回单元1138,指令取回单元1138耦合到解码单元1140。解码单元1140(或解码器)可以解码指令并生成一个或多个微操作、微代码输入点、微指令、其他指令或其他控制信号作为输出,这些输出从原始指令被解码,或者以其他方式反映原始指令,或者从原始指令得出。可以使用各种不同的机制来实现解码单元1140。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核心1190包括微代码ROM或存储用于某些宏指令的微代码的其它介质(例如,在解码单元1140中或另外在前端单元1130内)。解码单元1140耦合到执行引擎单元1150中的重命名/分配器单元1152。

执行引擎单元1150包括重命名/分配器单元1152,重命名/分配器单元1152耦合到退役单元1154和由一个或多个调度器单元1156组成的集合。(一个或多个)调度器单元1156表示任何数量的不同调度器,包括预留站、中央指令窗口等。(一个或多个)调度器单元1156耦合到(一个或多个)物理寄存器文件单元1158。每个物理寄存器文件单元1158表示一个或多个物理寄存器文件,不同的物理寄存器文件存储一个或多个不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一条指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器文件单元1158包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(一个或多个)物理寄存器文件单元1158被退役单元1154覆盖,以图示可以实现寄存器重命名和乱序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)退役寄存器文件;使用(一个或多个)未来文件、(一个或多个)历史缓冲器和(一个或多个)退役寄存器文件;使用寄存器映射和寄存器池;等等)。退役单元1154和(一个或多个)物理寄存器文件单元1158耦合到(一个或多个)执行集群1160。(一个或多个)执行集群1160包括由一个或多个执行单元1162组成的集合和由一个或多个存储器访问单元1164组成的集合。执行单元1162可以对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或几组功能的多个执行单元,但是其他实施例可以仅包括一个执行单元或全部执行所有功能的多个执行单元。(一个或多个)调度器单元1156、(一个或多个)物理寄存器文件单元1158和(一个或多个)执行集群1160被示为可能是复数个,因为某些实施例针对某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线和/或存储器访问流水线,它们均具有其自己的调度器单元、(一个或多个)物理寄存器文件单元和/或执行群集–并且在单独的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有(一个或多个)存储器访问单元1164)的某些实施例。还应该理解,在使用单独流水线的情况下,这些流水线中的一个或多个可能是乱序发布/执行的,而其余是有序的。

存储器访问单元1164的集合耦合到存储器单元1170,存储器单元1170包括耦合到数据高速缓存单元1174的数据TLB单元1172,该数据高速缓存单元1174耦合到二级(L2)高速缓存单元1176。在一个示例性实施例中,存储器访问单元1164可以包括加载单元、存储地址单元和存储数据单元,它们中的每一个都耦合到存储器单元1170中的数据TLB单元1172。指令高速缓存单元1134还耦合到存储器单元1170中的2级(L2)高速缓存单元1176。L2高速缓存单元1176耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。

作为示例,示例性寄存器重命名乱序发布/执行核心架构可以实现流水线1100如下:1)指令取回1138执行取回和长度解码阶段1102和1104;2)解码单元1140执行解码阶段1106;3)重命名/分配器单元1152执行分配阶段1108和重命名阶段1110;4)(一个或多个)调度器单元1156执行调度阶段1112;5)(一个或多个)物理寄存器文件单元1158和存储器单元1170执行寄存器读取/存储器读取阶段1114;执行集群1160实施执行阶段1116;6)存储器单元1170和(一个或多个)物理寄存器文件单元1158执行回写/存储器写入阶段1118;7)异常处置阶段1122中可能涉及各种单元;以及8)退役单元1154和(一个或多个)物理寄存器文件单元1158执行提交阶段1124。

核心1190可支持包括本文所述的(一个或多个)指令的一个或多个指令集(例如x86指令集(具有一些扩展,这些扩展已添加到较新版本);加利福尼亚州桑尼维尔的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔的ARM控股公司的ARM指令集(具有可选的附加扩展,诸如NEON)。在一个实施例中,核心1190包括支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许使用打包数据来执行许多多媒体应用所使用的操作。

应当理解,核心可以支持多线程(执行两个或更多并行的操作或线程集合),并且可以以各种方式做到这一点,包括时间划分多线程、同时多线程(其中单个物理核心为每个线程提供逻辑核心,物理核心同时进行多线程),或者是它们的组合(例如,时间划分取回和解码以及此后的同时多线程,诸如在英特尔®超线程技术中)。

尽管在乱序执行的情境中描述了寄存器重命名,但是应该理解,可以在有序架构中使用寄存器重命名。尽管所示的处理器实施例还包括分离的指令和数据高速缓存单元1134/1174和共享的L2高速缓存单元1176,但是替代实施例可以具有用于指令和数据二者的单个内部高速缓存,诸如例如1级( L1)内部高速缓存,或多个级别的内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和在核心和/或处理器外部的外部高速缓存的组合。替代地,所有高速缓存可以在核心和/或处理器的外部。

特定示例性有序核心架构

图12A和图12B图示了更特定的示例性有序核心架构的框图,该核心将是芯片中的几个逻辑块(包括相同类型和/或不同类型的其他核心)之一。根据应用,所述逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。

图12A是根据本发明的实施例的单个处理器核心以及其与管芯上互连网络1202的连接以及其2级(L2)高速缓存1204的本地子集的框图。在一个实施例中,指令解码器1200支持具有打包数据指令集扩展的x86指令集。 L1高速缓存1206允许低等待时间访问将存储器高速缓存到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元1208和向量单元1210使用单独的寄存器集合(分别为标量寄存器1212和向量寄存器1214),并且在它们之间转移的数据被写入存储器,并然后从1级(L1)高速缓存1206读回,但本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在两个寄存器文件之间转移而无需被写回和读回的通信路径)。

L2高速缓存1204的本地子集是全局L2高速缓存的一部分,该全局L2高速缓存被划分为分离的本地子集,每个处理器核心一个。每个处理器核心具有去往其自己的L2高速缓存1204的本地子集的直接访问路径。处理器核心读取的数据被存储在其L2高速缓存子集1204中,并且可以与其他处理器核心访问其自己的本地L2高速缓存子集并行地被快速访问。由处理器核心写入的数据存储在其自己的L2高速缓存子集1204中,并根据需要从其他子集中清除。环形网络确保共享数据的一致性。环形网络是双向的,用以允许诸如处理器核心、L2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径每个方向的宽度为1012位。

图12B是根据本发明的实施例的图12A中的处理器核心的一部分的放大视图。图12B包括L1高速缓存1204的L1数据高速缓存1206A部分,以及有关向量单元1210和向量寄存器1214的更多详细信息。具体地说,向量单元1210是16位宽向量处理单元(VPU)(参见16位宽的ALU 1228),它执行一个或多个整数、单精度浮点和双精度浮点指令。VPU支持利用混合单元1220来混合寄存器输入,利用数字转换单元1222A-B进行数字转换以及利用复制单元1224来对存储器输入进行复制。写掩码寄存器1226允许预测产生的向量写入。

图13是根据本发明的实施例的处理器1300的框图,该处理器1300可以具有多于一个核心,可以具有集成的存储器控制器并且可以具有集成的图形器件。图13中的实线框图示了具有单核心1302A、系统代理1310、由一个或多个总线控制器单元1316组成的集合的处理器1300,而可选添加的虚线框图示了替代处理器1300,替代处理器1300具有多个核心1302A-N、由系统代理单元1310中的一个或多个集成存储器控制器单元1314组成的集合、以及专用逻辑1308。

因此,处理器1300的不同实现可包括:1)CPU,其中专用逻辑1308是集成的图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核心),并且核心1302A-N是一个或多个通用核心(例如,通用有序核心、通用乱序核心、两者的组合); 2)协处理器,其中核心1302A-N是意图主要用于图形和/或科学(吞吐量)的大量专用核心; 以及3)协处理器,其中核心1302A-N是大量的通用有序核心。因此,处理器1300可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量多集成核心(MIC)协处理器(包括30个或更多核心)、嵌入式处理器等。处理器可以在一个或多个芯片上实现。处理器1300可以是一个或多个衬底的一部分和/或可以使用诸如例如BiCMOS、CMOS或NMOS之类的多种处理技术中的任何一种在一个或多个衬底上实现。

存储器层次结构包括各核心内的一个或多个高速缓存级、一个或多个共享高速缓存单元1306或集合以及耦合到集成的存储器控制器单元1314的集合的外部存储器(未示出)。共享高速缓存单元1306的集合可以包括一个或多个中级高速缓存,诸如2级(L2)、3级(L3)、4级(L4)或其他级别的高速缓存、终级高速缓存(LLC)和/或上述各项的组合。尽管在一个实施例中,基于环的互连单元1312将集成的图形逻辑1308、共享高速缓存单元1306的集合以及系统代理单元1310 /(一个或多个)集成的存储器控制器单元1314互连,但是替代实施例可以使用任何数量的公知技术用于互连这些单元。在一个实施例中,在一个或多个高速缓存单元1306与核心1302-A-N之间保持一致性。

在一些实施例中,核心1302A-N中的一个或多个能够进行多线程。系统代理1310包括协调和操作核心1302A-N的那些部件。系统代理单元1310可以包括例如电源控制单元(PCU)和显示单元。PCU可以是或包括调节核心1302A-N和集成的图形逻辑1308的功率状态所需的逻辑和部件。显示单元用于驱动一个或多个外部连接的显示器。

在架构指令集方面,核心1302A-N可以是同构的或异构的。也就是说,核心1302A-N中的两个或更多个可能能够执行相同的指令集,而其它核心可能仅能够执行所述指令集的子集或不同的指令集。

示例计算机架构

图14、图15、图16和图17是示例性计算机架构的框图。本领域已知的针对膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、手机、便携式媒体播放器、手持式设备以及各种其他电子设备的其他系统设计和配置也是适合的。通常,能够合并本文公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备通常是适合的。

现在参考图14,示出了根据本发明的一个实施例的系统1400的框图。系统1400可以包括一个或多个处理器1410、1415,处理器1410、1415耦合到控制器集线器1420。在一个实施例中,控制器集线器1420包括图形存储器控制器集线器(GMCH)1490和输入/输出集线器(IOH)1450(它们可以在分离的芯片上);GMCH 1490包括存储器和图形控制器,存储器1440和协处理器1445耦合到该存储器和图形控制器;IOH 1450将输入/输出(I/O)设备1460耦合到GMCH 1490。替代地,存储器和图形控制器之一或两者都集成在处理器内(如本文所述),存储器1440和协处理器1445直接耦合到处理器1410和控制器集线器1420,控制器集线器1420与IOH 1450在单个芯片中。

附加处理器1415的可选性质在图14中用虚线表示。每个处理器1410、1415可以包括一个或多个本文所述的处理核心,并且可以是处理器1300的某个版本。

存储器1440可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或两者的组合。对于至少一个实施例,控制器集线器1420经由多分支总线(诸如前端总线(FSB))、点对点接口(诸如QuickPath互连(QPI))或类似的连接1495与(一个或多个)处理器1410、1415通信,。

在一个实施例中,协处理器1445是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器集线器1420可以包括集成的图形加速器。

在包括架构、微架构、热、功耗特性等的一系列指标的度量方面,物理资源1410、1415之间可能存在各种差异。

在一个实施例中,处理器1410执行控制通用类型的数据处理操作的指令。嵌入在指令中的可以是协处理器指令。处理器1410将这些协处理器指令识别为应由附接的协处理器1445执行的类型。因此,处理器1410在协处理器总线或其他互连上将这些协处理器指令(或表示协处理器指令的控制信号)发布给协处理器1445。(一个或多个)协处理器1445接受并执行所接收的协处理器指令。

现在参考图15,示出了根据本发明的实施例的第一更特定示例性系统1500的框图。如图15中所示,多处理器系统1500是点对点互连系统,并且包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。处理器1570和1580中的每一个均可以是处理器1300的某个版本。在本发明的一个实施例中,处理器1570和1580分别是处理器1410和1415,而协处理器1538是协处理器1445。在另一实施例中,处理器1570和1580分别是处理器1410协处理器1445。

示出了处理器1570和1580分别包括集成的存储器控制器(IMC)单元1572和1582。处理器1570还包括作为其总线控制器单元的一部分的点对点(P-P)接口1576和1578;类似地,第二处理器1580包括P-P接口1586和1588。处理器1570、1580可以使用P-P接口电路1578、1588经由点对点(P-P)接口1550交换信息。如图15中所示,IMC 1572和1582把处理器耦合到相应的存储器,即存储器1532和存储器1534,存储器1532和存储器1534可以是本地附接到相应处理器的主存储器的各部分。

处理器1570、1580均可以使用点对点接口电路1576、1594、1586、1598经由个体P-P接口1552、1554与芯片组1590交换信息。芯片组1590可以可选地经由高性能接口1539与协处理器1538交换信息。在一个实施例中,协处理器1538是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。

共享高速缓存(未示出)可以被包括在任一处理器中或包括在两个处理器之外,但经由P-P互连与这些处理器连接,这样,如果处理器被置于低功率模式,则任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中。

芯片组1590可以经由接口1596耦合到第一总线1516。在一个实施例中,第一总线1516可以是***部件互连(PCI)总线,或诸如PCI Express总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。

如图15中所示,各种I/O设备1514可以与总线桥1518一起耦合到第一总线1516,总线桥1518将第一总线1516耦合到第二总线1520。在一个实施例中,一个或多个附加处理器1515(诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器)耦合至第一总线1516。在一个实施例中,第二总线1520可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线1520,所述各种设备包括例如键盘和/或鼠标1522、通信设备1527和可以包括指令/代码和数据1530的存储单元1528,诸如磁盘驱动器或其他大容量存储设备。此外,音频I/O1524可以耦合到第二总线1520。注意,其他架构是可能的。例如,代替图15的点对点架构,系统可以实现多分支总线或其他这样的架构。

现在参考图16,示出了根据本发明的实施例的第二更特定示例性系统1600的框图。图15和图16中的相似元件具有相似的附图标记,并且已经从图16中省略了图15的某些方面,以便避免使图16的其他方面模糊。

图16图示了处理器1570、1580可以分别包括集成的存储器和I/O控制逻辑(“ CL”)1572和1582。因此,CL 1572、1582包括集成的存储器控制器单元,并且包括I/O控制逻辑。图16图示了不仅存储器1532、1534耦合到CL 1572、1582,而且I/O设备1614也耦合到控制逻辑1572、1582。旧版I/O设备1615耦合到芯片组1590。

现在参考图17,示出了根据本发明实施例的SoC 1700的框图。图13中的类似元件具有类似的附图标记。此外,虚线框是更高级SoC上的可选特征。在图17中,(一个或多个)互连单元1702耦合到:应用处理器1710,包括由一个或多个核心202A-N组成的集合和(一个或多个)共享高速缓存单元1306;系统代理单元1310;(一个或多个)总线控制器单元1316;(一个或多个)集成的存储器控制器单元1314;一个或多个协处理器1720或其集合,其可以包括集成的图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1730;直接存储器访问(DMA)单元1732;和显示单元1740,用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器1720包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。

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

诸如图15中所示的代码1530之类的程序代码可以被应用于输入指令以执行本文描述的功能并生成输出信息。可以以已知方式将输出信息应用于一个或多个输出设备。为了该应用目的,处理系统包括具有处理器的任何系统,处理器诸如例如是数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。

可以以高级过程或面向对象的编程语言来实现程序代码,用以与处理系统进行通信。程序代码也可以根据需要用汇编或机器语言来实现。实际上,本文描述的机制的范围不限于任何特定的编程语言。在任何情况下,该语言都可以是被编译的或经解释的语言。

至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表指令来实现,该代表指令表示处理器内的各种逻辑,当机器读取该指令时,该指令使机器制造逻辑以执行本文所述的技术。可以将这种表示(称为“ IP核心”)存储在有形的机器可读介质上,并提供给各种客户或制造工厂,以加载到实际制造逻辑或处理器的制造机器中。

这样的机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非暂时性有形布置,包括存储介质,诸如:硬盘;任何其他类型的盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)和磁光盘;半导体器件,诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态随机存取存储器的(DRAM)、静态随机存取存储器(SRAM))、可擦可编程只读存储器(EPROM)、闪速存储器、电可擦可编程只读存储器(EEPROM)、相变存储器(PCM);磁或光卡;或适合于存储电子指令的任何其他类型的介质。

因此,本发明的实施例还包括非暂时性有形机器可读介质,该非暂时性有形机器可读介质包含指令或包含设计数据,诸如硬件描述语言(HDL),所述设计数据定义了本文所述的结构、电路、装置、处理器和/或系统特征。这样的实施例也可以被称为程序产品。

仿真(包括二进制转换、代码变形等)

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

图18是根据本发明实施例的对比使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但是替代地,指令转换器可以以软件、固件、硬件或其各种组合来实现。图18示出了采用高级语言1802的程序可以使用x86编译器1804来编译以生成x86二进制代码1806,x86二进制代码1806可以由具有至少一个x86指令集核心1816的处理器本机执行。具有至少一个x86指令集核心1816的处理器表示可以通过如下方式与具有至少一个x86指令集核心的英特尔处理器执行基本相同功能的任何处理器:兼容地执行或以其他方式处理(1)英特尔x86指令集核心的大部分指令集,或者(2)目标是在具有至少一个x86指令集核心的英特尔处理器上运行的应用或其他软件的目标代码版本,以便获得与具有至少一个x86指令集核心的英特尔处理器基本相同的结果。x86编译器1804表示可操作为生成x86二进制代码1806(例如,目标代码)的编译器,该x86二进制代码可以在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核心1816的处理器上执行。类似地,图18示出了可以使用替代指令集编译器1808来编译采用高级语言1802的程序,从而生成可以由不具有至少一个x86指令集核心1814的处理器(例如具有执行加利福尼亚州森尼韦尔市的MIPS技术公司的MIPS指令集和/或执行加利福尼亚州森尼韦尔市的ARM控股公司的ARM指令集的核心的处理器)本机执行的替代指令集二进制代码1810。指令转换器1812用于将x86二进制代码1806转换为可以由不具有x86指令集核心1814的处理器本机执行的代码。该转换后的代码不太可能与所述替代指令集二进制代码1810相同,因为具有这种能力的指令转换器难以制造;但是,转换后的代码将完成通用操作,并由来自替代指令集的指令组成。因此,指令转换器1812表示软件、固件、硬件或其组合,它们通过仿真、模拟或任何其他过程而允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码1806。

尽管图7图示了根据一个或多个实施例的各种操作,但是应当理解,并非图7中描绘的所有操作对于其他实施例都是必需的。实际上,在本文中充分考虑到,在本公开的其他实施例中,图7中描绘的操作和/或本文中描述的其他操作可以以在任何附图中未具体示出但仍与本公开完全一致的方式组合。因此,涉及未在一个附图中确切示出的特征和/或操作的权利要求被认为在本公开的范围和内容内。

如在本申请和权利要求中使用的,由术语“和/或”连接的项目列表可以表示所列出项目的任何组合。例如,短语“ A、B和/或C”可以表示A;B;C;A和B;A和C;B和C;或A、B和C。如在本申请中和权利要求中所使用的,由术语“至少一个”连接的项目的列表可以表示所列出的术语的任何组合。例如,短语“ A,B或C中的至少一个”可以表示A;B;C;A和B;A和C;B和C;或A、B和C。

如本文的任何实施例中所使用的,术语“系统”或“模块”可以指代例如被配置为执行任何前述操作的软件、固件和/或电路。软件可被体现为记录在非暂时性计算机可读存储介质上的软件包、代码、指令、指令集和/或数据。固件可被体现为在存储器设备中硬编码(例如,非易失性)的代码、指令或指令集和/或数据。

如本文的任何实施例中所使用的,术语“电路”可以包括例如单独或任意组合的:硬接线电路;可编程电路,诸如包括一个或多个个体指令处理核心的计算机处理器;状态机电路;和/或固件,固件存储由可编程电路或未来的计算范式执行的指令,未来的计算范式包括例如大规模并行、模拟或量子计算、诸如神经网络处理器的加速器的硬件实施例和上述的非硅实现。该电路可以被集体地或单独地体现为形成较大系统的一部分的电路,该较大系统例如是集成电路(IC)、片上系统(SoC)、台式计算机、膝上型计算机、平板计算机、服务器、智能电话等。

本文描述的任何操作可以在包括一个或多个介质(例如,非暂时性存储介质)的系统中实现,该介质具有单独地或组合地存储在其中的指令,该指令在由一个或多个处理器执行时执行所述方法。在此,处理器可以包括例如服务器CPU、移动设备CPU和/或其他可编程电路。而且,意图是,本文中所描述的操作可以在多个物理设备中分布,诸如处于多于一个不同物理位置处的处理结构。该存储介质可以包括任何类型的有形介质,例如:任何类型的盘,包括硬盘、软盘、光盘、压缩只读存储器(CD-ROM)、可重写压缩盘(CD-RW)和磁光盘;半导体器件,诸如只读存储器(ROM)、随机存取存储器(RAM)(诸如动态和静态RAM)、可擦除可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、闪速存储器、固态盘(SSD);嵌入式多媒体卡(eMMC);安全数字输入/输出(SDIO)卡;磁卡或光卡;或适合存储电子指令的任何类型的介质。其他实施例可以被实现为由可编程控制设备执行的软件。

因此,本公开涉及在处理器存储器电路和多个对等连接的加速器单元中的每一个中的加速器存储器电路之间共享存储器电路的系统和方法。每个加速器单元都包括物理到虚拟地址转换电路和迁移电路。每个加速器单元中的物理到虚拟地址转换电路包括针对所述多个加速器单元中的至少一些中每一个的页面。迁移电路使页面在处理器存储器电路和所述多个加速器电路的每一个中的加速器存储器电路之间转移。迁移电路基于物理到虚拟地址转换电路所收集的统计信息将页面迁移到加速器存储器电路和从加速器存储器电路逐出页面。因此,可以动态分配处理器存储器电路和加速器存储器电路以有利地最小化可归因于数据访问操作的系统等待时间。

以下示例涉及其他实施例。本公开的以下示例可以包括主题内容,诸如至少一个设备;一种方法;用于存储指令的至少一个机器可读介质,该指令在被执行时使机器根据该方法执行动作;用于基于所述方法来执行动作的装置;和/或用于基于统计信息将页面迁移到加速器存储器电路和从加速器存储器电路逐出页面的系统,所述统计信息与由物理到虚拟地址转换电路执行的虚拟存储器地址到物理存储器地址转换相关联。通过在使用点附近保持频繁使用的数据(例如,加速器电路所使用的数据被保持在加速器存储器电路中),本文公开的系统和方法有利地减少了归因于向/从本地加速器单元存储器电路和对等加速器单元存储器电路的数据转移的系统等待时间。

根据示例1,提供了一种加速器系统。该系统可以包括:至少一个加速器电路;加速器存储器电路,通信耦合到所述至少一个加速器电路,所述加速器存储器电路用于本地存储从处理器存储器电路转移来的多个页面;加速器虚拟到物理地址转换电路,用于将从所述至少一个加速器电路接收到的虚拟地址转换为以下之一中的物理存储器地址:处理器存储器电路或加速器存储器电路;加速器迁移电路,用于:收集与对处理器存储器电路或一个或多个对等加速器电路中的加速器存储器电路中至少一个的访问相关联的使用数据;以及至少部分地基于所收集的使用数据来引起在处理器存储器电路与加速器存储器电路之间的双向数据转移。

示例2可以包括示例1的元素,其中加速器虚拟到物理地址转换电路可以包括:加速器转换后备缓冲器(A-TLB)电路,通信耦合到所述至少一个加速器电路,所述A-TLB电路用于存储表示多个虚拟存储器地址到物理存储器地址转换的数据;以及加速器存储器管理单元(A-MMU)电路,通信耦合在所述A-TLB电路和加速器存储器电路之间,所述A-MMU电路用于存储多个页面以服务于与在A-TLB电路中未找到虚拟存储器地址相关联的虚拟存储器地址到物理存储器地址转换。

示例3可以包括示例1或2的元素,其中A-TLB电路还用于:向处理器存储器管理单元电路(MMU)传送虚拟存储器地址到物理存储器地址转换服务请求,所述虚拟存储器地址到物理存储器地址转换服务请求与在A-TLB电路或包括在所述A-MMU电路中的多个页表之一中未找到虚拟存储器地址相关联。

示例4可以包括示例1到3中任一个的元素,其中A-MMU电路还用于:对转移到所述加速器存储器电路的数据执行一个或多个数据变换操作。

示例5可以包括示例1至4中任一个的元素,其中,所述A-MMU电路还用于:对转移到加速器存储器电路的数据的至少一部分执行一个或多个数据变换操作,所述数据变换操作包括以下操作中的至少一项:压缩操作、解压缩操作、编码操作、解码操作、加密操作或解密操作。

示例6可以包括示例1至5中任一个的元素,其中所述加速器迁移电路可以包括:迁移预测电路,用于启动处理器存储器电路和加速器存储器电路之间的页面转移;以及页面数据移动器电路,用于由迁移预测电路响应于请求的接收而在处理器存储器电路和加速器存储器电路之间双向迁移页面。

示例7可以包括示例1至6中任一个的元素,其中所述迁移预测电路基于与存储器访问操作相关联的虚拟存储器地址来启动在处理器存储器电路与加速器存储器电路之间的页面转移。

示例8可以包括示例1至7中任一个的元素,其中所述加速器存储器电路用于本地存储从处理器存储器电路转移来的多个页面,以供以下各项中至少一项使用:所述至少一个加速器电路或设置在第二加速器系统中的至少一个加速器电路,第二加速器系统通信耦合到所述加速器系统。

根据示例9,提供了一种电子设备。所述电子设备可以包括:处理器电路;处理器存储器管理单元(MMU)电路;处理器存储器电路;至少一个加速器系统,包括:至少一个加速器电路;加速器存储器电路,通信耦合到所述至少一个加速器电路,所述加速器存储器电路用于本地存储从处理器存储器电路转移来的多个页面;加速器虚拟到物理地址转换电路,用于将从所述至少一个加速器电路接收到的虚拟地址转换为以下各项之一中的物理存储器地址:处理器存储器电路或加速器存储器电路;以及加速器迁移电路,用于:收集与针对以下各项中至少一项的访问相关联的使用数据:处理器存储器电路或一个或多个对等加速器电路中的加速器存储器电路;以及至少部分地基于所收集的使用数据来引起在处理器存储器电路与加速器存储器电路之间的双向数据转移。

示例10可以包括示例9的元素,其中加速器虚拟到物理地址转换电路可以包括:加速器转换后备缓冲器(A-TLB)电路,通信耦合到所述至少一个加速器电路,所述A-TLB电路用于存储表示多个虚拟存储器地址到物理存储器地址转换的数据;以及加速器存储器管理单元(A-MMU)电路,通信耦合在所述A-TLB电路和加速器存储器电路之间,所述A-MMU电路用于存储多个页面以服务于与在A-TLB电路中未找到虚拟存储器地址相关联的虚拟存储器地址到物理存储器地址转换。

示例11可以包括示例9或10中任一个的元素,其中A-TLB电路还用于:向处理器存储器管理单元电路(MMU)传送虚拟存储器地址到物理存储器地址转换服务请求,所述虚拟存储器地址到物理存储器地址转换服务请求与在A-TLB电路或包括在所述A-MMU电路中的多个页表之一中未找到虚拟存储器地址相关联。

示例12可以包括示例9到11中任一个的元素,其中A-MMU电路还用于:对转移到所述加速器存储器电路的数据执行一个或多个数据变换操作。

示例13可以包括示例9到12中任一个的元素,其中所述A-MMU电路还用于:对转移到加速器存储器电路的数据的至少一部分执行一个或多个数据变换操作,所述数据变换操作包括以下操作中的至少一项:压缩操作、解压缩操作、编码操作、解码操作、加密操作或解密操作。

示例14可以包括示例9到13中任一个的元素,其中所述加速器迁移电路可以包括:迁移预测电路,用于启动处理器存储器电路和加速器存储器电路之间的页面转移;以及页面数据移动器电路,用于由迁移预测电路响应于请求的接收而在处理器存储器电路和加速器存储器电路之间双向迁移页面。

示例15可以包括示例9至14中的任一个的元素,其中所述迁移预测电路基于与存储器访问操作相关联的虚拟存储器地址来启动在处理器存储器电路与加速器存储器电路之间的页面转移。

示例16可包括示例9至15中的任一个的元素,其中所述加速器存储器电路用于本地存储从处理器存储器电路转移来的多个页面,以供以下各项中至少一项使用:所述至少一个加速器电路或设置在第二加速器系统中的至少一个加速器电路,第二加速器系统通信耦合到所述加速器系统。

根据示例17,提供了一种处理器加速方法。所述方法可以包括:由设置在加速器单元中的加速器虚拟地址到物理地址转换电路执行一个或多个虚拟存储器地址到一个或多个物理存储器地址的转换;由加速器迁移电路收集与针对以下各项中至少一项的访问相关联的使用数据:处理器存储器电路或一个或多个对等加速器电路中的加速器存储器电路;以及由加速器迁移电路至少部分地基于所收集的虚拟存储器地址到物理存储器地址转换数据而引起一个或多个页面从处理器存储器电路到加速器存储器电路的迁移。

示例18可以包括示例17的元素,并且该方法还可以包括:由通信耦合到所述至少一个加速器电路的加速器转换后备缓冲器(A-TLB)电路来存储表示多个虚拟存储器地址到物理存储器地址转换的数据;以及由通信耦合在A-TLB电路和加速器存储器电路之间的加速器存储器管理单元(A-MMU)电路来存储多个页面用于服务于与在A-TLB电路中未找到虚拟存储器地址相关联的虚拟存储器地址到物理存储器地址转换。

示例19可以包括示例17或18中任一个的元素,并且所述方法还可以包括:由所述A-TLB电路向处理器存储器管理单元(P-MMU)电路传送虚拟存储器地址到物理存储器地址转换服务请求,所述虚拟存储器地址到物理存储器地址转换服务请求与在A-TLB电路或包括在所述A-MMU电路中的多个表之一中未找到虚拟存储器地址相关联。

示例20可以包括示例17到19中任一个的元素,并且所述方法还可以包括:由A-MMU电路对转移到所述加速器存储器电路的数据执行一个或多个数据变换操作。

示例21可以包括示例17到20中任一个的元素,并且所述方法还可以包括:由A-MMU电路对转移到加速器存储器电路的数据的至少一部分执行一个或多个数据变换操作,所述数据变换操作包括以下操作中的至少一项:压缩操作、解压缩操作、编码操作、解码操作、加密操作或解密操作。

示例22可以包括示例17至21中的任一个的元素,其中收集与由加速器虚拟地址到物理地址转换电路执行的所述多个虚拟存储器地址到物理存储器地址转换相关联的数据包括:由迁移预测电路来收集与由加速器虚拟地址到物理地址转换电路执行的所述多个虚拟存储器地址到物理存储器地址转换相关联的数据;以及其中至少部分地基于所收集的虚拟存储器地址到物理存储器地址转换数据而引起从处理器存储器电路到加速器存储器电路迁移一个或多个页面包括:由迁移预测电路引起页面数据移动器电路至少部分地基于所收集的虚拟存储器地址到物理存储器地址转换数据将所述一个或多个页面从处理器存储器电路迁移到加速器存储器电路。

示例23可以包括示例17到22中任一个的元素,并且所述方法还可以包括:经由通信耦合多个加速器系统中的每个的加速器间结构来把存储在加速器存储器电路中的多个页面中的至少一部分与所述多个加速器系统中所包括的至少一个其它加速器系统共享。

根据示例24,提供了处理器加速系统。所述系统可以包括:用于执行一个或多个虚拟存储器地址到一个或多个物理存储器地址的转换的装置;用于收集与针对以下各项中至少一项的访问相关联的使用数据的装置:处理器存储器电路或一个或多个对等加速器电路中的加速器存储器电路;以及用于至少部分地基于所收集的虚拟存储器地址到物理存储器地址转换数据在处理器存储器电路和加速器存储器电路之间迁移一个或多个页面的装置。

示例25可以包括示例24的元素,并且所述系统还可以包括:用于存储表示多个虚拟存储器地址到物理存储器地址转换的数据的装置。

示例26可以包括示例24或25中任一个的元素,并且所述系统还可以包括:用于传送虚拟存储器地址到物理存储器地址转换服务请求的装置,所述虚拟存储器地址到物理存储器地址转换服务请求与在所存储的表示多个虚拟存储器地址到物理存储器地址转换的数据中未找到虚拟存储器地址相关联。

示例27可以包括示例24到26中任一个的元素,并且系统还可以包括:用于对转移到所述加速器存储器电路的数据执行一个或多个数据变换操作的装置。

示例28可以包括示例24到27中任一个的元素,并且系统还可以包括:用于对转移到所述加速器存储器电路的数据的至少一部分执行一个或多个数据变换操作的装置,所述数据变换操作包括以下操作中的至少一项:压缩操作、解压缩操作、编码操作、解码操作、加密操作或解密操作。

示例29可以包括示例24到28中任一个的元素,其中用于收集与由加速器虚拟地址到物理地址转换电路执行的所述多个虚拟存储器地址到物理存储器地址转换相关联的数据的装置包括:用于收集与所述多个虚拟存储器地址到物理存储器地址转换相关联的数据的装置;以及其中用于至少部分地基于所收集的虚拟存储器地址到物理存储器地址转换数据而引起从处理器存储器电路到加速器存储器电路迁移一个或多个页面的装置包括:用于至少部分地基于所收集的虚拟存储器地址到物理存储器地址转换数据将所述一个或多个页面从处理器存储器电路迁移到加速器存储器电路的装置。

示例30可以包括示例24至29中的任一个的元素,并且所述系统还可以包括:用于把存储在加速器存储器电路中的多个页面中的至少一部分与所述多个加速器系统中所包括的至少一个其它加速器系统共享的装置。

根据示例31,提供了一种非暂时性存储设备。所述非暂时性存储设备可以包括指令,当由加速器电路执行时,所述指令使加速器电路:使设置在加速器单元中的加速器虚拟地址到物理地址转换电路把一个或多个虚拟存储器地址转换为一个或多个物理存储器地址;使加速器迁移电路收集与对如下各项中的至少一项的访问相关联的使用数据:处理器存储器电路或一个或多个对等加速器电路中的加速器存储器电路;以及使加速器迁移电路至少部分地基于所收集的虚拟存储器地址到物理存储器地址转换数据从处理器存储器电路到加速器存储器电路迁移一个或多个页面。

示例32可以包括示例31的元素,其中,指令还使加速器电路执行以下操作:使通信耦合到所述至少一个加速器电路的加速器转换后备缓冲器(A-TLB)电路存储表示多个虚拟存储器地址到物理存储器地址转换的数据;以及使通信耦合在A-TLB电路和加速器存储器电路之间的加速器存储器管理单元(A-MMU)电路存储多个页面以服务于与在A-TLB电路中未找到虚拟存储器地址相关联的虚拟存储器地址到物理存储器地址转换。

示例33可以包括示例31或32中任一个的元素,其中所述指令还使加速器电路执行以下操作:使A-TLB电路向处理器存储器管理单元(P-MMU)电路传送虚拟存储器地址到物理存储器地址转换服务请求,所述虚拟存储器地址到物理存储器地址转换服务请求与在A-TLB电路或包括在所述A-MMU电路中的多个表之一中未找到虚拟存储器地址相关联。

示例34可以包括示例31至33中任一个的元素,其中,所述指令还使加速器电路执行以下操作:使A-MMU电路对转移到所述加速器存储器电路的数据执行一个或多个数据变换操作。

示例35可以包括示例31到34中任一个的元素,其中所述指令还使加速器电路执行以下操作:使A-MMU电路对转移到加速器存储器电路的数据的至少一部分执行一个或多个数据变换操作,所述数据变换操作包括以下操作中的至少一项:压缩操作、解压缩操作、编码操作、解码操作、加密操作或解密操作。

示例36可以包括示例31至35中的任一个的元素,其中使加速器迁移电路收集与由加速器虚拟地址到物理地址转换电路执行的所述多个虚拟存储器地址到物理存储器地址转换相关联的数据的指令还使所述加速器电路执行以下操作:使迁移预测电路收集与针对以下各项中的至少一项的访问相关联的使用数据:处理器存储器电路或一个或多个对等加速器电路中的加速器存储器电路;以及其中使所述加速器迁移电路至少部分地基于所收集的虚拟存储器地址到物理存储器地址转换数据而把所述一个或多个页面从处理器存储器电路迁移到加速器存储器电路的指令还使所述加速器电路执行以下操作:使页面数据移动器电路至少部分地基于所收集的虚拟存储器地址到物理存储器地址转换数据将所述一个或多个页面从处理器存储器电路迁移到加速器存储器电路。

示例37可以包括示例31到36中任一个的元素,其中所述指令还使加速器电路执行以下操作:经由通信耦合多个加速器系统中的每个的加速器间结构来把存储在加速器存储器电路中的多个页面中的至少一部分与所述多个加速器系统中所包括的至少一个其它加速器系统共享。

根据示例38,提供了一种加速系统,所述系统被布置为执行示例17至23中任一个的方法。

根据示例39,提供了一种芯片组,所述芯片组被布置为执行示例17至23中任一个的方法。

根据示例40,提供了至少一个机器可读存储设备,所述至少一个机器可读存储设备包括多个指令,这些指令响应于在计算设备上执行而使计算设备实施根据示例17至23中任一项的方法。

根据示例41,提供了一种设备,所述设备包括耦合至处理器电路的多个对等加速单元,所述设备被布置为执行示例17至23中任一个的方法。

本文已采用的术语和表达用作描述术语而非限制术语,并且在使用此类术语和表达时,无意排除所示和描述的特征(或其部分)的任何等同物,并且,应当认识到,在权利要求的范围内各种修改是可能的。因此,权利要求意图覆盖所有这些等同物。本文已经描述了各种特征、方面和实施例。如本领域技术人员将理解的,这些特征、方面和实施例容许彼此组合以及容许变化和修改。因此,应当认为本公开包括这些组合、变化和修改。

如本文所述的,可以使用硬件元素、软件元素或其任何组合来实现各种实施例。硬件元素的示例可以包括处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器等)、集成电路、专用集成电路(ASIC)、可编程逻辑设备(PLD)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组等。

在该整个说明书中,对“一个实施例”或“实施例”的提及表示结合该实施例描述的特定特征、结构或特性被包括在至少一个实施例中。因此,在该整个说明书中各处出现的短语“在一个实施例中”或“在实施例中”并不一定都指代同一实施例。此外,在一个或多个实施例中,可以以任何合适的方式组合特定的特征、结构或特性。

62页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:LRU缓存的实现方法、装置、计算机可读存储介质及设备

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!

技术分类