买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】处理器及其上实现的方法_英特尔公司_201580064745.7 

申请/专利权人:英特尔公司

申请日:2015-12-18

公开(公告)日:2021-06-08

公开(公告)号:CN107111558B

主分类号:G06F12/0842(20160101)

分类号:G06F12/0842(20160101)

优先权:["20141226 US 14/583,389"]

专利状态码:有效-授权

法律状态:2021.06.08#授权;2018.01.23#实质审查的生效;2017.08.29#公开

摘要:实现硬件软件协同优化以改进NFVS和其他生产者‑消费者工作负载的VM间通信的性能和能量的方法和装置。该装置包括具有多级高速缓存层次结构的多核处理器,该多级高速缓存层次结构包括用于每个核心的L1和L2高速缓存和共享的最后一级高速缓存LLC。提供了一个或多个机器级指令,以用于主动地将高速缓存行从较低级别高速缓存级别降级到较高级别高速缓存级别,包括将高速缓存行从L1L2高速缓存降级到LLC。还提供了用于在多插槽的NUMA架构系统中实现硬件软件协同优化的技术,其中高速缓存行可以选择性地被降级并且被推送到远程插槽中的LLC。另外,技术被公开以用于在多插槽的系统中实现早期监听,从而在存取远程插槽上的高速缓存行时减少延迟。

主权项:1.一种被配置为在采用非均匀存储器存取NUMA架构的多插槽的计算机系统中实现的处理器,在所述非均匀存储器存取架构中安装所述处理器的多个实例,每个插槽包括处理器和本地系统存储器,包括:多个核心,每个核心具有占用高速缓存层次结构中的相应级别的至少一个相关联的高速缓存;最后一级高速缓存LLC,其通信地耦合到所述多个核心;以及存储器控制器,其通信地耦合到所述多个核心,所述存储器控制器被配置为当所述处理器被安装在所述计算机系统中时支持对外部系统存储器的存取;插槽到插槽互连接口,其被配置为有利于实现安装在不同插槽中的处理器之间的通信;其中,与核心相关联的所述高速缓存中的每一个和所述LLC包括用于存储高速缓存行数据的多个高速缓存行槽,并且其中,所述处理器进一步被配置为支持机器指令,所述机器指令在被作为本地插槽的处理器上的核心执行时使所述处理器:将高速缓存行降级到所述本地插槽上的LLC高速缓存;以及将所述高速缓存行的副本推送到安装在远程插槽中的处理器的LLC,其中,所述高速缓存行经由所述插槽到插槽互连接口被推送。

全文数据:NFVS和其他生产者-消费者工作负载VM间通信性能和能量改进的硬件软件协同优化背景技术[0001]访问计算机网络已成为当今计算机使用的普遍存在的一部分。无论是访问企业环境中的局域网(LAN以访问共享的网络资源,或是经由LAN或其他接入点访问因特网,似乎用户总是登录到经由计算机网络访问的至少一个服务。此外,基于云的服务的迅速扩张已经引起计算机网络的更进一步的使用,并且这些服务被预计将变得比以往更加流行。[0002]包括路由器、交换机、网桥、网关和接入点的各种类型的装备是有利于实现网络的。大型网络基础结构典型地包括电信级网络元件的使用,包括由以下公司制作的交换机和路由器:CiscoSystems、JuniperNetworks、AlcatelLucent、IBM和Hewlett-Packard。这样的电信交换机非常复杂,在非常高的带宽下工作并且提供高级的路由功能,以及支持不同的服务质量QoS级别。私有网络例如,局域网(LAN最普遍地用于商业和家庭用户。许多商业网络采用基于硬件和或基于软件的防火墙等也是普遍的。[0003]近年来,计算机系统的虚拟化已经在迅速增长,特别是在服务器部署和数据中心方面。在常规方法下,服务器直接在以下物理硬件资源上运行操作系统的单个实例:例如,CPU、RAM、存储设备例如,硬盘)、网络控制器、IO端口等。在使用虚拟机VM的一个虚拟化方法下,采用物理硬件资源以支持虚拟资源的相对应的实例,从而使得多个VM可以在服务器的物理硬件资源上运行,其中每个虚拟机包括其自身的CPU分配、存储器分配、存储设备、网络控制器、IO端口等。然后,相同或不同操作系统的多个实例在多个VM上运行。此外,通过虚拟机管理器VMM或“虚拟机管理程序hypervisor”的使用,在服务器运行时虚拟资源可以被动态地分配,使VM实例能够被添加、关闭、或重用,而不需要将服务器关闭。这向服务器使用提供了更大的灵活性,并且更好地使用了服务器处理资源,特别是针对多核处理器和或多处理器服务器。[0004]在另一虚拟化方法下,使用了采用虚拟化的“容器”而不使用VMM或虚拟机管理程序的基于容器的OS虚拟化。不是在相应的虚拟机上托管操作系统的独立的实例,基于容器的OS虚拟化横跨多个容器共享单个OS核心,具有用于每个容器的系统和软件库的独立的实例。与VM—样,同样存在被分配到每个容器的虚拟资源。[0005]软件定义的网络(SDN和网络功能虚拟化NFV的部署也已经在过去几年中迅速增长。在SDN下,针对将流量发送到哪做出决策的系统控制平面与将流量转发到选定的目的地的底层系统数据平面进行解耦。可以采用SDN概念以有利于实现网络虚拟化,使服务提供方能够经由软件应用和API应用程序接口)来管理其网络服务的各种方面。在NFV下,通过将网络功能虚拟化为软件应用,网络服务提供方可以获得网络配置中的灵活性,实现显著的益处,包括可用带宽的优化、节省成本、以及加快新服务的上市时间。[0006]当今存在大量的专属网络设备,其使添加和升级越来越困难。这样的网络装置包括:维持订户移动性的实时状态、语音和媒体呼叫、安全性、上下文的内容管理等的路由器,防火墙等。NFV技术将这些网络功能合并到通用X86服务器上,并且可以大大减少配置和更新复杂性。[0007]当若干NFV被合并时,例如,被实现为在一个平台中的一组虚拟机VM,由于工作负载的本质以及当前(10千兆比特每秒Gbps和未来40Gbps和IOOGbps的网络接口的高线路速率,需要非常高效的网络分组处理。在多核X86服务器上,这些分组经由VM间通信)被转发,并且由在不同核上的VM中的NFV模块进行处理。[0008]在常规实现方式的近来的测试下,已经观察到:VM间通信的分组吞吐量,特别针对小分组例如,64B,其对电信公司而言是重要的远不能令人满意。针对软件和硬件低效率,存在若干性能瓶颈。[0009]当前的解决方案主要关注解决软件瓶颈。这些VM间通信方案的总体思路包括:通过减少分组数据的副本的数量,例如使用共享的存储器,来减少存储器复制开销。然而,使用这些纯软件方法的性能改进是有限的。附图说明[0010]当结合附图时,通过引用以下具体实施方式,本发明的前述方面以及伴随的优点中的许多优点将变得更容易理解,附图中遍及各种视图,相似的附图标记指的是相似的部分,除非另有规定:[0011]图1是示出了包括平台硬件和包括NFV组件的各种基于软件的组件的示例性主机平台配置的示意图;[0012]图2是示出了采用共享的存储器的生产者-消费者模型的示意图;[0013]图3是对插槽内与插槽间通信的数据传输带宽进行比较的图;[00M]图4a是示出了在常规方法下通过生产者应用来存取高速缓存行的示意图,其中该生产者应用当前不存储在任何高速缓存级别中并且是从系统存储器被存取的;[0015]图4b是示出了在常规方法下从执行生产者应用的核心的Ll高速缓存中取回高速缓存行的消费者应用的示意图;[0016]图5是示出了由图4a和图4b中所示的平台采用的存储器一致性架构的抽象视图的示意图;[0017]图6是示出了在常规方法下生产者核心存取保存在L3高速缓存中的高速缓存行并且对其进行修改,并且消费者核心在高速缓存行被修改之后存取该相同的高速缓存行的消息流图;[0018]图7是示出了根据一个实施例的由其中使用高速缓存行降级的生产者核和消费者核心存取类似的高速缓存行的消息流图;[0019]图8是采用了NUM架构的双插槽平台的示意图;[0020]图8a是示出了在常规方法下如何存取远程插槽上的高速缓存行的示意图;[0021]图8b是示出了根据一个实施例的使用早期监听方案如何存取远程插槽上的高速缓存行的示意图;[0022]图9是示出了根据一个实施例的实现针对共享的存储器区的早期监听所采用的操作的流程图;[0023]图10是示出了根据一个实施例的用于实现其中在高速缓存行中采用标签的早期监听方案的操作和逻辑的流程图;[0024]图Ila-图lie示出了采用多个哈希算法和单一维度比特向量的布隆过滤器是如何工作的;[0025]图12a-图12c示出了采用多个哈希算法和相应的比特向量的布隆过滤器是如何工作的;[0026]图13是示出了根据一个实施例的用于双插槽NUMA平台的高速缓存层次结构的示意图;[0027]图13a是示出了根据一个实施例的将高速缓存行降级并推送到远程插槽的第一示例的不意图;[0028]图13b是示出了根据一个实施例的将高速缓存行降级并推送到远程插槽的第二示例的不意图;[0029]图13c是示出了根据一个实施例的对远程插槽上的高速缓存行进行降级并且将该高速缓存行推送到本地插槽的示例的示意图;以及[0030]图14是采用四个高速缓存级别的高速缓存层次结构的示意图。[0031]具体实现方式[0032]本文描述了实现硬件软件协同优化以对NFV和其他生产者-消费者(producer-consumer工作负载的VM间通信的性能和能量进行改进的方法和装置的实施例。在以下的描述中,阐述了许多具体细节以提供对本发明的实施例的全面理解。然而,相关领域的技术人员将认识到,可以在没有一个或多个具体细节的情况下,或利用其他方法、组件、材料等的情况下,来实现本发明。在其他实例中,未详细地示出或描述公知的结构、材料或操作以避免使本发明的方案变得难以理解。[0033]整个说明书中对“一个实施例”或“实施例”的引用意味着关于实施例描述的特定特征、结构或特性被包括在本发明中的至少一个实施例中。因此,在整个说明书的各个地方中的短语“在一个实施例中”或“在实施例中”的出现不一定都指的是相同的实施例。此外,特定特征、结构或特性可以以任何适合的方式组合在一个或多个实施例中。[0034]为了清楚起见,本文附图中的单独的组件也可以由其附图中的标记而不是由特定的附图标记来表示。另外,指代组件的特定类型(与特定组件不同)的附图标记可以被示出有后面是“typ”意味着“典型”的附图标记。应当理解的是,为了简洁和清楚,这些组件的配置将是典型的其可能存在但未在图中示出的类似组件,或另外未标记有独立的附图标记的类似组件。相反地,“typ”不应被解释为意味着组件、元件等典型地被用于其公开的功能、实现、目的等。[0035]如本文中所使用的,术语“虚拟装置”、“虚拟网络装置”、“网络装置”或简称“装置”可以互换地使用。另外,为了本文包括权利要求书中的目的,与软件定义的网络相关的或被配置为实现网络功能虚拟化的任何基于软件的装置可以更一般地被称为“虚拟装置”,理解为虚拟网络装置包括被配置为实现网络功能虚拟化和或与软件定义的网络相关的操作的任何网络装置或虚拟化实体。相应地,以下描述中的术语虚拟装置也包括所有NFV装置。另夕卜,术语“高速缓存行”和“高速缓存的行”也可以互换使用。[0036]图1示出了包括平台硬件102和包括NFV组件的各种基于软件的组件的示例性主机平台配置100。平台硬件102包括经由互连112耦合到存储器接口106、最后一级高速缓存LLC108、以及输入输出(IO接口110的中央处理单元CPU104。在一些实施例中,前述组件中的所有或一部分可以集成在片上系统SoC上。存储器接口106被配置为有利于实现对通常与SoC分离的系统存储器113的存取。[0037]CPU104包括核心部分,该核心部分包括M个处理器核心116,每个处理器核心116包括1级本地LI高速缓存和2级本地L2高速缓存。可选地,L2高速缓存可以被称为“中间级高速缓存”(MLC。如所示出的,每个处理器核心116具有到互连110的相应的连接118,并且独立于其他处理器核心进行操作。[0038]为了简洁起见,互连110被示出为表示单个互连结构的单个双端箭头;然而,事实上,互连110示出了处理器或SoC内的一个或多个互连结构并且可以包括互连段或区域的层次结构,该互连段或区域的层次结构采用了独立的协议并且包括用于互连段区域之间的连接的适用的网桥。例如,存储器和处理器核心所连接的互连层次结构的部分可以包括采用第一协议的相干存储器区域,而在层次中较低级别的互连通常将用于IO存取并且采用非相干区域。处理器或SoC上的互连结构可以包括任何现有的互连结构,例如,总线和单通道或多通道串行点对点、环形或网状互连结构。[0039]I0接口110示出了由平台硬件102提供的各种I0接口。通常,I0接口110可以被实现为分立的组件例如,ICHIO控制器集线器等),或其可以被实现在SoC上。此外,IO接口110也可以被实现为IO层次结构,例如,外围组件快速互连PCIe™IO层次结构。IO接口110进一步有利于实现各种IO资源与设备和其他平台组件之间的通信。这包括被配置为有利于实现对网络122的存取的网络接口控制器NIC120,以及包括固件存储124、磁盘SSD控制器126和磁盘驱动器128的各种其它IO设备。更通常地,磁盘驱动器128代表各种类型的非易失性存储设备,包括:基于磁性的和基于光学的存储设备,以及固态存储设备,例如,固态驱动器SSD或闪存。[0040]采用CPU104的多个核心114来执行各种软件组件130,例如,存储在例如,由磁盘驱动器128所描绘的)一个或多个非易失性存储设备上的模块和应用。可选地,软件组件130中的所有或一部分可以被存储在经由网络122存取的一个或多个存储设备未示出)上。[0041]在引导或运行时操作期间,各种软件组件130和固件132被加载到系统存储器113中,并且在核心114上被执行作为包括执行线程等的进程。取决于特定的处理器或SoC架构,给定的“物理”核心可以被实现为一个或多个逻辑核心,随着进程被分配到各种逻辑核心。例如,在Iiltel·®Hyperthreading™架构下,每个物理核心都被实现为两个逻辑核心。[0042]在针对平台硬件102的典型系统引导下,固件132将被加载到系统存储器113中并且在其中被配置,之后是引导主机操作系统OS138。随后,虚拟机管理程序136或VMM可以被启动,该虚拟机管理程序136通常可以包括在主机OS134上运行的应用。然后,可以采用虚拟机管理程序136以启动各种虚拟机VM1-N,每个虚拟机将被配置为使用系统存储器113的各种部分即,地址空间)。继而,可以采用每个虚拟机VM1-N以托管相应的操作系统138η。[0043]在运行时操作期间,虚拟机管理程序136实现各种系统资源(例如,系统存储器113、核心114和磁盘驱动器128的重新配置。通常,虚拟机在它们托管的操作系统与底层平台硬件102之间提供抽象化结合虚拟机管理程序136,使硬件资源能够在VM1-N之中被共享。从每个托管的操作系统的角度来看,该操作系统“拥有”整个平台,并且不感知在虚拟机上运行的其他操作系统的存在。实际上,每个操作系统只存取由虚拟机管理程序136分配到该操作系统的资源和或资源部分。[0044]如图1进一步所示的,每个操作系统包括内核空间和用户空间,两者都被实现为系统存储器113中的存储器空间。内核空间被保护并用于运行包括网络栈的操作系统内核组件。可选地,网络栈将在用户空间中。同时,操作系统的用户空间用于运行用户应用,如装置1、2和N以及应用1A-1C、2A-2C和NA-NC所描绘的。[0045]通常,装置1、2和N示出了可以在平台硬件102上的虚拟机上运行的各种SDN或NFV装置。为了简洁起见,每个VM1-N被描绘为托管类似的一组软件应用;然而,这只是针对说明的目的,因为给定平台的VM可以托管类似的应用,或可以托管不同的应用。类似地,每个VM1-N可以托管单个虚拟网络装置如所示)、可以托管多个虚拟网络装置、或可以不托管任何虚拟网络装置。[0046]在虚拟化平台上的SDN下,通过虚拟网络在VM之间传递数据。通常,这可以经由用于每个VM的虚拟NIC以及虚拟机管理程序或VMM中的虚拟交换机来实现。在未优化的常规方法下,虚拟交换机实际上以类似于物理交换机的方式被实现,意味着虚拟交换机包括输入和输出缓冲器,并且执行各种分组流操作。与物理交换机一样,虚拟NIC之间的数据传输序列的每个步骤均发生延迟,其导致性能的大幅降低。[0047]在包括了在相同的物理机上托管的多个VM的虚拟化环境中,通信的介质是存储器子系统。因此,期望来自这些VM的链接的非常高的吞吐量性能不是不现实的。然而,使用多个虚拟化软件的来自典型现代服务器上的VM的测量揭露了:在数据吞吐量方面,VM间的通信性能远不及存储器子系统可以潜在地实现的数据吞吐量。例如,云工作负载在两个VM之间通常实现每秒大约一百万个分组的分组传输速率。典型地使用高度优化的软件栈和库的电信工作负载通常在两个VM之间可以实现每秒大约一千万个分组的分组传输速率。[0048]目前本领域中最有效的VM间解决方案依靠于共享的存储器作为用于分组通信的数据介质,如图2所示,其描绘了一对VM200和202以及在主机平台206上运行的虚拟机管理程序204200是生产者,其将分组写入包括数据交换介质208的共享的存储器,而VM202是从共享的存储器读取分组的消费者。为了保持数据的正确性,还存在“就绪”标志(未示出),用于保证生产者和消费者不彼此超限运行。[0049]如上所述,在防止分组吞吐量达到主机平台的存储器系统的带宽上限的这种情况下,包括了许多VM和网络栈相关的软件开销。为了分离纯软件开销最终可以通过许多正在进行的软件优化工作来解决),IPC存储器基线被用于按照存储器存取行为来仿真VM间分组通信,以研究硬件瓶颈。[0050]用于仿真的基线称为mempipe-spinSmith等人,初稿:HaveyoucheckedyourIPCperformancelately?,UNENIX2012。其数据路径行为模仿上述的VM间通信,减去VM开销,具有用于生产者线程和消费者线程的共享的环形存储器,以及在读取或写入操作之前需要检查的就绪标志。消费者使用拉模式pullmode以检查标志是否就绪,这与DPDK分组处理中使用的拉模型非常类似。[0051]图3示出了mempipe-spin的吞吐量性能,具有在插槽内的2个核心上运行的2个线程,以及还有在不同的插槽上运行的2个线程。从图3中,我们有两个主要观察。首先,插槽内的通信的吞吐量,特别针对较小的分组大小,远不及物理带宽限制。第二,当生产者和消费者在不同的插槽上时,吞吐量性能变得更糟。[0052]在生产者-消费者数据传输期间,在生产者上运行的第一线程写入数据块也称为数据对象),然后其由一个或多个其他线程来读取取决于消费者的数量和软件架构)。当数据交换介质是共享的存储器时,在抽象级别上,这包括生产者将数据写入共享的存储器中的位置例如,在存储数据对象的地址处),并且消费者线程存取在共享存储器中的位置。简单并且直接地说,即,直到你认为该共享的存储器位置可以横跨在系统存储器和各种高速缓存中的不同位置上被复制。[0053]为了说明这一点,我们将从简单的例子开始,其示出了软件应用包括生产者存取数据,以使得软件应用可以在将数据发送到消费者之前修改数据。这在图4a中被示出,图4a示出了图1中描绘的平台硬件和软件架构的进一步细节。[0054]在采用许多VM的虚拟化环境中,优选的实践方式是将物理或逻辑处理器核心分配到每个VM。这使对应于给定的客户操作系统进程和在客户OS上运行的应用的多个线程能够在相同的核心上被执行。其还经由对核心的Ll和L2高速缓存的使用来显著地改进存储器存取,如下将变得更加明显。相应地,在本文中的附图的一些中,VM被示为运行在相应的核心上,认识到可以存在其中单个核心可以托管多个VM的实例。尽管单个VM的进程可能在多个核心上运行例如,对于运行单个VM的个人计算机,诸如,运行托管MicrosoftWindows操作系统的VM的AppleMacintosh计算机),但是在SDN和NFV部署中这是不可能的使用场景。[0055]如所示,核心IHjPlH2中的每一个包括相应的Ll高速缓存1161和1162,以及相应的L2高速缓存118:和1182,每一个均包括被描绘为矩形块的多个高速缓存行也称为高速缓存行或高速缓存块)C=LLC108包括一组LLC高速缓存行402,并且系统存储器113同样包括多个高速缓存行,包括与共享的空间406的一部分相对应的一组存储器高速缓存行404。[0056]图5示出了图4a和图4b的实施例采用的存储器相干性架构的抽象视图。在该架构和类似的架构(例如,许多丨nte[®处理器所采用的)下,Ll和L2高速缓存是相干的存储器区域的部分,其中存储器相干性由处理器核心500中的相干性机制来管理。每个核心104包括Ll指令ILl高速缓存116:、和L2数据高速缓存DL1116d、以及L2高速缓存118儿2高速缓存118被描绘为非包含的,这意味着它们不包括Ll指令中的任何高速缓存行的副本,以及它们相应的核心的数据高速缓存。作为选项,L2可以包括Ll,或可以部分地包括Ll。另外,L3可以不包括L2。另外作为第一选择,Ll和L2可以由在高速缓存层次结构中占据单个级别的高速缓存来替换。[0057]同时,LLC被认为是“非核心”502的部分,其中通过相干代理来扩展存储器相干性,导致额外的开销和处理器周期。如图所示,非核心502包括耦合到外部存储器113和全局队列504的存储器控制器106。全局队列504也耦合到L3高速缓存108和QuickPathInterccraneet®快速路径互连)(QPI接口506。可选地,接口506可以包括Keizer技术接口KTI儿3高速缓存108其在该架构中用作LLC是包含的,这意味着其包括Ll和L2高速缓存中的每个尚速缓存彳丁的副本。[0058]如所公知的,随着离核心越来越远,高速缓存级别的大小会增加,但是存取高速缓存中的高速缓存行所引发的延迟也会增加。Ll高速缓存是最小的(例如,32-64千字节KB,而L2高速缓存稍大(例如,256-640KB,以及LLC比典型的L2高速缓存大一个数量级左右例如,8-16MB。当然,这些高速缓存的大小与系统存储器的大小是千兆字节级的)相比是相形见绌的。通常,存储器层次结构中的给定级别的高速缓存行的大小在存储器层次结构中是一致的,并且为了简洁和历史参考,系统存储器中的存储器的行也被称为高速缓存行,即使它们实际上不在高速缓存中。进一步意识到的是,全局队列504的大小是相当小的,因为其仅被设计为暂时地缓存在各种高速缓存、存储器控制器106、以及QPI接口506之间正被传输的高速缓存行。[0059]图4a进一步示出了用于根据高速缓存相干性协议来交换消息和传送数据的多个高速缓存代理。代理包括核心代理408和410、L1高速缓存代理412和414、L2高速缓存代理416和418、以及L3高速缓存代理420。[0060]图4a示出了简单的存储器存取序列,其中从系统存储器存取高速缓存行并且将其拷贝到核心11也的1^1高速缓存1。系统存储器中的数据被存储在存储器块也常规地被称为高速缓存行,如上所述)中,并且每个存储器块具有相关联的地址,例如,用于当今64比特的处理器的64比特的地址。从包括生产者和消费者的应用的角度来看,给定的数据块数据对象位于以某些存储器地址为起始的系统存储器中的位置,并且通过应用的主机OS来存取数据。通常,存储器地址实际上是虚拟存储器地址,并且通过一些软件和硬件机制,这样的虚拟地址被映射到幕后的物理地址。另外,应用不可知数据块中的所有或一部分是否在高速缓存中。在抽象级别上,应用将要求操作系统取数据通常,经由地址指针),并且OS和硬件会将请求的数据返回到应用。因此,存取序列将由OS转换为针对以一些存储器地址开始的存储器的一个或多个块的请求,其最终必要时被转换为针对一个或多个所请求的高速缓存行的物理地址。[0061]返回到图4a,存取序列将以以下为起始:核心IH1发出针对所有权读取RFO消息,并且首先“监听”(即,检查其本地Ll和L2高速缓存,以查看请求的高速缓存行当前是否出现在这些高速缓存之一中。在该示例中,生产者200期望存取高速缓存行,从而其数据可以被修改,并因此使用RFO而不是读取请求。高速缓存中所请求的高速缓存行的出现被称为“命中”,而不出现被称为“错过”。这是使用公知的监听技术完成的,并且每个高速缓存所维持的信息命中或错过的确定识别当前出现在高速缓存中的高速缓存行的地址。如上所述,L2高速缓存是不包含的,这使得Ll和L2高速缓存是排他的,这意味着相同的高速缓存行将不会在给定核心的Ll和L2高速缓存两者中都出现。在操作Ia下,核心代理408将具有监听RF0S422的RFO消息发送到Ll高速缓存代理412,其导致了错过。在操作Ib期间,Ll高速缓存代理412将RFO监听消息422转发到L2高速缓存代理416,导致另一次错过。[0062]除了监听核心的本地Ll和L2高速缓存之外,核心也将监听L3高速缓存108。如果处理器采用L3高速缓存是包含的这种架构,这意味着存在于用于任何核心的Ll或L2中的高速缓存行也存在于L3中,如果L3监听导致了错过,则核心知道高速缓存行的唯一有效的副本在系统存储器中。如果L3高速缓存是不包含的,则可以执行用于其他核心的Ll和L2高速缓存的额外监听。在图4a的示例中,L2代理416将RFO监听消息422转发到L3高速缓存代理420,这也导致了错过。只要L3是被包含的,它就不将RFO监听消息422转发到其他核心的高速缓存代理。[0063]响应于检测到请求的高速缓存行不出现在L3高速缓存108中,L3高速缓存代理420向存储器接口106发送读取请求424以从系统存储器113取回高速缓存行,如存取存储在存储器地址428的高速缓存行426的存取操作Id所描绘的。如拷贝操作2a所描绘的,读取请求导致高速缓存行426被拷贝到L3高速缓存108中的高速缓存行槽430中。假定L3已满,这导致对当前占用槽430的高速缓存行432的驱逐。通常,将基于本领域公知的一个或多个高速缓存驱逐算法来选择将驱逐的高速缓存行并因此确定高速缓存数据中的哪个槽将被驱逐和写入)。如果高速缓存行432处于修改状态,则在驱逐之前,高速缓存行432将被回写到存储器113称为高速缓存回写),如所示。如进一步示出的,在L2高速缓存IW1中的槽434中存在高速缓存行432的副本,其释放该槽。在操作2b期间,高速缓存行426也被拷贝到槽434。[0064]接下来,将高速缓存行426写入Ll数据高速缓存1161D。然而,该高速缓存已满,正请求驱逐其高速缓存行中的一个,如对占用槽438的高速缓存行436的驱逐所示。然后,将该驱逐的高速缓存行写入槽434,有效地交换高速缓存行426和436,如操作2c和2d所描绘的。至此,核心114ι可以存取亦称为消费高速缓存行426。[0065]经常,如上参考图2所述,第一NFV装置生产者将生成对应于第一对象的数据例如,修改第一对象),并且随后第二NFV装置消费者将会想要存取该对象。在一种情况下,多个NFV装置可以想要简单地读取该相同的对象的数据。图4b中示出了,在常规方法下如何完成这些的示例的说明。[0066]在该过程开始时,存在高速缓存行426的三个副本,一个在存储器113中,一个在L3高速缓存108的槽430中,以及另一个在Ll数据高速缓存1161D的槽434中。高速缓存行430保存对应于数据对象的数据。(为了简单起见,仅示出了单个高速缓存行;实际上,数据对象的数据通常会涵盖多个高速缓存行)。在核心2上执行的消费者期望存取该数据对象,消费者知道该数据对象位于存储器地址428每个在核心2上执行相应的软件对象代码)。[0067]如图4b进一步所描绘的,L3高速缓存代理420维持其存储的每个高速缓存行的信息,该信息与该高速缓存行的状态以及哪个核心具有高速缓存行的副本有关。在一个实施例中,核心有效CV比特用于指示哪个核心具有高速缓存行的有效副本。当高速缓存行426被拷贝到L3高速缓存108时,其高速缓存行状态数据被设置为指示高速缓存行426处于排他的(ExcIusive状态,并且CV比特指示核心1具有高速缓存行的唯一有效副本,如高速缓存行状态数据44051所描绘的。随后,生产者200修改数据对象,导致高速缓存行426的状态被更新为修改的(Modified状态426S1。依据常规的高速缓存相干性方案和高速缓存驱逐策略,至此,高速缓存行的修改的副本不被写入L3高速缓存108。[0068]核心2代理410将发送读取请求442以及高速缓存监听,以确定高速缓存行426是否出现在其Ll数据高速缓存1162D或其L2高速缓存1182或L3高速缓存108中。如操作Ia和Ib所描绘的,核心代理410将第一高速缓存监听发送到Ll高速缓存代理414,请求存取高速缓存行426例如,读取请求422,这导致了错过,并且监听被转发到L2高速缓存代理418,导致了第二次错过。如前述,具有监听的读取请求消息从L2高速缓存代理418被转发到L3高速缓存代理420。[0069]L3高速缓存代理428检查以观察在L3高速缓存108中是否出了现高速缓存行426的副本,这导致了命中。L3高速缓存代理428检查高速缓存行状态数据440S1并且确定核心1具有高速缓存行426的排他型所有权。由于处于排他状态的高速缓存行可以由其所有者来修改,所以可能的是:高速缓存行426已经被修改在这种情况下它已经被修改),并因此由L3高速缓存108保存的高速缓存行426的副本不是当前的。相应地,L3高速缓存代理420将读取请求发送到核心1的Ll和L2高速缓存代理,如最终由Ll高速缓存代理412服务的操作2a和2b所描绘的。[0070]响应于接收到读取请求442,修改的高速缓存行426的副本将经由互连112从Ll数据高速缓存116^被转发到Ll数据高速缓存1162D,并且被写入到槽444,如操作3所描绘的。另外,在LI数据高速缓存116^和1^1数据高速缓存116:^中的高速缓存行426的每一个副本将被标记为共享的(Shared,如高速缓存行状态42652所描绘的。为了简洁起见,Ll数据高速缓存1162D以及L2高速缓存1182的一个或多个中的作为拷贝高速缓存行426的结果可能被驱逐的现有的高速缓存行并未被示出,但是如果Ll数据高速缓存1162#PL2高速缓存1182已满,则可以期望针对图4a中所示和上述的这些的类似的结果。[0071]关于操作3,L3高速缓存108中的高速缓存行426的副本也被更新以反映高速缓存行426中的修改的数据。另外,更新高速缓存行426状态数据以反映该高速缓存行426现在由核心1和核心2共享,如高速缓存行状态数据440S2所描绘的。[0072]每个监听具有相关联的周期成本积累延迟,并且消耗处理器的互连上的带宽。此夕卜,当处理器核心正等待存取其所请求的数据时,请求存取的线程的处理被停止。[0073]图6中示出了更复杂的存储器存取序列,图6示出了在计算机平台上实现的消息流图600,计算机平台包括生产者核心602和消费者核心608,其中生产者核心包括生产者的Ll高速缓存604、L3高速缓存例如,LLC606,消费者核心具有消费者的Ll高速缓存610。这些组件中的每一个均具有相应的代理,如代理602六、6044、6064、608六和61^所描绘的。在图6中,未示出L2高速缓存,因为在该示例中,高速缓存行的副本位于Ll高速缓存中。[0074]在初始状态下,存在高速缓存行612的三个副本,其当前被缓存在生产者的Ll高速缓存604、L3高速缓存606和消费者的Ll高速缓存610中,分别被描绘为高速缓存行612P,612L3和612C。高速缓存行612P和612冲的每一个均被标记为共享的,而高速缓存行612L3包括高速缓存行状态数据,该高速缓存行状态数据识别高速缓存行612是共享的,并且生产者核心和消费者核心中的每一个均保存尚速缓存彳丁的有效副本。[0075]如所示,生产者核心602期望获得共享的高速缓存行602的所有权,因此生产者核心602可以修改高速缓存行602。例如,如果生产者核心602期望通过写入来修改其高速缓存行612的副本(尚速缓存行612p,则其必须首先获得尚速缓存行的所有权。为了获得尚速缓存行612的所有权,生产者核心的代理602A向消费者的Ll高速缓存604的代理604a发送针对所有权读取RFO写入请求61LRF0614由代理转发到L3高速缓存606的代理606A。响应于接收到RFO614,代理606A向消费者的Ll高速缓存代理610A发送无效消息616,并且更新其高速缓存行612L3状态数据以指示高速缓存行现在处于排他状态,将生产者核心602识别为高速缓存行612的排他所有者。在收到无效消息616时,代理610A将高速缓存行612e标记为无效的(Dnvalid未示出)。[0076]L3高速缓存606的代理606A将完整的消息618返回到生产者的Ll高速缓存604的代理604A。当收到时,高速缓存行612[4皮标记为排他的。然后将数据写入高速缓存行612p如写入620所描述的),并且高速缓存行612P被标记为修改的。然后,代理604A将完整的消息622返回到生产者核心602的代理602A,完成了写入事务。[0077]异步地,消费者核心608的代理608A周期地对消费者的Ll高速缓存610中的高速缓存行的状态进行轮询,如轮询循环624所描绘的。随后,代理608A尝试使用轮询循环读取626来读取其高速缓存行612的副本高速缓存行612C。由于至此,高速缓存行612C被标记为无效的,这导致了L1L2高速缓存错过,并且消费者的Ll高速缓存610的代理610A向代理606A发送消息628,该代理606A将生产者核心602识别为保存有效的高速缓存行,如由相对应的CV比特所识别的。然后,代理606A将监听630与读取请求一起发送到代理604A。作为响应,高速缓存行612P的状态从修改的改变为共享的,并且包括高速缓存行612P的副本的监听响应632被返回到代理606A。[0078]在收到监听响应632时,代理606A执行高速缓存行的存储器回写WB,并且将其副本的状态612L3返回到共享的,并且将适当的CV比特设置为再一次标识该生产者核心602和消费者核心608保存高速缓存行的有效副本。随后,包括高速缓存行612的修改的副本的高速缓存行错过响应634由代理610A接收,用于覆写高速缓存行612c中的数据,并且将高速缓存行612c标记为共享的。曾经在消费者的Ll高速缓存中,消费者核心608消耗高速缓存行,如由消耗操作636所描绘的。[0079]当前述高速缓存行存取序列在一类处理器上被测试为生产者消费者基线事务时,花费112个处理器周期以恰好完成读取请求。这是大量的开销,大量的流量被发送到各种代理之间以有利于实现事务,同时维持高速缓存一致性。这些操作使得针对生产者-消费者工作负载的每个存储器存取的更长的延迟,如在VM间通信中。作为结果,测试已经示出处理器被停止超过其周期的50%S卩,在不退出指令的情况下,花费了大于50%的CPU周期)。[0080]理想地,生产者可以使用推送-存储指令将数据推送到消费者的MLC中以节省延迟。然而,这种方法需要软件始终知道目标MLC,这可能是不切实际的,特别是伴有频繁的VM迀移。而且,由于MLC的有限容量,推送操作可以驱逐消费者MLC中的有用的数据。[0081]为了实现良好的性能增益而不必承担复杂性,想到了称为高速缓存行LLC分配CLLA的新的存储器指令。CLLA指令立即从生产者的MLC将高速缓存行分配到LLC中,以使得消费者可以直接从LLC存取数据从而减少存储器引用延迟。CLLA指令允许软件向硬件提供应用级认知以用于优化。通过主动地将数据推送到更接近于消费者的LLC,通信延迟减少超过2倍,因此改进了性能以及减少了相干消息的数量避免咨询SF从而节省能源。[0082]图7示出了对应于类似的一对分别源自于图6的消息流图600中被执行的生产者核心602和消费者核心608中的写入和读取事务的消息流图700。消息在两个消息流图中的相同代理之间被传递。作为开始条件,在L3高速缓存606中存在高速缓存行612的副本,如由高速缓存行612^所描绘的。如果消费者的高速缓存行612的副本已被更新,则高速缓存行612L3的初始状态是修改的,或如果消费者的副本未被CL降级未修改,则高速缓存行612L3的初始状态是排他的。CV是不存在的,表示在生产者的Ll或L2高速缓存604或消费者的Ll或L2高速缓存610中没有出现高速缓存行的副本。[0083]如前述的,生产者核心602的代理602A向代理604A发送RFO写入消息702,这导致了L1L2错过。作为响应,代理604A将RFO写入消息702转发到L3高速缓存606的具有所请求的高速缓存行高速缓存行612L3的副本的代理606A。根据初始状态,高速缓存行612L3的状态从修改的转换为排他的,或保持为排他的。CV比特被更新以识别具有唯一有效的高速缓存行的副本的生产者核心602。由代理606A经由消息704将高速缓存行612L3的副本返回到代理604A,如高速缓存行612p所描绘的。该副本由生产者的写入更新,并且标记为修改的,随后是返回到代理602A的完整的消息706。[0084]在常规方法下,高速缓存行612p将保存在生产者的Ll高速缓存604中,直到它被驱逐。然而,在该实施例下,已经修改了高速缓存行的应用包括CLLA指令以降级高速缓存行612p。相应地,结合CLLA指令的执行,CLDEM0TE消息708由代理602A发送到代理604A以将高速缓存行612P降级到L3高速缓存606。响应于接收到CLDEM0TE消息708,代理604A驱逐高速缓存行612P并且将该高速缓存行转发到代理606A,其重写更新高速缓存行612L3中现有的数据,并且将高速缓存行标记为修改的。生产者核心的CV比特被重置,以反映存在保存该高速缓存行的有效副本的核心。[0085]以与上述类似的方式,消费者核心608的代理608A向代理610A发送读取请求712识别高速缓存行612。高速缓存行612的查找导致了错过针对消费者Ll和L2两个高速缓存),并且代理610A将读取请求712转发到代理606A。由于使用CLLA指令降级了高速缓存行612P的修改的版本,所以请求的高速缓存行612的修改的副本已经在高速缓存行612L3中。作为结果,如方框714所描绘的,消除了监听消息630和监听响应632。[0086]响应于读取请求712,代理606A将错过响应消息716中的修改的高速缓存行612L3的副本返回到代理610A。然后,将修改的高速缓存行的该副本写入到消费者的Ll高速缓存610中的高速缓存行槽,如具有标记为修改的状态的高速缓存行612。所描绘的。然后,从消费者的Ll高速缓存610取回由消费核心608来消耗的高速缓存行612c,如由消耗操作718所描绘的。如果在消费者核心608上运行的应用知道其将只会读取高速缓存行,则其可以主动地利用CLLA指令来降级,如由CLDEM0TE消息720所描绘的。[0087]返回到高速缓存行612L3,在图7示出的实施例中,不存在回写到存储器,即使高速缓存行612L3中的数据已经被修改。高速缓存行612L3的状态被标记为排他的,CV设置为消费者,将高速缓存行的所有权转移到消费者的Ll高速缓存610,而不是执行到存储器的写回。[0088]使用利用CLLA指令的主动高速缓存行降级,可以显着减少与存储器事务相关联的延迟。例如,在消息流图700下,消费者读取存储器存取的处理器周期的数量减少到48个周期。[0089]存在各种方式来采用在机器级实现的新的CLLA指令例如,作为机器级指令)。在一种方法下,可以在源代码中实现指令,这将在编译时导致CLLA机器指令的生成。例如,在C或C++下,可以使用以下函数:[0090]void_mm_cllaItem*p[0091]其中p是到数据对象(项目)的地址的指针,针对该数据对象使用CLLA机器指令来降级高速缓存行。在执行由CC++编译器生成的对象代码期间,处理器硬件使用指定的地址以选择适当的高速缓存行来降级。硬件可以可选地显示地组合冗余的CLLAs以节省时间和功率。[0092]优选地,当通过给定应用或线程存取数据对象已经完成时,程序员使用CLLA源码级指令。例如,在NFV装置的上下文中,典型地通过存取分组报头中的字段来处理分组。一旦给定的NFV装置完成了它的任务,则由处理链中的下一个NFV装置来存取相同的分组可能具有修订的分组报头和或共享的分组处理的应用数据),其中链上游的NFV装置是产生由在链下游的消费者消耗的数据的生产者。优选的是,生产者应该完成更新整个高速缓存行然后将其推送到L3高速缓存LLC,以供消费者消耗。在这种情况下,软件可以决定何时调用指令。[0093]作为第二选项,可以修改源码级编译器以检查存储器存取模式,并且检测何时发生针对给定线程或进程最后一次存取存储器中的数据对象,并且在由编译器生成的目标代码中插入CLLA机器级指令。除了数据模式之外,编译器可以查看指定的源码级指令,例如,C++11中的“删除”,该指令释放分配给数据对象的存储器,或C++析构函数的执行,其也将释放这样的存储器。[0094]在另一种方法下,智能编译器被配置为检查对象代码中的存储器存取模式,并且修改对象代码以添加CLLA指令。通过在对象代码中CLLA指令的手动插入,可以进一步增强此方法。[0095]对于源代码级的智能编译器,软件编码器可以添加编译指示或类似的某物,以指导编译器针对某些代码段或可以全局应用的)生成CLLA指令。可选地,或另外,源代码可以包括指示编译器考虑生成CLLA指令的提示。针对没有提示的实现方式,编译器将通过给定的线程来查看给定数据对象的最后一次存取。例如,存在很多涉及分组处理的入队,作为示例性应用,诸如,将分组报头放入队列中。当关于分组报头的工作完成时,队列前进通常使用循环FIFOAIFO头部的前进可以触发针对与FIFO槽中出队的数据对象中的一个或多个相关的高速缓存行的CLLA指令的生成。更准确地说,FIFO典型地包含到存储在存储器中的较大分组报头数据结构的指针;然而,针对适当设计的代码,取出指针也可以删除由指针指向的数据对象。[0096]多插槽NUM实现方式[0097]当今在数据中心等被部署的常用平台架构之一是非均匀存储器存取NUMA多处理器平台架构。图8示出了双“插槽”NUMA多处理器平台架构800,其采用了两个NUMA节点802a和802b,也被标记为“A”和“B”。为了简化和方便,本文中对节点的引用可以是其字母标签而不是其附图标记。另外,对横跨节点通用的组件的引用将被作为基线附图标记,而字母“a”、“b”将被添加到附图的附图标记中,以识别在特定的节点上的组件。例如,节点A和B中的每一个包括处理器804,其针对节点A的处理器被标记为104a和针对节点B的处理器的标记为804bAUMA节点也可以被称为插槽。[0098]除了处理器804之外,每个节点包括系统存储器806和耦合到一个或多个PCIe槽和或PCIe设备的PCIe互连808,如由PCIe槽和设备809所共同描绘的。每个处理器804包括核心部分,该核心部分包括多个处理器核心810,每个核心包括Ll和L2或MLC高速缓存。[0099]在示出的实施例中,处理器的剩余部分被称为非核心,并且包括各种互连电路和接口,以用于在通信中连接处理器上的各种功能块。为了简化,将该互连电路描绘为互连812;然而,应当理解的是,互连812可以表示一个或多个互连结构,例如,总线和单通道或多通道串行点对点、环形或网状互连结构。非核心电路的部分被配置为在传统的北桥南桥架构下处理北桥功能中的许多功能,包括设备的存储器控制和PCIe接口(例如,NIC。在图8中的处理器非核心中所描绘的相对应的示例性功能块包括=PCIe接口(IF814、PCIe根复合体RC815、L3高速缓存816、存储器控制器MC817、以及插槽到插槽socket-to-socket的互连接口(S-to-SIF818。除了这些示出的块之外,每个处理器804将包括为了清楚而未示出的许多其他功能块。[0100]每个处理器804经由插槽可操作地耦合到被称为主板820的印刷电路板,或经由直接耦合技术例如,倒装芯片接合)以其它方式耦合到主板。在任一种情况下,普遍的实践方式是将处理器本身称为插槽,并因此将术语插槽到插槽的互连和接口用于在通信中耦合处理器节点。主板120包括电线(例如,迹线和通孔)以有利于实现与图8所描绘的各种互连的物理结构相对应的电连接。这些互连包括PCIe接口814与PCIe槽和设备809之间的PCIe互连808,以及耦合在插槽到插槽互连接口818a和818b之间的插槽到插槽的互连822。在一个实施例中,插槽到插槽的接口818a和818b采用IntelQPI协议和布线结构。[0101]如图8进一步所示,用于每个插槽的系统存储器806包括其中存储了存储器高速缓存行的地址空间824。如前所述,L3高速缓存116a的存储器空间包括L3高速缓存行826。[0102]在NUMA架构下,处理器(和处理器核心)能够存取横跨平台分布的不同存储器资源。存储器资源可以被认为是本地存储器资源例如,与处理器或核心在同一节点上的存储器资源或远程存储器资源例如,其他节点上的存储器资源)。例如,在节点802a的视角下,系统存储器806a包括本地存储器资源,而系统存储器806b包括远程存储器资源。在另一种类型的NUMA架构(本文未描述)下,远程存储器资源也可以在处理器之间被共享,而不与特定处理器或节点相关联。由于针对给定节点,本地存储器资源是可操作地耦合到处理器的,而远程存储器资源不是,所以本地存储器资源的存取相对于远程存储器资源而言是不相同的(例如,存取是不均匀的)。此外,当可用时采用本地存储器资源是优选的。[0103]在平台架构800下,在一个节点中的处理器核心上运行的软件可以被分配有在名义上与另一节点相关联的系统存储器中的存储器地址空间。相应地,在一些实施例下,平台的存储器资源的一部分的地址空间可以作为单个全局池来管理,具有针对池内的每个存储器地址位置的唯一地址。另外,地址空间的一部分可以被认为是采用本地寻址(例如,分配到操作系统的地址空间)的本地地址空间,而另一部分可以使用全局寻址来进行寻址。[0104]依据NUMA架构的另一方面,网络端口(和因此相关联的NIC可以被指派到在节点上的处理器(或处理器核心)上运行的软件应用,该节点不同于与指派的端口相关联的节点。当被分配到软件应用的存储器在与处理器相同节点上时,NIC接收分组和预定存储资源,在所述预定存储资源中分组将被写入在独立的节点上。[0105]图8a示出了在NUMA平台架构800中的示例性存储器读取,在该NUMA平台架构800下,请求核心与被请求的存储器位于不同的节点上。图8a进一步描绘了帮助有利于实现读取存储器事务的一些代理,包括核心代理602a、Ll高速缓存代理604a、和L3高速缓存代理606aJUMA平台架构进一步包括一对高速缓存归属代理cachinghomeagentsCHA830a和830b。[0106]存储器读取事务开始于在节点A中的核心Al上运行的生产者200的软件指令,所述软件指令发送读取请求以存取节点B上的存储器806b的地址空间中的存储器高速缓存行832。如前所述,该读取请求将从核心代理602a发送到Ll高速缓存代理604a,并且如果发生L1L2错过,则Ll高速缓存代理604a会将读取请求转发到L3高速缓存代理606a。这共同地被描述为操作1。在该示例中,发生L1L2和L3错过,并且作为响应,L3高速缓存代理606将存储器存取请求发出到存储器控制器817a,如第二操作2中所描绘的。这再次导致了错过。[0107]作为这个错过的结果,读取请求在内部被转发到节点A上的CHA830a,其向节点B上的CHA830b发送读取请求与监听,如由操作3所描绘的。尽管示出为直接连接,但是监听读取请求实际上将经由插槽到插槽的互连822被转发。另外,如果存在多个远程插槽,则请求节点上的CHA可以将监听和读取请求发送到其他插槽上的CHA中的每一个。当接收到监听读取请求时,CHA830b会在内部将请求转发到节点B上的代理606a,并且代理606a将向存储器控制器817b发出存储器读取存取,如由操作4所描绘的。在该示例中,由于被请求的高速缓存行832在存储器806b中,所以高速缓存行的副本将从存储器806b中取回,并且被返回到核心A1。数据返回路径部分地包括:通过插槽到插槽的互连822来转发数据,如由操作5所描绘的。当正转发该高速缓存行时,其被存储在核心Al的LI高速缓存中的可用槽中,并且然后由核心Al来读取,如由操作6所描绘的。[0108]前述读取请求甚至不考虑潜在的额外的复杂性,例如所请求的高速缓存行是在排他的或修改的状态中的一个核心的L1L2高速缓存或远程插槽上的另一个核心的L1L2高速缓存中。即使如此,错过的串行序列和横跨插槽的监听导致了非常长的延迟例如,通过测试测量的每次存取超过300个周期),这严重影响了性能。[0109]依据一些实施例的其他方面,提供了两种方案来主动减少当从远程插槽存取存储器时的丢失的周期。这些包括自适应早期监听方案和自适应远程推送方案。这些方案可以进一步与上面论述的高速缓存行降级方案进行组合。[0110]自适应早期监听[0111]在自适应早期监听方案下,高速缓存行存取模式由适用的代理来进行监测,并且当存取模式指示数据更可能驻留在远程插槽而不是在相同插槽上的本地存储器或高速缓存)中时,将发出早期监听。“早期”监听意味着从本地插槽被转发到远程插槽的监听(主动地比其在常规方案下会更早地被发出,如图8b所示的。[0112]如上所述,在操作1期间,在L1L2错过之后,读取请求被转发到L3高速缓存代理506a。然而,不是执行操作2,L3高速缓存代理506a立即将请求转发到CHA830a,因此能够比在图8a中描绘的常规方法执行监听更早地来执行操作3中的监听。[0113]存在若干种不同的方法潜在地可以被用于监测和获取高速缓存访问模式。在一种方法下,共享的存储器区域由软件定义并且该信息被中继到硬件并且可用于CHA,而CHA相应地监视某些存储器区域并且发出早期监听。该方法由图9中的流程图900中的操作来描绘。在方框902中,共享的存储器区域由软件定义。例如,软件可以将虚拟全局存储器空间的某些区域定义为针对多插槽平台是共享的,使在不同插槽上的核心上运行的多个软件应用能够存取共享的存储器区域内的数据对象。[0114]在方框904中,共享的存储器区域被中继到平台处理器硬件,以使得该信息可以被CHA存取。例如,共享的存储器区域可以由将虚拟存储器地址映射到物理存储器地址的页表中的标签或比特来识别。然后,如方框906所示,CHA使用共享的存储器区域数据来发出早期监听。[0115]第二种方法是将标签包含在高速缓存行中以指示高速缓存行的存取模式。如果高速缓存行始终从远程插槽提供,则标签会被更新以指示模式,并且下一次当高速缓存行的数据请求错过本地LLC时,插槽的CHA会发出远程插槽的早期监听。[0116]用于实现该方法的相对应的逻辑和操作在图10中的流程图1000中被示出。在方框1002中,标签被插入高速缓存行中,最初指示高速缓存行是本地的。在方框1004中,观察到高速缓存行的存取模式。例如,这可以由CHA结合LLC高速缓存代理来完成。在判定方框1006中,针对给定的高速缓存行是否被持续地经由远程插槽来供应做出确定。如果答案为“是”,则逻辑进行到方框1008,其中标签被更新以指示高速缓存行是远程的。随后,在方框1010中,对其本地LLC的核心存取请求导致错过。作为回应,本地CHA向远程CHA发出了早期监听。[0117]还有另一种方法是使用布隆过滤器Bloomfilter来监测高速缓存行的存取模式。在这种技术下,一个或多个布隆过滤器会用于跟踪到远程插槽的存取模式,并且如果应该发出早期监听,则提供提示。[0118]更详细地说,布隆过滤器是空间有效的数据结构,其用于以概率的方式测试元件是否是集合的成员。布隆过滤器的最简单的形式采用单个哈希算法,其用于生成针对适用的比特位置常常称为单一维度比特向量的单个行或列的元件的比特值。另一种布隆过滤器方案采用多个哈希算法,使比特结果被映射到单一维度比特向量。在更复杂的布隆过滤器下,多个哈希算法中的每一个的比特向量被存储在相应的比特向量中,其也可以被称为多维度比特向量。[0119]使用具有比特值被映射到单一维度比特向量中的多个哈希算法实现的布隆过滤器的示例在图Ila-图Ilc中被示出。在这个示例中,存在三个哈希算法,描绘为出〇〇、出〇〇和H3X,其中元X是输入值。针对给定的输入XI,计算哈希算法HlXl、H2Xl和H3Xl中的每一个的结果,并且相对应的比特在哈希结果中相对应的比特位置处被标记(例如,设置为1。例如,如图Ila中所示,哈希函数H1X1的结果为26、H2X1的结果为为43以及H3X1的结果为为14。相应地,在位置26、43和14处的比特被设置例如,比特值从’0’(清除被翻转到’Γ设置)。然后,针对随后的输入X1值重复该过程,导致了图3b中所示的比特向量,其中被设置的比特被描绘为灰色和黑色的。图Ilb也示出了针对输入X2以黑色描绘的比特)的命中结果。通过使用X2作为输入值也称为元X2的查询来应用布隆过滤器的哈希算法中的每一个,并且然后通过确认是否存在比特被设置在每个哈希算法结果的比特位置处,来验证命中。例如,如果存在针对每个哈希算法结果的位置所设置的比特,则结果是命中,这意味着元素Xk对应于应用了哈希算法的先前输入值并且相对应的比特已被设置的概率很高取决于比特向量的稀疏度)。[0120]图Ilc示出了输入X3的错过的结果。在这种情况下,与哈希算法结果相对应的比特向量中的一个或多个比特位置未被设置。图Ilb和图Ilc示出了布隆过滤器固有的几个特征。首先,布隆过滤器可以产生主动错误。这是因为通过针对许多输入X评估哈希算法而形成的比特向量是每个输入X的单独的结果的并集。相应地,当输入^不用于生成比特向量时,可以存在产生针对布隆过滤器的比特向量应用的测试输入X1的命中结果的设置比特位置的组合。这被称为假阳性。布隆过滤器的另一固有特征是它们不产生假阴性。如果被应用于布隆过滤器的比特向量的输入Xi的评估导致了错过,则确定地知道Xi不是先前布隆过滤器输入的集合的成员。[0121]图Ila-图Ilc示出了针对每个布隆过滤器哈希算法维持独立的表格行和一维比特向量的布隆过滤器的示例。尽管每行被描绘为具有相同的长度,但是不同的哈希算法将产生不同长度的比特向量是可能的。由于哈希算法是针对输入X值例如,针对图Ila中的X1被评估的,所以相对应的比特被设置在对应于哈希算法结果的表格行的比特位置处。如前所述,输入X2导致了命中无论是真命中还是假阳性),而输入X3则导致了错过。[0122]为了实现布隆过滤器以用于跟踪远程高速缓存行存取,在一个实施例中,可以采用在高速缓存行地址上的哈希函数。由于共享的数据对象典型地存储在存储器的块例如,存储器页面)中,所以使用布隆过滤器功能的存储器页表映射信息其如上可以由软件应用本身来提供可以是有利的,其中布隆过滤器“命中”测试采用了到高速缓存行所属的存储器页面的映射的查找。如果存储器页面是远程页面(即,存储在远程插槽上的物理存储器地址空间中),则布隆过滤器数据也将指示为如此。进一步要注意的是,除了哈希函数之外的函数也可以用于布隆过滤器。[0123]自适应远程推送[0124]即使采用早期监听,数据存取仍然会受到通过使用插槽到插槽的互连招致的延迟。例如,具有QPI®或KTI的插槽到插槽的互连的一个多插槽平台的延迟大约为60个周期,这比LLC存取延迟更长。这种长延迟是造成图8a所示的插槽间通信的显著的性能降级的原因。[0125]为了消除这种延迟,使用自适应远程推送ARP方案来主动地将生产者数据推送到消费者的本地LLC,因此减少了通信延迟和相关的能量。可以使用上述监测数据存取模式的方法来获取数据存取模式,以决定是否应该主动推送高速缓存行。[0126]当数据被推送到目标远程插槽时,所有权将被释放并且目标插槽中的副本是最新更新的版本。基于当前的相干性协议,ARP需要更复杂的硬件软件支持。然而,回报可能是显著的,潜在地使插槽间的存储器存取能够达到与插槽内的存储器存取的类似的性能级别。[0127]图13是主要关注高速缓存和代理的双插槽的平台的抽象图。双插槽的平台包括插槽A和插槽B,每个插槽具有相似的结构。这包括一对核心114,每个核心具有Ll高速缓存116、L2高速缓存118。每个插槽进一步包括L3高速缓存108操作为LLC和系统存储器113。图13中描绘的代理包括核心代理1300、1302、1304和1306;MLC代理1308、1310、1312和1314;L3高速缓存代理1316和1318;存储器代理1320和1322;以及CHA1324和1326。[0128]有利于使用ARP的情况类似于上述单个插槽使用CLLA指令的情况。例如,一个使用情况:当在第一NUMA节点(例如,插槽B上工作的生产者修改了将由在第二NUM节点例如,插槽A上工作的消费者所消耗的高速缓存行而不修改该高速缓存行的情况。这在图13a中示意性地被示出。[0129]在图13a所示的缓存状态开始处,核心Bl在其Ll数据高速缓存116B1中保存有高速缓存行1330。在L3高速缓存108b和系统存储器113b中也保存有高速缓存行1330的副本。高速缓存行1330的状态为排他的,并且L3高速缓存108b指示CV=核心Bl。[0130]在第一操作1期间,由在核心Bl上运行的VM托管的生产者应用1332写入到Ll数据高速缓存116B1中的高速缓存行1330,使其状态变为修改的。经修改的高速缓存行1330主动降级到L3高速缓存108b,L3高速缓存108b也更新了被保存在L3高速缓存108b中的高速缓存行1330的副本。在这个阶段,在一个实施例中,高速缓存行1330的所有权(由核心BI被释放,并且高速缓存行1330的副本经由CHA1326和1324通过插槽到插槽的互连未示出)被推送到L3高速缓存108a,如操作3所描绘的。L3高速缓存108a和108b中的每一个中的高速缓存行1330的副本被标记为共享的,并且将CV设置为0,指示高速缓存行1330不是由任何核心所拥有。可选地,如操作3A所描绘的,高速缓存行1330的副本从L3高速缓存108b被回写到系统存储器113b。另外,每当高速缓存行1330从L3高速缓存108b被逐出时,该回写可以发生。[0131]随后,由运行在核心A2上的VM托管的消费者应用1334发出读取请求,该读取请求被转发到L3高速缓存代理1316未示出转发读取请求)。作为响应,高速缓存行1330的副本经由操作4被写入到核心A2的Ll数据高速缓存116A2,并随后经由操作5被消耗。[0132]图13b示出了用于主动转发高速缓存行1330的可选方案。在该实施例下,在修改的高速缓存行的副本被推送到L3高速缓存108a操作3b之前,该副本被主动驱逐并且回写到存储器,如由操作3a所示。将L3高速缓存108a中的高速缓存行1330的状态标记为排他的,而同时将CV设置为0;尽管高速缓存行1330是排他的,但此时它还将由任何核心所拥有。随后,消费者应用1334发出RFO写入请求,并且将高速缓存行1330的副本从L3高速缓存108a写入至IjLl数据高速缓存116A2,使其能够被消耗如前述的操作4和5。[0133]继续到图13c,如由操作6所描绘的,消耗核心也可以修改高速缓存行,将高速缓存行状态变为修改的。再一次,经修改的高速缓存行1330主动降级到L3高速缓存108a,L3高速缓存I〇8a更新了L3高速缓存中的高速缓存行1330的副本。然后,高速缓存行1330的经修改的副本经由CHA1324和1326经由插槽到插槽的互连未示出)从L3高速缓存108a被推送到L3高速缓存108b,并且高速缓存行1330被标记为处于F转发状态,如由操作8所描绘的。作为选项,高速缓存行可以被回写到系统存储器113B,如由操作8a所示。作为另一选项,L3高速缓存1〇8a中的高速缓存行1330的副本可以被释放。这类似于被驱逐,除了它不包括回写到本地系统存储器这是由于该高速缓存行被存储在远程插槽上的系统存储器中(本示例中为插槽B。[0134]图14示出了包括L4高速缓存1402的高速缓存架构1400。高速缓存架构1400中的核心、L1、L2和L3高速缓存都类似于上面论述的类似编号的组件,并且包括四个核心114也标记为核心1、核心2、核心3和核心4,用于包括Ll指令和Ll数据高速缓存的每个核心的Ll高速缓存116,以及用于每个核心的L2高速缓存118。通常,高速缓存架构1400可以包括η个核心,具有专用于η个核心的给定子集的L3高速缓存。例如,如果存在三个L3高速缓存,则每个L3高速缓存可以专用于η3个核心。在所示的非限制性示例中,L3高速缓存108专用于一对核心。[0135]每个核心114包括核心代理1404并且具有相关联的MLC代理1406和L3高速缓存代理1408儿4高速缓存1402包括L4高速缓存代理14HLL4高速缓存1402作为用于高速缓存架构1400的LLC来操作,并且经由存储器控制器均未示出连接到系统存储器。[0136]图14进一步示出了两个示例性主动推送和或高速缓存行降级操作)。通常,推送或降级可以被实现在高速缓存区域中的高速缓存层之间,以使得给定的高速缓存行可以在高速缓存层次结构中向下被推送一个级别、两个级别或三个级别。描绘了向下推送高速缓存行单个级别的示例:将高速缓存行1412从核心2的Ll数据高速缓存推送到其L2高速缓存1182。同时,高速缓存行1414从核心1的L2高速缓存1181被推送到L4高速缓存1402。[0137]对本文中上述的CLLA指令的引用,其中“LL”(最后一级被包括在指令名称中。然而,这种或类似的指令可以更通常地用于降级高速缓存行,例如在高速缓存层次结构中将高速缓存行降级指定数量的级别(例如,1、2、3等)。另外,相同的CLLA指令可以针对不同的平台产生不同的结果,这取决于给定平台的特定高速缓存架构。[0138]除了有利于NFV和VM环境之外,前面的方案可以应用于一般的生产者-消费者工作负载。该技术也可以被实现以用于在VM或自然地直接运行在平台的处理器核心两者上运行的软件。[0139]在以下标号的条款中列出了本文中所述的主题的其他方面:[0140]1、一种被配置为在计算机系统中被实现的处理器,包括:[0141]多个核心,其中每个核心具有占用高速缓存层次结构中的相应级别的至少一个相关联的尚速缓存;[0142]最后一级高速缓存LLC,其通信地耦合到所述多个核心;以及[0143]存储器控制器,其通信地耦合到所述多个核心,被配置为当所述处理器被安装在所述计算机系统中时支持对外部系统存储器的存取;[0144]其中,与核心相关联的所述高速缓存中的每一个和所述LLC包括用于存储高速缓存行数据的多个高速缓存行槽,并且其中,所述处理器进一步被配置为支持机器指令,所述机器指令在被执行时使所述处理器从较低级别高速缓存降级到较高级别高速缓存。[0145]2、根据条款1所述的处理器,其中,所述机器指令的执行使所述高速缓存行被降级到所述LLC。[0146]3、根据条款2所述的处理器,其中,所述机器指令的执行使所述高速缓存行向系统存储器的回写。[0147]4、根据前述中的任何一项条款所述的处理器,其中,所述高速缓存行被保存在高速缓存层次结构中相关联的级别处的第一高速缓存中,并且其中,所述机器指令的执行使所述高速缓存行被降级到比所述第一高速缓存低两个级别的高速缓存。[0148]5、根据前述中的任何一项条款所述的处理器,其中,所述处理器包括三级(L3高速缓存和包含所述LLC的四级L4高速缓存。[0149]6、根据前述中的任何一项条款所述的处理器,其中,所述计算机系统是采用非均匀存储器存取NUMA架构的多插槽的计算机系统,在所述非均匀存储器存取架构中安装所述处理器的多个实例,每个插槽包括处理器和本地系统存储器,并且所述处理器进一步包括插槽到插槽互连接口,其被配置为有利于实现安装在不同插槽中的处理器之间的通信,并且其中,所述机器指令的执行使处理器用作本地插槽,用于:[0150]将高速缓存行降级到所述本地插槽上的LLC高速缓存;以及[0151]将所述高速缓存行的副本推送到安装在远程插槽中的处理器的LLC,其中,所述高速缓存行经由所述插槽到插槽互连接口被推送。[0152]7、根据条款6所述的处理器,其中,所述指令的执行使所述处理器释放用作所述本地插槽的所述处理器中的所述高速缓存行的所有权。[0153]8、根据条款6所述的处理器,其中,所述指令的执行使所述处理器将所述高速缓存行标记为共享的(Shared。[0154]9、根据条款6所述的处理器,其中,所述指令的执行使所述处理器用于:[0155]将所述高速缓存行从所述本地插槽上的LLC回写到所述本地插槽上的系统存储器;以及[0156]释放在所述本地插槽上的LLC中的高速缓存行。[0157]10、根据条款6所述的处理器,其中,所述处理器进一步被配置为:[0158]经由所述插槽到插槽互连接口接收从工作在远程插槽中的处理器被推送的高速缓存行;以及[0159]将所述高速缓存行存储在其LLC中。[0160]11、根据条款10所述的处理器,其中所述处理器被配置为将存储在其LLC中的所述高速缓存行标记为共享的。[0161]12、根据条款10所述的处理器,其中所述处理器被配置为将存储在其LLC中的所述高速缓存行标记为排他的(Exclusive。[0162]13、根据条款6所述的处理器,其中,所述处理器进一步包括用于实现高速缓存归属代理CHA的嵌入式逻辑,所述高速缓存归属代理CHA被配置为经由所述插槽到插槽互连接口将高速缓存行推送到远程插槽。[0163]14、一种被配置为在采用非均匀存储器存取NUM架构的多插槽的计算机系统中被实现的处理器,在所述非均匀存储器存取架构中安装所述处理器的多个实例,其中每个插槽包括处理器和本地系统存储器,所述处理器包括:[0164]多个核心,其中每个核心具有相关联的级别IL2高速缓存和级别2L2高速缓存;[0165]最后一级高速缓存LLC,其通信地耦合到所述多个核;[0166]存储器控制器,其通信地耦合到所述多个核心,被配置为当所述处理器被安装在所述计算机系统中时支持对外部系统存储器的存取;以及[0167]插槽到插槽互连接口,其通信地耦合到LLC;[0168]其中,所述Ll高速缓存、所述L2高速缓存和所述LLC中的每一个均包括用于存储高速缓存行数据的多个高速缓存行槽和相关联的高速缓存代理,并且其中,所述处理器进一步被配置为:[0169]响应于针对存储在远程插槽上的系统存储器中的数据对象的由核心发出的存储器存取请求;[0170]针对存储所述数据对象的副本的高速缓存行监听核心的LI和L2高速缓存和处理器的LLC中的至少一个,每个监听都导致了错过;以及[0171]从所述处理器向所述远程插槽中的处理器发出早期监听,经由所述插槽到插槽互连接口发送所述早期监听。[0172]15、根据条款14所述的处理器,其中,所述处理器将所述早期监听发出到所述远程插槽中的处理器,而不针对所述数据对象检查其本地系统存储器。[0173]16、根据条款14或15所述的处理器,其中,所述处理器进一步被配置为:[0174]监测用于在所述本地插槽上和一个或多个远程插槽上进行高速缓存的高速缓存行存取模式;以及[0175]基于通过监测所述存储器存取模式获得的存取信息来确定是否发出针对给定数据对象的早期监听。[0176]17、根据条款16所述的处理器,其中,所述处理器进一步被配置为:[0177]接收或存取与全局存储器地址空间中的一个或多个共享的存储器区域相关的信息中的一个,其中所述全局存储器地址空间包括所述本地插槽中的和远程插槽中的至少一个的系统存储器;以及[0178]监测对所述一个或多个共享的存储器区域的高速缓存行存取。[0179]18、根据条款16或17所述的处理器,其中,所述处理器被配置为在高速缓存行中实现标签,并且采用所述标签来监测存取模式。[0180]19、根据条款18所述的处理器,其中,所述处理器被配置为:[0181]检测给定高速缓存行的存取模式;[0182]确定所述高速缓存行是否被持续地从远程插槽提供;[0183]更新所述高速缓存行标签以指示将经由所述远程插槽存取高速缓存行;以及[0184]随后,当对所述高速缓存行的存取在所述本地LLC错过时,向所述远程插槽发出早期监听。[0185]20、根据条款16-19中的任何一项所述的处理器,其中,通过监测所述高速缓存行存取模式获得的信息被存储在布隆过滤器中,其中,所述布隆过滤器包含从其中识别高速缓存行是从远程插槽被存取的信息。[0186]21、根据条款16-19中的任何一项所述的处理器,其中,所述处理器进一步包括用于实现高速缓存归属代理CHA的嵌入式逻辑,所述高速缓存归属代理CHA被配置为监测高速缓存行存取模式并且基于其高速缓存行存取模式来发出针对高速缓存行的早期监听。[0187]22、一种在处理器上实现的方法,所述处理器包括多个核心和在所述多个核心之间共享的最后一级高速缓存LLC,其中每个核心具有占用高速缓存层次结构中的相应层的至少一个相关联的高速缓存,所述处理器进一步包括存储器控制器,其用于当所述处理器被安装在计算机系统中时对系统存储器进行存取,所述方法包括:[0188]经由相关联的高速缓存行降级机器指令的执行,将高速缓存行从较低级别高速缓存降级到较高级别高速缓存。[0189]23、根据条款22所述的方法,其中,所述机器指令的执行使所述高速缓存行被降级到所述LLC。[0190]24、根据条款23所述的方法,其中,所述机器指令的执行使所述高速缓存行向系统存储器的回写。[0191]25、据条款22-24中的任何一项所述的方法,其中,所述高速缓存行被保存在高速缓存层次结构中相关联的级别处的第一高速缓存中,并且其中,所述机器指令的执行使所述高速缓存行被降级到比所述第一高速缓存低两个级别的高速缓存。[0192]26、据条款22-25中的任何一项所述的方法,其中,所述计算机系统是采用非均匀存储器存取NUMA架构的多插槽计算机系统,在所述NUM架构中安装所述处理器的多个实例,每个插槽包括处理器和本地系统存储器,并且所述处理器进一步包括插槽到插槽互连接口,其被配置为有利于实现安装在不同插槽中的处理器之间的通信,所述方法进一步包括:[0193]将高速缓存行降级到所述本地插槽上的LLC高速缓存;以及[0194]将所述高速缓存行的副本推送到安装在远程插槽中的处理器的LLC,其中,所述高速缓存行经由所述插槽到插槽互连接口被推送。[0195]27、根据条款26所述的方法,进一步包括释放用作所述本地插槽的处理器中的高速缓存行的所有权。[0196]28、根据条款26或27所述的方法,进一步包括将在所述本地插槽和远程插槽中的每一个的所述LLC中的高速缓存行的副本标记为共享的(Shared。[0197]29、根据条款26-28中的任何一项所述的方法,进一步包括:[0198]执行从所述本地插槽上的LLC到所述本地插槽上的系统存储器的所述高速缓存行的回写;以及[0199]释放所述本地插槽上的LLC中的高速缓存行。[0200]30、根据条款26-29中的任何一项所述的方法,进一步包括:[0201]经由所述插槽到插槽互连接口接收从工作在远程插槽中的处理器被推送的高速缓存行;以及[0202]将所述高速缓存行存储在向其推送所述高速缓存行的处理器的LLC中。[0203]31、根据条款30所述的方法,进一步包括将存储在向其推送所述高速缓存行的所述处理器的LLC中的所述高速缓存行标记为排他的。[0204]32、根据条款26-31所述的方法,进一步包括实现高速缓存归属代理CHA,其被配置为经由所述插槽到插槽互连接口将高速缓存行推送到远程插槽。[0205]33、一种由被安装在采用非均匀存储器存取NUM架构的多插槽的计算机系统的插槽上的处理器实现的方法,所述非均匀存储器存取架构中安装所述处理器的多个实例,每个插槽包括处理器和本地系统存储器,所述处理器包括多个核心,每个核心具有相关联的级别IL2高速缓存和级别2L2高速缓存以及通信地耦合到所述多个核心的最后一级高速缓存LLC、耦合到所述本地系统存储器的存储器控制器、以及插槽到插槽互连接口,其中所述Ll高速缓存、L2高速缓存和LLC中的每一个均包括用于存储高速缓存数据的多个高速缓存行槽和相关联的高速缓存代理,所述方法包括:[0206]响应于针对存储在远程插槽上的系统存储器中的数据对象的由核心发出的存储器存取请求;[0207]监听针对存储所述数据对象的副本的高速缓存行的核心的LI和L2高速缓存和处理器的LLC中的至少一个,每个监听都导致了错过;以及[0208]将早期监听从所述处理器发出到所述远程插槽中的处理器,早期监听经由所述插槽到插槽互连接口发送。[0209]34、根据条款33所述的方法,其中,所述处理器将所述早期监听发出到所述远程插槽中的处理器,而不针对所述数据对象检查其本地系统存储器。[0210]35、根据条款33或34所述的方法,进一步包括:[0211]监测所述本地插槽上的和一个或多个远程插槽上的高速缓存的高速缓存行存取模式;以及[0212]基于通过监测所述存储器存取模式获得的存取信息来确定是否发出针对与给定数据对象相对应的高速缓存行的早期监听。[0213]36、根据条款35所述的方法,进一步包括:[0214]接收或存取与全局存储器地址空间中的一个或多个共享的存储器区域相关的信息中的一个,其中所述全局存储器地址空间包括所述本地插槽中的和至少一个远程插槽中的系统存储器至少一部分;以及[0215]监测对所述一个或多个共享的存储器区域的高速缓存行存取。[0216]37、根据条款35或36所述的方法,进一步包括在高速缓存行中实现标签,并且采用所述标签来监测存取模式。[0217]38、根据条款37所述的方法,进一步包括:[0218]监测给定高速缓存行的存取模式;[0219]确定所述高速缓存行是否被持续地从远程插槽提供;[0220]更新所述高速缓存行标签以指示高速缓存行将经由所述远程插槽存取;以及[0221]随后,当对所述高速缓存行的存取错过所述本地LLC时,向所述远程插槽发出早期监听。[0222]39、根据条款35-38所述的方法,其中,通过监测所述高速缓存行存取模式获得的信息被存储在布隆过滤器中,其中,所述布隆过滤器包含从其中识别高速缓存行是从远程插槽被存取的信息。[0223]40、根据条款35-39所述的方法,进一步包括在所述处理器上实现高速缓存归属代理CHA以监测高速缓存行存取模式并且基于其高速缓存行存取模式发出针对高速缓存行的早期监听。[0224]41、一种方法,包括:[0225]生成将在计算机系统中的处理器上执行的机器可执行代码,所述处理器包括多个核心,每个核心具有相关联的1级LI尚速缓存和2级L2尚速缓存以及最后一级尚速缓存LLC,所述处理器进一步包括存取所述计算机系统中的系统存储器的存储器控制器,[0226]其中,所述机器可执行代码包括机器指令以使所述处理器将高速缓存行从较低级别高速缓存降级到较高级别高速缓存。[0227]42、根据条款41所述的方法,其中,所述机器指令的执行使所述高速缓存行被降级到所述LLC。[0228]43、根据条款42所述的方法,其中,所述机器指令的执行使所述高速缓存行到系统存储器的回写。[0229]44、根据条款41-43中的任何一项所述的方法,其中,所述高速缓存行被保存在高速缓存层次结构中相关联级别处的第一高速缓存中,并且其中,所述机器指令的执行使所述高速缓存行被降级到比所述第一高速缓存低两个级别的高速缓存。[0230]45、根据条款41-44中的任何一项所述的方法,其中,所述计算机系统是采用非均匀存储器存取NUMA架构的多插槽的计算机系统,在所述非均匀存储器存取架构中安装所述处理器的多个实例,每个插槽包括处理器和本地系统存储器,并且所述处理器进一步包括插槽到插槽互连接口,其被配置为有利于实现安装在不同插槽中的处理器之间的通信,并且其中,所述机器可执行代码的执行使处理器用于:[0231]将高速缓存行降级到所述本地插槽上的LLC高速缓存;以及[0232]将所述高速缓存行的副本推送到安装在远程插槽中的处理器的LLC,其中,所述高速缓存行经由所述插槽到插槽互连接口被推送。[0233]46、根据条款45所述的方法,其中,所述机器可执行代码的执行使所述处理器释放用作所述本地插槽的所述处理器中的所述高速缓存行的所有权。[0234]47、根据条款45或46所述的方法,其中,所述机器可执行代码的执行使所述处理器将所述高速缓存行标记为共享的。[0235]48、根据条款45-47中的任何一项所述的方法,其中,所述机器可执行代码的执行使所述处理器用于:[0236]将所述高速缓存行从所述本地插槽上的LLC回写到所述本地插槽上的系统存储器;以及[0237]释放在所述本地插槽上的LLC中的高速缓存行。[0238]49、根据条款41-48中的任何一项所述的方法,其中,所述可执行代码是通过编译源代码来生成的,所述源代码包括明确的源代码指令,以使与所述源代码中引用的数据对象相关联的一个或多个高速缓存行被降级。[0239]50、根据条款41-49中的任一项所述的方法,其中,所述可执行代码是通过利用编译器编译源代码来生成的,其中,所述源代码包括使所述编译器生成机器指令以使高速缓存行降级的提示。[0240]51、根据条款41-50中的任一项所述的方法,其中,所述可执行代码包括生产者应用,其与消费者应用共享对共享的数据对象的存取,其中当所述生产者应用已经完成与高速缓存行相关联的对共享的数据对象的修改时,所述生产者应用包括机器指令以降级高速缓存行。[0241]尽管已经参考特定实现方式描述了一些实施例,但是根据一些实施例,其他实现方式是可能的。另外,附图中所示的和或本文中描述的元件或其他特征的布置和或顺序不需要以所示的和描述的特定方式来进行布置。根据一些实施例,许多其它布置是可能的。[0242]在附图中所示的每个系统中,在某些情况下,元件可以各自具有相同的附图标记或不同的附图标记,以表明所表示的元件可以是不同的和或类似的。然而,元件可以具有足够的灵活性以具有不同的实现方式,并且与本文中所示的或描述的系统的一些或所有一起工作。附图中所示的各种元件可以是相同或不同的。哪个元件被称为第一元件以及哪个元件被称作第二元件是任意的。[0243]在说明书和权利要求书中,可以使用术语“耦合的”和“连接的”及其派生词。应当理解的是,这些术语不是想要作为彼此的同义词。而是,在特定实施例中,“连接的”可以用于指示两个或更多个元件彼此直接物理接触或电接触。“耦合的”可以意味着两个或更多个元件直接物理接触或电接触。然而,“耦合的”也可以意味着两个或更多个元件彼此不直接接触,但还仍然彼此协作或相互作用。[0244]实施例是本发明的实现方式或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用意味着关于实施例描述的特定特征、结构或特性被包括在至少一些实施例中,但是不一定是本发明的所有实施例。各种表达“实施例”、“一个实施例”或“一些实施例”不一定全部指的是相同的实施例。[0245]并非本文中描述的和示出的所有组件、特征、结构、特性等都被包括在特定实施例或若干实施例中。如果说明书规定了组件、特征、结构或特性“可以”,“可能”,“能够”或“会”被包括,则例如该特定的组件、特征、结构或特性不需要被包括。如果说明书或权利要求书指的是“一”或“一个”元件,则并不意味着仅存在元件中的一个。如果说明书或权利要求书指的是“额外的”元件,则不排除存在多于一个的额外的元件。[0246]此处一种算法,并且通常,被认为是导致期望的结果的动作或操作的前后一致的序列。这包括物理量的物理操纵。经常,虽然不一定,这些量采取能够被存储、传送、组合、比较和以其他方式操纵的电或磁信号的形式。主要是出于普遍使用的原因,有时将这些信号称为比特、值、元件、符号、字符、术语、数字等被证明是方便的。然而,应当理解的是,所有这些和类似的术语都将与适当的物理量相关联,并且仅仅是被应用到这些量上的便利的标签。[0247]在前面的详细描述中,斜体字母,诸如“i”、“j”、“Γ、“m”、“η”、“p”等被用于描述整数,并且针对特定字母的使用不限于特定的实施例。此外,可以在独立的权利要求中使用相同的字母以表示独立的整数,或可以使用不同的字母。另外,在具体实施方式中使用特定字母可以或可以不与在涉及具体实施方式中的相同主题的权利要求中所使用的字母相匹配。[0248]如上所述,相对应的软件和或固件组件和应用(例如,由嵌入式处理器等执行的软件和或固件可以有利于实现本文中实施例的各种方面。因此,本发明的实施例可以用作或支持在一些形式的处理器、处理核心或嵌入式逻辑上执行的软件程序、软件模块、固件和或分布式软件、运行在处理器或核心上的虚拟机、或在计算机可读或机器可读的非暂时性存储介质上或之内以其他方式实现或实现的虚拟机。计算机可读或机器可读的非暂时性存储介质包括以机器例如,计算机可读的形式存储或发送信息的任何机制。例如,计算机可读或机器可读的非暂时性存储介质包括以计算机或计算机器例如,计算设备、电子系统等可存取的形式提供(即,存储和或发送信息的任何机制,非暂时性存储介质例如,可记录不可记录介质(例如,只读存储器ROM、随机存取存储器RAM、磁盘存储介质、光存储介质、闪存设备等)。内容可以是直接可执行的(“对象”或“可执行”形式)、源代码或差分代码(“delta”或“patch”代码)。计算机可读或机器可读的非暂时性存储介质也可以包括可从其下载内容的装置或数据库。计算机可读或机器可读的非暂时性存储介质也可以包括在销售或递送时存储有内容的设备或产品。因此,递送具有存储内容的设备,或通过通信介质提供用于下载的内容可以被理解为提供包括具有本文中描述的这样的内容的计算机可读或机器可读的非暂时性存储介质的制品。[0249]以上提到的各种组件作为本文中描述的过程、服务器或工具可以是用于执行所述功能的单元。由本文中描述的各种组件执行的操作和功能可以由在处理元件上运行的软件经由嵌入式硬件等或硬件和软件的任何组合来实现。这样的组件可以被实现为软件模块、硬件模块、专用硬件例如,应用专用硬件、ASIC、DSP等)、嵌入式控制器、硬连线电路、硬件逻辑等。软件内容例如,数据、指令、配置信息等可以经由包括提供表示可执行的指令的内容的计算机可读或机器可读的非暂时性存储介质的制品来提供。内容可以导致计算机执行本文中所述的各种功能操作。可选地,可以使用诸如通过使用标准或定制库之类的众所周知的技术使用嵌入式逻辑来实现本文所述的诸如代理和CHA的组件所提供的功能。[0250]如本文中所使用的,由术语“至少一个”连接的项目的列表可以意味着所列项目的任何组合。例如,短语“A、B或C中的至少一个”可以意味着A;B;C;A和B;A和C;B和C;或A、B和Co[0251]上述对本发明示出的实施例的描述,包括摘要中所描述的内容,并不是穷举的或并不是要将本发明限制于所公开的确切的形式。虽然为了说明的目的在本文中描述了本发明的具体实施例和示例,但是如相关领域的技术人员将会认识到的是,在本发明的范围内进行各种等同的修改是可能的。[0252]依据以上详细描述,可以对本发明进行这些修改。以下权利要求书中使用的术语不应被解释为将本发明限制于说明书和附图中公开的具体实施例。而是,本发明的范围将完全由所附权利要求来确定,这些权利要求将根据权利要求解释所建立的原则来理解。

权利要求:1.一种被配置为在计算机系统中实现的处理器,包括:多个核心,每个核心具有占用高速缓存层次结构中的相应级别的至少一个相关联的高速缓存;最后一级高速缓存LLC,其通信地耦合到所述多个核心;以及存储器控制器,其通信地耦合到所述多个核心,所述存储器控制器被配置为当所述处理器被安装在所述计算机系统中时支持对外部系统存储器的存取;其中,与核心相关联的所述高速缓存中的每一个和所述LLC包括用于存储高速缓存行数据的多个高速缓存行槽,并且其中,所述处理器进一步被配置为支持机器指令,所述机器指令在被执行时使所述处理器将高速缓存行从较低级别高速缓存降级到较高级别高速缓存。2.根据权利要求1所述的处理器,其中,所述机器指令的执行使所述高速缓存行被降级到所述LLC。3.根据权利要求2所述的处理器,其中,所述机器指令的执行使所述高速缓存行向系统存储器的回写。4.根据前述权利要求中的任何一项所述的处理器,其中,所述高速缓存行被保存在高速缓存层次结构中相关联级别处的第一高速缓存中,并且其中,所述机器指令的执行使所述高速缓存行被降级到比所述第一高速缓存低两个级别的高速缓存。5.根据前述权利要求中的任何一项所述的处理器,其中,所述处理器包括三级(L3高速缓存和包含所述LLC的四级L4高速缓存。6.根据前述权利要求中的任何一项所述的处理器,其中,所述计算机系统是采用非均匀存储器存取NUMA架构的多插槽的计算机系统,在所述非均匀存储器存取架构中安装所述处理器的多个实例,每个插槽包括处理器和本地系统存储器,并且所述处理器进一步包括插槽到插槽互连接口,其被配置为有利于实现安装在不同插槽中的处理器之间的通信,并且其中,所述机器指令的执行使处理器用作本地插槽用于:将高速缓存行降级到所述本地插槽上的LLC高速缓存;以及将所述高速缓存行的副本推送到安装在远程插槽中的处理器的LLC,其中,所述高速缓存行经由所述插槽到插槽互连接口被推送。7.根据权利要求6所述的处理器,其中,所述指令的执行使所述处理器释放用作所述本地插槽的所述处理器中的所述高速缓存行的所有权。8.根据权利要求6所述的处理器,其中,所述指令的执行使所述处理器将所述高速缓存行标记为共享的(Shared。9.根据权利要求6所述的处理器,其中,所述指令的执行使所述处理器用于:将所述高速缓存行从所述本地插槽上的LLC回写到所述本地插槽上的系统存储器;以及释放在所述本地插槽上的LLC中的高速缓存行。10.根据权利要求6所述的处理器,其中,所述处理器进一步被配置为:经由所述插槽到插槽互连接口接收从工作在远程插槽中的处理器被推送的高速缓存行;以及将所述高速缓存行存储在其LLC中。11.一种被配置为在采用非均匀存储器存取NUM架构的多插槽的计算机系统中被实现的处理器,在所述非均匀存储器存取架构中安装所述处理器的多个实例,其中,每个插槽包括处理器和本地系统存储器,所述处理器包括:多个核心,其中,每个核心具有相关联的1级L2高速缓存和2级L2高速缓存;最后一级高速缓存LLC,其通信地耦合到所述多个核心;存储器控制器,其通信地耦合到所述多个核心,所述存储器控制器被配置为当所述处理器被安装在所述计算机系统中时支持对外部系统存储器的存取;以及插槽到插槽互连接口,其通信地耦合到LLC;其中,所述Ll高速缓存、所述L2高速缓存和所述LLC中的每一个均包括用于存储高速缓存行数据的多个高速缓存行槽和相关联的高速缓存代理,并且其中,所述处理器进一步被配置为:响应于针对存储在远程插槽上的系统存储器中的数据对象的由核心发出的存储器存取请求;针对存储所述数据对象的副本的高速缓存行监听所述核心的LI高速缓存和L2高速缓存以及处理器的LLC中的至少一个,每个监听都导致错过;以及将早期监听从所述处理器向所述远程插槽中的处理器发出,所述早期监听是经由所述插槽到插槽互连接口被发送的。12.根据权利要求11所述的处理器,其中,所述处理器将所述早期监听发出到所述远程插槽中的处理器,而不针对所述数据对象检查其本地系统存储器。13.根据权利要求11或12所述的处理器,其中,所述处理器进一步被配置为:监测用于在所述本地插槽上和一个或多个远程插槽上进行高速缓存的高速缓存行存取模式;以及基于通过监测所述存储器存取模式获得的存取信息来确定是否发出针对给定数据对象的早期监听。14.根据权利要求13所述的处理器,其中,所述处理器进一步被配置为:接收或存取与全局存储器地址空间中的一个或多个共享的存储器区域相关的信息中的一个,其中,所述全局存储器地址空间包括所述本地插槽和至少一个远程插槽中的系统存储器;以及监测对所述一个或多个共享的存储器区域的高速缓存行存取。15.根据权利要求13或14所述的处理器,其中,所述处理器被配置为在高速缓存行中实现标签,并且采用所述标签来监测存取模式。16.根据权利要求15所述的处理器,其中,所述处理器被配置为:监测针对给定高速缓存行的存取模式;确定所述高速缓存行是否被持续地从远程插槽提供;更新所述高速缓存行标签以指示经由所述远程插槽存取的高速缓存行;以及随后,当对所述高速缓存行的存取错过所述本地LLC时,向所述远程插槽发出早期监听。17.根据权利要求13-16中的任何一项所述的处理器,其中,所述处理器进一步包括用于实现高速缓存归属代理CHA的嵌入式逻辑,所述高速缓存归属代理CHA被配置为监测高速缓存行存取模式并且基于其高速缓存行存取模式来发出针对高速缓存行的早期监听。18.—种在处理器上实现的方法,所述处理器包括多个核心和在所述多个核心之间共享的最后一级高速缓存LLC,每个核心具有占用高速缓存层次结构中的相应层的至少一个相关联的高速缓存,所述处理器进一步包括存储器控制器,所述存储器控制器用于当所述处理器被安装在计算机系统中时对系统存储器进行存取,所述方法包括:经由相关联的高速缓存行降级机器指令的执行,将高速缓存行从较低级别高速缓存降级到较高级别高速缓存。19.根据权利要求18所述的处理器,其中,所述处理器被配置为:监测针对给定高速缓存行的存取模式;确定所述高速缓存行是否被持续地从远程插槽提供;更新所述高速缓存行标签以指示所述高速缓存行是经由所述远程插槽存取的;以及随后,当对所述高速缓存行的存取错过所述本地LLC时,向所述远程插槽发出早期监听。20.根据权利要求16-19中的任何一项所述的处理器,其中,通过监测所述高速缓存行存取模式获得的信息被存储在布隆过滤器中,其中,所述布隆过滤器包含从其中识别要从远程插槽被存取的高速缓存行的信息。21.据权利要求16-19中的任何一项所述的处理器,其中,所述处理器进一步包括用于实现高速缓存归属代理CHA的嵌入式逻辑,所述高速缓存归属代理CHA被配置为监测高速缓存行存取模式并且基于其高速缓存行存取模式来发出针对高速缓存行的早期监听。22.—种在处理器上实现的方法,所述处理器包括多个核心和在所述多个核心之间共享的最后一级高速缓存LLC,每个核心具有占用高速缓存层次结构中的相应层的至少一个相关联的高速缓存,所述处理器进一步包括存储器控制器,所述存储器控制器用于当所述处理器被安装在计算机系统中时对系统存储器进行存取,所述方法包括:经由相关联的高速缓存行降级机器指令的执行,将高速缓存行从较低级别高速缓存降级到较高级别高速缓存。23.根据权利要求22所述的方法,其中,所述机器指令的执行使所述高速缓存行被降级到所述LLC。24.根据权利要求22或23所述的方法,其中,所述计算机系统是采用非均匀存储器存取NUM架构的多插槽计算机系统,在所述非均匀存储器存取架构中安装所述处理器的多个实例,每个插槽包括处理器和本地系统存储器,并且所述处理器进一步包括插槽到插槽互连接口,其被配置为有利于实现安装在不同插槽中的处理器之间的通信,所述方法进一步包括:将高速缓存行降级到所述本地插槽上的LLC高速缓存;以及将所述高速缓存行的副本推送到安装在远程插槽中的处理器的LLC,其中,所述高速缓存行是经由所述插槽到插槽互连接口被推送的。25.根据权利要求22-24中的任何一项所述的方法,进一步包括:经由所述插槽到插槽互连接口接收从工作在远程插槽中的处理器被推送的高速缓存行;以及将所述高速缓存行存储在向其推送所述高速缓存行的所述处理器的LLC中。

百度查询: 英特尔公司 处理器及其上实现的方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。