用于闭环动态资源分配控制框架的装置和方法与流程

文档序号:28210370发布日期:2021-12-28 20:23阅读:97来源:国知局
用于闭环动态资源分配控制框架的装置和方法与流程
用于闭环动态资源分配控制框架的装置和方法
1.

背景技术:

技术领域
2.本发明的实施例总体上涉及计算机处理器领域。更特别地,实施例涉及用于闭环动态资源分配控制框架的装置和方法。
3.相关技术的描述服务质量是在计算机系统中实施基于优先级的公平性的重要机制,并且可以通过在共享缓冲器和队列、基于分组的虚拟通道等中分配专用路径或插槽来实现。服务质量挂钩(hook)如今在高速缓存、存储器子系统队列、存储器控制器和交换卡中使用。
4.英特尔
®
资源导向器技术
®
(rdt)提供了控制应用、虚拟机(vm)和容器使用共享资源(诸如,末级缓存(llc)和存储器带宽)的方式的能力。rdt帮助工作负载整合、性能一致性和动态服务递送,从而帮助跨数据中心和联网域来提高效率和灵活性,同时降低总体的拥有总成本(tco)。
附图说明
5.结合以下附图,从下面的详细描述中可以获得对本发明的更好理解,其中:图1a和图1b是图示了根据本发明的实施例的通用矢量友好指令格式及其指令模板的框图;图2a

c是图示了根据本发明的实施例的示例性vex指令格式的框图;图3是根据本发明的一个实施例的寄存器架构的框图;以及图4a是图示了根据本发明的实施例的示例性有序取指、解码、回退(retire)流水线和示例性寄存器重命名、无序发布/执行流水线两者的框图;图4b是图示了根据本发明的实施例的要在处理器中包括的有序取指、解码、回退核和示例性寄存器重命名、无序发布/执行架构核两者的框图;图5a是单个处理器核连同其到管芯上互连网络的连接的框图;图5b图示了根据本发明的实施例的图5a中的处理器核的部分的扩展视图;图6是根据本发明的实施例的单核处理器和具有集成存储器控制器和图形控制器的多核处理器的框图;图7图示了根据本发明的一个实施例的系统的框图;图8图示了根据本发明的实施例的第二系统的框图;图9图示了根据本发明的实施例的第三系统的框图;图10图示了根据本发明的实施例的片上系统(soc)的框图;图11图示了根据本发明的实施例的对比软件指令转换器的使用的框图,该软件指令转换器用以将源指令集中的二进制指令转换成目标指令集中的二进制指令;图12a

b图示了其中规则集合基于第二资源的使用来指定第一资源的分配的实施例;
图13图示了包括资源监测器和实施电路的一个实施例;图14图示了根据本发明的一个实施例的方法;图15a

b图示了向最大努力工作负载的潜在资源分配;图16图示了高优先级工作负载的周期性吞吐量;图17a

c图示了最大努力工作负载在不同条件下的指令/秒,该不同条件包括本发明的一个实施例的实现方式(图17b);图18图示了用于将机器学习用于处理器和/或系统中的资源分配的架构;图19图示了其中收集并且评估遥测数据以进行资源分配优化的另一个架构;图20图示了其中基于分组丢失数据来执行强化学习的具体实现方式;图21图示了根据本发明的一个实施例的方法;图22图示了面部识别流水线的示例;图23图示了用于在分布式节点架构上执行面部识别的架构;图24图示了其中基于性能标记来执行资源管理的一个实施例;图25图示了用于基于预期状态和当前状态来分配资源的调度器/资源管理器的一个实施例;图26图示了根据本发明的一个实施例的方法;以及图27图示了根据本发明的一个实施例的方法。
具体实施方式
6.在以下描述中,出于解释的目的,阐述了许多具体的细节以便提供对以下所述的本发明的实施例的透彻理解。然而,对于本领域技术人员而言将清楚的是,可以在不具有这些具体细节中的一些具体细节的情况下实践本发明的实施例。在其他实例中,以框图的形式示出了公知的结构和设备以避免模糊本发明的实施例的基本原理。
7.示例性处理器架构、指令格式和数据类型指令集包括一个或多个指令格式。给定的指令格式定义各种字段(位数、位的位置)来除其他之外还指定要实行的操作(操作码)以及要对其实行操作的(一个或多个)操作数。一些指令格式通过指令模板(或子格式)的定义被进一步分解。例如,给定指令格式的指令模板可以被定义为具有指令格式的字段的不同子集(所包括的字段通常以相同的次序,但是至少一些具有不同的位位置,因为所包括的字段较少)和/或被定义为具有不同解释的给定字段。因此,isa的每个指令使用给定的指令格式(以及如果被定义的话,在那个指令格式的一个给定指令模板中)来表达,并且包括用于指定操作和操作数的字段。例如,示例性add指令具有特定的操作码和指令格式,该指令格式包括操作码字段以指定该操作码和操作数字段选择操作数(源1/目的地和源2);并且该add指令在指令流中的出现将在选择特定操作数的操作数字段中具有特定内容。
8.本文中描述的(一个或多个)指令的实施例可以以不同的格式来体现。附加地,下面详述了示例性系统、架构和流水线。(一个或多个)指令的实施例可以在这种系统、架构和流水线上执行,但不限于详述的那些。
9.通用矢量友好指令格式矢量友好指令格式是适合于矢量指令的指令格式(例如,存在特定于矢量操作的
某些字段)。虽然描述了其中通过矢量友好指令格式支持矢量和标量操作两者的实施例,但是替代实施例仅使用矢量操作矢量友好指令格式。
10.图1a

1b是图示根据本发明的实施例的通用矢量友好指令格式及其指令模板的框图。图1a是图示了根据本发明的实施例的通用矢量友好指令格式及其类别a指令模板的框图;而图1b是图示了根据本发明的实施例的通用矢量友好指令格式及其类别b指令模板的框图。具体地,通用矢量友好指令格式100针对其定义了类别a和类别b指令模板,它们两者包括无存储器访问105指令模板和存储器访问120指令模板。在矢量友好指令格式的上下文中的术语通用是指指令格式不被绑定到任何特定的指令集。
11.虽然将描述其中矢量友好指令格式支持以下内容的本发明的实施例:具有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字节矢量操作数)。
12.图1a中的类别a指令模板包括:1)在无存储器访问105指令模板内,示出了无存储器访问、完全舍入控制类型操作110指令模板和无存储器访问、数据变换类型操作115指令模板;以及2)在存储器访问120指令模板内,示出了存储器访问、瞬态725指令模板和存储器访问、非瞬态730指令模板。图1b中的类别b指令模板包括:1)在无存储器访问105指令模板内,示出了无存储器访问、写入掩码控制、部分舍入控制类型操作112指令模板和无存储器访问、写入掩码控制、vsize类型操作117指令模板;以及2)在存储器访问120指令模板内,示出了存储器访问、写入掩码控制127指令模板。
13.通用矢量友好指令格式100包括下面以图1a

1b中图示的次序列出的以下字段。
14.格式字段140——该字段中的特定值(指令格式标识符值)唯一地标识矢量友好指令格式,并因此唯一地标识在指令流中的矢量友好指令格式中的指令的出现。照此,该字段在以下意义上是可选的,即该字段对于仅具有通用矢量友好指令格式的指令集是不需要的。
15.基本操作字段142——其内容区分不同的基本操作。
16.寄存器索引字段144——其内容直接或通过地址生成来指定源操作数和目的地操作数的位置,无论它们是在寄存器中还是在存储器中。这些包括足够数量的位以从pxq(例如32x512、16x128、32x1024、64x1024)寄存器文件中选择n个寄存器。虽然在一个实施例中,n可以多达三个源和一个目的地寄存器,但是替代实施例可以支持更多或更少的源和目的地寄存器(例如,可以支持多达两个源,其中这些源之一也充当目的地,可以支持多达三个源,其中这些源之一也充当目的地,可以支持多达两个源和一个目的地)。
17.修饰符字段146——其内容对通用矢量指令格式中指定了存储器访问的指令与未指定存储器访问的指令的出现进行区分;也就是说,在无存储器访问105指令模板与存储器访问120指令模板之间进行区分。存储器访问操作读取和/或写入存储器层次结构(在一些
情况下使用寄存器中的值来指定源和/或目的地地址),而非存储器访问操作不这样操作(例如,源和目的地是寄存器)。虽然在一个实施例中,该字段还在三种不同的方式之间进行选择以执行存储器地址计算,但是替代实施例可以支持更多、更少或不同的方式来执行存储器地址计算。
18.扩充操作字段150——其内容除了基本操作之外还区分多种不同操作中的哪一个要被执行。该字段是上下文特定的。在本发明的一个实施例中,将该字段划分成类别字段168、阿尔法字段152和贝塔字段154。扩充操作字段150允许不是在2、3或4个指令中而是在单个指令中执行公共操作群组。
19.缩放字段160——其内容允许缩放用于存储器地址生成(例如,用于使用2
scale
*索引+基址的地址生成)的索引字段的内容。
20.位移字段162a——其内容被用作存储器地址生成的部分(例如,用于使用2
scale
*索引+基址+位移的地址生成)。
21.位移因子字段162b(要注意的是,位移字段162a在位移因子字段162b的正上方的并置指示使用了一个或另一个)——其内容被用作地址生成的部分;它指定了要按照存储器访问大小(n)——其中n是存储器访问中的字节数量——来缩放的位移因子(例如,用于使用2
scale
*索引+基址+缩放位移的地址生成)。冗余低阶位被忽略,并且因此位移因子字段的内容乘以存储器操作数总大小(n),以便生成在计算有效地址中使用的最终位移。n的值由处理器硬件在运行时基于完全操作码字段174(稍后在本文中描述)和数据操纵字段154c来确定。位移字段162a和位移因子字段162b在以下意义上是可选的:它们不用于无存储器访问105指令模板和/或不同的实施例可以仅实现两个中的一个或者两个都不实现。
22.数据元素宽度字段164——其内容区分多个数据元素宽度中的哪一个要被使用(在一些实施例中针对所有指令;在其他实施例中仅针对一些指令)。该字段在以下意义上是可选的:如果仅支持一个数据元素宽度和/或使用操作码的某个方面支持数据元素宽度,则它是不需要的。
23.写入掩码字段170——其内容以每个数据元素位置为基础控制目的地矢量操作数中的那个数据元素位置是否反映基本操作和扩充操作的结果。类别a指令模板支持合并

写入掩码,而类别b指令模板支持合并

写入掩码和归零

写入掩码两者。当合并时,矢量掩码允许在执行(由基本操作和扩充操作指定的)任何操作期间保护目的地中的任何元素集合免于更新;在另一个实施例中,保留其中对应的掩码位具有0的目的地的每个元素的旧值。相比之下,当归零时,矢量掩码允许在执行(由基本操作和扩充操作指定的)任何操作期间将目的地中的任何元素集合归零;在一个实施例中,当对应的掩码位具有0值时,目的地的元素被设置为0。该功能性的子集是控制正在执行的操作的矢量长度(即被修改的元素的范围,从第一个到最后一个)的能力;然而,被修改的元素不必是连续的。因此,写入掩码字段770允许部分矢量操作,包括加载、存储、算术、逻辑等。虽然描述了其中写入掩码字段170的内容选择包含要被使用的写入掩码的多个写入掩码寄存器中的一个(并且因此写入掩码字段170的内容间接标识要被执行的掩码)的本发明的实施例,但是替代实施例取而代之或附加地允许掩码写入字段170的内容直接指定要被执行的掩码。
24.立即数字段172——其内容允许立即数的规范。该字段在以下意义上是可选的,即它在不支持立即数的通用矢量友好格式的实现中是不存在的并且它在不使用立即数的指
令中是不存在的。
25.类别字段168——其内容在不同类别的指令之间进行区分。参考图1a

b,该字段的内容在类别a和类别b指令之间选择。在图1a

b中,圆角方形用于指示在字段中存在特定值(例如,图1a

b中分别用于类别字段168的类别a 168a和类别b 168b)。
26.类别a的指令模板在类别a的非存储器访问105指令模板的情况下,
ɑ
字段152被解释为rs字段152a,其内容区分要执行不同的扩充操作类型中的哪一个(例如,舍入152a.1和数据变换152a.2分别被指定用于无存储器访问舍入类型操作110和无存储器访问数据变换类型操作115指令模板),而贝塔字段154区分指定类型的哪个操作将要被执行。在无存储器访问105指令模板中,缩放字段160、位移字段162a和位移缩放字段162b不存在。
27.无存储器访问指令模板——完全舍入控制类型操作在无存储器访问完全舍入控制类型操作110指令模板中,贝塔字段154被解释为舍入控制字段154a,(一个或多个)其内容提供静态舍入。虽然在所描述的本发明的实施例中,舍入控制字段154a包括抑制所有浮点异常(sae)字段156和舍入操作控制字段158,但是替代实施例可以支持可以将这些概念均编码到同一字段中或者仅具有这些概念/字段中的一个或另一个(例如,可以仅具有舍入操作控制字段158)。
28.sae字段156——其内容区分是否禁用异常事件报告;当sae字段156的内容指示抑制被启用时,给定指令不报告任何类型的浮点异常标志,并且也不引发任何浮点异常处理程序。
29.舍入操作控制字段158——其内容区分要执行舍入操作群组中的哪一个(例如,向上舍入、向下舍入、朝向零舍入和舍入到最接近)。因此,舍入操作控制字段158允许以每个指令为基础改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段150的内容覆写该寄存器值。
30.无存储器访问指令模板——数据变换类型操作在无存储器访问数据变换类型操作115指令模板中,贝塔字段154被解释为数据变换字段154b,其内容区分多个数据变换中的哪一个要被执行(例如,没有数据变换、调配、广播)。
31.在类别a的存储器访问120指令模板的情况下,阿尔法字段152被解释为逐出提示字段152b,其内容区分要使用逐出提示中的哪一个(在图1a中,瞬态152b.1和非瞬态152b.2分别被指定用于存储器访问瞬态125指令模板和存储器访问非瞬态130指令模板),而贝塔字段154被解释为数据操纵字段154c,其内容区分要执行多个数据操纵操作(也称为基元)中的哪一个(例如,无操纵;广播;对源的上转换;以及对目的地的下转换)。存储器访问120指令模板包括缩放字段160以及可选地包括位移字段162a或位移缩放字段162b。
32.矢量存储器指令利用转换支持来执行矢量从存储器加载和矢量存储到存储器。与利用常规矢量指令一样,矢量存储器指令以逐数据元素的方式将数据从/向存储器传送,其中实际传送的元素由被选择作为写入掩码的矢量掩码的内容来指定。
33.存储器访问指令模板——瞬态瞬态数据是可能足够很快被重新使用以从高速缓存中受益的数据。然而,这是一个提示,并且不同的处理器可以以不同的方式来实现它,包括完全忽略该提示。
34.存储器访问指令模板——非瞬态非瞬态数据是不太可能足够很快被重新使用以从第一级高速缓存中的高速缓存中受益的数据,并且应当被给予优先权以供驱逐。然而,这是一个提示,并且不同的处理器可以以不同的方式来实现它,包括完全忽略该提示。
35.类别b的指令模板在类别b的指令模板的情况下,阿尔法字段152被解释为写入掩码控制(z)字段152c,其内容区分由写入掩码字段170控制的写入掩蔽应当是合并还是归零。
36.在类别b的非存储器访问105指令模板的情况下,贝塔字段154的部分被解释为rl字段157a,其内容区分要执行不同扩充操作类型中的哪一个(例如,舍入157a.1和矢量长度(vsize)157a.2分别被指定用于无存储器访问、写入掩码控制、部分舍入控制类型操作112指令模板和无存储器访问、写入掩码控制、vsize类型操作117指令模板),而贝塔字段154的其余部分区分要执行指定类型的操作的哪一个。在无存储器访问105指令模板中,缩放字段160、位移字段162a和位移缩放字段162b不存在。
37.在无存储器访问、写入掩码控制、部分舍入控制类型操作110指令模板中,贝塔字段154的其余部分被解释为舍入操作字段159a,并且异常事件报告被禁用(给定指令不报告任何种类的浮点异常标志并且不引发任何浮点异常处理程序)。
38.舍入操作控制字段159a——就像舍入操作控制字段158一样, 其内容区分要执行舍入操作群组中的哪一个(例如,向上舍入、向下舍入、朝向零舍入和舍入到最接近)。因此,舍入操作控制字段159a允许以每个指令为基础改变舍入模式。在其中处理器包括用于指定舍入模式的控制寄存器的本发明的一个实施例中,舍入操作控制字段150的内容覆写该寄存器值。
39.在无存储器访问、写入掩码控制、vsize类型操作117指令模板中,贝塔字段154的其余部分被解释为矢量长度字段159b,其内容区分多个数据矢量长度中的哪一个要在其上被执行(例如,128、256或512字节)。
40.在类别b存储器访问120指令模板的情况下,贝塔字段154的部分被解释为广播字段157b,其内容区分是否要执行广播类型数据操纵操作,而贝塔字段154的其余部分被解释为矢量长度字段159b。存储器访问120指令模板包括缩放字段160以及可选地包括位移字段162a或位移缩放字段162b。
41.关于通用矢量友好指令格式100,示出了包括格式字段140、基本操作字段142和数据元素宽度字段164的完全操作码字段174。虽然示出了其中完全操作码字段174包括所有这些字段的一个实施例,但是在不支持所有这些字段的实施例中完全操作码字段174包括少于所有这些字段。完全操作码字段174提供操作代码(操作码)。
42.扩充操作字段150、数据元素宽度字段164和写入掩码字段170允许在通用矢量友好指令格式下以每个指令为基础来指定这些特征。
43.写入掩码字段和数据元素宽度字段的组合创建了类型的指令,因为它们允许基于不同的数据元素宽度来应用掩码。
44.在类别a和类别b内找到的各种指令模板在不同情形中是有益的。在本发明的一些实施例中,处理器内的不同处理器或不同核可以仅支持类别a、仅支持类别b或支持这两个类别。例如,旨在用于通用计算的高性能通用无序核可以仅支持类别b,主要旨在用于图形
和/或科学(吞吐量)计算的核可以仅支持类别a,并且旨在用于两者的核可以这两个类别都支持(当然,具有来自这两个类别的模板和指令的一些混合的核,但并非来自这两个类别的所有模板和指令都在本发明的范围内)。另外,单个处理器可以包括多个核,所有这些核都支持相同的类别,或者其中不同的核支持不同的类别。例如,在具有单独的图形和通用核的处理器中,主要旨在用于图形和/或科学计算的图形核之一可以仅支持类别a,而一个或多个通用核可以是具有旨在用于仅支持类别b的通用计算的无序执行和寄存器重命名的高性能通用核。不具有单独的图形核的另一个处理器可以包括一个或多个通用有序或无序核,其支持类别a和类别b两者。当然,来自一个类别的特征也可以在本发明的不同实施例中的其他类别中被实现。以高级语言编写的程序将被放置(例如,即时编译或静态编译)成多种不同的可执行形式,包括:1)仅具有由目标处理器支持的(一个或多个)类别的指令以用于执行的形式;或者2)具有使用所有类别的指令的不同组合编写的替代例程并且具有基于由当前正在执行代码的处理器所支持的指令来选择要执行的例程的控制流程代码的形式。
45.vex指令格式vex编码允许指令具有多于两个操作数,并且允许simd矢量寄存器比28位更长。vex前缀的使用提供了三个(或更多个)操作数语法。例如,先前的双操作数指令实行了诸如a=a+b的操作,其覆写了源操作数。vex前缀的使用使得操作数能够实行诸如a=b+c的非破坏性的操作。
46.图2a图示了示例性avx指令格式,其包括vex前缀202、实操作码字段230、mod r/m字节240、sib字节250、位移字段262以及imm8 272。图2b图示了来自图2a中的哪些字段构成了全操作码字段274以及基本操作字段241。图2c图示了来自图2a中的哪些字段构成了寄存器索引字段244。
47.vex前缀(字节0

2)202是以三字节形式编码的。第一字节是格式字段290(vex字节0,位[7:0]),其包含显式c4字节值(用于区分c4指令格式的唯一的值)。第二

第三字节(vex字节1

2)包括提供特定能力的多个位字段。具体来说,rex字段205(vex字节1,位[7

5])包括vex.r位字段(vex字节1,位[7]

r)、vex.x位字段(vex字节1,位[6]

x)以及vex.b位字段(vex字节1,位[5]

b)。指令的其他字段如本领域中已知的那样编码寄存器索引的三个较低位(rrr、xxx和bbb),使得可以通过添加vex.r、vex.x和vex.b来形成rrrr、xxxx和bbbb。操作码映射字段215(vex字节1,位[4:0]

mmmmm)包括用以编码隐含的前导操作码字节的内容。w字段264(vex字节2,位[7]

w)是由标记vex.w表示的,并且取决于指令地提供不同的功能。vex.vvvv 220(vex字节2,位[6:3]

vvvv)的作用可以包括以下:1)vex.vvvv编码第一源寄存器操作数,其是以反转(1的补码)形式指定的,并且对于具有两个或更多个源操作数的指令有效;2)vex.vvvv编码目的地寄存器操作数,其是以1的补码形式指定的,用于某些矢量移位;或者3)vex.vvvv不编码任何操作数,该字段被预留并应当包含1111b。如果vex.l 268大小字段(vex字节2,位[2]

l)=0,则其指示28位矢量;如果vex.l=1,则其指示256位矢量。前缀编码字段225(vex字节2,位[1:0]

pp)为基本操作字段提供附加的位。
[0048]
实操作码字段230(字节3)也被称为操作码字节。在该字段中指定操作码的部分。
[0049]
mod r/m字段240(字节4)包括mod字段242(位[7

6])、reg字段244(位[5

3])以及r/m字段246(位[2

0])。reg字段244的作用可以包括以下内容:编码目的地寄存器操作数或源寄存器操作数(rrrr中的rrr),或者被视为操作码扩展并且不用于编码任何指令操作数。
r/m字段246的作用可以包括以下内容:对引用存储器地址的指令操作数进行编码或者对目的地寄存器操作数或源寄存器操作数进行编码。
[0050]
缩放、索引、基址(sib)——缩放字段250(字节5)的内容包括ss252(位[7

6]),其用于存储器地址生成。先前已经关于寄存器索引xxxx和bbbb引述了sib.xxx 254(位[5

3])和sib.bbb 256(位[2

0])的内容。
[0051]
位移字段262和立即数字段(imm8)272包含数据。
[0052]
示例性寄存器架构图3是根据本发明的一个实施例的寄存器架构300的框图。在所图示的实施例中,存在具有512位宽的32个矢量寄存器310;这些寄存器被参考为zmm0到zmm31。将较低6个zmm寄存器的较低阶256位叠覆在寄存器ymm0

15上。将较低6个zmm寄存器的较低阶128位(ymm寄存器的较低阶128位)叠覆在寄存器xmm0

15上。
[0053]
通用寄存器325——在所图示的实施例中,存在十六个64位通用寄存器,其连同现有x86寻址模式一起使用来寻址存储器操作数。这些寄存器由名称rax、rbx、rcx、rdx、rbp、rsi、rdi、rsp和r8至r15来标记。
[0054]
在其上别名为mmx打包整数平面寄存器文件350的标量浮点堆栈寄存器文件(x87堆栈)345——在所图示的实施例中,x87堆栈是被用来使用x87指令集扩展对32/64/80位浮点数据执行标量浮点操作的八元素堆栈;而mmx寄存器被用来对64位打包整数数据执行操作,以及为mmx和xmm寄存器之间执行的某些操作保持操作数。
[0055]
本发明的替代实施例可以使用更宽或更窄的寄存器。附加地,本发明的替代实施例可以使用更多、更少或不同的寄存器文件和寄存器。
[0056]
示例性核架构、处理器和计算机架构可以以不同的方式、为了不同的目的和在不同的处理器中实现处理器核。例如,这种核的实现方式可以包括:1)旨在用于通用计算的通用有序核;2)旨在用于通用计算的高性能通用无序核;3)主要旨在用于图形和/或科学(吞吐量)计算的特殊用途核。不同处理器的实现方式可以包括:1)包括旨在用于通用计算的一个或多个通用有序核和/或旨在用于通用计算的一个或多个通用无序核的cpu;和2)包括主要旨在用于图形和/或科学(吞吐量)的一个或多个特殊用途核的协处理器。这种不同的处理器导致不同的计算机系统架构,其可以包括:1)在与cpu分离的芯片上的协处理器;2)在与cpu相同的封装中的单独管芯上的协处理器;3)与cpu相同的管芯上的协处理器(在这种情况下,这种协处理器有时被称为特殊用途逻辑、诸如集成图形和/或科学(吞吐量)逻辑,或者称为特殊用途的核);以及4)片上系统,其可以在相同管芯上包括所描述的cpu(有时被称为(一个或多个)应用核或(一个或多个)应用处理器)、上述协处理器以及附加功能性。接下来描述示例性核架构,随后描述示例性处理器和计算机架构。在本文中详述了包括示例性核、处理器等的电路(单元)。
[0057]
示例性核架构图4a是图示了根据本发明实施例的示例性有序流水线和示例性寄存器重命名、无序发布/执行流水线两者的框图。图4b是图示了根据本发明实施例的要在处理器中包括的有序架构核的示例性实施例和示例性寄存器重命名、无序发布/执行架构核两者的框图。图4a

b中的实线框图示了有序流水线和有序核,而虚线框的可选添加图示了寄存器重命名、无序发布/执行流水线和核。考虑到有序方面是无序方面的子集,所以将描述无序方面。
[0058]
在图4a中,处理器流水线400包括取指阶段402、长度解码阶段404、解码阶段406、分配阶段408、重命名阶段410、调度(也被称为分发或发布)阶段412、寄存器读取/存储器读取阶段414、执行阶段416、回写/存储器写入阶段418、异常处理阶段422以及提交阶段424。
[0059]
图4b图示了包括耦合到执行引擎单元450的前端单元430的处理器核490,并且执行引擎单元450和前端单元430两者都耦合到存储器单元470。核490可以是精简指令集计算(risc)核、复杂指令集计算(cisc)核、超长指令字(vliw)核或者混合的或可替代的核类型。作为又一个选项,核490可以是特殊用途核,诸如例如网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(gpgpu)核、图形核等等。
[0060]
前端单元430包括耦合到指令高速缓存单元434的分支预测单元432,所述指令高速缓存单元434耦合到指令转换后备缓冲器(tlb)436,所述指令转换后备缓冲器(tlb)436耦合到指令取指单元438,所述指令取指单元438耦合到解码单元440。解码单元440(或解码器)可以对指令进行解码,并且生成作为输出的一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号,它们是从原始指令解码的,或者以其他方式反映原始指令或源自原始指令。解码单元440可以使用各种不同的机制来实现。合适的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(pla)、微代码只读存储器(rom)等等。在一个实施例中,核490包括微代码rom或存储用于某些宏指令(例如,在解码单元440中或以其他方式在前端单元430内)的微代码的其他介质。解码单元440耦合到执行引擎单元450中的重命名/分配器单元452。
[0061]
执行引擎单元450包括耦合到回退单元454以及一个或多个调度器单元456的集合的重命名/分配器单元452。(一个或多个)调度器单元456表示任何数量的不同调度器,包括预留站、中央指令窗口等。(一个或多个)调度器单元456耦合到(一个或多个)物理寄存器文件单元458。(一个或多个)物理寄存器文件单元458中的每一个表示一个或多个物理寄存器文件,其中的不同物理寄存器文件存储一个或多个不同的数据类型,诸如标量整数、标量浮点、打包整数、打包浮点、矢量整数、矢量浮点数、状态(例如,作为要被执行的下一条指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器文件单元458包括矢量寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩码寄存器和通用寄存器。(一个或多个)物理寄存器文件单元458被回退单元454重叠以图示其中可以实现寄存器重命名和无序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)回退寄存器文件;使用(一个或多个)未来的文件、(一个或多个)历史缓冲器和(一个或多个)回退寄存器文件;使用寄存器映射和寄存器池等等)。回退单元454和(一个或多个)物理寄存器文件单元458耦合到(一个或多个)执行集群460。(一个或多个)执行集群460包括一个或多个执行单元的集合462和一个或多个存储器访问单元的集合464。执行单元462可以执行各种操作(例如移位、加法、减法、乘法)并且针对各种类型的数据(例如标量浮点、打包整数、打包浮点、矢量整数、矢量浮点)。虽然一些实施例可以包括专用于特定功能或功能集的多个执行单元,但是其他实施例可以包括仅一个执行单元或全部都执行所有功能的多个执行单元。(一个或多个)调度器单元456、(一个或多个)物理寄存器文件单元458和(一个或多个)执行集群460被示出为可能是复数个的,因为某些实施例创建用于某些类型的数据/操作的单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/矢量整数/矢量浮点流水线和/或存储器访问流水线,每个都具有其自己的调度器单元、(一个
或多个)物理寄存器文件单元和/或执行集群——并且在单独的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(一个或多个)存储器访问单元464的某些实施例)。还应当理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行并且其余顺序发布/执行。
[0062]
存储器访问单元464的集合耦合到存储器单元470,存储器单元470包括耦合到数据高速缓存单元474的数据tlb单元472,数据高速缓存单元474耦合到2级(l2)高速缓存单元476。在一个示例性实施例中,存储器访问单元464可以包括加载单元、存储地址单元和存储数据单元,其中的每一个耦合到存储器单元470中的数据tlb单元472。指令高速缓存单元434进一步耦合到存储器单元470中的2级(l2)高速缓存单元476。l2高速缓存单元476耦合到一个或多个其他级别的高速缓存并且最终耦合到主存储器。
[0063]
作为示例,示例性寄存器重命名、无序发布/执行核架构可以实现流水线400如下:1)指令取指438执行取指和长度解码阶段402和404;2)解码单元440执行解码阶段406;3)重命名/分配器单元452执行分配阶段408和重命名阶段410;4)(一个或多个)调度器单元456执行调度阶段412;5)(一个或多个)物理寄存器文件单元458和存储器单元470执行寄存器读取/存储器读取阶段414;执行集群460执行执行阶段416;6)存储器单元470和(一个或多个)物理寄存器文件单元458执行回写/存储器写入阶段418;7)在异常处理阶段422中可以涉及各种单元;以及8)回退单元454和(一个或多个)物理寄存器文件单元458执行提交阶段424。
[0064]
核490可以支持一个或多个指令集(例如,x86指令集(具有已经被添加有更新版本的一些扩展);加利福尼亚州森尼维尔(sunnyvale)的mips科技的mips指令集;加利福尼亚州森尼维尔的arm控股公司的arm指令集(具有诸如neon之类的可选的附加扩展)),包括本文中描述的(一个或多个)指令。在一个实施例中,核490包括用来支持打包数据指令集扩展(例如avx1、avx2)的逻辑,由此允许使用打包数据来执行被许多多媒体应用使用的操作。
[0065]
应当理解的是,核可以支持多线程(执行操作或线程的两个或更多并行集合)并且可以以多种方式这么做,所述多种方式包括时间切片多线程、同时多线程(在单个物理核为线程中的每一个提供逻辑核的情况下,该物理核同时是多线程)或它们的组合(例如,其后诸如在英特尔
®
超线程技术中的时间切片取指和解码以及同时多线程)。
[0066]
虽然在无序执行的上下文中描述了寄存器重命名,但是应当理解的是,可以在有序架构中使用寄存器重命名。虽然处理器的所图示实施例还包括单独的指令和数据高速缓存单元434/474和共享l2高速缓存单元476,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如1级(l1)内部高速缓存、或者多级内部高速缓存。在一些实施例中,系统可以包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。可替代地,所有高速缓存都可以在核和/或处理器外部。
[0067]
具体示例性有序核架构图5a

b图示更具体的示例性有序核架构的框图,所述核将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核)中的一个。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)来与一些固定功能逻辑、存储器i/o接口以及其他必需的i/o逻辑通信。
[0068]
图5a是根据本发明实施例的单个处理器核连同其到管芯上互连网络502以及其与
2级(l2)高速缓存的本地子集504的连接的框图。在一个实施例中,指令解码器500支持具有打包数据指令集扩展的x86指令集。l1高速缓存506允许低时延访问以将存储器高速缓存到标量和矢量单元中。虽然在一个实施例中(为了简化设计),标量单元508和矢量单元510使用单独的寄存器集(分别是标量寄存器512和矢量寄存器514),并且在它们之间传送的数据被写入到存储器,并且然后从1级(l1)高速缓存506中被读回,但是本发明的替代实施例可以使用不同的方法(例如,使用单个寄存器集或包括允许数据在两个寄存器文件之间传送而不被进行写入和读回的通信路径)。
[0069]
l2高速缓存的本地子集504是全局l2高速缓存的部分,其被划分为单独的本地子集,每个处理器核一个。每个处理器核具有到它自己的l2高速缓存的本地子集504的直接访问路径。由处理器核读取的数据被存储在其l2高速缓存子集504中,并且可以与其他处理器核访问它们自己的本地l2高速缓存子集并行地被快速访问。由处理器核写入的数据被存储在其自己的l2高速缓存子集504中,并且如果必要的话从其他子集进行转储清除。环形网络确保对于共享数据的一致性。环形网络是双向的,以允许诸如处理器核、l2高速缓存和其他逻辑块之类的代理在芯片内彼此通信。在一些实施例中,每个环形数据路径在每个方向上都是1024位宽。
[0070]
图5b是根据本发明实施例的图5a中的处理器核的部分的扩展视图。图5b包括l1高速缓存504的l1数据高速缓存506a部分以及关于矢量单元510和矢量寄存器514的更多细节。具体而言,矢量单元510是16宽矢量处理单元(vpu)(参见16宽alu 528),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。vpu支持利用调配单元520调配寄存器输入,利用数字转换单元522a

b进行数字转换,以及利用复制单元524针对存储器输入进行复制。
[0071]
具有集成存储器控制器和图形控制器的处理器图6是根据本发明的实施例的处理器600的框图,该处理器600可以具有多于一个核、可以具有集成存储器控制器以及可以具有集成图形控制器。图6中的实线框图示了具有单个核602a、系统代理610、一个或多个总线控制器单元616的集合的处理器600,而虚线框的可选添加图示了具有多个核602a

n、系统代理单元610中的一个或多个集成存储器控制器单元614的集合以及特殊用途逻辑608的替代处理器600。
[0072]
因此,处理器600的不同实现方式可以包括:1)具有特殊用途逻辑608的cpu,所述特殊用途逻辑608是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核),并且所述核602a

n是一个或多个通用核(例如,通用有序核、通用无序核、两者的组合);2)具有核602a

n的协处理器,所述核602a

n是主要旨在用于图形和/或科学(吞吐量)的大量特殊用途核;以及3)具有核602a

n的协处理器,所述核602a

n是大量的通用有序核。因此,处理器600可以是通用处理器、协处理器或特殊用途处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、gpgpu(通用图形处理单元)、高吞吐量多集成核(mic)协处理器(包括30个或更多个核)、嵌入式处理器等等。处理器可以在一个或多个芯片上实现。处理器600可以是使用诸如例如bicmos、cmos或nmos之类的多种处理技术中的任何处理技术的一个或多个衬底的一部分和/或可以被实现在所述一个或多个衬底上。
[0073]
存储器层次结构包括核604a

n内的高速缓存的一个或多个级别、一个或多个共享高速缓存单元606的集合、以及耦合到集成存储器控制器单元614的集合的外部存储器(未示出)。共享高速缓存单元606的集合可以包括一个或多个中级高速缓存,诸如2级(l2)、3级
(l3)、4级(l4)或其他级别的高速缓存、末级高速缓存(llc)和/或其组合。虽然在一个实施例中,基于环形的互连单元612互连集成图形逻辑608、共享高速缓存单元606的集合和系统代理单元610/(一个或多个)集成存储器控制器单元614,但是替代实施例可以使用任何数量的用于互连此类单元的公知技术。在一个实施例中,在一个或多个高速缓存单元606与核602

a

n之间维持一致性。
[0074]
在一些实施例中,一个或多个核602a

n能够进行多线程。系统代理610包括协调和操作核602a

n的那些组件。系统代理单元610可以包括例如功率控制单元(pcu)和显示单元。pcu可以是或包括对于调节核602a

n和集成图形逻辑608的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
[0075]
就架构指令集而言,核602a

n可以是同质的或异质的;也就是说,核602a

n中的两个或更多个可以能够执行相同的指令集,而其他可以能够仅执行该指令集的子集或不同的指令集。
[0076]
示例性计算机架构图7

10是示例性计算机架构的框图。用于膝上型计算机、台式计算机、手持式pc、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(dsp)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持式设备以及各种其他电子设备的本领域中已知的其他系统设计和配置也是适合的。一般而言,如本文中公开的有结合处理器和/或其他执行逻辑的能力的种类庞杂的系统或电子设备通常是适合的。
[0077]
现在参照图7,示出的是根据本发明的一个实施例的系统700的框图。系统700可以包括耦合到控制器集线器720的一个或多个处理器710、715。在一个实施例中,控制器集线器720包括图形存储器控制器集线器(gmch)790和输入/输出集线器(ioh)750(其可以在单独的芯片上);gmch 790包括与存储器740和协处理器745耦合的存储器和图形控制器;ioh 750将输入/输出(i/o)设备760耦合到gmch 790。可替代地,存储器和图形控制器中的一个或两个被集成到处理器内(如本文中描述的),存储器740和协处理器745被直接耦合到处理器710,并且控制器集线器720与ioh 750在单个芯片中。
[0078]
在图7中利用虚线标示了附加处理器715的可选性质。每个处理器710、715可以包括本文中描述的处理核中的一个或多个,并且可以是某个版本的处理器600。
[0079]
存储器740可以是例如动态随机存取存储器(dram)、相变存储器(pcm)或两者的组合。对至少一个实施例而言,控制器集线器720经由多点分支总线与(一个或多个)处理器710、715通信,该多点分支总线诸如是前端总线(fsb)、点对点接口或类似的连接795。
[0080]
在一个实施例中,协处理器745是特殊用途处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器等等。在一个实施例中,控制器集线器720可以包括集成图形加速器。
[0081]
就包括架构特性、微架构特性、热特性、功率消耗特性等等的一系列的价值度量而言,物理资源710、7155之间可以存在多种不同。
[0082]
在一个实施例中,处理器710执行控制一般类型的数据处理操作的指令。嵌入到指令内的可以是协处理器指令。处理器710将这些协处理器指令识别为具有应当由所附接的协处理器745执行的类型。因此,处理器710在协处理器总线或其他互连上向协处理器745发
布这些协处理器指令(或者表示协处理器指令的控制信号)。(一个或多个)协处理器745接受并且执行所接收到的协处理器指令。
[0083]
现在参照图8,示出的是根据本发明实施例的第一个更具体的示例性系统800的框图。如在图8中示出的,多处理器系统800是点对点互连系统,并且包括经由点对点互连850耦合的第一处理器870和第二处理器880。处理器870和880中的每一个可以是某个版本的处理器600。在本发明的一个实施例中,处理器870和880分别是处理器710和715,同时协处理器838是协处理器745。在另一个实施例中,处理器870和880分别是处理器710、协处理器745。
[0084]
处理器870和880被示出为分别包括集成存储器控制器(imc)单元872和882。处理器870还包括作为其总线控制器单元的部分的点对点(p

p)接口876和878;类似地,第二处理器880包括p

p接口886和888。处理器870、880可以使用p

p接口电路878、888经由点对点(p

p)接口850交换信息。如在图8中示出的,imc 872和882将处理器耦合到相应的存储器、也就是存储器832和存储器834,所述存储器可以是本地附接到相应处理器的主存储器的部分。
[0085]
处理器870、880均可以使用点对点接口电路876、894、886、898经由单独的p

p接口852、854与芯片组890交换信息。芯片组890可以可选地经由高性能接口892与协处理器838交换信息。在一个实施例中,协处理器838是特殊用途处理器,诸如例如高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器等等。
[0086]
可以将共享高速缓存(未示出)包括在任一处理器中或者在两个处理器之外,还可以经由p

p互连与处理器连接,以使得如果将处理器置于低功率模式中,则可以将任一或两个处理器的本地高速缓存信息存储在共享高速缓存中。
[0087]
芯片组890可以经由接口896耦合到第一总线816。在一个实施例中,第一总线816可以是外围组件互连(pci)总线,或者是诸如pci快速总线或另一i/o互连总线之类的总线,但是本发明的范围不限于此。
[0088]
如图8中所示,各种i/o设备814可以连同总线桥818一起耦合到第一总线816,总线桥818将第一总线816耦合到第二总线820。在一个实施例中,诸如协处理器、高吞吐量mic处理器、gpgpu、加速器(诸如例如,图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列或任何其他处理器之类的一个或多个附加的处理器815耦合到第一总线816。在一个实施例中,第二总线820可以是低引脚数(lpc)总线。在一个实施例中,各种设备可以耦合到第二总线820,所述各种设备包括例如键盘和/或鼠标822、通信设备827以及可以包括指令/代码和数据830的诸如磁盘驱动器或其他大容量存储设备之类的存储单元828。此外,音频i/o 824可以耦合到第二总线816。要注意的是,其他架构也是可能的。例如,替代于图8的点对点架构,系统可以实现多点分支总线或其他这种架构。
[0089]
现在参照图9,示出的是根据本发明实施例的第二个更具体的示例性系统900的框图。图8和图9中的相似元件拥有相似的附图标记,并且已经从图9中省略了图8的某些方面,以避免使图9的其他方面模糊。
[0090]
图9图示了处理器870、880可以分别包括集成存储器和i/o控制逻辑(“cl”)972和982。因此,cl 972、982包括集成存储器控制器单元并且包括i/o控制逻辑。图9图示了不仅存储器832、834耦合到cl 872、882,而且还有i/o设备914也耦合到控制逻辑872、882。传统
i/o设备915耦合到芯片组890。
[0091]
现在参照图10,示出的是根据本发明实施例的soc 1000的框图。图6中的类似元件拥有相似的附图标记。而且,虚线框是在更先进的soc上的可选特征。在图10中,(一个或多个)互连单元1002耦合到:应用处理器1010,其包括一个或多个核102a

n、高速缓存单元604a

n、以及(一个或多个)共享高速缓存单元606的集合;系统代理单元610;(一个或多个)总线控制器单元616;(一个或多个)集成存储器控制器单元614;一个或多个协处理器1020的集合,所述一个或多个协处理器1020可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(sram)单元1030;直接存储器访问(dma)单元1032;以及用于耦合到一个或多个外部显示器的显示单元1040。在一个实施例中,(一个或多个)协处理器1020包括特殊用途处理器,诸如例如网络或通信处理器、压缩引擎、gpgpu、高吞吐量mic处理器、嵌入式处理器等等。
[0092]
可以将本文中公开的机制的实施例在硬件、软件、固件或这种实现方法的组合中实现。可以将本发明的实施例实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
[0093]
可以将诸如图8中图示的代码830之类的程序代码应用到输入指令来执行本文中描述的功能以及生成输出信息。可以以已知方式将输出信息应用到一个或多个输出设备。出于本技术的目的,处理系统包括具有处理器的任何系统,所述处理器诸如例如数字信号处理器(dsp)、微控制器、专用集成电路(asic)或微处理器。
[0094]
程序代码可以以高级过程编程语言或面向对象的编程语言来实现以与处理系统进行通信。如果期望的话,还可以以汇编语言或机器语言来实现程序代码。实际上,本文中描述的机制在范围上不限于任何特定的编程语言。在任何情况中,语言可以是编译的或解释的语言。
[0095]
至少一个实施例的一个或多个方面可以通过机器可读介质上存储的、表示处理器内的各种逻辑的代表指令来实现,其在由机器读取时使得机器制作执行本文中所述技术的逻辑。称作“ip核”的这种表示可以存储在有形的机器可读介质上,并且供应给各种客户或制造设施,以加载到实际制作逻辑或处理器的制造机器中。
[0096]
这种机器可读存储介质在没有限制的情况下可以包括:由机器或设备制造或形成的物品的非暂时性有形装置,其包括存储介质、诸如硬盘、任何其他类型的磁盘(包括软盘、光盘、压缩盘只读存储器(cd

rom)、压缩盘可重写(cd

rw)和磁光盘)、半导体器件、诸如只读存储器(rom)、随机存取存储器(ram)(诸如,动态随机存取存储器(dram)、静态随机存取存储器(sram))、可擦除可编程只读存储器(eprom)、闪速存储器、电可擦除可编程只读存储器(eeprom)、相变存储器(pcm)、磁或光卡、或适合用于存储电子指令的任何其他类型的介质。
[0097]
因此,本发明的实施例还包括包含指令或包含设计数据(诸如硬件描述语言(hdl))的非暂时性、有形的机器可读介质,该机器可读介质定义了本文中所描述的结构、电路、装置、处理器和/或系统特征。这种实施例还可以被称为程序产品。
[0098]
仿真(包括二进制翻译、代码变形等)在一些情况下,指令转换器可以被用来将指令从源指令集转换到目标指令集。例
如,指令转换器可以对指令进行翻译(例如,使用静态二进制翻译、包括动态编译的动态二进制翻译)、变形、仿真或者以其他方式将指令转换成要由核处理的一个或多个其他指令。指令转换器可以以软件、硬件、固件或它们的组合来实现。指令转换器可以在处理器上、处理器外、或部分在处理器上并且部分在处理器外。
[0099]
图11是根据本发明实施例的对比使用软件指令转换器将源指令集中的二进制指令转换到目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,尽管可替代地可以以软件、固件、硬件或它们的各种组合来实现指令转换器。图11示出了可以使用第一编译器1104来编译采用高级语言1102形式的程序以生成第一二进制代码(例如,x86)1106,该第一二进制代码(例如,x86)1106可以原生地由具有至少一个第一指令集核的处理器1116来执行。在一些实施例中,具有至少一个第一指令集核的处理器1116表示基本上可以通过互相兼容地执行或以其他方式处理以下内容来实行与具有至少一个x86指令集核的英特尔处理器相同的功能的任何处理器:(1)英特尔x86指令集核的指令集的实质部分或者(2)目标为在具有至少一个x86指令集核的英特尔处理器上运行的应用或其他软件的目标代码版本,以便基本上实现与具有至少一个x86指令集核的英特尔处理器相同的结果。第一编译器1104表示可操作用于生成第一指令集的二进制代码1106(例如,目标代码)的编译器,所述二进制代码1106(例如,目标代码)可以在有附加链接处理或没有附加链接处理的情况下在具有至少一个第一指令集核的处理器1116上执行。类似地,图11示出了可以使用替代指令集编译器1108来编译采用高级语言1102形式的程序以生成替代指令集二进制代码1110,该替代指令集二进制代码1110可以原生地由不具有至少一个第一指令集核1114的处理器来执行(例如,具有执行加利福尼亚州森尼维尔的mips科技的mips指令集和/或执行加利福尼亚州森尼维尔的arm控股公司的arm指令集的核的处理器)。使用指令转换器1112来将第一二进制代码1106转换成可以原生地由不具有第一指令集核的处理器1114来执行的代码。该经转换的代码不太可能与替代指令集二进制代码1110相同,因为能够这样做的指令转换器难以制造;然而,经转换的代码将完成一般操作并且由来自替代指令集的指令构成。因此,指令转换器1112表示通过仿真、模拟或任何其他过程而允许不具有第一指令集处理器或核的处理器或其他电子设备执行第一二进制代码1106的软件、固件、硬件或其组合。
[0100]
用于处理器中的条件服务质量的装置和方法服务质量是在计算机系统中实施基于优先级的公平性的重要机制,并且可以通过在共享缓冲器和队列、基于分组的虚拟通道等中分配专用路径或插槽来实现。服务质量挂钩(hook)如今在高速缓存、存储器子系统队列、存储器控制器和交换卡中使用。然而,除了一些值得注意的例外,服务质量作为特征在其来到行业中的现实世界部署时很难找到吸引力。
[0101]
造成这种情况的原因之一是:在现实世界部署中,知晓例如过程x将始终需要专用带宽、或者线程y将始终需要控制器队列z中的专用队列插槽集合通常是具有挑战性的。这是因为这些过程或线程通常依赖于外部事件来触发针对专用资源的需要。
[0102]
例如,过程x可能正在实现涉及从网卡接收高优先级客户数据流的功能性。当该数据到达时,关键的是以最高优先级来处理该数据并且将其添加到数据库。然而,客户数据的这种高优先级突发可能一小时仅到达一次。在其余时间,过程x在后台工作,以从磁盘添加
更多数据,并且针对相同数据集构建一些索引。在这种情况下,完成所有以上工作的过程是相同的,但是关键洞察是仅来自网卡的数据具有高优先级,并且每小时仅到达一次,持续几分钟。针对过程x在该系统中具有专用路径和队列插槽的静态qos分配将是浪费的、低效的,并且使其他过程无法进行有用的工作。
[0103]
本发明的实施例包括缓解该问题的条件服务质量(qos)技术,其中仅当满足某个条件或条件集合时才应用服务质量规则。在这种情况下,该规则可以是针对x(即每小时事件)的1gb/s以上的网络业务突发。当发生这种情况时,将qos规则应用于过程x。因此,使用智能定制的规则集合,一过程对第一处理资源的检测到的使用可能更改第二资源针对该过程的分配。以这种方式来动态调整处理资源减少了一种特定资源成为总体过程的性能瓶颈的可能性。
[0104]
图12a

b图示了用于实现本文中描述的技术的处理器1250。在一个实施例中,处理器1250的条件监测电路/逻辑1200根据qos规则1205集合来执行条件qos操作。可以以硬件(例如,控制寄存器/msr集合)或使用硬件和软件/固件的组合来实现条件qos电路/逻辑。
[0105]
所图示的条件qos电路/逻辑1200包括:条件监测电路/逻辑1201,用于监测针对多个过程、线程、逻辑处理器和/或指令的其他逻辑分组的资源使用。因此,虽然下面的讨论聚焦于对资源向“过程”的分配,但是本发明的基本原理可以应用于任何逻辑程序代码分组。出于说明的目的,在图12a

b中示出了两个过程:过程a和过程b。
[0106]
监测电路/逻辑1201可以包括例如一个或多个寄存器,用以指定针对每个过程要监测的资源。这些资源可以包括但不限于存储器带宽使用、高速缓存占用(例如,在llc、l2高速缓存等内)和网络带宽。可以跟踪各种其他度量,同时仍然符合本发明的基本原理。
[0107]
在一个实施例中,诸如过程地址空间id(pasid)之类的过程标识符与每个过程相关联,并且用于跟踪针对该过程的资源使用。另外,可以通过将该过程的pasid值与clos值进行映射来将服务类别(clos)值与特定过程(例如,过程a)相关联。在一些实施例中,可以向过程组分配资源监测id(rmid)值,该id(rmid)值可以与要有条件地应用于每个过程组的特定服务类别相关联。
[0108]
条件qos电路/逻辑1200的一个实施例还包括条件qos实施电路/逻辑1202,用于实施由qos规则1205和指定服务类别建立的资源使用约束。特别地,实施电路/逻辑1202可以评估由监测电路/逻辑1201跟踪的资源使用数据,以结合qos规则1205(以及潜在地其他值,诸如服务类别)来呈现实施决策。例如,如果过程a已经达到最大l3高速缓存占用率(例如,高速缓存的1/3),则qos实施电路/逻辑1202将要求过程a在添加新的高速缓存条目之前逐出l3高速缓存条目(例如,基于最近最少使用(lru)或其他高速缓存管理策略)。
[0109]
在一个实施例中,条件qos电路/逻辑1200根据条件qos规则1205集合进行操作,该条件qos规则描述了针对特定过程id的服务质量监测和特定资源(例如,高速缓存、存储器带宽等)的实施。在这种情况下,可以定义多个规则,以基于从其他处理器资源获取(例如,由条件监测电路1201获取)的遥测数据来标识何时必须改变该资源的特定服务水平协议(sla)。在一些实施例中,sla仅仅是关于与特定过程相关联的服务类别(clos)的另一个术语。可替代地,sla可以不同于所定义的服务类别和/或可以被分配给特定clos。在一个实施例中,与关联于(针对特定资源和pasid的)规则集合的当前性能数据相匹配的第一qos规则1205用于标识将被实施的sla。
[0110]
在一个实施例中,当从qos规则1205集合中触发特定规则时,服务质量实施电路/逻辑1202与条件监测电路/逻辑1201交互以针对特定资源和pasid应用具体sla。如果不能实施特定sla,则qos实施电路/逻辑的一个实施例生成中断(例如,对软件堆栈的软件中断)。
[0111]
所图示的处理器1250包括网络接口控制器1230,其具有分配给过程a(图12a中的10mbps)和过程b(图12a中的100mbps)的不同量的网络带宽。另外,示出了分配给过程a和过程b的llc通路1220的数量的指示。可以基于当前监测的条件和正在实现的qos规则1205,来针对每个过程动态地调整网络接口控制器带宽和所分配的高速缓存通路的数量二者。在图12a

b中还示出了两个核1210

1211,尽管本发明的基本原理可以在具有任何数量的核的处理器上实现。
[0112]
如图12a中的不同模式所指示的,在核1211上执行的过程a在网络接口控制器1230上消耗了100mbps带宽,并且被分配有三个llc高速缓存通路。在核1210上执行的过程b消耗了nic 1230的10mbps,并且分配有两个llc高速缓存通路。在该示例中,qos规则1205指定分配给一过程的llc通路1220的数量取决于在集成网络控制器1230处测量的该过程的业务量。例如,由qos监测电路1201收集的条件遥测数据可以指示由过程b使用的业务从图12a中的10mbps跳到图12b中的70mbps。在这两个图中示出的特定规则1209指定50mbps的阈值带宽值,在该阈值带宽值以上,第三高速缓存通路将被分配给过程b,如图12b中所指示。
[0113]
类似地,可以通过将网络业务(和/或其他类型的业务)增加到指定阈值(或多个不同的阈值)来触发针对其他资源的多个规则。因此,在这些实施例的情况下,不同的资源可以取决于对过程b的资源消耗的检测到的改变而动态地适应于过程b的新sla。
[0114]
图13图示了处理器1250的一个实施例的附加细节,包括用于注册和实现包括基于遥测的规则的服务质量规则1320的新的条件电路/逻辑。可以作为电路或者使用电路与软件/固件的组合来实现图13中所图示的各种组件。
[0115]
资源监测器1305(其在一个实施例中是基于sla的监测器)监测如由当前规则集合1320指定的各种处理器资源,包括io资源1331(例如,每个过程消耗的io带宽)、存储器资源1332(例如,每个过程消耗的存储器带宽和/或空间)、以及加速器资源1333(例如,该过程消耗的加速器的一小部分)。出于说明的目的,突出显示了这些特定的处理器资源;还可以监测各种其他形式的处理器资源。
[0116]
在一个实施例中,资源监测器1305可以根据当前规则集合1320将其监测聚焦在特定的资源集合上(例如,当特定规则基于存储器带宽时监测存储器带宽)。虽然在图13中被图示为单个元件,但是资源监测器1305可以包括用于监测不同资源集合的差分电路,该差分电路中的一些可以在处理器13的不同区域中实现。
[0117]
当已经达到基于规则的阈值时,资源监测器1305可以触发来自实施电路/逻辑1302的响应。例如,资源监测器1305可以在特定过程的资源使用超过规则1320中指定的阈值或下降到该阈值以下时通知实施电路/逻辑1302。可替代地或附加地,实施电路/逻辑1302可以与资源监测器1305独立地或半独立地操作,以基于当前规则集合1320来动态地调整资源分配(例如,当一过程的网络带宽超过阈值时,增加l3高速缓存通路的数量)。例如,实施电路1302可以读取反映了一过程的当前资源使用的各种处理器计数器,并且实现任何校正动作以遵守当前规则集合1320。例如,在图13中,实施电路/逻辑1302可以基于从资源
监测器1305接收到的通知和/或直接从处理器的寄存器中读取的资源监测数据来调整一个或多个计算引擎1341、加速器1342和网络接口控制器1343的过程利用率。
[0118]
在一个实施例中,接口管理器1315提供对规则集合1320、资源监测器1305和/或实施电路/逻辑1302的访问。例如,特权软件(例如,os或管理程序)可以更新规则集合1320以监测/实施新资源和/或新资源变量或阈值。接口管理器1315可以向软件公开编程接口以执行这些更新。
[0119]
图13中示出了示例规则集合1321,其包括表数据结构,该表数据结构具有与每个规则相关联的单独的行和用以指定过程地址空间id(pasid)值(标识过程)、规则以及与规则相关联的sla定义的单独的列。
[0120]
在一个实现方式中,每个规则都包括以下一个或多个元素:a. 与附加有条件sla的应用或服务相关联的过程地址空间id(pasid)。b. 用以标识规则的唯一规则标识符(rid)。c. 对规则的描述。在一个实施例中,规则可以指代用于监测处理器活动的任何处理器设施,包括但不限于性能计数器集合(例如,用以对llc未命中、nic带宽、存储器带宽等进行计数)。规则可以指定特定的资源阈值和/或资源之间更复杂的关系。例如,规则可以指定当网络接口带宽下降到存储器带宽的指定倍数以下时执行的分配或取消分配(或者反之亦然)。规则还可以包括使用性能计数器定义的布尔表达式(例如,如果nic带宽小于50mbps,则x=0;并且如果nic带宽大于或等于50mbps,则x=1)。d. 与规则相关联的服务水平协议定义。服务水平协议可以包括具有特定资源id的特定资源、以及在触发和选择规则时要分配给对应pasid的该资源的量。在一个实施例中,sla定义还可以包括该特定规则的优先级。
[0121]
在一个实施例中,资源监测器1305负责执行规则1320并且标识需要由实施电路/逻辑1302实现的那些规则。在一个实现方式中,每n个时间单位(n可使用控制寄存器(诸如,msr或任何其他cpu接口)来配置),资源监测器1305和/或实施电路/逻辑1302执行以下操作:a. 执行规则1320中的每一个,以便从相关性能计数器收集所需数据。然后,基于结果来执行布尔公式,以生成与每个规则相关联的布尔值。b. 搜索规则集合1321,并且选择第一个规则或具有被设置为1的布尔值的第一规则集合。可以实现优先级方案来确定搜索的次序(例如,与较高优先级pasid值相关联的搜索规则优先于具有较低优先级pasid值的搜索规则)。如果没有使用优先级,则可以遵循注册次序(例如,每个规则被插入到规则集合1321中的次序)。c. 按照所选布尔规则中的每一个,资源监测器1305和/或实施电路/逻辑1302配置针对特定pasid和所选资源而注册的sla。例如,实施电路/逻辑1302可以配置相关资源以确保遵守该规则。在一个实施例中,如果不能实现sla,则实施电路/逻辑1302可以生成软件中断以通知由于缺乏资源而尚未配置特定sla。例如,如果存在不足数量的要分配给pasid的llc通路或者存在不足的i/o带宽,则可能生成中断。
[0122]
在图14中图示了根据本发明的一个实施例的方法。该方法可以在上述架构上实现,但不限于任何特定架构。
[0123]
在1401处,针对每个过程,将一个或多个规则注册在规则集合内。规则中的至少一
些针对相关联的过程指定条件资源分配。如上所描述,例如,条件资源分配可以指定一个或多个阈值以触发新的资源分配。
[0124]
在1402处,针对如规则集合中指定的每个过程来监测资源使用值。例如,计数器集合可以被配置为基于每个相应过程的资源使用来进行计数。在一个实施例中,来自远程设备的遥测数据可以被收集,并且与本地资源使用值结合地使用,作为去往规则集合的输入。
[0125]
在1403处,做出关于是否已经达到基于规则的阈值的确定。例如,可以将一个或多个计数器值与一个或多个阈值进行比较。当达到阈值时,在1404处,可以根据相关联的规则来调整与该过程相关联的一个或多个资源分配。例如,针对给定的过程或过程组,如果与第一资源相关联的资源使用超过阈值,则针对该过程或过程组来更新第二资源的资源分配。
[0126]
用于处理器中的条件服务质量的装置和方法服务质量是在计算机系统中实施基于优先级的公平性的重要机制,并且可以通过在共享缓冲器和队列、基于分组的虚拟通道等中分配专用路径或插槽来实现。服务质量挂钩(hook)如今在高速缓存、存储器子系统队列、存储器控制器和交换卡中使用。然而,除了一些值得注意的例外,服务质量作为特征在其来到行业中的现实世界部署时很难找到吸引力。
[0127]
造成这种情况的原因之一是:在现实世界部署中,知晓例如过程x将始终需要专用带宽、或者线程y将始终需要控制器队列z中的专用队列插槽集合通常是具有挑战性的。这是因为这些过程或线程通常依赖于外部事件来触发针对专用资源的需要。
[0128]
例如,过程x可能正在实现涉及从网卡接收高优先级客户数据流的功能性。当该数据到达时,关键的是以最高优先级来处理该数据并且将其添加到数据库。然而,客户数据的这种高优先级突发可能一小时仅到达一次。在其余时间,过程x在后台工作,以从磁盘添加更多数据,并且针对相同数据集构建一些索引。在这种情况下,完成所有以上工作的过程是相同的,但是关键洞察是仅来自网卡的数据具有高优先级,并且每小时仅到达一次,持续几分钟。针对过程x在该系统中具有专用路径和队列插槽的静态qos分配将是浪费的、低效的,并且使其他过程无法进行有用的工作。
[0129]
本发明的实施例包括缓解该问题的条件服务质量(qos)技术,其中仅当满足某个条件或条件集合时才应用服务质量规则。在这种情况下,该规则可以是针对x(即每小时事件)的1gb/s以上的网络业务突发。当发生这种情况时,将qos规则应用于过程x。因此,使用智能定制的规则集合,一过程对第一处理资源的检测到的使用可能更改第二资源针对该过程的分配。以这种方式来动态调整处理资源减少了一种特定资源成为总体过程的性能瓶颈的可能性。
[0130]
图12a

b图示了用于实现本文中描述的技术的处理器1250。在一个实施例中,处理器1250的条件监测电路/逻辑1200根据qos规则1205集合来执行条件qos操作。可以以硬件(例如,控制寄存器/msr集合)或使用硬件和软件/固件的组合来实现条件qos电路/逻辑。
[0131]
所图示的条件qos电路/逻辑1200包括:条件监测电路/逻辑1201,用于监测针对多个过程、线程、逻辑处理器和/或指令的其他逻辑分组的资源使用。因此,虽然下面的讨论聚焦于对资源向“过程”的分配,但是本发明的基本原理可以应用于任何逻辑程序代码分组。出于说明的目的,在图12a

b中示出了两个过程:过程a和过程b。
[0132]
监测电路/逻辑1201可以包括例如一个或多个寄存器,用以指定针对每个过程要
监测的资源。这些资源可以包括但不限于存储器带宽使用、高速缓存占用(例如,在llc、l2高速缓存等内)和网络带宽。可以跟踪各种其他度量,同时仍然符合本发明的基本原理。
[0133]
在一个实施例中,诸如过程地址空间id(pasid)之类的过程标识符与每个过程相关联,并且用于跟踪针对该过程的资源使用。另外,可以通过将该过程的pasid值与clos值进行映射来将服务类别(clos)值与特定过程(例如,过程a)相关联。在一些实施例中,可以向过程组分配资源监测id(rmid)值,该id(rmid)值可以与要有条件地应用于每个过程组的特定服务类别相关联。
[0134]
条件qos电路/逻辑1200的一个实施例还包括条件qos实施电路/逻辑1202,用于实施由qos规则1205和指定服务类别建立的资源使用约束。特别地,实施电路/逻辑1202可以评估由监测电路/逻辑1201跟踪的资源使用数据,以结合qos规则1205(以及潜在地其他值,诸如服务类别)来呈现实施决策。例如,如果过程a已经达到最大l3高速缓存占用率(例如,高速缓存的1/3),则qos实施电路/逻辑1202将要求过程a在添加新的高速缓存条目之前逐出l3高速缓存条目(例如,基于最近最少使用(lru)或其他高速缓存管理策略)。
[0135]
在一个实施例中,条件qos电路/逻辑1200根据条件qos规则1205集合进行操作,该条件qos规则描述了针对特定过程id的服务质量监测和特定资源(例如,高速缓存、存储器带宽等)的实施。在这种情况下,可以定义多个规则,以基于从其他处理器资源获取(例如,由条件监测电路1201获取)的遥测数据来标识何时必须改变该资源的特定服务水平协议(sla)。在一些实施例中,sla仅仅是关于与特定过程相关联的服务类别(clos)的另一个术语。可替代地,sla可以不同于所定义的服务类别和/或可以被分配给特定clos。在一个实施例中,与关联于(针对特定资源和pasid的)规则集合的当前性能数据相匹配的第一qos规则1205用于标识将被实施的sla。
[0136]
在一个实施例中,当从qos规则1205集合中触发特定规则时,服务质量实施电路/逻辑1202与条件监测电路/逻辑1201交互以针对特定资源和pasid应用具体sla。如果不能实施特定sla,则qos实施电路/逻辑的一个实施例生成中断(例如,对软件堆栈的软件中断)。
[0137]
所图示的处理器1250包括网络接口控制器1230,其具有分配给过程a(图12a中的10mbps)和过程b(图12a中的100mbps)的不同量的网络带宽。另外,示出了分配给过程a和过程b的llc通路1220的数量的指示。可以基于当前监测的条件和正在实现的qos规则1205,来针对每个过程动态地调整网络接口控制器带宽和所分配的高速缓存通路的数量二者。在图12a

b中还示出了两个核1210

1211,尽管本发明的基本原理可以在具有任何数量的核的处理器上实现。
[0138]
如图12a中的不同模式所指示的,在核1211上执行的过程a在网络接口控制器1230上消耗了100mbps带宽,并且被分配有三个llc高速缓存通路。在核1210上执行的过程b消耗了nic 1230的10mbps,并且分配有两个llc高速缓存通路。在该示例中,qos规则1205指定分配给一过程的llc通路1220的数量取决于在集成网络控制器1230处测量的该过程的业务量。例如,由qos监测电路1201收集的条件遥测数据可以指示由过程b使用的业务从图12a中的10mbps跳到图12b中的70mbps。在这两个图中示出的特定规则1209指定50mbps的阈值带宽值,在该阈值带宽值以上,第三高速缓存通路将被分配给过程b,如图12b中所指示。
[0139]
类似地,可以通过将网络业务(和/或其他类型的业务)增加到指定阈值(或多个不
同的阈值)来触发针对其他资源的多个规则。因此,在这些实施例的情况下,不同的资源可以取决于对过程b的资源消耗的检测到的改变而动态地适应于过程b的新sla。
[0140]
图13图示了处理器1250的一个实施例的附加细节,包括用于注册和实现包括基于遥测的规则的服务质量规则1320的新的条件电路/逻辑。可以作为电路或者使用电路与软件/固件的组合来实现图13中所图示的各种组件。
[0141]
资源监测器1305(其在一个实施例中是基于sla的监测器)监测如由当前规则集合1320指定的各种处理器资源,包括io资源1331(例如,每个过程消耗的io带宽)、存储器资源1332(例如,每个过程消耗的存储器带宽和/或空间)、以及加速器资源1333(例如,该过程消耗的加速器的一小部分)。出于说明的目的,突出显示了这些特定的处理器资源;还可以监测各种其他形式的处理器资源。
[0142]
在一个实施例中,资源监测器1305可以根据当前规则集合1320将其监测聚焦在特定的资源集合上(例如,当特定规则基于存储器带宽时监测存储器带宽)。虽然在图13中被图示为单个元件,但是资源监测器1305可以包括用于监测不同资源集合的差分电路,该差分电路中的一些可以在处理器13的不同区域中实现。
[0143]
当已经达到基于规则的阈值时,资源监测器1305可以触发来自实施电路/逻辑1302的响应。例如,资源监测器1305可以在特定过程的资源使用超过规则1320中指定的阈值或下降到该阈值以下时通知实施电路/逻辑1302。可替代地或附加地,实施电路/逻辑1302可以与资源监测器1305独立地或半独立地操作,以基于当前规则集合1320来动态地调整资源分配(例如,当一过程的网络带宽超过阈值时,增加l3高速缓存通路的数量)。例如,实施电路1302可以读取反映了一过程的当前资源使用的各种处理器计数器,并且实现任何校正动作以遵守当前规则集合1320。例如,在图13中,实施电路/逻辑1302可以基于从资源监测器1305接收到的通知和/或直接从处理器的寄存器中读取的资源监测数据来调整一个或多个计算引擎1341、加速器1342和网络接口控制器1343的过程利用率。
[0144]
在一个实施例中,接口管理器1315提供对规则集合1320、资源监测器1305和/或实施电路/逻辑1302的访问。例如,特权软件(例如,os或管理程序)可以更新规则集合1320以监测/实施新资源和/或新资源变量或阈值。接口管理器1315可以向软件公开编程接口以执行这些更新。
[0145]
图13中示出了示例规则集合1321,其包括表数据结构,该表数据结构具有与每个规则相关联的单独的行和用以指定过程地址空间id(pasid)值(标识过程)、规则以及与规则相关联的sla定义的单独的列。
[0146]
在一个实现方式中,每个规则都包括以下一个或多个元素:a. 与附加有条件sla的应用或服务相关联的过程地址空间id(pasid)。b. 用以标识规则的唯一规则标识符(rid)。c. 对规则的描述。在一个实施例中,规则可以指代用于监测处理器活动的任何处理器设施,包括但不限于性能计数器集合(例如,用以对llc未命中、nic带宽、存储器带宽等进行计数)。规则可以指定特定的资源阈值和/或资源之间更复杂的关系。例如,规则可以指定当网络接口带宽下降到存储器带宽的指定倍数以下时执行的分配或取消分配(或者反之亦然)。规则还可以包括使用性能计数器定义的布尔表达式(例如,如果nic带宽小于50mbps,则x=0;并且如果nic带宽大于或等于50mbps,则x=1)。
d. 与规则相关联的服务水平协议定义。服务水平协议可以包括具有特定资源id的特定资源、以及在触发和选择规则时要分配给对应pasid的该资源的量。在一个实施例中,sla定义还可以包括该特定规则的优先级。
[0147]
在一个实施例中,资源监测器1305负责执行规则1320并且标识需要由实施电路/逻辑1302实现的那些规则。在一个实现方式中,每n个时间单位(n可使用控制寄存器(诸如,msr或任何其他cpu接口)来配置),资源监测器1305和/或实施电路/逻辑1302执行以下操作:a. 执行规则1320中的每一个,以便从相关性能计数器收集所需数据。然后,基于结果来执行布尔公式,以生成与每个规则相关联的布尔值。b. 搜索规则集合1321,并且选择第一个规则或具有被设置为1的布尔值的第一规则集合。可以实现优先级方案来确定搜索的次序(例如,与较高优先级pasid值相关联的搜索规则优先于具有较低优先级pasid值的搜索规则)。如果没有使用优先级,则可以遵循注册次序(例如,每个规则被插入到规则集合1321中的次序)。c. 按照所选布尔规则中的每一个,资源监测器1305和/或实施电路/逻辑1302配置针对特定pasid和所选资源而注册的sla。例如,实施电路/逻辑1302可以配置相关资源以确保遵守该规则。在一个实施例中,如果不能实现sla,则实施电路/逻辑1302可以生成软件中断以通知由于缺乏资源而尚未配置特定sla。例如,如果存在不足数量的要分配给pasid的llc通路或者存在不足的i/o带宽,则可能生成中断。
[0148]
在图14中图示了根据本发明的一个实施例的方法。该方法可以在上述架构上实现,但不限于任何特定架构。
[0149]
在1401处,针对每个过程,将一个或多个规则注册在规则集合内。规则中的至少一些针对相关联的过程指定条件资源分配。如上所描述,例如,条件资源分配可以指定一个或多个阈值以触发新的资源分配。
[0150]
在1402处,针对如规则集合中指定的每个过程来监测资源使用值。例如,计数器集合可以被配置为基于每个相应过程的资源使用来进行计数。在一个实施例中,来自远程设备的遥测数据可以被收集,并且与本地资源使用值结合地使用,作为去往规则集合的输入。
[0151]
在1403处,做出关于是否已经达到基于规则的阈值的确定。例如,可以将一个或多个计数器值与一个或多个阈值进行比较。当达到阈值时,在1404处,可以根据相关联的规则来调整与该过程相关联的一个或多个资源分配。例如,针对给定的过程或过程组,如果与第一资源相关联的资源使用超过阈值,则针对该过程或过程组来更新第二资源的资源分配。
[0152]
用于闭环动态资源分配控制框架的装置和方法高优先级和对时延敏感的应用(诸如,分组处理和web搜索)没有充分地利用处理器或系统的所有可用资源。例如,在在线环境中,为了优化总体拥有成本(tco),服务提供商通常在运行高优先级应用的(一个或多个)相同服务器上启动最大努力的(be)工作负载,使得可以更充分地利用资源(并且获利)。
[0153]
发生这种混合时的一个挑战是实现动态自适应共享,在该动态自适应共享中,高优先级工作负载不会由于资源短缺而错过其sla,而同时通过不针对高优先级和对时延敏感的应用隔离过多的资源来确保服务器被更充分地利用。
[0154]
本发明的实施例自动地、高效地并且以透明的方式在这些最大努力与保证性能类
别之间平衡资源。一个特定实施例包括一种框架,该框架用以基于业务负载在英特尔架构(ia)服务器平台中以细粒度来动态地控制资源导向器技术(rdt)资源分配。然而,要注意的是,本发明的基本原理不限于rdt或任何具体的资源管理架构。基本目标是确保高优先级工作负载满足时延/吞吐量或其他用户定义的关键性能指标(kpi)目标,同时最大化be任务的性能,从而进一步改进服务器利用率并且降低成本。
[0155]
通过概述的方式,本发明的实施例可以包括用于执行细粒度动态资源分配的以下框架和方法中的一个或多个:a)主导因子使用。除了使用业务模式和其他动态因子之外,该框架的一个实施例还标识并且使用一个或多个“主导因子”来调整决策。可以针对计算、存储器、网络负载和其他资源来确定主导因子,使得可以周期性地并且主动地采取动作,以防止非随意性关键性能指标上的倒退,同时朝向最大努力的任务倾注更多的资源。因此,例如,与仅在事实之后进行反应的现有方案形成对照,该实施例可以采取动作以防止潜在的分组丢失发生。b)采取抢先动作(preemptive action)。即使利用如上所描述的周期性抢先动作,如果基于硬件的检测标识出在重要目标(例如,高优先级工作负载的sla)上的倒退,则它也抢先地从最大努力的任务分配资源。因此,该实施例可以不等待下一个时间窗口的开始来通过资源控制器的代理进行重新分配。c)结合软件策略进行调整。在一个实施例中,软件策略和硬件控制器结合地工作以针对高优先级工作负载来防止分组丢失或sla关键性能指标的违反,同时最大化最大努力工作负载的性能。该平台的一个实施例利用由软件堆栈针对该应用的不同阶段提供的“进度标记”(也被称为“英里标记”)。使用英里标记,可以指定当前进度以及该应用在当前时段内具有的目标。硬件利用这些英里标记,以便与当前资源使用和资源配置参数相关联。下面描述的附加实施例使得英里标记能够针对此处所描述的所有技术以改进的粒度来工作。d)利用渐变sla(graduated sla)。通常,高优先级任务的sla关键性能指标(kpi)是多级别的,使得当严格的sla kpi在正常条件下适用时,适度降级的sla kpi在来自高优先级任务的需求中出现瞬时尖峰时的条件下适用。在本发明的一个实施例中,对这种条件进行显式建模,使得对高优先级任务的分配被设计/训练成适合特定于需求模式的sla。
[0156]
初始地,将经由以实验方式验证的示例来描述本发明的一个实施例。图15a示出了传统上如何向高优先级工作负载提供某个量的优选资源分配1501。将其余部分提供给任何最大努力“be”工作负载。高优先级工作负载的曲线1502示出了得到利用的所分配资源的实际部分。
[0157]
图15b示出了可以安全地提供给be工作负载的基于时间间隔的变化量的分配1510(即,曲线的上边界)。本发明的一个实施例动态地跟踪资源利用率并且将该附加资源分配提供给be工作负载,从而允许be工作负载利用原本将被留下未使用的可用资源。
[0158]
图15a

b中的曲线表示的受控资源可以是处理器或计算系统内的任何共享组件,包括但不限于:cpu循环、llc利用、存储器带宽、存储器利用、套接字级功率消耗、io带宽以及页面高速缓存容量,仅举几例。此外,曲线不需要表示单个资源。而是,可重定向动态资源容量的区域可以是表示相关和/或不相关资源集合的多维体积。这是本发明的实施例恢复以便改进性能、效率、tco和功率消耗的被浪费的容量。挑战在于针对如下高优先级工作负
载保存期望的服务质量度量:该高优先级工作负载对(一个或多个)资源的需求是动态的,并且可能无法提前预期。
[0159]
本发明的实施例包括与动态闭环资源控制相关联的新颖技术。在一个实施例中,使用了在先训练,该在先训练体现为经训练的模型,该经训练的模型连续地将资源分配引导朝向复杂的可满足性区域(由图15b中的线1511下方的区域表示)。在这样做情况下,该实施例包括用以基于一个或多个主导指标(leading indicator)在每个时间点处标识前向可满足性区域(forward satisfiability region)的技术。
[0160]
该实施例的一个实现方式是利用intel双插口xeon platinum 8176 cpu服务器(skx)构建的,该intel双插口xeon platinum 8176 cpu服务器(skx)运行来自dpdk的ipv4转发作为高优先级工作负载,并且运行来自spec cpu 2006的omnetpp作为最大努力工作负载。该配置包括十一个llc通路。默认设置是分配给高优先级ipv4工作负载的9个通路和分配给最大努力工作负载的2个通路。通过在高优先级工作负载与最大努力工作负载之间动态地分配llc通路来导出策略。图16图示了用于模拟24小时网络业务模式的进入业务模式1601。
[0161]
图17a

c图示了以每秒指令来测量的be工作负载的运行时性能。在基线静态资源分配中,如图17a中所示,高优先级工作负载的分组丢弃率最小(<0.01%),而be工作负载具有最低性能。在这种情况下,资源分配包括:将llc的11个通路之中的9个通路分配给高优先级工作负载,并且将其余2个通路用于最大努力工作负载。
[0162]
图17b图示了最大努力工作负载在如下动态方案下的性能:该动态方案使用如本文中描述的基于模型的控制以在连续时间区段中不同地操控llc的通路数量。在该实施例中,基于模型的控制预测(预期)图16的高优先级工作负载的需求峰值,从而在第三和第五时间区段中为高优先级工作负载保持更多的高速缓存通路,并且维持目标(<0.01%)分组丢弃。在平均更多的llc通路在图17b中可用于be工作负载的情况下,在所有时间区段中实现了总体更高的性能,其中在第3和第5区段中出现了小幅下降;在这些实验中,平均be工作负载增益为37%,同时满足了针对高优先级工作负载的基线工作负载的<0.01%分组丢弃标准。可以将图17b与图17c中所示的最佳可能行为进行比较(表示理论上的“理想”分配)。
[0163]
在一个实施例中,使用经训练的强化学习(rl)模型来操控图17b中的资源分配。下面提供rl模型的附加细节。总之,当在一个具体实现方式中被使用时,该模型:(1)针对高优先级工作负载,将较高级别的惩罚与较高级别的分组丢弃相关联,并且对奖励进行关联以用于将分组丢弃维持在sla阈值以下;(2)针对为最大努力工作负载的动态更高级别的llc分配来关联变化级别的奖励,从而有条件地满足高优先级工作负载的sla阈值;(3)针对(1)、(2)中的高优先级工作负载和最大努力工作负载两者,生成包括奖励和惩罚函数的组合的总奖励;以及(4)基于过去n个时间窗口的进入业务速率、过去n个时间窗口的分组处理时延、以及高优先级工作负载的当前资源分配来初始化资源分配改变动作和状态。
[0164]
rl模型制定成功的一个原因是:使用最近n个时间窗口的进入速率和时延作为主导指标,所述主导指标可预测对于当前到达的分组在下一个时间步骤中将发生什么。因此,训练教导控制模型以预期图16的测试进入函数中的峰值。通过将该信息集成为来自未来
(预测)状态的反馈,闭环资源控制方案是有效地主动性的而不是反应性的。
[0165]
虽然本文中描述的一个实现方式使用rl训练方案,但是任何其他反馈控制方案都可以用于跟踪和调整动作,包括基于主导指标分析、模型、模拟和公式的动作。使用复合反馈来进行资源分配修改,该复合反馈包括基于当前指标的距目标的当前距离以及目标的预期未来轨迹。对于图17a

c的示例,rl训练的控制模型遵循动作

状态

奖励交互。
[0166]
在图18中图示用于rl训练的控制交互的架构的一个实施例。以硬件、软件或其组合而实现的资源分配器1802基于来自动态资源控制器1801的输入来指定资源分配。例如,资源分配器1802可以用信号发送对处理器/系统资源的特定集合的重新分配,诸如存储器带宽分配和高速缓存容量分配(例如,从最大努力工作负载重新分配给高优先级工作负载,或者反之亦然)。在延迟1803之后,奖励确定逻辑1804评估资源分配动作的结果(包括不同监测变量的惩罚和奖励值)以确定总奖励值,如上所描述的那样。基于奖励值和当前状态1800,动态资源控制器1801执行基于奖励值的强化学习以控制资源分配器1802,该资源分配器1802请求针对最大努力和高优先级工作负载的更高效的资源分配。
[0167]
图19图示了用以实现任何闭环控制逻辑(包括但不限于强化学习逻辑)的一个实施例。框架的该实施例包括遥测数据收集器1910,其用于收集和评估与不同类型的工作负载有关的遥测数据,所述不同类型的工作负载包括但不限于:最大努力工作负载、高优先级工作负载、多线程工作负载和单线程工作负载。在一个实施例中,遥测数据收集器1910过滤遥测数据,标识/生成遥测数据/事件1911、和/或针对与感兴趣的性能度量有关的遥测数据的监测数据/事件1912。作为示例而非限制,这可以包括存储器时延数据、每单位时间回退的指令数量、高速缓存未命中率和高速缓存分配级别。然而要注意的是,可以用这种方式来跟踪任何类型的性能度量。例如,对于诸如ipv4工作负载之类的联网工作负载,所跟踪的度量可以包括分组丢失和分组处理时延。
[0168]
在一个实施例中,资源分配控制器1920分析遥测数据/事件1911和/或监测数据/事件1912以确定平台优化1905,以用于在平台硬件1904上同时执行最大努力工作负载1901和高优先级工作负载1902。资源分配控制器1920的一个实现方式执行控制功能,诸如图18中所示的强化学习实现方式。可替代地或附加地,资源分配控制器1920可以实现其他机器学习、深度学习、或用于智能地操控平台硬件1904上的资源分配的任何其他策略。因此,虽然本文中描述的某些实施例聚焦于强化学习,但是本发明的基本原理不限于动态优化引擎的任何特定形式。在实现满意度区域中对不确定性进行量化的某些概率技术也可以有效地取决于经量化的不确定性在较不保守与更保守的级别之间适配资源分配。
[0169]
在给定的实现方式中,多个工作负载可以以各种优先级级别在服务器平台上运行。例如,一个实现方式可以包括三个级别,高优先级、中优先级和最大努力,而另一种实现方式可以仅包括高优先级和最大努力优先级级别。在一个实施例中,优先级级别被指定为0至n范围内的数字,其中0包括最低优先级,并且n包括最高优先级(即,其中优先级基于增加的优先级值而增加)。
[0170]
无论如何定义优先级,都可以根据不同的关键性能指标(kpi)(诸如,分组丢失率、时延、吞吐量和抖动)来定义每个优先级类别的sla。在同时执行工作负载的情况下,具有其中不同kpi彼此干扰的复杂的可满足性区域是可能的。
[0171]
资源分配框架的一个实施例允许每个应用注册多个kpi,以使得它可以做出智能
分配决策。在该实现方式中,遥测收集子系统1910周期性地收集遥测数据,对其进行过滤并且将其存储在数据库中,并且经由各种监测工具提供用于可视化的接口。可以包括遥测数据/事件1911和监测数据/事件1912的经滤波/处理的遥测数据由资源分配控制器1920消耗,资源分配控制器1920评估遥测数据以针对下一个时间窗口(或下两个或三个时间窗口以便减少振荡)来优化资源分配1905。在一个实施例中,针对这些优化1905的决策做出粒度可以由用户来配置。
[0172]
在一个实现方式中,通过从分析实验工作负载、从使用概率模型的连续学习、和/或从使用现场机器学习方法的周期性和自动学习(例如,强化学习)、或使用层次结构获得的启发式方法来导出由资源分配控制器1920执行的优化。在一个实施例中,使用了一种整体模型,其中动态地且快速地执行粗粒度校正,并且随着时间在粗粒度校正上应用更细粒度的校正,从而具有较小的努力和较少的风险。
[0173]
如所提及的,资源分配控制器1920的一个实施例在每个时间窗口中使用主导指标来进行优化1905。在该实施例中,资源分配控制器1920并入分析和遥测数据1911

1912以用于主导因子观察;其中遥测数据收集器1910捕获业务负载和资源使用的主导因子,使得它可以基于过去的环境状态来主动地采取动作。作为示例而非限制,使用这些技术,资源分配控制器1920可以防止分组丢失发生,而不是仅仅在观察到分组丢失已经发生之后才采取反应性动作,如利用比例

积分

微分(pid)方法的情况那样。可以收集各种形式的遥测数据/事件1911和监测数据/事件1912,诸如队列占用、高速缓存未命中率、过去n个时间窗口的进入业务速率、过去m个时间窗口的分组时延、硬件资源利用和应用性能。
[0174]
如所提及的,资源分配控制器1920的一个实施例将来自图15b中的区域1510的资源重新分配给最大努力工作负载。在给定该分配是代表非关键最大努力工作负载而执行的情况下,资源分配控制器1920的一个实施例实现风险缓解策略,从而允许较高优先级工作负载抢占资源而无需等待下一个时间窗口边界。例如,如果分组丢失率增加并且在当前时间段内处于阈值之内(例如,由于快速上升的进入率),则资源分配控制器1920在检测到该状况时抢先于最大努力工作负载来动态地重新分配一个或多个资源。
[0175]
该实现方式可以通过立即进行过度校正并且然后进行放松来抑制振荡,从而使更多资源再次变得可用于分配给最大努力工作负载。有时,对最大努力工作负载的唯一负面影响可能是增加了其时延,这可能比吸收高优先级工作负载上的命中(hit)可接受得多。因此,在图17a

c的示例中,如果分组丢失率上升,则硬件可以抢先增加针对高优先级工作负载的高速缓存分配,而不是等待软件在每个决策窗口的开始处进行决策。这种混合的硬件和软件协调通过更抢先地采取动作来防止高优先级工作负载的分组丢失,同时仍然使最大努力工作负载的性能最大化。
[0176]
通常,当对其可用性有限的资源的需求率接近饱和水平时,响应时间没有界限地增长。例如,在m/m/1

ps(具有处理器共享的指数分布的到达间隔和服务时延分布)中,需要 量的服务的到达的平均响应时间可以示出为,其中λ和μ分别是到达率和服务率,这意味着随着λ接近μ,响应时间将无界限地增长。该观察的意义在于:无论针对高优先级工作负载预留了多少容量,太大的到达突发都可能导致响应时间中的偏移,并且因此违反严格的sla。作为结果,sla必须随附关于到达率的条件(即需求曲线),在该条件(即需求曲线)下,sla可以被满足。作为简单的示例,如果图16中的峰值太大(例如诸如,采用脉冲
函数的形式),则即使将llc的所有11个通路都分配给ipv4工作负载,也将导致sla违反。
[0177]
在一个实施例中,针对高优先级工作负载的sla满意度条件伴随有针对到达突发可以有多大的上限。该sla可以是其中到达间隔时间的倒数的某个指定的百分位数(例如第95个、第99个百分位数等)必须在阈值以下的渐变sla,并且该阈值是sla的函数。作为结果,代替于尝试满足相对于到达间隔时间直方图不变的绝对sla,而是定义了sla的一个实施例,其在每个决策间隔内以峰值到达间隔率的第n个百分位数而弯曲。该特征在本文中被称为滑动sla或渐变sla,其中所允许的kpi值改变。因此,当在给定决策间隔中到达的数量过多(例如,超过阈值)时,一些分组丢弃可以被原谅(即,在奖励/惩罚确定中不被考虑)。
[0178]
考虑到这种布置,本发明的一个实施例包括用于操控资源的模型,该模型被训练成满足动态满意度准则,该动态满意度准则随着时间窗口内的瞬时到达率而改变。另外,一个实施例在某些条件下从严格的sla调整成更灵活的sla。例如,当针对高优先级工作负载不能够满足严格的sla(此处被称为“s1”)时,满足所定义的较不严格的sla“s2”以使得从s1到s2的转变的总数被限界是可允许的。例如,可以将s1定义为0个分组丢弃并且最大时延<15微秒,并且可以将s2定义为0个分组丢弃并且最大时延<20微秒,或者1个分组丢弃并且最大时延<15微秒。sla可以指定在10毫秒时间间隔内不多于两个s1

s2转变。在这种情况下,初始地将目标设置为s2,并且然后如果在满足s2的同时s1被超过两次,则在其余时间间隔内将目标重置为s1,并且如上面描述的那样实施抢占(例如,抢占较低优先级工作负载)。
[0179]
以上特征的益处在于:它们允许sla内置作为需求的函数的小量松弛,并且利用该松弛通过作为可用松弛的函数来向较低优先级工作负载倾注更多的资源,从而改进有益的利用。
[0180]
将关于图20来描述用于使用ipv4转发作为高优先级工作负载并且使用omnetpp作为最大努力工作负载来确定资源分配策略的具体实现方式。上面提供了该平台的细节(例如,英特尔双插口xeon platinum 8176 cpu服务器(skx)等)。在该实施例中,强化学习(rl)方法用于管理分组丢失。rl控制器2001连续地与该系统交互,以收集相关数据并且学习使成本函数最大化的策略。在该实施例中,在资源学习中使用的组件包括:动作(a)、状态(s)、策略(p)和奖励(r)。实现当前策略的rl控制器2001基于当前状态2000来为每个可能动作输出“q值”。在该实现方式中,rl控制器2001可以执行q学习或其他强化学习,该q学习或其他强化学习基于学习到的策略(例如,sarsa、深度q网络、深度确定性策略梯度等)来生成q值。
[0181]
在一个实施例中,具有最大q值的动作被应用于以资源分配的形式执行动作的资源分配器2002。在实现了每个动作之后,在延迟元件2003之后,奖励确定逻辑2004基于所测量的分组处理数据(例如,分组丢失度量)来确定奖励值。然后,rl控制器2001使用新状态2000和奖励值来改进策略,从而潜在地基于状态2000来指定新分配动作。
[0182]
当在分组丢失的特定上下文中使用时,动作a可以是分配给下一个时间窗口的高优先级和最大努力工作负载的末级高速缓存(llc)通路的数量。状态s是过去n个时间窗口的进入业务速率、过去m个时间窗口的分组时延、以及当前末级高速缓存分配。
[0183]
奖励r反映了如下目标:针对具有最低可能分组丢失的高优先级工作负载分配最少的可能llc通路,并且将剩余llc通路分配给最大努力工作负载以改进服务器利用。
[0184]
在一个实施例中,所设计的奖励函数为:
在此处,pkt_loss是在当前时间窗口期间丢弃的分组的数量。rpkt_loss是针对分组丢失的奖励。如果分组小于预定义的可接受阈值(例如,零分组丢失或低分组丢失,这取决于使用情况),则针对rpkt_loss分配正奖励+m4。如果分组丢弃高于该阈值th3,则针对rpkt_loss分配负奖励作为惩罚。pkt_loss越大,惩罚越大(m1>m2>m3)。
[0185]
rrdt是针对llc通路分配的奖励。当不存在分组丢弃时,针对将较少llc通路用于高优先级工作负载的情况,提供更高的奖励。当存在分组丢弃时,针对将较多llc通路用于高优先级工作负载的情况,提供更高的奖励。
[0186]
总奖励rtotal是rpkt_loss和rrdt的总和,它考虑了分组丢失和llc通路分配二者。在训练该模型时,rtotal将采用当前软件和平台参数作为输入,并且将资源分配策略输出到资源分配器2002,资源分配器2002在下一个时间窗口中实现资源分配。
[0187]
图21图示了根据本发明的一个实施例的方法。该方法可以在本文中描述的处理器和系统架构的上下文内实现,但不限于任何特定架构。
[0188]
在2101处,监测多个工作负载对多个执行资源的使用。如上所提及,工作负载可以包括与所保证的性能水平相关联的高优先级工作负载以及与所保证的性能水平不相关联的最大努力工作负载。在其他实施例中,可以指定三个或更多个优先级级别。
[0189]
在2102处,收集与该多个工作负载在一个或多个时间段(例如,指定的秒数、分钟数、小时数、天数等)内对该多个分配的资源的使用有关的数据。例如,所收集的数据可以类似于图16和图17a

b中所示的数据。
[0190]
在2103处,分析所收集的数据以标识在随后时间段中可以从一个或多个高优先级工作负载重新分配给一个或多个最大努力工作负载的资源。例如,可以标识图15b中的1510处所示的盈余资源。此外,可以确定高优先级工作负载的周期性特性,如图16中所示,以使得该系统可以预期附加资源将何时可用于重新分配,如图17b中所示。如上所提及,可以由机器学习引擎来执行分析。在一个具体实现方式中,执行强化学习以评估在各个时间段内收集的数据,生成奖励值以修改资源分配,以及继续收集数据并且基于学习到的关于工作负载特性的信息来更新奖励值。
[0191]
在2104处,在随后的一个或多个时间段期间,将所标识的资源重新分配给最大努力工作负载。在一个实施例中,基于在高优先级工作负载中检测到的任何周期性,针对第一时间段分配第一量的资源,针对第二时间段分配第二量的资源等等。
[0192]
在2105处,利用新的资源分配来执行最大努力和高优先级工作负载。关于所保证的性能水平来连续地监测高优先级工作负载。例如,在一个实施例中,资源分配管理器(例如,如下所描述的集群管理器或节点级管理器)监测某些保证的性能指标,以确保高性能工
作负载符合指定的关键性能指标(kpi)。这可以包括例如所保证的时延和吞吐量值。
[0193]
在2106处,如果确定高优先级工作负载的所保证的性能水平接近违背条件(或者如果该性能水平已经被违背),则在2107处,抢先将资源从最大努力工作负载分配给高优先级工作负载,以确保维持所保证的性能水平(或尽可能快地校正该违背)。
[0194]
使用上面描述的技术,监测工作负载并且动态地分配盈余资源,以更高效地执行最大努力工作负载。同时,监测高优先级工作负载,以确保符合现有的关键性能指标(kpi)。在一个实施例中,下面描述的英里标记也用于连续地监测高优先级工作负载,即使在基于节点的分布式流水线架构上执行时。
[0195]
用于性能监测和动态资源分配的有表现力的工作负载性能指标边缘、云和其他新兴架构(例如,功能即服务)的关键要素之一是如何在维持某个服务质量或服务水平协议(sla)的同时最大化每个平台的服务密度。从该意义上来说,针对设计平台以满足时延或带宽实例,存在权衡。
[0196]
增加服务的数量直接转变成吞吐量和时延两者中的增加。例如,在进行性别面部识别的情况下,已经观察到的是,吞吐量从针对单个核低于5 ms的时延下的20 fps(每个服务)增加高达在20个核的情况下每个请求40 ms的时延下的140 fps(每个服务)。
[0197]
因此,取决于要优化的度量,应当以不同的方式以及利用适当的服务旋钮质量来填充该平台。就服务质量或服务水平协议而言,可以适用若干个类型的潜在模型:1)针对该特定服务的无服务质量或服务水平协议(sla)。这可能意味着没有附加固定量的私有或共享资源。2)软服务水平协议。服务提供了对一组量的私有资源(例如核、逻辑处理器等)和共享资源(例如llc、存储器等)的分配。在该模型中,服务将取决于私有和共享资源可以提供的计算量向用户提供吞吐量和时延。然而,计算水平可能限于使用共享资源的服务量。因此,在这种场景中,当服务数量和对平台的压力增加时,99%的所保证的时延可能是不可能的。3)硬服务水平协议。服务正在私有模式下使用所有的资源。在这种情况下,预期的抖动应当最小。为了实现该sla,可以采用两种方法:(a)该平台被充分地分配给服务;以及(b)可以使用分配方案(诸如,高速缓存分配技术或存储器带宽分配技术)对所有共享资源进行硬分区并且分配给个体线程/任务。
[0198]
在当前系统上实现真正的端到端硬件分区(包括l1、l2分配、存储器带宽分配,i/o等)是不切实际的。此外,由于多租户和多服务整合随着核计数的增大而增加,端到端分区将变得更具挑战性。在这种系统上,将难以标识特定服务正在利用的资源。在将工作负载分解成链接在一起的微服务或功能集合时,特别地加剧该问题,在该情况下,必须考虑对其他集群级资源(诸如,网络、存储器、存储装置和加速器)进行适当的管理。
[0199]
如今,不存在能够通过软件与该软件在其上运行的硬件之间的合同来表达和监测服务水平协议的通用技术。服务水平协议当前按照层级来表达,该层级用于提供对资源分配的有区别的对待。然而,不存在对性能的保证,这是因为难以将这些资源的效能连接到所分配的应用及其对性能的影响。
[0200]
图22图示了用于面部识别的端到端应用的一个特定示例,并且该应用分解成在数据中心内的不同节点上运行的多个阶段。简要地,压缩视频流2201由视频解码组件2205(例
如,使用h.264/h.265)来解码,并且所得的未压缩视频流(以及直接接收到该系统中的未压缩视频流2202)由视频预处理组件2210来预处理。例如,视频处理组件2210执行归一化操作,诸如调整大小、切片和色彩空间转换。面部检测/提取组件2215执行面部检测操作(例如,使用多任务级联卷积神经网络(mtcnn)、yolo面部、单发(ssd)等),并且特征提取组件2220提取相关图像特征,从而减少存储要求。最终,分类组件2225使用二进制分类技术(诸如,支持矢量机(svm))来执行面部分类。需要适当地监测和管理该执行流水线中的所有组件(计算、网络、存储),以具有实时或可预测的端到端性能保证。
[0201]
本发明的实施例允许应用/工作负载通过产生进度标记(也被称为“英里标记”)来传送进度,硬件使用该进度标记(也被称为“英里标记”)来监测并且动态地适应工作负载改变。特别地,进度标记提供了一种高效的机制,以允许硬件(和相关联的软件,如果适用的话)监测工作负载进度并且相应地分配资源,以满足工作负载与硬件之间的服务水平协议的要求。
[0202]
本发明的一个实施例将应用性能目标(诸如,服务水平目标(slo))与资源分配相关联以便实现slo。传统上,已经在软件级别上管理了slo和sla。然而,随着核计数的增加和高速率动态应用要求,软件管理的解决方案未能提供有意义的sla一致性。利用本发明的实施例,硬件机制使用英里标记来按照英里标记/时间(例如,按照吞吐量和/或时延)来表达sla,从而针对sla一致性提供了显著改进的资源分配。
[0203]
在一个实施例中,本地硬件基于服务经由性能英里标记提供的slo策略来建立各种sla。每当无法实施该策略时,就通知全局循环,以便实现系统级别策略(例如,将服务迁移到另一个节点或边缘位置)。本发明的一个实施例包括以下组件:1)工作负载工具化,用以表达其执行进度的概念,有时也被称为“英里标记”;2)服务提供商定义以及sla到工作负载性能的映射(例如,速度可以用英里/秒、以及英里标记之间的时间时延来表达);3)在各种级别(例如,集群级别、节点级别、组件级别等)下的硬件,用以测量工作负载进度(速度监测)。
[0204]
用于面部识别的视频分析流水线的示例将用于说明本发明的一个实施例的操作。然而,应当注意的是,本发明的基本原理不限于任何特定类型的应用流水线或工作负载集合。
[0205]
图23图示了进入数据中心并且被处理以检测和识别面部的压缩视频流的端到端流程。在该实现方式中,数据中心支持分布式流平台(诸如,apache kafka),该分布式流平台(诸如,apache kafka)包括处理节点组2305、2310、2320和2330,并且每个组被配置为在总体处理流水线中的一个阶段处执行特定的操作集合。
[0206]
在图23中所示的视频分析示例中,从相机2301捕获的流被传输到摄取(ingestion)和解码节点2305(例如,以30fps、60fps等),摄取和解码节点2305包括用以接收视频流2305a、将视频流2305b解码(例如,经由h.264/h.265解码器)、并且将经解码的视频2305c传输到消息传递节点2310的集合的电路/逻辑。
[0207]
消息传递节点2310被专门设计成:将从数据生产者(例如,摄取和解码节点2305)接收到的数据存储到持久性和/或易失性存储装置2315,并且响应于来自数据消费者的请求而从持久性存储装置2316传输该数据。在这种情况下,消费者是一组检测节点2320,它们
接收视频帧2321,检测视频帧2322中的面部,并且将检测结果2323发送回到消息传递节点2310。
[0208]
消息传递节点2310接收结果并且存储到持久性/易失性存储装置2317,并且响应于来自一组推理节点2330的请求而从持久性存储装置2318传输该数据。推理节点接收检测结果2331,对结果(诸如,面部识别)执行推理操作2332以生成面部识别结果,并且将面部识别结果传输回到消息传递节点2310,可以将面部识别结果从该消息传递节点2310分配给请求了面部识别的计算设备。
[0209]
面部识别流程的总体性能取决于通过摄取、检测和推理的所有阶段的工作负载的进度,这些阶段包括由消息传递节点2310支持的消息传递阶段,该消息传递节点2310在一个实施例中由apache kafka实现。该示例的工作负载性能指标(kpi)是每秒识别的面部数量,该数量取决于该流程中的所有组件/节点2305、2310、2320、2330。分配计算、网络和存储资源以支持作为服务水平协议的所需kpi(面部/秒)是非常困难的。例如,面部/秒kpi对于硬件或资源编排器进行理解并采取行动而言是不够通用的。另外,它不能直接转换成该集群执行流水线的不同阶段2305、2310、2320、2330处的资源分配。
[0210]
本发明的一个实施例包括用以支持当每个工作负载在集群中的不同节点之间进行时监测该工作负载的软件和/或电路。如上所提及,这可以通过在代码中添加进度标记(在本文中也被称为“英里标记”)并且按照进度标记指定性能期望来实现。
[0211]
图24a图示了使用仪表化英里标记mm1

mm9来跟踪各种处理节点2305、2310、2320和2330之间的执行流程的图23的面部识别示例。在发起或完成不同阶段时,使用英里标记来宣布通过流水线的工作负载的进度。例如,可以在首次接收到帧时生成mm1,可以在发起或完成解码时生成mm2,并且可以在将经解码的帧传输到消息传递节点2310时生成mm3。以类似的方式,可以在从消息传递节点2310接收到帧时生成mm4,可以在发起或完成面部检测操作时生成mm4,并且可以在将面部识别数据传输回到消息传递节点2310时生成mm6。分别基于接收2331、推理2332和发送2333组件的处理的发起或完成来类似地生成英里标记mm7、mm8和mm9。
[0212]
在一个实施例中,每个英里标记包括指示其流水线阶段何时发起和/或完成的时间戳。另外,英里标记可以指示处理阶段和/或在其上实现该阶段的特定节点。
[0213]
在一个实现方式中,分别与每组节点2304、2320和2330相关联的节点级资源管理器2405、2420和2430评估各种英里标记mm1

mm9中包含的性能数据,并且在必要的情况下采取校正动作以确保符合相关的kpi。例如,如果英里标记指示在阈值以下的性能,则与摄取和解码节点2305相关联的节点资源管理器2405可以重新分配处理资源以改进接收、解码和/或发送阶段2305a

c下的性能。
[0214]
在一个实施例中,资源管理器在集群管理器2450的控制下操作,集群管理器2450评估来自整个处理集群的英里标记(以及潜在地其他监测数据)以做出集群范围的资源分配决策。集群管理器2450可以标识节点2305、2310、2320和2330的一个或多个组,这些节点表示总体处理流水线的性能瓶颈。例如,基于英里标记中包含的定时数据,集群管理器2450可以确定检测节点2320正在增加流水线的时延以达到或接近阈值。作为响应,集群管理器2450可以将附加的节点初始化成检测节点组2320以改进时延。
[0215]
因此,在该实施例中,节点级资源管理器2405、2420、2430可以基于英里标记来快
速且高效地执行本地资源分配操作,并且集群管理器2450可以执行集群范围的资源分配,以确保对于工作负载,诸如吞吐量和时延之类的kpi被满足。另外,服务提供商管理器2460可以基于从多个集群管理器2450接收到的英里标记(和其他数据)来执行服务范围的分析和资源分配。
[0216]
使用以上技术,可以提供服务提供商sla作为英里标记的量度、作为集群管理器2450和/或节点资源管理器2405、2420、2430将实施的与吞吐量和时延有关的协议。另外,每个集群管理器2450可以使用这些技术来优化对不同租户的调度以及计算、网络和存储组件,以在降低成本的同时确保所需的sla一致性。
[0217]
在平台和/或处理器级别处,一个或多个节点级资源管理器2405、2420、2430可以监测执行的不同阶段并且管理内部资源分配。资源分配的分配和实施可以通过调整如下各项来实现:分配给工作负载的核或逻辑处理器的数量、核(或核组)的频率、分配给每个工作负载的高速缓存资源的量(例如,高速缓存通路数量、高速缓存存储量)、以及分配给每个工作负载的存储器带宽。一旦已经进行了资源分配,节点级资源管理器2405、2420、2430就可以经由高速缓存分配实施、存储器带宽实施等、或任何其他处理器级资源管理电路来实施资源分配,以提供集群管理器2450所请求的性能保证。
[0218]
如图24b中所图示,可以在处理器1350内的本地资源管理器2405中实现如上所描述的用于基于英里标记来调整资源分配的各种技术。特别地,资源监测电路1305(先前在上面关于图13描述的)可以评估响应于跨各种服务提供商节点之上的工作负载执行而触发的英里标记。如果资源监测电路1305确定未满足sla的性能保证,则它可以确定在节点2305、2320、2330中的一个或多个上的资源的重新分配。实施电路1302然后可以在每个个体节点上(例如,在节点的每个处理器1350内)实施新的资源分配。
[0219]
使用以上技术,服务提供商sla可以以特定于应用的方式来指定工作负载度量,从而反映该应用提供的最终服务。例如,对于面部识别,工作负载度量可以以面部/秒来表达。另外,关键性能指标可以使用英里标记来表达。例如,可以将吞吐量kpi指定为英里标记1

9/秒,并且可以将时延kpi指定为英里标记1和9之间的时间。
[0220]
可以实现集群管理器2450扩展,以指定每英里标记阶段的节点数量、用于sla保证的路由的英里标记节点的放置、以及用以满足sla要求的加速器的动态分配。
[0221]
图25图示了用以支持应用级别sla的英里标记监测和资源管理的表示。在表2501中示出了预期状态2510,并且在表2503中指定了当前状态2530,这两者基于英里标记mm1

mm7的集合。以英里标记/秒来指定sla吞吐量值,并且将sla时延值指定为要生成的所有英里标记的时间。
[0222]
调度器/资源管理器2520基于在预期状态2510与当前状态2530之间检测到的差异来动态地调整资源分配。例如,在一个实施例中,调度器/资源管理器2520将调整资源分配以尝试使当前状态2530与预期状态2510一致。
[0223]
在图26中图示了根据本发明的一个实施例的方法。该方法可以在本文中描述的架构上实现,但是不限于任何特定处理器或系统架构。
[0224]
在2601处,收集与对不同优先级级别处的多个工作负载的执行有关的遥测数据。例如,在一个实施例中,工作负载被分类为高优先级工作负载和最大努力工作负载。在2602处,使用遥测数据来执行机器学习,以确定执行资源的更高效分配是否是可能的。如上所描
述,例如,在一个实施例中,使用强化学习引擎来确定是否根据奖励系统来执行资源分配(即,其中基于所测量的性能度量来生成奖励和惩罚)。
[0225]
在2603处,如果更高效的资源分配是可能的,则在2604处,修改与该多个工作负载相关联的一个或多个资源分配。如果更高效的分配是不可能的或者无法保证,则过程返回到2601。
[0226]
在图27中图示了根据本发明的一个实施例的方法。该方法可以在本文中描述的架构上实现,但是不限于任何特定处理器或系统架构。
[0227]
在2701处,在包括多个节点的分布式计算流水线上执行多个工作负载,以执行多个流水线阶段。上面关于图24描述了一个这种实施例。
[0228]
在2702处,响应于一个或多个流水线阶段的发起或完成来生成英里标记。例如,响应于与第一节点集合相关联的第一和第二流水线阶段的发起,可以生成英里标记并且将其提供给如上所描述的本地资源管理器。
[0229]
在2703处,使用英里标记来监测多个分布式工作负载的执行,以确定:针对一个或多个工作负载,是否满足吞吐量和/或时延要求(例如,如在sla/kpi中所指定的)。如果是这样,则在2704处,不修改当前资源分配,并且该过程返回到2701。如果否,则在2704处,做出改变一个或多个资源的决策。在2705处,根据当前资源分配策略来修改一个或多个资源分配。
[0230]
示例以下是本发明的不同实施例的示例实现方式。
[0231]
示例1。一种方法,包括:收集与多个工作负载在一个或多个时间段内对多个资源的使用有关的数据,所述工作负载包括与一个或多个所保证的性能水平相关联的优先级工作负载、以及与所保证的性能水平不相关联的最大努力工作负载;分析所述数据以标识在一个或多个随后时间段内从一个或多个优先级工作负载到一个或多个最大努力工作负载的资源重新分配,同时仍然维持所保证的性能水平;在随后时间段内将资源从优先级工作负载重新分配到最大努力工作负载;在随后时间段期间,关于所保证的性能水平来监测优先级工作负载的执行;以及响应于检测到所保证的性能水平处于被违背的危险之下,在随后时间段期间抢先将资源从最大努力工作负载重新分配到优先级工作负载。
[0232]
示例2。根据示例1所述的方法,其中所保证的性能水平包括所保证的时延和/或所保证的吞吐量。
[0233]
示例3。根据示例2所述的方法,其中将所保证的性能水平指定为服务水平协议(sla)的关键性能指标(kpi)。
[0234]
示例4。根据示例1所述的方法,其中分析包括:使用所述数据来执行强化学习以标识资源重新分配,同时仍然维持所保证的性能水平。
[0235]
示例5。根据示例4所述的方法,其中执行强化学习进一步包括:生成与向最大努力工作负载的资源分配相关联的第一一个或多个奖励值;响应于检测到与优先级工作负载相关联的指定性能度量而生成第二一个或多个奖励值和/或一个或多个惩罚值;将奖励值和惩罚值相加以生成最终奖励值;以及重新分配资源以尝试使最终奖励值最大化。
[0236]
示例6。根据示例5所述的方法,其中资源分配包括向最大努力工作负载的高速缓存分配,其中所述高速缓存分配中的增加用以生成增加的奖励值。
[0237]
示例7。根据示例6所述的方法,其中所述第二一个或多个奖励值包括针对维持与一个或多个所保证的性能水平的一致性的性能奖励值。
[0238]
示例8。根据示例1所述的方法,其中资源分配的第一集合将由处理器的资源管理电路来执行。
[0239]
示例9。根据示例8所述的方法,其中资源分配的第一集合包括高速缓存占用水平和高速缓存或存储器带宽。
[0240]
示例10。一种装置,包括:遥测数据收集器,用以收集与多个工作负载在一个或多个时间段内对多个资源的使用有关的数据,所述工作负载包括与一个或多个所保证的性能水平相关联的优先级工作负载、以及与所保证的性能水平不相关联的最大努力工作负载;资源分配控制器,用以分析所述数据以标识将在一个或多个随后时间段内从一个或多个优先级工作负载重新分配到一个或多个最大努力工作负载的资源,同时仍然维持所保证的性能水平,资源分配控制器用以在随后时间段内将资源从优先级工作负载重新分配到最大努力工作负载;遥测数据收集器用以在随后时间段期间关于所保证的性能水平来监测优先级工作负载的执行;以及资源分配控制器用以响应于检测到所保证的性能水平处于被违背的危险之下,在随后时间段期间抢先将资源从最大努力工作负载重新分配到优先级工作负载。
[0241]
示例11。根据示例10所述的装置,其中所保证的性能水平包括所保证的时延和/或所保证的吞吐量。
[0242]
示例12。根据示例11所述的装置,其中将所保证的性能水平指定为服务水平协议(sla)的关键性能指标(kpi)。
[0243]
示例13。根据示例10所述的装置,其中资源分配控制器包括:机器学习引擎,用以使用所述数据来执行强化学习以标识资源重新分配,同时仍然维持所保证的性能水平。
[0244]
示例14。根据示例13所述的装置,其中执行强化学习进一步包括:生成与向最大努力工作负载的资源分配相关联的第一一个或多个奖励值;响应于检测到与优先级工作负载相关联的指定性能度量而生成第二一个或多个奖励值和/或一个或多个惩罚值;将奖励值和惩罚值相加以生成最终奖励值;以及重新分配资源以尝试使最终奖励值最大化。
[0245]
示例15。根据示例14所述的装置,其中资源分配包括向最大努力工作负载的高速缓存分配,其中所述高速缓存分配中的增加用以生成增加的奖励值。
[0246]
示例16。根据示例15所述的装置,其中所述第二一个或多个奖励值包括针对维持与一个或多个所保证的性能水平的一致性的性能奖励值。
[0247]
示例17。根据示例10所述的装置,其中资源分配控制器的至少一部分包括处理器内的资源管理电路,所述资源管理电路用以执行资源分配的第一集合。
[0248]
示例18。根据示例17所述的装置,其中资源分配的第一集合包括高速缓存占用水平和高速缓存或存储器带宽。
[0249]
示例19。一种其上存储有程序代码的机器可读介质,所述程序代码在由机器执行时使得所述机器执行以下操作:收集与多个工作负载在一个或多个时间段内对多个资源的使用有关的数据,所述工作负载包括与一个或多个所保证的性能水平相关联的优先级工作负载、以及与所保证的性能水平不相关联的最大努力工作负载;分析所述数据以标识在一个或多个随后时间段内从一个或多个优先级工作负载到一个或多个最大努力工作负载的
资源重新分配,同时仍然维持所保证的性能水平;在随后时间段内将资源从优先级工作负载重新分配到最大努力工作负载;在随后时间段期间,关于所保证的性能水平来监测优先级工作负载的执行;以及响应于检测到所保证的性能水平处于被违背的危险之下,在随后时间段期间抢先将资源从最大努力工作负载重新分配到优先级工作负载。
[0250]
示例20。根据示例19所述的机器可读介质,其中所保证的性能水平包括所保证的时延和/或所保证的吞吐量。
[0251]
示例21。根据示例20所述的机器可读介质,其中将所保证的性能水平指定为服务水平协议(sla)的关键性能指标(kpi)。
[0252]
示例22。根据权利要求19所述的机器可读介质,其中分析包括:使用所述数据来执行强化学习以标识资源重新分配,同时仍然维持所保证的性能水平。
[0253]
示例23。根据示例22所述的机器可读介质,其中执行强化学习进一步包括:生成与向最大努力工作负载的资源分配相关联的第一一个或多个奖励值;响应于检测到与优先级工作负载相关联的指定性能度量而生成第二一个或多个奖励值和/或一个或多个惩罚值;将奖励值和惩罚值相加以生成最终奖励值;以及重新分配资源以尝试使最终奖励值最大化。
[0254]
示例24。根据示例23所述的机器可读介质,其中资源分配包括向最大努力工作负载的高速缓存分配,其中所述高速缓存分配中的增加用以生成增加的奖励值。
[0255]
示例25。根据示例24所述的机器可读介质,其中所述第二一个或多个奖励值包括针对维持与一个或多个示例所保证的性能水平的一致性的性能奖励值。
[0256]
示例26。根据示例19所述的机器可读介质,其中资源分配的第一集合将由处理器的资源管理电路来执行。
[0257]
示例27。根据示例26所述的机器可读介质,其中资源分配的第一集合包括高速缓存占用水平和高速缓存或存储器带宽。
[0258]
在前面的说明书中,已经参考本发明的具体示例性实施例描述了本发明的实施例。然而,将明显的是,在不脱离如所附权利要求书中阐述的本发明的更宽精神和范围的情况下,可以对其做出各种修改和改变。相应地,说明书和附图要以说明性而不是限制性含义来看待。
[0259]
本发明的实施例可以包括以上已经描述的各步骤。这些步骤可以被体现在机器可执行指令中,所述机器可执行指令可以用于使得通用或专用处理器执行这些步骤。可替代地,这些步骤可以由包含用于执行这些步骤的硬接线逻辑的特定硬件组件来执行,或者由程序化计算机组件和自定义硬件组件的任何组合来执行。
[0260]
如本文中所描述,指令可以是指硬件的具体配置,诸如被配置为用于执行某些操作、或者具有存储在非暂时性计算机可读介质中体现的存储器中的预定功能或软件指令的专用集成电路(asic)。因此,可以使用在一个或多个电子设备(例如终端站、网络元件等)上存储和执行的代码和数据来实现各图中所示的技术。这种电子设备使用计算机机器可读介质来存储和传送(在内部和/或通过网络与其他电子设备传送)代码和数据,所述计算机机器可读介质诸如是非暂时性计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存存储器设备;相变存储器)以及暂时性计算机机器可读通信介质(例如,电、光、声或其他形式的传播信号

诸如载波、红外信号、数字信号等)。此外,这种电子设备
典型地包括耦合到一个或多个其他组件的一组一个或多个处理器,所述一个或多个其他组件诸如是一个或多个存储设备(非暂时性机器可读存储介质)、用户输入/输出设备(例如键盘、触摸屏和/或显示器)以及网络连接。处理器集合和其他组件的耦合典型地通过一个或多个总线和桥(也被称为总线控制器)。承载网络业务的存储设备和信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子设备的存储设备典型地存储用于在那个电子设备的所述组的一个或多个处理器上执行的代码和/或数据。当然,可以使用软件、固件、和/或硬件的不同组合来实现本发明的实施例的一个或多个部分。贯穿本详细描述,为了解释的目的,阐明了许多特定细节以便提供对本发明的透彻理解。然而,对于本领域技术人员而言将清楚的是,可以在没有这些具体细节中的一些具体细节的情况下实践本发明。在某些实例中,未详细描述公知结构和功能以便避免模糊本发明的主题。因而,本发明的范围和精神应依据以下权利要求书来判断。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1