在使用加速部件的系统中处理租户要求的制作方法

文档序号:23152361发布日期:2020-12-04 13:47阅读:196来源:国知局
在使用加速部件的系统中处理租户要求的制作方法

相关申请引用

本申请是国际申请号为pct/us2016/026287、国际申请日为2016年4月7日、进入中国国家阶段日期为2017年10月17日、中国国家申请号为201680022845.8、发明名称为“在使用加速部件的系统中处理租户要求”的发明专利申请的分案申请。

本申请涉及在使用加速部件的系统中处理租户要求。



背景技术:

例如由于功率限制和其他因素,计算机行业在其提高软件驱动的计算设备的速度和效率的努力中面临越来越多的挑战。软件驱动的计算设备采用一个或多个中央处理单元(cpu),其以传统时间方式处理机器可读指令。为了解决这个问题,计算行业提出了使用硬件加速部件(诸如现场可编程门阵列(fpga))来补充由软件驱动的计算设备执行的处理。然而,软件驱动的计算设备和硬件加速部件是不同类型的设备,其具有根本不同的架构、性能特性、功率需求、程序配置范例、接口特征等。因此,以满足特定数据处理环境的各种设计要求的方式将这两种类型的设备集成在一起是具有挑战性的任务。



技术实现要素:

本文中描述了一种服务映射部件(smc),用于处理由数据处理系统中的软件驱动的主机部件(或某些其他部件)上执行的租户功能实例进行的请求。smc被配置为应用至少一个规则来确定由租户功能实例请求的服务是否要被以下中至少一个满足:本地软件驱动的主机部件、本地耦合到本地主机部件的本地硬件加速部件和/或本地主机部件经由本地硬件加速部件可间接地访问的至少一个远程硬件加速部件。

在一个说明性操作方式中,smc可以首先确定是否适合在本地硬件加速部件上执行服务。如果是,则smc指令本地主机部件使用本地硬件加速部件来执行服务。否则,smc确定远程硬件加速部件是否适合执行服务。如果是,则smc指令本地主机部件使用远程硬件加速部件来执行服务。如果适合不由硬件加速部件来执行,则在可能的情况下,smc可以指令本地主机部件自己以软件来执行服务。在一个实现中,smc由多个本地管理部件结合全局管理部件来实现。

在执行其分析时,smc可以考虑到各种因素,诸如服务是否对应于线路速率服务、延迟相关考虑、功率相关考虑、安全相关考虑等。

以上总结的功能可以表现在各种类型的系统、设备、部件、方法、计算机可读存储介质、数据结构、图形用户接口呈现、制品等中。

提供本发明内容部分以便以简化的形式介绍概念的选择;这些概念在下面的具体实施例部分中进一步描述。本发明内容部分不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

附图说明

图1示出了包括软件平面和硬件加速平面的数据处理系统的概述。

图2示出了图1的数据处理系统的操作的第一示例。

图3示出了图1的数据处理系统的操作的第二示例。

图4示出了对应于数据中心的图1的数据处理系统的一个实现。

图5是图4的数据中心实现的更具包含性的描绘。

图6示出了与图4所示的相比实现服务器单元部件的备选方式。

图7示出了与图4所示的相比实现服务器单元部件的另一方式。

图8示出了与图1所示的相比的备选数据处理系统,其例如使用与图1所示的相比不同的网络基础设施。

图9是示出图1的数据处理系统的一种操作方式的流程图。

图10示出了用于管理图1的数据处理系统的管理功能的一个实现的概述。

图11提供了作为图10的管理功能的部件的服务映射部件(smc)的一个请求驱动的操作方式的概述。

图12到图15示出了用于处理对于服务的请求的不同的相应选项,该请求由驻留在主机部件上的租户功能实例做出。

图16提供了图10的smc的另一后台相关的操作方式的概述。

图17到图20示出了用于在物理上实现图10的管理功能的各个不同的架构。

图21到图24示出了用于配置图1的数据处理系统中的硬件加速部件的各个不同的策略。

图25提供了与图10的smc的一种操作方式有关的附加信息。

图26是如下流程图,其示出了在请求驱动的操作模式下图10的管理功能的一种操作方式的概述。

图27是如下流程图,其示出了从本地管理部件的角度来看的图10的管理功能的一种操作方式。

图28到图30是如下流程图,其示出管理功能的操作的附加的决定相关的和管理相关的方面。

图31示出了实现图1的硬件加速部件的一种方式。

图32示出了包括分离的可配置域的硬件加速部件。

图33示出了用于在本地主机部件与相关联的本地硬件加速部件之间执行数据传输的功能。

图34示出了在图31中介绍的路由器的一个实现。

图35示出了在图31中介绍的传输部件的一个实现。

图36示出了在图31中介绍的3端口交换机的一个实现。

图37示出了图1所示的主机部件的一个实现。

在整个公开内容和附图中使用相同的附图标记来指代相同的部件和特征。100系列数字是指最先在图1中出现的特征,200系列数字是指最先在图2中出现的特征,300系列数字是指最先在图3中出现的特征,等等。

具体实施方式

本公开如下组织。a部分描述包括硬件加速平面和软件平面的说明性数据处理系统。b部分描述用于管理a部分的数据处理系统的管理功能。c部分阐述硬件加速平面中的说明性硬件加速部件的一个实现。

作为引文,一些附图描述在一个或多个结构部件的上下文中的概念,这些结构部件以各种不同的方式被称为功能、模块、特征、元件等。附图中所示的各种部件可以通过任何物理和有形机制以任何方式来实现,例如通过在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等、和/或其任何组合。在一种情况下,附图中的各种部件到不同单元的所示出的分割可以反映在实际实现中相应的不同物理和有形部件的使用。备选地或附加地,附图中所示的任何单个部件可以由多个实际物理部件来实现。备选地或另外,附图中的任何两个或更多个分离部件的描绘可以反映由单个实际物理部件执行的不同功能。

其他附图以流程图形式描述概念。以这种形式,某些操作被描述为构成以特定顺序执行的不同块。这样的实现是说明性的而非限制性的。本文中描述的某些块可以被分组在一起并且在单个操作中执行,某些块可以分解成多个部件块,并且某些块可以与本文中所示的顺序不同的顺序来执行(包括并行的执行块的方式)。流程图中所示的框可以通过任何物理和有形机制以任何方式来实现,例如通过在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等、和/或其任何组合。

关于术语,短语“被配置为”包括任何种类的物理和有形功能可以被构造为执行所标识的操作的任何方式。该功能可以被配置为例如使用在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等、和/或其任何组合来执行操作。

术语“逻辑”包括用于执行任务的任何物理和有形功能。例如,流程图中所示的每个操作对应于用于执行该操作的逻辑部件。操作可以例如使用在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等、和/或其任何组合来执行。当由计算设备实现时,逻辑部件表示作为计算系统的物理部分的电气部件,然而实现。

本文中描述的任何存储资源、或存储资源的任何组合可以被认为是计算机可读介质。在很多情况下,计算机可读介质表示某种形式的物理和有形实体。术语计算机可读介质还包括例如经由物理管道和/或空中或其他无线介质等发送或接收的传播信号。然而,特定术语“计算机可读存储介质”和“计算机可读介质设备”明确地排除传播信号本身,同时包括所有其他形式的计算机可读介质。

以下说明可能将一个或多个特征标识为“可选”。这种类型的语句不应当被解释为可以被认为是可选的特征的穷举指示;也就是说,其他特征可以被认为是可选的,虽然在文本中没有明确标识。此外,对单个实体的任何描述并不旨在排除使用多个这样的实体;类似地,对多个实体的描述并不旨在排除使用单个实体。另外,虽然描述可以将某些特征解释为执行所标识的功能或实现所标识的机制的备选方式,但是也可以任何组合将特征组合在一起。最后,术语“示例性”或“说明性”是指潜在的很多实现中的一个实现。

a.概述

图1示出了包括软件平面104和硬件加速平面106的数据处理系统102的概述。软件平面104包括软件驱动部件(每个由图1中的符号“s”表示)的集合,而硬件平面包括硬件加速部件(每个由图1中的符号“h”表示)的集合。例如,每个主机部件可以对应于使用一个或多个中央处理单元(cpu)执行机器可读指令的服务器计算机。进而,每个cpu可以执行一个或多个硬件线程上的指令。另一方面,每个硬件加速部件可以对应于用于实现功能的硬件逻辑,诸如现场可编程门阵列(fpga)设备、大规模并行处理器阵列(mppa)设备、图形处理单元(gpu)、专用集成电路(asic)、多处理器片上系统(mpsoc)等。

术语“硬件”加速部件还旨在广泛地包括利用硬件设备来执行功能的不同方式,例如至少包括:a)其中至少一些任务用硬asic逻辑等来实现的情况;b)其中至少一些任务用软(可配置)fpga逻辑等来实现的情况;c)其中至少一些任务作为fpga软件处理器覆盖上的软件等来运行的情况;d)其中至少一些任务在软处理器的mppa等上运行的情况;e)其中至少一些任务作为硬asic处理器上的软件等来运行的情况,等等,或其任何组合。类似地,数据处理系统102可以适应软件驱动设备在软件平面104中的不同表现。

为了简化对硬件加速部件的重复参考,以下说明将因此这些设备简单地称为“加速部件”。此外,以下说明将提出其中加速部件对应于fpga器件的主要示例,但是,如上所述,数据处理系统102可以使用其他类型的加速部件来构造。另外,硬件加速平面106可以使用加速部件的异构集合来构造,包括不同类型的、具有不同的相应处理能力和架构的fpga器件、fpga器件和其他器件的混合等。

主机部件通常使用时间执行范例,例如通过使用其每个cpu硬件线程逐一执行机器可读指令来执行操作。相反,加速部件可以使用空间范例,例如通过使用大量并行逻辑元件执行计算任务来执行操作。因此,与软件驱动的主机部件相比,加速部件可以在更短的时间内执行一些操作。在数据处理系统102的上下文中,与术语“加速部件”相关联的“加速”修饰语反映其加速由主机部件执行的功能的可能性。

在一个示例中,数据处理系统102对应于包括多个计算机服务器的数据中心环境。计算机服务器对应于图1所示的软件平面104中的主机部件。在其他情况下,数据处理系统102对应于企业系统。在其他情况下,数据处理系统102对应于使用能够访问两个或更多个加速部件的至少一个主机部件的用户设备或器具。这些示例以举例而不是限制的方式引用;其他应用是可行的。

在一个实现中,数据处理系统102中的每个主机部件通过本地链路耦合到至少一个加速部件。处理设备的基本单元在本文中被称为“服务器单元部件”,因为该设备可以被分组在一起并且作为数据处理系统102内的单个可服务单元(尽管不一定如此)被维护。服务器单元部件中的主机部件称为“本地”主机部件,以将其和与其他服务器单元部件关联的其他主机部件区分开。同样地,服务器单元部件的加速部件称为“本地”加速部件,以将它们与与其他服务器单元部件相关联的其他加速部件区分开。

例如,图1示出了通过本地链路112(诸如下面将描述的外围部件快速互连(pcie)链路)耦合到本地加速部件110的说明性本地主机部件108。本地主机部件108和本地加速部件110的这种配对形成单个服务器单元部件的至少一部分。更一般地,图1示出了软件平面104通过很多个体本地链路耦合到硬件加速平面,图1统称为本地h到本地s耦合114。

本地主机部件108还可以间接地与硬件加速平面106中的任何其他远程加速部件通信。例如,本地主机部件108能够经由本地加速部件110访问远程加速部件116。更具体地,本地加速部件110经由链路118与远程加速部件116通信。

在一个实现中,公共网络120用于将软件平面104中的主机部件耦合到其他主机部件,并且将硬件加速平面106中的加速部件耦合到其他加速部件。也就是说,两个主机部件可以像两个加速部件那样使用相同的网络120彼此通信。作为另一特征,软件平面104中的主机部件之间的交互独立于硬件加速平面106中的加速部件之间的交互。这表示,例如,从软件平面104中的主机部件的角度来看,在主机部件的方向之外,两个或更多个加速部件可以透明的方式彼此通信,而主机部件不“知道”在硬件加速平面106中进行的特定交互。然而,通过发出对于由硬件加速平面106托管的服务的请求,主机部件可以启动在硬件加速平面106中进行的交互。

根据一个非限制性实现,数据处理系统102使用以太网协议来通过公共网络120发送ip分组。在一个实现中,服务器单元部件中的每个本地主机部件被给定单个物理ip地址。同一服务器单元部件中的本地加速部件可以采用相同的ip地址。服务器单元部件可以不同的方式确定传入分组是否以本地主机部件而不是本地加速部件为目的地。例如,以本地加速部件为目的地的分组可以被公式化为指定特定端口的用户数据报协议(udp)分组;另一方面,以主机为目的地的分组不以这种方式被公式化。在另一种情况下,属于加速平面106的分组可以基于每个分组中(例如,分组的报头或主体中)的状态标志的值而与属于软件平面104的分组区分开。

鉴于上述特性,数据处理系统102可以被概念化为形成共享相同物理通信链路的两个逻辑网络。与两个逻辑网络相关联的分组可以通过它们的个体业务类别以上述方式彼此区分开。但是在其他实现中(例如,如下面关于图8所述),数据处理系统102可以分别使用两个不同的物理网络来处理主机到主机业务和硬件到硬件业务。此外,在使用公共网络120的实现中,主机到主机网络基础设施不需要与硬件到硬件网络基础设施完全相同;也就是说,这两个基础设施在它们的大多数网络资源被共享的意义上是共有的,但是不一定其所有的网络资源都是共享的。

最后,管理功能122用于管理数据处理系统102的操作。如将在b部分(下面)中更详细地阐述的,管理功能122可以在物理上使用不同的控制架构实现。例如,在一个控制架构中,管理功能122可以包括耦合到一个或多个全局管理部件的多个本地管理部件。

通过对b部分的介绍,管理功能122可以包括多个子部件,其执行不同的相应逻辑功能(其可以在物理上以不同的方式实现)。例如,位置确定部件124基于存储在数据存储设备126中的当前分配信息来标识数据处理系统102内的服务的当前位置。如本文中使用的,服务是指由数据处理系统102执行的任何功能。例如,一个服务可以对应于加密功能。另一服务可以对应于文档排序功能。另一服务可以对应于数据压缩功能,等等。

在操作中,位置确定部件124可以接收对于服务的请求。作为响应,位置确定部件124返回与服务相关联的地址,如果该地址存在于数据存储设备126中。地址可以标识托管所请求的服务的特定加速部件。

服务映射部件(smc)128将服务映射到特定的加速部件。smc128可以根据其接收到的调用其操作的触发事件的类型来以至少两种模式进行操作。在第一种情况下,smc128处理由租户功能实例做出的对于服务的请求。租户功能实例可以对应于在特定本地主机部件上运行的软件程序,或者更具体地对应于在虚拟机上执行的程序,其又与特定本地主机部件相关联。该软件程序可以在其执行过程中请求服务。smc128通过确定数据处理系统102中用以提供服务的适当部件来处理该请求。供考虑的可能部件包括:本地加速部件(与发起请求的本地主机部件相关联);远程加速部件;和/或本地主机部件本身(从而本地主机部件将以软件来实现服务)。smc128基于诸如所请求的服务是否属于线路速率服务等一个或多个映射考虑来做出其确定。

在另一种操作方式中,smc128通常在后台和全局模式下操作,以基于数据处理系统102中的全局条件(而不是或除了处理来自租户功能实例的个体请求)来向加速部件分配服务。例如,smc128可以响应于影响一个或多个服务的需求的变化来调用其分配功能。在这种模式下,smc128再次基于诸如与服务相关联的历史需求等一个或多个映射考虑来做出其确定。

在执行其功能时,smc128可以与位置确定部件124交互。例如,在试图确定由加速部件提供的已经分配的服务的地址时,smc128可以咨询数据存储设备126。在例如通过与服务相关地存储加速部件的地址来将服务映射到一个或多个加速部件时,smc128还可以更新数据存储设备126。

虽然在图1中未示出,但是smc128的子部件也管理多部件服务。多部件服务是由多个部分组成的服务。多个相应的加速部件执行相应的部分。

注意,为了方便起见,图1示出了管理功能122与软件平面104和硬件平面106中的部件分离。但是如将在b部分中阐明的,可以使用软件平面104和/或硬件平面106的资源来实现管理功能122的任何方面。当由硬件平面106实现时,可以像任何服务一样加速管理功能。

图2示出了图1的数据处理系统102的操作的第一示例,其对应于单个事务或单个事务的一部分。在操作(1)中,第一主机部件202在执行单个计算任务的过程中与第二主机部件204通信。然后,第二主机部件204请求使用在硬件加速平面106中实现的服务(但是第二主机部件204除了服务可以在指定地址处被访问之外可能不“知道”实现服务的位置)。

在很多情况下,所请求的服务在单个加速部件上实现(但是可以有多个冗余的这样的加速部件可供从中选择)。但是在图2的特定示例中,所请求的服务对应于分散在加速部件的集合(或集群)上的多部件服务,每个加速部件执行服务的分配部分。图形结构可以指定各个加速部件在集合中被耦合在一起的方式。在一些实现中,图形结构还标识至少一个头部部件。头部部件对应于数据处理系统102中的实体可以与硬件加速平面106中的多部件服务交互的接触点。头部部件也可以用作由图形结构定义的处理管线中的初始处理阶段。

在图2的特定情况下,假定加速部件206对应于本地链接到本地主机部件204的本地加速部件,并且加速部件208是多部件服务的头部部件。在操作(2)和(3)中,请求主机部件204经由其本地加速部件206访问加速部件208。然后,加速部件208执行其部分的多部件服务以生成中间输出结果。在操作(4)中,加速部件208然后调用执行另一相应部分的多部件服务的另一加速部件210以生成最终结果。在操作(5)、(6)和(7)中,硬件加速平面106通过上述相同的部件链但是沿相反方向顺序地将最终结果转发回请求主机部件204。注意,上述数据流操作(包括定义返回路径的流操作)仅作为示例而非限制来被引用;其他多部件服务可以使用指定任何其他流路径的其他图形结构。例如,加速部件210可以将最终结果直接转发到本地加速部件206。

首先,注意,在硬件加速平面106中进行的操作与在软件平面104中执行的操作独立的方式来执行。换言之,软件平面104中的主机部件不管理硬件加速平面106中的操作。然而,主机部件可以通过发出对于由硬件加速平面106托管的服务的请求来调用硬件加速平面106中的操作。

其次,注意,硬件加速平面106以对于请求主机部件而言透明的方式来执行其事务。例如,本地主机部件204可能“不知道”其请求如何在硬件加速平面中被处理,包括服务对应于多部件服务这一事实。

再次,注意,在该实现中,软件平面104中的通信(例如,对应于操作(1))使用与硬件加速平面106中的通信(例如,对应于操作(3)-(6))相同的公共网络120来进行。操作(2)和(7)可以通过与图1所示的本地h到本地s耦合114相对应的本地链路来进行。

图2所示的多部件服务类似于环,因为一系列加速部件在第一方向上被遍历以获得最终结果;该最终结果然后在与头部部件相反的方向通过相同系列的加速部件被传播回来。但是如上所述,其他多部件服务可以使用加速部件的不同集合,其具有不同相应流结构。

例如,图3示出了与图1的示例相比采用不同流结构的图1的数据处理系统102的操作的第二示例。更具体地,在操作(1)中,本地主机部件(未示出)向其本地加速部件302发送请求。在这种情况下,假定本地加速部件也是服务的头部部件。在操作(2)中,头部部件然后可以将多个消息转发到多个相应的加速部件。接收消息的每个加速部件可以与其他加速部件并行地执行多部件服务的一部分。(注意,图3可以仅表示更完整的事务的一部分。)

此外,多部件服务不一定需要采用单个头部部件或任何头部部件。例如,多部件服务可以采用所有执行相同功能的加速部件的集群。数据处理系统102可以被配置为通过联系集群中的任意成员来调用这种多部件服务。该加速部件可以被称为头部部件,因为要访问的是第一部件,但是除此之外其没有特殊状态。在其他情况下,主机部件可以最初将多个请求分发到加速部件的集合的多个成员。

图4示出了表示图1的数据处理系统102的一个实现的数据中心402的一部分。特别地,图4示出了该数据中心402中的一个机架。机架包括多个服务器单元部件(404,406,...,408),每个部件耦合到架顶式(tor)交换机410。架顶式交换机是指将机架中的部件耦合到数据中心的其他部分的交换机。尽管未示出,但是其他机架可以呈现类似的架构。机架是用于容纳多个处理部件或除此之外对多个处理部件分组的物理结构。

图4还示出了一个代表性服务器单元部件404的说明性组合。它包括本地主机部件412和本地加速部件418,本地主机部件412包括一个或多个中央处理单元(cpu)(414,416,...)。本地加速部件418经由本地链路420直接耦合到主机部件412。本地链路420例如可以被实现为pcie链路。本地加速部件418还通过网络接口控制器(nic)422间接耦合到主机部件412。

最后,注意,本地加速部件418耦合到tor交换机410。因此,在该特定实现中,本地加速部件418表示主机部件412与数据中心402中的其他部件(包括其他主机部件和其他加速部件)交互的唯一路径。除了其他效果之外,图4的架构允许本地加速部件418对从tor交换机410接收(和/或发送到tor交换机410)(例如,通过执行加密、压缩等)的分组执行处理,而不需要负担由主机部件412执行的基于cpu的操作。

注意,本地主机部件412可以通过本地链路420或经由nic422与本地加速部件418通信。不同的实体可以在不同的相应情况下利用这两个路径。例如,假定在主机部件412上运行的程序请求服务。在一个实现中,假定主机部件412提供位置确定部件124和数据存储设备126的本地实例化。或者,全局管理部件可以提供位置确定部件124及其数据存储设备126。在任一情况下,主机部件412可以咨询数据存储设备126以确定服务的地址。然后,主机部件412可以使用所标识的地址经由nic422和tor交换机410来访问服务。

在另一实现中,假定本地加速部件418提供位置确定部件124和数据存储设备126的本地实例化。主机部件412可以经由本地链路420访问本地加速部件418。本地加速部件418然后可以咨询本地数据存储设备126以确定服务的地址,之后其经由tor交换机410来访问服务。其他访问服务的方式也是可能的。

图5是图4所示的数据中心402的更具包含性的描绘。数据中心402包括多个机架(502-512,...)。每个机架包括多个服务器单元部件。每个服务器单元部件又可以具有以上图4中所述的架构。例如,代表性服务器单元部件514包括本地主机部件(s)516、网络接口控制器(n)518和本地加速部件(s)520。

图5所示的路由基础设施对应于上面参考图1所描述的公共网络120的一个实现。路由基础设施包括多个架顶式(tor)交换机522和高级交换基础设施524。高级交换架构524将tor交换机522连接在一起。高级交换基础设施524可以具有任何架构,并且可以由任何路由协议来驱动。在图5所示的示例中,高级交换基础设施524至少包括聚合交换机526、核心交换机528等的集合。通过所示基础设施路由的业务可以对应于以太网ip分组。

图5所示的数据中心402可以对应于在单个地理位置处提供的资源集合、或者分布在多个地理位置(例如,位于世界上的不同地方的多个个体贡献数据中心)的分布式资源集合。在分布式上下文中,管理功能122可以基于任何映射考虑从第一贡献数据中心向第二贡献数据中心发送工作,映射考虑诸如:(1)确定加速部件在第二贡献数据中心可用;(2)确定加速部件被配置为在第二贡献数据中心执行期望的一个或多个服务;和/或(3)确定加速部件不仅被配置为执行期望的一个或多个服务,而且它们立即(例如,“在线”)可用以执行这些服务,等等。可以在服务分配中发挥作用的其他映射考虑在下面在b部分中给出。如本文中使用的,术语“全局”通常是指比与单个服务器单元部件相关联的本地域更具包含性的任何范围。

通常,注意,尽管图4和图5关注使用相对广泛的数据处理系统(对应于数据中心),但是本文中阐述的一些原理可以应用于较小的系统,包括其中单个本地主机部件(或其他类型的部件)耦合到多个加速部件的情况,包括本地加速部件和一个或多个远程加速部件。这样的较小的系统甚至可以在用户设备或器具等中实施。用户设备可以具有使用本地加速资源和/或远程加速资源的选项。

图6示出了与图4所示的架构相比实现服务器单元部件602的备选方式。与图4的情况相似,图6的服务器单元部件602包括由一个或多个cpu(606,608,...)组成的本地主机部件604、本地加速部件610、和用于将本地主机部件604与本地加速部件610耦合的本地链路612。与图4的情况不同,服务器单元部件602将网络接口控制器(nic)614实现为本地加速部件610的内部部件,而不是分离的部件。

图7示出了与图4所示的架构相比实现服务器单元部件702的另一备选方式。在图7的情况下,服务器单元部件702包括任何数目n个本地主机部件(704,...,706)以及任何数目m个本地加速部件(708,...,710)。(图中省略了服务器单元部件702的其他部件以便于说明。)例如,服务器单元部件702可以包括耦合到两个本地加速部件的单个主机部件。两个加速部件可以执行不同的相应的任务。例如,一个加速部件可以用于处理到其本地tor交换机的传出业务,而另一加速部件可以用于处理来自tor交换机的传入业务。此外,服务器单元部件702可以加载任何本地加速部件(708,...,710)上的任何服务。

还注意,在上述示例中,服务器单元部件可以是指例如通过在数据中心的机架内形成单个可服务单元的部件的物理分组。在其他情况下,服务器单元部件可以包括一个或多个主机部件和一个或多个加速部件,这些部件并不是必须一起容纳在单个物理单元中。在这种情况下,本地加速部件可以在逻辑上而不是在物理上与其相应的本地主机部件相关联被考虑。

备选地或另外,本地主机部件和一个或多个远程加速部件可以在诸如单个mpsoc-fpga管芯等单个物理部件上实现。网络交换机也可以并入该单个部件中。

图8示出了与图1所示的相比的备选数据处理系统802。与图1的数据处理系统102类似,数据处理系统802包括软件平面104和硬件加速平面106、以及用于将本地主机部件连接到相应的本地加速部件的本地h到本地s耦合114。但是与图1的数据处理系统102不同,数据处理系统802包括用于将主机部件耦合在一起的第一网络804和用于将硬件部件耦合在一起的第二网络806,其中第一网络804与第二网络806至少部分不同。例如,第一网络804可以对应于图5所示的类型的数据中心交换基础设施。第二网络806可以对应于用于将具有任何网络拓扑的加速部件连接在一起的专用链路。例如,第二网络806可以对应于p×r环面网络。环面网络中的每个加速部件经由适当的电缆链路等耦合到东、西、北和南相邻加速部件。可以备选地使用具有任何相应尺寸和规模的其他类型的环面网络。

在其他情况下,由单个处理部件提供(例如,在单个管芯上实现)的本地硬cpu和/或软cpu和/或加速逻辑可以经由不同网络耦合到其他处理部件上的(例如,在其他管芯、板、机架等上实现的)其他元件。个体服务本身可以利用一个或多个递归本地互连网络。

还注意,以上描述以发出由加速部件满足的服务请求的主机部件的上下文为框架。但是,备选地或另外,任何加速部件还可以做出对于可以由任何其他部件(例如,另一加速部件和/或甚至主机部件)满足的服务的请求。smc102可以与上述类似的方式来解决这样的请求。实际上,本文中描述的某些特征可以在硬件加速平面本身上实现,而不需要软件平面。

更一般地说,某些特征可以由请求服务的任何第一部件来实现,第一部件可以满足该服务,和/或由相对于第一部件的一个或多个本地部件来实现,和/或由相对于第一部件的一个或多个远程部件来实现。然而,为了便于说明,下面的描述将继续主要以做出请求的实体对应于本地主机部件的上下文为框架。

最后,其他实现可以采用不同的策略来将主机部件耦合到硬件部件,例如除了图14所示的本地h到本地s耦合114以外的硬件部件。

图9示出了表示图1的数据处理系统102的一个说明性操作方式的过程902。在框904,本地主机部件发出对于服务的请求。在框906,本地主机部件接收对于请求的应答,应答可以标识服务的地址。在备选实现中,相关联的本地加速部件可以在从本地主机部件接收到请求之后执行框904和906。换言之,本地主机部件或本地加速部件可以执行地址查找功能。

在框908,相关联的本地加速部件可以本地执行服务,假定已经标识的地址属于由本地加速部件本地实现的功能。备选地或另外,在框910,本地加速部件将请求路由到远程加速部件。如上所述,本地加速部件被配置为执行到远程加速部件的路由而不涉及本地主机部件。此外,多个主机部件在数据处理系统102中通过与多个加速部件相同的物理网络彼此通信。

总之,在a部分,数据处理系统102具有很多有用的特征。首先,数据处理系统102使用公共网络120(除了图8的示例),这避免了与用于将加速部件耦合在一起的定制网络相关联的花销。第二,公共网络120使得可以向诸如数据中心等现有数据处理环境添加加速平面。并且在安装之后,所得到的数据处理系统102可以被有效地维护,因为它利用在现有数据处理环境中发现的现有物理链路。第三,数据处理系统102集成加速平面106而不施加大的附加功率要求,例如,鉴于上述的本地加速部件可以与现有服务器单元部件集成的方式。第四,数据处理系统102提供了一种有效和灵活的机制,用于允许主机部件访问由硬件加速平面106提供的任何加速资源,而例如不将主机部件与特定的固定加速资源进行窄配对,并且不会使主机部件负担管理硬件加速平面106本身。第五,数据处理系统102通过智能地将这些资源分散在硬件平面106中来提供用于管理加速资源的有效机制,从而:(a)减少了资源的过度利用和利用不足(例如,对应于“滞留能力”问题);(b)促进了这些服务的消费方对这些服务的快速访问;(c)适应了由一些消费方和/或服务指定的提高的加工处理要求等等。上述效果是说明性的,而不是穷举性的;数据处理系统102提供其他有用的效果。

b.管理功能

图10示出了用于管理图1的数据处理系统102的管理功能122的一个实现的概述。更具体地,图10描绘了由管理功能122、包括其主引擎、服务映射部件(smc)128执行的功能的逻辑视图。不同的子部件对应于由管理功能122执行的不同的主要功能。下面描述的图17到图20示出了逻辑功能的各种可能的物理实现。

如介绍a部分中所述,位置确定部件124基于存储在数据存储设备126中的当前分配信息来标识数据处理系统102内的服务的当前位置。在操作中,位置确定部件124接收对于服务的请求。作为响应,它返回服务的地址,如果存在于数据存储设备126内。地址可以标识实现服务的特定加速部件。

数据存储设备126可以维持将服务映射到地址的任何类型的信息。在图10所示的摘录中,数据存储设备126将少量服务(服务w、服务x、服务y和服务z)映射到当前被配置为提供这些服务的加速部件。例如,数据存储设备126指示用于服务w的配置映像当前安装在具有地址a1、a6和a8的设备上。地址信息可以任何方式来表达。这里,地址信息以高级符号形式来表示以便于说明。

在一些实现中,数据存储设备126可以可选地还存储以任何方式表征每个当前服务到部件分配的状态信息。通常,用于服务到部件分配的状态信息指定在数据处理系统102内处理在其分配的部件上实现的分配的服务的方式,诸如通过指定其持久性级别,指定其访问权限(例如,“所有权”)等。在一个非限制性实现中,例如,服务到部件分配可以被指定为保留的或非保留的。当执行配置操作时,smc128可以在确定是否适合改变分配时将与分配相关联的保留/非保留状态信息考虑在内,例如,以满足对于服务的当前请求、对于一个或多个服务的需求的变化等。例如,数据存储设备126指示具有地址a1、a6和a8的加速部件当前被配置为执行服务w,但是仅到加速部件a1和a8的分配被考虑保留。因此,与其他两个加速部件相比,smc128将到加速部件a6的分配视为用于重新指配(重新配置)的更合适的候选。

另外或备选地,数据存储设备126可以提供指示服务到部件分配要由所有租户功能实例共享还是专用于一个或多个特定租户功能实例(或服务的某个(些)其他指示的消费方)的信息。在前者(完全共享)的情况下,所有租户功能实例竞争由加速部件提供的相同资源。在后者(专用)情况下,仅允许与服务分配关联的那些客户端使用所分配的加速部件。图10以高级方式示出了在具有地址a3的加速部件上运行的服务x和y被保留用于由一个或多个指定的租户功能实例来使用,而任何租户功能实例可以使用其他服务到部件分配。

smc128还可以与提供可用性信息的数据存储设备1002交互。可用性信息标识具有用于实现一个或多个服务的可用容量的加速部件池。例如,在一种使用方式中,smc128可以确定将一个或多个加速部件指配为功能的提供者是适当的。为此,smc128在数据存储设备1002上进行汲取(draw)以寻找具有用于实现该功能的空闲容量的加速部件。然后,smc128将功能指配给这些空闲加速部件中的一个或多个。这样做会改变所选择的加速部件的可用性相关状态。

smc128还管理可用性信息并且在数据存储设备1002中维护该信息。在这样做时,smc128可以使用不同的规则来确定加速部件是可用还是不可用。在一种方法中,smc128可以认为当前正在使用的加速部件不可用,而认为当前未使用的加速部件可用。在其他情况下,加速部件可以具有不同的可配置域(例如,瓦片),其中一些当前正在使用,而其他的当前未使用。这里,smc128可以通过表达其处理资源当前未使用的部分来指定加速部件的可用性。例如,图10指示具有地址a1的加速部件的50%的处理资源可用于使用。另一方面,具有地址a2的加速部件完全可用,而具有地址a3的加速部件完全不可用。个体加速部件可以不同的方式通知smc128它们的相对利用水平,如下面将更详细地描述的。

在其他情况下,smc128可以在注册时考虑对于加速部件的未决请求,而不管其可用还是不可用。例如,smc128可以指示加速部件不可用,因为它被调度为将服务递送到一个或多个租户功能实例,尽管它可能不会在当前时间参与提供该服务。

在其他情况下,smc128还可以注册可用的每个加速部件的类型。例如,数据处理系统102可以对应于支持具有不同物理特性的加速部件的异构环境。这种情况下的可用性信息不仅可以指示可用的处理资源的身份,还可以指示这些资源的类型。

在其他情况下,当将加速部件注册为可用或不可用时,smc128还可以考虑服务到部件分配的状态。例如,假定特定加速部件当前被配置为执行某个服务,并且此外,假定分配已经被指定为保留而不是非保留。仅鉴于其保留状态,smc128可以将加速部件指定为不可用(或将其某些部分指定为不可用),而不管服务当前是否正活动地被用于在当前时间执行功能。实际上,加速部件的保留状态至少在某些情况下用作防止smc128重新配置加速部件的锁。

现在参考smc128本身的核心映射操作,smc128响应于触发事件来将服务分配或映射到加速部件。更具体地,smc128取决于已经接收到的触发事件的类型以不同的模式操作。在请求驱动模式下,smc128通过租户功能来处理对于服务的请求。这里,每个触发事件对应于至少部分驻留在特定本地主机部件上的租户功能实例的请求。响应于本地主机部件的每个请求,smc128确定用于实现服务的适当部件。例如,smc128可以从以下各项中选择:本地加速部件(与做出请求的本地主机部件相关联)、远程加速部件或本地主机部件本身(从而本地主机部件将以软件实现服务)或其某种组合。

在第二后台模式下,smc128通过将服务全局地分配给数据处理系统102内的加速部件以满足数据处理系统102中的总体预期需求和/或满足其他系统范围目标和其他因素(而不是狭义地关注主机部件的各个请求)来操作。这里,接收到的每个触发事件对应于数据处理系统102中的一些条件,其作为整体保证服务的分配(或重新分配),诸如对于服务的需求的变化。

然而,注意,上述模式不是分析的互斥域。例如,在请求驱动模式下,smc128可以尝试实现至少两个目的。作为第一主要目的,smc128将尝试寻找满足对于服务的未解决的请求的加速部件,同时整体满足与数据处理系统102相关的一个或多个性能目标。作为第二目的,smc128还可以可选地考虑其对服务的分配关于由其他租户功能实例对该服务的未来使用的长期影响。换言之,第二目的有关于恰好由特定租户功能实例所做出的请求触发的后台考虑。

例如,考虑以下简化情况。租户功能实例可以做出对于服务的请求,其中租户功能实例与本地主机部件相关联。smc128可以通过配置本地加速部件执行该服务来对请求进行响应。在做出这个决定时,smc128首先尝试寻找满足租户功能实例所做出的请求的分配。但是,smc128还可以基于如下确定来做出其分配,该确定为:很多其他主机部件已经请求相同服务并且这些主机部件大多位于与已经生成对于服务的当前请求的租户功能实例相同的机架中。换言之,这个补充寻找进一步支持将服务置于机架内加速部件的决定。

图10描绘了可选地包括执行不同的相应分析的多个逻辑部件的smc128。作为第一可选的分析部件,smc128可以使用状态确定逻辑1004来定义其正在进行的分配的状态,例如,作为保留的或非保留的、专用的或完全共享的等。例如,假定smc128从租户功能实例接收到对于服务的请求。作为响应,smc128可以决定配置本地加速部件来提供服务,并且在该过程中,将该分配指定为非保留的,例如,在请求可以是对于服务的“一次性”请求的这一初始假定下。在另一种情形下,假定smc128进行附加确定,即相同的租户功能实例在短时间内已经重复地做出了对于同一服务的请求。在这种情形下,smc128可以做出如上所述的相同的分配决定,但是这次smc128可以将其指定为保留。smc128还可以可选地将服务指定为仅专用于正做出请求的租户功能。通过这样做,smc128可以使得数据处理系统102能够通过租户功能实例来更有效地满足对于该服务的未来请求。换言之,保留状态可能降低smc128稍后将服务从本地加速部件移动的机会,在这种状态下其被本地主机部件大量使用。

此外,租户功能实例(或本地主机部件)可以具体地请求被授权对本地加速部件的保留和专用的使用。状态确定逻辑1004可以在确定是否准许该请求时使用不同的环境特定的规则。例如,状态确定逻辑1004可以决定准许请求,前提是没有接收到保证覆盖该请求的其他触发事件。状态确定逻辑1004可以覆盖该请求,例如,当它试图完成基于任何环境特定的原因而被确定为比租户功能的请求更紧迫的另一请求时。

在一些实现中,注意,租户功能实例(或本地主机部件或服务的某个其他消费方)可以独立地控制其本地资源的使用。例如,本地主机部件可以向管理功能122传递指示其本地加速部件不可用或不完全可用的利用信息,而不管本地加速部件在此刻实际上是否忙碌。这样做时,本地主机部件可以防止smc128“窃取”其本地资源。不同的实现可以使用不同的环境特定的规则来确定实体是否被允许以上述方式限制对其本地资源的访问以及如果是则确定是在何种情况。

在另一示例中,假定smc128确定存在对于特定服务的需求的普遍增加。作为响应,smc128可以寻找与加速部件“池”相对应的指定数目的空闲加速部件,并且然后将加速部件池指定为用于提供特定服务的保留(但完全共享)的资源。之后,smc128可以检测对于特定服务的需求的普遍降低。作为响应,smc128可以减少保留的加速部件池,例如通过将先前注册为“保留”的一个或多个加速部件的状态改变为“未保留”。

注意,上述状态的特定维度(保留与非保留、专用与完全共享)是通过说明而不是限制来引用的。其他实现可以采用任何其他状态相关维度,或者可以仅容纳单个状态指定(并且因此省略了使用状态确定逻辑1004的功能)。

作为第二分析部件,smc128可以使用尺寸确定逻辑1006来确定适合于提供服务的加速部件的数目。smc128可以基于与服务相关联的处理需求的考虑以及可用于满足这些处理需求的资源一起来做出这样的确定。

作为第三分析部件,smc128可以使用类型确定逻辑1008来确定适合于提供服务的加速部件的类型。例如,考虑其中数据处理系统102具有不同的相应能力的加速部件的异构集合的情况。类型确定逻辑1008可以确定适于提供服务的特定种类的加速部件中的一个或多个。

作为第四分析部件,smc128可以使用放置确定逻辑1010来确定适合于解决特定触发事件的(一个或多个)特定加速部件。这一确定又可以具有一个或多个方面。例如,作为其分析的部分,放置确定逻辑1010可以确定是否适合配置加速部件来执行服务,其中该部件当前未被配置为执行服务。

上述分析方面通过说明而不是限制来引用。在其他实现中,smc128可以提供附加的分析阶段。

通常,smc128基于一个或多个映射考虑来执行其各种分配确定。例如,一个映射考虑可以涉及在数据存储设备1012中提供的历史需求信息。(下面的)说明将提供不同映射考虑的附加描述,因为它们应用于放置确定逻辑1010的操作。

然而,注意,在所有情况下,smc128不需要执行多因素分析。在一些情况下,例如,主机部件可以做出对于与单个固定位置相关联(例如,对应于本地加速部件或远程加速部件)的服务的请求。在那些情况下,smc128可以简单地推迟位置确定部件124将服务请求映射到服务的地址,而不是评估以不同的方式执行服务的成本和益处。在其他情况下,数据存储设备126可以将多个地址与单个服务相关联,每个地址与可以执行服务的加速部件相关联。smc128可以在向特定地址分配对于服务的请求中使用下面要描述的任何映射考虑,诸如负载平衡考虑。

作为其操作的结果,smc128可以利用将服务映射到可以找到那些服务的地址的信息来更新数据存储设备126(假定该信息已经被smc128改变)。smc128还可以存储涉及新的服务到部件分配的状态信息。

为了配置一个或多个加速部件以执行功能(如果尚未这样配置),smc128可以调用配置部件1014。在一个实现中,配置部件1014通过向加速部件发送配置流来配置加速部件。配置流指定要被“编程”到接收方加速部件中的逻辑。配置部件1014可以使用不同的策略来配置加速部件,其中的几个在下面阐述。

故障监测部件1016确定加速部件是否已经发生故障。smc128可以通过将故障加速部件替换为备用加速部件来对故障通知进行响应。

b.1smc在请求驱动模式下的操作

图11提供在应用于处理在主机部件上运行的租户功能实例的请求这一任务时smc128的一种操作方式的概述。在所示场景中,假定主机部件1102实现多个租户功能实例(t1,t2,...,tn)。每个租户功能实例可以对应于至少部分在主机部件1102上,例如在使用(除了其他可能的主机部件之外的)主机部件1102的物理资源运行的虚拟机中执行的软件程序。还假定一个租户功能实例通过生成对于特定服务的请求来启动图11所示的事务。例如,租户功能可以执行照片编辑功能,并且可以作为其整体操作的一部分来调用压缩服务。或者租户功能可以执行搜索算法,并且可以作为其整体操作的一部分来调用排序服务。

在操作(1)中,本地主机部件1102可以向smc128发送其对于服务的请求。在操作(2)中,除其他分析之外,smc128可以确定用于实现服务的至少一个适当的部件。在这种情况下,假定smc128确定远程加速部件1104是用于实现服务的最适当的部件。smc128可以从位置确定部件124获得该加速部件1104的地址。在操作(3)中,smc128可以将其答案传送给本地主机部件1102,例如以与服务相关联的地址的形式。在操作(4)中,本地主机部件1102可以经由其本地加速部件1106来调用远程加速部件1104。处理租户功能的请求的其他方式是可能的。例如,代替或除了本地主机部件102之外,本地加速部件1106可以查询smc128。

路径1108表示其中代表性的加速部件1110(和/或其相关联的本地主机部件)向smc128传送利用信息的示例。利用信息可以标识加速部件1110可用还是不可用于使用,全部还是部分。利用信息还可以可选地还指定加速部件1110拥有的可用于使用的处理资源的类型。如上所述,还可以选择利用信息来有目的地防止smc128稍后利用加速部件1110的资源,例如通过整体或部分地指示资源不可用。

尽管未示出,但是任何加速部件也可以向smc128做出对于特定资源的定向请求。例如,主机部件1102可以具体请求使用其本地加速部件1106作为保留和专用资源。如上所述,smc128可以在确定是否准许这样的请求时使用不同的环境特定的规则。

此外,尽管未示出,但是除了主机部件之外的其他部件可以做出请求。例如,硬件加速部件可以运行发出对于自己、(一个或多个)另外的硬件加速部件、(一个或多个)主机部件等或任何其组合可以满足的服务的请求的租户功能实例。

图12到图15示出了用于处理由驻留在主机部件上的租户功能做出的对于服务的请求的不同的相应选项。从图12开始,假定本地主机部件1202包括至少两个租户功能实例t1(1204)和t2(1206),两者都同时运行(但是实际上,本地主机部件1202可以托管更多的租户功能实例)。第一租户功能实例t1需要加速服务a1来执行其操作,而第二租户功能实例t2需要加速服务a2来执行其操作。

还假定本地加速部件1208例如经由pcie本地链路等耦合到本地主机部件1202。在当前时刻,本地加速部件1208托管用于执行加速服务a1的a1逻辑1210和用于执行加速服务a2的a2逻辑1212。

根据一个管理决定,smc128将t1分配给a1逻辑1210,并且将t2分配给a2逻辑1212。然而,smc128的这个决定不是固定的规则;如将要描述的,smc128可以基于多个因素做出其决定,其中一些可以反映相冲突的考虑。因此,基于其他因素(在此未描述),smc128可以选择以与图12所示的不同的方式将工作指配给加速逻辑。

在图13的场景中,主机部件1302具有与上述相同的服务需求的相同的租户功能实例(1304,1306)。但是在这种情况下,本地加速部件1308仅包括用于执行服务a1的a1逻辑1310。也就是说,它不再托管用于执行服务a2的a2逻辑。

响应于上述情况,smc128可以选择将t1指配给加速部件1308的a1逻辑1310。然后,smc128可以将t2指配给远程加速部件1314的a2逻辑1312,其已经被配置为执行该服务。再次,所示的指配在此是以说明而非限制的精神来阐述的;smc128可以基于输入考虑的另一组合来选择不同的分配。在一个实现中,本地主机部件1302和远程加速部件1314可以可选地压缩它们向彼此发送的信息,例如以减少带宽的消耗。

注意,主机部件1302经由本地加速部件1308访问a2逻辑1312。但是在另一种情况(未示出)下,主机部件1302可以经由与加速部件1314相关联的本地主机部件(未示出)访问a2逻辑1312。

图14示出了其中主机部件1402具有与上述相同的服务需求的相同的租户功能实例(1404,1406)的另一场景。在这种情况下,本地加速部件1408包括用于执行服务a1的a1逻辑1410和用于执行服务a3的a3逻辑1412。还假定数据存储设备1002中的可用性信息指示a3逻辑1412当前未被任何租户功能实例使用。响应于上述情况,smc128可以使用(图10的)配置部件1014来重新配置加速部件1408,使得它包括a2逻辑1414而不是a3逻辑1412(如图14的底部所示)。然后,smc128可以将t2指配给a2逻辑1414。虽然未示出,但是smc128可以备选地或另外决定重新配置任何远程加速部件来执行a2服务。

通常,smc128可以完全或部分方式执行配置,以满足租户功能实例的任何请求。smc通过重新配置由加速部件提供的所有应用逻辑来执行整个配置。smc128可以通过重新配置由加速部件提供的应用逻辑的一部分(例如,一个或多个瓦片)来执行部分配置,在重新配置期间保持其他部分(例如,一个或多个其他瓦片)完整且可操作。对于以下描述smc128在其后台操作模式下的操作也是如此。另外注意,附加因素可以在确定a3逻辑1412是否是重新配置的有效候选(诸如服务是否被认为被保留,无论是否存在该服务的未决请求等)时发挥作用。

图15呈现了其中主机部件1502具有与上述相同的服务需求的相同的租户功能实例(1504,1506)的另一场景。在这种情况下,本地加速部件1508仅包括用于执行服务a1的a1逻辑1510。响应于上述场景,smc128可以向a1逻辑1510指配t1。此外,假定smc128确定任何加速部件执行a2服务是不可行的。作为响应,如果实际上本地a2软件逻辑1512在主机部件1502处可用,则smc128可以指令本地主机部件1502将t2指配给本地a2软件逻辑1512。smc128可以基于各种理由做出图15的决定。例如,smc128可以得出结论,硬件加速是不可能的,因为对于该服务当前不存在配置映像。或者可以存在配置映像,但是smc128得出结论,任何加速设备上的容量都不足以加载和/或运行这样的配置。

最后,以上示例在主机部件上运行的租户功能实例的上下文中描述。但是如上所述,租户功能实例可以更一般地对应于服务请求方,并且那些服务请求方可以在任何部件(包括加速部件)上运行。因此,例如,在加速部件上运行的请求方可以生成对于要由一个或多个其他加速部件和/或由其本身和/或由一个或多个主机部件执行的服务的请求。smc102可以上述任何方式来处理请求方的请求。

b.2smc在后台模式下的操作

图16提供了当在后台模式下操作时smc128的一种操作方式的概述。在操作(1)中,smc128可以接收启动smc128的操作的某种类型的触发事件。例如,触发事件可以对应于影响服务的需求的变化等。在操作(2)中,响应于触发事件,smc128基于一个或多个映射考虑和数据存储设备1002中的可用性信息来确定一个或多个服务到加速部件的分配,例如通过将服务分配给一个或多个更多可用加速部件的集合。在操作(3)中,smc128执行其分配决定。作为这个过程的部分,smc128可以调用配置部件1014来配置已经被分配为执行服务的加速部件,假定这些部件尚未被配置为执行服务。smc128还更新数据存储设备126中的服务位置信息,并且如果合适则更新数据存储设备1002中的可用性信息。

在图16的特定示例中,smc102分配第一组加速部件1602以执行第一服务(“服务y”),并且分配第二组加速部件1604以执行第二服务(“服务z”)。在实际实践中,所分配的一组加速部件可以具有任意数目的成员,并且这些成员可以任何方式跨硬件加速平面106而分布。然而,smc128可以尝试以特定方式对与服务相关联的加速部件进行分组以实现令人满意的带宽和延迟性能(除了其他因素之外),如将在下面更详细地描述的。smc128还可以在分配与单个多部件服务相关联的加速部件时应用其他分析。

smc128还可以在后台模式下操作,以将实现特定服务的一个或多个加速部件分配给至少一个租户功能实例,而不必要求租户功能每次都做出对于该特定服务的请求。例如,假定租户功能实例定期使用对应于图16中的“服务z”的压缩功能。smc128可以主动地将一个或多个专用加速部件1604分配给至少该租户功能实例。当租户功能需要使用服务时,它可以从与已经被分配给它的加速部件1604相关联的可用地址池中汲取。关于一组租户功能实例(而不是单个实例),可以执行相同的专用映射操作。

b.3管理功能的物理实现

图17示出了图10的管理功能122的第一物理实现。在这种情况下,管理功能122被提供在单个全局管理部件(mg)1702上或多个全局管理部件(1702,...,1704)上。多个全局管理部件(1702,...,1704)(如果使用)可以提供冗余逻辑和信息以实现期望的负载平衡和故障管理性能。在一种情况下,每个全局管理部件可以在可以对应于主机部件之一的计算机服务器设备上或者在专用管理计算设备上实现。在操作中,任何单独的主机部件(s)或加速部件(h)可以经由图1所示的公共网络120与全局管理部件交互。

图18示出了图10的管理功能122的第二物理实现。在这种情况下,每个服务器单元部件(诸如代表性的服务器单元部件1802)提供至少一个本地管理部件(ml)1804。例如,本地主机部件1806可以实现本地管理部件1804(例如,作为其管理者功能的一部分),或者本地加速部件1808可以实现本地管理部件1804,或者服务器单元部件1802内的某个其他部件可以实现本地管理部件1804(或其某种组合)。数据处理系统102还包括一个或多个全局管理部件(1810,...,1812)。每个全局管理部件可以上面关于图17描述的方式来提供冗余逻辑和信息。如上所述,管理功能122共同地呈现数据处理系统102中的所有本地和全局管理部件。

图18的架构可以例如以下列方式来实现smc128的请求驱动的方面。本地管理部件1804可以首先确定本地加速部件1808是否可以执行租户功能请求的服务。在本地加速部件1808不能执行该任务的情况下,全局管理部件(mg)可以执行其他决定,诸如标识用于执行服务的远程加速部件。另一方面,在图17的架构中,单个全局管理部件可以执行与将请求映射到加速部件有关的所有决定。

此外,本地管理部件1804可以在诸如周期性基础和/或事件驱动基础(例如,响应于利用率的改变)等任何基础上向全局管理部件发送利用信息。全局管理部件可以使用利用信息来更新其在数据存储设备1002中的可用性信息的主记录。

图19示出了图10的管理功能122的第三物理实现。在这种情况下,每个服务器单元部件存储其自己的专用本地管理部件(ml)(其可以由作为其管理者功能的一部分的本地主机部件、本地加速部件、某个其他本地部件或其某种组合实现)。例如,服务器单元部件1902与本地主机部件1906和本地加速部件1908一起提供本地管理部件1904。同样地,服务器单元部件1910与本地主机部件1914和本地加速部件1916一起提供本地管理部件1912。本地管理部件的每个实例存储关于相同部件的其他实例的冗余逻辑和信息。已知的分布式系统工具可以用于确保这个部件的所有分布式版本都包含相同的逻辑和信息,诸如由marryand的foresthill的apachesoftwarefoundation提供的zookeeper工具。(除此之外,注意,可以使用相同的技术来维护本小节中描述的其他示例中的冗余逻辑和信息。)管理功能122集中呈现数据处理系统102中的所有本地管理部件,如上所述。也就是说,在这个实现中没有中央全局管理部件。

图20示出了图10的管理功能122的第四物理实现。在这种情况下,管理功能122实施个体管理部件的层级结构。例如,在一个仅代表性的结构中,每个服务器单元部件包括低级本地管理部件(ml3)(其可以由本地主机部件、本地加速部件、某个其他本地部件或其某种组合来实现)。例如,服务器单元部件2002与本地主机部件2006和本地加速部件2008一起提供低级本地管理部件2004。同样地,服务器单元部件2010与本地主机部件2014和加速部件2016一起提供低级本地管理部件2012。结构的下一管理层至少包括中级管理部件2018和中级管理部件2020。结构的顶层包括单个全局管理部件2022(或多个冗余的这样的全局管理部件)。因此,所示出的控制架构形成具有三个级别的结构,但是架构可以具有任何数目的级别。

在操作中,低级管理部件(2004,2012,...)处理直接影响与个体服务器单元部件相关联的资源的某些低级管理决定。中级管理部件(2018,2020)可以做出影响数据处理系统102的相关部分的决定,诸如个体机架或一组机架。顶级管理部件(2022)可以做出广泛地应用于整个数据处理系统102的全局决定。

b.4配置部件

图21到图24示出了与实现图10的配置部件1014的不同方式相对应的用于配置加速部件的不同的相应策略。从图21开始,全局管理部件2102能够访问提供一个或多个配置映像的数据存储设备2104。每个配置映像包含可以用于实现相应服务的逻辑。全局管理部件2102可以通过将配置流(对应于配置映像)转发到加速部件来配置加速部件。例如,在一种方法中,全局管理部件2102可以将配置流发送到与特定服务器单元部件2108相关联的本地管理部件2106。然后,本地管理部件2106可以基于接收到的配置流来协调本地加速部件2110的配置。备选地,代替或除了本地管理部件2106之外,本地主机部件2112可以执行上述操作。

图22示出了用于配置加速部件的另一策略。在这种情况下,全局管理部件2202向服务器单元部件2206的本地管理部件2204发送指令。作为响应,本地管理部件2204访问本地数据存储设备2208中的配置映像,并且然后使用它来配置本地加速部件2210。备选地,代替或除了本地管理部件2204之外,本地主机部件2212可以执行上述操作。

图23示出了用于配置本地加速部件2302的另一技术。在该方法中,假定加速部件2302包括应用逻辑2304,应用逻辑2304又由当前模型2306来管控(其中模型对应于以特定方式执行功能的逻辑)。还假定加速部件2302能够访问本地存储器2308。本地存储器2308存储与一个或多个其他模型(模型1,...,模型n)相关联的配置映像。在被触发时,本地模型加载部件2310可以将与当前模型2306相关联的配置和与本地存储器2308中的另一模型相关联的配置置换。模型加载部件2310可以由加速部件2302本身、本地主机部件、本地管理部件等、或其组合来实现。在一个实现中,图23所示的配置操作可以在比整个应用逻辑2304的整体重新配置更少的时间内执行,因为它引起替换由应用逻辑2304使用的某个逻辑,而不是以批量方式替换整个应用逻辑2304。

最后,图24示出了具有支持部分配置的应用逻辑2402的加速部件。管理功能122可以通过将应用1(2404)与应用2(2406)分开配置来利用该功能,反之亦然。

b.5smc的说明性操作

图25提供了服务映射部件(smc)128的一种操作方式的概述。如上所述,smc128可以在接收到一个或多个触发事件时执行其决定过程。在请求驱动模式下,触发事件可以对应于来自租户功能实例或者请求加速服务的某个其他实体的请求。在后台模式下,一种类型的触发事件对应于对于一个或多个服务的需求的变化。另一种后台模式触发事件对应于用于执行服务的加速资源的可用性的变化。另一种后台模式触发事件对应于引入和/或去除一个或多个服务。另一种后台模式触发事件可以对应于数据处理系统102的性能的变化,特别是在处理负载问题、带宽问题等方面。另外或备选地,smc128可以在后台模式下通过基于任何指定的频率周期性地分析数据处理中心的现行情况来操作。通过在响应于租户功能实例的个体请求时将其分配的一般后台相关影响考虑在内,smc128还可以上述方式将请求驱动分析与后台分析组合。

如上所述,smc128可以执行不同的分析阶段,诸如:(1)由状态确定逻辑1004执行的确定与服务到部件分配相关联的状态(例如,保留与非保留、专用与完全共享等);(2)由尺寸确定逻辑1006执行的确定要使用的加速部件的数目;(3)由类型确定逻辑1008执行的确定要使用的加速部件的类型;和/或(4)由放置确定逻辑1010执行的确定要在数据处理系统102内使用的个体加速部件,等。

为了便于说明,主要关于由放置确定逻辑1010执行的第四确定来说明smc102的操作。为了进一步简化说明,以下说明将首先在将单个服务分配给一个或多个加速部件的上下文中来阐述,其中多个消费方尚未争用相同的资源。

通常,在请求驱动模式下,smc128的放置确定逻辑1004可以通过关于其能够在哪里访问所请求的服务而对正进行请求的租户功能实例进行指令来满足请求。在这样做时,如果这些部件尚未被配置为执行服务,则smc128可以可选地调用配置部件1014以配置(一个或多个)加速部件来执行所请求的服务。备选地或另外,smc128可以在所标识的加速部件上向已经配置的服务指配请求。类似地,在后台模式下,smc128的放置确定逻辑1006可以通过调用配置部件1014以配置一个或多个加速部件来提供服务来满足对于数据处理系统102中的服务的总体需求,和/或从一个或多个已经配置的加速部件中汲取。

在调用后,smc128可以基于若干因素(下面称为“映射考虑”)来做出决定。smc128可以从各种来源来获得与这些映射考虑有关的输入信息,诸如数据处理系统102内的主机部件和加速部件、提供关于性能参数值等的信息的外部实体(其可以经由诸如因特网等一个或多个网络连接被访问)等。

一些映射考虑例如通过强调分配决定满足由在本地主机部件上运行的租户功能实例生成的特定请求的程度,而关注点相对较窄。其他映射考虑例如通过强调分配决定整体上对于数据处理系统102将具有的影响而关注点更具全局性。其他映射考虑将特定和全局因素都考虑在内。以下说明标识出代表性的而非穷举性的映射考虑列表。

a.消费方的位置

一个映射考虑有关于已经请求所考虑的服务的实体的位置、或者将来可能消费该服务的实体的位置。例如,当在后台模式下执行分配时,smc128可以确定所考虑的服务是否仅具有少数主要消费方。如果是,则smc128可以尝试将一个或多个加速部件“贴近”那些消费方放置。更具体地,在一个非限制性情况下,smc128可以将服务加载到与定期请求服务的相应主机部件相关联的一个或多个本地加速部件上。另一方面,如果服务具有分散在数据处理系统102上的很多随机消费方,则smc128可以认为将服务放置在任何一个消费方附近的重要性较小。

b.当前映射考虑

另一映射考虑有关于什么服务当前被加载到硬件加速平面106中的加速部件上,例如,如在数据存储设备126中提供的当前分配信息中所反映的。例如,假定smc128寻求完成由与本地主机部件相关联的租户功能实例做出的对于服务的请求。当该本地加速部件已经被配置为执行该服务时,smc128可以有利于将所请求的服务分配给本地加速部件(其与本地主机部件相关联)。类似地,当在后台模式下操作以选择用于执行服务的保留的加速部件池时,smc128可以在加速部件已经被配置为执行该服务时,有利于将服务分配给该加速部件。这个因素也与下面描述的迁移成本考虑相关。

c.映像可用性考虑

另一相关考虑有关于是否存在所请求的服务的配置映像。并不是所有的服务都是用于硬件加速的良好候选,所以并非所有请求的软件服务都具有对应的配置映像。通过立即指令主机部件以软件来执行服务,smc128可以在请求驱动模式下利用该考虑,其中该服务不能以硬件来实现。

d.加速益处考虑

另一映射考虑有关于是否可以预期通过在加速硬件上部署服务而不是由主机部件以软件执行功能来实现性能提升。如果性能益处有可能可忽略,则smc128可以指令本地主机部件以软件来实现所请求的服务。在后台模式下,如果可以预期加速益处可忽略,则smc128可以拒绝创建专用于特定服务的加速部件池。

e.当前可用性考虑

另一映射考虑有关于所考虑的每个加速部件关于其处理所标识的服务的能力的可用容量(例如,如在提供可用性信息的数据存储设备1002中反映的)。如上所述,加速部件的可用性可以被指定为二进制是/否信息、百分位数信息等。加速部件的可用性还可以考虑对于加速部件等的未决请求,例如,其中加速部件被调度以在未来执行所标识的处理。smc128可以利用这一考虑来确定将所考虑的给定加速部件配置为执行服务是否可行。

f.sla考虑

另一映射考虑有关于与服务相关联的服务水平协定(sla)。例如,与服务相关联的sla可以指定一个或多个参数值,这些参数值反映服务将被递送给最终用户的所请求的速度,诸如通过指定将被允许的最坏情况的延迟性能、和/或其他最坏情况的性能参数值。smc128可以选择一个或多个加速部件来满足服务的sla要求,这可能需要选择一定数目的加速部件和/或选择某些类型的加速部件和/或选择那些加速部件的位置等。

g.需求类型考虑

另一映射考虑有关于与服务相关联的流量模式的性质。例如,一些服务的特征在于相对稳态的业务流。其他服务表现出高度“突发”的业务,这表示它们的业务经受巨大或可能不可预测的高峰。在一个非限制性策略中,smc128可以设法避免将单个突发服务专用于单个加速部件(或多个部件),因为突发服务通常可能无法有效地利用专用部件的资源(例如,由于利用不足)。相反,smc128可以选择将多个突发服务分配给加速部件池。这样的分配策略基于以下前提:与多个服务相关联的间歇性突发将不相关,并且可以合理地预测和考虑与这些突发服务中的若干突发服务相关联的平均需求,从而允许更有效地利用所分配的加速部件的资源。

h.历史需求考虑

另一映射考虑有关于与服务相关联的历史需求。在后台模式下,smc128将尝试分配足够数目的加速部件来满足对于服务的预期需求,其可以在一天、一周等内发生变化。smc128也可以考虑到服务的需求变化的方式,例如,通常是突发性还是相对稳定(如上所述),不可预测的还是可预测的,趋势向上还是趋势向下等。

当处理特定请求时,smc128可以不同的方式考虑需求信息。在一种情况下,当决定是否使用该加速部件来满足对于服务的当前请求时,smc128可以考虑与特定候选加速部件相关联的历史需求信息。例如,即将过载的加速部件可能不是能够满足请求的良好候选。smc128还可以利用这样的已知的需求模式来确定与当前请求相关联的可能的资源需求(其中这些需求未预先指定),并且继而将该信息用作确定如何最有效地处理请求的另一因素。

i.线路速率服务考虑

另一映射考虑有关于所考虑的服务是否为线路速率服务。线路速率服务是对以指定的速率在链路上(或通过某个其他分析点)流动的信息执行的服务,优选地没有延迟该信息的传输。smc128可以选择将线路速率服务靠近其相应的消费方放置,以确保满足与这些服务相关联的增高的处理需求。例如,当该服务远离线路服务的消费方时,例如由于与远程加速部件的接触所引起的延迟和/或由于与远程加速部件的交互导致的带宽过载等,可能致使线路速率服务可能不可操作。

j.负载平衡考虑

另一映射考虑涉及负载平衡。当处理对于服务的特定请求时,smc128将寻求以不会使数据处理系统102中的任何加速部件(和/或其他处理部件)负担过重的方式来向加速部件分配请求。这可以通过使用任何负载平衡策略将请求分散到提供服务的多个加速部件上来实现。类似地,当执行更一般的后台分配时,smc128将寻求以如下方式来在加速部件上分发服务:该方式使得没有一个加速部件(和/或与数据处理系统102相关联的其他计算资源)负担过重。

k.带宽考虑

另一映射考虑与数据处理系统102中的带宽有感。当处理对于服务的特定请求时,smc128将寻求以如下方式来将请求指配给加速部件:该方式不会使得数据处理系统102中的链路负担过重。类似地,当执行更一般的后台分配时,smc128将寻求以如下方式来分发服务:该方式不会使得数据处理系统102中的链路负担过重。

l.延迟考虑

另一映射考虑与访问服务时发生的延迟有关。smc128将寻求以如下方式来提供服务:该方式使得访问服务所涉及的延迟在可接受的范围内。如上所述,如果服务距离服务的预期消费方太“远”,则实际上可能致使线路速率服务可能不可操作。一般而言,注意,在很多情况下,smc128可以通过将服务放置在与其预期的消费方相同的机架上并且优选地在与预期的消费方相同的服务器单元部件上来满足若干分配约束(诸如延迟、带宽等)。

m.cpu性能考虑

另一映射考虑有关于被放置在软件平面104中的主机部件上的负载。当处理特定请求时,smc128可以避免在本地主机部件上以软件来执行所请求的服务,如果这样做将使那个部件的cpu负担过重的话。类似地,当在后台模式下操作时,smc128可以尝试标识造成cpu过载的任何软件相关服务,并且然后将该处理中的一些卸载到一个或多个加速部件。

n.迁移成本考虑

另一映射考虑有关于在以所考虑的特定方式重新配置硬件加速平面106时将引入的成本。这里,smc128将生成对执行重新配置所需要的时间量和/或其他资源的评估(例如,基于已知和预存储的配置数据)。基于该知识,smc128然后将确定重新配置过程对于由数据处理系统102执行的其他功能将产生的影响。例如,当预计重新配置过程干扰由数据处理系统102执行的关键过程时,smc128可以禁止重新配置过程。

o.功率和热考虑

另一映射考虑与功率和/或热效应有关。smc128可以查阅参考表等来确定当在一个或多个特定候选加速部件上运行服务时将消耗的功率量和将生成的热量。smc128可以使用该信息来选择满足适当功率和/或热约束的分配选项。smc128还可以在做出其决定时查阅实时温度和功率测量。例如,如果在单个机架上执行服务将超过该机架的热极限,则smc128可以寻求在多个机架上分发服务。

p.金融考虑

另一映射考虑有关于金融考虑。在某些情况下,服务提供已知的金融益处(例如,如用广告收入、产品销售收入等度量的)。此外,在一个或多个加速部件上运行的服务可以具有已知的成本,诸如设备本身(或其用于运行服务的部分设备)的成本、向部件供电的成本、利用计算资源的成本(例如,由数据中心管理员评估)、放弃一个或多个其他服务的机会成本等。smc128可以计算不同分配选项的金融益处和成本,并且在确定如何以及向何处分配服务时使用这个信息。在一种场景下,smc128可以利用这个考虑来最大化由数据中心提供的总体利润。

q.安全考虑

另一映射考虑有关于将服务分配给一个或多个所提出的加速部件的安全隐患。例如,安全考虑可以禁止将某一类型的两个服务放置在相同的加速部件上。备选地或另外,安全考虑可以禁止将服务相对于其消费方(例如,相对于消费服务的本地主机部件)放置在远程加速部件上。当确定如何在硬件加速平面106中分配服务时,smc128可以考虑这些因素。

r.协同定位考虑

另一考虑有关于两个或更多服务通常在同一计算设备或其他平台上一起被托管或使用的方式。例如,考虑假定环境,其中很多用户结合加密服务来使用文档压缩服务,例如,通过首先使用文档压缩服务来压缩文档,并且然后使用加密服务来加密已压缩文档。在这样的协同定位信息可用的情况下,smc128可以将共同分组的服务分配给相同的加速部件或者相同的机架等。这样做可以是有利的,例如,以便于在硬件加速平面106中的对服务的管理。可以通过检查数据处理系统102内的实际使用模式和/或通过查阅关于使用习惯的更一般的统计信息来获得协同定位信息。

s.接收到的请求考虑

另一考虑有关于实体(诸如本地加速部件、本地主机部件、本地管理部件、租户功能实例等)是否已经做出对于特定种类的分配的请求。例如,租户功能实例可以要求smc128授权其对在其本地加速部件上运行的服务的专用使用。smc128可以将这个请求与上述所有其他因素进行平衡。

以上考虑通过举例而不是限制的方式来引用。其他实现可以考虑附加考虑,和/或可以省略上述一个或多个考虑。

注意,以上描述有时假定smc128使用单个加速部件来实现服务的整个实例。然而,在多部件服务中,加速部件的集合实现单个服务。也就是说,集合中的每个加速部件实现多部件服务的一部分。在将多部件服务分配给加速部件时,smc128可以应用特殊考虑。

例如,smc128可以考虑多部件的加速部件在数据处理系统102中分布的方式,因为该因素可能影响多部件服务(和数据处理系统102作为整体)在延迟、带宽、负载平衡等方面的性能。例如,smc128可以选择将与多部件服务相关联的加速部件的集合分配给单个机架或机架组,以减少延迟和带宽瓶颈。通过这样做,例如,smc128可以减少交换结构的较高节点中的带宽。

还注意,以上描述以整个服务的分配的上下文为框架。但是,代替或除了向单个处理元件分配整个服务,smc128还可以动态方式向各种硬件和/或软件处理元件分配和重新分配任何尺寸的任何服务的分段。

smc128可以使用不同的算法来处理上述所有映射考虑以得出最终结论。在一种技术中,一旦被调用,smc128可以应用基于规则的过程来确定如何在可用加速部件池之间分配服务。在一个实现中,规则可以被构造为if-then决定的图。通常,基于与这些系统相关联的环境特定的考虑,不同的规则可以适用于不同的数据处理系统。

为了引用一个代表性情况,smc128可以通过首先确定所请求的服务是否已经存在于与本地主机部件相关联的本地加速部件上来处理由本地主机部件上运行的租户功能实例进行的请求。如果是,则smc128将确定服务是线路速率服务还是具有相对较高处理需求的其他服务。如果是,则smc128将使用本地加速部件来完成租户功能的请求,除非存在使该分配不适当安全约束。另一方面,如果服务是不影响租户功能操作的关键性能指标的相对非关键的任务,则smc128可以选择使用远程加速部件来完成租户功能的请求,从而使本地加速部件空闲以处理更紧急的工作。当在后台模式下为加速部件分配服务时,smc128可以执行类似的多因素分析。

在其他算法的方式中,在遇到触发事件后,smc128可以枚举当前时间用于服务的可能的分配选项。每个选项反映服务到数据处理系统102内的特定可行的加速部件集合(其中该集合包括一个或多个加速部件)的分配。然后,smc128可以向每个选项分配反映上述考虑的加权组合的得分。与这些得分相关联的权重可以凭经验针对特定处理环境来生成。然后,smc128可以选择并且应用具有最高(最有利)得分的分配选项。

在其他方式中,smc128可以采用由机器学习过程产生的模型来做出分配决定。基于反映管理功能122的先前评估的性能的训练集合来训练该模型。也就是说,训练集合可以指定在数据处理系统102中遇到的不同的映射考虑、以及被认为是(如由人类评估者和/或其他标记技术评估的)期望的和不期望的所得到的分配决定。所学习的模型反映输入映射考虑与期望的(和不期望的)分配决定之间的关系。

在其他方式中,smc128可以将分配任务视为在受制于指定约束的情况下在搜索空间内寻找最优解的问题。在当前情况下,约束对应于上述映射考虑、或其某个子集。smc128可以使用各种技术来快速地搜索空间(诸如最佳拟合搜索技术)以寻找最优解或至少令人满意的解,即使不是最优的。

还注意,与smc128相关联的处理可以与任何现有的调度、资源分配和/或预测算法“叠置”或以其他方式集成。例如,假定本地主机部件具有已经发出多个相应服务请求的多个租户功能实例。可以使用任何传统的资源算法来确定用于处理请求的顺序。例如,传统的资源算法可以基于先进先出规则、任何类型的公平演算、任何基于优先级的请求排序(例如,其中某些租户功能实例可能由于其任务的紧迫性、它们的一般的特权状态和/或其他因素而优先于其他实例)等来处理请求。一旦传统的资源算法选择了要处理的请求,则smc128然后可以应用上述考虑来确定用于处理请求的(多个)适当资源。当更一般地考虑在其后台操作模式下的多个服务之间的竞争需求时,smc128可以执行类似的分配功能。

在另一种情况下,smc128可以通过(例如,基于历史需求模式)对何时需要服务进行预计来将预测分析集成到上述逻辑中。然后,smc128可以在适当的时间自动且主动地将这些服务加载到加速平面106中。

在任何上述场景下,smc128还可以基于在任何给定时间待决(和/或预期)的请求的整体来做出分配决定(这与孤立地考虑每个请求相反)。例如,假定smc128观察到存在对于特定服务的很多待决请求。作为响应,smc128可以保留加速部件池来处理这些请求。在另一种情况下,smc128可以在做出其分配决定时考虑与待决请求相关联的消费方的相应位置,例如通过促进选择在很多未决消费方附近的部件。当更普遍地考虑对于不同服务的主要需求时,smc128可以在后台模式下执行类似的分析

最后,以上描述以放置确定逻辑1008的说明性上下文为框架,放置确定逻辑1008确定所分配的部件在数据处理系统102内的放置。与上述类似的分析可以应用于smc102的操作的其他方面。例如,状态确定逻辑1004可以得出结论,基于以下方式将服务到部件分配标记为保留(相对于非保留)是恰当的:(a)确定存在对于服务的显著的历史需求;和/或(b)确定该服务相对重要(例如,由于金融考虑和/或其他因素);和/或(c)确定消费方本身出于任何原因是重要的(例如,因为它们出于任何环境特定的原因而在数据处理系统102中具有特权);和/或(d)确定服务施加相对严格的要求(由于sla考虑、线路速率考虑等),等等。

状态确定逻辑1004还可以基于上述相同的分析来确定服务是否应该专用于一个或多个特定消费方(而不是完全共享),但是以特定消费方的上下文为框架。例如,状态确定逻辑1004可以基于确定该特定消费方在短时间段内经常请求服务来决定授权该特定消费方对于在加速部件上运行的服务的专用访问。

前进到图26,该图对应于过程2602,过程2602示出了图10的smc128在请求驱动模式下的一种操作方式的概述,而不涉及用于实现这个部件的控制架构并且特别地涉及放置确定逻辑1010的操作。在框2604,smc128确定其是否已经从在本地主机部件(或更一般地,以任何方式实现的任何第一本地部件)上运行的租户功能实例接收到对于服务的请求。在框2606,smc128确定是否适合使用本地加速部件来执行所请求的服务。如果是,则在框2608,smc128指令本地主机部件使用本地加速部件来执行服务。在框2610,smc128确定是否适合使用一个或多个远程加速部件来执行所请求的服务。如果是,则在框2612,smc128指令本地主机部件使用(多个)远程加速部件来执行所请求的服务。主机部件可以经由其本地加速部件以上述方式来访问这些远程加速部件。在框2614,smc128指令本地主机部件自己以软件来执行所请求的服务,前提是上述选项都不适合。

图27是示出实现图27的过程的一种方式的过程2702。特别地,过程2702从与全局管理部件(mg)交互的本地管理部件(ml)的角度来表达,尽管其他架构也可以用于执行图27所示的决定过程。

在框2704,本地管理部件确定是否已经从在本地主机部件上运行的租户功能实例接收到对于服务的请求。在框2706,本地管理部件确定是否适合使用本地加速部件执行所请求的服务。如果是,则在框2708,本地管理部件指令本地加速部件使用本地加速部件来执行服务。备选地,在框2710,本地管理部件联系全局管理部件以确定远程加速部件执行所请求的服务是否适合。如果是,则全局管理部件返回与该服务相关联的地址。在框2712,本地管理部件确定地址是否已经被标识。如果是,则在框2714,本地管理部件指令本地主机部件使用已经提供的地址来联系所标识的远程加速部件。如果没有提供地址,则在框2716,本地管理部件(或全局管理部件)指令本地主机部件自己以软件来执行服务。

尽管图26和27中未示出,但是每个加速部件(或与其相关联的本地管理部件)可以在任何基础上(例如,周期性地和/或在事件驱动的基础上)向管理功能122(例如,向全局管理部件)报告其可用容量。可用容量可以任何方式来指定,诸如指示加速部件是否可用的二进制信息、或者反映加速部件的总的可用处理资源的一部分的百分比信息。在其他情况下,加速部件可以按照逐服务的方式来报告其容量。此外,本地实体(诸如租户功能实例)可以具体地请求特定种类的分配,例如通过询问在其本地加速部件上运行服务。

图28到图30是示出图10的smc128的操作的决定和管理方面的过程(2802,3002),例如从全局管理部件(mg)或其他实现的角度来看。

在图28的框2804,smc102确定是否已经接收到请求(例如,从本地管理部件),该请求询问可以找到所标识的服务的地址。换言之,框2804确定当smc128在其请求驱动模式下操作时,何时接收到触发smc128的操作的事件。此外,在一个实现中,框2804补充图27的框2710,在框2804中,本地管理部件对全局管理部件做出这样的查询。

在框2806,smc102确定其是否已经接收到通常需要在硬件加速平面106中重新分配一个或多个服务的触发事件。换言之,框2806询问当smc128在其后台模式中操作时是否已经发生触发smc128操作的事件。但是如上所述,框2804中的请求驱动调用也可能引起后台分析,以作为其部件。

在框2808,smc128直接或间接地响应于已经接收到任何触发事件来确定一个或多个加速指配。smc128可以间接地对触发事件进行响应,例如通过缓冲它并且在稍后的时间对其执行动作。在框2810,如果实际上分配引起这样的配置,则smc128可以可选地调用配置部件1014来配置一个或多个加速部件。在框2812,smc128将信息和/或指令传送到将具有执行分配的效果的适当的接收者实体。例如,smc128可以将地址传送到本地主机部件,这允许其访问远程加速部件。

图29详细说明了框2808中可能涉及的分析的不同部分。在框2902,smc102可以确定其分配的状态(例如,保留与非保留、专用与完全共享等)。在框2904,smc102可以确定要分配以满足触发事件的部件的数目(其中触发事件对应于特定请求或需求的一般变化等)。虽然未示出,但是smc102还可以确定要选择的加速部件的类型。在框2906,smc102确定数据处理系统102内的加速部件的放置,例如通过选择数据处理系统102内的特定加速部件。

在图30的框3004,smc128确定是否已经接收到与至少一个加速部件在数据处理系统102中的使用有关的更新。例如,框3004可能引起确定是否已经从加速部件(或通过本地管理部件)接收到利用信息,利用信息以上述方式报告加速部件的当前备用容量。在框3006,smc128确定其自己是否刚刚发出了影响一个或多个加速部件的分配决定。例如,在框3006,smc128可以已经做出一个或多个服务到部件分配,并且还可以进一步定义这些相应分配的状态(例如,保留与非保留、专用与完全共享等)。在框3008,smc128更新资源利用信息以反映框3004和3006的事件。例如,smc128可以更新存储在图10的数据存储设备1002中的可用性信息。

c.硬件加速部件的说明性实现

图31示出了实现图1的数据处理系统中的加速部件3102的一种方式,其可以在物理上实现为fpga器件。注意,下面给出的细节是以说明而非限制的精神来阐述的;其他数据处理系统可以使用具有与图31所示相比以一种或多种方式变化的架构的加速部件。此外,其他数据处理系统可以采用包括具有不同类型的加速部件的异构设计。

从高级角度来看,加速部件3102可以被实现为具有不同功能层的层级结构。在最低级别,加速部件3102提供“外壳”,其提供跨大多数应用场景通常保持相同的基本接口相关部件。位于外壳内部的核心部件3104可以包括“内壳”和应用逻辑3106。内壳对应于核心部件3104中除了应用逻辑3106之外的所有资源,并且表示在某个应用场景集合内保持相同的第二级别资源。应用逻辑3106本身表示最容易受到改变的最高级别的资源。但是注意,加速部件3102的任何部件在技术上可以重新配置。

在操作中,应用逻辑3106以与软件实现的应用与其底层操作系统资源交互的方式类似的方式来与外壳资源和内壳资源交互。从应用开发的角度来看,使用公共的外壳资源和内壳资源可以使开发人员不必为他或她创建的每个应用重新创建这些公共部件。这种策略还降低了开发人员可能会以在整个数据处理系统102内导致问题的方式改变核心内外壳功能的风险。

首先参考外壳,加速部件3102包括用于将加速部件3102耦合到网络接口控制器(经由nic接口3110)和本地架顶式交换机(经由tor接口3112)的桥接器3108。桥接器3108支持两种模式。在第一模式下,桥接器3108提供允许来自nic或tor的业务流入加速部件3102并且允许来自加速部件3102的业务流出到nic或tor的数据路径。加速部件3102可以对其“拦截”的业务执行任何处理,诸如压缩、加密等。在第二模式下,桥接器3108支持允许业务在nic与tor之间流动而不会由加速部件3102进一步处理的数据路径。在内部,桥接器可以由缓冲所接收的分组的各种fifo(3114,3116)、以及将分组路由到其期望的目的地的各种选择器和仲裁逻辑组成。旁路控制部件3118控制桥接器3108在第一模式还是第二模式下操作。

存储器控制器3120管控加速部件3102与本地存储器3122(诸如dram存储器)之间的交互。存储器控制器3120可以执行纠错以作为其服务的一部分。

主机接口3124提供使得加速部件能够与本地主机部件(图31中未示出)交互的功能。在一个实现中,主机接口3124可以结合直接存储器访问(dma)使用外围部件快速互连(pcie)来与本地主机部件交换信息。

最后,壳可以包括各种其他特征3126,诸如时钟信号发生器、状态led、纠错功能等。

在一个实现中,内壳可以包括用于在加速部件3102的各个内部部件之间以及在加速部件3102与外部实体之间(经由传输部件3130)路由消息的路由器3128。每个这样的端点与相应的端口相关联。例如,路由器3128耦合到存储器控制器3120、主机接口1120、应用逻辑3106和传输部件3130。

传输部件3130对分组进行公式化以用于传输到远程实体(诸如远程加速部件),并且从远程加速部件(诸如远程加速部件)接收分组。

3端口交换机3132在被激活时通过在nic与tor之间以及在nic或tor和与加速部件3102本身相关联的本地端口之间路由分组来接管桥接器3108的功能。

最后,可选的诊断记录器3134将与路由器3128、传输部件3130和3端口交换机3132执行的操作有关的事务信息存储在循环缓冲器中。例如,事务信息可以包括关于分组的来源和目的地ip地址的数据、主机特定的数据、时间戳等。技术人员可以研究事务信息的日志以尝试诊断加速部件3102中的故障或次优性能的原因。

图32示出了包括单独的可配置域(3204,3206,...)的加速部件3202。配置部件(例如,图10的配置部件1014)可以配置每个可配置域而不影响其他可配置域。因此,配置部件1014可以配置一个或多个可配置域,而其他可配置域正在基于它们各自的配置执行操作,这些配置不受干扰。

在一些实现中,图1的数据处理系统102可以动态地重新配置其加速部件以解决在b部分中描述的任何映射考虑。该重新配置可以在部分和/或全服务的基础上进行,并且可以在周期性和/或事件驱动的基础上进行。实际上,在一些情况下,数据处理系统102似乎可以通过重新配置其加速逻辑来连续地适应数据处理系统102中的变化的条件。

c.1本地链路

图33示出了本地主机部件3302可以经由图31所示的主机接口3124向其本地加速部件3304转发信息(例如,结合dma存储器传输使用pcie)的功能。在一个非限制性协议中,在操作(1)中,主机逻辑3306将要处理的数据放置到与主机逻辑3306相关联的主存储器中的内核固定输入缓冲器3308中。在操作(2)中,主机逻辑3306指令加速部件3304检索数据并且开始处理它。主机逻辑的线程然后被置于睡眠状态,直到其从加速部件3304接收到通知事件,或者它继续异步地处理其他数据。在操作(3)中,加速部件3304从主机逻辑的存储器传送数据,并且将其放在加速部件输入缓冲器3310中。

在操作(4)和(5)中,应用逻辑3312从输入缓冲器3310获取数据,处理它以生成输出结果,并且将输出结果放置在输出缓冲器3314中。在操作(6)中,加速部件3304将输出缓冲器3314的内容复制到主机逻辑的存储器中的输出缓冲器中。在操作(7)中,加速部件通知主机逻辑3306该数据准备好被其获取。在操作(8)中,主机逻辑线程唤醒并且消耗输出缓冲器3316中的数据。然后,主机逻辑3306可以丢弃输出缓冲器3316的内容,这使得加速部件3304能够在下一事务中重用它。

c.2路由器

图34示出了图31中介绍的路由器3128的一个实现。路由器包括用于从相应端口接收消息的任何数目的输入单元(这里为4个,3402、3404、3406、3408)和用于将消息转发到相应端口的输出单元(这里为4个,3410、3412、3414、3414)。如上所述,与端口相关联的端点包括存储器控制器3120、主机接口3124、应用逻辑3106和传输部件3130。交叉开关部件3418基于与消息相关联的地址信息来将消息从输入端口转发到输出端口。更具体地,消息由多个“飞跃(flit)”组成,并且路由器3128以逐个飞跃flit的方式发送消息。

在一个非限制性实现中,路由器3128支持多个虚拟信道(诸如8个),用于在同一物理链路上传输不同类别的业务。也就是说,路由器3128可以为其中由应用逻辑3106实现多个服务的那些场景支持多个业务类别,并且那些业务需要在分离的业务类别上传送。

路由器3128可以使用基于信用的流技术来管控对路由器的资源(例如,其可用的缓冲器空间)的访问。在该技术中,输入单元(3402-3408)向上游实体提供与其缓冲器中可用的flit的确切数目相对应的信用。信用授权上游实体将其数据传输到输入单元(3402-3408)。更具体地,在一个实现中,路由器3128支持可以在多个虚拟信道之间共享的“弹性”输入缓冲器。输出单元(3410-3416)负责跟踪其下游接收器中的可用信用,并且向正在请求向给定输出端口发送flit的任何输入单元(3402-3408)提供授权。

c.3传输部件

图35示出了在图31中介绍的传输部件3130的一个实现。传输部件3130可以提供寄存器接口来在节点之间建立连接。也就是说,每个这样的连接是单向的,并且将源部件上的发送队列链接到目的地部件上的接收队列。软件过程可以通过在传输部件3130可以传输或接收数据之前静态地分配它们来建立连接。数据存储设备3502存储控制连接状态的两个表:发送连接表和接收连接表。

分组处理部件3504处理从路由器3128到达的以远程端点(例如,另一加速部件)为目的地的消息。它通过缓冲和打包消息来实现。分组处理部件3504还处理从某个远程端点接收并且以路由器3128为目的地的分组。

对于从路由器3128到达的消息,分组处理部件3504将每个消息请求与发送连接表中的发送连接表条目相匹配,例如,使用与消息相关联的报头信息和虚拟信道(vc)信息作为查询项,如由路由器3128提供的。分组处理部件3504使用从发送连接表条目获取的信息(诸如序列号、地址信息等)来构建其发送到远程实体的分组。

更具体地,在一个非限制性方式中,分组处理部件3504将分组封装在udp/ip以太网帧中,并且将它们发送到远程加速部件。在一个实现中,分组可以包括以太网报头,随后是ipv4报头,随后是udp报头,随后是传输报头(具体地与传输部件3130相关联),随后是有效载荷。

对于从网络到达的分组(例如,如在3端口交换机3132的本地端口上接收到的),分组处理部件3504将每个分组与在分组报头中提供的接收可连接表条目相匹配。如果存在匹配,则分组处理部件获取条目的虚拟信道字段,并且使用该信息将接收到的消息转发到路由器3128(根据由路由器3128使用的信用流技术)。

故障处理部件3506缓冲所有发送的分组,直到它从接收节点(例如,远程加速部件)接收到确认(ack)。如果用于连接的ack在指定的超时期间内没有到达,则故障处理部件3506可以重传该分组。故障处理部件3506将对这样的重传重复指定次数(例如,128次)。如果在所有这样的尝试之后分组保持未确认,则故障处理部件3506可以丢弃它并且释放其缓冲器。

c.43端口交换机

图36示出了3端口交换机3132的一个实现。3端口交换机3132操作以将加速部件生成的网络分组安全地插入(和去除)到数据中心网络上,而不会危及主机到tor网络业务。

3端口交换机3132连接到nic接口3110(对应于主机接口)、tor接口3112、和与本地加速部件3102本身相关联的本地接口。3端口交换机3132可以被概念化为包括用于分别从主机部件和tor交换机接收分组并且用于在本地加速部件处接收分组的接收接口(3602,3604,3606)。3端口交换机3132还包括用于分别向tor交换机和主机部件提供分组并且接收由本地加速部件传输的分组的传输接口(3608,3610,3612)。

分组分类器(3614,3616)例如基于由分组指定的状态信息来确定从主机部件或tor交换机接收的分组的类别。在一个实现中,每个分组被分类为属于无损流(例如,远程直接存储器访问(rdma)业务)或有损流(例如,传输控制协议/因特网协议(tcp/ip)业务))。属于无损流的业务不容忍分组丢失,而属于有损流的业务可以容忍一些分组丢失。

分组缓冲器(3618,3620)根据它们所属的业务类别将传入分组存储在不同的相应缓冲器中。如果缓冲器中没有备用空间,则分组将被丢弃。(在一个实现中,3端口交换机3132不为由本地加速部件(经由本地端口)提供的分组提供分组缓冲,因为应用逻辑3106可以通过使用“反向按压”来调节分组流。)仲裁逻辑3622在可用分组中进行选择并且传输所选择的分组。

如上所述,目的地为本地加速部件的业务被封装在固定端口号上的udp/ip分组中。3端口交换机3132检查传入分组(例如,如从tor接收的)以确定它们是否为正确端口号上的udp分组。如果是,则3端口交换机3132在本地rx端口接口3606上输出分组。在一个实现中,到达本地tx端口接口3612的所有业务都从tortx端口接口3608被发送出去,但是也可以被发送到主机tx端口接口3610。还注意,图36指示加速部件3102拦截来自tor而非来自主机部件的业务;但是它也可以被配置为拦截来自主机部件的业务。

pfc处理逻辑3624允许3端口交换机3132将优先级流控制帧插入被传输到tor或主机部件的业务流中。也就是说,对于无损业务类别,如果分组缓冲器填满,则pfc处理逻辑3624向链路伙伴发送pfc消息,以请求暂停该类别上的业务。如果在主机rx端口接口3602或torrx端口接口3604上接收到用于无损业务类别的pfc控制帧,则3端口交换机3132将停止在接收到控制消息的端口上发送分组。

c.5说明性主机部件

图37示出了对应于图1所示的任何主机部件(s)的主机部件3702的一个实现。主机部件3702可以包括一个或多个处理设备3704(诸如一个或多个中央处理单元(cpu)),每个处理设备3704可以实现一个或多个硬件线程。主机部件3702还可以包括用于存储诸如代码、设置、数据等任何种类的信息的任何存储资源3706。在非限制的意义上,例如,存储资源3706可以包括以下中的任一项:任何类型的ram、任何类型的rom、闪存设备、硬盘、光盘等。更一般地,任何存储资源都可以使用任何技术来存储信息。此外,任何存储资源可以提供对信息的易失性或非易失性保留。此外,任何存储资源可以表示主机部件3702的固定或可移动部件。在一种情况下,当处理设备3704执行存储在任何存储资源或存储资源组合中的相关联的指令时,主机部件3702可以执行与本地租户功能相关联的任何操作。主机部件3702还包括用于与诸如硬盘驱动机构、光盘驱动机构等任何存储资源交互的一个或多个驱动机构3708。

主机部件3702还包括用于(经由输入设备3712)接收各种输入和用于(经由输出设备3714)提供各种输出的输入/输出模块3710。一个特定的输出机制可以包括呈现设备3716和相关联的图形用户接口(gui)3718。主机部件3702还可以包括用于经由一个或多个通信管道3722与其他设备交换数据的一个或多个网络接口3720。一个或多个通信总线3724将上述部件在通信上耦合在一起。

通信管道3722可以任何方式实现,例如通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信管道3722可以包括由任何协议或协议组合管控的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。

以下概述提供了本文中阐述的技术的说明性方面的非穷举列表。

根据第一方面,描述了一种数据处理系统,其包括:包括请求服务的至少一个租户功能实例的第一本地部件;本地硬件加速部件;用于将第一本地部件与本地硬件加速部件耦合的本地链路;第一本地部件间接可访问的至少一个远程硬件加速部件;以及被配置为应用至少一个规则来确定服务是否将由以下中的至少一项满足的服务映射部件:第一本地部件、本地硬件加速部件、和/或远程硬件加速部件中的一个或多个远程硬件加速部件。

根据第二方面,第一本地部件是使用一个或多个中央处理单元来执行机器可读指令的第一本地主机部件。

根据第三方面,服务映射部件被配置为在确定本地硬件加速部件已经被配置为提供服务时选择使用本地硬件加速部件。

根据第四方面,服务映射部件被配置为当确定服务为线路速率服务时选择使用本地硬件加速部件。

根据第五方面,服务映射部件被配置为基于与在与服务交互时引入的延迟量有关的延迟相关考虑来选择使用本地硬件加速部件。

根据第六方面,服务映射部件被配置为基于与服务相关联的服务水平要求(sla)来在候选硬件加速部件之间进行选择。

根据第七方面,服务映射部件被配置为基于服务的特征为间歇性业务还是稳定业务的考虑来在候选硬件加速部件之间进行选择。

根据第八方面,服务映射部件被配置为基于安全相关考虑来在候选硬件加速部件之间进行选择。

根据第九方面,服务映射部件被配置为当确定本地硬件加速部件和远程硬件加速部件都无法可行地执行服务时选择使用第一本地部件来执行服务。

根据第十方面,数据处理系统还包括配置部件,其中服务映射部件被配置为在确定上述至少一个硬件加速部件尚未被配置为执行服务时使用配置部件来将至少一个硬件加速部件配置为执行服务。

根据第十一方面,服务映射部件被配置为使用配置部件来执行上述至少一个硬件加速部件的部分配置,使得对每个硬件加速部件的一部分进行同时保持每个硬件加速部件的其他部分不变。

根据第十二方面,服务映射部件被配置为:从由第一本地部件提供的租户功能实例接收对于服务的请求;确定服务是否适合由本地硬件加速部件来执行;如果做出服务适合由本地硬件加速部件来执行的确定,则指令第一本地部件使用本地硬件加速部件来执行服务;如果确定本地硬件加速部件不适合执行服务,则确定远程硬件加速部件是否适合执行服务;以及如果确定远程硬件加速部件适合执行服务,则指令第一本地部件经由本地硬件加速部件与远程硬件加速部件交互。

根据第十三方面,服务映射部件还被配置为在确定远程加速部件不适合执行服务的情况下指令第一本地部件自己执行服务。

根据第十四方面,服务映射部件包括本地管理部件和全局管理部件。上述确定服务是否适合由本地硬件加速部件来执行是由本地管理部件执行的。上述确定远程硬件加速部件是否适合执行服务是由全局管理部件执行的。另外,在确定远程硬件加速部件适合执行服务后,全局管理部件向第一本地部件转发与远程硬件加速部件相关联的地址。然后,第一本地部件经由本地硬件加速部件使用地址来访问服务。

根据第十五方面,本文中描述了一种在数据处理系统中执行的方法,其涉及从由本地主机部件实现的租户功能接收对于服务的请求,本地主机部件使用一个或多个中央处理单元来执行机器可读指令。该方法还包括确定服务是否适合由本地硬件加速部件来执行,本地硬件加速部件经由本地链路耦合到本地主机部件。该方法还包括在做出服务适合由本地硬件加速部件来执行的的确定的情况下指令本地主机部件使用本地硬件加速部件来执行服务。该方法还包括在确定本地硬件加速部件不适合执行服务的情况下确定远程硬件加速部件是否适合执行服务,其中远程硬件加速部件是本地主机部件经由本地硬件加速部件可访问的。该方法还包括在确定远程硬件加速部件适合执行服务的情况下指令本地主机部件经由本地硬件加速部件来与远程硬件加速部件交互。

根据第十六方面,该方法还包括在确定远程加速部件不适合执行服务的情况下指令本地主机部件自己执行服务。

根据第十七方面,服务映射部件包括本地管理部件和全局管理部件。服务是否适合由本地硬件加速部件执行的上述确定由本地管理部件执行,并且远程硬件加速部件是否适合执行服务的上述确定由全局管理部件执行。另外,在确定远程硬件加速部件适合执行服务后,全局管理部件向本地主机部件转发与远程硬件加速部件相关联的地址。另外,本地主机部件经由本地硬件加速部件使用该地址来访问服务。

根据第十八方面,服务是否适合由本地硬件加速部件执行的上述确定被配置为当确定本地硬件加速部件已经被配置为提供服务时,选择使用本地硬件加速部件。

根据第十九方面,服务是否适合由本地硬件加速部件来执行的上述确定被配置为当确定服务为线路速率服务时,选择使用本地硬件加速部件。

根据第二十方面,本文中描述了实现服务映射部件的至少一个设备,其包括被配置为从由本地主机部件实现的租户功能接收对于服务的请求的逻辑,本地主机部件使用一个或多个中央处理单元来执行机器可读指令。该(多个)设备还包括被配置为确定服务是否适合由本地硬件加速部件执行的逻辑,本地硬件加速部件经由本地链路耦合到本地主机部件。该(多个)设备还包括被配置为在做出服务适合由本地硬件加速部件执行的确定的情况下指令本地主机部件使用本地硬件加速部件来执行服务的逻辑。该(多个)设备还包括被配置为在确定本地硬件加速部件不适合执行服务的情况下确定远程硬件加速部件是否适合执行服务的逻辑,远程硬件加速部件是本地主机部件经由本地硬件加速部件可访问的。该(多个)设备还包括被配置为在确定远程硬件加速部件适合执行服务的情况下指令本地主机部件经由本地硬件加速部件来与远程硬件加速部件交互的逻辑。该(多个)设备还包括被配置为在确定远程硬件加速部件不适合执行服务的情况下指令本地主机部件自己执行服务的逻辑。

第二十一方面对应于上述第一至第二十方面的任何组合(例如,任何排列或子集)。

第二十二方面对应于与第一到二十一方面相关联的任何方法对应物(counterpart)、设备对应物、系统对应物、装置对应物、计算机可读存储介质对应物、数据结构对应物、制品对应物、图形用户接口呈现对应物等。

最后,虽然已经以结构特征和/或方法动作特有的语言描述了主题,但是应当理解,所附权利要求中限定的主题不必限于上述的特定特征或动作。相反,上述特定特征和动作作为实现权利要求的示例形式而被公开。

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