部分地重新配置加速组件的制作方法

文档序号:13950612阅读:267来源:国知局
部分地重新配置加速组件的制作方法



背景技术:

计算机系统和相关技术影响社会的许多方面。事实上,计算机系统处理信息的能力已经改变了我们的生活和工作方式。计算机系统现在通常执行在计算机系统到来之前手动执行的大量任务(例如,文字处理、调度、记帐等)。最近,计算机系统彼此耦合并与其他电子设备耦合,以形成有线计算机网络和无线计算机网络,计算机系统和其他电子设备可通过该网络传输电子数据。因此,许多计算任务的执行被分布在多个不同的计算机系统和/或多个不同的计算环境中。例如,分布式应用可以在多个不同的计算机系统处具有组件。



技术实现要素:

示例扩展到用于部分地重新配置加速组件的方法、系统和计算机程序产品。检测改变加速组件的提供的功能的原因(例如,加速组件处的错误或对提供的功能的可用更新)。加速组件处所提供的功能被暂停(halt)。通过将针对提供的功能的镜像写入加速组件来部分地重新配置加速组件(例如,以解决错误或更新提供的功能)。加速组件处的其他功能在部分地重新配置加速组件期间被保持为可操作。在部分地重新配置加速组件完成之后,提供的功能在加速组件处被激活。

提供本发明内容是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。

将在下面的描述中阐述附加的特征和优点,并且部分特征和优点将从描述中显而易见,或者可以通过实践来习得。可以通过所附权利要求中特别指出的工具和组合来实现并获得特征和优点。这些特征和优点以及其他特征和优点在以下描述和所附权利要求中将变得更加显而易见,或者可以通过如下所述的实践来习得。

附图说明

为了描述可以获得上述优点和特征以及其他优点和特征的方式,将通过参考在附图中示出的其具体实现来呈现更具体的描述。应当理解,这些附图仅描绘了一些实现,并且因此不被认为是对其范围的限制,将通过使用附图以附加的特征和细节来描述并解释实现,在附图中:

图1示出了包括软件平面和硬件加速平面的一个示例架构。

图2示出了可以在数据中心中使用的包括服务器的一个示例架构。

图3示出了一个示例服务器。

图4示出了一个示例服务器。

图5示出了使用软件平面的组件和硬件加速平面的组件实现的一个示例服务。

图6示出了使用软件平面的组件和硬件加速平面的组件实现的一个示例服务。

图7示出加速组件的一个示例架构。

图8示出了包括分离的可配置域的加速组件。

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

图10示出主机组件的一个示例架构。

图11示出了用于管理数据中心中的服务的管理功能的一个示例架构。

图12示出了具有图11的管理功能的附加组件的一个示例架构。

图13a-图13d示出促进部分地重新配置加速组件的一个示例架构。

图14示出了用于部分地重新配置加速组件的一个示例方法的流程图。

图15a-图15c示出了促进部分地重新配置具有被包括在多个图中的角色的加速组件的一个示例架构。

图16示出了部分地重新配置加速组件的一个示例。

具体实施方式

示例扩展到用于部分地重新配置加速组件的方法、系统和计算机程序产品。检测改变加速组件的所提供的功能的原因(例如,加速组件处的错误或对所提供的功能的可用更新)。加速组件处所提供的功能被暂停。通过将针对提供的功能的镜像写入加速组件来部分地重新配置加速组件(例如,以解决错误或更新提供的功能)。加速组件的其他功能在部分地重新配置加速组件期间被维持为可操作。在部分地重新配置加速组件完成之后,提供的功能在加速组件处被激活。

在一个方面,加速组件(例如,诸如现场可编程门阵列(fpga)的硬件加速器)向为服务提供加速的互操作加速组件组提供功能。互操作加速组件组中每个加速组件处的功能被组合在一个图中,以提供服务加速。除了提供的功能之外,加速组件还具有其他功能。互操作加速组件组以及一个或多个其他加速组件是硬件加速平面的一部分,硬件加速平面包括更多个加速组件,更多个加速组件为加速服务提供加速组件的可配置结构。

如以下更详细讨论的,实现可以包括或利用包括计算机硬件(诸如例如一个或多个处理器和系统存储器)的专用或通用计算机。实现还包括用于携载或存储计算机可执行指令和/或数据结构的物理计算机可读介质和其他计算机可读介质。这样的计算机可读介质可以是可以由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。携载计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,实现可以包括至少两种截然不同的计算机可读介质:计算机存储介质(设备)和传输介质。

计算机存储介质(设备)包括ram、rom、eeprom、cd-rom、固态驱动器(“ssd”)(例如,基于ram)、闪存、相变存储器(“pcm”)、其他类型的存储器、其他光盘存储装置、磁盘存储装置或其他磁存储设备、或可用于以计算机可执行指令或数据结构的形式存储期望的程序代码装置并且可被通用或专用计算机访问的任何其他介质。

“网络”被定义为使得能够在计算机系统和/或模块和/或其他电子设备之间传递电子数据的一个或多个数据链接。当通过网络或其他通信连接(硬连线、无线、或硬连线或无线的组合)将信息传输或提供给计算机时,计算机将该连接正确地视为传输介质。传输介质可以包括网络和/或数据链接,网络和/或数据链接可以被用于以计算机可执行指令或数据结构的形式携载期望的程序代码装置并且可以被通用或专用计算机访问。上述的组合也应包括在计算机可读介质的范围内。

此外,在到达各种计算机系统组件时,可以将计算机可执行指令或数据结构形式的程序代码装置从传输介质自动传递到计算机存储介质(设备)(反之亦然)。例如,通过网络或数据链接接收的计算机可执行指令或数据结构可以被缓存在网络接口模块(例如,“nic”)内的ram中,然后最终被传递到计算机系统ram和/或计算机系统处的较不易失性计算机存储介质(设备)。因此,应理解,计算机存储介质(设备)可以被包括在还(甚至主要)利用传输介质的计算机系统组件中。

计算机可执行指令例如包括响应于在处理器处的执行,使得通用计算机、专用计算机或专用处理设备执行特定功能或功能组的指令和数据。计算机可执行指令可以是例如二进制文件、诸如汇编语言的中间格式指令、或者甚至是源代码。虽然已经以结构特征和/或方法动作专用的语言描述了主题,但是应当理解,所附权利要求中限定的主题不一定限于上述的特征或动作。相反,所描述的特征和动作作为实现权利要求的示例形式被公开。

本领域技术人员将理解,所描述的方面可以在具有许多类型的计算机系统配置的网络计算环境中实践,许多类型的计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、可穿戴设备、多处理器系统、基于微处理器或可编程的消费者电子产品、网络pc、小型计算机、大型计算机、移动电话、pda、平板电脑、寻呼机、手表、路由器、交换机等。所描述的方面还可以在分布式系统环境中实践,其中通过网络被链接(通过硬连线数据链接、无线数据链接、或者通过硬连线和无线数据链接的组合)的本地计算机系统和远程计算机系统均执行任务。在分布式系统环境中,程序模块可以位于本地存储器存储设备和远程存储器存储设备中。

所描述的方面还可以在云计算环境中实现。在本说明书和以下权利要求书中,“云计算”被定义为用于使得能够对可配置计算资源的共享池按需网络访问的模型。例如,可以在市场中使用云计算来提供对可配置计算资源的共享池的随时随地按需访问。可配置计算资源的共享池可以经由虚拟化被快速配置,并以低管理工作量或服务提供商交互被发布,然后被相应调整。

云计算模型可以由各种特性组成,例如,按需自助服务、宽网络访问、资源池化、快速弹性、经测量的服务等。云计算模型还可以公开各种服务模型,例如,软件即服务(“saas”)、平台即服务(“paas”)和基础结构即服务(“iaas”)。也可以使用不同的部署模型(例如,私有云、社区云、公共云、混合云等)来对云计算模型进行部署。在本说明书和权利要求书中,“云计算环境”是采用云计算的环境。

在本说明书和下面的权利要求书中,“加速组件”被定义为:与在通用中央处理单元(cpu)上运行的软件可以执行计算功能的速度相比,专用(例如,可以通过编程来配置)于更有效地执行计算功能的硬件组件。加速组件包括现场可编程门阵列(fpga)、图形处理单元(gpu)、专用集成电路(asic)、可擦除和/或复杂可编程逻辑器件(pld)、可编程阵列逻辑(pal)器件、通用阵列逻辑(gal)器件以及大规模并行处理器阵列(mppa)器件。

在本说明书和以下权利要求书中,“角色”被定义为由加速组件提供给用于加速服务的互操作加速组件组的功能。可以将互操作加速组件组中的每个加速组件处的角色链接在一起,以组成提供服务加速的图。

在本说明书和以下权利要求书中,“图”被定义为向服务提供加速的互连(例如,网络连接)加速组件组,其中该组中的每个加速组件提供加速功能的一部分。

在本说明书和以下权利要求书中,“镜像”被定义为包括可用于配置加速组件(例如,fpga)的信息的文件。包括在镜像文件中的信息可以用于对加速组件(例如,fpga的逻辑块以及可重新配置的互连)的硬件组件进行编程以实现期望的功能。可以实现期望的功能来解决实际上可以计算的任何问题。

在本说明书和以下权利要求书中,“相邻加速组件”被定义为被配置为在与图内的另一加速组件互连时与另一加速组件交换输入和/或输出的加速组件。从图的角度来看逻辑上相邻。加速组件相对于另一加速组件的物理接近度不是标识相邻加速组件的决定性因素。即,物理上彼此不相邻(或者甚至在网络上或者在数据中心内彼此靠近)的加速组件可以被配置为在图内互连时彼此交换数据。即使在加速组件之间交换的数据物理地穿过图外的其他加速组件或通过加速组件之间的传输中的主机组件,在图内互连的加速组件也可被视为相邻加速组件。然而,在网络上或者在数据中心中彼此物理上相邻或者彼此靠近并且在图内互连的加速组件也可以被视为彼此相邻的加速组件。

通常,加速组件可以包括可编程逻辑块的阵列以及允许逻辑块以不同配置连接在一起来提供不同功能(即,不同角色)的可重新配置互连的分层结构。可以在加速组件处接收并加载镜像文件,以配置可编程逻辑块并配置互连来提供期望的功能(即,角色)。

在一些环境中,从数据中心向客户端提供应用(服务)。数据中心包括多个(可能是非常多的)软件驱动的通用计算设备。每个通用计算设备可以包括处理机器可读指令以执行指定的计算活动的一个或多个中央处理单元(cpu)。多个通用计算设备彼此联网,使得多个通用计算机系统(或其子集)的组合功率可以用于执行更复杂的计算活动。

数据中心提供者面临提高数据中心内以及由数据中心提供的处理能力和效率的持续挑战。至少部分由于功率限制,继续添加越来越多的通用计算设备是不可行的。计算设备专业化是一个选择。例如,计算设备可以专用于特定规模的工作负载,以提供一些效率增益。然而,至少由于两个原因,计算设备专业化是有问题的。首先,数据中心缺乏同构性增加了管理问题,并为应用提供了不同构的平台依赖。此外,数据中心服务发展迅速,使得不可编程的硬件功能变得不切实际。因此,数据中心提供者需要不断提高性能和效率,但无法获得通用计算设备的改进。

各方面促进部分地重新配置加速组件。可以由于多个原因中的任何一个(包括解决加速组件处的功能错误或者更新加速组件处的功能)来实现部分的重新配置。在部分的重新配置期间,对于加速组件处没有被部分的重新配置触及的任何其他功能,可以保持连接。部署部分的重新配置比加速组件的完全重新配置更有效。

在一些方面,加速组件为提供服务加速的互操作加速组件组提供角色。互操作加速组件组中的每个加速组件处的角色一起组合在提供服务加速的图中。除了角色之外,加速组件还可以具有其他功能。

例如,在一个方面,加速组件向组合在图中的多个互操作加速组件组提供角色,图以提供对多个对应服务的加速。在互操作加速组件组的角色的重新配置期间,可以维持任何其他互操作加速组件组的角色。互操作加速组件的各个组可以是包括更多个加速组件的硬件加速平面的一部分。硬件加速平面为加速服务提供了可配置的加速组件结构。

加速组件可以被编程以包括网络接口。网络接口允许加速组件与其他组件(例如,其他加速组件或主机组件)交换网络流量。因此,当加速组件处的一个角色正在被重新配置时,加速组件处的任何其他角色可以维持稳定和可操作。此外,当加速组件处的角色正在被重新配置时,网络接口可以维持稳定且可操作。因此,在加速组件处的一个角色的重新配置期间,加速组件处的任何其他角色可以继续使用网络接口来在加速组件和其他组件之间路由网络流量。

任何数目的不同组件都可以检测在加速组件处改变所提供的功能的原因。在一个方面,针对展现不正确行为的角色或更新可用的角色,更高级别的服务监测硬件加速平面。当检测到错误的行为或更新可用时,高级别的服务可以启动在加速组件处角色的重新配置来解决错误或更新角色。在另一方面,针对展现不正确行为的角色或更新可用的角色,加速组件处的本地监测器监测加速组件。当检测到错误的行为或更新可用时,本地监测器可以启动在加速组件处角色的重新配置来解决错误或更新角色。

在又一方面,加速组件被本地链接到主机组件(例如,cpu)。在这些另外的方面中,针对展现不正确行为的角色或更新可用的角色,本地链接的主机组件监测加速组件。当检测到不正确的行为或更新可用时,主机组件可以启动在加速组件处角色的重新配置来解决错误或更新角色。

通常,数据中心部署包括硬件加速平面和软件平面。硬件加速平面可以包括多个联网加速组件(例如,fpga)。软件平面可以包括多个联网的软件实现的主机组件(例如,中央处理单元(cpu))。可以在硬件加速平面和软件平面之间共享网络基础结构。在一些环境中,软件实现的主机组件被本地链接到对应的加速组件。

图1示出了包括软件平面104和硬件加速平面106的示例架构102。软件平面104包括软件驱动的组件的集合(每个均由符号“s”表示),而硬件平面包括硬件加速组件的集合(每个均由符号“h”表示)。例如,每个主机组件可以对应于使用一个或多个中央处理单元(cpu)执行机器可读指令的服务器计算机。每个cpu又可以在一个或多个硬件线程上执行指令。每个加速组件可以执行用于实现功能(例如,由数据中心提供的服务的部分)的硬件逻辑。

可以使用加速组件的异构集合来构造硬件加速平面106,加速组件的异构集合包括不同类型的加速组件和/或具有不同能力的相同类型的加速组件。例如,硬件加速平面106可以包括具有不同的相应处理能力和架构的fpga设备、fpga设备和其他设备的混合等。硬件加速平面106提供加速组件的可重新配置结构。

通过使用其cpu硬件线程中的每一个来依次执行机器可读指令,主机组件通常使用时间执行范例(即,顺序地)来执行操作。相反,通过使用大量并行逻辑元件来执行计算任务,加速组件可以使用空间范例(即,同时)来执行操作。因此,与软件驱动的主机组件相比,加速组件可以在更短的时间内执行一些操作。在架构102的上下文中,与术语“加速组件”相关联的“加速”限定符反映了其用于对由主机组件执行的功能进行加速的潜力。

在一个示例中,架构102对应于包括多个计算机服务器的数据中心环境。计算机服务器对应于软件平面104中的主机组件。在另一示例中,架构102对应于企业系统。在另一的示例中,架构102对应于使用可以访问两个或更多个加速组件等的至少一个主机组件的用户设备或装置。针对架构102的其他实现也是可能的。

公共网络基础结构120将软件平面104中的主机组件耦合到其他主机组件,并将硬件加速平面106中的加速组件耦合到其他加速组件。即,主机组件可以使用公共网络基础结构120来彼此交互,并且加速组件可以使用公共网络基础结构120来彼此交互。软件平面104中的主机组件之间的交互独立于硬件加速平面106中的加速组件之间的交互。因此,在主机组件的方向外部,并且在主机组件没有“意识到”特定的交互甚至在硬件加速平面106中发生的情况下,两个或更多个加速组件可以相对于软件平面104中的主机组件以透明的方式进行通信。

架构102可以使用各种不同协议中的任何协议来促进加速组件之间在网络基础结构120上的通信,并且可以使用各种不同协议中的任何协议来促进主机组件之间在网络基础结构120上的通信。例如,架构102可以使用以太网协议在网络基础结构120上传输互联网协议(ip)分组。在一个实现中,服务器中的每个本地主机组件被给予单个物理ip地址。同一服务器中的本地加速组件可以采用相同的ip地址。服务器可以以不同的方式确定传入的分组是以本地主机组件为目的地还是以本地加速组件为目的地。例如,目的地为本地加速组件的分组可以被表述为具有特定端口的udp分组;另一方面,可以不以该方式来表述主机限定的数据分组。在另一示例中,基于每个分组中的状态标志的值,可以将属于加速平面106的分组与属于软件平面104的分组进行区分。

这样,架构102可以被视为共享相同物理网络通信链接的两个逻辑网络(软件平面104和硬件加速平面106)。与两个逻辑网络相关联的分组可以通过其相应的流量类别彼此区分。

在另一方面,架构102中的每个主机组件通过本地链接被耦合到硬件加速平面104中的至少一个加速组件。例如,主机组件和加速组件可以被布置在一起,并作为架构102内的单个可服务单元(例如,服务器)来维持。在该布置中,服务器可以被称为“本地”主机组件,以将其与和其他服务器相关联的其他主机组件进行区分。类似地,服务器的加速组件(一个或多个)可被称为“本地”加速组件,以将其与和其他服务器相关联的其他加速组件进行区分。

如架构102所示,主机组件108通过本地链接112(例如,外围组件互联快速(pcie)链接)被耦合到加速组件110。因此,主机组件108是从加速组件110的角度来看的本地主机组件,并且加速组件110是从主机组件108的角度来看的本地加速组件。主机组件108和加速组件110的本地链接可以形成服务器的一部分。更一般地,软件平面104中的主机组件可以通过许多单独的链接(被共同地表示为本地h-至-本地s耦合114)被本地耦合到硬件加速平面106中的加速组件。

因此,主机组件可以直接与任何本地链接的加速组件进行交互。这样,主机组件可以发起与本地链接的加速组件的通信,以引起多个加速组件之间的进一步通信。例如,主机组件可以发布对服务(或其一部分)的请求,其中针对服务(或其一部分)的功能跨越硬件加速平面106中的一个或多个加速组件的组组成。

因此,主机组件也可以与硬件加速平面106中主机组件未本地链接的其他加速组件间接交互。例如,主机组件108可以经由加速组件110与加速组件116间接通信。更具体地,加速组件110经由链接118(例如,网络基础结构120)与加速组件116通信。

硬件加速平面106中的加速组件可以用于在数据中心中稳健地加速更大规模的服务。通过使用针对跨越多个加速组件进行计算的低延迟互连,复杂数据中心服务的大部分可以被映射到加速组件(例如,fpga)。加速组件也可以根据需要被重新配置,以在不同的时间提供不同的服务功能。

图2示出了可以在数据中心中使用的示例架构202。服务器204、206和208可以被包括在数据中心的机架中。服务器204、206和208中的每一个可以被耦合到架顶式(tor)交换机210。虽然未示出,但是其他机架可以具有类似的配置。服务器204还包括包含cpu214、216等的主机组件212。主机组件212连同来自服务器206和208的主机组件可被包括在软件平面104中。服务器204还包括加速组件218。加速组件218连同来自服务器206和208的加速组件可以被包括在硬件加速平面106中。

加速组件218经由本地链接220(例如,pcie链接)被直接耦合到主机组件212。因此,主机组件212可以将加速组件218视为本地加速组件,并且加速组件218可以将主机组件212视为本地主机组件。加速组件218和主机组件212也通过网络接口控制器222(例如,用于跨越网络基础结构120进行通信)间接耦合。服务器204可以将表示服务功能的镜像加载到加速组件218上。

加速组件218还被耦合到tor交换机210。因此,在架构202中,加速组件218表示主机组件212与数据中心中的其他组件(包括其他主机组件和其他加速组件)进行交互的路径。在不增加由主机组件212执行的基于cpu的操作的负担的情况下,架构202允许加速组件218对从tor交换机210接收(和/或发送到tor交换机210)的分组执行处理(例如,通过执行加密、压缩等)。

管理功能232用于管理架构202的操作。可以使用不同的控制架构在物理上实现管理功能232。例如,在一个控制架构中,管理功能232可以包括耦合到一个或多个全局管理组件的多个本地管理组件。

图3示出了示例服务器302。服务器302包括主机组件304(包括cpu306、308等)、加速组件310和本地链接312。加速组件310经由本地链接312被直接耦合到主机组件304(例如,pcie链接)。因此,主机组件304可以将加速组件310视为本地加速组件,并且加速组件310可以将主机组件304视为本地主机组件。主机组件304和加速组件310可以被分别包括在软件平面104和硬件加速平面106中。服务器302将网络接口控制器(nic)314实现为加速组件310的内部组件。服务器302可以将表示服务功能的镜像加载到加速组件310上。

图4示出了示例服务器402。服务器402包括主机组件404至406(包括任意数量n的主机组件)。主机组件404至406可以被包括在软件平面104中。服务器402包括加速组件408至410(包括任意数量m的加速组件)。加速组件408至410可以被包括在硬件加速平面106中。服务器402还可以包括网络接口控制器(未示出)。

服务器402可以包括本地链接到两个加速组件的单个主机组件。这两个加速组件可以执行不同的相应任务。例如,可以使用一个加速组件来处理到其本地tor交换机的输出流量,而可以使用另一加速组件来处理来自tor交换机的输入流量。另外,服务器402可以将表示服务功能的镜像加载到加速组件408到410中的任一个上。

通常,服务(例如,对文档进行排名、加密、压缩、计算机视觉、语音翻译、机器学习等)可以实现在一个或多个主机组件处、在一个或多个加速组件处、或者在一个或多个主机组件和一个或多个加速组件的组合(取决于哪些组件更适合于提供服务的不同部分)处。

图5示出了使用软件平面104的组件和硬件加速平面106的组件实现的示例服务512。在操作(1)中,主机组件502在执行计算任务的过程中与主机组件504通信。在操作(2)中,主机组件504然后通过在本地链接上与加速组件506进行通信来请求使用在硬件加速平面106中实现的服务512(但是主机组件504可能不“知道”服务512在何处被实现)。

所请求的服务512是遍布在多个加速组件之上的组合服务,每个加速组件执行服务的指定部分。尽管加速组件506被联系来请求使用服务512,但是加速组件506可以不是组合服务的首部(或甚至是多组件服务的一部分)。相反,加速组件508可以是组合服务的首部组件。

这样,在操作(3)中,主机组件504经由加速组件506与加速组件508间接通信。加速组件508然后执行组合服务中的其部分来生成中间输出结果。在操作(4)中,加速组件508然后调用执行组合服务中的另一相应部分的加速组件510来生成最终结果。在操作(5)、(6)和(7)中,硬件加速平面106通过如上所述的相同的组件链、但以相反的方向将最终结果连续地转发回到请求主机组件504。

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

硬件加速平面106以对请求主机组件透明的方式进行操作。例如,主机组件504可以“不知道”在其硬件加速平面106中请求如何被处理(包括服务对应于组合服务的事实)。

软件平面104中的通信(例如,对应于操作(1))可以使用与硬件加速平面106中的通信相同的公共网络基础结构120来进行(例如,对应于操作(3)-(6))。操作(2)和(7)可以通过本地链接(对应于图1所示的本地h-至-本地s耦合114)来进行。

图6示出了使用软件平面的组件和硬件加速平面106的组件实现的示例服务612。服务612使用与服务512不同的流程结构。更具体地,在操作(1)中,主机组件(未示出)向其本地加速组件602发送请求。在该示例中,本地加速组件602也是服务612的首部组件。在操作(2)中,本地加速组件602然后可以将一个或多个消息转发到多个相应的加速组件。接收消息的每个加速组件可以与其他加速组件并行地执行组合服务的一部分。(图6可以仅表示服务612的一部分,可以在其他硬件加速器处实现服务612的其他部分)。

通常,加速组件可以包括各种组件中的任何组件,各种组件中的一些可以在不同的应用镜像上或多或少是公共的。一些组件(例如诸如,角色)在应用镜像之间是不同的。其他组件(例如诸如,路由器、传输组件、交换机、诊断记录器等)在一些应用镜像之间可以是相对公共的。这些其他相对公共的组件可以被视为被包含在抽象的中间层或“软壳”中。例如诸如桥接器、旁路控制装置、网络接口卡、架顶式接口、缓冲器、存储器控制器、pcie控制器、fpga内部网络控制器、配置存储器和接口、主机接口、调试和反向信道接口(例如,联合测试行动组(jtag)接口、内部集成电路(i2c)接口等)、传感器等的进一步组件可以在更多(并且基本上全部)应用镜像之间是公共的。这些进一步公共的组件可以被视为包括在更大(例如,与其他相对公共的组件相比)的抽象层或“外壳”中。

当使用新功能重新配置加速组件(例如,fpga)时,有可能(但是不保证)加速组件处的角色(即,应用专用逻辑)被改变。但是,软壳中的现有功能不可能被改变,而且外壳中的现有功能也不太可能被改变。因此,软壳中的组件和外壳中更大程度上的组件为角色提供了公共的接口。因此,外壳允许针对角色的代码跨越不同的加速组件被相对容易地转移。

转到图7,图7图示了加速组件702的一个示例架构。加速组件702可以被包括在硬件加速平面106中。包括在加速组件702中的组件可以在加速组件702的硬件资源(例如,逻辑块和可编程互连)上实现。

加速组件702包括应用逻辑706、与资源的第一集合相关联的软壳704、以及与资源的第二集合相关联的外壳711。与外壳711相关联的资源对应于在许多不同的应用场景中通常保持相同的与较低级别接口相关的组件。与软壳704相关联的资源可以在至少一些不同的应用场景中保持相同。应用逻辑706可以被进一步概念化为包括应用域(例如,“角色”)。应用域或角色可以表示包括在通过多个加速组件散布的组合服务中的功能的一部分。

应用域托管执行服务特定的任务(例如,用于对文档进行排名、加密数据、压缩数据、促进计算机视觉、促进语音翻译等的功能的一部分)的应用逻辑706。与应用资源相比,与软壳704相关联的资源通常不易改变,并且与和软壳704相关联的资源相比,与外壳711相关联的资源不易改变(但是可以改变(重新配置)加速组件702的任何组件)。

在操作中,应用逻辑706以与软件实现的应用和其下层操作系统资源交互的方式类似的方式与外壳资源和软壳资源进行交互。从应用开发的角度来看,使用公共外壳资源和软壳资源使开发人员无需为每个服务重新创建这些公共组件。

首先参考外壳711,外壳资源包括桥接器708,用于将加速组件702耦合到网络接口控制器(经由nic接口710)以及本地架顶式交换机(经由tor接口712)。桥接器708还包括数据路径,数据路径允许来自nic或tor的流量流入加速组件702中,并且允许来自加速组件702的流量流出到nic或tor。在内部,桥接器708可以由对所接收的分组进行缓冲的各种fifo(714、716)以及将分组路由到其期望的目的地的各种选择器和仲裁逻辑组成。旁路控制组件718在被激活时可以控制桥接器708,使得在不通过加速组件702的进一步处理的情况下,在nic和tor之间传输分组。

存储器控制器720管理加速组件702和本地存储器722(例如,dram存储器)之间的交互。存储器控制器720可以执行作为其服务的一部分的纠错。

主机接口724提供使得加速组件702能够与本地主机组件(未示出)交互的功能。在一个实现中,主机接口724可以使用快速外围组件互连(pcie)结合直接存储器访问(dma)来与本地主机组件交换信息。外壳还可以包括各种其他特征726,例如,时钟信号发生器、状态led、纠错功能等。

转向软壳704,路由器728用于在加速组件702的各种内部组件之间以及加速组件702与外部实体之间(例如,经由传输组件730)路由消息。每个这样的端点都与相应的端口相关联。例如,路由器728被耦合到存储器控制器720、主机接口724、应用逻辑706和传输组件730。

传输组件730制定用于传输到远程实体(例如,其他加速组件)的分组,并从远程实体(例如,其他加速组件)接收分组。当3-端口交换机732被激活时,通过在nic和tor之间以及在nic或tor与和加速组件702相关联的本地端口之间路由分组来接管桥接器708的功能。

诊断记录器734可以将关于由路由器728、传输组件730和3-端口交换机732执行的操作的信息存储在循环缓冲器中。例如,信息可以包括关于分组的起点和目的地ip地址的数据、主机特定的数据、时间戳等。技术人员可以研究信息的日志,以尝试诊断在加速组件702中的故障或次优性能的原因。

类似于加速组件702的多个加速组件可以被包括在硬件加速平面106中。

加速组件可以使用不同的网络拓扑结构来彼此通信(而不是使用公共网络基础结构120进行通信)。在一个方面,加速组件例如以二维环面彼此直接连接。

图8示出了包括分离的可配置域804、806等的加速组件802。配置组件(未示出)可以在不影响其他可配置域的情况下,对每个可配置域进行配置。因此,配置组件可以对一个或多个可配置域进行配置,而其他可配置域基于其相应的配置(不受干扰)执行操作。

图9示出了用于在主机组件902和相关联的(例如,本地链接的)加速组件904之间执行数据传递的功能。例如结合dma存储器传递使用pcie,可以经由主机接口(例如,主机接口724)来传递数据。在操作(1)中,主机逻辑906将待处理的数据放置在主存储器中与主机逻辑906相关联的内核锁定输入缓冲器908中。在操作(2)中,主机逻辑906指示加速组件904检索数据并开始处理数据。然后主机逻辑的线程进入休眠状态,直到其从加速组件904接收到通知事件,或者其继续异步地处理其他数据。在操作(3)中,加速组件904传递来自主机逻辑存储器的数据并将其放置在加速组件输入缓冲器910中。

在操作(4)和(5)中,应用逻辑912从输入缓冲器910检索数据、对其进行处理以生成输出结果、并将输出结果放置在输出缓冲器914中。在操作(6)中,加速组件904将输出缓冲器914的内容复制到输出缓冲器916(在主机逻辑的存储器中)中。在操作(7)中,加速组件904通知主机逻辑906数据准备好以供检索。在操作(8)中,主机逻辑线程唤醒并消耗输出缓冲器916中的数据。主机逻辑906然后可以丢弃输出缓冲器916的内容,这允许加速组件904在下一加载操作中重新使用该内容。

图10示出了主机组件1002的一个示例架构。主机组件1002可以包括一个或多个处理设备1004(例如,一个或多个中央处理单元(cpu))。主机组件1002还可以包括用于存储任何种类的信息,例如,代码、设置、数据等的任何存储资源1006。作为示例但非限制,存储资源1006可以包括任何类型的ram、任何类型的rom、闪存设备、硬盘、光盘等中的任一个。更一般地,任何存储资源均可以使用任何技术来存储信息。此外,任何存储资源均可以提供易失性或非易失性信息保留。此外,任何存储资源均可以表示主机组件1002的固定或可移除组件。在一种情况下,当处理设备1004执行存储在任何存储资源或存储资源的组合中的关联指令时,主机组件1002可以执行与本地租户功能相关联的任何操作。主机组件1002还包括用于与任何存储资源交互的一个或多个驱动机构1008,例如,硬盘驱动机构、光盘驱动机构等。

主机组件1002还包括用于(经由输入设备1012)接收各种输入并且用于(经由输出设备1014)提供各种输出的输入/输出模块1010。一个特定的输出机构可以包括呈现设备1016以及相关联的图形用户界面(gui)1018。主机组件1002还可以包括用于经由一个或多个通信管道1022与其他设备交换数据的一个或多个网络接口1020。一个或多个通信总线1024将上述组件通信地耦合在一起。

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

类似于主机组件1002的多个主机组件可以被包括在软件平面104中。

图11示出了用于管理数据中心中的服务的管理功能1122的示例架构1102。管理功能1122可以包括执行不同的相应功能(其可以以不同的方式物理地实现)的多个子组件。架构1102可以被包括在架构102中。因此,管理功能1122以及其他相关联的组件可以在主机组件的硬件资源上(例如,在软件平面104中)实现和/或在加速组件的硬件资源上(例如,在硬件加速平面106中)实现。主机组件硬件资源可以包括与主机组件1002相关联的任何硬件资源。加速组件硬件资源可以包括与加速组件702相关联的任何硬件资源。

本地确定组件1124例如可以基于存储在数据存储装置1126中的信息来标识架构102内的服务的当前位置。在操作中,位置确定组件1124可以接收对服务的请求。作为响应,如果该地址存在于数据存储装置1126中,则位置确定组件1124返回与服务相关联的地址。地址可以标识硬件加速平面106中托管所请求的服务(或者是所请求的服务的首部)的特定加速组件。

请求处理组件(rhc)1128处理对由租户功能实例做出的服务的请求。例如,租户功能的实例可以对应于在特定本地主机组件上运行的软件程序。该软件程序可以在其执行过程中请求服务。rhc1128通过确定架构102中的适当组件来处理请求,用以提供服务。所考虑的可能的组件包括:本地加速组件(与发起请求的本地主机组件相关联)、远程加速组件、和/或本地主机组件本身(因此本地主机组件在软件中实现服务)。rhc1128基于一个或多个请求处理考虑(诸如,所请求的服务是否属于线速服务)来作出决定。此外,rhc1128可以在执行其功能时与位置确定组件1124交互。

全局服务分配组件(gsac)1130可以在后台和全局模式下操作,基于架构102中的全局条件将服务分配给加速组件(如同rhc1128,而不是处理来自租户功能实例的单独请求)。例如,gsac1130可以响应于影响一个或多个服务的需求变化来调用其分配功能。gsac1130基于一个或多个分配考虑(诸如,与服务相关联的历史需求等)来做出其确定。此外,gsac1130可以在执行其功能中与位置确定组件1124交互。gsac1130的子组件也可以管理多组件服务和/或组合服务。多组件服务是由多个部分组成的服务。多个相应的加速组件执行相应部分。

图12示出了具有管理功能1122的附加组件的一个示例架构。如所描述的,位置确定组件1124基于存储在数据存储装置1126中的信息来标识架构102内的服务的当前位置。在操作中,位置确定组件1124接收对服务的请求。作为响应,如果地址存在于数据存储装置1126内,则其返回服务的地址。地址可以标识实现服务的特定加速组件。

请求处理组件(rhc)1128处理驻留在主机组件上的租户功能对服务的请求。响应于本地主机组件的每个请求,rhc1128确定实现服务的适当组件。例如,rhc1128可以从以下项中选择:本地加速组件(与做出请求的本地主机组件相关联)、远程加速组件、或本地主机组件本身(因此本地主机组件将在软件中实现服务)或其一些组合。rhc1128基于一个或多个请求处理考虑来执行其确定。

在另一方面,通用分配组件(gsac)1130通过将服务全局地分配到架构102内的加速组件(而不是通过主机组件的单独请求)来操作,以满足数据处理系统中的总体预期需求和/或满足其他目标。在执行其功能时,gsac组件1130可以给出提供空闲池信息的数据存储装置1202。空闲池信息标识具有空闲容量来实现一个或多个服务的加速组件。gsac1130也可以接收与其分配决定有关的输入信息。一个这样的输入信息涉及与例如在数据存储装置1204中维护的服务相关联的历史需求信息。

gsac1130和rhc1128可以部分地使用公共逻辑来实现其分配决定,并且公共逻辑可以部分地考虑到类似的分配考虑。此外,rhc1128和gsac1130在执行其相应的操作过程中均与位置确定组件124交互。否则,如上所述,gsac1130在全局上下文中制定其决定,而rhc1128是侧重于满足特定请求的按需组件。

配置组件1206例如通过向加速组件发送配置流来配置加速组件。配置流指定待被“编程”到接收者加速组件中的逻辑(例如,镜像)。配置组件1206可以使用不同的策略来配置加速组件。

故障监测组件1208确定先前配置的加速组件是否已故障。管理功能1122的各个组件可以通过将备用加速组件代替故障的加速组件、重新配置加速组件、部分地重新配置加速组件、重新加载加速组件中的数据等来响应故障通知

如所描述的,可以通过链接来自互操作加速组件组的角色来提供针对服务或其部分的功能。所链接的角色可以以任何各种不同方式在有向图(包括有向非循环图、有向循环图等)中组成,以提供服务功能和/或加速。例如,在某些方面,所链接的角色被组成为管线或环。

图13a-图13d示出了促进部分地重新配置加速组件的一个示例架构1300。首先参考图13a,计算机架构1300包括加速组件1301、配置服务1302、镜像1307和其他组件1308。加速组件1301、配置服务1302、镜像1307和其他组件1308可以被连接到网络(或者是网络的一部分),网络例如是局域网(“lan”)、广域网(“wan”)、甚至互联网。因此,加速组件1301、配置服务1302、镜像1307和其他组件1308以及任何其他连接的计算机系统及其组件可以创建消息相关的数据并通过网络交换消息相关的数据(例如,互联网协议(“ip”)数据报以及利用ip数据报的其他更高层协议(例如,传输控制协议(“tcp”)、超文本传输协议(“http”)、简单邮件传输协议(“smtp”)、简单对象访问协议(soap)等)或者使用其他非数据报协议)。在一个方面,加速组件1301、配置服务1302、镜像1307和其他组件1308被连接到网络基础结构120。

加速组件1301可以包括可编程逻辑块的阵列以及允许逻辑块以不同配置连接在一起(以提供不同的功能(即,不同的角色))的可重配置的互连的层次结果。可以在加速组件1301处加载镜像文件来配置可编程逻辑块并配置互连,以提供期望的功能。镜像1307包括一个或多个镜像(包括镜像1311、1312等)。镜像1307可以位于加速组件1031的网络位置处和/或本地。因此,来自镜像1307的一个或多个镜像文件可以在加速组件1301处被加载来配置加速组件1301,以提供角色1303、角色1304和网络接口1306。

加速组件1301可以被包括在互操作加速组件的一个或多个组中。在互操作组件的每个组中,加速组件1301可以提供角色。角色可以与互操作组件组中其他加速组件处的角色链接在一起,以组成为服务提供硬件加速的图。例如,加速组件1301可以将角色1303提供给一个图并且可以将角色1304提供给另一不同的图。

其他组件1308可以包括其他加速组件(例如,在硬件加速平面106中)和主机组件(例如,在软件平面104中)。网络接口1306促进角色1303和其他组件1308之间以及角色1304和其他组件1308之间的网络通信。

例如,角色1303可以与其他组件1308交换网络流量1313。网络流量1313可以包括源自角色1303处的网络流量或者从其他组件1308中的一个组件路由到其他组件1308中的另一组件(例如,在图中的组件之间)的网络流量。类似地,角色1304可以与其他组件1308交换网络流量1314。网络流量1314可以包括源自角色1304处的网络流量或者从其他组件1308中的一个组件路由到其他组件1308中的另一组件(例如,在图中的组件之间)的网络流量。

配置服务1302可以监测加速组件1301的操作。配置服务1302可以是位于本地链接的主机组件处或者甚至在加速组件1301内部的更高级监测服务(例如,在网络基础结构120上)。配置服务1302可以监测加速组件1301的不正确的行为和/或待被更新的功能。当配置服务1302检测到不正确的行为或者更新适当时,配置服务1302可以发起对加速组件1301的部分的重新配置。因此,当配置服务1302在加速组件1301内部时,加速组件1301可以自发地发起部分的重新配置。

转到图14,图14示出了用于部分地重新配置加速组件的示例方法1400的流程图。将关于计算机架构1300的组件和数据来描述方法1400。

方法1400包括检测在加速组件处提供的改变功能的原因(1401)。例如,配置服务1302可以检测角色1303的操作中的错误1321。备选地,配置服务1303可以检测存在针对角色1303的可用更新。

方法1400包括在加速组件处暂停所提供的功能(1402)。转到图13b,配置服务1302将停止消息1322发送到角色1303。作为响应,角色1303可以停止操作。角色1303的停止操作可以包括停止来自角色1303的数据传输(即,告诉角色1303停止传输)。在适当的情况下,配置服务1302还可以通知角色1303的上游和下游组件(例如,在相同的图中)角色1303正在被停止。在适当的情况下,配置服务1302还可以将停止消息发送到角色1303的上游和下游组件。停止消息指示角色1303的上游和下游组件停止从角色1303接收数据(即,不监听角色1303)。作为响应,角色1303的上游和下游组件可以停止监听角色1303。上游和下游组件还可以利用进程内数据来采取适当的动作(例如,缓冲、丢弃、将nack发送到其他组件等),直到角色1303再次可操作。

方法1400包括通过将针对所提供的功能的镜像写入加速组件来部分地重新配置加速组件(1403)。例如,配置服务1302可以将写入镜像命令1323发送到镜像1307。写入镜像命令1323使得镜像1312从镜像1307被写入到加速组件1301。将镜像1312写入到加速组件1301对可编程逻辑块和可重新配置的互连进行重新编程,以提供角色1303。重新编程可以解决错误1321。备选地,重新编程可以用于更新角色1303。

方法1400包括在部分地重新配置加速组件期间将其他功能维持为可操作(1404)。例如,在角色1303的重新配置期间,角色1304以及外壳或软壳中的功能可以被维持为可操作。例如,网络接口1306可以在角色1303的重新配置期间被维持为可操作。因此,在角色1303的重新配置期间,角色1304可以继续通过网络接口1306在加速组件1301与其他组件1308之间路由网络流量1314。

方法1400包括在部分地重新配置加速组件完成之后,在加速组件处激活所提供的功能(1405)。例如,转到图13c,当角色1303被成功重新加载时,角色1303(重新加载)可以将配置完成消息1324发送到配置服务1302。响应于配置完成消息1324,配置服务1302可以向角色1303(重新加载)发送激活命令1326。响应于激活命令1326,角色1303(重新加载)可以再次处理数据并路由网络流量。在适当的情况下,配置服务1302可以将角色1303(重新加载)与图中的上游和下游组件链接,并通知上游和下游组件角色1303(重新加载)可操作。然后,上游和下游组件可以采取适当的动作来与角色1303(重新加载)进行交互操作。

转到图13d,角色1303(重新加载)可以与其他组件1308交换网络流量1323。网络流量1323可以包括源自角色1303(重新加载)处的网络流量或从其他组件1308中的一个组件路由到其他组件1308中的另一组件(例如,图中的组件之间)的网络流量。

图13a-图13d示出了在角色1304保持可操作的同时重新配置角色1303。在角色1303的重新配置期间,与外壳(例如,网络接口1306)和/或加速组件1301处的软壳相关联的资源也可以保持可操作。其他方面包括具有单个角色的加速组件。在这些其他方面,与外壳和/或软壳相关联的资源使得在角色被重新配置或者甚至在加速组件处加载新角色时,加速组件可以保持可操作。

图15a-图15c示出了促进部分地重新配置加速组件的一个示例架构1500,加速组件具有包括在多个图中的角色。如所描绘的,架构1500包括配置服务1531以及加速组件1501、1502、1503、1504和1506。加速组件1501、1502、1503、1504和1506(例如,fpga)可以被包括在硬件加速平面(例如,硬件加速平面106)中。所描述的加速组件1501、1502、1503、1504和1506的布置是逻辑的。加速组件1501、1502、1503、1504和1506彼此的物理接近度可以变化(例如,相同的服务器、不同的服务器相同的机架、不同的机架等)。

加速组件1501被编程具有角色1512和1517。

加速组件1502、1503、1504和1506中的每一个被分别编程具有指定角色1511、1513、1514和1516。角色1511、1512和1513被链接在一起,以组成图1521。图1521可以为服务提供硬件加速。角色1514、1517和1516被链接在一起,以组成图1522。图1522可以为另一不同的服务提供硬件加速。

相邻(逻辑上)加速组件处的角色的输入和输出可以彼此依赖或者依赖于来自其他组件(例如,由互操作加速组件的不同组组成的主机组件或功能)的输入和输出。例如,角色1512的输入可以依赖于角色1511的输出。类似地,角色1513的输入可以依赖于角色1512的输出。

加速组件1501、1502、1503、1504和1506中的一些或全部可以参与相邻(逻辑上)加速组件和其他组件(例如,主机组件)的单向或双向通信。因此,来自一个加速组件的输入和输出可以依赖于来自另一加速组件的输入和输出,反之亦然。例如,角色1511的输入可以依赖于来自角色1512的输出,并且角色1512的输入可以依赖于来自角色1513的输出。

图可以表示提供加速功能或其上一部分的组合的链接角色的分组。例如,图1521可以为用于提供搜索引擎结果的对文档进行排名服务的一部分提供加速。图1521可以与由互操作加速组件的其他组组成的服务功能和/或由一个或多个主机组件提供的服务功能的其他部分互操作。例如,针对对文档进行排名服务,文档特征提取可以由互操作加速组件的一个组组成,自由形式表达式计算可以由互操作加速组件的另一组组成,并且得分计算可以由互操作加速组件的又一组组成。

图1522可以为对文档进行排名服务的另一部分提供加速,或者可以为一些其他服务(例如,加密、压缩、计算机视觉、语音翻译、机器学习等)提供加速。

配置服务1531可以监测架构1500中描绘的其他组件。在监测期间,配置服务1531可以检测角色1512中的错误1532。备选地,配置服务1531可以检测指示存在可用于角色1512的更新的更新可用消息1537。作为响应,配置服务1531可以将暂停命令1533发送到图1521。暂停命令1533暂停角色1512的操作以及禁止图1521的操作。禁止图1521的操作停止流入图1521以及流出图1521的所有网络流量。暂停命令1533也指示角色1511和1513忽略来自角色1512的任何数据。

转到图13b,当图1521被禁止时,配置服务1531可以将重新配置命令1534发送到加速组件1501,以使得加速组件1501重新配置角色1512的功能。可以重新配置角色1512来纠正错误或故障、进行更新等。重新配置角色1512可以包括在加速组件1501上重新加载新镜像(角色1512或经更新的角色1512的新镜像)。

在角色1512的重新配置期间(例如,在镜像文件的处理期间),在角色1512被重新配置的同时,加速组件1501处的其他角色可以继续按预期操作。例如,角色1517可以在角色1512的重新配置期间继续与图1522中的其他角色交互操作并交换网络流量。因此,在不覆盖针对其他角色的镜像或不覆盖网络接口的情况下,可以将针对一个角色的镜像加载到加速组件1501上。

当角色1512的重新配置完成时,角色1512可以向配置服务1531发送配置完成消息1536。转向图15c,配置服务1531然后可以将角色1512(被重新加载或被更新)重新集成到图1521中,并重新激活图1521。

转到图16,图16示出了部分地重新配置加速组件1601的一个示例。如所描绘的,加速组件1601包括角色1602、1603、1604、和1606以及网络接口1607。角色1602和1606被重新配置。在角色1602和1606被重新配置的同时,角色1603和1604可以通过网络接口1607分别与其他组件交换网络流量1611和1612。

总之,所描述的方面对于在不影响加速组件的其他部分的情况下,重新配置加速组件的一部分是有利的。与加速组件的完全重新配置相比,可以更快地执行加速组件的部分的重新配置。

在一些方面中,系统包括硬件加速平面、软件平面和网络基础结构。硬件加速平面包括多个加速组件(例如,诸如fpga的硬件加速器)的可配置结构。软件平面包括运行软件的多个主机组件(例如,cpu)。网络基础结构由硬件加速平面中的加速组件和软件平面中的主机组件共享。网络基础结构被加速组件用于彼此直接通信。本地链接将加速组件和主机组件连接(例如,在同一台服务器中)。

系统还包括其上存储有表示配置服务的计算机可执行指令的一个或多个计算机存储设备,配置服务被配置为重新配置加速组件。重新配置加速组件包括检测重新配置加速组件的原因(例如,检测错误或检测可用更新)。加速组件被包括在提供服务加速的互操作加速组件组(被包括在硬件加速平面中)中,并向互操作加速组件组提供功能。互操作加速组件组中每个加速组件处的功能被组合在图中,以提供服务加速。除了所提供的功能之外,加速组件还具有其他功能。

重新配置加速组件包括暂停在加速组件处提供的功能。重新配置加速组件包括通过将针对所提供的功能的镜像写入加速组件来部分地重新配置加速组件(例如,以解决错误或安装更新)。

重新配置加速组件包括在部分地重新配置加速组件期间将其他功能维持为可操作。将其他功能维持为可操作可以包括维持其他角色、维持软壳中的功能或维持外壳中的功能。所维持的功能可以包括提供给组合在图中的一个或多个其他加速组件组来加速其他服务的功能。例如,维持功能可以包括在部分地重新配置加速组件期间,在加速组件和至少一个其他组件之间路由网络流量。重新配置加速组件包括在部分地重新配置加速组件完成之后,在加速组件处激活所提供的功能。

在另一方面,执行用于部分地重新配置加速组件的方法。检测改变由加速组件提供的功能的原因(例如,检测错误或检测可用更新)。加速组件处所提供的功能被暂停。通过将针对所提供的功能的镜像写入加速组件来部分地重新配置加速组件(例如,以解决错误或安装更新)。

其他功能在部分地重新配置加速组件期间被保持为可操作。维持其他功能可以包括维持其他角色、维持软壳中的功能或维持外壳中的功能。所维持的功能可以包括提供给组合在图中的一个或多个其他加速组件组以加速其他服务的功能。因此,维持功能可以包括在部分地重新配置加速组件期间,在加速组件和至少一个其他硬件组件之间路由网络流量。在部分地重新配置加速组件完成之后,所提供的功能在加速组件处被激活。

在另一方面,用于在计算机系统处使用的计算机程序产品包括其上存储有计算机可执行指令的一个或多个计算机存储设备,计算机可执行指令响应于在处理器处的执行而使得计算机系统实现用于部分地重新配置加速组件(例如,诸如fpga的硬件加速器)的方法。

计算机程序产品包括计算机可执行指令,计算机可执行指令响应于在处理器处的执行而使得计算机系统检测改变所提供的功能的原因(例如,检测到错误或检测可用更新)。计算机程序产品包括计算机可执行指令,计算机可执行指令响应于在处理器处的执行而使得计算机系统在加速组件处暂停所提供的功能。计算机程序产品包括计算机可执行指令,计算机可执行指令响应于在处理器处的执行而使得计算机系统通过将针对所提供的功能的镜像写入加速组件来部分地重新配置加速组件(例如,以解决错误或安装更新)。

计算机程序产品包括计算机可执行指令,计算机可执行指令响应于在处理器处的执行而使得计算机系统在部分地重新配置加速组件期间将其他功能维持为可操作。维持其他功能可以包括维持其他角色、维持软壳中的功能或维持外壳中的功能。所维持的功能可以包括提供给组合在图中的一个或多个其他加速组件组以加速其他服务的功能。因此,维持功能可以包括在部分地重新配置加速组件期间,在加速组件和至少一个其他组件之间路由网络流量。计算机程序产品包括计算机可执行指令,计算机可执行指令响应于在处理器处的执行而使得计算机系统在部分地重新配置加速组件完成之后,激活所在加速组件处所提供的功能。

所描述的方面可以在不脱离其精神或基本特征的情况下以其他特定形式来实现。所描述的方面在所有情况下均被认为是示例性的而不是限制性的。因此,范围由所附权利要求指示而不是由前面的描述指示。在权利要求的等同的含义和范围内的所有变化都将被包括在其范围内。

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