CN107533496B - 本地恢复加速部件处的功能 - Google Patents

本地恢复加速部件处的功能 Download PDF

Info

Publication number
CN107533496B
CN107533496B CN201680022171.1A CN201680022171A CN107533496B CN 107533496 B CN107533496 B CN 107533496B CN 201680022171 A CN201680022171 A CN 201680022171A CN 107533496 B CN107533496 B CN 107533496B
Authority
CN
China
Prior art keywords
acceleration
role
component
acceleration component
components
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.)
Active
Application number
CN201680022171.1A
Other languages
English (en)
Other versions
CN107533496A (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 CN107533496A publication Critical patent/CN107533496A/zh
Application granted granted Critical
Publication of CN107533496B publication Critical patent/CN107533496B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F11/1441Resetting or repowering
    • 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
    • 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/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/0721Error 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 within a central processing unit [CPU]
    • G06F11/0724Error 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 within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • 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
    • 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/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/273Tester hardware, i.e. output processing circuits
    • G06F11/277Tester hardware, i.e. output processing circuits with comparison between actual response and known fault-free response
    • 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)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

各方面扩展到用于本地恢复加速部件处功能的方法、***和计算机程序产品。当在加速部件(例如,通过本地监视逻辑)自检测到错误时,可以在加速部件处本地恢复角色。本地恢复角色可以包括重置提供角色的加速部件的内部状态(应用逻辑)。与使用外部部件(例如高级服务)来恢复加速部件处的功能和/或重置整个镜像相比,错误的自检测和角色的本地恢复需要更少的资源和更有效率。多个加速部件处的监视逻辑可以并行地在本地重置角色,以恢复图的合法行为。

Description

本地恢复加速部件处的功能
背景技术
计算机***和相关技术影响着社会的许多方面。事实上,计算机***处理信息的能力已经改变了我们生活和工作的方式。计算机***现在通常执行在计算机***出现之前手动执行的大量任务(例如,文字处理、调度、计费等)。最近,计算机***已经彼此耦合并且耦合到其他电子设备,以形成计算机***和其他电子设备可以在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行被分布在多个不同的计算机***和/或多个不同的计算环境中。例如,分布式应用可以在多个不同的计算机***上具有部件。
发明内容
例子扩展到用于本地恢复加速部件处的功能的方法、***和计算机程序产品。检测加速部件处的角色中的错误。通过将角色的实际行为与角色的定义合法行为进行比较来检测错误。加速部件包含在硬件加速平面中的一组互操作加速部件中。所述一组互操作加速部件中的每个加速部件处的角色被链接在一起,以组成为服务提供服务加速的图。
暂停对角色的输入。在加速部件内将重置命令本地发送到角色。从该角色接收指示该角色已被成功重新启动的确认。响应于接收到确认,启用对角色的输入。
提供本“发明内容”以便以简化形式介绍在下面的具体实施方式中进一步描述的概念的选择。本发明内容不旨在识别所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
附加特征和优点将在下面的描述中阐述,并且根据该描述将部分地显而易见,或者可以通过实践来了解。可以通过在随附权利要求书中特别指出的仪器和组合来实现和获得这些特征和优点。根据以下描述和随附权利要求,这些和其他特征和优点将变得更加明显,或者可以根据按以下阐述的实践来了解。
附图说明
为了描述可以获得上述和其他优点和特征的方式,将通过参考附图中示出的具体实现方式来呈现更特定的描述。应当理解,这些附图仅描绘了一些实现方式,因此不被认为是对其范围的限制,将通过使用附图以附加的特异性和细节来描述和解释实现方式,其中:
图1示出了包括软件平面和硬件加速平面的示例性架构。
图2示出了可以在数据中心中使用的包括服务器的示例性架构。
图3示出了示例***器。
图4示出了示例***器。
图5示出了使用软件平面的部件和硬件加速平面的部件实现的示例***。
图6示出了使用软件平面的部件和硬件加速平面的部件实现的示例***。
图7示出了加速部件的示例性架构。
图8示出了包括单独的可配置域的加速部件。
图9示出了用于在本地主机部件和相关联的本地硬件加速部件之间执行数据传输的功能。
图10示出了主机部件的示例性架构。
图11示出了用于管理数据中心内的服务的管理功能的示例性架构。
图12示出了具有图11的管理功能的附加部件的示例性架构。
图13A-图13C示出了促进恢复加速部件处的功能的示例性架构。
图14示出了用于恢复加速部件处的功能的示例性方法的流程图。
图15A-图15C示出了促进并行地恢复多个加速部件处的功能的示例性架构。
图16示出了促进在服务器中恢复加速部件处的功能的示例性架构。
图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)。多个通用计算设备彼此联网,使得多个通用计算机***(或其子集)的组合能力可用于执行更复杂的计算活动。
数据中心提供商面临的持续挑战是提高数据中心内以及由数据中心提供的处理能力和效率。至少部分由于功率限制,继续添加越来越多的通用计算设备是不可行的。计算设备专用化是一个选择。例如,计算设备可以专用于特定规模的工作负载以提供一些效率增益。然而,由于至少两个原因,计算设备专用化是有问题的。首先,数据中心缺乏同质性会增加管理问题,并提供不一致的平台以供应用依赖。此外,数据中心服务发展很快,使得不可编程的硬件功能不切实际。因此,数据中心提供商需要持续改进性能和效率,但不能从通用计算设备获得这些改进。
当在加速部件处(例如,通过本地监视逻辑)自检测到错误时,各方面便于本地恢复加速部件处的角色。本地恢复角色可以包括重置提供角色的加速部件的内部状态(应用逻辑)。在加速部件处,可以暂停对输入数据的处理,重置角色,然后恢复对输入数据的处理。与使用外部部件(例如高级服务)恢复加速部件处的功能和/或重置整个图相比,错误的自检测和角色的本地恢复不太资源密集,并且效率更高。
加速部件处的监视逻辑可以本地地监视加速部件,以获得角色中的错误。一个加速部件处的角色中的错误可能传播到其他部件,这导致图展示不正确的行为。为了检测错误,监视逻辑比较角色的实际行为与角色的定义的合法行为。监视逻辑可以采取本地动作来恢复角色的定义的合法行为(从而也潜在地恢复服务),同时最小化对其他加速部件和其他部件的影响。
在一个方面,一组互操作加速部件中的每个加速部件包括本地监视逻辑。(一组互操作加速部件中的)多个加速部件处的本地监视逻辑并行地采取本地动作,以恢复相应角色的定义的合法行为。因此,即使在多个加速部件处发生错误,也可以在本地校正这些错误以恢复图,而不涉及外部部件(例如,本地链接的主机部件或高级软件服务)。
在另一方面,服务管理器(较高级的软件服务)具有多个加速部件的全局视图,包括所述一组互操作加速部件以及一个或多个其它加速部件。所述一组互操作加速部件中每个加速部件处的角色被链接,以组成为服务提供服务加速的图。服务管理器可以监视每个加速部件处的角色中的错误。这样,服务管理器具有关于图的知识和关于在加速部件本地不可用的、其他加速部件处的角色的知识。服务管理器可以使用这些知识来恢复图和一个或多个角色的合法行为。
因此,服务管理器可以检测加速部件处的角色中的错误。作为响应,服务管理器可以联系本地链接的主机部件或加速部件内的模块以尝试重置该角色。虽然错误是由服务管理器(外部部件)检测到的,但是恢复是在本地执行的。与让服务管理器恢复角色相比,本地恢复角色不太资源密集并且更有效率。
当本地恢复失败时,服务管理器可以尝试恢复角色,例如,通过将角色移动到另一加速部件,通过在加速部件处重新加载角色的镜像等。
在一些方面,加速部件本地链接到主机部件(例如,CPU),例如,当加速部件和主机部件包含于同一服务器中时。在这些方面,主机部件可以检测本地链接的加速部件处的角色中的错误。主机部件可以指示加速部件本地恢复角色。当本地恢复失败时,主机部件可以尝试恢复角色(例如,在加速部件处重新加载角色的镜像),而不涉及外部部件(例如,更高级的软件服务)。与让外部部件(例如更高级的软件服务)恢复角色相比,主机部件恢复本地链接的加速部件处的角色可以需要较少的资源(至少相对于网络带宽资源),并且更有效。当由本地链接的主机部件恢复失败时,外部部件(例如,更高级的软件服务,如服务管理器)可以尝试恢复角色。
另外,当加速部件本地检测到角色的错误时,加速部件可以明确地请求本地链接的主机部件和/或外部部件(例如,更高级的软件服务,如服务管理器)尝试恢复角色(例如,当本地恢复失败时)。对角色恢复的明确请求可以在以其他方式检测到错误之前将错误通知给本地链接的主机部件或外部部件。
因此,各方面可以用于:(a)本地监视加速部件,以获得角色中的错误,(b)本地恢复加速部件处的角色,以及(c)并行地解决多个加速部件处的错误。
各方面可以使用性能处理算法,其能够健壮地重新配置加速部件或重新映射角色(功能),通过在加速部件之间重新映射角色(功能)来从退化的性能和故障中恢复,并将错误报告给管理软件以诊断问题。
通常,数据中心部署包括硬件加速平面和软件平面。硬件加速平面可以包括多个联网的加速部件(例如,FPGA)。软件平面可以包括多个联网的软件实现的主机部件(例如,中央处理单元(CPU))。网络基础设施可以在硬件加速平面和软件平面之间被共享。在某些环境中,软件实现的主机部件被本地链接到相应的加速部件。
图1示出了示例性架构102,其包括软件平面104和硬件加速平面106。软件平面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(例如,快速***部件互连(PCIe)链路)耦合到加速部件110。因此,从加速部件110的角度看,主机部件108是本地主机部件,并且从主机部件108的角度看,加速部件110是本地加速部件。主机部件108和加速部件110的本地链接可以形成服务器的一部分。更一般地,软件平面104中的主机部件可以通过共同被表示为localH-to-localS耦合114的许多单独的链路本地耦合到硬件加速平面106中的加速部件。
因此,主机部件可以直接与任何本地链接的加速部件交互。这样,主机部件可以发起与本地链接的加速部件的通信,以引起多个加速部件之间的进一步通信。例如,主机部件可以发出对服务(或其一部分)的请求,其中服务(或其一部分)的功能在硬件加速平面106中的一个或多个加速部件的组上组成。
因此,主机部件还可以间接地与硬件加速平面106中主机部件未本地链接的其他加速部件进行交互。例如,主机部件108可以经由加速部件110间接地与加速部件116通信。更具体地,加速部件110经由链路118(例如,网络基础设施120)与加速部件116通信。
架构102可以使用各种不同协议中的任何一种来促进通过网络基础设施120在加速部件之间的通信,并且可以使用各种不同协议中的任何一种来促进通过网络基础设施120在主机部件之间的通信。例如,架构102可以使用以太网协议通过网络基础设施120传输互联网协议(IP)分组。在一个实现方式中,服务器中的每个本地主机部件被给予单个物理IP地址。同一服务器中的本地加速部件可以采用相同的IP地址。服务器单元部件可以以不同的方式确定输入分组是否去往本地主机部件,而不是去往本地加速部件。例如,去往本地加速部件的分组可以表示为具有特定端口的UDP分组;在另一方面,主机定义的分组不以这种方式表示。在另一种情况下,可以基于每个分组中的状态标志的值,区分属于硬件加速平面106的分组与属于软件平面104的分组。
硬件加速平面106中的加速部件可用于在数据中心中健壮地加速大规模服务。可以通过使用低延迟互连来将复杂数据中心服务的大部分映射到加速部件(例如,FPGA),用于跨越多个加速部件的计算。加速部件也可以根据需要进行重新配置,以在不同时间提供不同的角色。
图2示出了可以在数据中心中使用的示例性架构202。服务器204、206和208可以包含于数据中心的机架中。服务器204、206和208中的每一个可以耦合到机架顶部(TOR)交换机410。虽然未示出,但其他机架可以具有类似的配置。服务器204还包括主机部件212,其包括CPU 214、216等。主机部件212以及来自服务器206和208的主机部件可以包含于软件平面104中。服务器204还包括加速部件218。加速部件218以及来自服务器206和208的加速部件可以包含于硬件加速平面106中。
加速部件218经由本地链路220(例如,PCIe链路)直接耦合到主机部件212。因此,主机部件212可以将加速部件218视为本地加速部件,并且加速部件218可以将主机部件212视为本地主机部件。加速部件218和主机部件212也通过网络接口控制器422(例如,用于跨网络基础设施120进行通信)间接耦合。服务器204可以将表示角色的镜像加载到加速部件218上。
加速部件218也耦合到TOR交换机210。因此,在架构202中,加速部件218表示主机部件212通过其与数据中心内的其他部件(包括其他主机部件和其他加速部件)交互的路径。架构202允许加速部件218对从TOR交换机410接收到的(和/或向其发送的)分组执行处理(例如,通过执行加密、压缩等),而不会对由主机部件412执行的基于CPU的操作造成负担。
管理功能222用于管理架构202的操作。可以使用不同的控制架构物理地实现管理功能222。例如,在一个控制架构中,管理功能222可以包括耦合到一个或多个全局管理部件的多个本地管理部件。
图3示出了示例***器302。服务器302包括主机部件304,(其包括CPU 606、608等)、加速部件310和本地链路312。加速部件310经由本地链路312(例如,PCIe链路)直接耦合到主机部件304。因此,主机部件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。
硬件加速平面106中的操作以独立于在软件平面104中执行的操作的方式被执行。换句话说,软件平面104中的主机部件不管理硬件加速平面106中的操作。然而,主机部件可以通过发布对由硬件加速平面106托管的服务的请求,来调用硬件加速平面106中的操作。
硬件加速平面106以对请求主机部件透明的方式操作。例如,主机部件504可能“不知道”其请求在硬件加速平面106中是如何处理的,包括服务对应于组成服务的事实。
软件平面104中的通信(例如,对应于操作(1))可以使用与硬件加速平面106中的通信(例如,对应于操作(3)-(6))相同的共同网络基础设施120而发生。操作(2)和(7)可以通过本地链路进行,对应于图1中所示的localH-to-localS耦合114。
图6示出了使用软件平面的部件和硬件加速平面106的部件实现的示例***612。服务612使用与服务512不同的流程结构。更具体地,在操作(1)中,主机部件(未示出)向其本地加速部件602发送请求。在该例子中,本地加速部件602还是服务612的头部部件。在操作(2)中,本地加速部件602然后可以将一个或多个消息转发到多个相应的加速部件。接收到消息的每个加速部件可以与其他加速部件并行地执行组成服务的一部分。(图6可以仅表示服务612的一部分,服务612的其他部分可以在其他硬件加速器处实现)。
通常,加速部件可以包括各种部件中的任何一种,其中一些部件可以跨不同的应用镜像上或多或少地是常见的。一些部件(例如角色)在应用镜像之间是不同的。其他部件(例如,路由器、传输部件、交换机、诊断记录器等)在一些应用镜像之间是相对常见的。这些其他相对常见的部件可以被视为包含于中间抽象层或“软壳”中。其他部件(例如,桥、旁路控制器、网络接口卡、机架顶部接口、缓冲器、存储器控制器、PCIe控制器、FPGA间网络控制器、配置存储器和接口、主机接口、调试和反向通道接口(例如,联合测试动作组(JTAG)接口、内部集成电路(I2C)接口等)、传感器等)在更多数量(和基本上全部)的应用镜像之间是非常常见的。这些进一步非常常见的部件可以被视为包含于(例如,与其他相对常见的部件相比)更大的抽象层或“壳”中。
当FPGA被重新配置有新功能时,可能(但是不能保证)FGPA处的角色(即,专用逻辑)被改变。但是,软壳中的现有功能不太可能改变,并且软壳中的现有功能极不可能改变。因此,软壳中的部件和壳中更大程度的部件为角色提供了通用的接口。这样,壳允许跨不同的加速部件相对容易地转移角色的代码。
转到图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可以结合直接存储器访问(DMA)使用快速***部件互连(PCIe)来与本地主机部件交换信息。外壳还可以包括各种其他特征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进行通信)来彼此通信。在一个方面,加速部件彼此直接连接,例如在二维圆环中。
图8示出了包括单独的可配置域804、805等的加速部件802。配置部件(未示出)可以配置每个可配置域,而不影响其他可配置域。因此,配置部件可以配置一个或多个可配置域,而其他可配置域正基于它们各自的不受干扰的配置执行操作。
图9示出了用于在主机部件902和相关联的加速部件904之间执行数据转移的功能。可以经由主机接口(例如,主机接口724)转移数据,例如使用PCIe结合DMA存储器。在操作(1)中,主机逻辑926将要处理的数据放置到与主机逻辑906相关联的主存储器中的内核固定输入缓冲器908中。在操作(2)中,主机逻辑906指示加速部件904取回数据并开始进行处理。主机逻辑的线程然后进入睡眠,直到其从加速部件904接收到通知事件,或者其继续异步地处理其他数据。在操作(3)中,加速部件904从主机逻辑的存储器转移数据,并将其放在加速部件的输入缓冲器910中。
在操作(4)和(5)中,应用逻辑912从输入缓冲器910取回数据,进行处理以生成输出结果,并将输出结果置于输出缓冲器914中。在操作(6)中,加速部件904将输出缓冲器914的内容复制到主机逻辑的存储器中的输出缓冲器中。在操作(7)中,加速部件904向主机逻辑906通知数据准备好以供其取回。在操作(8)中,主机逻辑线程唤醒并消耗输出缓冲器916中的数据。然后,主机逻辑906可以丢弃输出缓冲器916的内容,这允许加速部件904在下一次加载操作中重新使用输出缓冲器916。
图10示出了主机部件1002的示例性架构。主机部件1002可以包括一个或多个处理设备1004,例如一个或多个中央处理单元(CPU)。主机部件1002还可以包括任何存储资源1006,用于存储任何种类的信息,例如,代码、设置、数据等。例如而非限制,存储资源1006可以包括任何类型的RAM、任何类型的ROM、闪存设备、硬盘、光盘等中的任一种。更一般地,任何存储资源都可以使用用于存储信息的任何技术。此外,任何存储资源都可以提供信息的易失性或非易失性保留。此外,任何存储资源都可以表示主机部件1002的固定或可移除部件。在一种情况下,当处理设备1004执行存储在任何存储资源或存储资源的组合中的相关联指令时,主机部件1002可以执行与本地租户功能相关联的任何操作。主机部件1002还包括用于与诸如硬盘驱动机构、光盘驱动机构等的任何存储资源进行交互的一个或多个驱动机构1008。
关于术语,本文描述的任何存储资源或存储资源的任何组合可以被认为是计算机可读介质。在许多情况下,计算机可读介质表示某种形式的物理和有形实体。术语“计算机可读介质”还包括例如经由物理管道和/或空中或其它无线介质等传输或接收的传播信号。然而,特定术语“计算机可读存储介质”和“计算机可读存储设备”明确地排除了传播信号本身,同时包括所有其他形式的计算机可读介质。
主机部件1002还包括用于(经由输入设备1012)接收各种输入和用于(经由输出设备1014)提供各种输出的输入/输出模块1010。一个特定的输出机制可以包括呈现设备1016和相关联的图形用户界面(GUI)1018。主机部件1002还可以包括一个或多个网络接口1020,用于经由一个或多个通信管道1022与其他设备交换数据。一个或多个通信总线1024将上述部件通信地耦合在一起。
通信管道1022可以以任何方式实现,例如,通过局域网、广域网(例如互联网)、点对点连接等或其任何组合来实现。通信管道1022可以包括由任何协议或协议组合管理的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
类似于主机部件1002的多个主机部件可以包含于软件平面104中。
图11示出了用于管理数据中心内的服务的管理功能1122的示例性架构1102。架构1102可以包含于架构102中。这样,管理功能1122以及其他相关联的部件可以在主机部件的硬件资源上(例如,在软件平面104中)实现和/或在加速部件的硬件资源上(例如,在硬件加速平面106中)实现。主机部件硬件资源可以包括与主机部件1002相关联的任何硬件资源。加速部件硬件资源可以包括与加速部件702相关联的任何硬件资源。
管理功能122可以包括执行不同的相应功能(其可以以不同的方式在物理上实现)的多个子部件。例如,本地确定部件1124可以基于存储在数据存储库1126中的信息来识别架构102内的服务的当前位置。在操作中,位置确定部件1124可以接收对服务的请求。作为响应,如果与该服务相关联的地址存在于数据存储库1126中,则位置确定部件1124返回该地址。该地址可以标识硬件加速平面106中托管所请求服务(是所请求服务的头部)的特定加速部件。
请求处理部件(RHC)1128处理由租户功能实例产生的对服务的请求。例如,租户功能实例可以对应于在特定本地主机部件上运行的软件程序。该软件程序可以在其执行过程中请求服务。RHC 1128通过确定架构102中的适当的部件来提供该服务而处理该请求。考虑的可能部件包括:本地加速部件(与请求起源的本地主机部件相关联);远程加速部件;和/或本地主机部件本身(本地主机部件在其上以软件实现该服务)。RHC 1128基于一个或多个请求处理考虑来做出其确定,例如所请求的服务是否属于线速服务。此外,RHC 1128可以在执行其功能时与位置确定部件1124交互。
全局服务分配部件(GSAC)1130可以在后台且全局模式下操作,基于架构102中的全局条件向加速部件分配服务(而不是像RHC 1128那样处理来自租户功能实例的个体请求)。例如,GSAC 1130可以响应于影响一个或多个服务的需求变化来调用其分配功能。GSAC1130基于一个或多个分配考虑(例如与服务相关联的历史需求等)进行确定。此外,GSAC130可以在执行其功能时与位置确定部件1124进行交互。GSAC 1130的子部件也可以管理多部件和/或组成服务。多部件服务是包括多个部分的服务。多个相应的加速部件执行相应的部分。
图12示出了具有管理功能1122的附加部件的示例性架构。如所描述的,位置确定部件1124基于存储在数据存储库1126中的信息来识别架构102内的服务的当前位置。在操作中,位置确定部件1124接收对服务的请求。作为响应,它返回服务的地址(如果存在于数据存储1126中)。地址可以标识实现该服务的特定加速部件。
请求处理部件(RHC)1128处理驻留在主机部件上的租户功能对服务的请求。响应于本地主机部件的每个请求,RHC 128确定实现该服务的适当部件。例如,RHC 128可以从以下中选择:本地加速部件(与进行请求的本地主机部件相关联),远程加速部件,或本地主机部件本身(本地主机部件将在其上以软件实现服务),或其某种组合。RHC 128基于一个或多个请求处理考虑来执行其确定。
在另一方面,通用分配部件(GSAC)130通过将服务全局地分配给架构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-图13C示出了促进恢复加速部件处的功能的示例性架构1300。首先参考图13A,计算机架构1300包括加速部件1301-1303、其他部件1331和1332以及服务管理器1322。加速部件1301-1303(例如,FPGA)、其他部件1331和1332以及服务管理器1322可以连接到网络(或其一部分),例如,局域网(LAN)、广域网(WAN)、甚至互联网。因此,加速部件1301-1303、其他部件1331和1332和服务管理器1322以及任何其他连接的计算机***及其部件,可以创建消息相关数据,并通过网络交换消息相关数据(例如,互联网协议(IP)数据报和其他使用IP数据报的更高层协议,诸如传输控制协议(TCP),超文本传输协议(HTTP),简单邮件传输协议(SMTP),简单对象访问协议(SOAP)等或使用其他非数据报协议)。
在一个方面,加速部件1301-1303、其他部件1331和1332以及服务管理器1322连接到网络基础设施120。加速部件1301-1303可以包含于硬件加速平面106中。其他部件1331和1332可以包括主机部件和/或其他加速部件。主机部件和/或其他加速部件可以分别包含于软件平面104和/或硬件加速平面106中。
加速部件1301-1303中的每一个可以包括可编程逻辑块阵列和可重配置互连层级,其允许逻辑块以不同的配置连接在一起以提供不同的功能(即,不同的角色)。可以在加速部件1301-1303处接收和加载镜像文件以配置可编程逻辑块并配置互连,以提供期望的功能(即,角色)。
如所描绘的,加速部件1301、1302和1303分别编程有角色1311、1312和1313。角色1311、1312和1313被链接在一起以组成图1333。图1333为服务提供服务加速,服务例如为文档排名、加密、压缩、计算机视觉、语音转换等。所描绘的加速部件1301、1302和1303的布置是逻辑的。加速部件1301、1302和1303相对于彼此的物理接近度可以变化(例如,相同的服务器,不同的服务器,相同的机架,不同的机架等)。
来自(逻辑上)相邻的加速部件处的角色的输入和输出可以依赖于彼此,或者依赖于来自其他部件1331和/或其他部件1332(例如,主机部件或从不同组的互操作加速部件组成的功能)的输入和输出。例如,对角色1312的输入可以依赖于来自角色1311的输出(通信1361)。类似地,对角色1313的输入可以依赖于来自角色1312的输出(通信1362)。
加速部件1301、1302和1303中的一些或全部可以参与与(逻辑上)相邻的加速部件和其他部件(例如,主机部件)的单向或双向通信。因此,来自一个加速部件的输入和输出可以取决于来自另一加速部件的输入和输出,反之亦然。例如,对角色1312的输入可以取决于来自角色1313的输出(通信1363),并且对角色1311的输入可以取决于来自角色1312的输出(通信1364)。
图1333可以为整个服务或服务的一部分提供服务加速。例如,图1333可以用于加速文档排名服务的一部分,文档排名用于提供搜索引擎结果。图1333可以与由其他组的互操作加速部件组成的和/或由一个或多个主机部件提供的服务功能的其他部分互操作。例如,对于文档排名服务,文档特征提取的加速可以由一组互操作加速部件组成,自由表达式计算的加速可以由另一组互操作加速部件组成,并且计分计算的加速可以由另一组互操作加速部件组成。
除了明确描绘的角色1311、1312和1313外,加速部件1301、1302和1303中的一个或多个还可以编程有一个或多个其他角色。一个或多个其他角色可以被配置为提供其他服务功能的一部分,例如涉及加速加密、压缩、计算机视觉、语音转换等。因此,加速部件1301、1302和1303中的一个或多个可以同时被组成到一个或多个不同组的互操作加速部件中,其为不同的服务提供不同的功能。
通常,服务管理器1322被配置为监视网络基础设施120。在适当时,服务管理器1322可以重新配置硬件加速平面106中的加速部件,以恢复服务的服务加速。例如,对于安装更新等,有时由于检测到的错误或故障,加速部件处的角色可能被重新配置。服务管理器1322可以管理重配置协议以有序地重新配置角色。服务管理器1322可以包括结合管理功能232和管理功能1122所描述的任何部件和功能以及用于实现重新配置协议的任何其他适当的部件和功能。
加速部件1302还包括用于本地监视加速部件1302处的角色1302的监视器1304。监视器1304可以监视在角色1312与角色1311和1313之间的通信1361、1362、1363和1364。监视器1304和角色1312可以从相同的镜像文件被加载到加速部件1302上。镜像文件可以定义角色1312的合法行为。
图14示出了用于恢复加速部件处的功能的示例性方法的流程图。将结合架构1300的部件和数据来描述方法1400。
方法1400包括:通过比较加速部件处的角色的实际行为与角色的定义的合法行为来检测角色中的错误,所述加速部件包含于硬件加速平面中的一组互操作加速部件中,在所述一组互操作加速部件中的每个加速部件处的角色被链接到一起,以组成为服务提供服务加速的图(1401)。例如,在监视期间,监视器1304可以在角色1312的操作中检测错误1341。各种不同的状况可能导致错误。如果输入被排队达倒一个指定的时间段而没有输出(即,超时),则监视器1304可以检测到角色1302被挂起。角色1312的输出属性、除以零异常以及其他性能特性也可以指示角色1312的操作中的错误。在一些方面,监视器1304比较被监视的角色1312的行为与角色1312的定义的合法行为,以确定在角色1312的操作中是否存在错误。
方法1400包括暂停对角色的输入(1402)。例如,监视器1304可以向角色1312发送暂停命令1342。暂停命令1342指示角色1312暂停输入数据。转到图13B,通信1361和1363被暂停。然而,通信1362和1364继续将数据输出到角色1312。可以缓冲输入到角色1312的任何数据,直到角色1312的合法行为被恢复。
方法1400包括在加速部件内向角色本地发送重置命令(1403)。例如,监视器1304可以向角色1312发送重置1343。重置1343通过重置对应于角色1312的加速部件1302的内部状态来重置角色1312。可以在重置之前对任何被部分处理的服务数据进行缓存。如果被部分处理的数据无法恢复,则针对该数据的NACK或合成响应可以被传播回发起者。合成响应可以包括NULL结果和/或调试信息。
方法1400包括从角色接收确认,该确认指示角色已被成功重新启动(1404)。例如,监视器1304可以从角色1312接收ACK 1344。当角色1312被重置时,ACK 1344被返回到监视器1304。ACK 1344指示监视器1304重置1343成功。
方法1400包括响应于接收到确认而启用对角色的输入(1405)。例如,监视器1304可以将恢复命令1346发送到角色1312。恢复命令1346指示角色1312重新开始对输入数据的处理。转到图13C,重新开始通信1361和1363。由于角色1312在本地被重置(恢复),所以服务管理器1322可能甚至不知道发生过错误1341。例如,加速部件1301、1302和1303使用的缓冲器可能足以缓存数据,直到角色1312被恢复。这样,服务管理器1322不检测来自服务1300的任何不正确的行为。
然而,如果角色1312在一段时间之后不能本地恢复,则服务管理器1322可以检测图1333和/或更具体地加速部件1302处的不正确行为。例如,图1333可以展现出不正确的行为,例如,非响应性、性能退化、输出不正确的结果、发送幻影分组、延迟尖峰等。作为响应,服务管理器1322可以查询加速部件1301、1302和1303的状态,并确定角色1312的操作中的错误。角色1312的操作中的错误反过来可能导致图1333所呈现的不正确行为。作为响应,服务管理器1322可以通过将(例如,角色1312的)镜像文件重新加载到加速部件1302来尝试恢复角色1312。
在另一方面,服务管理器1322可以在监视器1304检测到错误1341之前检测到错误1341(或相关的、导出的或传播的错误)。作为响应,服务管理器1322可以指示监视器1304本地恢复角色1312(例如,通过发送重置命令1343)。监视器1304可以尝试本地恢复角色1312。如果角色1312在一段时间之后不能被本地恢复,则服务管理器1322可以通过将(例如,角色1312的)镜像文件重新加载到加速部件1302来尝试恢复角色1312。
图15A-图15C示出了促进并行地恢复多个加速部件处的功能的示例性架构1500。首先参考图15A,计算机架构1500包括加速部件1501-1504和服务管理器1322。加速部件1501-1504(例如,FPGA)和服务管理器1322可以连接到网络(或者其一部分),例如局域网(LAN)、广域网(WAN)以及甚至互联网。因此,加速部件1501-1504和服务管理器1322以及任何其他连接的计算机***及其部件(例如,主机部件)可以创建消息相关数据,并通过网络交换消息相关数据(例如,互联网协议(“IP”)数据报和其他使用IP数据报的更高层协议,诸如传输控制协议(TCP),超文本传输协议(HTTP),简单邮件传输协议(SMTP),简单对象访问协议(SOAP)等或使用其他非数据报协议)。
在一个方面,加速部件1501-1504和服务管理器1322连接到网络基础设施120。加速部件1501-1504可以包含于硬件加速平面106中。其他部件可以包括主机部件和/或其他加速部件。主机部件和/或其他加速部件可以分别包含于软件平面104和/或硬件加速平面106中。
加速部件1501-1504中的每一个可以包括可编程逻辑块阵列和可重新配置互连层级,其允许逻辑块以不同的配置连接在一起以提供不同的功能(即,不同的角色)。可以在加速部件1501-1504处接收和加载镜像文件以配置可编程逻辑块并配置互连以提供期望的功能(即,角色)。
如所描绘的,加速部件1501、1502、1503和1504分别编程有角色1511、1512、1513和1514。角色1511、1512、1513和1514可以链接在一起以组成图。图为服务提供服务加速,所述服务例如为文档排名、加密、压缩、计算机视觉、语音转换等。所描绘的加速部件1501、1502、1503和1504的布置是逻辑的。加速部件1501、1502、1503和1504相对于彼此的物理接近度可以变化(例如,相同的服务器,不同的服务器相同的机架,不同的机架等)。
加速部件1501、1502、1503和1504中的一些或全部可以参与与(逻辑上)相邻的加速部件和其他部件(例如,主机部件)的单向或双向通信。因此,来自一个加速部件的输入和输出可以取决于来自另一加速部件的输入和输出,反之亦然。例如,对角色1512的输入可以取决于来自角色1513的输出,并且对角色1511的输入可以取决于来自角色1512的输出。类似地,对角色1512的输入可以取决于来自角色1511的输出,并且对角色1513的输入可以取决于来自角色1512的输出。所描绘的箭头指示对架构1500中的角色的输入和输出。
由链接的角色1511、1512、1513和1514组成的图可以为整个服务或服务的一部分提供服务加速。例如,该图可以用于加速文档排名服务的一部分,文档排名用于提供搜索引擎结果。该图可以与由其他组的互操作加速部件组成的和/或由一个或多个主机部件提供的服务功能的其他部分互操作。例如,对于文档排名服务,文档特征提取的加速可以由一组互操作加速部件组成,自由表达式计算的加速可以由另一组互操作加速部件组成,并且计分计算的加速可以由另一组互操作加速部件组成。
加速部件1501-1504还分别包括监视器1521-1524。监视器1521-1524被配置为分别在本地监视去往和来自角色1511-1514的通信。在图的操作期间,监视器1522可以检测角色1512中的错误1532。作为响应,监视器1522可以向角色1512发送暂停命令1542以暂停对角色1512的输入。并行地(可能与错误1532相关),监视器1523可以检测角色1513中的错误1533。作为响应,监视器1523可以向角色1513发送暂停命令1543以暂停对角色1513的输入。
转到图15B,对角色1512和1513的输入被暂停。监视器1522可以向角色1512发送重置1552以重置角色1512。当重置成功时,角色1512向监视器1522发送ACK 1562。在接收到ACK 1562时,监视器1522将角色1512视为被恢复。监视器1522然后向角色1512发送重新开始命令1572。响应于重新开始命令1572,角色1512重新开始处理输入。
并行地,监视器1523可以向角色1513发送重置1553以重置角色1513。当重置成功时,角色1513向监视器1523发送ACK 1563。在接收到ACK 1563时,监视器1523将角色1513视为被恢复。监视器1523然后向角色1513发送重新开始命令1573。响应于重新开始命令1573,角色1513重新开始处理输入。
转到图15C,对角色1512和角色1513两者的输入被重新开始。
因此,角色1512和1513被并行地在本地重置(恢复)。由于角色1512和1513在本地被重置(恢复),所以服务管理器1322可能不知道甚至发生过错误1532和1533。例如,加速部件1501、1502、1503和1504使用的缓冲器可能足以缓存服务数据,直到角色1512和1513被(重置)恢复为止。这样,服务管理器1322没有检测到来自组成服务的任何不正确的行为。
然而,如果角色1512和1513中的一个或多个在一段时间之后不能被本地恢复,则服务管理器1322可以检测加速部件1502或1503处和/或组成服务处的不正确的行为。作为响应,管理服务1522可以查询状态加速部件1501、1502、1503和1504,并且确定角色1512和/或角色1513的操作中的错误。角色1512和/或1513的操作中的错误反过来可能导致图展现不正确的行为。作为响应,服务管理器1322可以通过将适当的镜像文件分别重新加载到加速部件1502和/或加速部件1503来尝试恢复角色1512和/或角色1513。
在另一方面,在本地监视器检测到之前,服务管理器1322可以检测到错误1532和/或错误1533(或相关的、导出的或传播的错误)。作为响应,服务管理器1322可以(例如,通过发送重置命令)指示监视器1522和/或监视器1523分别在本地恢复角色1512和/或角色1513。作为响应,监视器1522可以尝试本地恢复角色1512和/或监视器1523可以尝试本地恢复角色1513。如果角色1512和/或1513在一段时间之后不能被本地恢复,则服务管理器1322可以通过将适当的镜像文件分别重新加载到加速部件1502和/或加速部件1503来尝试恢复角色1512和/或1513。
图16示出了促进恢复服务器中的加速部件处的功能的示例性架构1600。计算机架构1600包括加速部件1601-1603和服务管理器1322。加速部件1601-1603(例如,FPGA)和服务管理器1322可以连接到网络(或者是其一部分),例如局域网(LAN)、广域网(WAN)以及甚至互联网。因此,加速部件1601-1603和服务管理器1322以及任何其他连接的计算机***及其部件(例如,主机部件)可以创建消息相关数据,并通过网络交换消息相关数据(例如,互联网协议(IP)数据报和其他使用IP数据报的更高层协议,诸如传输控制协议(TCP),超文本传输协议(HTTP),简单邮件传输协议(SMTP),简单对象访问协议(SOAP)等等或使用其他非数据报协议)。
在一个方面,加速部件1601-1603、其他部件和服务管理器1322连接到网络基础设施120。加速部件1601-1603可以包含于硬件加速平面106中。其他部件可以包括主机部件和/或其他加速部件。主机部件和/或其他加速部件可以分别包含于软件平面104和/或硬件加速平面106中。
加速部件1601-1603中的每一个可以包括可编程逻辑块阵列和可重配置互连层级,其允许以不同配置将逻辑块连接在一起以提供不同的功能(即,不同的角色)。可以在加速部件1601-1603处接收和加载镜像文件以配置可编程逻辑块并配置互连以提供期望的功能(即,角色)。
如所描绘的,加速部件1601、1602和1603分别编程有角色1611、1612和1614。角色1611、1612和1613可以链接在一起以组成图。该图为服务提供服务加速,所述服务例如为文档排名、加密、压缩、计算机视觉、语音转换等。所描绘的加速部件1601、1602和1603的布置是逻辑的。加速部件1601、1602和1603相对于彼此的物理接近度可以变化(例如,相同的服务器、不同的服务器相同的机架,不同的机架等)。
加速部件1601、1602和1603中的一些或全部可以参与与(逻辑上)相邻的加速部件和其他部件(例如,主机部件)的单向或双向通信。因此,来自一个加速部件的输入和输出可以取决于来自另一加速部件的输入和输出,反之亦然。
角色1611、1612和1613可以被链接以组成为整个服务或服务的一部分提供服务加速的图。例如,该图可用于加速文档排名服务的一部分,文档排名服务用于提供搜索引擎结果。该图可以与由其他组的互操作加速部件组成的和/或由一个或多个主机部件提供的服务功能的其他部分互操作。例如,对于文档排名服务,文档特征提取的加速可以由一组互操作加速部件组成,自由表达式计算的加速可以由另一组互操作加速部件组成,并且计分计算的加速可以由另一组互操作加速部件组成。
如所描绘的,加速部件1602以及主机部件1632(例如,CPU)包含于服务器1652中。主机部件1632可以与其他主机部件一起被包括在软件平面104中。
在图的操作期间,监视器1622可以检测角色1612中的错误1604。作为响应,监视器1622可以向角色1612发送暂停命令1606以暂停对角色1612的输入。当对角色1612的输入被暂停时,监视器1622可以向角色1612发送重置1607以重置角色1612。在经过一段时间而没有接收到重置1607的ACK之后,监视器1622可以确定角色1612未被重置和/或角色1612不能在加速部件1602内被本地恢复。作为响应,监视器1622可以等待外部部件采取进一步的动作和/或可以将错误1604通知给外部部件。
例如,监视器1622可以经由本地链路1624向主机部件1632发送通知1608。通知1608将错误1604通知给主机部件1632。根据通知1608,主机部件1632可以推断角色1612不能在加速部件1602内被本地恢复。替代地,主机部件1632可以经由本地链路1624独立地监视加速部件1602,并且检测角色1512的错误(例如,与错误1604相关联的相关的、传播的或导出的错误)。
响应于通知1608和/或对角色1612的错误的独立检测,主机部件1632可以指示加速部件1602加载镜像1609(角色1612的镜像)。可以从与主机部件1632相关联的本地存储设备或从网络基础设施120中的位置加载镜像1609。当镜像1609被成功加载时,加速部件1602可以将ACK 1672返回到主机部件1632。ACK 1672向主机部件1632指示镜像1609在加速部件1602处被成功加载。主机部件1632或监视器1622然后可以重新开始对角色1612的输入。
如果主机部件1632没有对通知1608进行响应或在一段时间之后,监视器1622可以经由网络通信向服务管理器1322发送通知1681。通知1681将错误1604通知给服务管理器1322。根据通知1681,服务管理器1322可以推断角色1612不能在加速部件1602内部被本地恢复(并且也可能推断本地主机1632不能恢复角色1612,例如,因为本地主机1632缺少对镜像1609的访问)。替代地,服务管理器1322可以经由网络通信独立地监视加速部件1602,并且检测角色1612的错误(例如,与错误1604相关联的相关的、传播的或导出的错误)。
响应于通知1681和/或对角色1612的错误的独立检测,服务管理器1322可以指示加速部件1602加载镜像1609(角色1612的镜像)。可以从网络基础设施120中的位置加载镜像1609。当镜像1609被成功加载时,加速部件1602可以向服务管理器1322确认。然后,服务管理器1322或监视器1622可以重新开始对角色1612的输入。
在另一方面,本地主机1632可以在监视器1622检测到错误1604(或相关的、导出的或传播的错误)之前检测到错误1604。作为响应,本地主机1632可以(例如,通过发送重置命令1607)指示监视器1622本地恢复角色1612。监视器1622可以尝试在本地恢复角色1612。如果在一段时间之后角色1612不能在本地被恢复,则本地主机1632可以通过将镜像文件1609重新加载到加速部件1502来尝试恢复角色1612。
如果本地主机1632不能访问镜像文件1609,则本地主机1632可以联系服务管理器1322。
因此,角色内的错误可以由加速部件监视器、由本地链接的主机部件或更高级软件服务在本地检测。可以在加速部件处本地尝试角色的重置或其他恢复。如果不成功,则本地链接的主机部件可以尝试恢复角色。如果不成功,则更高级软件服务可以尝试恢复角色。如果不成功,则可以声明加速部件为不合格的。
因此,各方面有助于减轻(并可能消除)将不稳定性引入和/或传播到硬件加速平面和/或软件平面中的可能性。各方面至少部分地解决了以下问题:(a)加速部件(例如FPGA)对于主机表现为是故障(例如,PCIe)设备,引起不稳定的不可屏蔽中断,以及(b)故障或重新配置加速部件(例如,FPGA)通过随机发送可能有效的业务,破坏了其邻居的状态。加速部件(例如,FPGA)对来自具有不正确或不兼容配置的邻居的业务(例如,来自尚未被重新配置的FPGA的“旧”数据)保持健壮。
重新配置(例如,PCIe)设备的解决方案是,在重新配置期间,位于加速部件(例如FPGA)重新配置调用之后的驱动程序首先禁用特定加速部件(例如FPGA)的不可屏蔽中断。
为了防止伪数据破坏相邻的加速部件,正在被重新配置的加速部件(或更高级的软件服务,例如,服务管理器1322)发送“TX停止”消息,指示邻居应该忽略所有进一步的业务直到链接被重新建立为止。此外,消息可以被延迟几个时钟周期,从而在意外的链路故障的情况下,消息可以被检测到并且消息可以被抑制。
类似地,当加速部件由重新配置产生时,它不能相信其邻居未发出伪数据。为了处理这一点,每个加速部件都通过启用“RX停止”开始,自动丢弃邻居的任何消息。一旦加速部件(例如,在图中)已经被配置,更高级别的软件服务(例如,服务管理器1322)就告诉每个服务器释放RX停止。
当数据中心应用由于任何原因而挂起时,服务层级中的较高级服务(例如,聚合结果的机器)可以注意到一组服务器无响应。较高级别的服务可以查询每个服务器来查找其状态。如果一个服务器无响应,则其会经历一系列软重启、硬重启(例如镜像重新加载),然后针对手动服务被标记和可能的更换,直到机器开始正常运行。如果服务器正确地运行,则其会通过有关本地加速部件(例如,一个或多个FPGA)和相关联链路的健康状况的信息来对较高级别的服务进行响应。较高级别的服务可以返回一个向量,该向量具有针对FPGA间(或其他加速部件)连接、DRAM状态(位错误和校准失败)、加速部件应用中的错误、PLL锁定问题、PCIe错误以及发生温度关闭的错误标记。调用还可以返回加速部件的邻居的机器ID,以测试图中的相邻加速部件是否可访问,并且确定它们是较高级别服务期望的机器(以防电缆误接或拔掉)。
基于该信息,较高级别的服务可以更新故障机器列表(包括故障类型),并且基于故障位置和类型来确定在该结构上在何处重新定位各种应用角色。可能的是,重新定位是不必要的,例如当在备用节点上发生故障时,或者当简单地原地重新配置加速部件就足以解决挂起时。然后,较高级别的服务可以对该服务中涉及的每个加速部件进行其重新配置过程,以清除任何损坏的状态,并绘制出任何硬件故障或由于未知原因导致的重复故障。
转到图17A,图17A示出了加速部件1702的示例性架构。通常,图17A中描绘的部件具有与图7中描绘的部件类似的功能。加速部件1702可包含于硬件加速平面106中。包含于加速部件1702中的部件可以在加速部件702的硬件资源(例如,逻辑块和可编程互连)上实现。
加速部件1702包括应用逻辑1706、与第一组资源相关联的软壳1704以及与第二组资源相关联的壳1711。与壳1711相关联的资源对应于较低级别的接口相关部件,其通常在许多不同应用场景中保持相同。与软壳1704相关联的资源可以在至少一些不同的应用场景中保持相同。应用逻辑1706可以被进一步概念化为包括应用域(例如,“角色”)。应用域或角色可以表示包含于在多个加速部件上分散的组成服务中的功能的一部分。
应用域托管角色1781。角色1781包括应用逻辑1706和硬件异常(HEX)支持模块1782。应用逻辑1706执行特定于服务的任务(例如,用于对文档进行排名、加密数据、压缩数据、促进计算机视觉、促进语音转换、机器学习等的功能的一部分)。与应用资源相比,与软壳1704相关联的资源通常较少变化,并且,和与软壳1704相关联的资源相比,与壳1711相关联的资源较少变化(尽管可以改变(重新配置)加速部件1702的任何部件)。
在操作中,应用逻辑1706与壳资源和软壳资源进行交互进行交互的方式类似于软件实现的应用与其底层操作***资源交互的方式。从应用开发的角度来看,使用常见的壳资源和软壳资源可以使开发人员不必为每个服务重新创建这些常见部件。
HEX支持模块1782可以插置于应用逻辑1706和软壳1704之间,并且可以监视应用逻辑1706的退化的性能和/或故障。在退化的性能和/或故障(例如,应用逻辑1706挂起)的情况下,HEX支持模块1782可以生成包括故障转储信息在内的软件异常。
参考壳1711,壳资源包括桥1708,其用于将加速部件1702(经由NIC接口1710)耦合到网络接口控制器以及(经由TOR接口1712)耦合到本地机架顶部交换机。桥1708还包括允许来自NIC或TOR的业务流入加速部件1702以及来自加速部件1702的业务流出到NIC或TOR的数据路径。在内部,桥1708可以包括缓存接收到的分组的各种FIFO(1714、1716)以及将分组路由到其期望目的地的各种选择器和仲裁逻辑。旁路控制部件1718在被激活时可以控制桥1708,从而分组在NIC和TOR之间传输,而不需要加速部件1702的进一步处理。
存储器控制器1720管理加速部件1702和本地存储器1722(例如DRAM存储器)之间的交互。存储器控制器1720可以执行错误校正,作为其服务的一部分。
主机接口1724提供使加速部件1702能够与本地主机部件(未示出)进行交互的功能。在一个实现方式中,主机接口1724可以结合直接存储器访问(DMA)使用快速***部件互连(PCIe)来与本地主机部件交换信息。外壳还可以包括各种其他特征1726,诸如时钟信号生成器、状态LED、错误校正功能,等等。
转向软壳1704,路由器1728用于在加速部件1702的各个内部部件之间以及在加速部件与外部实体之间(例如经由传输部件1730)路由消息。每个这样的端点与相应的端口相关联。例如,路由器1728耦合到存储器控制器1720、主机接口1724、应用逻辑1706和传输部件1730。
传输部件1730制定用于传输到远程实体(例如其他加速部件)的分组,并且从远程实体(例如其他加速部件)接收分组。3端***换机1732在被激活时通过在NIC和TOR之间以及在NIC或TOR和与加速部件1702相关联的本地端口之间路由分组来接管桥1708的功能。
诊断记录器1734可以将关于由路由器1728、传输部件1730和3端***换机1732执行的操作的信息存储在循环缓冲器中。例如,这些信息可以包括关于分组的来源和目的地IP地址的数据、特定于主机的数据、时间戳等。技术人员可以研究信息的日志,以尝试诊断加速部件1702中故障或次优性能的原因。
与加速部件1702类似的多个加速部件可以包含于硬件加速平面106中。
转到图17B,图17B示出了在加速部件1702处理请求的例子。在正常操作期间,从路由器1728接收到的请求被自动转发到应用逻辑1706(例如,特征提取)。例如,解复用器1761可以从路由器1728接收请求1771(例如,文档排名请求)。解复用器1761可以向应用逻辑1706发送请求1771。类似地,响应被转发到路由器1728。例如,复用器1726可以从应用逻辑1706接收响应1773。复用器1726可以将响应转发到路由器1728。当请求到达时,它们的头部被排队到未决请求FIFO 1766中。例如,解复用器1761可以将请求1771的头部1772发送到未决请求FIFO 1766。类似地,当响应离开应用逻辑1706时,头部出队。例如,当响应1773离开应用逻辑1706时,头部1772可以出队。
控制有限状态机(FSM)监视应用逻辑1706中的停止并在适当时采取校正动作。未决请求FIFO 1766跟踪已经进入应用逻辑1706但尚未被完全处理的请求的总数。当发生导致应用逻辑1706“挂起”的错误时,在没有新数据进入或离开应用逻辑1706时以及在未决请求FIFO 1766中的条目数大于零时,停止检测器1764中的停止计数器开始递增。
当停止计数器1764达到可编程阈值(例如,被设置为足够高的值但足够低以便限制软件超时)时,控制FSM 1763进入“挂起”状态。在“挂起”状态下,控制FSM 1763发起一系列操作,用于显示异常并使应用逻辑1706返回到正常操作。当发生“挂起”时,部分请求和/或部分响应可能被卡在路由器1728和应用逻辑1706之间。为了处理请求,监视器放置请求和响应接口以确定部分请求/消息的存在。
在挂起期间,可以执行各种操作。如果请求1771被卡在路由器1728和应用逻辑1706之间,则控制FSM 1763可以向解复用器1761发送排出输入命令,以从路由器1728中排出剩余的请求1771。可以禁用路由器1728的输入和输出端口。异常生成器1767可以从应用逻辑1706收集并保存崩溃状态1768(如果可用)。崩溃状态1768可以包括有限状态机状态和其他诊断,例如,总请求和响应的计数。可以经由分层参考(而不是将所有信号连接到顶层)直接访问有限状态机状态。
然后,控制FSM 1763可以按顺序来处理未决请求FIFO 1766中的每个条目,表示需要异常响应的一组请求。在未决请求FIFO 1766的第一个条目上,异常生成器1767可以检查是否已经向路由器发送部分响应。如果是,则丢弃未决请求FIFO 1766的头部。如果否,则从未决请求FIFO 1766中读取保存的头部(例如,头部1772),并使用该头部来形成新的响应头部。
异常生成器1767然后通过附加页脚来污染响应。例如,异常生成器1767可以通过将页脚1776附加到响应1773来产生污染的响应1777,从而污染响应1773。可选地,如果存在任何崩溃状态(例如,崩溃状态1768),则异常生成器1767也可以将崩溃状态附加到污染响应的顶部。
当未决请求FIFO 1766被排空时,控制FSM 1763尝试对应用逻辑1706进行软重置1778。当软重置1778被清除时,控制FSM 1763重新启用应用逻辑1706和路由器1728之间的输入和输出端口。
在一些方面,***包括硬件加速平面、软件平面和网络基础设施。硬件加速平面包括多个加速部件的可配置结构。多个加速部件包括一组互操作加速部件。所述一组互操作加速部件中的每个加速部件处的角色被链接在一起,以组成为服务提供服务加速的图。
软件平面包括运行软件的多个主机部件。网络基础设施由硬件加速平面中的加速部件和软件平面中的主机部件共享。加速部件使用网络基础设施彼此直接通信。本地链路连接加速部件和主机部件(例如,在同一服务器中)。
一组互操作加速部件中的每个加速部件包括监视器,其可以本地重置加速部件处的角色。本地重置加速部件包括通过比较加速部件处的角色的实际行为与角色的定义的合法行为来检测角色中的错误。本地重置加速部件包括暂停对角色的输入。本地重置加速部件包括向角色发送重置命令。本地重置加速部件包括从角色接收确认。确认指示角色已被成功重新启动。本地重置加速部件包括响应于接收到确认而启用对角色的输入。
不同的加速部件处的监视器可以并行地本地重置角色。这样,图的操作可以在多个加速部件处基本上同时被校正,而更高级别的服务甚至没有意识到错误。
在另一方面,执行用于本地恢复加速部件处的角色的方法。通过比较加速部件处的角色的实际行为与角色的定义的合法行为,检测角色中的错误。加速部件包含于硬件加速平面中的一组互操作加速部件中。所述一组互操作加速部件中的每个加速部件处的角色被链接在一起,以组成为服务提供服务加速的图。
暂停对角色的输入。在加速部件内向角色本地发送重置命令。从角色接收到确认。该确认指示角色已被成功重新启动。响应于接收到确认,启用对角色的输入。
在另一方面,一种在计算机***中使用的计算机程序产品包括其上存储有计算机可执行指令的一个或多个计算机存储设备,所述指令响应于在处理器处执行,使得计算机***实现用于重新配置互连的加速部件当中的加速部件的方法。
计算机程序产品包括计算机可执行指令,其响应于在处理器处执行,使计算机***通过比较加速部件处的角色的实际行为与角色的定义的合法行为来检测角色中的错误。加速部件包含在硬件加速平面中的一组互操作加速部件中。所述一组互操作加速部件中的每个加速部件处的角色被链接在一起,以组成为服务提供服务加速的图。
计算机程序产品包括计算机可执行指令,其响应于在处理器处执行而使计算机***暂停对角色的输入。计算机程序产品包括计算机可执行指令,其响应于在处理器处执行而使计算机***向角色发送重置命令。计算机程序产品包括计算机可执行指令,其响应于在处理器处执行而使计算机***从角色接收确认。该确认指示角色已被成功重新启动。计算机程序产品包括计算机可执行指令,其响应于在处理器处执行而使计算机***响应于接收到确认而启用对角色的输入。
在不背离当前描述的各方面的精神或基本特性的情况下,可以以其它具体形式来实现这些方面。所描述的各方面在所有方面都应被视为说明性而不是限制性的。因此,范围由随附权利要求而不是前面的描述来指示。在权利要求的等同物的含义和范围内的所有变化将被涵盖在其范围内。

Claims (20)

1.一种用于恢复加速部件处的角色的方法,包括:
检测加速部件处的角色中的错误;
暂停对所述角色的输入;
尝试重置所述角色;
确定所述重置对于解决检测到的所述错误失败;
在所述加速部件处加载镜像文件以恢复所述角色;
确定加载所述镜像文件成功地恢复了所述角色;以及
启用对所述角色的输入。
2.根据权利要求1所述的方法,其中所述加速部件包括以下各项中的一项:现场可编程门阵列(FPGA)、图形处理单元(GPU)、专用集成电路(ASIC)、可编程逻辑设备(PLD)、可编程阵列逻辑(PAL)设备、通用阵列逻辑(GAL)设备、或者高度并行处理器阵列(MPPA)设备。
3.根据权利要求1所述的方法,其中在所述加速部件处加载镜像文件以恢复所述角色包括:加载镜像文件以恢复为服务提供服务加速的角色,所述服务选自:文档排名、数据加密、数据压缩、语音转换和计算机视觉。
4.根据权利要求1所述的方法,其中在所述加速部件处加载镜像文件以恢复所述角色包括:在被包括在现场可编程门阵列(FPGA)的可配置结构中的加速部件处加载镜像文件。
5.根据权利要求1所述的方法,其中检测错误包括检测以下各项中的一项:所述角色处的超时、所述角色处的除以零异常、或者来自所述角色的输出中的不适当特性。
6.根据权利要求1所述的方法,其中尝试重置所述角色包括:发送重置所述加速部件的内部状态的命令。
7.根据权利要求1所述的方法,其中检测所述加速部件处的角色中的错误包括:检测以下各项中的一项或多项中的错误:现场可编程门阵列(FPGA)中的可编程逻辑块阵列,或者所述现场可编程门阵列(FPGA)中的可重新配置互连层级。
8.根据权利要求1所述的方法,其中确定加载所述镜像文件成功地恢复了所述角色包括:接收来自所述角色的确认。
9.根据权利要求1所述的方法,其中确定所述重置失败包括:在指定时间段内接收来自所述角色的确认失败。
10.根据权利要求1所述的方法,还包括:在加载所述镜像文件之前,从外部部件接收加载所述镜像文件的指令。
11.一种计算机程序产品,用于实现用于恢复加速部件处的角色的方法,所述计算机程序产品包括其上存储有计算机可执行指令的一个或多个计算机存储设备,所述计算机可执行指令响应于在处理器处执行而使所述方法被执行,包括:
检测所述加速部件处的角色中的错误;
暂停对所述角色的输入;
向所述角色发送重置命令;
确定所述重置对于解决检测到的所述错误失败;
在所述加速部件处重新加载镜像文件以恢复所述角色;
确定在所述加速部件处所述镜像文件被成功加载以恢复所述角色;以及
启用对所述角色的输入。
12.根据权利要求11所述的计算机程序产品,其中响应于执行而检测所述加速部件处的角色中的错误的计算机可执行指令包括响应于执行而检测以下各项中的一项的计算机可执行指令:所述角色处的超时、所述角色处的除以零异常、或者来自所述角色的输出中的不适当特性。
13.根据权利要求11所述的计算机程序产品,其中响应于执行而检测所述加速部件处的角色中的错误的计算机可执行指令包括响应于执行而检测以下各项中的一项或多项中的错误的计算机可执行指令:现场可编程门阵列(FPGA)中的可编程逻辑块阵列或者所述现场可编程门阵列(FPGA)中的可重新配置互连层级。
14.根据权利要求11所述的计算机程序产品,还包括:响应于执行而在重新加载所述镜像文件之前接收来自外部部件的加载所述镜像文件的指令。
15.根据权利要求11所述的计算机程序产品,其中响应于执行而重新加载镜像文件的计算机可执行指令包括:响应于执行而重新加载镜像文件以恢复为服务提供服务加速的角色的计算机可执行指令,所述服务选自:文档排名、数据加密、数据压缩、语音转换和计算机视觉。
16.一种加速部件,所述加速部件包括:
多个可编程逻辑块和至少一个可重新配置互连,所述多个可编程逻辑块来自于可编程逻辑块阵列,所述至少一个可重新配置互连来自于可重新配置互连层级,所述多个可编程逻辑块和所述至少一个可重新配置互连进行互操作以执行被加载到所述加速部件中的指令,以便:
检测所述加速部件处的角色中的错误;
暂停对所述角色的输入;
尝试重置所述角色;
确定所述重置解决检测到的所述错误失败;
通知主机部件在所述加速部件处重新加载镜像文件以恢复所述角色;
接收来自所述角色的确认,所述确认指示所述角色被成功重新启动;以及
启用对所述角色的输入。
17.根据权利要求16所述的加速部件,其中所述加速部件包括现场可编程门阵列(FPGA)。
18.根据权利要求16所述的加速部件,其中所述加速部件被包括在提供服务的图中,所述服务选自文档排名、数据加密、数据压缩、语音转换或计算机视觉。
19.根据权利要求16所述的加速部件,还包括:连接所述加速部件和所述主机部件的本地链路。
20.根据权利要求19所述的加速部件,其中所述多个可编程逻辑块和所述至少一个可重新配置互连进行互操作以检测错误包括:所述多个可编程逻辑块和所述至少一个可重新配置互连进行互操作以检测以下各项中的一项:所述角色处的超时、所述角色处的除以零异常、或者来自所述角色的输出中的不适当特性。
CN201680022171.1A 2015-04-17 2016-04-07 本地恢复加速部件处的功能 Active CN107533496B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562149305P 2015-04-17 2015-04-17
US62/149,305 2015-04-17
US14/752,802 2015-06-26
US14/752,802 US9983938B2 (en) 2015-04-17 2015-06-26 Locally restoring functionality at acceleration components
PCT/US2016/026293 WO2016168035A1 (en) 2015-04-17 2016-04-07 Locally restoring functionality at acceleration components

Publications (2)

Publication Number Publication Date
CN107533496A CN107533496A (zh) 2018-01-02
CN107533496B true CN107533496B (zh) 2020-11-27

Family

ID=55861171

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680022171.1A Active CN107533496B (zh) 2015-04-17 2016-04-07 本地恢复加速部件处的功能

Country Status (4)

Country Link
US (1) US9983938B2 (zh)
EP (1) EP3283961B1 (zh)
CN (1) CN107533496B (zh)
WO (1) WO2016168035A1 (zh)

Families Citing this family (20)

* 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
US10296392B2 (en) 2015-04-17 2019-05-21 Microsoft Technology Licensing, Llc Implementing a multi-component service using plural hardware acceleration components
US10511478B2 (en) 2015-04-17 2019-12-17 Microsoft Technology Licensing, Llc Changing between different roles at acceleration components
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
US10198294B2 (en) 2015-04-17 2019-02-05 Microsoft Licensing Technology, LLC Handling tenant requests in a system that uses hardware acceleration components
US10216555B2 (en) * 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
US11099894B2 (en) 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
US10338135B2 (en) 2016-09-28 2019-07-02 Amazon Technologies, Inc. Extracting debug information from FPGAs in multi-tenant environments
US10282330B2 (en) 2016-09-29 2019-05-07 Amazon Technologies, Inc. Configurable logic platform with multiple reconfigurable regions
US10250572B2 (en) 2016-09-29 2019-04-02 Amazon Technologies, Inc. Logic repository service using encrypted configuration data
US10162921B2 (en) * 2016-09-29 2018-12-25 Amazon Technologies, Inc. Logic repository service
US10642492B2 (en) 2016-09-30 2020-05-05 Amazon Technologies, Inc. Controlling access to previously-stored logic in a reconfigurable logic device
US10423438B2 (en) 2016-09-30 2019-09-24 Amazon Technologies, Inc. Virtual machines controlling separate subsets of programmable hardware
US11115293B2 (en) 2016-11-17 2021-09-07 Amazon Technologies, Inc. Networked programmable logic service provider
US10326696B2 (en) * 2017-01-02 2019-06-18 Microsoft Technology Licensing, Llc Transmission of messages by acceleration components configured to accelerate a service
US10320677B2 (en) 2017-01-02 2019-06-11 Microsoft Technology Licensing, Llc Flow control and congestion management for acceleration components configured to accelerate a service
US10425472B2 (en) 2017-01-17 2019-09-24 Microsoft Technology Licensing, Llc Hardware implemented load balancing
US11243817B2 (en) * 2019-03-29 2022-02-08 Intel Corporation Technologies for data migration between edge accelerators hosted on different edge locations
CN111736915B (zh) * 2020-06-05 2022-07-05 浪潮电子信息产业股份有限公司 云主机实例硬件加速设备的管理方法、装置、设备及介质
US20240012705A1 (en) * 2022-07-07 2024-01-11 Nvidia Corporation Hang recovery and error reporting architecture on fpga-based controller solutions

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7036059B1 (en) * 2001-02-14 2006-04-25 Xilinx, Inc. Techniques for mitigating, detecting and correcting single event upset effects in systems using SRAM-based field programmable gate arrays
US7822958B1 (en) * 2006-03-10 2010-10-26 Altera Corporation Booting mechanism for FPGA-based embedded system
CN102662628A (zh) * 2012-03-23 2012-09-12 山东大学 Rsa加密算法的指令优化处理器
CN104040491A (zh) * 2011-11-22 2014-09-10 索夫特机械公司 微处理器加速的代码优化器
US8943352B1 (en) * 2012-05-07 2015-01-27 Dust Networks, Inc. Low power timing, configuring, and scheduling

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6104211A (en) * 1998-09-11 2000-08-15 Xilinx, Inc. System for preventing radiation failures in programmable logic devices
US7340596B1 (en) * 2000-06-12 2008-03-04 Altera Corporation Embedded processor with watchdog timer for programmable logic
US7444551B1 (en) * 2002-12-16 2008-10-28 Nvidia Corporation Method and apparatus for system status monitoring, testing and restoration
US7020860B1 (en) 2004-03-24 2006-03-28 Xilinx, Inc. Method for monitoring and improving integrated circuit fabrication using FPGAs
US7263631B2 (en) 2004-08-13 2007-08-28 Seakr Engineering, Incorporated Soft error detection and recovery
US7286020B1 (en) 2005-09-21 2007-10-23 Altera Corporation Techniques for monitoring and replacing circuits to maintain high performance
US7389460B1 (en) 2005-11-14 2008-06-17 University Of Central Florida Research Foundation, Inc. Runtime-competitive fault handling for reconfigurable logic devices
US7685464B2 (en) * 2006-11-20 2010-03-23 Honeywell International Inc. Alternating fault tolerant reconfigurable computing architecture
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
US7797587B2 (en) 2007-06-06 2010-09-14 Dell Products L.P. System and method of recovering from failures in a virtual machine
US9866370B2 (en) 2007-12-05 2018-01-09 Itt Manufacturing Enterprises, Llc Configurable ASIC-embedded cryptographic processing engine
BRPI0905956A2 (pt) 2008-02-06 2015-06-30 Capis Sprl Método de determinação de banda de frequência característica de uma doença cardíaca, método para a detecção de doenças cardíacas, dispositivo programável e conjunto de instruções em meio legível por computador
US8117512B2 (en) 2008-02-06 2012-02-14 Westinghouse Electric Company Llc Failure detection and mitigation in logic circuits
US8145894B1 (en) 2008-02-25 2012-03-27 Drc Computer Corporation Reconfiguration of an accelerator module having a programmable logic device
US8453013B1 (en) * 2008-07-09 2013-05-28 Google Inc System-hang recovery mechanisms for distributed systems
US8117497B1 (en) 2008-11-17 2012-02-14 Xilinx, Inc. Method and apparatus for error upset detection and correction
WO2012047735A2 (en) 2010-09-29 2012-04-12 The Regents Of The University Of California In-place resynthesis and remapping techniques for soft error mitigation in fpga
WO2013081629A1 (en) * 2011-12-02 2013-06-06 Empire Technology Development. Llc Integrated circuits as a service
US20130159452A1 (en) 2011-12-06 2013-06-20 Manuel Alejandro Saldana De Fuentes Memory Server Architecture
US9081750B2 (en) 2012-02-29 2015-07-14 Red Hat, Inc. Recovery escalation of cloud deployments
EP2663007A1 (en) 2012-05-08 2013-11-13 Alcatel Lucent A method for transmission of ACK/NACK messages, and a network device therefor
JP6011210B2 (ja) * 2012-09-28 2016-10-19 富士通株式会社 ストレージ制御装置,プログラマブル論理回路の復旧処理方法及び制御プログラム
JP5500282B1 (ja) 2013-02-28 2014-05-21 日本電気株式会社 障害修復装置、障害修復方法、及び、障害修復プログラム
US9477500B2 (en) 2013-03-15 2016-10-25 Avi Networks Managing and controlling a distributed network service platform
US9612900B2 (en) * 2013-03-15 2017-04-04 SEAKR Engineering, Inc. Centralized configuration control of reconfigurable computing devices
US10049423B2 (en) 2013-03-18 2018-08-14 Vmware, Inc. Graphics processing unit failure recovery
US9256500B2 (en) * 2013-04-12 2016-02-09 Oracle International Corporation Physical domain error isolation and recovery in a multi-domain system
US9529882B2 (en) * 2014-06-26 2016-12-27 Amazon Technologies, Inc. Coordinated suspension of replication groups

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7036059B1 (en) * 2001-02-14 2006-04-25 Xilinx, Inc. Techniques for mitigating, detecting and correcting single event upset effects in systems using SRAM-based field programmable gate arrays
US7822958B1 (en) * 2006-03-10 2010-10-26 Altera Corporation Booting mechanism for FPGA-based embedded system
CN104040491A (zh) * 2011-11-22 2014-09-10 索夫特机械公司 微处理器加速的代码优化器
CN102662628A (zh) * 2012-03-23 2012-09-12 山东大学 Rsa加密算法的指令优化处理器
US8943352B1 (en) * 2012-05-07 2015-01-27 Dust Networks, Inc. Low power timing, configuring, and scheduling

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"基于FPGA的图像处理***设计方法研究";庞业勇;《中国优秀硕士学位论文全文数据库 信息科技辑》;20110715;第1-60页 *

Also Published As

Publication number Publication date
EP3283961B1 (en) 2020-06-03
US20160306701A1 (en) 2016-10-20
US9983938B2 (en) 2018-05-29
CN107533496A (zh) 2018-01-02
EP3283961A1 (en) 2018-02-21
WO2016168035A1 (en) 2016-10-20

Similar Documents

Publication Publication Date Title
CN107533496B (zh) 本地恢复加速部件处的功能
EP3283957B1 (en) Reconfiguring an acceleration component among interconnected acceleration components
US10977104B2 (en) Partially reconfiguring acceleration components
US10819657B2 (en) Allocating acceleration component functionality for supporting services
CN107787484B (zh) 通过网络配置加速部件
EP3283954B1 (en) Restoring service acceleration
US10511478B2 (en) Changing between different roles at acceleration components
US10949321B1 (en) Operational management of a device
Guay Dynamic Reconfiguration in Interconnection Networks
JP2024078801A (ja) 通信装置、通信システム、通信制御方法およびプログラム
CN118301087A (zh) 一种报文处理方法及相关设备
Stensland Fault-tolerant routing in SCI networks

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