CN107533493A - 恢复服务加速 - Google Patents

恢复服务加速 Download PDF

Info

Publication number
CN107533493A
CN107533493A CN201680022187.2A CN201680022187A CN107533493A CN 107533493 A CN107533493 A CN 107533493A CN 201680022187 A CN201680022187 A CN 201680022187A CN 107533493 A CN107533493 A CN 107533493A
Authority
CN
China
Prior art keywords
acceleration components
service
role
replacement
acceleration
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201680022187.2A
Other languages
English (en)
Other versions
CN107533493B (zh
Inventor
S·F·海尔
S·V·兰卡
A·M·考尔菲尔德
E·S·钟
A·R·帕特南
D·C·伯格
肖毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN107533493A publication Critical patent/CN107533493A/zh
Application granted granted Critical
Publication of CN107533493B publication Critical patent/CN107533493B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)

Abstract

各方面扩展到用于在加速部件之间重新指派服务功能的方法、系统和计算机程序产品。可以使用重新指派服务功能来为服务恢复服务加速。服务加速可能会由于加速部件处的性能退化而导致不正确地操作。可以将性能退化的加速部件处的角色指派给另一加速部件,以为服务恢复服务加速。

Description

恢复服务加速
背景技术
计算机系统和相关技术影响社会的很多方面。事实上,计算机系统处理信息的能力已经改变了我们生活和工作的方式。计算机系统现在通常执行计算机系统出现之前所被手动执行的大量任务(例如,文字处理、调度、计费等)。最近,计算机系统已经彼此耦合并且耦合到其他电子设备以形成有线和无线计算机网络,其中计算机系统和其他电子设备可以在其上传输电子数据。因此,很多计算任务的性能被分布在多个不同的计算机系统和/或多个不同的计算环境上。例如,分布式应用可以具有在很多不同的计算机系统处的部件。
发明内容
示例扩展到用于恢复服务加速的方法、系统和计算机程序产品。服务管理器监测硬件加速平面中所包括的多个加速部件的操作。多个加速部件包括交互操作的加速部件组和一个或多个其他加速部件。交互操作的加速部件组中的每个加速部件处的角色被链接在一起以组成为服务提供服务加速的图形。
服务管理器检测图形正在不正确地操作。服务管理器检测在交互操作的加速部件组中包括的加速部件处的性能退化引起图形不正确地操作。服务管理器从一个或多个其他加速部件中选择替换加速部件以提供具有退化性能的加速部件的角色。替换加速部件基于替换加速部件的特性来被标识。服务管理器向替换加速部件指派角色以为服务恢复服务加速。通过将角色链接到交互操作的加速部件组中包括的一个或多个加速部件处的角色以重新组成图形来恢复服务加速。
提供本发明内容以便以简化形式介绍概念的选择,这些概念在下面的“具体实施方式”中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于帮助确定所要求保护的主题的范围。
附加的特征和优点将在下面的描述中阐述,并且部分地将从描述中显而易见,或者可以通过实践来了解。特征和优点可以通过所附权利要求中特别指出的仪器和组合来实现和获得。这些和其他特征和优点将从以下描述和所附权利要求中变得更加显而易见,或者可以通过下文中阐述的实践来了解。
附图说明
为了描述可以获得上述和其他优点和特征的方式,将通过参考附图中示出的其具体实施方式来给出更详细的描述。应当理解,这些附图仅描绘了一些实施方式,因此不被认为是对其范围的限制,将通过使用附图以附加的特征和细节来描述和解释实施方式,在附图中:
图1示出了包括软件平面和硬件加速平面的示例架构。
图2示出了可以在数据中心中使用的包括服务器的示例架构。
图3示出了示例服务器。
图4示出了示例服务器。
图5示出使用软件平面的部件和硬件加速平面的部件实现的示例服务。
图6示出了使用软件平面的部件和硬件加速平面的部件实施的示例服务。
图7示出了加速部件的示例架构。
图8示出了包括单独的可配置域的加速部件。
图9示出了用于在本地主机部件与相关联的本地硬件加速部件之间执行数据传输的功能。
图10示出了主机部件的示例架构。
图11示出了用于在数据中心中管理服务的管理功能的示例架构。
图12示出了具有图11的管理功能的附加部件的示例架构。
图13A和13B示出了支持将服务功能从一个加速部件重新指派到另一加速部件以为服务恢复服务加速的架构。
图14示出了用于将服务功能从一个加速部件重新指派到另一加速部件以为服务恢复服务加速的示例方法的流程图。
图15A和15B示出了通过重新路由业务来向替换加速部件重新指派角色的示例。
图16A和16B示出了通过在替换加速部件处加载配置数据以改变角色来向替换加速部件重新指派角色的示例。
图17A和17B示出了通过在替换部件处加载镜像以重写现有角色来向替换加速部件重新指派角色的示例。
具体实施方式
示例扩展到用于恢复服务加速的方法、系统和计算机程序产品。服务监测硬件加速平面中包括的多个加速部件的操作。多个加速部件包括交互操作的加速部件组以及一个或多个其他加速部件。交互加速部件组中的每个加速部件的角色被链接在一起以组成为服务提供服务加速的图形。
服务管理器确定图形正在不正确地操作。服务管理器检测交互操作的加速部件组中所包括的加速部件的性能退化引起图形不正确地操作。服务管理器从一个或多个其他加速部件中选择替换加速部件以提供性能退化的加速部件的角色。替换加速部件基于替换加速部件的特性来被标识。服务管理器向替换加速部件指派角色以为服务恢复服务加速。服务加速通过将角色链接到交互操作的加速部件组中所包括的一个或多个加速部件处的角色以重新组成图形来恢复。
实施方式可以包括或利用包括计算机硬件的专用或通用计算机,诸如例如一个或多个处理器和系统存储器,如下面更详细地讨论的。实施方式还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可以由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,实施方式可以包括至少两种明显不同种类的计算机可读介质:计算机存储介质(设备)和传输介质。
计算机存储介质(设备)包括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)。多个通用计算设备彼此联网,使得多个通用计算机系统(或其子集)的组合功率可以用于执行更复杂的计算活动。
数据中心提供商面临持续的挑战以增加数据中心内部由数据中心提供的处理能力和效率。至少部分由于功率限制,继续添加越来越多的通用计算设备是不可行的。计算设备专门化是一个选项。例如,计算设备可以专用于特定的规模工作负载以提供一些效率增益。然而,由于至少两个原因,计算设备专门化是有问题的。首先,数据中心缺乏均质性会增加管理问题,并且提供不一致的平台以让应用依赖。此外,数据中心服务快速发展,使得非可编程硬件功能不切实际。因此,数据中心提供商需要持续地改进性能和效率,但是不能从通用计算设备获得这些改进。
各方面有助于为服务恢复服务加速。由于加速部件处的性能退化(以及可能的部分或完全故障),服务加速可能会不正确地操作。可以将性能退化的加速部件处的角色(重新)指派给另一加速部件以恢复服务加速。
服务管理器监测硬件加速平面中的多个加速部件。多个加速部件包括交互操作的加速部件组。交互操作的加速部件组中的每个加速部件处的角色被链接在一起(例如,经由数据中心中的网络)以组成为服务提供服务加速的图形。服务管理器可以轮询加速部件的健康状况以及是否存在要(重新)指派给另一加速部件的角色的性能退化。性能退化可以包括纠错码(ECC)错误或其他物理错误、热错误(例如,过热)和其他物理错误。外围部件互连Express(PCIe)应用可以监测在加速部件之间进出的内容以及在其之间交换的数据量。计数器可以检测附接到动态随机存取存储器(DRAM)的错误。
服务管理器检测引起图形不正确地操作(例如,不响应、性能退化、不正确结果、时延尖峰等)的加速部件之一处的性能退化(或部分或完全故障)。服务管理器基于其他可用加速部件的加速部件特性和/或网络特性来选择替换加速部件,以提供性能退化的加速部件的角色。选择替换加速部件可以包括以下中的一个或多个步骤:(i)标识热备用加速部件,(ii)标识已经被编程以提供角色的加速部件,(iii)标识被配置为可以用配置数据重新配置以提供角色的加速部件,或(iv)标识可以被重新编程以提供角色的加速部件。
服务管理器在替换加速部件处(重新)指派角色以为服务恢复服务加速。指派角色可以包括:(i)重新映射到热备用加速部件,(ii)将配置数据加载到已经被编程以提供功能的加速部件,或(iii)重新编程替换加速部件(例如,加载镜像文件)以提供功能。在激活替换加速部件处的角色之前,服务管理器可以通过将中间结果存入队列、将NACK发送到请求服务的部件等来准备激活。
因此,各方面可以用于:(a)在加速部件处检测性能退化(例如,错误、缺陷、事故、故障等),(b)通过使用网络中的备选加速部件来维持服务加速,(c)标识用于替换角色的潜在加速部件,(d)将角色移动到热备用加速部件,(e)将配置数据加载到加速部件中以转变为角色,(f)用角色重新编程加速部件,以及(g)从加速部件故障中恢复。
各方面可以使用性能处理算法来重新配置加速部件或鲁棒地重新映射角色,通过在加速部件之间重新映射角色来从性能退化(和故障)恢复,并且将错误报告给管理软件以诊断问题。
通常,数据中心部署包括硬件加速平面和软件平面。硬件加速平面可以包括多个联网的加速部件(例如,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中的加速部件之间的交互无关。这样,两个或更多个加速部件可以以相对于软件平面104中的主机部件透明的方式通信,在主机部件的指导之外通信,并且甚至在主机部件不“知道”硬件加速平面106中发生的特定交互的情况下通信。
架构102可以使用各种不同协议中的任何一种来支持加速部件之间通过网络基础设施120的通信,并且可以使用各种不同协议中的任何一种来支持主机部件之通过网络基础设施120的的通信。例如,架构102可以使用以太网协议通过网络基础设施120传输互联网协议(IP)数据包。在一个实施方式中,服务器中的每个本地主机部件被赋予单个物理IP地址。同一服务器中的本地加速部件可以采用相同的IP地址。服务器可以以不同的方式确定传入的分组的目的地是本地主机部件还是本地加速部件。例如,目的地为本地加速部件的分组可以被公式化为具有特定端口的UDP分组;另一方面,主机定义的数据包可以不以这种方式来被公式化。在另一示例中,属于加速平面106的分组可以基于每个分组中的状态标志的值来与属于软件平面104的分组区分开。
因此,架构102可以被视为共享相同物理网络通信链路的两个逻辑网络(软件平面104和硬件加速平面106)。与两个逻辑网络相关联的分组可以通过它们各自的业务类别彼此区分开。
在另一方面,架构102中的每个主机部件通过本地链路耦合到硬件加速平面104中的至少一个加速部件。例如,主机部件和加速部件可以布置在一起并且作为单个可服务单元(例如,服务器)被维持在架构102内。在这种布置中,服务器可以被称为“本地”主机部件,以将其与关联于其他服务器的其他主机部件区分开。类似地,服务器的加速部件可以被称为“本地”加速部件,以将它们与关联于其他服务器的其他加速部件区分开。
如架构102所示,主机部件108通过本地链路112(例如,外围部件互连Express(PCIe)链路)耦合到加速部件110。因此,从加速部件110的角度来看,主机部件108是本地主机部件,并且从主机部件108的角度来看,加速部件110是本地加速部件。主机部件108和加速部件110的本地链接可以形成服务器的部分。更一般地,软件平面104中的主机部件可以通过共同表示为localH到localS耦合114的很多单独的链路来被局部耦合到硬件加速平面106中的加速部件。
因此,主机部件可以与任何本地链接的加速部件直接交互。因此,主机部件可以启动与本地链接的加速部件的通信,以引发多个加速部件之间另外的通信。例如,主机部件可以发出对服务(或其部分)的请求,其中服务(或其部分)的功能在硬件加速平面106中的一个或多个加速部件的组上被组成。
因此,主机部件还可以与硬件加速平面106中主机部件没有被本地链接到的其他加速部件间接地交互。例如,主机部件108可以经由加速部件110间接地与加速部件116通信。更具体地,加速部件110经由链路118(例如,网络基础设施120)与加速部件116通信。
硬件加速平面106中的加速部件可以用于在数据中心中鲁棒地加速大规模服务。复杂数据中心服务的大部分可以通过使用低时延互连来映射到加速部件(例如,FPGA),用于跨越多个加速部件的计算。加速部件也可以被适当地重新配置以在不同时间提供不同的服务功能。
图2示出了可以在数据中心中使用的示例架构202。服务器204、206和208可以被包括在数据中心中的机架中。服务器204、206和208中的每个可以被耦合到架顶式(TOR)交换机210。虽然未示出,但是其他机架可以具有相似的配置。服务器204还包括具有CPU 214、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通过其与数据中心中的其他部件(包括其他主机部件和其他加速部件)交互的路径。架构202使得加速部件218能够(例如,通过执行加密、压缩等)对从TOR交换机210接收的(和/或发送到TOR交换机210的)分组执行处理,而不会使由主机部件212执行的基于CPU的操作负担加重。
管理功能232用于管理架构202的操作。管理功能232可以使用不同的控制架构被物理地实施。例如,在一个控制架构中,管理功能232可以包括耦合到一个或多个全局管理部件的多个本地管理部件。
图3示出了示例服务器302。服务器302包括主机部件304、加速部件310和本地链路312,主机部件304包括CPU 306、308等。加速部件310经由本地链路312(例如,PCIe链路)被直接耦合到主机部件304。因此,主机部件304可以将加速部件310视为本地加速部件,并且加速部件310可以将主机部件304视为本地主机部件。主机部件304和加速部件310可以被分别包括在软件平面104和硬件加速平面106中。服务器302将网络接口控制器(NIC)314实施为加速部件310的内部部件。服务器302可以将表示服务功能的镜像加载到加速部件310上。
图4示出了示例服务器402。服务器402包括具有任何数目n个的主机部件的主机部件404至406。主机部件404至406可以被包括在软件平面104中。服务器402包括具有任何数目m个加速部件的加速部件408至410。加速部件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。
硬件加速平面106中的操作以与在软件平面104中执行的操作独立的方式被执行。换言之,软件平面104中的主机部件不管理硬件加速平面106中的操作。然而,主机部件可以通过发出对由硬件加速平面106托管的服务的请求来调用硬件加速平面106中的操作。
硬件加速平面106以对请求主机部件透明的方式操作。例如,主机部件504可能“不知道”如何在硬件加速平面106中处理其请求,包括服务对应于组合服务这一事实。
软件平面104中的通信(例如,对应于操作(1))可以使用与硬件加速平面106中的通信(例如,对应于操作(3)-(6))相同的公共网络基础设施120来进行。操作(2)和(7)可以通过本地链路进行,对应于图1所示的localH到localS耦合114。
图6示出了使用软件平面的部件和硬件加速平面106的部件实施的示例服务612。服务612使用与服务512不同的流程结构。更具体地,在操作(1)中,主机部件(未示出)向其本地加速部件602发送请求。在该示例中,本地加速部件602也是服务612的头部部件。在操作(2)中,本地加速部件602然后可以将一个或多个消息转发到多个相应的加速部件。接收消息的每个加速部件可以与其他加速部件并行地执行组合服务的部分。(图6可以仅表示服务612的部分,服务612的其他部分可以在其他硬件加速器处被实施)。
通常,加速部件可以包括各种部件中的任何一种,其中一些可以跨不同的应用镜像或多或少地通用。一些部件(诸如例如,角色)在应用镜像之间是不同的。其他部件(诸如例如,路由器、传输部件、交换机、诊断记录器等)在一些应用镜像之间可能是比较相对通用的。这些其他相对通用的部件可以被视为被包括在抽象的中间层或“软壳”中。其他部件在更多数目(和基本上全部)应用镜像之间可能是非常to通用的,诸如例如桥接器、旁路控制器、网络接口卡、架顶式接口、缓冲器、存储器控制器、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,壳资源包括用于将加速部件702耦合到网络接口控制器(经由NIC接口710)和本地机架式交换机(经由TOR接口712)的桥接器708。桥接器708还包括使得来自NIC或TOR的业务能够流入加速部件702以及使得来自加速部件702的业务能够流出到NIC或TOR的数据路径。在内部,桥接器708可以由缓冲接收的分组的各种FIFO(714,716)以及将分组路由到其期望的目的地的各种选择器和仲裁逻辑组成。旁路控制部件718在被激活时可以控制桥接器708,使得分组在NIC与TOR之间被传输,而不需要加速部件702的进一步处理。
存储器控制器720支配加速部件702与本地存储器722(诸如DRAM存储器)之间的交互。存储器控制器720可以执行作为其服务的部分的错误校正。
主机接口724提供使得加速部件702能够与本地主机部件(未示出)交互的功能。在一个实施方式中,主机接口724可以使用外围部件互连Express(PCIe)结合直接存储器访问(DMA)来与本地主机部件交换信息。外壳还可以包括各种其他特征726,诸如时钟信号发生器、状态LED、纠错功能等。
转向软壳704,路由器728用于在加速部件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进行通信)。在一个方面,加速部件彼此直接连接,诸如例如在二维环面(torus)中。
图8示出了包括单独的可配置域804、806等的加速部件802。配置部件(未示出)可以配置每个可配置域而不影响其他可配置域。因此,配置部件可以配置一个或多个可配置域,而其他可配置域正在基于它们各自的配置执行操作,这些配置不受干扰。
图9示出了用于在主机部件902与相关联的(例如,本地链接的)加速部件904之间执行数据传输的功能。数据可以经由主机接口(例如,主机接口724)来传送,例如使用PCIe结合DMA存储器传输。在操作(1)中,主机逻辑906将要处理的数据放入与主机逻辑906相关联的主存储器中的内核固定(kernel-pinned)输入缓冲器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还可以包括用于经由一个或多个通信管道(conduit)1022与其他设备交换数据的一个或多个网络接口1020。一个或多个通信总线1024将上述部件通信地耦合在一起。
通信管道1022可以以任何方式来实施,例如由局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信管道1022可以包括由任何协议或协议组合管理的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
类似于主机部件1002的多个主机部件可以被包括在软件平面104中。
图11示出了用于在数据中心管理服务的管理功能1122的示例架构1102。架构1102可以被包括在架构102中。这样,管理功能1122以及其他相关联的部件可以在主机部件的硬件资源上(例如,在软件平面104中)被实施和/或在加速部件的硬件资源上(例如,在硬件加速平面106中)被实施。主机部件硬件资源可以包括与主机部件1002相关联的任何硬件资源。加速部件硬件资源可以包括与加速部件702相关联的任何硬件资源。
管理功能1122可以包括执行不同相应功能(其可以以不同方式被物理地实施)的多个子部件。例如,本地确定部件1124可以基于存储在数据存储器1126中的信息来标识架构102内的服务的当前位置。在操作中,位置确定部件1124可以接收对服务的请求。作为响应,如果与服务相关联的地址存在于数据存储器1126中,位置确定部件1124返回该地址,。地址可以标识硬件加速平面106中托管所请求的服务(或者是所请求的服务的头部)的特定加速部件。
请求处理部件(RHC)1128处理由租户功能的实例发起的对服务的请求。例如,租户功能的实例可以对应于在特定本地主机部件上运行的软件程序。该软件程序可以在其执行过程中请求服务。RHC 1128通过确定架构102中提供服务的适当部件来处理请求。可考虑的部件包括:(与发起请求的本地主机部件相关联的)本地加速部件;远程加速部件;和/或本地主机部件本身(当本地主机部件以软件实施服务时)。RHC 1128基于诸如所请求的服务是否涉及列速率服务等一个或多个请求处理考虑来做出其确定。此外,RHC 1128可以在执行其功能时与位置确定部件1124交互。
全局服务分配部件(GSAC)1130可以在后台和全局模式下操作,以基于架构102中的全局条件向加速部件分配服务(而不是像RHC 1128那样处理来自租户功能的实例的各个请求)。例如,GSAC 1130可以响应于影响一个或多个服务的需求的变化来调用其分配功能。GSAC 1130基于诸如与服务相关联的历史需求等一个或多个分配考虑来做出其确定。此外,GSAC 1130可以在执行其功能时与位置确定部件1124交互。GSAC 1130的子部件也可以管理多部件和/或组合服务。多部件服务是由多个部分组成的服务。多个相应的加速部件执行相应的部分。
图12示出了具有管理功能1122的附加部件的示例架构。如上所述,位置确定部件1124基于存储在数据存储器1126中的信息来标识架构102内的服务的当前位置。在操作中,位置确定部件1124接收对服务的请求。作为响应,如果服务的地址存在于数据存储器1126中,它返回服务的地址。地址可以标识实施服务的特定加速部件。
请求处理部件(RHC)1128通过驻留在主机部件上的租户功能来处理对服务的请求。响应于本地主机部件的每个请求,RHC 1128确定实施服务的适当部件。例如,RHC 1128可以从以下各项中选择:(与做出请求的本地主机部件相关联的)本地加速部件、远程加速部件、或本地主机部件本身(在本地主机部件以软件实施服务时)、或其某种组合。RHC 1128基于一个或多个请求处理考虑来执行其确定。
另一方面,通用分配部件(GSAC)1130通过向架构102内的加速部件全局地分配服务来操作,以满足数据处理系统中的总体预期需求和/或满足其他目标(而不是主机部件的单独请求)。在执行其功能时,GSAC部件1130可以利用提供空闲池信息的数据存储器1202。空闲池信息标识具有能够实施一个或多个服务的空闲容量的加速部件。GSAC 1130还可以接收与其分配决定有关的输入信息。一个这样的输入信息涉及与服务相关联的历史需求信息,例如,如在数据存储器1204中所维持的。
GSAC 1130和RHC 1128可以部分地使用公共逻辑来实施其分配决定,并且该公共逻辑可以部分地考虑到类似的分配考虑。此外,RHC 1128和GSAC 1130在执行它们各自的操作的过程中与位置确定部件124交互。否则,如上所述,GSAC 1130在全球范围内制定其决定,而RHC 1128是主要聚焦于满足特定请求的按需部件。
配置部件1206例如通过向加速部件发送配置流来配置加速部件。配置流规定将要被“编程”镜像到接收者加速部件中的逻辑(例如,镜像)。配置部件1206可以使用不同的策略来配置加速部件。
故障监测部件1208确定先前配置的加速部件是否已经发生故障。管理功能1122的各个部件可以通过将发生故障的加速部件替代为备用加速部件、重新配置加速部件、部分重新配置加速部件、在加速部件中重新加载数据等来响应于故障通知。
如上所述,可以通过链接来自交互操作的加速部件组的角色来提供服务加速。链接的角色可以以任何各种各样的方式在有向图形(包括有向非循环图、有向循环图等)中组成,以提供服务功能和/或加速。例如,在某些方面,链接的角色按流水线或环被组成。
图13A和13B示出了支持将服务功能从一个加速部件重新指派到另一加速部件以为服务恢复服务加速的架构1300。首先参考图13A,计算机架构1300包括加速部件1301-1304、加速部件1306、其他部件1331和1332、以及服务管理器1322。加速部件1301-1304、加速部件1306、其他部件1331和1332、以及服务管理器1322可以连接到网络(或其部分),网络诸如例如,局域网(“LAN”)、广域网(“WAN”)、和甚至因特网。因此,加速部件1301-1304、加速部件1306、其他部件1331和1332、以及服务管理器1322、以及任何其他连接的计算机系统及其部件可以创建消息相关数据并且通过网络交换消息相关数据(例如,因特网协议(“IP”)数据报和利用IP数据报的其他更高层协议,,诸如传输控制协议(“TCP”)超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)、简单对象访问协议(SOAP)等,或者使用其他非数据报协议)。
在一个方面,加速部件1301-1304、加速部件1306、其他部件1331和1332、以及服务管理器1322被连接到网络基础设施120。加速部件1301-1304和加速部件1306可以被包括在硬件加速平面106中。其他部件1331和1332可以包括主机部件和/或其他加速部件。主机部件和/或其他加速部件可以被分别包括在软件平面104和/或硬件加速平面106中。
加速部件1301-1304和1306(例如,FPGA)中的每个可以包括可编程逻辑块的阵列以及使得逻辑块以不同的配置连接在一起以提供不同功能(即,不同角色)的可重新配置互连的层级。镜像文件可以在加速部件1301-1304和1306处被接收和加载,以配置可编程逻辑块并且配置互连以提供期望的功能(即,角色)。
如图所示,加速部件1301、1302、1303和1304分别以角色1311、1312、1313和1314被编程。角色1311、1312、1313和1314被链接在一起以组成图形1333。图形1333为服务(诸如例如文档排序、加密、压缩、计算机视觉、语音翻译等)提供服务加速。所描绘的加速部件1301、1302、1303和1304的布置是逻辑的。加速部件1301、1302、1303和1304相对于彼此的物理接近可以变化(例如,相同的服务器,不同的服务器,相同的机架,不同的机架等)。
来自(逻辑上)相邻的加速部件处的角色的输入和输出可以取决于彼此、或者取决于来自其他部件1331和/或其他部件1332(例如,主机部件或由不同的交互操作的加速部件组组成的功能)的输入和输出。例如,到角色1313的输入可以取决于来自角色1312的输出。类似地,到角色1314的输入可以取决于来自角色1313的输出。
加速部件1301、1302、1303和1304中的一些或全部可以参与与(逻辑上)相邻的加速部件和其他部件(例如,主机部件)的单向或双向通信。因此,来自一个加速部件的输入和输出可以取决于来自另一加速部件的输入和输出,反之亦然。例如,到角色1312的输入可以取决于来自角色1313的输出,并且到角色1311的输入可以取决于来自角色1312的输出。
图形1333可以为整个服务或服务的部分提供加速。例如,图形1333可以用于加速用于提供搜索引擎结果的文档排序服务的部分。图形1333可以与由其他的交互操作的加速部件组组成和/或由一个或多个主机部件提供的服务功能的其他部分交互操作。例如,对于文档排序服务,用于文档特征提取的加速可以由一组交互操作的加速部件组成,用于自由形式表达式计算(例如,所提取的特征的数学重组)的加速可以由另一组交互操作的加速部件组成,并且用于评分计算的加速可以由另一组交互操作的加速部件组成。
除了明确描绘的角色1311、1312、1313和1314之外,加速部件1301、1302、1303、1304和1306中的一个或多个还可以用一个或多个其他角色来编程。一个或多个其他角色可以被配置为提供例如涉及加速加密、压缩、计算机视觉、语音翻译、机器学习等的其他服务功能的部分。因此,加速部件1301、1302、1303、1304和1306中的一个或多个可以同时组成为不同服务提供不同功能的一个或多个不同组的交互操作的加速部件。
通常,服务管理器1322被配置为监测网络基础设施120。在适当时,服务管理器1322可以在硬件加速平面106中的加速部件之间重新指派角色,以为服务恢复服务加速。服务管理器1322可以包括关于管理功能232和管理功能1122所描述的任何功能。
图14示出了用于将服务功能从一个加速部件重新指派到另一加速部件以为服务恢复服务加速的示例方法1400的流程图。方法1400将关于架构1300的部件和数据来描述。
方法1400包括监测硬件加速平面中包括的多个加速部件的操作,多个加速部件包括交互操作的加速部件组和一个或多个其他加速部件,交互操作的加速部件组中的每个加速部件处的角色被链接在一起以组成为服务提供服务加速的图形(1401)。例如,服务管理器1322可以监测硬件加速平面106中的一些或所有加速部件的操作。服务管理器1322可以监测图形1333中包括的加速部件、其他部件1331和1332中包括的加速部件、以及加速部件1306。
为了监测多个加速部件的操作,服务管理器1322可以不时地查询交互操作的加速部件组中的每个加速部件(例如,图形133中的加速部件1301、1302、1303和1304)的状态,并且查询一个或多个其他加速部件中的每个加速部件(例如,其他部件1331和1332中的加速部件、以及加速部件1306)的状态。
在选择针对性能退化的加速部件的替换加速部件时,服务管理器1322可以使用来自监测的知识。
方法1400包括确定图形正在不正确地操作(1402)。例如,通过监测,服务管理器1322可以检测图形1333正表现出不正确的操作1318。不正确的操作1318可以包括例如以下中的一个或多个:无响应、性能退化、输出不正确的结果、发送虚假分组、时延尖峰等。
方法1400包括检测交互操作的加速部件组中包括的加速部件处的性能退化引起图形不正确地操作(1403)。例如,响应于检测到不正确的操作1318,服务管理器1322可以查询加速部件1301、1302、1303和1304的状态。根据查询响应,服务管理器1322可以检测加速部件1303处的性能退化1316(可能指示部分或完全故障)。性能退化1316可以使角色1313不正确地操作或变得不响应,从而引起不正确的操作1318。因此,服务管理器1322可以确定性能退化1316引起不正确的操作1318。
方法1400包括从一个或多个其他加速部件中选择替换加速部件来提供性能退化的加速部件的角色,替换加速部件基于替换加速部件的特性而被标识(1404)。例如,响应于检测到性能退化1316作为不正确的操作的原因1318,服务管理器1322可以查询加速部件1306的状态。根据查询响应,服务管理器1322可以确定加速部件1306能够托管角色1313。根据其他数据(例如,数据存储器1126中的数据、空闲池信息1202中的数据、历史信息1204中的数据等),服务管理器1322还可以知道加速部件1306的其他特性。
服务管理器1322可以选择(其他加速部件中的)加速部件1306作为加速部件1303的替代。服务管理器1322可以基于托管角色1313的能力和其他特性来选择加速部件1306。其他特性可以包括:加速部件1306在硬件加速平面106内的位置(网络接近度)、可用于与加速部件1306通信的带宽、加速部件1306的加速部件类型、在加速部件1306上运行的其他角色、被本地链接到加速部件1306的任何主机部件的能力、数据中心拓扑、定义的规则、网络负载、其他动态网络特性等。
方法1400包括将角色指派给替换加速部件,以通过将角色链接到交互操作的加速部件组中包括的一个或多个加速部件处的角色以重新组合图形来为服务恢复服务加速(1405)。例如,服务管理器1322可以向图形1333发送重新指派命令1317。转向图13B,重新指派命令1317使角色1313从加速部件1303被重新指派到加速部件1306。加速部件1306从图形1333中被移除。
服务管理器1322可以使用加速部件1306处所提供的角色1313来重新组成图形1333。服务管理器1322可以将加速部件1302处的角色1312链接到加速部件1306处的角色1313。类似地,服务管理器1322可以将加速部件1304处的角色1314链接到加速部件1306处的角色1313。重新组成的图形1333为服务恢复服务加速。因此,加速部件1306被配置为与加速部件1302和1304通信,以恢复图形1333的正确操作并且恢复服务加速。
与将新角色重新指派给新的加速部件相关联的资源消耗和时间延迟可以基于新的加速部件的能力和当前配置来改变。在一个方面,替换加速部件已经用角色被编程。服务管理器可以通过将业务重新路由到替换加速部件来利用替换加速部件处的角色。通过重新路由业务来恢复服务使用最少的资源并且具有最小的时间延迟。
图15A和15B示出了通过重新路由业务将角色重新指派给替换加速部件的示例。转到图15A,加速部件1501、1502、1503和1504可以被包括在硬件加速平面106中。加速部件1501、1502、1403和1504可以分别用角色1511、1512、1513和1512被编程。在图15A中,角色1511、1512和1513被链接在一起以组成提供服务加速的图形。
加速部件1501、1502和1503参与与(逻辑上)相邻的加速部件和其他部件的双向通信。例如,加速部件1501与加速部件1502以及其他(例如主机部件)通信。加速部件1502与加速部件1501和加速部件1503通信。加速部件1503与加速部件1502以及其他(例如主机部件)通信。因此,网络业务可以在加速部件1502与加速部件1501和1503中的每个之间被路由。
如果加速部件1502的性能退化(包括部分或完全故障),则服务管理器可以查询其他加速部件以标识新的加速部件来托管角色1512。服务管理器可以确定加速部件1504已经加载有角色1512。因此,服务管理器可以将业务从加速部件1502重新路由到加速部件1504以重新组合图形,并且恢复服务加速。
转到图15B,加速部件1501、1504和1503参与与(逻辑上)相邻的加速部件和其他部件的双向通信。例如,加速部件1501与加速部件1504以及其他(例如主机部件)通信。加速部件1504与加速部件1501和加速部件1503通信。加速部件1503与加速部件1504以及其他(例如主机部件)通信。因此,网络业务可以在加速部件1404与加速部件1501和1503中的每个之间被路由。
加速部件1504在加速部件1502发生故障之前可以被配置为角色1512的热备用。服务管理器可以基于与用于在另一加速部件失效时选择替换加速部件的特性类似的特性,来主动地为各种角色(预先)分配热备用。
在另一方面,加速部件可以被加载包含针对多个不同角色的指令的镜像。配置数据可以被发送到加速部件以在不同角色之间转换。例如,镜像可以加载到加速部件上来为文档排序服务的部分提供加速。镜像可以包括表示用于处理多种语言(诸如例如,英语、法语和德语)的文档的角色的超级指令集合。超级集合可以包括适用于英语、法语和德语的核心指令集合。超级集合还可以包括特定于英语、法语和德语中的每个的其他指令集合。配置数据可以被发送到加速部件以在英语、法语和德语的处理文件之间转换。
处理配置数据以从提供一个角色转换到提供另一角色相对于重新路由业务而言使用较多的资源并且增加了时间延迟,但是相对于加载新的镜像而言使用较少的资源并且具有减少了时间延迟。
图16A和16B示出了通过在替换加速部件处加载配置数据以改变角色来将角色重新指派给替换加速部件的示例。转到图16A,加速部件1601、1602、1603和1604可以被包括在硬件加速平面106中。加速部件1601、1602、1603和1604可以用规定的角色1611、1612、1613和1614被编程。在图16A中,角色1611、1612和1613被链接在一起以组成提供服务加速的图形。
如图所示,加速部件1604包括镜像1620并且提供角色1614。镜像1620包括核心指令1621、角色指令1622和角色指令1624。当使用核心指令1621和角色指令1624时,镜像1620提供角色1514。当使用核心指令1621和角色指令1622时,镜像1620提供角色1612。
如果加速部件1602性能退化(包括部分或完全故障),则服务管理器可以查询其他加速部件以标识用于主机角色1612的新的加速部件。服务管理器可以确定没有其他加速部件已经加载有角色1612。服务管理器还可以确定加速部件1604包含能够响应于配置数据来转换到角色1612的镜像1620。这样,服务管理器可以将配置数据1626发送到加速部件1604,以将镜像1620从提供角色1614转换到提供角色1612。
转到图16B,加速部件1604可以处理配置数据1626以从提供角色1614转换到提供角色1612。在转换到角色1612之后,业务从加速部件1602被重新路由到加速部件1604以重新组成图形,并且恢复服务加速。加速部件1601、1604和1603参与与(逻辑上)相邻的加速部件和其他部件的双向通信。例如,加速部件1601与加速部件1604以及其他(例如主机部件)通信。加速部件1604与加速部件1601和加速部件1603通信。加速部件1603与加速部件1604以及其他(例如主机部件)通信。因此,网络业务可以在加速部件1604与加速部件1601和1603中的每个之间被路由。
在另一方面,新镜像可以在加速部件处被加载以用新角色重写当前角色。例如,新镜像可以在加速部件处被加载,以用提供用于文档排序的加速的角色来重写提供用于加密的加速的角色。相对于重新路由业务和处理配置数据,通过使用新角色重写角色来处理镜像文件使用较多的资源并且增加了时间延迟。
图17A和17B示出了通过在替换部件处加载镜像以重写现有角色来将角色重新指派给替换加速部件的示例。转到图17A,加速部件1701、1702、1703和1704可以被包括在硬件加速平面106中。加速部件1701、1702和1703可以用规定的角色1711、1712、1713被编程。在图17A中,角色1711、1712和1713被链接在一起以组成提供服务加速的图形。在一个方面,加速部件1704未被编程。在另一方面,加速部件1704利用与由图形提供的服务加速无关的一个或多个角色(未示出)被编程。
如果加速部件1702的性能退化(包括部分或完全发生故障),则服务管理器可以查询其他加速部件以标识用于主机角色1712的替换加速部件。服务管理器可以确定没有其他加速部件已经加载有角色1712。服务管理器还可以确定没有加速部件包含能够通过处理配置数据来转换到角色1712的镜像。服务管理器还可以确定加速部件1704具有可以被编程为提供角色1712的可用资源。因此,服务管理器可以向加速部件1704发送配置命令1726。配置命令1726指令加速部件加载镜像1720以提供角色1712。
转到图17B,加速部件1704被编程以提供角色1712。在转换到角色1712之后,业务从加速部件1602被重新路由到加速部件1704以重新组合图形,并且恢复服务加速。加速部件1701、1704和1703参与与(逻辑上)相邻的加速部件和其他部件的双向通信。例如,加速部件1701与加速部件1704和其他(例如主机部件)通信。加速部件1704与加速部件1701和加速部件1703通信。加速部件1703与加速部件1704以及其他(例如主机部件)通信。因此,网络业务可以在加速部件1704和加速部件1701和1703中的每个之间被路由。
在一些方面,服务管理器(例如,较高级别的软件服务)通过使文档排队并且向尝试使用图形用于服务加速的部件发送否定确认来准备图形被打破。
因此,各方面有助于减轻(并且可能消除)在加速部件(例如,FPGA)期间将不稳定性引入和/或传播到硬件加速平面和/或软件平面中的可能性。各方面至少部分地解决了以下问题:加速部件作为主机的发生故障的(例如,PCIe)设备出现,引起不稳定的不可屏蔽中断和降级、故障,或者通过随机发送可能显示有效的业务来重新配置破坏其邻居状态的加速部件。
当加速部件(例如,FPGA)被重新配置时,可以生成不可屏蔽的中断。服务管理器可以屏蔽在加速部件的重新配置期间生成的任何不可屏蔽中断,以防止操作系统(“OS”)故障。
为了防止伪数据破坏邻近加速部件,被重新配置的加速部件(或更高级的软件服务,例如服务管理器1322)发送“TX暂停”消息。TX暂停消息指示邻居加速部件将忽略进一步的业务,直到重新建立链路。此外,消息可以延迟几个时钟周期,使得在意外的链路故障的情况下,可以检测到故障并且可以抑制消息。
类似地,当加速部件出现重新配置时,它不能信任其邻居不发射伪数据。为了处理这一点,每个加速部件都可以启用“RX暂停”,以自动抛出邻居的消息。一旦图形中的所有加速部件已经被配置,则较高级的软件服务(例如,服务管理器1322)可以通知每个新重新配置的服务器释放RX暂停。
当数据中心应用由于任何原因而挂起时,服务层级中的较高级别的服务(诸如聚合结果的机器)可以注意到服务器集合无响应。更高级别的服务可以查询每个服务器来查找其状态。如果服务器无响应,则对其进行以下序列:重新配置、软重启、硬重启、并且然后被标记用于手动服务和可能的替换,直到机器开始正常运行。如果服务器正在正常地运行,则会通过有关其本地加速部件(例如,一个或多个FPGA)和相关联的链路的运行状况的信息来响应较高级别的服务。
较高级别的服务可以返回具有针对FPGA(或其他加速部件)间连接、DRAM状态(位错误和校准失败)、加速部件(例如,FPGA)应用中的错误、PLL锁定问题、PCIe错误、以及温度关闭的发生的错误标志的向量。这也可以返回加速部件(例如,FPGA)的邻居的机器ID,以测试图形中的相邻加速部件(例如,FPGA)是否可访问,以及它们是否是较高级别的服务期望的机器(以防电缆连线错误或拔掉)。
基于该信息,较高级别的服务可以更新故障机器列表(包括故障类型),并且基于故障位置和类型,确定在结构上重新定位各种应用角色的位置。可能的是,重新定位是不必要的,诸如当备用节点上发生故障时,或者当简单地重新配置现场的加速部件(例如,FPGA)足以解决挂起时。然后,较高级别的服务可以通过与该服务相关联的每个加速部件(例如,FPGA)的重新配置过程以清除任何损坏的状态,并且标出未知原因的任何硬件故障或重复故障。
在一些方面,一种系统包括硬件加速平面、软件平面和网络基础设施。硬件加速平面包括多个加速部件的可配置结构。软件平面包括运行软件的多个主机部件。网络基础设施由硬件加速平面中的加速部件和软件平面中的主机部件共享。网络基础设施由加速部件使用以彼此直接通信。本地链路连接(例如,在同一服务器中的)加速部件和主机部件。
该系统还包括具有存储于其上的表示服务管理器的计算机可执行指令的一个或多个计算机存储设备。服务管理器被配置为恢复由数据中心提供的服务加速。恢复服务加速包括监测多个加速部件的操作。多个加速部件包括交互操作的加速部件组和一个或多个其他加速部件。交互操作的加速部件组中的每个加速部件处的角色被链接在一起,以组成为服务提供服务加速的图形。监测多个加速部件的操作可以包括不时地查询交互操作的加速部件组中的每个加速部件的状态,以及询一个或多个其他加速部件中的每个加速部件的状态。
恢复服务加速包括检测图形正在不正确地操作。恢复服务加速包括检测在交互操作的加速部件组中包括的加速部件处的性能退化引起图形不正确地操作。恢复服务加速包括从一个或多个其他加速部件中选择替换加速部件,以提供具有退化性能的加速部件的角色。替换加速部件基于替换加速部件的特性而被标识。恢复服务加速包括将角色指派给替换加速部件,以通过将角色链接到交互操作的加速部件组中包括的一个或多个加速部件处的角色,而重新组成图形来为服务恢复服务加速。
在另一方面,执行一种用于恢复由数据中心提供的服务加速的方法。监测硬件加速平面中包括的多个加速部件。多个加速部件包括交互操作的加速部件组和一个或多个其他加速部件。交互操作的加速部件组中的每个加速部件处的角色被链接在一起,以组成为服务提供服务加速的图形。监测多个加速部件的操作可以包括不时地查询交互操作的加速部件组中的每个加速部件的状态,以及查询一个或多个其他加速部件中的每个加速部件的状态。
确定图形正在不正确地操作。确定不正确的操作的原因是在交互操作的加速部件组中包括的加速部件处的性能退化。从一个或多个其他加速部件中选择替换加速部件,以提供具有退化性能的加速部件的角色。替换加速部件基于替换加速部件的特性而被标识。在替换加速部件处利用角色,以通过将角色链接到交互操作的加速部件组中包括的一个或多个加速部件处的角色,而重新组成图形来为服务恢复服务加速。
在另一方面,一种用于在计算机系统处使用的计算机程序产品包括具有存储于其上的计算机可执行指令的一个或多个计算机存储设备,计算机可执行指令响应于在处理器处的执行而使计算机系统实施用于恢复由数据中心提供的服务加速的方法。
计算机程序产品包括响应于在处理器处的执行而使计算机系统监测包括在硬件加速平面中的多个加速部件的操作的计算机可执行指令。多个加速部件包括交互操作的加速部件组和一个或多个其他加速部件。交互加速部件组中的每个加速部件的角色被链接在一起,以组成为服务提供服务加速的图形。监测多个加速部件的操作可以包括不时地查询交互操作的加速部件组中的每个加速部件的状态,以及查询一个或多个其他加速部件中的每个加速部件的状态。
计算机程序产品包括响应于在处理器处的执行而使计算机系统确定图形正在不正确地操作的计算机可执行指令。计算机程序产品包括响应于在处理器处的执行而使计算机系统检测在交互操作的加速部件组中包括的加速部件处的性能退化引起图形不正确地操作的计算机可执行指令。
计算机程序产品包括响应于在处理器处的执行而使计算机系统从一个或多个其他加速部件中选择替换加速部件以提供具有退化性能的加速部件的角色的计算机可执行指令。替换加速部件基于替换加速部件的特性而被标识。计算机程序产品包括响应于在处理器处的执行而使计算机系统将角色指派给替换加速部件,以通过将角色链接到交互操作的加速部件组中包括的一个或多个加速部件处的角色,而重新组成图形来为服务恢复服务加速的计算机可执行指令。
在不脱离其精神或基本特征的情况下,所描述的方面可以以其他具体形式实施方式。所描述的方面在所有方面都应当被视为是说明性而不是限制性的。因此,范围由所附权利要求而不是前面的描述来指示。在权利要求的等同物的含义和范围内的所有变化将被包括在其范围内。

Claims (10)

1.一种用于恢复由数据中心提供的服务加速的方法,所述方法包括服务管理器:
监测在硬件加速平面中包括的多个加速部件的操作,所述多个加速部件包括交互操作的加速部件组和一个或多个其他加速部件,所述交互操作的加速部件组中的每个加速部件处的角色被链接在一起,以组成为服务提供服务加速的图形;
确定所述图形正在不正确地操作;
检测在一个加速部件处的性能退化引起所述图形不正确地操作,所述加速部件被包括于所述交互操作的加速部件组中;
从所述一个或多个其他加速部件中选择替换加速部件,以提供具有退化性能的所述加速部件的角色,所述替换加速部件基于所述替换加速部件的特性而被标识;以及
向所述替换加速部件指派所述角色,以通过将所述角色链接到被包括在所述交互操作的加速部件组中的、一个或多个加速部件处的角色,而重新组成所述图形,来为所述服务恢复服务加速。
2.根据权利要求1所述的方法,其中选择替换加速部件包括:
基于以下中的一项或多项来选择替换加速部件:所述替换加速部件到所述交互操作的加速部件组的网络接近度、对于所述替换加速部件可用的带宽、所述替换加速部件的部件类型、在所述替换加速部件上运行的其他角色、被本地链接到替换加速部件的任何主机部件的能力、数据中心网络拓扑、定义的规则和网络负载。
3.根据权利要求1所述的方法,其中选择替换加速部件包括:选择已经加载有所述角色的替换加速部件;并且
其中向所述替换加速部件指派所述角色来恢复所述服务包括:将通信从具有退化性能的所述加速部件重新路由到所述替换加速部件。
4.根据权利要求1所述的方法,其中选择替换加速部件包括:选择能够被转换到所述角色而不被重新编程的替换加速部件;并且
其中向所述替换加速部件重新指派所述角色以恢复所述服务包括:
向所述替换加速部件发送配置数据,指示所述替换加速部件转换为提供所述角色;以及
将通信从发生故障的所述加速部件重新路由到所述替换加速部件。
5.根据权利要求1所述的方法,其中向所述替换加速部件指派所述角色以恢复所述服务包括:
向所述替换加速部件发送配置命令,指示所述替换加速部件来加载镜像,以对所述替换加速部件重新编程以提供所述角色;以及
将通信从发生故障的所述加速部件重新路由到所述替换加速部件。
6.根据权利要求1所述的方法,其中多个加速部件包括多个现场可编程门阵列(FPGA)。
7.一种用于实施用于恢复由数据中心提供的服务加速的方法的计算机程序产品,所述计算机程序产品包括一个或多个计算机存储设备,所述一个或多个计算机存储设备具有存储于其上的计算机可执行指令,所述计算机可执行指令响应于在处理器处的执行使所述方法被执行,所述方法包括:
监测硬件加速平面中包括的多个加速部件的操作,所述多个加速部件包括交互操作的加速部件组和一个或多个其他加速部件,所述交互操作的加速部件组中的每个加速部件处的角色被链接在一起,以组成为服务提供服务加速的图形;
检测所述图形正在不正确地操作;
检测在一个加速部件处的性能退化引起所述图形不正确地操作,所述加速部件被包括于所述交互操作的加速部件组中;
从所述一个或多个其他加速部件中选择替换加速部件,以提供具有退化性能的所述加速部件的角色,所述替换加速部件基于所述替换加速部件的特性而被标识;以及
向所述替换加速部件指派所述角色,以通过将一个角色链接到被包括于所述交互操作的加速部件组中的、一个或多个加速部件处的角色,而重新组成所述图形,来为所述服务恢复服务加速。
8.根据权利要求7所述的计算机程序产品,其中响应于执行来选择替换加速部件的计算机可执行指令包括:响应于执行,来选择已经加载有所述角色的替换加速部件的计算机可执行指令;并且
其中响应于执行来向所述替换加速部件指派所述角色来恢复所述服务的计算机可执行指令包括:响应于执行,来将通信从具有退化性能的所述加速部件重新路由到所述替换加速部件的计算机可执行指令。
9.根据权利要求7所述的计算机程序产品,其中响应于执行来选择替换加速部件的计算机可执行指令包括:响应于执行,来选择能够被转换到所述角色而不被重新编程的替换加速部件的计算机可执行指令;并且
其中响应于执行来向所述替换加速部件指派所述角色以恢复所述服务的计算机可执行指令包括:响应于执行来实施以下操作的计算机可执行指令:
向所述替换加速部件发送配置数据,指示所述替换加速部件转换为提供所述角色;以及
将通信从具有退化性能的所述加速部件重新路由到所述替换加速部件。
10.一种系统,所述系统包括:
硬件加速平面,所述硬件加速平面包括多个加速部件的可配置结构;
软件平面,所述软件平面包括可操作以执行软件的多个主机部件;
网络基础设施,所述网络基础设施由所述硬件加速平面中的加速部件和所述软件平面中的主机部件共享,所述网络基础设施由加速部件使用以彼此直接通信;以及
一个或多个计算机存储设备,所述一个或多个计算机存储设备具有存储于其上的表示服务管理器的计算机可执行指令,所述服务管理器被配置为:
监测所述多个加速部件的操作,所述多个加速部件包括交互操作的加速部件组和一个或多个其他加速部件,所述交互操作的加速部件组中的每个加速部件处的角色被链接在一起,以组成为服务提供服务加速的图形;
检测所述图形正在不正确地操作;
检测在一个加速部件处的性能退化引起所述图形不正确地操作,所述加速部件被包括于所述交互操作的加速部件组中;
从所述一个或多个其他加速部件中选择替换加速部件,以提供具有退化性能的所述加速部件的角色,所述替换加速部件基于所述替换加速部件的特性而被标识;以及
向所述替换加速部件指派所述角色,以通过将所述角色链接到被包括在所述交互操作的加速部件组中的、一个或多个加速部件处的角色,而重新组成所述图形,来为所述服务恢复服务加速。
CN201680022187.2A 2015-04-17 2016-04-07 恢复服务加速 Active CN107533493B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562149311P 2015-04-17 2015-04-17
US62/149,311 2015-04-17
US14/752,782 US9652327B2 (en) 2015-04-17 2015-06-26 Restoring service acceleration
US14/752,782 2015-06-26
PCT/US2016/026284 WO2016168028A1 (en) 2015-04-17 2016-04-07 Restoring service acceleration

Publications (2)

Publication Number Publication Date
CN107533493A true CN107533493A (zh) 2018-01-02
CN107533493B CN107533493B (zh) 2020-10-27

Family

ID=55861165

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680022187.2A Active CN107533493B (zh) 2015-04-17 2016-04-07 恢复服务加速

Country Status (5)

Country Link
US (1) US9652327B2 (zh)
EP (1) EP3283954B1 (zh)
CN (1) CN107533493B (zh)
ES (1) ES2813576T3 (zh)
WO (1) WO2016168028A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506701A (zh) * 2020-12-02 2021-03-16 广东电网有限责任公司佛山供电局 一种基于三模lockstep的多处理器芯片错误恢复方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
US10511478B2 (en) 2015-04-17 2019-12-17 Microsoft Technology Licensing, Llc Changing between different roles at acceleration components
US10198294B2 (en) 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
US10296392B2 (en) 2015-04-17 2019-05-21 Microsoft Technology Licensing, Llc Implementing a multi-component service using plural hardware acceleration components
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
CN111090607A (zh) * 2019-11-15 2020-05-01 安徽中骄智能科技有限公司 基于智能框图封装的fpga自动化开发平台

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100083010A1 (en) * 2008-10-01 2010-04-01 International Business Machines Corporation Power Management For Clusters Of Computers
CN103034536A (zh) * 2011-12-12 2013-04-10 微软公司 提高有状态应用的可用性
US20140280499A1 (en) * 2013-03-15 2014-09-18 Avi Networks Distributed network services

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL137296A (en) 2000-07-13 2009-09-01 Nds Ltd Configurable hardware system
JP2005235074A (ja) 2004-02-23 2005-09-02 Fujitsu Ltd Fpgaのソフトエラー補正方法
US7676554B1 (en) * 2005-09-15 2010-03-09 Juniper Networks, Inc. Network acceleration device having persistent in-memory cache
US8024396B2 (en) 2007-04-26 2011-09-20 Microsoft Corporation Distributed behavior controlled execution of modeled applications
US9866370B2 (en) * 2007-12-05 2018-01-09 Itt Manufacturing Enterprises, Llc Configurable ASIC-embedded cryptographic processing engine
CN101276298B (zh) 2008-04-01 2010-06-02 中国科学院计算技术研究所 一种fpga电路故障检测装置
US8434087B2 (en) * 2008-08-29 2013-04-30 International Business Machines Corporation Distributed acceleration devices management for streams processing
US8443062B2 (en) * 2008-10-23 2013-05-14 Microsoft Corporation Quorum based transactionally consistent membership management in distributed storage systems
CN102377778A (zh) 2011-10-17 2012-03-14 中国人民解放军国防科学技术大学 一种基于以太网的远程非对称端通信方法
JP5948806B2 (ja) * 2011-11-16 2016-07-06 富士通株式会社 プラグインカード収容装置及びプラグインカード制御方法
KR101614859B1 (ko) * 2011-12-02 2016-04-22 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 서비스로써의 집적 회로
CN103246582B (zh) 2012-02-07 2017-03-08 鼎桥通信技术有限公司 一种fpga故障检测方法和装置
US9081750B2 (en) * 2012-02-29 2015-07-14 Red Hat, Inc. Recovery escalation of cloud deployments
US20140115151A1 (en) * 2012-10-14 2014-04-24 Empire Technology Development Llc Error-capturing service replacement in datacenter environment for simplified application restructuring
WO2014130005A1 (en) * 2013-02-19 2014-08-28 Empire Technology Development Llc Testing and repair of a hardware accelerator image in a programmable logic circuit
US9378065B2 (en) 2013-03-15 2016-06-28 Advanced Elemental Technologies, Inc. Purposeful computing
CN105579959B (zh) * 2013-09-24 2019-06-07 渥太华大学 硬件加速器虚拟化

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100083010A1 (en) * 2008-10-01 2010-04-01 International Business Machines Corporation Power Management For Clusters Of Computers
CN103034536A (zh) * 2011-12-12 2013-04-10 微软公司 提高有状态应用的可用性
US20140280499A1 (en) * 2013-03-15 2014-09-18 Avi Networks Distributed network services

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506701A (zh) * 2020-12-02 2021-03-16 广东电网有限责任公司佛山供电局 一种基于三模lockstep的多处理器芯片错误恢复方法
CN112506701B (zh) * 2020-12-02 2022-01-21 广东电网有限责任公司佛山供电局 一种基于三模lockstep的多处理器芯片错误恢复方法

Also Published As

Publication number Publication date
CN107533493B (zh) 2020-10-27
ES2813576T3 (es) 2021-03-24
US9652327B2 (en) 2017-05-16
EP3283954A1 (en) 2018-02-21
WO2016168028A1 (en) 2016-10-20
EP3283954B1 (en) 2020-06-10
US20160306700A1 (en) 2016-10-20

Similar Documents

Publication Publication Date Title
US10977104B2 (en) Partially reconfiguring acceleration components
EP3283957B1 (en) Reconfiguring an acceleration component among interconnected acceleration components
CN107533493A (zh) 恢复服务加速
US10819657B2 (en) Allocating acceleration component functionality for supporting services
CN107787484B (zh) 通过网络配置加速部件
US9983938B2 (en) Locally restoring functionality at acceleration components
CN107534582B (zh) 用于在数据中心中使用的方法、系统和计算机可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant