针对虚拟环境的加速器互连分配的制作方法

文档序号:17048701发布日期:2019-03-05 19:48阅读:332来源:国知局
针对虚拟环境的加速器互连分配的制作方法

本申请要求于2017年9月1日提交的、题为“autonomouscapacityscalingforvirtualdatacenterandmobilenetworks(虚拟数据中心和移动网络的自主容量缩放)”的美国临时申请第62/553,608号的优先权,其全部内容由此通过引用并入。

本公开涉及硬件加速和虚拟化技术领域,并且特别地涉及用于提供虚拟机硬件加速的系统、装置、方法和存储介质。



背景技术:

本文提供的背景描述是用于总体上呈现本公开的上下文的目的。除非本文另有说明,否则本部分中描述的材料不是本申请中权利要求的现有技术,并且不因包含在本部分中而被认为是现有技术。

数据中心服务提供商(dcsp)持续采用虚拟化技术来提高用于运行应用的服务器和基础设施利用率。虚拟化技术已经演进为跨数据中心服务器将物理资源整合到虚拟资源池中。虚拟中央处理单元(cpu)、输入/输出(i/o)、联网以及存储资源可以用于构建资源以支持特定应用,以使服务器使用最大化。随着虚拟基础设施和管理技术的进步持续演进(例如,用于网络功能虚拟化),虚拟交换性能可能成为确定应用性能的关键因素。虚拟交换机在应用(例如,虚拟机)与网络之间路由数据。一个挑战是维持高数据平面吞吐量和低时延,同时减少虚拟交换对整体服务器资源的影响。

基于硬件的解决方案可以用于解决虚拟交换的吞吐量和时延挑战。然而,dcsp持续利用基于软件的虚拟交换机解决方案,其将更多的虚拟交换功能移到服务器中,并且远离位于网络边缘的基于硬件的解决方案。开放虚拟交换(ovs)是用于dcsp、云服务器提供商(csp)和通信服务提供商(cosp)的标准虚拟交换实现方式的一个示例。连同处理具有不同资源和时延要求的多租户虚拟机(vm)和/或虚拟网络功能(vnf)一起,ovs特征集正在演进为包括新的能力,包括隧道化能力、统计能力以及服务质量(qos)能力。ovs实现方式必须能够扩展以支持在处理更多vm/vnf时增加的网络吞吐量。

尽管基于软件的ovs性能持续提高,但是专用于ovs特征的服务器中央cpu使用率持续消耗相当大比例的cpu资源,否则这些cpu资源将用于应用。诸如处理数据平面任务、存储器复制和/或分组表查找之类的操作可能影响cpu资源,这可能导致吞吐量减少和时延增加。此外,随着对数据流量和相关联的服务的需求增加,对服务器cpu资源的需求预计会增加。采用第五代(5g)无线技术可能进一步需要计算资源,因为更多订户和相关联的移动数据流量将需要由消费并响应更复杂的最终用户移动服务的应用来处理。

附图说明

所包括的附图用于说明目的,并且用于提供所公开的实施例的可能结构和操作的示例。在不脱离所公开的构思的精神和范围的情况下,附图不以任何方式限制本领域技术人员可以在形式和细节上做出的任何改变。

图1示出了根据各种实施例的互连分配的示例。

图2示出了可以实践各种实施例的布置。

图3示出了根据各种实施例的计算机系统的示例实现方式。

图4示出了根据各种实施例的示例多芯片封装(mcp)。

图5示出了根据各种实施例的mcp的示例组件。

图6示出了根据各种实施例的示例加速器映像。

图7示出了根据各种实施例的用于选择和分配互连的示例过程。

具体实施方式

所公开的实施例涉及虚拟交换技术。本文的实施例涉及处理器和硬件加速系统,其扩展处理器相干性域以包含耦合多处理器高速缓存、系统存储器、加速器高速缓存的硬件加速,以及改进或增强应用性能(包括云应用和通信应用)的硬件加速。实施例提供了多芯片封装(mcp)系统,其包括经由设备接口单元(diu)与加速器电路耦合的处理器电路。加速器电路可以包括具有可编程核心高速缓存接口(cci-p)的一个或多个加速功能单元(afu),可编程核心高速缓存接口(cci-p)将物理相干互连和物理非相干互连抽象化为耦合到高速缓存(例如,最后一级高速缓存)和系统存储器的虚拟信道(vc)。所公开的实施例包括基于特性(特别地包括缓存提示、数据有效载荷侧和互连链路利用率)将vc分配给个体应用工作负载的afu的机制。在实施例中,可以将全分组帧直接从由处理器核心执行的虚拟机(vm)传送到期望的afu,使得多个交换动作可以同时发生。以这种方式,本公开实施例允许不同的vm硬件加速性能能力根据工作负载特性使用互连分配在同一计算机系统上共存。

在各种实施例中,vm可以包括虚拟输入/输出(vio或virtio)端口,其可以是接收(rx)vio端口或发送(t)vio端口。viorx/tx端口可以绑定到特定互连类型(例如,相干、非相干或其组合)。这可以允许由相同计算系统实现的vm对不同层的硬件加速能力具有访问权。特别地,本文公开的virtio实施例可以创建成对收发器(例如,rx/tx)队列,该成对收发器队列绑定到用于发送和接收针对物理硬件加速资源(例如,由afu实现的加速映像)的请求的特定互连类型(例如,相干、非相干或其组合)。

本文的实施例通过在服务器上提供虚拟联网来解决数据中心服务提供商、云服务器提供商(csp)和通信服务提供商(cosp)面临的时延和吞吐量挑战,在服务器上提供虚拟联网可以使用标准商业现成(cots)计算系统来支持增加的对数据吞吐量的需求,同时最小化维持基础设施开销要求的计算资源的量。

以下具体实施方式参考附图。可以在不同的附图中使用相同的附图标记来标识相同或相似的元素。在以下描述中,出于解释而非限制的目的,阐述了诸如特定结构、架构、接口、技术等之类的具体细节,以便提供对要求保护的发明的各种方面的透彻理解。然而,对于受益于本公开的本领域技术人员显而易见的是,所要求保护的本发明的各种方面可以在脱离这些具体细节的其他示例中实践。在某些实例中,省略对公知设备、电路和方法的描述,以免不必要的细节模糊对本发明的描述。

将使用本领域技术人员通常采用的术语来描述说明性实施例的各种方面,以将他们工作的实质传达给本领域其他技术人员。然而,对于本领域技术人员显而易见的是,可以仅利用所描述的方面中的一些方面来实践替代实施例。出于解释的目的,阐述了具体的数字、材料和配置,以便提供对说明性实施例的透彻理解。然而,对于本领域技术人员显而易见的是,可以在没有具体细节的情况下实践替代实施例。在其他实例中,省略或简化公知的特征,以免模糊说明性实施例。

此外,各种操作将以最有助于理解说明性实施例的方式依次描述为多个离散操作;然而,描述的顺序不应被解释为暗示这些操作必须依赖于顺序。特别地,这些操作不一定需要按呈现的顺序执行。

重复地使用短语“在各种实施例中”、“在一些实施例中”等。这些短语通常不是指代相同的实施例;然而,这些短语可能指代相同的实施例。除非上下文另有规定,否则术语“包含”、“具有”和“包括”是同义的。短语“a和/或b”表示(a)、(b)或(a和b)。短语“a/b”和“a或b”表示(a)、(b)或(a和b),类似于短语“a和/或b”。出于本公开的目的,短语“a和b中的至少一个”表示(a)、(b)或(a和b)。说明书可以使用短语“在一个实施例中”、“在实施例中”、“在一些实施例中”和/或“在各种实施例中”,其可以各自指代相同或不同的实施例中的一个或多个。此外,如关于本公开的实施例使用的术语“包括”、“包含”、“具有”等是同义的。

可以将示例实施例描述为过程,该过程被描绘为流程图、流图、数据流图、结构图或框图。尽管流程图可以将操作描述为顺序过程,但是操作中的许多可以并行地、并发地或同时地执行。另外,可以重新排列操作的顺序。过程可以在其操作完成时终止,但是也可以具有未在(多个)图中包括的附加步骤。过程可以对应于方法、函数、程序、子例程、子程序等。当过程对应于函数时,其终止可以对应于函数返回到调用函数和/或主函数。

可以在由前述电路中的一个或多个执行的计算机可执行指令(例如,程序代码、软件模块和/或函数进程)的一般上下文中描述示例实施例。程序代码、软件模块和/或函数进程可以包括执行特定任务或实现特定数据类型的例程、程序、对象、组件、数据结构等。本文讨论的程序代码、软件模块和/或函数进程可以使用现有通信网络中的现有硬件来实现。例如,可以使用现有网络元件或控制节点处的现有硬件来实现本文讨论的程序代码、软件模块和/或函数进程。

如本文所使用的,术语“电路”指代以下硬件组件、是以下硬件组件的一部分或包括以下硬件组件:例如,被配置为提供所描述的功能的电子电路、逻辑电路、处理器(共享的、专用的或组)和/或存储器(共享的、专用的或组)、专用集成电路(asic)、现场可编程设备(fpd)(例如,现场可编程门阵列(fpga)、可编程逻辑器件(pld)、复杂pld(cpld)、高容量pld(hcpld)、结构化asic或可编程片上系统(soc))、数字信号处理器(dsp)等。在一些实施例中,电路可以执行一个或多个软件或固件程序以提供所描述的功能中的至少一些功能。

如本文所使用的,术语“处理器电路”可以指代能够顺序地且自动地执行算术或逻辑运算序列;记录、存储和/或传送数字数据的电路,是该电路的一部分或包括该电路。术语“处理器电路”可以指代一个或多个应用处理器、一个或多个基带处理器、物理中央处理单元(cpu)、单核心处理器、双核心处理器、三核心处理器、四核心处理器和/或能够执行或以其他方式操作计算机可执行指令(例如,程序代码、软件模块和/或函数进程)的任何其他设备。

如本文所使用的,术语“接口电路”可以指代提供两个或更多个组件或设备之间的信息交换的电路,是该电路的一部分或包括该电路。术语“接口电路”可以指代一个或多个硬件接口(例如,总线、输入/输出(i/o)接口、外围组件接口、网络接口卡等)。如本文所使用的,术语“使实例化”、“实例化”等可以指代实例的创建,并且“实例”可以指代对象的具体发生,其可以例如在程序代码执行期间发生。

如本文所使用的,术语“计算机设备”可以描述能够顺序地且自动地执行算术或逻辑运算序列的任何物理硬件设备,其被配备为在机器可读介质上记录/存储数据,并且从通信网络中的一个或多个其他设备发送和接收数据。计算机设备可以被认为与计算机、计算平台、计算设备等同义,并且有时可以在下文中称为计算机、计算平台、计算设备等。术语“计算机系统”可以包括任何类型的互连电子设备、计算机设备或其组件。另外,术语“计算机系统”和/或“系统”可以指代计算机的彼此通信地耦合的各种组件。此外,术语“计算机系统”和/或“系统”可以指代彼此通信地耦合并且被配置为共享计算和/或联网资源的多个计算机设备和/或多个计算系统。“计算机设备”、“计算机系统”等的示例可以包括蜂窝电话或智能电话、特征电话、平板个人计算机、可穿戴计算设备、自主传感器、膝上型计算机、台式个人计算机、视频游戏控制台、数字媒体播放器、手持消息传递设备、个人数据助理、电子书阅读器、增强现实设备、服务器(例如,独立式、机架安装式、刀片式等)、云计算服务/系统、网络元件、车载信息娱乐系统(ivi)、车载娱乐(ice)设备、仪表盘(ic)、平视显示器(hud)设备、车载诊断(obd)设备、仪表板移动设备(dme)、移动数据终端(mdt)、电子引擎管理系统(eems)、电子/发动机控制单元(ecu)、电子/发动机控制模块(ecm)、嵌入式系统、微控制器、控制模块、发动机管理系统(ems)、网络或“智能”装置、机器类型通信(mtc)设备、机器对机器(m2m)、物联网(iot)设备和/或任何其他相似的电子设备。

如本文所使用的,术语“网络元件”可以被认为与以下同义或被称为:联网计算机、联网硬件、网络设备、路由器、交换机、中心、网桥、无线电网络控制器、无线电接入网络设备、网关、服务器和/或任何其他相似的设备。术语“网络元件”可以描述有线或无线通信网络的物理计算设备,并且被配置为托管虚拟机。此外,术语“网络元件”可以描述针对网络与一个或多个用户之间的数据和/或语音连接提供无线电基带功能的设备。术语“网络元件”可以被认为与“基站”同义和/或被称为“基站”。如本文所使用的,术语“基站”可以被认为与以下同义或被称为:节点b、增强型或者演进型节点b(enb)、下一代节点b(gnb)、基站收发台(bts)、接入点(ap)、路侧单元(rsu)等,并且可以描述针对网络与一个或多个用户之间的数据和/或语音连接提供无线电基带功能的设备。

如本文所使用的,术语“信道”可以指代用于传达数据或数据流的任何有形或无形的传输介质。术语“信道”可以与“通信信道”、“数据通信信道”、“传输信道”、“数据传输信道”、“接入信道”、“数据接入信道”、“链路”、“数据链路”、“载波”、“射频载波”和/或表示通过其传达数据的路径或介质的任何其他相似的术语同义和/或等同。另外,术语“链路”可以指代通过无线电接入技术(rat)在两个设备之间的连接,其用于发送和接收信息的目的。

参考附图,图1示出了根据各种实施例的互连(ix)分配的示例。如图1所示,计算机系统100(或“系统100”)包括存储器104和多芯片封装(mcp)101。mcp101可以包括处理器102和加速器105。应用(app)115的程序代码可以存储在存储器104中。应用115可以包括各种功能,包括功能6、功能2和功能3,这些功能可以由处理器102在虚拟机(vm)环境内执行。存储器104还可以存储用于互连(ix)选择器114的程序代码,其可以由处理器102执行以在个体功能与特定加速器(例如,加载有用于不同功能的不同加速器映像520的加速器105)之间选择不同的相干ix106c或非相干ix106n)。如图1所示,特定加速器可以包括加速映像4520、加速映像7520和加速映像3520。

将ix106分配给特定功能/加速器可以取决于特定功能的使用水平或使用量或该功能的工作负载。工作负载可以指代实体在一段时间内或在特定时刻执行的工作的量。工作负载可以表示为基准,例如,响应时间(例如,用户请求与从系统100对请求做出响应之间的时间)、吞吐量(例如,在一段时间内完成多少工作)等。另外或可替代地,工作负载可以表示为存储器工作负载(例如,程序执行以存储临时或永久数据并且执行中间计算所需的存储器空间的量)、处理器工作负载(例如,由处理器102在给定时间段期间或在特定时刻执行的指令数量)、i/o工作负载(例如,在给定时间段期间或在特定时刻的输入和输出或系统访问的数量)、数据库工作负载(例如,在一段时间期间的数据库查询的数量)、与网络相关的工作负载(例如,网络附件的数量、移动性更新的数量、无线电链路故障的数量、切换的数量、要通过空中接口传送的数据的量等)等。可以使用各种算法来确定工作负载和/或工作负载特性,这可以基于前述工作负载类型中的任一种。如本文所使用的,术语“工作负载”可以指代前述工作负载类型中的任一种或其组合。

如下面更详细讨论的,可以通过将个体功能(或其部分)传送到特定加速器映像520来加速应用115。将个体功能(或其部分)传送到对应的加速器映像520可以基于ix分配(或ix映射),其指示程序代码、数据等要通过其传送的一个或多个相干ix106c和/或一个或多个非相干ix106n。针对要传送到加速器105的每个功能、程序代码、数据等,可以确定特定功能的工作负载,并且可以将该功能的程序代码或数据通过由ix分配指示的已分配ix106发送到一个或多个加速器功能单元(afu)420(参见例如图4)或加速器映像520。可以通过已分配ix106将由afu420或加速器映像520基于程序代码的执行和/或输入数据而产生的输出提供给由处理器102实现的功能。

可以基于执行应用115期间对功能的需求将不同的ix技术分配给不同的功能/加速器。在实施例中,可以基于针对特定功能的预期工作负载需求在应用启动或开启时使用初始ix分配,并且当对于特定功能而言超过各种工作负载标准限制时,可以调整向功能/加速器进行的对ix106的分配。这些限制可以由工作负载特性策略(wcp)定义,其指示针对应用115的特定功能的一组工作负载标准。工作负载标准可以包括或指示针对不同类型的工作负载的阈值或限制,例如,链路利用率或容量、吞吐量、响应时间、时延、抖动、确定性等。针对应用115的功能的示例wcp由表1示出。

表1:示例工作负载特性策略

在表1中,高分类可以指示使用相干ix106c和非相干ix106n的组合,中分类可以指示使用相干ix106c,并且低分类可以指示使用非相干ix106n。表1还示出了功能和加速器映像与基于功能工作负载的ix106分配之间的关联。在表1的示例中,工作负载可以基于针对在功能与对应的加速器映像之间(反之亦然)传送数据、程序代码等的ix容量要求。

根据表1的wcp,当检测或预测的加速器映像4与功能6之间的链路(例如,vc506)的ix容量介于50千兆比特每秒(gbit/s或g)与100g之间时,ix选择器114可以选择高容量ix106c+106n。当检测或预测的加速器映像4与功能6之间的链路(例如,vc506)的ix容量小于或等于10g时,ix选择器114可以选择低容量ix106n。另外,当检测或预测的加速器映像7与功能2之间的链路(例如,vc506)的ix容量介于50g与100g之间时,ix选择器114可以选择中容量ix106c,并且当检测或预测的加速器映像7与功能2之间的链路(例如,vc506)的ix容量介于10g与50g之间时,可以选择低容量ix106c。此外,当检测或预测的加速器映像3与功能3之间的链路(例如,vc506)的ix容量小于或等于1g时,ix选择器114可以选择低容量ix106c。

对于未列出的工作负载标准/要求(例如,表1中的空格),ix选择器114可以选择任何可用的ix106用于在功能与对应的加速器映像之间传送数据。此外,ix选择器114可以监视每个ix106的使用情况,并且在当前使用的ix106的容量已满或几乎已满时,可以(重新)将数据分配给一个或多个其他ix106。另外,尽管表1示出了针对ix分配考虑单个工作负载标准的示例,但是在其他实施例中,工作负载标准的各种组合可以包括在wcp中并且用于ix分配。

图2示出了可以实践各种实施例的布置200。布置200包括计算机系统100(或“系统100”)、网络250和计算机设备205a-d(统称为“计算机设备205”、“计算机设备205”等)。

计算机设备205可以体现为能够执行以下各种算术运算、逻辑运算、输入/输出(i/o)操作的任何类型的计算或计算机设备:包括但不限于通过网络250向系统100发送和接收分组。在这方面,计算机设备205可以包括处理器、存储器设备、i/o接口、网络接口卡、各种无线电通信设备和/或其他相似的组件。计算机设备205的示例可以包括移动设备,例如,智能电话(例如,计算机设备205e)、可穿戴计算机设备(例如,计算机设备205b)、台式计算机、工作站、膝上型或笔记本计算机(例如,计算机设备205a)、平板计算机、车载计算系统(例如,计算机设备205d)、物联网(iot)设备(例如,计算机设备205c)等。如图2所示,计算机设备205被描绘为用户、客户端或边缘计算机设备;然而,在其他实施例中,计算机设备205可以包括有线或无线通信网络中的无线接入点(例如,网络交换机和/或网络路由器、基站等)。

网络250可以包括计算机、计算机之间的网络连接以及软件例程,以通过网络连接实现计算机之间的通信。在这方面,网络250可以各自包括一个或多个网络元件,其可以包括一个或多个处理器、通信系统(例如,包括网络接口控制器、连接到一个或多个天线的一个或多个发射器/接收器等)和计算机可读介质。这种网络元件的示例可以包括无线接入点(wap)、家庭/商业服务器(具有或不具有射频(rf)通信电路)、路由器、交换机、中心、无线电信标、基站、微微小区或小小区基站和/或任何其他相似的网络设备。可以使用下文讨论的各种通信协议经由有线或无线连接来连接到网络250。如本文所使用的,有线或无线通信协议可以指代由通信设备/系统实现用于与其他设备进行通信的一组标准化规则或指令,包括用于对数据进行打包/解包、对信号进行调制/解调、协议栈的实现等的指令。在所示设备之间的通信会话中可能涉及多于一个网络。与网络250进行连接可能要求计算机执行软件例程,该软件例程例如实现计算机联网的开放系统互连(osi)模型的七层或无线(蜂窝)电话网络中的等效物。

网络250可以用于实现相对远程的通信,例如,在系统100与计算机设备205之间。网络250可以表示互联网、一个或多个蜂窝网络、局域网(lan)、无线lan(wlan)或包括专有网络和/或企业网络的广域网(wan)或者其组合。在一些实施例中,网络250可以与拥有或控制提供与网络相关的服务所必需的设备和其他元件(例如,一个或多个基站或接入点,用于路由数字数据或电话呼叫的一个或多个服务器(例如,核心网或骨干网)等)的网络运营商相关联。在一些实施例中,系统100可以是向计算机设备205提供与网络相关的服务的基础设施的一部分。

系统100可以包括一个或多个硬件计算设备,其通过网络(例如,网络250)向用户(例如,计算机设备205)提供一个或多个服务。系统100可以包括一个或多个处理器、一个或多个存储器设备、一个或多个网络接口等。在各种实施例中,系统100可以是服务器(例如,独立式、机架安装式、刀片式等)或网络装置(例如,物理的或虚拟的)。在一些实施例中,系统100可以在网络功能虚拟化(nfv)和/或软件定义的联网(sdn)架构的范围内执行以下网络元件的功能:例如,软件路由器;软件交换机;分布式软件交换机;分布式软件路由器;用于分布式服务的交换结构;用于分布式服务的独立式软件交换机/路由器或下划线结构(underlinefabric)。sdn的示例可以包括演进型分组核心(epc)、第五代(5g)新无线电(nr)核心网等的一个或多个元件或节点。关于图3示出并描述了系统100的示例实现方式。

图3示出了根据各种实施例的系统100的示例实现方式。图3示出了可以存在于系统100中的组件的示例的框图。系统100可以包括图3所示的组件的任何组合;并且可以将组件实现为集成电路(ic)或其部分,分立电子设备,或者在系统100中适配的其他模块、逻辑、硬件、软件、固件、中间件或其组合;或者实现为以其他方式并入较大系统的机箱内的组件。如图3所示,系统100可以包括一个或多个多芯片封装(mcp)101-0至101-n(其中n是数字)、系统存储器104和网络接口控制器(nic)112,其中的每个可以是经由互连106c或106n(统称为“互连106”、“ix106”等)耦合。

mcp101可以包括形成在单个统一基板(例如,单个半导体封装、单个印刷电路板(pcb)等)上的多个集成电路(ic)、芯片或其他相似的半导体器件。每个mcp101可以包括处理器102和加速器105,其可以协同动作以执行程序代码,以便执行各种任务。以下描述提供为例如将处理器102和加速器105设置在单个mcp101上;然而,示例实施例不限于此,并且所描述的实施例可以应用于可以受益于本文描述的原理的其他布置,例如,其中处理器102和加速器105驻留在相应芯片或封装上。每个处理器102(也称为“处理器电路102”)可以包括一个或多个处理元件,其被配置为通过执行指令来执行基本的算术运算、逻辑运算和输入/输出操作。处理器电路102可以是一个或多个微处理器、一个或多个单核心或多核心处理器、一个或多个多线程处理器、一个或多个图形处理单元(gpu)、一个或多个超低电压处理器和/或或其他处理器或处理/控制电路。作为示例,处理器电路102可以包括一个或多个intel处理器;advancedmicrodevices(amd)加速处理单元(apu)、处理器;等等。

加速器105可以是执行可以从相关联的处理器102卸载的各种功能的硬件设备。例如,加速器105可以用于执行各种图形、加密、分组处理功能等,这取决于系统100的用途和实现方式。在系统100用于数据中心、云计算和/或网络/通信服务的一些实施例中,加速器105可以执行虚拟联网基础设施应用,例如,开放虚拟交换(ovs)等。

在各种实施例中,每个加速器105可以包括以下电路:例如但不限于一个或多个现场可编程设备(fpd),例如,现场可编程门阵列(fpga);可编程逻辑器件(pld),例如,复杂pld(cpld)、高容量pld(hcpld)等;专用集成电路(asic),例如,结构化asic等;可编程芯片上系统(psoc)等。在一些实现方式中,加速器105中的一个或多个加速器可以是fpga映像,其出于功率和效率目的被转换为芯片(例如,asic)。加速器105的电路可以包括比特流、逻辑块或逻辑结构、存储器单元、输入/输出(i/o)块以及可以被编程为执行各种功能的其他互连资源。存储器单元可以用于在查找表(lut)中存储数据,并且可以预先配置有适当的逻辑块/结构以便执行某个(某些)功能。存储器单元可以包括各种级别的存储器/存储装置的任何组合,包括但不限于可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、闪速存储器、静态随机存取存储器(sram)、反熔丝等。

存储器104(也称为“存储器电路104”等)可以是被配置为存储用于对系统100进行操作的数据、程序代码或逻辑的电路。存储器电路104可以包括多个存储器设备,其可以用于提供给定量的系统存储器。作为示例,存储器电路104可以是可以以已知的任何合适的实现方式配置的任何合适类型、数量的易失性存储器设备(例如,随机存取存储器(ram)、动态ram(dram)、sram等)和/或非易失性存储器设备(例如,只读存储器(rom)、eprom、eeprom、闪速存储器、反熔丝等)和/或其组合。在各种实现方式中,个体存储器设备可以由任何数量的不同封装类型形成,例如,单管芯封装(sdp)、双管芯封装(ddp)或四管芯封装(q17p)、双列直插式存储器模块(dimm)(例如,microdimm或minidimm)和/或任何其他相似的存储设备。为了提供对诸如数据、应用、操作系统等之类的信息的持久存储,存储器电路104可以包括一个或多个大容量存储设备,例如,固态硬盘驱动器(ssdd);诸如sd卡、microsd卡、xd图片卡等之类的闪速存储器卡,以及usb闪存驱动器;与处理器电路102相关联的管芯上存储器或寄存器(例如,在低功率实现方式中);微硬盘驱动器(hdd);等的三维交叉点(3dxpoint)存储器。

ix106c和106n可以包括用于在处理器102之间(例如,在处理器102-0与处理器102-n之间)以及在处理器102与相关联的加速器105之间(例如,在处理器102-0与加速器105-0之间)传达数据的任何数量的互连和/或总线技术(或其组合)。ix106c可以表示相干ix,并且ix106n可以表示非相干ix。如本文所使用的,“相干”ix可以是用于维持高速缓存相干性或传达最终存储在多个本地高速缓存中的共享资源数据的互连技术。例如,相干ix106c可以包括超路径接口(upi)、加速器链路(ial)、公共应用编程接口(capi)、快速路径互连(qpi)等。相反,“非相干”ix可以是可以在不考虑高速缓存相干性的情况下使用的ix技术。非相干互连106n的示例可以包括外围组件互连(pci)、快速pci(pcie)、pci扩展(pcix)或类似协议。upi和pcie在整个本公开中用作示例,但是本文的实施例不应被解释为限于使用这样的技术。

可以包括网络接口控制器(nic)112以提供到网络250和/或其他设备的有线通信链路。nic112可以包括连接器和一个或多个专用处理器和/或fpd,以通过有线连接进行通信。有线连接可以是以太网连接、令牌环、光纤分布式数据接口(fddi)等。连接器可以包括端口、槽、插座等,其被配置为接收绳或线的模块化连接器。在一些实施例中,可以包括多个nic112以允许系统100连接到附加的网络(未示出)或其他设备。在一些实现方式中,nic112可以是用于将系统100连接到路由或交换设备的高速串行接口(hssi)nic。

虽然未示出,但是各种其他设备可以存在于系统100内或连接到系统100。例如,系统100还可以包括输入/输出(i/o)接口电路,例如,外部扩展总线(例如,通用串行总线(usb)、firewire、thunderbolt等),用于将系统100与外部(外围)组件/设备进行连接。该电路可以包括任何合适的接口控制器和连接器,以将系统100与外部组件/设备耦合。在另一示例中,诸如显示器、触摸屏或小键盘之类的i/o设备可以连接到系统100以接受输入和显示输出。

图4示出了根据各种实施例的mcp101的示例组件。如先前讨论的,mcp101可以包括处理器102和加速器105。处理器102可以包括核心403和最后一级高速缓存(llc)404。加速器105可以包括设备接口单元(diu)415和加速器功能单元(afu)420-0和420-1(统称为“多个afu420”或“afu420”)。在加速器105是fpd或fpga设备的实施例中,diu415可以被称为“fpd接口单元”、“fpga接口单元”、“fiu”等。diu415可以包括相干高速缓存416c、非相干高速缓存控制器416n、结构418、可编程核心高速缓存接口(cci-p)414和输入输出存储器管理单元(iommu)419。

参考处理器102,核心403中的每个可以是包括读取和执行程序代码的两个或更多个处理单元的组件。每个核心403可以包括用于取出并解码指令、调度用于执行的指令、执行指令、取出用于指令执行的数据以及存储通过执行指令而产生的数据的硬件组件。llc404可以体现为一种类型的高速缓冲存储器,处理器102可以比存储器104更快地对该高速缓冲存储器进行存取以用于存储用于执行的指令和/或数据。llc404可以是在对存储器104进行存取之前调用的最高级高速缓存。在一些实施例中,llc404可以是管芯上高速缓存,而在其他实施例中,llc404可以是驻留在与处理器102相同的ic或soc上的管芯外高速缓存。虽然未示出,但是处理器电路102还可以包括级别(l)1、l2或l3。

参考加速器105,diu415可以是在引导时配置的设备和/或平台代码,并且其保留在存储器中以管理系统总线,而afu420可以是可以在启动后的任何时间更新的部分配置区域(例如,实时系统)。diu415可以实现加速器105的部署和可管理性所要求的各种特征,包括用于处理器102与加速器105之间的链路的接口协议。diu415还可以提供平台能力,例如,虚拟技术(vt),其用于定向i/o(vt-d)、安全性、错误监测、性能监测、功率和热管理、afu的部分重新配置等。

diu415经由物理相干ix106c(例如,upi)和物理非相干ix106n耦合到处理器102。在示例中,相干ix106c可以是upi互连,并且非相干ix106n可以是pcie互连。diu415还将相干性域从处理器102扩展到加速器105以创建包括加速器高速缓存416c、处理器102高速缓存(包括llc404)和系统存储器104的相干性域(cd)410(由图4中的虚线多边形表示)。

diu415还实现高速缓存控制器416n和相干缓存代理(ca)(也由图4中的项416c表示)。ca可以向相干系统存储器104发出读取请求和写入请求,并且可以向加速器高速缓存416c提供侦听请求。高速缓存控制器416n可以是执行io事务的设备,例如,经由cci-p414将通过ix106n获得的数据、程序代码等提供给适当的afu420,并且通过适当的ix106n将通过cci-p414获得的数据、程序代码等提供给适当的应用功能。在ix106n是pcie互连的实施例中,高速缓存控制器416n可以是pcie端点(ep)设备。diu415还包括结构418,其可以是允许其他逻辑块彼此互连的可编程逻辑块。在各种实现方式中,结构418可以包括允许高速缓存控制器416c/n和cci-p414交换数据、程序代码等的逻辑块。

cci-p414是(多个)afu420与diu415之间的硬件侧信令接口。cci-p414对到处理器102的物理链路106c、106n进行抽象化,并且向(多个)afu420提供简单的加载/存储语义以用于对系统存储器104进行存取。cci-p414使用具有多达多个高速缓存行的数据有效载荷。cci-p414提供对两种类型的存储器——主存储器104和输入/输出(i/o)存储器(未示出)的存取。主存储器104是附接到处理器102并且暴露给操作系统并且可直接从afu420存取的存储器,而i/o存储器请求源自使用如由cci-p414定义的iommu419的(多个)afu420。iommu419可以通过将i/o虚拟地址转换成物理地址以与处理器102的存储器管理单元(mmu)(未示出)相同或类似的方式代表i/o设备来代理直接存储器存取(dma)请求。

物理相干ix106c和非相干ix106n作为一组虚拟信道(vc)在cci-p接口414上被复用。物理链路在cci-p接口414上呈现为虚拟信道。另外,vc被称为虚拟自动信道(vac)是diu415组合或映射加速请求以使用所有物理总线来针对带宽进行优化的情况。vac信道针对最大工作负载带宽进行优化。当选择vac时,diu415vc指引机制基于vac标准来确定要使用哪些物理ix。vac标准可以包括(多个)缓存提示、数据有效载荷大小和链路利用率。缓存提示和可缓存的请求将偏向于相干(例如,upi)ix106c。数据有效载荷大小为64b的请求也可能偏向于相干ix106c。在一些实现方式中,高速缓存行可以是64字节,并且多高速缓存行读/写可以不在多个vc之间分割,因此保证由单个物理链路/ix106进行处理。链路利用率可以用于跨所有相干vc和非相干vc对负载进行均衡。

afu420可以是加速器105的可部分(重新)配置的部分。afu420可以访问具有多个vc和统一存储器地址空间(uas)的统一接口。uas可以耦合到物理相干ix106c和物理非相干ix106n。每个afu420可以维持系统地址空间的单个视图。例如,对地址x的写入可以到达系统存储器104中的相同高速缓存行,而不管它是否穿过物理相干ix106c和/或物理非相干ix106n。

图5示出了根据各种实施例的mcp101的示例组件。在图4的示例中处理器102包括十个核心403(例如,核心0-9),其中核心0503实现或操作vm_0505,并且核心6403实现/操作vm_6505。vm_0505经由相干vc506c与加速器映像_0520耦合,并且vm_6505经由非相干vc506n与加速器映像_1520耦合。在该示例中,相干vc506c对应于物理相干ix106c,并且非相干vc506n对应于非相干ix106n中的一个。

如图5所示,加速器映像_0520可以由afu_0420实现,并且加速器映像_1520可以由afu_1420实现。加速器映像520可以是可以加载到afu中以提供针对各种功能工作负载的加速的可执行代码或文件。例如,当由处理器102的核心403操作时,通过提供开发环境、afu仿真/模拟环境、库、驱动程序、应用编程接口(api)等,afu引擎或开发者实用程序(未示出)可以允许用户或操作者配置afu420,以帮助开发加速程序。afu引擎/实用程序还可以基于所开发的加速程序生成可加载加速器映像520,并且将可加载加速器映像520供应到afu420中。该供应可以包括将被加载的可加载加速器映像520加载到加速器105的存储器单元中。

可加载加速器映像520可以包括比特流、逻辑块、逻辑结构等,以及相关联的元数据。比特流、逻辑块、逻辑结构等可以是已开发加速程序的编译版本。元数据可以指示关于afu420特性和操作参数的信息,并且可以以单独的可扩展标记语言(xml)、javascript对象表示法(json)或其他合适的文件来定义。作为示例,可以使用以下硬件描述语言(hdl)来开发或以其他方式定义加速程序:例如,寄存器传送逻辑(rtl)、超高速集成电路(vhsic)hdl(vhdl)、verilog等。作为示例,当处理器102是处理器时,afu引擎/开发环境可以是开放可编程加速引擎(opae)。

vm505中的每个可以是模拟或模仿提供特定服务的专用硬件设备的应用环境。例如,vm505可以实现虚拟演进型分组核心(vepc)、虚拟客户驻地设备(vcpe)、虚拟宽带远程访问服务器(vbras)、虚拟ip多媒体子系统(vims)等。在各种实施例中,vm505中的一个或多个可以是虚拟网络功能(vnf),其中多个vnf可以链式连接或链接在一起以形成可以对相同数据(例如,相干存储器)进行操作的多步骤应用服务。

vm505中的每个可以包括相应的虚拟i/o端口(vio或virtio),包括vio输入或接收(rx)端口507和vio输出或发送(tx)端口507。根据各种实施例,virtiorx/tx端口507可以绑定到特定的ix类型,使得由相同的mcp101实现的vm505可以对不同层的硬件加速具有访问权。如本文所使用的,术语“绑定”、“绑定到”等可以指代两个或更多个相关的元件或对象在指定时间量内的关联。在实施例中,绑定可以允许功能工作负载从vm505发送并且由加速映像520接收以用于对这些功能工作负载进行加速。

可以基于如由工作负载特性策略定义的、特定功能或工作负载的工作负载特性来分配或建立绑定。在实施例中,当初始化vm505(或工作负载)时,可以设置ix类型并将其绑定到特定vm505(或工作负载)。在这样的实施例中,可以基于预期工作负载特性来分配或建立绑定。在一些实施例中,ix类型可以由选择模块设置并绑定到特定vm505(或工作负载)。在这样的实施例中,选择模块可以确定vm505处或应用启动时的预期工作负载特性,并且可以基于在执行应用功能期间识别/确定的工作负载特性来调整ix类型绑定。

在实施例中,可以根据工作负载特性策略将virtiorx/tx端口507绑定到特定硬件加速ix类型(例如,相干、非相干)。特别地,virtiorx/tx端口507中的每个可以创建绑定或变得绑定到用于发送和接收针对物理硬件加速资源(例如,加速映像520)的请求的特定ix类型(例如,相干、非相干或相干和非相干)的队列。例如,vm_0505可以是评价确定性的图像处理vm应用。在该示例中,vm_0505的virtio端口507可以绑定到或分配给vc506c,其对应于相干ix106c。在另一示例中,vm_6505可以包括加密静止数据的vm应用,其典型地不具有确定性要求。这样,至少对于由vm_6505实现的加密应用,vm_6505的virtio端口507可以分配给或绑定到对应于非相干ix106n的vc506n。术语“确定性”可以指代在给定特定输入的情况下产生特定输出的要求,其可以包括底层模块和/或机器总是通过相同的状态序列。以这种方式,用于媒体处理应用的vm和用于静止数据应用的vm两者可以使用不同的加速映像共存于同一服务器上。

在各种实施例中,可以根据加速器ix分配(aixa)过程将vm505分配给或绑定到特定加速器ix。这样的aixa过程可以包括(1)为新的vm505供应一组virtio端口507;(2)根据具有预确定的一组工作负载标准(例如,时延、抖动、确定性、吞吐量、响应时间和/或其他相似的工作负载标准)的工作负载特性策略将virtio端口507分配给特定ix类型,其中ix类型可以提供相干和/或非相干能力;(3)监测已分配ix的用途;以及(4)在已分配ix未充分利用或过度利用的情况下,将新的ix类型重新分配给virtio端口507。关于下面的图6-7讨论了aixa过程的附加示例。

图6示出了根据各种实施例的示例加速器映像520。在图6中,加速器映像520可以用于加速虚拟交换机数据平面卸载应用的个体功能、子功能、任务等(下文中称为“(多个)功能”或“功能”)。为了加速应用,可以将个体功能传送到特定的加速器映像520。可以取决于特定功能的各种工作负载特性(例如,分组(有效载荷)大小、缓存提示、ix链路利用率、响应要求、时延、吞吐量、确定性要求等)将功能和/或加速器映像520分配给不同的ix106。在示例中,虚拟交换机应用可以是openvswitch(ovs),其是为vm和物理设备提供网络交换功能的虚拟多层交换机(mls)。另外,虚拟交换机应用可以支持openflow协议来确定分组的数据路径,并且可以支持ovs-数据平面开发工具包(ovs-dpdk)栈以进一步优化性能。

在图6的示例中,虚拟交换机应用可以在vm505的环境内操作。虚拟交换机应用的计算密集型功能/工作负载可以被卸载到加速平台(例如,afu420),其在处理器102与加速器105之间具有低时延和高带宽ix106,如先前讨论的。可以在afu420内配置或供应加速映像520(图5中未示出)。由于虚拟交换机应用的计算复杂性,加速映像520可以用于加速分组处理。加速映像520可以包括一组加速器功能,其中每个加速器功能耦合到vc506以针对应用的对应功能(或其一部分)提供最佳性能。另外,加速映像520可以向虚拟交换机应用递送硬件接口以与其他虚拟交换机功能耦合,使得加速映像520的每个加速器功能可以与虚拟交换机应用相结合以处理相关分组。如图5所示,应用映像520的该组加速器功能可以包括直接存储器存取(dma)601、viotx602、10千兆以太网(xge)tx603、分组基础设施604、分类器605、转发信息基站(fib)查找606、交换机607、隧道608、qos609、xgerx610以及viorx611。

加速映像520的组件(加速器功能)可以实现在virtio队列(rx/tx)与虚拟交换机应用之间来回传输数据分组的加速。例如,vm_0505可以在输出(tx)端口507处将完整分组帧传送到加速器,并且可以从输出(tx)端口507向dma601提供分组。dma601可以经由viotx602端口将分组放入分组基础设施604的接收缓冲区。为此,应用映像520可以提供配置接口以指定virtio队列的地址和包含分组缓冲区的存储器区域的映射表。另外,dma601可以经由cci-p接口414存取并解析系统存储器104中的virtio队列(tx/rx)数据结构。

分组基础设施604是公共分组缓存块,其他块/功能与其交互以获得并操纵分组内容。可以将接收缓冲区中的分组提供给分类器605,分类器605可以是openflow元组解析器减去ipv6扩展报头和提供商桥接骨干。分类器605将每个分组匹配到流表中的流条目。流条目包含或指示动作集,动作集应用于fib/动作606处的所有匹配分组。fib606可以是流查找表,其包括用于被操纵的分组的路由信息。路由信息可以包括例如目的地节点标识符(id)、目的地端口id、组id等。在一些实现方式中,fib606可以存储流id到输出目的地端口id等的映射。动作606控制如何处理分组,包括丢弃、修改、排队、转发或用于操纵分组的其他相似的动作。除了要应用于分组的设置动作之外,动作集还包括关于分组的信息,例如,到达端口、元数据等。上述表可以是使用任何合适的散列方案构建的散列表,例如,布谷鸟散列函数、jhash函数等。

交换机607实体可以将来自ovs控制器的命令转换为用于数据平面的指令,以及将内部数据平面通知提供给ovs控制器。交换机607实体还可以基于数据平面配置来执行一些分组处理操作。隧道608可以根据以下隧道化协议来封装分组:例如,虚拟可扩展局域网(vxlan)、通用路由封装(gre)、使用gre的网络虚拟化(nvgre)、无状态传输隧道化(stt)、通用网络虚拟化封装(geneve)等。要使用的特定隧道化协议可以由数据平面配置来定义。

qos609实体可以执行流量整形功能,例如,监管(例如,丢弃在超过配置速率情况下接收到的分组)。qos609实体还可以执行计量,计量可以包括在输出之前监视流量,并且基于针对流定义的入口速率对分组执行一些操作。在流量整形操作或计量操作之后,可以将分组提供给viorx(输出)端口611以经由dma601传送到另一vm505,或者可以将分组提供给xgerx(输出)端口以提供给nic112以供通过网络250进行传输。另外,可以将由nic112从其他远程设备获得的分组传递到分组基础设施604,其可以被传递到xgetx(输入)端口603,并且然后如先前讨论的进行处理。

在实施例中,当读取/写入大小是单个高速缓存行、时延敏感的或者数据因为高空间局部性或时间局部性(例如,小分组或流查找)被有意地保留在高速缓存404中时,底层选择模块(例如,关于图1讨论的ix选择器114)可能倾向于相干链路106c传输。当读取大缓冲区或从外部以太网接口向vmrx端口发送大分组时,选择模块可能倾向于经由非相干链路106n进行发送,因为它可以支持突发事务,并且时延要求不如小分组那么高。选择模块还可以监视每个链路106的使用情况,并且可以在流量满足或超过链路容量时将流量分派到另一链路106以实现更高的带宽。

图7示出了根据各种实施例的用于选择和分配ix的过程700。出于说明性目的,过程700的操作被描述为由图1的ix选择器114执行;然而,其他实体、模块、组件、设备(或其组件)可以在多种实现方式、布置和/或环境中操作过程700。另外,过程700可以实现为程序代码,该程序代码当由处理器102执行时,使计算机系统100执行过程700的各种操作。尽管图7示出了特定的示例和操作顺序,但是在各种实施例中,这些操作可以被重新排序、分成附加操作、组合或完全省略。

参见图7,过程700可以在操作705处开始,其中ix选择器114可以识别要执行的应用的wcp。在操作710处,在应用执行期间,ix选择器114可以针对加速器映像与应用功能之间的链路(例如,vc506)应用初始ix分配,如由wcp针对vm/应用功能的预期工作负载需求定义的。在实施例中,预期工作负载需求可以基于各种预定义的应用要求。

在开环框715处,ix选择器114可以处理、分析或以其他方式确定应用的每个功能的工作负荷。在操作720处,ix选择器114可以确定当前分析的功能的所确定的工作负载是否超过由wcp针对当前分析的功能定义的工作负载标准。

如果在操作720处ix选择器114确定对于当前分析的功能而言未超过工作负载标准,则ix选择器114可以前进到操作730以迭代回到开环框715以处理/分析下一功能(如果有的话)。如果在操作720处ix选择器114确定对于当前分析的功能而言超过工作负载标准,则ix选择器114可以前进到操作725以根据wcp来修改ix分配。在操作725之后,ix选择器114可以前进到闭环操作730以迭代回到开环框715以处理/分析下一功能(如果有的话)。

一旦处理/分析所有功能,则ix选择器114可以前进到操作735以确定应用是否仍在运行/执行。如果在操作735处ix选择器114确定应用仍在运行/执行,则ix选择器114可以返回到操作715以针对工作负载特性重新分析/处理应用功能。如果在操作735处ix选择器114确定应用不再运行/执行,则ix选择器114可以前进到操作740以结束或重复过程700。

一些非限制性示例如下。以下示例涉及另外的实施例,并且示例中的细节可以在先前讨论的一个或多个实施例中的任何地方使用。以下示例中的任一个可以与任何其他示例或本文讨论的任何实施例组合。

示例1可以包括一种在计算机系统中采用的多芯片封装(mcp),该mcp包括:多核心处理器电路,其包括多个处理核心,其中,多个处理核心中的一个或多个处理核心用于实现虚拟机(vm);以及硬件加速器电路,其经由一个或多个相干互连(ix)和一个或多个非相干ix与多核心处理器电路耦合,其中,基于要在个体vm中执行的应用的应用功能的工作负载特性,一个或多个相干ix中的个体相干ix和一个或多个非相干ix中的个体非相干ix被绑定到个体vm。

示例2可以包括示例1和/或本文的一些其他示例的mcp,其中,该计算机系统包括:系统存储器电路,其与多核心处理器电路耦合;以及相干性域,其中,相干性域包括系统存储器、多核心处理器电路的最后一级高速缓存(llc)电路、一个或多个相干ix以及硬件加速器电路的高速缓存电路。

示例3可以包括示例1-2和/或本文的一些其他示例的mcp,其中,个体vm包括一组虚拟输入/输出(vio)端口,其中,该组vio端口中的每个vio端口根据工作负载特性策略被绑定到一个或多个相干ix中的相干ix或一个或多个非相干ix中的非相干ix,其中,工作负载特性策略用于针对应用的个体应用功能定义一组工作负载标准。

示例4可以包括示例3和/或本文的一些其他示例的mcp,其中,硬件加速器电路包括:设备接口单元(diu)电路;以及加速功能单元(afu)电路,其经由可编程核心高速缓存接口(cci-p)电路与diu电路耦合,其中,afu电路包括加载有多个加速器映像中的加速器映像的一个或多个存储器单元。

示例5可以包括示例4和/或本文的一些其他示例的mcp,其中,cci-p电路用于将一个或多个相干ix和一个或多个非相干ix抽象化为个体虚拟信道(vc),其中,个体vc用于将个体应用功能通信地耦合到多个加速器功能中的个体加速器功能。

示例6可以包括示例5和/或本文的一些其他示例的mcp,其中,多个处理核心中的个体处理核心用于实现ix选择模块,以用于:选择要绑定到个体vm中的对应vm的个体相干ix和个体非相干ix,其中,为了选择个体相干ix或个体非相干ix,ix选择模块用于:基于当前工作负载特性和工作负载特性策略,将一个或多个相干ix和一个或多个非相干ix分配给个体vc中的对应vc。

示例7可以包括示例1-6和/或本文的一些其他示例的mcp,其中,为了选择个体相干ix或个体非相干ix,ix选择模块用于:在执行应用的应用功能之前,基于应用功能的预期工作负载来选择个体相干ix或个体非相干ix中的一个作为初始ix,其中,预期工作负载是基于应用要求的;以及当应用功能的当前工作负载特性超过由应用要求定义的阈值时,选择一个或多个相干ix或一个或多个非相干ix中的另一ix。

示例8可以包括示例4-7和/或本文的一些其他示例的mcp,其中,diu电路用于:实现用于一个或多个相干ix和一个或多个非相干ix的接口协议;以及在操作者平台与afu电路之间交换信息,其中,信息包括安全性信息、错误监测信息、性能监测信息、功率和热管理信息以及afu配置信息。

示例9可以包括示例4-8和/或本文的一些其他示例的mcp,其中,diu电路包括:diu高速缓存;与一个或多个非相干ix相对应的一个或多个非相干高速缓存控制器;与一个或多个相干ix相对应的一个或多个相干高速缓存控制器,并且其中,一个或多个相干高速缓存控制器用于向计算机系统的相干系统存储器发出读取请求和写入请求,并且对diu高速缓存执行总线侦听操作。

示例10可以包括示例1-9和/或本文的一些其他示例的mcp,其中:一个或多个相干ix是超路径接口(upi)ix、加速器链路(ial)ix或公共应用编程接口(capi)ix;一个或多个非相干ix是快速外围组件互连(pcie)ix;并且硬件加速器电路是现场可编程门阵列(fpga)。

示例11可以包括一种计算机系统,包括:一个或多个网络接口控制器(nic);系统存储器电路;以及一个或多个多芯片封装(mcp),其彼此通信地耦合并且与系统存储器电路通信地耦合,其中,一个或多个mcp中的至少一个mcp与一个或多个nic通信地耦合,并且其中,一个或多个mcp中的每个mcp包括:多核心处理器电路,其包括多个处理核心,其中,多个处理核心中的一个或多个处理核心用于实现个体虚拟机(vm);硬件加速器电路,其经由一个或多个相干互连(ix)和一个或多个非相干ix与多核心处理器电路耦合;以及相干性域,其中,相干性域包括系统存储器、多核心处理器电路的最后一级高速缓存(llc)电路、一个或多个相干ix以及硬件加速器电路的高速缓存电路,并且其中,基于要在个体vm中执行的应用的应用功能的工作负载特性,一个或多个相干ix中的个体相干ix和一个或多个非相干ix中的个体非相干ix被绑定到个体vm。

示例12可以包括示例11和/或本文的一些其他示例的计算机系统,其中,个体vm包括一组虚拟输入/输出(vio)端口,其中,该组vio端口中的每个vio端口根据工作负载特性策略被绑定到一个或多个相干ix中的相干ix或一个或多个非相干ix中的非相干ix,其中,工作负载特性策略用于针对应用的个体应用功能定义一组工作负载标准。

示例13可以包括示例12和/或本文的一些其他示例的计算机系统,其中,硬件加速器电路包括:设备接口单元(diu)电路;以及加速功能单元(afu)电路,其经由可编程核心高速缓存接口(cci-p)电路与diu电路耦合,其中,afu电路包括加载有多个加速器映像中的加速器映像的一个或多个存储器单元。

示例14可以包括示例13和/或本文的一些其他示例的计算机系统,其其中,多个处理核心中的个体处理核心用于实现ix选择模块,以用于:选择要绑定到个体vm中的对应vm的个体相干ix和个体非相干ix。

示例15可以包括示例14和/或本文的一些其他示例的计算机系统,其中,cci-p电路用于将一个或多个相干ix和一个或多个非相干ix抽象化为个体虚拟信道(vc),其中,个体vc用于将个体应用功能通信地耦合到多个加速器功能中的个体加速器功能。

示例16可以包括示例15和/或本文的一些其他示例的计算机系统,其中,为了选择个体相干ix和个体非相干ix,ix选择模块用于:基于当前工作负载特性和工作负载特性策略,将一个或多个相干ix和一个或多个非相干ix分配给个体vc中的对应vc。

示例17可以包括示例15-16和/或本文的一些其他示例的计算机系统,其中,为了选择个体相干ix和个体非相干ix,ix选择模块用于:在执行应用的应用功能之前,基于应用功能的预期工作负载来选择个体相干ix或个体非相干ix中的一个作为初始ix,其中,预期工作负载是基于应用要求的;以及当应用功能的当前工作负载特性超过由应用要求定义的阈值时,选择一个或多个相干ix或一个或多个非相干ix中的另一ix。

示例18可以包括示例13-17和/或本文的一些其他示例的计算机系统,其中,diu电路用于:实现用于一个或多个相干ix和一个或多个非相干ix的接口协议;以及在操作者平台与afu电路之间交换信息,其中,信息包括安全性信息、错误监测信息、性能监测信息、功率和热管理信息以及afu配置信息。

示例19可以包括示例13-18的计算机系统,其中,diu电路包括:diu高速缓存;与一个或多个非相干ix相对应的一个或多个非相干高速缓存控制器;与一个或多个相干ix相对应的一个或多个相干高速缓存控制器,并且其中,一个或多个相干高速缓存控制器用于向计算机系统的相干系统存储器发出读取请求和写入请求,并且对diu高速缓存执行总线侦听操作。

示例20可以包括示例11-19和/或本文的一些其他示例的计算机系统,其中:一个或多个相干ix是超路径接口(upi)ix、加速器链路(ial)ix或公共应用编程接口(capi)ix;一个或多个非相干ix是快速外围组件互连(pcie)ix;并且硬件加速器电路是现场可编程门阵列(fpga)。

示例21可以包括一种或多种计算机可读介质(crm),其包括指令,该指令当由多核心处理器的一个或多个处理器核心执行时,使多核心处理器:控制个体虚拟机(vm)的操作,其中,一个或多个应用在个体vm中被执行;以及确定互连(ix)分配,ix分配用于指示工作负载通过其被传送的一个或多个相干ix和一个或多个非相干ix,并且其中,一个或多个相干ix和一个或多个非相关ix用于将多核心处理器与硬件加速器通信地耦合,并且针对一个或多个应用的每个应用功能:识别应用功能的工作负载,通过由ix分配指示的已分配ix,将应用功能的程序代码或数据发送到硬件加速器的一个或多个加速功能单元(afu),并且通过已分配ix获得由一个或多个afu基于程序代码或数据的执行而产生的输出。

示例22可以包括示例21和/或本文的一些其他示例的一种或多种crm,其中,为了确定ix分配,指令的执行使多核心处理器:控制ix选择模块的操作以选择一个或多个相干ix中的个体相干ix或一个或多个非相干ix中的个体非相干ix。

示例23可以包括示例22和/或本文的一些其他示例的一种或多种crm,其中,为了选择个体相干ix或个体非相干ix,指令的执行使多核心处理器控制ix选择模块的操作以用于:识别与一个或多个应用中的个体应用相关联的工作负载特性策略(wcp),其中,wcp用于针对个体应用的应用功能定义一组工作负载标准;以及在执行个体应用之前,针对个体应用的每个应用功能,选择具有与应用功能的预期工作负载特性相对应的工作负载标准的个体相干ix或个体非相干ix。

示例24可以包括示例23和/或本文的一些其他示例的一种或多种crm,其中,指令的执行使多核心处理器控制ix选择模块的操作以用于:在当前工作负载特性超出如由wcp指示的、当前分配的ix的工作负载标准时,在执行个体应用期间针对个体应用的每个应用功能,选择具有与当前工作负载特性相对应的工作负载标准的另一个体相干ix或另一个体非相干ix。

示例25可以包括示例21-24和/或本文的一些其他示例的一种或多种crm,其中,ix分配是基于与一个或多个相干ix和一个或多个非相干ix相对应的虚拟信道(vc)的,其中,个体vc用于将个体应用功能通信地耦合到由硬件加速实现的多个加速器功能中的个体加速器功能。

示例26可以包括示例25和/或本文的一些其他示例的一种或多种crm,其中,硬件加速器包括:设备接口单元(diu);以及一个或多个加速功能单元(afu),其经由可编程核心高速缓存接口(cci-p)与diu耦合,其中,一个或多个afu包括加载有多个加速器映像中的加速器映像的一个或多个存储器单元,并且其中,cci-p电路用于将一个或多个相干ix和一个或多个非相干ix抽象化为个体vc。

示例27可以包括示例26和/或本文的一些其他示例的一种或多种crm,其中,指令的执行使多核心处理器控制ix选择模块的操作以用于:基于当前工作负载特性和wcp将一个或多个相干ix和一个或多个非相干ix分配给个体vc中的对应vc。

示例28可以包括示例26-27和/或本文的一些其他示例的一种或多种crm,其中,diu用于:实现用于一个或多个相干ix和一个或多个非相干ix的接口协议;在操作者平台与afu之间交换信息,其中,信息包括安全性信息、错误监测信息、性能监测信息、功率和热管理信息以及afu配置信息。

示例29可以包括示例26-28和/或本文的一些其他示例的一种或多种crm,其中,diu电路包括:diu高速缓存;与一个或多个非相干ix相对应的一个或多个非相干高速缓存控制器;与一个或多个相干ix相对应的一个或多个相干高速缓存控制器,并且其中,一个或多个相干高速缓存控制器用于向相干系统存储器发出读取请求和写入请求,并且对diu高速缓存执行总线侦听操作。

示例30可以包括示例21-29和/或本文的一些其他示例的一种或多种crm,其中:一个或多个相干ix是超路径接口(upi)ix、加速器链路(ial)ix或公共应用编程接口(capi)ix;一个或多个非相干ix是快速外围组件互连(pcie)ix;并且硬件加速器是现场可编程门阵列(fpga)。

示例31可以包括一种在计算机系统中采用的装置,该装置包括:处理单元,其经由一个或多个相干互连(ix)和一个或多个非相干ix与硬件加速单元通信地耦合,其中,处理单元包括:虚拟机(vm)单元,其用于操作个体vm,其中,一个或多个应用在个体vm中被执行;ix选择单元,其用于确定ix分配,ix分配用于指示工作负载通过其被传送的一个或多个相干ix和一个或多个非相干ix,并且针对一个或多个应用的每个应用功能识别应用功能的工作负载;以及ix传送单元,其用于通过由ix分配指示的已分配ix,将应用功能的程序代码或数据发送到硬件加速器的一个或多个加速功能单元(afu),并且用于通过已分配ix获得由一个或多个afu基于程序代码或数据的执行而产生的输出。

示例32可以包括示例31和/或本文的一些其他示例的装置,其中,ix选择单元用于选择一个或多个相干ix中的个体相干ix或一个或多个非相干ix中的个体非相干ix。

示例33可以包括示例32和/或本文的一些其他示例的装置,其中,为了选择个体相干ix或个体非相干ix,ix选择单元用于:识别与一个或多个应用中的个体应用相关联的工作负载特性策略(wcp),其中,wcp用于针对个体应用的应用功能定义一组工作负载标准;以及在执行个体应用之前,针对个体应用的每个应用功能,选择具有与应用功能的预期工作负载特性相对应的工作负载标准的个体相干ix或个体非相干ix。

示例34可以包括示例33和/或本文的一些其他示例的装置,其中,ix选择单元用于:在当前工作负载特性超出如由wcp指示的、当前分配的ix的工作负载标准时,在执行个体应用期间针对个体应用的每个应用功能,选择具有与当前工作负载特性相对应的工作负载标准的另一个体相干ix或另一个体非相干ix。

示例35可以包括示例31-34和/或本文的一些其他示例的装置,其中,ix分配是基于与一个或多个相干ix和一个或多个非相干ix相对应的虚拟信道(vc)的,其中,个体vc用于将个体应用功能通信地耦合到由硬件加速单元实现的多个加速器功能中的个体加速器功能。

示例36可以包括示例35和/或本文的一些其他示例的装置,其中,硬件加速单元包括:设备接口单元,其用于在处理单元与硬件加速单元之间传达程序代码和数据;以及加速功能单元,其经由核心高速缓存接口单元与设备接口单元耦合,其中,加速功能单元包括用于存储多个加速映像中的加速映像的存储单元,并且其中,核心高速缓存接口单元用于将一个或多个相干ix和一个或多个非相干ix抽象化为个体vc。

示例37可以包括示例36和/或本文的一些其他示例的装置,其中,ix选择单元用于基于当前工作负载特性和wcp将一个或多个相干ix和一个或多个非相干ix分配给个体vc中的对应vc。

示例38可以包括示例36-37和/或本文的一些其他示例的装置,其中,设备接口单元用于:实现用于一个或多个相干ix和一个或多个非相干ix的接口协议;以及在操作者平台与加速功能单元之间交换信息,其中,要交换的信息包括安全性信息、错误监测信息、性能监测信息、电源和热管理信息以及afu配置信息。

示例39可以包括示例36-38和/或本文的一些其他示例的装置,其中,设备接口单元包括:与一个或多个非相干ix相对应的非相干高速缓存控制单元;以及与一个或多个相干ix相对应的相干高速缓存控制单元,其中,相干高速缓存控制单元用于向相干系统存储单元发出读取请求和写入请求,并且用于对设备接口缓存单元执行总线侦听操作。

示例40可以包括示例31-39和/或本文的一些其他示例的装置,还包括:相干性域单元,其包括系统存储器单元、处理单元的最后一级高速缓存(llc)单元、一个或多个相干ix以及硬件加速单元的高速缓存单元;以及网络通信单元,其与硬件加速单元通信地耦合,网络通信单元用于通过网络传达数据,并且其中,一个或多个相干ix是超路径接口(upi)ix、加速器链路(ial)ix或公共应用编程接口(capi)ix;一个或多个非相干ix是快速外围组件互连(pcie)ix;并且硬件加速单元是现场可编程门阵列(fpga)。

示例41可以包括一种在计算机系统中采用的装置,该装置包括:多核心处理器电路,其包括多个处理核心,其中,多个处理核心中的一个或多个处理核心用于实现虚拟机(vm);以及硬件加速器电路,其经由一个或多个相干互连(ix)和一个或多个非相干ix与多核心处理器电路耦合,其中,基于要在个体vm中执行的应用的应用功能的工作负载特性,一个或多个相干ix中的个体相干ix和一个或多个非相干ix中的个体非相干ix被绑定到个体vm,并且其中,多核心处理器电路和硬件加速器电路被实现为单个半导体封装,或者多核心处理器电路和硬件加速器电路被实现为单独的半导体封装。

示例42可以包括示例41和/或本文的一些其他示例的装置,其中,该计算机系统包括:与多核心处理器电路耦合的系统存储器电路;相干性域,其中,相干性域包括系统存储器、多核心处理器电路的最后一级高速缓存(llc)电路、一个或多个相干ix以及硬件加速器电路的高速缓存电路;以及与硬件加速器电路通信地耦合的一个或多个网络接口控制器(nic)。

示例43可以包括示例41-42和/或本文的一些其他示例的装置,其中,个体vm包括一组虚拟输入/输出(vio)端口,其中,该组vio端口中的每个vio端口根据工作负载特性策略被绑定到一个或多个相干ix中的相干ix或一个或多个非相干ix中的非相干ix,其中,工作负载特性策略用于针对应用的个体应用功能定义一组工作负载标准。

示例44可以包括示例43和/或本文的一些其他示例的装置,其中,硬件加速器电路包括:设备接口单元(diu)电路;以及加速功能单元(afu)电路,其经由可编程核心高速缓存接口(cci-p)电路与diu电路耦合,其中,afu电路包括加载有多个加速器映像中的加速器映像的一个或多个存储器单元。

示例45可以包括示例44和/或本文的一些其他示例的装置,其中,cci-p电路用于将一个或多个相干ix和一个或多个非相干ix抽象化为个体虚拟信道(vc),其中,个体vc用于将个体应用功能通信地耦合到多个加速器功能中的个体加速器功能。

示例46可以包括示例45和/或本文的一些其他示例的装置,其中,多个处理核心中的个体处理核心用于实现ix选择模块,以用于:选择要绑定到个体vm中的对应vm的个体相干ix和个体非相干ix,其中,为了选择个体相干ix或个体非相干ix,ix选择模块用于:基于当前工作负载特性和工作负载特性策略,将一个或多个相干ix和一个或多个非相干ix分配给个体vc中的对应vc。

示例47可以包括示例41-46和/或本文的一些其他示例的装置,其中,为了选择个体相干ix或个体非相干ix,ix选择模块用于:在执行应用的应用功能之前,基于应用功能的预期工作负载来选择个体相干ix或个体非相干ix中的一个作为初始ix,其中,预期工作负载是基于应用要求的;以及当应用功能的当前工作负载特性超过由应用要求定义的阈值时,选择一个或多个相干ix或一个或多个非相干ix中的另一ix。

示例48可以包括示例44-47和/或本文的一些其他示例的装置,其中,diu电路用于:实现用于一个或多个相干ix和一个或多个非相干ix的接口协议;以及在操作者平台与afu电路之间交换信息,其中,信息包括安全性信息、错误监测信息、性能监测信息、功率和热管理信息以及afu配置信息。

示例49可以包括示例44-48和/或本文的一些其他示例的装置,其中,diu电路包括:diu高速缓存;与一个或多个非相干ix相对应的一个或多个非相干高速缓存控制器;与一个或多个相干ix相对应的一个或多个相干高速缓存控制器,并且其中,一个或多个相干高速缓存控制器用于向计算机系统的相干系统存储器发出读取请求和写入请求,并且对diu高速缓存执行总线侦听操作。

示例50可以包括示例41-49和/或本文的一些其他示例的装置,其中:一个或多个相干ix是超路径接口(upi)ix、加速器链路(ial)ix或公共应用编程接口(capi)ix;一个或多个非相干ix是快速外围组件互连(pcie)ix;并且硬件加速器电路是现场可编程门阵列(fpga)。

示例51可以包括一种装置,包括:处理器单元,其用于操作一个或多个虚拟机(vm);加速单元,其经由相干连接单元(ccm)和非相干连接单元(ncm)与处理器单元耦合,其中,基于要在个体vm中执行的应用的应用功能的工作负载特性,ccm和ncm被绑定到个体vm;以及系统存储器单元,其与处理器单元耦合,系统存储器单元用于存储系统数据;相干性域单元,其包括系统存储器单元、处理器单元的最后一级高速缓存(llc)单元、ccm以及加速单元的缓存单元;以及网络通信单元,其与加速单元通信地耦合,其中,网络通信单元用于通过网络传达数据。

示例52可以包括示例51和/或本文的一些其他示例的装置,其中,处理器单元和加速单元被设置在单个半导体封装中或单个半导体封装上,或者处理器单元和加速单元被设置在单独的半导体封装中或单独的半导体封装上。

示例53可以包括示例51-52和/或本文的一些其他示例的装置,其中,个体vm包括一组虚拟输入/输出(vio)端口,其中,该组vio端口中的每个vio端口根据工作负载特性策略被绑定到ccm或ncm,其中,工作负载特性策略用于针对应用的个体应用功能定义一组工作负载标准。

示例54可以包括示例53和/或本文的一些其他示例的装置,其中,加速单元包括:设备接口单元(dim);以及加速功能单元(afm),其经由核心高速缓存接口单元(ccim)与dim耦合,其中,afm包括用于加载有多个加速器映像中的加速器映像的一个或多个存储单元。

示例55可以包括示例54和/或本文的一些其他示例的装置,其中,ccim用于将ccm和ncm抽象化为个体虚拟信道(vc),其中,个体vc用于将个体应用功能通信地耦合到多个加速器功能中的个体加速器功能。

示例56可以包括示例55和/或本文的一些其他示例的装置,其中,处理器单元包括互连选择单元,用于:选择要绑定到个体vm中的对应vm的ccm或ncm,其中,选择ccm或ncm,互连选择单元用于:基于当前工作负载特性和工作负载特性策略将ccm或ncm分配给个体vc中的对应vc。

示例57可以包括示例51-56和/或本文的一些其他示例的装置,其中,选择ccm或ncm,互连选择单元用于:在执行应用的应用功能之前,基于应用功能的预期工作负载来选择ccm或ncm作为初始互连,其中,预期工作负载是基于应用要求的;以及当应用功能的当前工作负载特性超过由应用要求定义的阈值时,选择另一ccm或另一ncm。

示例58可以包括示例54-57和/或本文的一些其他示例的装置,其中,dim用于:实现用于一个或多个ccm和一个或多个ncm的接口协议;以及在操作者平台与afm之间交换信息,其中,信息包括安全性信息、错误监测信息、性能监测信息、电源和热管理信息以及afm配置信息。

示例59可以包括示例54-58和/或本文的一些其他示例的装置,其中,dim包括:dim缓存单元;与一个或多个ncm相对应的非相干高速缓存控制单元;与一个或多个ccm相对应的相干高速缓存控制单元,并且其中,相干高速缓存控制单元用于向计算机系统的相干系统存储器发出读取请求和写入请求,并且用于对dim缓存单元执行总线侦听操作。

示例60可以包括示例51-59和/或本文的一些其他示例的装置,其中:ccm是超路径接口(upi)、加速器链路(ial)或公共应用编程接口(capi);ncm是快速外围组件互连(pcie);并且加速单元是现场可编程门阵列(fpga)。

对于本领域技术人员显而易见的是,在不脱离本公开的精神或范围的情况下,可以在所公开的设备和相关联的方法的所公开的实施例中进行各种修改和变化。因此,本公开旨在覆盖上文公开的实施例的修改和变化,只要这些修改和变化落入任何权利要求及其等同物的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1