高速缓存监视

文档序号:1598850 发布日期:2020-01-07 浏览:7次 >En<

阅读说明:本技术 高速缓存监视 (Cache monitoring ) 是由 王任 李彬 A.J.赫尔里奇 戴宗元 R.胡加哈利 于 2019-05-28 设计创作,主要内容包括:高速缓存监视。在一个示例中公开了一种计算装置,包括:处理器;包括多个高速缓存级别的多级高速缓存;外围设备,被配置为将数据直接写到直接可写高速缓存;以及高速缓存监视电路,其包括当高速缓存行被分配到直接可写高速缓存中时递增的高速缓存计数器&lt;I&gt;La&lt;/I&gt;,当高速缓存行被处理器处理并从直接可写高速缓存解除分配时递增的&lt;I&gt;Lp&lt;/I&gt;,并且当高速缓存行从直接可写高速缓存被逐出到存储器时递增的&lt;I&gt;Le&lt;/I&gt;,其中高速缓存监视电路根据高速缓存计数器确定直接写策略。(Cache monitoring. Disclosed in one example is a computing apparatus comprising: a system and method for managing data in a multi-level cache includes a processor, a multi-level cache including a plurality of cache levels, a peripheral device configured to write data directly to a directly writable cache, and a cache monitor circuitIncluding a cache counter that is incremented when a cache line is allocated in a direct-writable cache La Incremented when a cache line is processed by a processor and deallocated from a direct-writable cache Lp And incremented when a cache line is evicted from the direct-writable cache to memory Le Wherein the cache monitor circuit determines the direct write policy based on the cache counter.)

高速缓存监视

技术领域

本公开一般地涉及企业计算的领域,并且更具体地但非排他地涉及用于提供高速缓存监视的系统和方法。

背景技术

在一些现代数据中心中,设备或装置的功能可以不与特定的固定硬件配置相捆绑。而是,处理、存储器、存储和加速器功能在某些情况下可以从不同位置聚合以形成虚拟的“复合节点”。当代网络可以包括托管大量通用硬件服务器设备的数据中心,其包含在例如服务器机架中并由监督程序控制。每个硬件设备可以运行虚拟设备的一个或多个实例,诸如工作负载(workload)服务器或虚拟桌面。

具体实施方式

以下公开提供了用于实现本公开的不同特征的许多不同实施例或示例。以下描述了部件和布置的具体示例以简化本公开。当然,这些仅仅是示例并且不旨在是限制性的。此外,本公开可以在各种示例中重复参考数字和/或字母。该重复是为了简单和清楚的目的,并且就其本质而言并不阐述所讨论的各种实施例和/或配置之间的关系。不同的实施例可以具有不同的优势,并且没有特定的优势是任何实施例一定需要的。

现代企业计算除其他之外可以包括服务器、装置、虚拟机、容器和其他分布式或非分布式计算系统等。在这样的计算环境中,运营商可能需要对共享资源的可见性和控制,共享资源诸如是最后级高速缓存(LLC)和存储器带宽。为了向那些运营商提供对那些共享资源的所需可见性,企业CPU可以提供共享资源监视器(SRM),诸如Intel® ResourceDirector Technology(资源主管技术)(RDT)。在本说明书的实施例中,提供CPU高速缓存作为计算机数据存储装置的形式,其允许稍后高效地访问最近使用的信息。通过非限制性示例,高速缓存可以包含例如频繁使用的指令、预测指令、最近使用的数据或预测数据。

数据直接I/O(DDIO)是I/O协议,其使诸如***设备(例如,网络接口卡(NIC))之类的设备能够将数据直接递送到诸如LLC之类的高速缓存级中,而不必首先访问主存储器,其诸如可能出现在直接存储器访问(DMA)模型中。使用DDIO,处理器高速缓存(而不是系统的主存储器)成为I/O数据的主要源和目的地。这改进了CPU从I/O设备进行数据递送和数据消耗的I/O数据处理效率。

如在本说明书中使用的,NIC是使计算机能够与网络通信地连接的计算机硬件部件。NIC可以用在有线和无线计算实施例两者中,并且作为适合计算机主板的扩展槽的附加(add-in)卡提供。通过非限制性示例,NICS也已知为网络接口控制器卡、网络适配器卡、扩展卡、LAN卡和电路板。

在示例中,诸如以太网NIC之类的设备可以使用DDIO将数据直接发送到处理器LLC,将高速缓存行分配为“I/O途径(I/O way)”,这是专门为I/O业务保留的多个特殊LLC途径。这有助于减少访问延迟并改进性能和能量。

在另一个实施例中,可以使用其他网络构造技术。例如,实施例可以提供用于诸如Intel® Omni-Path之类的高性能计算(HPC)构造的主机构造接口(HFI)。这种HPC构造可以在不同的核或处理器之间提供高速缓存一致(coherent)的存储器操作。与NIC一样,HFI也可以使用DDIO将数据直接写到LLC中。在HFI的情况下,高速缓存操作可以是“写更新”:如果在高速缓存中找到该行,则在LLC中更新该行,但如果在LLC中没有找到该行,则将该行写到系统存储器。HPC构造的其他实施例可以提供使用PCIe接口的HFI。当前版本的PCIe是非高速缓存一致的,因此这些构造的行为可能类似于以太网NIC(例如,总是写到专用IO途径)。

如果例如高速缓存被超额订阅(oversubscribed)或订阅不足(undersubscribed),则以太网和HPC方法两者都可以遇到问题。在以太网NIC的情况下,当I/O传入速率快于CPU消耗速率时,可能在CPU消耗数据之前就从存储器逐出所述数据。这不仅取消了DDIO的益处,而且由于不必要的LLC高速缓存逐出其实际上降低了CPU性能,而在不使用DDIO的情况下,数据可能简单地经由DMA直接写到存储器。这些不必要的高速缓存逐出也可以增加硬件平台的功耗,这是由于在已经从高速缓存逐出数据后恢复数据的附加的块移动。

在HPC构造的情况下,HFI可能仅执行写更新,这意味着对于未在高速缓存中找到的新数据到达,即使高速缓存订阅不足,数据也可被写回到系统存储器并随后由CPU带入高速缓存中。这可以引起具有负面的性能和能量影响的不必要的存储器差错(memory trip)。在使用PCIe接口的HFI的情况下,条件类似于在以太网的情况中所面对的那些。

可以出现问题,尤其是在非包括性(non-inclusive)高速缓存的情况下。严格包括性高速缓存是其中高速缓存的所有级别都相关的高速缓存,使得例如在L1高速缓存中找到的数据必须始终在L2和L3高速缓存中找到。非包括性高速缓存是其中可以或可以不在高速缓存的上级别中找到高速缓存的下级别中的数据的高速缓存。例如,可以将数据降低到高速缓存的下级别中,使得它们可以被CPU消耗,并且可以从不再需要它们的高速缓存的上级别移除。但是在非包括性高速缓存的情况下,写更新DDIO***设备仅看到高速缓存行不在LLC中。它不知道数据是否已经被LLC逐出(例如,因为处理器陷入困境(bog down)并且不能跟上IO操作),或者因为核已经消耗了数据(例如,因为处理器正在远远领先于IO操作运行)。

当监视LLC利用率时可以实现更好的性能并且当存在空间时(例如,当处理器保持在IO操作前面时)将用于所有I/O设备的数据分配到LLC中,并且当存在不充足的空间时(例如,当CPU不能跟上传入的I/O时)写到存储器。本说明书的实施例提供诸如Intel® RDT之类的SRM,包括具有计数器LaLpLe的高速缓存监视器。虽然这三个计数器没有赋予DDIO***设备对于为什么高速缓存行不再在LLC(或某些其他级别的高速缓存,诸如L2或L1)中的可见性,但它们可以在聚合中用于通知有意义的直接写策略,使DDIO设备能够知道CPU是否保持(使得数据应该被DDIO到LLC中)或落后(使得数据应该被DMA到主存储器中)。

本说明书的高速缓存监视器监视LLC中,包括在非包含高速缓存中,的I/O途径的使用。这可以有利地为以太网、HPC构造、其他***设备以及甚至软件线程提供用于自适应DDIO的统一架构。

一些现有高速缓存监视器包括每个线程的单个LLC占用计数器,每个计数器与资源监视ID(RMID)相关联。RMID使能多核处理器上的多个同时运行的线程的独立且同时的监视。每线程架构模型特定寄存器(MSR)允许每个硬件线程与RMID相关联。MSR可以包括例如用于控制资源分配的服务的类(CLOS)字段连同RMID字段。RMID可以表示软件线程或I/O线程。虽然本说明书的示例具体讨论了针对I/O线程的RMID的使用,但应注意,本文公开的高速缓存监视能力可用于包括软件线程RMID的所有情况,以给予对高速缓存利用率的更好指示以更好地服务应用。

在一些现有高速缓存监视器中可用的LLC占用计数器被配置为监视所有可用LLC集合的少量样本集合的LLC行为。根据经验,已经发现高速缓存的行为足够随机,对少量集合进行采样足以创建所有高速缓存事务的代表性样本。例如,高速缓存可以包括数百或数千个单独的集合,并且一个或多个占用计数器可以对某少量的单独集合,诸如2%,进行采样。

当在LLC中填充行时计数器递增(例如,增加1),并且当行从LLC消失时递减计数器(例如,减少1)。然而,这并没有考虑到那个行去哪。例如,可以将行拉到中级高速缓存(MLC)或L1高速缓存,使得核可以消耗数据,或者可以将行逐出到系统存储器。在包括性高速缓存中,将不存在可能的混淆,因为即使CPU提取了行,它也仍然存在于LLC中并且计数器不改变。当行被逐出到存储器时,计数器才减少。

但是在非包括性高速缓存中,单个LLC占用计数器可能不能提供高速缓存占用的完整画面。在提供自适应DDIO的情况下这可以尤其如此,其中智能策略指令指示数据是直接写到高速缓存还是经由DMA写到主存储器。在DDIO的情况下,如果许多行在它们被核处理之前就被从LLC逐出,则这意味着LLC是拥挤的并且不应将新行分配到LLC中。另一方面,如果核将许多行拉到MLC / L2高速缓存用于处理,则释放LLC并且应该将新行分配给LLC中。但单个LLC占用计数器可能不能在这两种情况之间进行区分,这两种情况事实上代表了相反的现象。在前一种情况下,数据被逐出是因为LLC被超额订阅的,而在后一种情况下,数据被CPU消耗并且LLC是订阅不足的。

为了提供高速缓存利用率的更准确图,本说明书的高速缓存监视器每个RMID提供三个单独的计数器,即LaLpLe。这三个计数器更好地捕捉LLC利用率,特别是在DDIO事务的情况下,但更一般的是在任何数据事务中。与现有LLC计数器一样,这里公开的计数器也可以在被表示为样本集合的所有高速缓存行的小子集上操作。例如,根据经验确定,已经确定诸如高速缓存中的所有集合的2%之类的小采用足以表示整体高速缓存行为。

计数器La表示已分配高速缓存行。当存在分配到LLC中的高速缓存行时,La递增。

计数器Lp表示CPU已处理高速缓存行。每当高速缓存行被CPU处理并从LLC解除分配(deallocate)时,Lp递增,表示数据尚未被从LLC逐出,而是已经被消耗,并且因此不再需要的情况。

计数器Le表示高速缓存行已从LLC逐出。当存在CPU未触及的、被从LLC逐出到系统存储器的高速缓存行时,Le递增,这表示CPU不能跟上IO操作的情况。

在特定时间窗口i期间,其可以是小时间窗口,这三个计数器可用于描述高速缓存动态。如果CPU足够快以在窗口i期间处理所有传入的I/O分组,则Lp应近似等于La,而Le应该非常小或接近0。另一方面,如果I/O太快达到了压倒CPU的处理能力的点,则Le将相对显著,而Lp将小于La

因为这些计数器可以仅应用于小的事务样本(即,在所选择的集合上发生的那些),所以在一些实施例中,被采样的那些高速缓存行总是被分配到LLC中。然后,可以使用这些采样来确定对于RMID的直接写策略。根据用于窗口i的直接写策略处理命中其他高速缓存集合的高速缓存操作。例如,在窗口i-1处,可以确定LLC订阅不足。因此,针对窗口i设置直接写策略以将新高速缓存行DDIO到高速缓存中。但是如果在窗口i期间取得的样本指示LLC现在被超额订阅,则针对窗口i + 1设置新的直接写策略以将新数据DMA到主存储器。这允许CPU赶上I/O。在每个窗口之后,可以为下一个策略窗口重置计数器LaLpLe

窗口i的长度是可以配置的参数。例如,所选集合上的100个样本可以构成测量窗口,所有计数器在下一个窗口的开始处重置。对于每个窗口i,可以计算用于窗口的处理速率和逐出率:

Figure DEST_PATH_IMAGE002

处理速率和逐出率反映了瞬时高速缓存利用率(窗口i中的高速缓存、I/O和CPU交互)。高RP指示核可以有效地处理大多数传入的分组,这是期望的性质。高RE指示在由核处理之前,大部分传入的分组被逐出,这通常被认为是不期望的行为。在RE是高的的情况下,新的传入分组应该被直接写到系统存储器,以避免高速缓存行弹跳(bouncing),其引起降级的性能并消耗不必要的能量。本说明书的实施例对速率样本(rate sample)采用低成本指数加权移动平均(EWMA)滤波器以平滑振荡和噪声并获得高速缓存行为趋势。举例来说,EWMA可以运作如下:

RP)=(1-a)* RP)+ a * RPi

RE)=(1-b)* RE)+ b * REi

权重参数ab指示当前率将多敏捷地响应来自窗口i的最新样本。给予新样品的权重越大,平均权重响应改变的敏捷性越大,但它也更容易受到噪音的影响。根据实施细节,可以在各种实施例中通过实验调整这些参数。

现在将更具体地参考所附的附图来描述用于高速缓存监视的系统和方法。应当注意,贯穿附图,可以重复某些附图标记以指示特定设备或块跨附图是完全或基本一致的。然而,这并不旨在暗示所公开的各种实施例之间的任何特定关系。在某些示例中,一类(genus)元素可以通过特定的附图标记(“小部件10”)来引用,而该类的单独的种类或示例可以通过带连字符的数字(“第一特定小部件10-1”和“第二特定小部件10-2”)来引用。

诸如由Intel®提供的硬件平台或类似平台之类的当代计算平台可以包括用于监视设备性能和做出关于资源供应的决定的能力。例如,在诸如可以由云服务提供商(CSP)提供的大型数据中心中,硬件平台可以包括具有计算资源的机架安装(rackmounted)服务器,计算资源诸如处理器、存储器、存储池、加速器和其他类似资源。如本文中所使用的,“云计算”包括网络连接的计算资源和技术,其使得对数据、资源和/或技术的普遍(通常是全球)访问。云资源其特征通常在于根据当前工作负载和需求动态分配资源的大灵活性。这可以通过例如虚拟化来实现,其中诸如硬件、存储和网络之类的资源经由软件抽象层和/或容器化(containerization)提供给虚拟机(VM),其中在“容器”中彼此分离但共享底层操作系统、存储器和驱动资源地提供网络功能的实例。

如本文所使用的,处理器包括具有指令集的任何可编程逻辑设备。处理器可以是真实的或虚拟的、本地的或远程的,或任何其他配置。作为非限制性示例,处理器可以包括Intel®处理器(例如,Xeon®、Core™、Pentium®、Atom®、CeLeron®、x86或其他)。处理器还可以包括竞争处理器,例如AMD(例如,Kx系列x86 workalikes,或Athlon、Opteron或Epyc系列Xeon workalikes)、ARM处理器或IBM PowerPC和Power ISA处理器,仅举几例。

在本公开的实施例中,VM是计算设备内的隔离分区,其允许独立于包含它的设备上的其他程序使用操作系统和其他应用。VM、容器以及类似的可以统称为“客户”系统。

图1是根据本说明书的一个或多个示例的具有共享资源监视能力的CPU 100的框图。在该情况下,CPU 100包括高速缓存归属代理(CHA)140,其控制对高速缓存的访问。CHA140包括核途径掩蔽(core way mask)128和I/O途径掩蔽(I/O way mask)132,它们可以分别用于掩蔽为通用核使用而分配的高速缓存途径以及专门为I/O使用分配的高速缓存途径。CHA 140还包括监视逻辑136,其可以是共享资源监视器的部分(例如,如图7中所示的SRM的高速缓存监视器)。

核104通过管芯内(in-die)互连(IDI)116或其他类似的互连技术访问CHA 140。根据本说明书的教导,IDI 116从访问请求中提取RMID,并且可以将RMID提供给监视逻辑136,监视逻辑136可以使用RMID来应用直接写策略。实际数据被引导到核途径掩蔽128(或者替代地,到主存储器,这取决于当前的直接写策略)。

在HPC链接108和PCIe 112的情况下,访问请求被路由到I/O途径掩蔽132。与IDI116-1一样,IDI 116-2包括从访问请求提取RMID的电路,该RMID可以被提供给监视逻辑132。表120可以填充有指示IDI 116的策略数据,并且可以附加地存储用于访问I/O途径掩蔽132的策略指令。如在IDI 116-1的情况下,RMID和RMID有效位可以从事务提取并被提供给监视逻辑136。将实际数据提供给I/O途径掩蔽132(或者替代地,被直接写到存储器)。

在PCIe 112的情况下,Intel®片上系统构造(IOSF)124(或类似构造)接收DDIO请求,并提取RMID,如在IDI 116的情况下。RMID被提供给监视逻辑136用于在访问请求被提供给I/O途径掩蔽132时的策略确定。

图1示出了高速缓存监视可用于监视针对I/O途径的LLC利用率。在一些现有系统中,单个RMID被分配给I/O,并且该RMID可用于监视I/O的LLC利用率。如上所述,某些现有系统对每个RMID使用单个LLC占用计数器,占用计数器监视少量样本集合的LLC行为。当用相关联的RMID将行填充到LLC时,计数器递增,并且当从LLC驱逐行时递减。

该单个计数器适于传统的包括性高速缓存层级,其中LLC包括MLC和L1。但是对于非包括性高速缓存,当行从LLC消失时,计数器在行由CPU提取到MLC或被逐出到系统存储器直接不进行区分。在前一种情况下,该行仍然存在于高速缓存中,而在后一种情况下则不存在。这是对单个LLC占用计数器的限制,其限制了其在DDIO情况下的有效性。虽然LLC占用计数器可用于提供直接写策略,其中DDIO可以在某些条件下被自适应地使能(将所有分组发送到LLC)或禁用(将所有分组发送到存储器),但是当在CPU消耗和高速缓存逐出之间进行区分时,该方法更有用。

这是因为现有LLC占用计数器仅监视LLC中的高速缓存占用,而不监视整个高速缓存层级中的高速缓存占用。在包括性高速缓存的情况下,单独监视LLC中的高速缓存占用是足够的,其中LLC占用正确地反映了贯穿高速缓存层级的占用。但是在非包括性高速缓存层级的情况下,单个计数器具有有限的可用性。CPU可以将行带入MLC中用于处理,这实际上对于DDIO而言是期望的行为,这意味着LLC实际上可能是订阅不足的。但LLC占用计数器赋予了该行已经被逐出并且LLC实际上被超额订阅的印象,并且因此缺少用于输入I/O数据的足够的容量。在基于单个LLC占用计数器的系统中,DDIO可以以粗粒度方式打开或关闭,而不考虑用于整体非包括性高速缓存的细粒度行为模型。

为了更有效地利用DDIO,如果有足够的空间用于更快的处理,则可以将所有行安装到LLC中。在最佳情况场景下,安装到LLC I/O分区中的所有行在被从高速缓存逐出之前由CPU处理。一些现有的I/O系统,诸如PCIe上的HPC构造和以太网,总是通过DDIO将数据安装到LLC中。在其他情况下,诸如非PCIe HPC构造,DDIO仅执行写更新。

在高速缓存未充分利用或过度利用的情况下,这些场景中的任何一个都可以是次优的。有利地,本说明书的共享资源监视器,包括具有三个LLC占用计数器的高速缓存监视器,为所有I/O设备提供统一的DDIO架构,当有空间时其智能地将传入数据引导到LLC,并且当LLC超额订阅时将数据写到存储器。这避免了在处理之前的逐出。

为了实现该结果,本说明书的共享资源监视器(SRM)扩展了现有LLC监视能力,以将从存储器中逐出行时的情况与CPU处理行的情况进行区分。注意,在非包括性高速缓存层级中,在这些情况中的任何一种情况下,行从LLC消失,即使它们基本上表示相反的结果(即,CPU在前一种情况下被超额订阅,或在后一种情况下订阅不足)。本说明书的SRM提供统一的I/O架构,其实现高性能,显著降低存储器带宽和能量消耗,并因此减少计算操作中的延迟。

图2是示出根据本说明书的一个或多个示例的不使用DDIO的存储器事务的系统的框图。

在图2的示例中,处理器插座(socket)202包括八个核,即核204-0、核204-1、核204-2、核204-3、核204-4、核204-5、核204-6和核204-7。核204共享LLC 208。处理器插座202可以经由诸如Intel® Omni-Path或其他HPC构造之类的接口通信地耦合到相同系统内的其他插座。

在该情况下,NIC 212通信地耦合到处理器插座202,并且系统还包括存储器220。

在该示例中,NIC 212可能不能直接将数据写到LLC 208,因为系统不支持DDIO,或者因为LLC 208被超额订阅。因此,在操作1中,NIC 212接收传入分组。因为NIC 212不能直接将分组写到LLC 208,所以NIC 212代之以将数据DMA到存储器220。

在操作2处,核204-0需要访问和处理来自NIC 212的数据。因此,在操作3中,数据从存储器220写到LLC 208中。

在操作4中,将数据从LLC 208取到核204-0中。根据通常的计算实践,将数据写到存储器220中并从存储器220取数据可能花费数百或数千个时钟周期。因此,在可能如此做的情况下绕过存储器220是有利的。

图3是根据本说明书的一个或多个示例的支持和使能DDIO的存储器事务的框图。

在图3的示例中,处理器插座302包括八个核,即核304-0、核304-1、核304-2、核304-3、核304-4、核304-5、核304-6和核304-7。核304共享LLC 308。处理器插座302可以经由诸如Intel® Omni-Path或其他HPC构造之类的接口通信地耦合到相同系统内的其他插座。

在该示例中,在操作1处,NIC 312接收传入数据。因为支持并使能了DDIO,所以NIC312将数据直接写到LLC 308,例如,写到LLC 308的IOC区域307。IOC区域307是LLC的I/O分配区域。这避免了到存储器320的行程,并且因此相对于在写到存储器320和从存储器320读取中的数百或数千个时钟周期,可以在大约数十个时钟周期从LLC 308取数据。因此,通过绕过存储器320,存储器读操作的性能增加了大约一个数量级。

因此,在核可以处理数据之前没有从LLC逐出数据的情况下在经由DDIO将数据直接写到LLC时这样做是有利的。但在许多情况下,IOC 307具有有限的容量。如果传入数据速率快于CPU服务速率,则在行有机会被处理之前行被逐出到存储器320。然后必须再次将这些数据带回以便稍后处理。当IOC 307满了时,更好的是,将数据直接写到存储器320以避免从高速缓存逐出数据,然后在需要其时重新带回。

图4和5是示出可以例如在诸如Intel® Omni-Path之类的高性能计算构造中使用的放置操作的信号流程图。如上所述,这些类型的构造可以使用针对DDIO的写更新。在写更新过程中,当新数据被写到高速缓存块时,新数据被广播到包含相同高速缓存行的所有高速缓存。这确保了使用数据的新值更新所有高速缓存。从概念上讲,在诸如图4和5中所示的构造之类的构造中,当接收到放置消息时,CHA简单地检查LLC中是否存在当前行。如果它是命中,则该行被写到LLC中。如果是错失,则该行被直接DMA到主存储器,绕过LLC。然而,如上所述,在IOC被订阅不足的情况下,这实际上不是期望的行为,因为数据将更好地分配到LLC中,如在以太网NIC的情况中那样。

转到图4,远程HFI 404首先向本地HFI 408发出Omni-Path 放置消息。本地HFI408然后执行到CHA 412的存储器推送写操作。CHA 412向本地HFI 408发出拉取,并且本地HFI 408然后执行到CHA 412的数据的结束字节的块写入命令。在图4的示例中,存在LLC错失,因此将n个字节的数据块写到存储器416。存储器416向CHA 412返回确认。

并行地,本地HFI 408可以向远程HFI 404返回Omni-Path确认,并且远程HFI 404可以以Omni-Path端到端(E2E)确认进行响应。

转到图5,远程HFI 404向本地HFI 408发出Omni-Path 放置消息。本地HFI 408向CHA 412发出n个字节的数据的存储器推送写。CHA 412用确认来响应以拉取n个字节的数据,并且本地HFI 408将n个字节的数据块放置到CHA 412。在该情况下,存在LLC命中,因此CHA 412将数据直接写到LLC中。

如前所述,本地HFI 408以Omni-Path确认响应,并且远程HFI 404以Omni-PathE2E确认回应。

图6是根据本说明书的一个或多个示例的监视高速缓存的方法600的流程图。在图6的示例中,在开始时,所有计数器被初始化为0。

在框604处,行从I/O设备或从一些其他源到达CHA,如贯穿说明书描述的那样。

在决定框608中,CHA检查以查看这是否是样本集合的一部分。例如,CHA可以对高速缓存中的大约2%的可用集合进行采样。所有集合的那2%被认为足以代表整个高速缓存以针对完整高速缓存做出策略决定。

如果事务命中样本集合之一,则在框612中,根据这里的描述将数据直接分配到LLC中。响应于该事务,诸如LaLpLe之类的计数器可以递增,如本文描述的那样。

如果样本没有命中样本集合之一,则在决定框620中,CHA确定高速缓存当前是否被过度利用(由当前高速缓存策略确定的)。这可以根据根据先前窗口中的采样的高速缓存事务设置的策略。如果当前策略是高速缓存(或特别是LLC)未被过度利用,则在框616中,存储器控制器根据策略将块直接安装到LLC中。

返回到框620,如果高速缓存当前被过度利用,则设备将数据直接写到存储器。在框624中,存储器控制器根据策略将数据写到存储器。

在框698中,完成该方法。

图7是根据本说明书的一个或多个示例的CPU 700的所选元件的框图。

在图7的示例中,CPU 700包括核736、LLC 740和共享资源监视器(SRM)704。共享资源监视器704可以是例如Intel® RDT电路。

作为非限制性示例,SRM 704的实施例可以提供高速缓存监视器708,其被配置为提供对单独线程、应用或VM对LLC或其他高速缓存级别利用的洞察。这可以改进应用表征、“噪声邻居”检测、性能调试、实时供应和资源调度。

作为非限制性示例,SRM 704还可以提供高速缓存分配器724。高速缓存分配器724通过经过LLC容量的重新分配优先化VM、容器或应用来改进控制。这可以提供增强的运行时确定性,以及保护重要的VM和虚拟化资源,诸如虚拟交换机、应用或其他关键资源免受资源争。这还可以防止跨优先工作负载的噪声邻居干扰。

作为非限制性示例,SRM 704可以进一步提供存储器带宽监视器728。在图7的示例中,存储器带宽监视器728可以通过同时为每个运行线程提供存储器带宽监视来独立地跟踪多个VM或应用。这可以提供对过度利用存储器带宽的噪声邻居的检测,对带宽敏感应用的性能的表征和调试,以及增强的非均匀存储器访问(NUMA)感知调度。

作为非限制性示例,SRM 704还可以提供代码和数据优先级排序器(prioritizer)732。代码和数据优先级排序器732使能对LLC中的代码和数据放置的单独控制,例如诸如在L3高速缓存中。一些特殊类型的工作负载可能受益于增加的运行时确定性,从而使能应用性能的更大可预测性。

如图7中所示的,SRM 704可以作为Intel® RDT提供,并且可以提供计数器La712、Lp 716和Le 720。

计数器La 712用于表示分配了高速缓存行。当存在分配到LLC中的高速缓存行时,La 712增加。

计数器Lp 716用于表示CPU处理高速缓存行。每当存在由CPU处理并从LLC解除分配的高速缓存行时,Lp 716递增,表示数据尚未从LLC逐出,而是已经被消耗,并且因此不再需要的情况。

计数器Le 720用于在从LLC逐出高速缓存行时进行计数。当存在从LLC逐出到系统存储器的CPU未触及的高速缓存行时,Le 720递增。在特定时间窗口期间,所述特定时间窗口可以是小时间窗口,这三个计数器可用于描述高速缓存动态。如果CPU足够快以处理所有传入的I/O分组,则Lp应该大约等于La,而Le应该非常小或接近0。另一方面,如果I/O太快到达压倒CPU的处理能力的点,Le将相对显著,而Lp将小于La

图8是根据本说明书的一个或多个示例的LLC中的通用途径和I/O途径的框图。通用途径804可以被分配用于通用核使用,而I/O途径808可以被专门分配用于I/O使用。这些分配可以减少延迟并改进整体系统性能和能量。

图9是根据本说明书的一个或多个示例的具有到云服务提供商(CSP)902的网络的连接性的数据中心900的所选部件的框图。这里公开的数据中心900的实施例可以适于或被配置为提供根据本说明书的教导的高速缓存监视的方法。

作为非限制性示例,CSP 902可以是传统的企业数据中心、企业“私有云”或“公共云”,提供诸如基础设施即服务(IaaS)、平台即服务(PaaS)或软件即服务(SaaS)之类的服务。在某些情况下,CSP 902可以代替云服务或除了云服务之外提供HPC平台或服务。实际上,虽然没有明确相同,但HPC集群(“超级计算机”)可以在结构上类似于云数据中心,并且除非和除了明确指出,否则本说明书的教导可以应用于任一种。

CSP 902可以供应一些数量的工作负载集群918,其可以是单独服务器、刀片服务器、机架安装服务器或任何其他合适的服务器拓扑的集群。在该说明性示例中,示出了两个工作负载集群918-1和918-2,每个工作负载集群在底架948中提供机架安装服务器946。

在该图示中,工作负载集群918被示为符合机架单元(“U”)标准的模块化工作负载集群,其中可以构建19英寸宽的标准机架以容纳42个单元(42U),每个1.75英寸高并且约36英寸深。在该情况下,诸如处理器、存储器、存储装置、加速器和交换机之类的计算资源可以适合从一到42的某些多个机架单元。

然而,也考虑其他实施例。例如,图13示出了机架规模设计(RSD)。在RSD中,可以根据标准42U尺寸构建机架,但是可以将其配置为在计算“雪橇(sled)”中容纳行可替换单元(LRU)。在RSD中,可以或可以不根据标准机架单元构建雪橇底架。例如,容纳处理器的雪橇可以适合标准3U配置,或者根据优选设计考虑其可以具有任意大小。在RSD中,整个预先填充的资源机架可以作为单元提供,其中机架托管多个资源雪橇,包含诸如计算(例如,处理器)、存储器、存储装置、加速器、电源、联网以及其他之类的元件。每个雪橇底架可以容纳多个LRU,每个LRU嵌入在单独的雪橇中。如果资源失败,则可以拉出托管该资源的LRU,并且可以模块化地***新的LRU。然后可以修复或丢弃发生故障的LRU,这取决于故障的性质。RSD尤其,即使不是排他性地,在软件定义基础设施(SDI)的情况下是有益的,其中复合节点可以从分解的资源构建。可以提供大型资源池,并且SDI协调器(orchestrator)可以根据需要将它们分配给复合节点。

每个服务器946可以托管独立操作系统并提供服务器功能,或者服务器可以被虚拟化,在这种情况下,它们可以在虚拟机管理器(VMM)、监督程序和/或协调器的控制下,以及可以托管一个或多个虚拟机、虚拟服务器或虚拟装置。这些服务器机架可以并置在单个数据中心中,或者可以位于不同的地理数据中心中。取决于合同协议,一些服务器946可以专门用于某些企业客户或租户,而其他服务器可以是共享的。

数据中心中的各种设备可以经由交换构造970彼此连接,交换构造970可以包括一个或多个高速路由和/或交换设备。交换构造970可以提供“北——南”业务(例如,去往和来自广域网(WAN)的业务,WAN诸如互联网)和“东——西”业务(例如,跨数据中心的业务)。从历史上看,北——南业务占网络业务的大部分,但随着web服务变得越来越复杂和分布式,东——西业务的量已经上升。在许多数据中心中,东——西业务现在占了业务的大多数。

此外,随着每个服务器946的能力增加,业务量可能进一步增加。例如,每个服务器946可以提供多个处理器槽,每个槽容纳具有四到八个核的处理器,以及用于核的足够存储器。因此,每个服务器可以托管多个VM,每个VM生成其自己的业务。

为了适应数据中心中的大量业务,可以提供高性能的交换构造970。交换构造970在该示例中被示为“扁平”网络,其中每个服务器946可以具有到机架顶(ToR)交换机920的直接连接(例如,“星形”配置),并且每个ToR交换机920可以耦合到核心交换机930。该两层扁平网络架构仅作为说明性示例示出。在其他示例中,可以使用其他架构,诸如基于“Clos”架构的三层星形或叶脊(也称为“胖树”拓扑)、中心辐射(hub-and-spoke)拓扑、网状拓扑、环形拓扑、或者3-D网格拓扑,作为非限制性示例。

构造本身可以由任何合适的互连提供。例如,每个服务器946可以包括Intel®主机构造接口(HFI)、NIC、主机通道适配器(HCA)或其他主机接口。为了简单和统一,贯穿本说明书这些可以称为“主机构造接口”(HFI),其应该被广义地解释为将主机通信地耦合到数据中心构造的接口。HFI可以经由互连或总线耦合到一个或多个主处理器,互连或总线诸如PCI、PCIe或类似的。在一些情况下,该互连总线以及其他“本地”互连(例如,核到核的终极路径(Ultra Path)互连)可以被认为是构造970的一部分。在其他实施例中,终极路径互连(UPI)(或者其他局部一致互连)可以被视为处理器复合体的安全域的一部分,并且因此不是构造的一部分。

互连技术可以由单个互连或混合互连提供,诸如PCIe提供片上通信,1Gb或10Gb铜以太网提供到ToR交换机920的相对短的连接,并且光缆提供到核心交换机930的相对较长的连接。作为非限制性示例,可以在数据中心中找到的互连技术包括Intel® Omni-PathTM架构(OPA)、TrueScaLe TM、UPI(以前称为QPI或KTI)、FibreChannel、以太网、以太网上FibreChannel(FCoE)、InfiniBand、PCI、PCIe或光纤,仅举几例。构造可以是高速缓存和存储器一致,高速缓存和存储器非一致,或者是一致和非一致互连的混合。某些互连对于某些目的或功能比其他互连更受欢迎,并且为本申请选择适当的构造是普通技能的运用(exercise)。例如,OPA和Infiniband通常用在HPC应用中,而以太网和FibreChannel在云数据中心中更受欢迎。但这些示例明显是非限制性的,并且随着数据中心演进,构造技术也类似地演进。

注意,虽然本文通过说明的方式提供了诸如OPA之类的高端构造,但更一般地,构造970可以是用于特定应用的任何合适的互连或总线。在某些情况下,这可能包括传统互连,如局域网(LAN)、令牌环网络、同步光网络(SONET)、异步传输模式(ATM)网络、无线网络,如WiFi和蓝牙、“普通老式电话系统”(POTS)互连或类似的。还明确地预期,在未来,可能出现新的网络技术以补充或替换这里列出的那些中的一些,并且任何这样的未来网络拓扑和技术可以是构造970或形成构造970的一部分。

在某些实施例中,构造970可以在各种“层”上提供通信服务,如最初在开放系统互连(OSI)七层网络模型中概述的那样。在当代实践中,没有严格遵循OSI模型。一般而言,层1和2层通常称为“以太网”层(尽管在某些数据中心或超级计算机中,以太网可能被更新的技术取代或补充)。层3和4通常被称为传输控制协议/网际协议(TCP/IP)层(可以将其进一步细分为TCP和IP层)。层5-7可以被称为“应用层”。这些层定义被公开为有用的框架,但是旨在是非限制性的。

图10是根据本说明书的一个或多个示例的最终用户计算设备1000的框图。本文公开的计算设备1000的实施例可能适于或被配置为提供根据本说明书的教导的高速缓存监视的方法。

如上所述,计算设备1000可以适当地提供云服务、高性能计算、电信服务、企业数据中心服务或受益于计算设备1000的任何其他计算服务。

在该示例中,提供构造1070以互连计算设备1000的各个方面。构造1070可以与图9的构造970相同,或者可以是不同的构造。如上所述,构造1070可以通过任何合适的互连技术提供。在此示例中,Intel® Omni-Path™用作说明性和非限制性示例。

如所示,计算设备1000包括形成多个节点的多个逻辑元件。应该理解,每个节点可以由物理服务器、服务器的组或其他硬件提供。每个服务器可以根据其应用运行一个或多个虚拟机。

节点0 1008是包括处理器插座0和处理器插座1的处理节点。处理器可以是例如具有多个核的Intel® Xeon™处理器,诸如4或8个核。节点0 1008可以被配置为提供网络或工作负载功能,诸如通过托管多个虚拟机或虚拟装置。

处理器插座0和处理器插座1之间的板载通信可以由板载上行链路1078提供。这可以在两个处理器插座之间提供非常高速、短长度的互连,使得在节点0 1008上运行的虚拟机可以以非常高的速度彼此通信。为了促进该通信,可以在节点0 1008上提供虚拟交换机(vSwitch),其可以被认为是构造1070的一部分。

节点0 1008经由HFI 1072连接到构造1070。HFI 1072可以连接到Intel® Omni-PathTM构造。在一些示例中,可以隧穿与构造1070的通信,例如通过在Omni-Path TM上提供UPI隧穿。

因为计算设备1000可以以分布式方式提供许多功能,其在前几代中被以板载的方式提供,所以可以提供高能力的HFI 1072。HFI 1072可以以每秒多吉比特的速度操作,并且在一些情况下可以与节点0 1008紧密耦合。例如,在一些实施例中,用于HFI 1072的逻辑在片上系统上与处理器直接集成。这在HFI 1072和处理器插座之间提供了非常高速的通信,而不需要中间总线设备,这可能在构造中引入附加的延迟。然而,这并不意味着要排除在传统总线上提供HFI 1072的实施例。而是,明确地预期在一些示例中,HFI 1072可以在总线上提供,总线诸如PCIe总线,其是PCI的串行化版本,其提供比传统PCI更高的速度。贯穿计算设备1000,各种节点可以提供不同类型的HFI 1072,诸如板载HFI和***式HFI。还应该注意,片上系统中的某些块可以作为知识产权(IP)块提供,其可以作为模块化单元“落”到集成电路中。因此,在某些情况下,HFI 1072可以源自这样的IP块。

注意,在“网络是设备”方式中,节点0 1008可以提供有限的或不提供板载存储器或存储装置。而是,节点0 1008可以主要依赖于分布式服务,例如存储器服务器和联网存储服务器。在板上,节点0 1008可以仅提供足够的存储器和存储装置来引导设备并使其与构造1070通信。由于当代数据中心的非常高的速度,这种分布式架构是可能的,并且可能是有利的,因为没有为每个节点过度供应资源的需要。而是,可以在多个节点之间动态地供应高速或专用存储器的大的池,使得每个节点具有对大的资源池的访问,但是当该特定节点不需要它们时,那些资源不闲置。

在该示例中,节点1存储器服务器1004和节点2存储服务器1010提供节点0 1008的操作存储器和存储能力。例如,存储器服务器节点1 1004可以提供远程直接存储器访问(RDMA),而节点0 1008可以以直接存储器访问方式经由构造1070访问节点1 1004上的存储器资源,类似于它将如何访问其自己的板载存储器。存储器服务器1004提供的存储器可以是传统存储器,例如双数据速率类型3(DDR3)动态随机存取存储器(DRAM),其是易失性的,或者可以是更奇特类型的存储器,例如持久快速存储器(PFM),类似于Intel®3DCrosspoint™(3DXP),它以类似DRAM的速度运行,但是非易失性的。

类似地,可以提供存储服务器节点2 1010,而不是为节点0 1008提供板载硬盘。存储服务器1010可以提供联网的磁盘群(NBOD)、PFM、独立磁盘的冗余阵列(RAID)、独立节点的冗余阵列(RAIN)、联网附着存储装置(NAS)、光存储装置、带驱动器或其他非易失性存储器方案。

因此,在执行其指定功能时,节点0 1008可以从存储器服务器1004访问存储器并将结果存储在由存储服务器1010提供的存储装置上。这些设备中的每一个经由HFI 1072耦合到构造1070,这提供快速通信,其使这些技术成为可能。

作为进一步说明,还描绘了节点3 1006。节点3 1006还包括HFI 1072,以及通过上行链路内部连接的两个处理器插座。然而,与节点0 1008不同,节点3 1006包括其自己的板载存储器1022和存储装置1050。因此,节点3 1006可以被配置为主要在板上执行其功能,并且可以不需要依赖于存储器服务器1004和存储服务器1010。然而,在适当的情况下,节点31006可以用类似于节点0 1008的分布式资源来补充其自己的板载存储器1022和存储装置1050。

计算设备1000还可以包括加速器1030。这些可以提供各种加速功能,包括用于诸如分组处理、加密、解密、压缩、解压缩、网络安全的硬件或协处理器加速或数据中心中的其他加速功能。在一些示例中,加速器1030可以包括深度学习加速器,其可以直接附接到诸如节点0 1008或节点3 1006之类的节点中的一个或多个核。作为非限制性示例,这种加速器的示例可以包括Intel® QuickData技术。(QDT)、Intel® QuickAssist技术(QAT)、Intel® Direct Cache Access(直接高速缓存访问)(DCA)、Intel® Extended MessageSignaled Interrupt(扩展消息信号中断)(MSI-X)、Intel® Receive Side Calescing(接收侧合并)(RSC)和其他加速技术。

在其他实施例中,还可以提供加速器作为专用集成电路(ASIC)、现场可编程门阵列(FPGA)、协处理器、图形处理单元(GPU)、数字信号处理器(DSP)或其他处理实体,其可以可选地被调谐或配置为提供加速器功能。

这里公开的各种部件的基本构建块可以被称为“逻辑元件”。逻辑元件可以包括硬件(包括例如软件可编程处理器、ASIC或FPGA)、外部硬件(数字、模拟或混合信号)、软件、往复软件、服务、驱动、接口、部件、模块、算法、传感器、部件、固件、微代码、可编程逻辑或可以协调以实现逻辑操作的对象。此外,一些逻辑元件由有形的、非暂时性计算机可读介质提供,有形的、非暂时性计算机可读介质具有其上存储的用于指示处理器执行某个任务的可执行指令。这种非暂时性介质可以包括例如硬盘、固态存储器或盘、只读存储器(ROM)、PFM(例如,Intel® 3D CrosspointTM)、外部存储装置、RAID、RAIN、NAS、光存储装置、带驱动器、备份系统、云存储装置或前述的任何组合,作为非限制性示例。这种介质还可以包括编程到现场可编程门阵列(FPGA)中的指令,或者在ASIC或处理器上的硬件中编码的指令。在本公开的实施例中,FPGA是一种可配置逻辑电路,其中门可以通过动态被布置为实现以与集成电路中实现的那些速度类似的速度操作的逻辑。

图11是根据本说明书的一个或多个示例的计算平台1102A的部件的框图。这里公开的计算平台1102A的实施例可以适于或被配置为提供根据本说明书的教导的高速缓存监视的方法。

在所描绘的实施例中,平台1102A、1102B和1102C以及数据中心管理平台1106和数据分析引擎1104经由网络1108互连。在其他实施例中,计算机系统可包括任何合适数量的(即,一个或多个)平台。在一些实施例中(例如,当计算机系统仅包括单个平台时),系统管理平台1106的全部或一部分可以被包括在平台1102上。平台1102可以包括平台逻辑1110,具有一个或多个中央处理单元的。(CPU)1112、存储器1114(其可包括任意数量的不同模块)、芯片集1116、通信接口1118以及用于执行监督程序1120任何其他合适的硬件和/或软件或能够执行与在平台1102上运行的应用相关联的工作负载的其他操作系统。在一些实施例中,平台1102可以用作用于调用这些应用的一个或多个客户系统1122的主机平台。平台1102A可以表示任何合适的计算环境,诸如高性能计算环境、数据中心、通信服务提供商基础设施(例如,演进的分组核的一个或多个部分)、存储器中(in-memory)计算环境、交通工具(例如,汽车或飞机)的计算系统、物联网环境、工业控制系统、其他计算环境或其组合。

在本公开的各种实施例中,监视多个硬件资源(例如,核和非核(uncore))累积的压力(stress)和/或累积的压力的率,并且计算机平台1102A的实体(例如,系统管理平台1106、监督程序1120或其他操作系统)可以分配平台逻辑1110的硬件资源以根据压力信息执行工作负载。在一些实施例中,自诊断能力可以与压力监视组合以更准确地确定硬件资源的健康。每个平台1102可以包括平台逻辑1110。平台逻辑1110除使能平台1102的功能性的其他逻辑之外包括一个或多个CPU 1112、存储器1114、一个或多个芯片集1116和通信接口1128。尽管示出了三个平台,但是计算机平台1102A可以与任何合适数量的平台互连。在各种实施例中,平台1102可以驻留在电路板上,该电路板安装在底架、机架或其他合适的结构中,该其他合适的结构包括通过网络1108耦合在一起的多个平台(其可以包括例如机架或背板开关)。

CPU 1112中的每个可以包括任何合适数量的处理器核和支持逻辑(例如,非核)。核可以通过驻留在CPU 1112和/或芯片集1116上的一个或多个控制器彼此耦合、耦合到存储器1114、耦合到至少一个芯片集1116和/或耦合到通信接口1118。在特定实施例中,CPU1112实施在插座内,插座永久地或可拆卸地连接到平台1102A。尽管示出了四个CPU,但是平台1102可以包括任何合适数量的CPU。

存储器1114可以包括任何形式的易失性或非易失性存储器,包括但不限于磁性介质(例如,一个或多个带驱动器)、光学介质、随机存取存储器(RAM)、ROM、闪存、可移动介质、或者一个或多个任何其他合适的本地或远程存储器部件。存储器1114可以用于平台1102A的短期、中期和/或长期存储。存储器1114可以存储平台逻辑1110使用的任何合适的数据或信息,包括嵌入在计算机可读介质中的软件,和/或结合在硬件中或以其他方式存储的编码逻辑(例如,固件)。存储器1114可以存储由CPU 1112的核使用的数据。在一些实施例中,存储器1114还可以包括用于指令的存储装置,所述指令可以由CPU 1112的核或其他处理元件(例如,驻留在芯片集1116上的逻辑)执行以提供与可管理性引擎1126或平台逻辑1110的其他部件相关联的功能性。平台1102还可以包括一个或多个芯片集1116,其包括支持CPU1112的操作的任何合适的逻辑。在各种实施例中,芯片集1116可以驻留在与CPU 1112相同的管芯或封装上,或者驻留在一个或多个不同的管芯或封装上。每个芯片集可以支持任何合适数量的CPU 1112。芯片集1116还可以包括一个或多个控制器,以将平台逻辑1110的其他部件(例如,通信接口1118或存储器1114)耦合到一个或多个CPU。在所描绘的实施例中,每个芯片集1116还包括可管理性引擎1126。可管理性引擎1126可以包括支持芯片集1116的操作的任何合适的逻辑。在特定实施例中,可管理性引擎1126(其也可以被称为创新引擎)能够从芯片集1116、由芯片集1116管理的(一个或多个)CPU 1112和/或存储器1114、平台逻辑1110的其他部件和/或平台逻辑1110的部件之间的各种连接收集实时遥测数据。在各种实施例中,收集的遥测数据包括本文描述的压力信息。

在各种实施例中,可管理性引擎1126作为带外异步计算代理操作,其能够与平台逻辑1110的各种元件对接以收集遥测数据,而对CPU 1112上的运行进程没有或具有最小的扰乱。例如,可管理性引擎1126可以包括芯片集1116上的专用处理元件(例如,处理器、控制器或其他逻辑),其提供可管理性引擎1126的功能性(例如,通过执行软件指令),因此节省CPU 1112的处理周期,用于与平台逻辑1110执行的工作负载相关联的操作。此外,用于可管理性引擎1126的专用逻辑可以相对于CPU 1112异步操作,并且可以收集至少一些遥测数据而不增加CPU上的负载。

可管理性引擎1126可以处理其收集的遥测数据(这里提供了压力信息的处理的具体示例)。在各种实施例中,可管理性引擎1126将其收集的数据和/或其处理的结果报告给计算机系统中的其他元件,例如一个或多个监督程序1120或其他操作系统和/或系统管理软件(可以在任何合适的逻辑上运行,例如系统管理平台1106)。在特定实施例中,可以在用于报告遥测数据的正常间隔之前报告诸如已经累积了过量压力的核之类的关键事件(例如,可以在检测时立即发送通知)。

另外,可管理性引擎1126可以包括可配置的可编程代码,以设置特定芯片集1116管理哪(一个或多个)CPU 1112和/或可以收集哪些遥测数据。

芯片集1116中的每个还包括通信接口1128。通信接口1128可以用于芯片集1116与一个或多个I/O设备、一个或多个网络1108和/或耦合到网络1108的一个或多个设备(例如,系统管理平台1106)之间的信令和/或数据的通信。例如,通信接口1128可用于发送和接收网络业务,例如数据分组。在特定实施例中,通信接口1128包括一个或多个物理网络接口控制器(NIC),也称为网络接口卡或网络适配器。NIC可以包括使用任何合适的物理层和数据链路层标准进行通信的电子电路,任何合适的物理层和数据链路层标准诸如是以太网(例如,如IEEE 802.3标准所定义的)、光纤通道、InfiniBand、Wi-Fi或其他合适的标准。NIC可以包括可以耦合到电缆(例如,以太网电缆)的一个或多个物理端口。NIC可以使能芯片集1116的任何合适元件(例如,可管理性引擎1126或交换机1130)与耦合到网络1108的另一设备之间的通信。在各种实施例中,NIC可以与芯片集集成(即,可以在与芯片集逻辑的其余部分相同的集成电路或电路板上)或者可以在机电耦合到芯片集的不同集成电路或电路板上。

在特定实施例中,通信接口1128可以允许与可管理性引擎1126执行的管理和监视功能相关联的数据的通信(例如,在可管理性引擎1126和数据中心管理平台1106之间)。在各种实施例中,可管理性引擎1126可以利用通信接口1128的元件(例如,一个或多个NIC)来报告遥测数据(例如,报告给系统管理平台1106),以便保留通信接口1118的NIC的使用,用于与平台逻辑1110执行的工作负载相关联的操作。

交换机1130可以耦合到通信接口1128的各种端口(例如,由NIC提供),并且可以在这些端口和芯片集1116的各种部件(例如,耦合到CPU 1112的一个或多个***部件互连快速(PCIe)通道)之间交换数据。交换机1130可以是物理或虚拟(即软件)交换机。

平台逻辑1110可以包括附加通信接口1118。类似于通信接口1128,通信接口1118可以用于平台逻辑1110与一个或多个网络1108和耦合到网络1108的一个或多个设备之间的信令和/或数据的通信。例如,通信接口1118可用于发送和接收网络业务,例如数据分组。在特定实施例中,通信接口1118包括一个或多个物理NIC。这些NIC可以使能平台逻辑1110的任何合适元件(例如,CPU 1112或存储器1114)与耦合到网络1108的另一设备(例如,通过一个或多个网络耦合到网络1108的其他平台或远程计算设备的元件)之间的通信。

平台逻辑1110可以接收并执行任何合适类型的工作负载。工作负载可以包括利用平台逻辑1110的一个或多个资源的任何请求,平台逻辑1110的一个或多个资源例如一个或多个核或相关联的逻辑。例如,工作负载可以包括实例化软件部件的请求,软件部件例如I/O设备驱动1124或客户系统1122;处理从平台1102A外部的虚拟机1132或设备(例如耦合到网络1108的网络节点)接收的网络分组的请求;执行与客户系统1122、在平台1102A上运行的应用、监督程序1120或在平台1102A上运行的其他操作系统相关联的进程或线程的请求;或其他合适的处理请求。

虚拟机1132可以使用其自己的专用硬件来模拟计算机系统。虚拟机1132可以在监督程序1120的顶部上运行客户操作系统。平台逻辑1110的部件(例如,CPU 1112、存储器1114、芯片集1116和通信接口1118)可以被虚拟化,使得它对于客户操作系统显示虚拟机1132具有其自己的专用部件。

虚拟机1132可以包括虚拟化NIC(vNIC),其由虚拟机用作其网络接口。可以为vNIC分配介质访问控制(MAC)地址或其他标识符,因此允许多个虚拟机1132在网络中是单独可寻址的。

VNF 1134可以包括功能构建块的软件实现,其具有可以部署在虚拟化基础设施中的定义的接口和行为。在特定实施例中,VNF 1134可以包括一个或多个虚拟机1132,其共同提供特定功能性(例如,WAN优化、虚拟私有网络(VPN)终止、防火墙操作、负载平衡操作、安全功能等)。在平台逻辑1110上运行的VNF 1134可以提供与通过专用硬件实现的传统网络部件相同的功能性。例如,VNF 1134可以包括用于执行任何合适的网络功能虚拟化(NFV)工作负载的部件,诸如虚拟化演进分组核(vEPC)部件、移动性管理实体、第3代合作伙伴计划(3GPP)控制和数据平面部件等。

SFC 1136是VNF 1134的组,其被组织为链以执行一系列操作,例如网络分组处理操作。服务功能链接可以提供定义在网络中拼接在一起以创建服务链的网络服务(例如防火墙、负载平衡器)的有序列表的能力。

监督程序1120(也称为虚拟机监视器)可以包括用于创建和运行客户系统1122的逻辑。监督程序1120可以呈现由具有虚拟操作平台的虚拟机运行的客户操作系统(即,它对于虚拟机显示当它们实际合并到单个硬件平台上时它们在单独的物理节点上运行)并通过平台逻辑1110管理客户操作系统的执行。可以通过软件中的虚拟化或通过需要最少软件干预的硬件辅助资源或两者来提供监督程序1120的服务。可以由监督程序1120管理各种客户操作系统的多个实例。每个平台1102可以具有监督程序1120的单独实例。

监督程序1120可以是原生(native)或裸机(bare-metal)监督程序,其直接在平台逻辑1110上运行以控制平台逻辑并管理客户操作系统。替代地,监督程序1120可以是在主机操作系统上运行的托管的监督程序,并从主机操作系统中抽象客户操作系统。监督程序1120可以包括虚拟交换机1138,其可以向客户系统1122的虚拟机提供虚拟交换和/或路由功能。虚拟交换机1138可以包括将虚拟机1132的vNIC彼此耦合的逻辑交换构造,因此创建虚拟网络,虚拟机可以通过该虚拟网络彼此通信。

虚拟交换机1138可以包括使用平台逻辑1110的部件执行的软件元素。在各种实施例中,监督程序1120可以与任何合适的实体(例如,SDN控制器)通信,这可以使监督程序1120响应于平台1102中的变化条件(例如,虚拟机1132的添加或删除或可以进行的优化的标识以增强平台的性能)重新配置虚拟交换机1138的参数。

监督程序1120还可以包括资源分配逻辑1144,其可以包括用于基于遥测数据(其可以包括压力信息)确定平台资源的分配的逻辑。资源分配逻辑1144还可以包括用于与平台1102A的平台逻辑1110实体的各种部件通信以实现这种优化的逻辑,诸如平台逻辑1110的部件。

任何合适的逻辑可以做出这些优化决定中的一个或多个。例如,系统管理平台1106;监督程序1120或其他操作系统的资源分配逻辑1144;或者计算机平台1102A的其他逻辑可能能够做出这样的决定。在各种实施例中,系统管理平台1106可以跨多个平台1102从工作负载放置接收遥测数据并管理工作负载放置。系统管理平台1106可以与监督程序1120(例如,以带外方式)或各种平台1102的其他操作系统通信以实现由系统管理平台指导的工作负载放置。

平台逻辑1110的元件可以以任何合适的方式耦合在一起。例如,总线可以将任何部件耦合在一起。总线可以包括任何已知的互连,例如多点总线、网状互连、环形互连、点对点互连、串行互连、并行总线、一致(例如,高速缓存 - 一致)总线、分层协议架构、差分总线或Gunning收发器逻辑(GTL)总线。

在本说明书的实施例中,高速缓存一致性是在多个高速缓存之间提供统一共享和映射的存储器架构。例如,高速缓存可以映射到相同的地址空间。如果两个不同的高速缓存在共享地址空间中高速缓存了相同的地址,则一致性代理提供逻辑(硬件和/或软件)以确保共享资源的兼容性和一致性。例如,如果两个高速缓存已高速缓存相同的地址,则当存储在该地址中的值在一个高速缓存中更新时,一致性代理确保将改变传播到另一个高速缓存。例如,可以经由“窥探(snooping)”来维持一致性,其中每个高速缓存监视每个其他高速缓存的地址线,并检测更新。还可以经由基于目录的系统维持高速缓存一致性,其中共享数据被放置在维持一致性的共享目录中。一些分布式共享存储器架构也可以提供一致性,例如通过模拟前述机制。

一致性可以是基于“窥探”或目录的。在窥探协议中,可以通过写无效来维持一致性,其中窥探对第二高速缓存中的相同地址的写的第一高速缓存使其自己的副本无效。如果程序试图从第一个高速缓存读取值,则这强制从存储器读取。替代地,在写更新中,第一高速缓存窥探对第二高速缓存的写,并且高速缓存控制器(其可包括一致性代理)将数据复制出来并更新第一高速缓存中的副本。

作为非限制性示例,当前高速缓存一致性模型包括MSI(修改的、共享的、无效的)、MESI(修改的、排他的、共享的、无效的)、MOSI(修改的、拥有的、共享的、无效的)、MOESI(修改的、拥有的、排他的、共享的、无效的)、MERSI(修改的、排他的、只读或最近的、共享的、无效的)、MESIF(修改的、排他的、共享的、无效的、转发)、一次写入、Synapse、BerkeLey、Firefly和Dragon协议。此外,ARM处理器可以使用高级微控制器总线架构(AMBA)包括AMBA4 ACE,以提供片上系统(SoC)或其他地方的高速缓存一致性。

计算机平台1102A的元件可以以任何合适的方式耦合在一起,例如通过一个或多个网络1108。网络1108可以是使用一个或多个合适的联网协议操作的一个或多个网络的组合或任何合适的网络。网络可以表示用于接收和传输通过通信系统传播的信息的分组的一系列节点、点和互连通信路径。例如,网络可以包括一个或多个防火墙、路由器、交换机、安全装置、防病毒服务器或其他有用的网络设备。

图12示出了根据本说明书的一个或多个示例的CPU 1212的框图。这里公开的CPU1212的实施例可以适于或被配置为提供根据本说明书的教导的高速缓存监视的方法。特别地,CPU 1212可以包括SRM,如图7中所示的。

尽管CPU 1212描绘了特定配置,但是CPU 1212的核和其他部件可以以任何合适的方式布置。CPU 1212可以包括任何处理器或处理设备,例如微处理器、嵌入式处理器、DSP、网络处理器、应用处理器、协处理器、SoC或执行代码的其他设备。在所描绘的实施例中,CPU1212包括四个处理元件(在所描绘的实施例中为核1230),其可包括不对称处理元件或对称处理元件。然而,CPU 1212可以包括可以是对称或不对称的任何数量的处理元件。

硬件处理元件的示例包括:线程单元、线程槽(thread slot)、线程、处理单元、上下文、上下文单元、逻辑处理器、硬件线程、核和/或任何其他元素,其能够保持处理器的状态,例如执行状态或架构状态。换句话说,在一个实施例中,处理元件指的是能够独立地与代码相关联的任何硬件,代码诸如软件线程、操作系统、应用或其他代码。物理处理器(或处理器插座)通常是指集成电路,其潜在地包括任何数量的其他处理元件,例如核或硬件线程。

核可以指代位于能够维持独立架构状态的集成电路上的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。硬件线程可以指代位于能够维持独立架构状态的集成电路上的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。物理CPU可以包括任何合适数量的核。在各种实施例中,核可以包括一个或多个乱序处理器核或一个或多个有序处理器核。然而,核可以从任何类型的核单独选择,核例如原生核、软件管理核、适于执行原生指令集架构(ISA)的核、适于执行转译的ISA的核、共同设计的(co-designed)核或其他已知核。在异构核环境(即,非对称核)中,可以利用某种形式的转译,例如二进制转译,来在一个或两个核上调度或执行代码。

在所描绘的实施例中,核1230A包括乱序处理器,其具有用于取传入的指令、执行各种处理(例如,高速缓存、解码、分支预测等)并且将指令/操作传递到乱序(OOO)引擎的前端单元1270。OOO引擎对解码的指令执行进一步处理。

前端1270可以包括解码模块,其耦合到取逻辑以解码所取的元素。在一个实施例中,取逻辑包括与核1230的线程槽相关联的单独定序器。通常,核1230与第一ISA相关联,第一ISA定义/指定在核1230上可执行的指令。通常是作为第一ISA的一部分的机器代码指令包括指令的一部分(称为操作码),其引用/指定要执行的指令或操作。解码模块可以包括从其操作码识别这些指令并且在流水线中传送解码的指令用于由第一ISA定义的处理的电路。在一个实施例中,核1230的解码器识别相同的ISA(或其子集)。替代地,在异构核环境中,一个或多个核(例如,核1230B)的解码器可以识别第二ISA(第一ISA的子集或不同的ISA)。

在所描绘的实施例中,乱序引擎包括分配单元1282以从前端单元1270接收解码的指令,其可以是一个或多个微指令或uop的形式,并将它们分配给适当的资源,诸如寄存器以及诸如此类。接下来,将指令提供给保留站1284,保留站1284保留资源并将它们调度用于在多个执行单元1286A-1286N之一上的执行。可以存在各种类型的执行单元,除其他之外,包括例如算术逻辑单元(ALU)、加载和存储单元、向量处理单元(VPU)、浮点执行单元等。来自这些不同执行单元的结果被提供给重新排序(reorder)缓冲器(ROB)1288,其获取无序结果并将它们返回到正确的程序顺序。

在所描绘的实施例中,前端单元1270和乱序引擎1280两者都耦合到存储器层级的不同级别。具体示出的是指令级高速缓存1272,其继而耦合到中级高速缓存1276,其继而耦合到最后级高速缓存1295。在一个实施例中,最后级高速缓存1295在片上(有时称为非核)单元1290中实现。非核1290可以与系统存储器1299通信,系统存储器1299在所示实施例中通过嵌入式DRAM(eDRAM)实现。OOO引擎1280内的各种执行单元1286与还与中级高速缓存1276通信的第一级高速缓存1274通信。附加核1230B-1230D也可以耦合到最后级高速缓存1295。

在特定实施例中,非核1290可以在与核的电压域和/或频域分开的电压域和/或频域中。也就是说,非核1290可以由不同于用于为核供电的电源电压的电源电压供电和/或可以在不同于核的操作频率的频率处操作。

CPU 1212还可以包括功率控制单元(PCU)1240。在各种实施例中,PCU 1240可以控制施加到核中的每个(基于每个核)和施加到非核的电源电压和操作频率。PCU 1240还可以在不执行工作负载时指示核或非核进入空闲状态(其中不提供电压和时钟)。

在各种实施例中,PCU 1240可以检测硬件资源的一个或多个压力特性,例如核和非核。压力特性可以包括正置于硬件资源上的压力量的指示。作为示例,压力特性可以是应用于硬件资源的电压或频率;在硬件资源处感测到的功率水平、电流水平或电压水平;在硬件资源处感测到的温度;或其他合适的测量。在各种实施例中,当在特定时刻感测到压力特性时,可以执行特定压力特性的多个测量(例如,在不同位置处)。在各种实施例中,PCU1240可以以任何合适的间隔检测压力特性。

在各种实施例中,PCU 1240是与核1230分立的部件。在特定实施例中,PCU 1240以与核1230所使用的时钟频率不同的时钟频率运行。在PCU是在微控制器的一些实施例中,PCU 1240根据不同于核1230所使用的ISA的ISA执行指令。

在各种实施例中,CPU 1212还可以包括非易失性存储器1250,以存储与核1230或非核1290相关联的压力信息(诸如压力特性、增量压力值、累积压力值、压力累积率或其他压力信息),使得当失去电力时,压力信息得以维持。

如图12中所示,CPU 1212可以进一步包括SRM 1252。在本公开的实施例中,SRM1252提供统一的I/O架构,其实现高性能、显著减少存储器带宽和能量消耗,并且因此减少计算操作中的延迟。

图13是根据本说明书的一个或多个示例的机架规模设计(RSD)1300的框图。这里公开的RSD 1300的实施例可以适于或被配置为提供根据本说明书的教导的高速缓存监视的方法。

在该示例中,RSD 1300包括单个机架1304,以说明RSD的某些原理。应该理解的是,RSD 1300可以包括许多这样的机架,并且机架不需要彼此相同。在一些情况下,可以提供诸如机架1304之类的多用途机架,而在其他示例中,可以提供单用途机架。例如,机架1304可以被认为是高包括性的机架,其包括可以用于分配大量复合节点的资源。另一方面,其他示例可以包括单独专用于计算雪橇、存储雪橇、存储器雪橇和其他资源类型的机架,它们可以一起集成到复合节点中。因此,图13的机架1304应该被理解为可以在RSD 1300中使用的机架的非限制性示例。

在图13的示例中,机架1304可以是标准机架,其具有约23.6英寸的外部宽度和78.74英寸的高度。在通常的使用中,这被称为“42U机架”。然而,机架1304不需要符合“机架单元”标准。而是,机架1304可以包括针对其目的而优化的多个底架。

机架1304可以作为单片单元在市场上销售和出售,每个底架内具有多个LRU。在这种情况下,LRU可以是雪橇,并且因此当需要进行更换时可以容易地将LRU换出。

在该示例中,机架1304包括电源底架1310、存储装置底架1316、三个计算底架(1324-1、1324-2和1324-3)、3-D Crosspoint TM(3DXP)底架1328、加速器底架1330和联网底架1334。每个底架可包括一个或多个保持适当资源的LRU雪橇。例如,电源底架1310包括多个热可插拔电源1312,其可以向机架1304提供共享电源。在其他实施例中,取决于实施例的需要,一些雪橇底架还可以包括它们自己的电源。

存储装置底架1316包括多个存储装置雪橇1318。计算底架1324中的每个包含多个计算雪橇1320。 3DXP底架1328可包括多个3DXP雪橇1326,每个托管3DXP存储器服务器。并且加速器底架1330可以托管多个加速器,例如Intel® Quick AssistTM technology(快速辅助技术)(QAT)、FPGA、ASIC或相同或不同类型的其他加速器。根据特定实施例的需要,加速器底架1330内的加速器可以是相同类型或不同类型。

随着时间的推移,机架1304内的各种LRU可能损坏、过时或可能经历功能错误。当这发生时,可以拉动LRU并用兼容的LRU替换LRU,因此允许机架继续全规模操作。

图14是根据本说明书的一个或多个示例的软件定义的基础设施(SDI)数据中心1400的框图。这里公开的SDI数据中心1400的实施例可以适于或被配置为提供根据本说明书的教导的高速缓存监视的方法。

SDI数据中心1400内托管的某些应用可以使用资源集合来实现其指定目的,例如处理数据库查询、服务web页面或提供计算机智能。

某些应用倾向于对特定资源的子集敏感。例如,SAP HANA是存储器中、面向列的关系数据库系统。SAP HANA数据库可能使用处理器、存储器、盘和构造,同时对存储器和处理器最敏感。在一个实施例中,复合节点1402包括执行处理功能的一个或多个核1410。节点1402还可以包括提供对高速度高速缓存的访问的高速缓存代理1406。一个或多个应用1414在节点1402上运行,并且经由FA 1418与SDI构造通信。向节点1402动态供应资源可以包括选择资源的集合并确保所提供的数量和质量满足所需的性能指标,例如SLA和服务质量(QoS)。应用1414的资源选择和分配可以由资源管理器执行,资源管理器可以在协调和系统软件栈1422中实现。作为非限制性示例,贯穿本说明书,资源管理器可以被视为其好像可以单独实现或者由协调器实现。请注意,许多不同的配置是可能的。

在SDI数据中心中,应用可以由诸如由SDI管理器1480动态分配的节点1402之类的复合节点来执行。这样的节点被称为复合节点,因为它们不是必定并置所有资源的节点。而是,它们可以包括如下资源,所述资源分布在数据中心的不同部分中、被动态分配并被虚拟化到特定应用1414。

在该示例中,来自存储器机架1430的三个存储器雪橇的存储器资源被分配给节点1402,来自来自存储装置机架1434的四个存储装置雪橇的存储资源被分配,并且来自来自资源机架1436的五个资源雪橇的附加资源被分配给在复合节点1402上运行的应用1414。所有这些资源可以与特定计算雪橇相关联并聚合以创建复合节点。一旦创建了复合节点,就可以在节点1402中引导操作系统,并且应用可以使用聚合资源开始运行,就好像它们是物理上并置的资源一样。如上所述,FA 1418可以提供某些接口,所述接口使该操作能够相对于节点1402无缝地发生。

作为一般提议,添加到数据库处理器的存储器和计算资源越多,其就可以实现越好的吞吐量。然而,对于盘或构造而言,这不一定适用。添加更多盘和构造带宽可能不一定使SAP HANA数据库的性能增加到某个阈值之上。

SDI数据中心1400可以通过基于用户或网络管理员提供的应用要求或者直接由应用本身将适当量的非板载(offboard)资源映射到应用来解决资源的缩放。这可以包括从各种资源机架分配资源,各种资源机架例如存储器机架1430、存储装置机架1434和资源机架1436。

在示例中,SDI控制器1480还包括资源保护引擎(RPE)1482,其被配置为将各种目标资源的许可分配给被允许访问它们的分解的计算资源(DRC)。在该示例中,期望资源由服务于目标资源的FA强制执行。

在某些实施例中,SDI数据中心1400的元件可以适于或被配置为与本说明书的分解的遥测模型一起操作。

图15是根据本说明书的一个或多个示例的数据中心1500的框图。这里公开的数据中心1500的实施例可以适于或被配置为提供根据本说明书的教导的高速缓存监视的方法。

在图15的示例中,定义了两个复合节点,即复合节点1534-1和复合节点1534-2。

根据本说明书的教导,数据中心1500包括可以被分解并且可以被定义为复合节点的一部分的多个资源。例如,计算雪橇1526-1和1526-2中的每个包括处理器,分别为1530-1和1530-2。每个处理器1530可以托管相应的应用1532-1和1532-2。

注意,在各种实施例中,计算雪橇1526-1还可以为处理器1530-1提供本地存储器、存储装置、加速器或其他资源。然而,根据本说明书的SDI教导,分配给复合节点1534的某些资源也可以被分解,或者物理上远离处理器1530。在该示例中,每个复合节点1534已经为其分配了驻留在FPGA雪橇 1504中的一个或多个FPGA 1512。这些FPGA可以提供以接近硬件速度操作的加速功能,并由内核1506提供。每个FPGA 1512还可以具有对某些本地FPGA资源1508的访问。复合节点1534也可以具有对存储装置雪橇1522内的存储块1524的访问。存储装置1522也可以是在资源雪橇中提供的分解资源。

应注意,为了说明的简单和清楚,在该图示中仅公开了所选择的部件。然而,也可以提供其他分解的资源。例如,数据中心1500可以包括提供分解存储器的存储器服务器,包括永久快速存储器,复合节点1534可以通过RDMA访问该存储器服务器。

在该示例中,复合节点1534-1包括计算雪橇1526-1上的处理器1530-1、运行应用1532-1以及经由FA 1518-3访问构造1570。复合节点1534-1还包括在FPGA雪橇1504-1上运行的FPGA 1512-1、运行FPGA内核1506-1,并且具有对FPGA资源1508-1的访问。FPGA雪橇1504-1可以经由FA 1518-1访问构造1570。注意,在该示例中,FPGA雪橇1504-1上的多个FPGA可以经由无源背板彼此连接,并且可以为整个雪橇提供单个FA 1518-1。复合节点1534-1还可以具有对存储装置雪橇1522上的存储块1524-1的访问。在FPGA雪橇1504-2内,FPGA 1512-2具有对共享资源1508-2的访问,其通过两个不同的内核访问,两个不同的内核是内核1506-2和内核1506-3。FPGA 1512-1上的内核1506-2也被分配给复合节点1534-1,而内核1506-3则不分配给复合节点1534-1。

复合节点1534-2包括在计算雪橇1526-2上运行应用1532-2的处理器1530-2。计算雪橇1526-2经由FA 1518-4连接到构造1570。注意,计算雪橇1526还可以包括多个处理器、存储器和其他本地资源,其可以经由无源背板彼此通信地耦合,并且共享公共FA 1518。复合节点1534-2还包括在共享FPGA 1512-2上运行的内核1506-3,并且具有对共享资源1508-2的访问。复合节点1534-2可以在存储块1524-2上存储数据。

前述内容概述了本文公开的主题的一个或多个实施例的特征。提供这些实施例以使本领域普通技术人员(PHOSITA)能够更好地理解本公开的各个方面。可以参考某些易于理解的术语以及基础技术和/或标准而不进行详细描述。预计PHOSITA将具备足以实施本说明书教导的那些技术和标准中的背景知识或信息或具有对足以实施本说明书教导的那些技术和标准中的背景知识或信息的访问。

PHOSITA将理解,他们可以容易地使用本公开作为设计或修改其他过程、构造或变型的基础,以实现相同的目的和/或实现本文介绍的实施例的相同优势。PHOSITA还将认识到,这样的等同构造不脱离本公开的精神和范围,并且在不脱离本公开的精神和范围的情况下,它们可以在本文中进行各种改变、替换和变更。

在前面的描述中,比实践所附权利要求所严格必需地更详细地描述了一些或所有实施例的某些方面。出于提供所公开实施例的上下文和说明的目的,仅通过非限制性示例提供这些细节。不应该理解此类细节是必需的,并且此类细节不应该被“曲解”作为限制的权利要求。该短语可以指“实施例”或“多个实施例”。这些短语和对实施例的任何其他参考应该被广义地理解为指代一个或多个实施例的任何组合。此外,在特定“实施例”中公开的若干特征也仅可以跨多个实施伸展。例如,如果在“实施例”中公开了特征1和2,则实施例A可以具有特征1但缺少特征2,而实施例B可以具有特征2但缺少特征1。

本说明书可提供框图形式的图示,其中某些特征在单独的框中公开。应广义地理解这些以公开各种特征如何互操作,但并不旨在暗示那些特征必须一定体现在单独的硬件或软件中。此外,在单个框公开相同框中的多于一个特征的情况下,那些特征不需要一定体现在相同的硬件和/或软件中。例如,计算机“存储器”在某些情况下可以在多级高速缓存或本地存储器、主存储器、电池支持的易失性存储器和各种形式的持久存储器之间分布或映射,各种形式的持久存储器诸如硬盘、存储服务器、光盘、存储器,带驱动器或类似存储器。在某些实施例中,可以省略或合并一些部件。在一般意义上,附图中描绘的布置在其表示中可以更符合逻辑,而物理架构可以包括这些元素的各种排列、组合和/或混合。可以使用无数可能的设计配置来实现本文概述的操作目标。因此,相关联的基础设施具有无数的替代安排、设计选择、设备可能性、硬件配置、软件实现和设备选项。

这里可以参考计算机可读介质,其可以是有形和非暂时性计算机可读介质。如在本说明书并且贯穿权利要求所使用的,“计算机可读介质”应该被理解为包括相同或不同类型的一个或多个计算机可读介质。作为非限制性示例,计算机可读介质可以包括光学驱动器(例如,CD/DVD /蓝光)、硬盘驱动器、固态驱动器、闪存或其他非易失性介质。计算机可读介质还可以包括诸如ROM、FPGA或ASIC之类的介质,被配置为执行期望的指令、用于编程FPGA或ASIC以执行期望指令的存储指令、可以在硬件中集成到其他电路中的IP块,或直接编码到硬件中或直接编码为诸如微处理器、DSP、微控制器之类的处理器上的或适当的并且基于特定需要的任何其他合适的部件、设备、元件或对象中的微代码的指令。这里的非暂时性存储介质明确地旨在包括被配置为提供所公开的操作或使处理器执行所公开的操作的任何非暂时性专用或可编程硬件。

贯穿本说明书和权利要求书,各种元件可以“通信地”、“电气地”、“机械地”或以其他方式“耦合”到彼此。这种耦合可以是直接的点对点耦合,或者可以包括中间设备。例如,两个设备可以经由促进通信的控制器彼此通信地耦合。设备可以经由诸如信号增强器(booster)、分压器或缓冲器之类的中间设备彼此电耦合。机械耦合的设备可以间接地机械耦合。

这里公开的任何“模块”或“引擎”可以指代或包括软件、软件栈、硬件、固件和/或软件的组合,被配置为执行引擎或模块的功能的电路,或者上面公开的任何计算机可读介质。在适当的情况下,此类模块或引擎可以在硬件平台上提供或与硬件平台结合提供,该硬件平台可以包括硬件计算资源,诸如处理器、存储器、存储装置、互连、网络和网络接口、加速器或其他合适的硬件。这样的硬件平台可以作为单个单片设备提供(例如,以PC形状因子),或者配备有被分布的功能的一些或部分(例如,高端数据中心中的“复合节点”,其中计算、存储器、存储装置和其他资源可以被动态分配并且不需要彼此是本地的)。

可能存在这里公开的流程图、信号流程图或示出以特定顺序执行的操作的其他图示。除非另有明确说明,或者除非在特定上下文中要求,否则该顺序应被理解为仅是非限制性示例。此外,在示出一个操作跟随另一个操作的情况下,也可能发生其他中介操作,这些操作可能是相关的或不相关的。一些操作也可以同时或并行执行。在操作被称为“基于”或“根据”另一项目或操作的情况下,这应该被理解为暗示该操作至少部分地基于或至少部分地根据其他项目或操作。这不应被解释为暗示操作仅基于或排他地基于项目或操作,或仅根据或排他地根据项目或操作。

本文公开的任何硬件元件的全部或部分可以容易地在SoC中提供,包括CPU封装。SoC表示将计算机或其他电子系统的部件集成到单个芯片中的集成电路(IC)。因此,例如,可以在SoC中全部或部分地提供客户端设备或服务器设备。SoC可以包含数字、模拟、混合信号和射频功能,所有这些功能都可以在单个芯片衬底上提供。其他实施例可以包括多芯片模块(MCM),其中多个芯片位于单个电子封装内并且被配置为通过电子封装彼此紧密地相互作用。

在一般意义上,任何适当配置的电路或处理器可以执行与数据相关联的任何类型的指令以实现本文详述的操作。本文公开的任何处理器可以将元素或物品(例如,数据)从一个状态或事物变换为另一个状态或事物。此外,基于特定需求和实现,可以在任何数据库、寄存器、表、高速缓存、队列、控制列表或存储构造中提供被跟踪,发送、接收或存储在处理器中的信息,所有这些都可以在任何合适的时间范围内引用。本文公开的任何存储器或存储元件应解释为适当地包含在广义术语“存储器”和“存储装置”内。

实现本文描述的全部或部分功能性的计算机程序逻辑以各种形式体现,包括但不限于源代码形式、计算机可执行形式、机器指令或微代码、可编程硬件和各种中间形式(例如,由汇编程序、编译器、链接程序或***生成的表格)。在示例中,源代码包括以各种编程语言或者以诸如Spice、Verilog和VHDL之类的硬件描述语言实现的一系列计算机程序指令,各种编程语言诸如目标代码、汇编语言或诸如OpenCL、FORTRAN、C、C ++、JAVA或HTML之类的高级语言,用于与各种操作系统或操作环境一起使用。源代码可以定义和使用各种数据构造和通信消息。源代码可以是计算机可执行形式(例如,通过解释器),或者源代码可以被转换(例如,通过翻译器、汇编器或编译器)成计算机可执行形式,或者转换成中间形式,诸如字节码。在适当的情况下,前述任何一个都可以用于构建或描述适当的分立或集成电路,无论是顺序的、组合的、状态机还是其他的。

在一个示例实施例中,附图的任何数量的电路可以在相关联的电子设备的板上实现。该板可以是一般电路板,其可以保持电子设备的内部电子系统的各种部件,并且还提供用于其他***设备的连接器。基于特定配置需求、处理需要和计算设计,任何合适的处理器和存储器可以适当地耦合到板。注意,利用本文提供的众多示例,可以按照两个、三个、四个或更多电子部件来描述交互。然而,这仅出于清楚和示例的目的而完成。应当理解,可以以任何合适的方式合并或重新配置系统。沿着类似的设计替代方案,附图的任何所示部件、模块和元件可以以各种可能的配置组合,所有这些配置都在本说明书的宽范围内。

本领域技术人员可以确定许多其他改变、替换、变化、更改和修改,并且本公开旨在涵盖落入所附权利要求书的范围内的所有这样的改变、替换、变化、更改和修改。为了协助美国专利商标局(USPTO)以及附加地协助在解释附加到本申请的权利要求中关于本申请发布的任何专利的任何读者,申请人希望指出申请人:(a)不旨在任何所附权利要求中的任何权利要求援引35 U.S.C第六(6)段第112部分(AIA之前)或相同部分的段(f)(AIA之后),因为其存在于其提交日,除非在特定权利要求中特别使用了“用于......的装置”或“用于......的步骤”; 以及(b)不旨在通过说明书中的任何声明以任何未在所附权利要求书中明确反映的方式限制本公开。

示例实现

通过说明提供以下示例。

示例1包括计算装置,其包括:处理器;包括多个高速缓存级别的多级高速缓存;***设备,被配置为将数据直接写到直接可写高速缓存;以及高速缓存监视电路,包括当高速缓存行被分配到直接可写高速缓存中时递增的高速缓存计数器La,当处理器处理高速缓存行并且从直接可写高速缓存解除分配高速缓存行时递增的Lp,当高速缓存行从直接可写高速缓存被逐出到存储器时递增的Le,其中高速缓存监视电路根据高速缓存计数器确定直接写策略。

示例2包括示例1的计算装置,其中仅当在没有被处理器检索的情况下逐出高速缓存行时才递增Le

示例3包括示例1的计算装置,其中直接可写高速缓存是最后级高速缓存。

示例4包括示例1的计算装置,其中多级高速缓存是非包括性高速缓存。

示例5包括示例1的计算装置,其中高速缓存计数器是被配置为对少于所有高速缓存集合的集合进行采样的采样计数器。

示例6包括示例5的计算装置,其中高速缓存计数器被配置为对所有高速缓存集合的大约2%进行采样。

示例7包括示例6的计算装置,其中高速缓存监视电路还用于在策略窗口之后重置LaLpLe

示例8包括示例6的计算装置,其中高速缓存监视电路将采样的集合上的所有事务分配给直接可写高速缓存。

示例9包括示例7的计算装置,其中高速缓存监视电路用于根据策略分配间隙(interstitial)高速缓存事务。

示例10包括示例1的计算装置,其中确定直接写策略包括确定Lp近似等于La并且Le处于或接近零,确定高速缓存未被过度利用,以及确定直接写策略以将传入数据写到直接可写高速缓存。

示例11包括示例1的计算装置,其中确定直接策略包括确定Lp基本上小于La并且Le基本上是非零的,确定高速缓存被过度使用,以及确定直接写策略以将传入数据直接写到存储器。

示例12包括示例1的计算装置,其中***设备是以太网网络接口。

示例13包括示例1的计算装置,其中***设备是高速缓存一致的核到核网络接口。

示例14包括示例13的计算装置,其中高速缓存一致的核到核网络接口是Omni-Path或Omni-Path的衍生物。

示例15包括示例1的计算装置,其中***设备是***部件互连快速(PCIe)互连上的高速缓存一致的核到核网络接口。

示例16包括一种共享资源监视器,包括:通信地耦合到核的接口;通信耦合到高速缓存的接口;通信耦合到***设备的接口;当高速缓存行被分配到高速缓存中时递增的高速缓存计数器La;当核处理高速缓存行并且从高速缓存解除分配高速缓存行时递增的高速缓存计数器Lp;当高速缓存行从直接可写高速缓存被逐出到存储器时递增的高速缓存计数器Le;以及根据高速缓存计数器确定直接写策略的策略电路。

示例17包括示例16的共享资源监视器,其中高速缓存是多级高速缓存的直接可写高速缓存。

示例18包括示例17的共享资源监视器,其中直接可写高速缓存是最后级高速缓存。

示例19包括示例17的共享资源监视器,其中多级高速缓存是非包括性高速缓存。

示例20包括示例16的共享资源监视器,其中,仅当在没有被核检索的情况下逐出高速缓存行时才递增Le

示例21包括示例16的共享资源监视器,其中高速缓存计数器是被配置为对少于所有高速缓存事务的事务进行采样的采样计数器。

示例22包括示例21的共享资源监视器,其中高速缓存计数器被配置为对所有高速缓存事务的大约2%进行采样。

示例23包括示例21的共享资源监视器,其中策略电路在策略窗口之后重置LaLpLe

示例24包括示例21的共享资源监视器,其中高速缓存监视电路将所有采样的事务直接分配给高速缓存。

示例25包括示例24的共享资源监视器,其中高速缓存监视电路根据策略分配间隙高速缓存事务。

示例26包括示例16的共享资源监视器,其中确定直接写策略包括确定Lp近似等于La并且Le处于或接近零,确定高速缓存未被过度利用,并且确定用于将传入数据写到直接可写高速缓存的直接写策略。

示例27包括示例16的共享资源监视器,其中确定直接策略包括确定Lp基本上小于La并且Le基本上是非零的,确定高速缓存被过度使用,以及确定直接写策略以将传入数据直接到存储器。

示例28包括示例16的共享资源监视器,其中***设备是以太网网络接口。

示例29包括示例16的共享资源监视器,其中***设备是高速缓存一致的核到核网络接口。

示例30包括示例29的共享资源监视器,其中高速缓存一致的核到核网络接口是Omni-Path或Omni-Path的衍生物。

示例31包括示例16的共享资源监视器,其中***设备是***部件互连快速(PCIe)互连上的高速缓存一致的核到核网络接口。

示例32包括知识产权(IP)块,其包括示例1-31中任一项的共享资源监视器。

示例33包括一种现场可编程门阵列(FPGA),其包括示例1-31中任一项的共享资源监视器。

示例34包括一种集成电路(IC),其包括示例1-31中任一项的共享资源监视器。

示例35包括一种包括示例34的IC的微处理器。

示例36包括一种片上系统(SoC),其包括示例35的微处理器。

示例37包括一种提供设备直接输入/输出(DDIO)的计算机实现的方法,包括:通信地耦合到共享的最后级高速缓存(LLC),由多个核共享的LLC;通信地耦合到***设备;当高速缓存行被分配到LLC中时递增高速缓存计数器La;当核处理高速缓存行并且从高速缓存解除分配高速缓存行时递增高速缓存计数器Lp;当高速缓存行从直接可写高速缓存被逐出到存储器时递增高速缓存计数器Le;并且根据高速缓存计数器为LLC设置直接写策略。

示例38包括示例37的方法,其中LLC是非包括性高速缓存的成员。

示例39包括示例37的方法,还包括仅在高速缓存行被逐出而没有被核检索时递增Le

示例40包括示例37的方法,还包括根据采样算法递增高速缓存计数器,包括对少于所有高速缓存事务的事务进行采样。

示例41包括示例40的方法,还包括对所有高速缓存事务的大约2%进行采样。

示例42包括示例37的方法,还包括在策略窗口之后重置LaLpLe

示例43包括示例37的方法,其中高速缓存监视电路将所有采样的事务直接分配给高速缓存。

示例44包括示例24的共享资源监视器,还包括根据策略分配间隙高速缓存事务。

示例45包括示例37的方法,其中确定直接写策略包括确定Lp近似等于La并且Le处于或接近零,确定高速缓存未被过度利用,并确定直接写策略以将传入数据写到直接可写高速缓存。

示例46包括示例37的方法,其中确定直接策略包括确定Lp基本上小于La并且Le基本上是非零的,确定高速缓存被过度利用,以及确定直接写策略以将传入数据直接写到存储器。

示例47包括示例37的方法,其中***设备是以太网网络接口。

示例48包括示例37的方法,其中***设备是高速缓存一致的核到核网络接口。

示例49包括示例48的方法,其中高速缓存一致的核到核网络接口是Omni-Path或Omni-Path的衍生物。

示例50包括示例37的方法,其中***设备是***部件互连快速(PCIe)互连上的高速缓存一致的核到核网络接口。

示例51包括一种装置,其包括用于执行示例37-50中任一项的方法的装置。

示例52包括示例51的装置,其中装置包括计算系统。

示例53包括示例52的装置,其中计算系统包括中央处理器单元(CPU),其包括多个核和共享资源监视器。

示例54包括一种共享资源监视器,其包括执行示例37-50中任一项的方法的电路。

示例55包括一种知识产权(IP)块,其包括示例54的共享资源监视器。

示例56包括一种现场可编程门阵列(FPGA),其包括示例54的共享资源监视器。

示例57包括一种集成电路(IC),其包括示例54的共享资源监视器。

示例58包括一种包括示例57的IC的微处理器。

示例59包括一种片上系统(SoC),其包括示例58的微处理器。

示例60包括一个或多个有形的、非暂时性计算机可读介质,其上具有存储于其上的、用于使装置提供共享资源监视器的指令,该共享资源监视器包括:通信地耦合到核的接口;通信地耦合到高速缓存的接口;通信地耦合到***设备的接口;当高速缓存行被分配到高速缓存中时递增的高速缓存计数器La;当核处理高速缓存行并且从高速缓存解除分配高速缓存行时递增的高速缓存计数器Lp;当高速缓存行从直接可写高速缓存被逐出到存储器时递增的高速缓存计数器Le;以及根据高速缓存计数器确定直接写策略的策略电路。

示例61包括示例60的一个或多个有形的、非暂时性计算机可读介质,其中高速缓存是多级高速缓存的直接可写高速缓存。

示例62包括示例61的一个或多个有形的、非暂时性计算机可读介质,其中直接可写高速缓存是最后级高速缓存。

示例63包括示例61的一个或多个有形的、非暂时性计算机可读介质,其中多级高速缓存是非包括性高速缓存。

示例64包括示例60的一个或多个有形的、非暂时性计算机可读介质,其中,仅当在没有被核检索的情况下逐出高速缓存行时才递增Le

示例65包括示例60的一个或多个有形的、非暂时性计算机可读介质,其中高速缓存计数器是被配置为对少于所有高速缓存集合的集合进行采样的采样计数器。

示例66包括示例65的一个或多个有形的、非暂时性计算机可读介质,其中高速缓存计数器被配置为对所有高速缓存集合的大约2%进行采样。

示例67包括示例65的一个或多个有形的、非暂时性计算机可读介质,其中策略电路在策略窗口之后重置LaLpLe

示例68包括示例65的一个或多个有形的、非暂时性计算机可读介质,其中高速缓存监视电路将所有采样的事务直接分配给高速缓存。

示例69包括示例68的一个或多个有形的、非暂时性计算机可读介质,其中高速缓存监视电路用于根据策略分配间隙高速缓存事务。

示例70包括示例60的一个或多个有形的、非暂时性计算机可读介质,其中确定直接写策略包括确定Lp近似等于La并且Le处于或接近零,确定高速缓存未被过度利用,并确定将传入数据写到直接可写高速缓存的直接写策略。

示例71包括示例60的一个或多个有形的、非暂时性计算机可读介质,其中确定直接策略包括确定Lp基本上小于La并且Le基本上是非零的,确定高速缓存被过度利用,以及确定直接写策略以将传入数据直接写到存储器。

示例72包括示例60的一个或多个有形的、非暂时性计算机可读介质,其中***设备是以太网网络接口。

示例73包括示例60的一个或多个有形的、非暂时性计算机可读介质,其中***设备是高速缓存一致的核到核网络接口。

示例74包括示例73的一个或多个有形的、非暂时性计算机可读介质,其中高速缓存一致的核到核网络接口是Omni-Path或Omni-Path的衍生物。

示例75包括示例60的一个或多个有形的、非暂时性计算机可读介质,其中***设备是***部件互连快速(PCIe)互连上的高速缓存一致的核到核网络接口。

示例76包括示例60-75中任一项的一个或多个有形的、非暂时性计算机可读介质,其中指令包括用于对知识产权(IP)块进行编程的指令。

示例77包括示例60-75中任一项的一个或多个有形的、非暂时性计算机可读介质,其中指令包括用于对现场可编程门阵列(FPGA)进行编程的指令。

示例78包括示例60-75中任一项的一个或多个有形的、非暂时性计算机可读介质,其中指令包括用于对集成电路(IC)进行编程的指令。

示例79包括示例78的一个或多个有形的、非暂时性计算机可读介质,其中IC包括处理器。

示例80包括示例60-75中任一项的一个或多个有形的、非暂时性计算机可读介质,其中指令包括用于对片上系统(SoC)进行编程的指令。

46页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:存储器系统以及用于访问存储器系统的方法

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!