CN107534581A - 重新配置相互连接的加速部件中间的加速部件 - Google Patents
重新配置相互连接的加速部件中间的加速部件 Download PDFInfo
- Publication number
- CN107534581A CN107534581A CN201680022186.8A CN201680022186A CN107534581A CN 107534581 A CN107534581 A CN 107534581A CN 201680022186 A CN201680022186 A CN 201680022186A CN 107534581 A CN107534581 A CN 107534581A
- Authority
- CN
- China
- Prior art keywords
- acceleration components
- adjacent
- acceleration
- role
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/0816—Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8023—Two dimensional arrays, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
Abstract
本发明扩展到用于重新配置相互连接的加速部件中间的加速部件的方法、系统和计算机程序产品。本发明的各方面促进使用高级软件服务重新配置相互连接的加速部件中间的加速部件。管理器或者控制器通过向一个或多个相邻加速部件发送消息指令一个或多个相邻加速部件停止接受来自加速部件的通信来隔离加速部件。管理器或控制器可以然后关闭加速部件处的应用层用于至少部分重新配置并且关闭输入/输出(I/O)部分。在重新配置完成之后,加速部件与一个或多个相邻加速部件之间的通信可以恢复。
Description
背景技术
计算机系统和相关技术影响社会的许多方面。实际上,计算机系统的处理信息的能力已经转变我们生活和工作的方式。计算机系统现在常常执行在计算机系统被手动地执行的到来之前的任务(例如,文字处理、调度、会计等)的主机。最近,计算机系统已经耦合到彼此和耦合到其他电子设备以形成有线和无线计算机网络二者,计算机系统和其他电子设备可以通过有线和无线计算机网络传送电子数据。因此,许多计算任务的性能跨若干不同的计算机系统和/或若干不同的计算环境分布。例如,分布式应用可以具有在若干不同计算机系统处的部件。
发明内容
示例扩展到用于重新配置相互连接的加速部件中间的加速部件的方法、系统和计算机程序产品。基于以下一项或多项处的所检测的条件确定在加速部件处对角色进行重新配置是适当的:加速部件和角色。加速部件被包括在硬件加速平面中的一组互操作加速部件中。该组互操作加速部件中的每个加速部件处的角色被链接在一起以组成图形,该图形提供针对服务的服务加速。
加速部件与一组互操作加速部件中的相邻加速部件隔离。加速部件通过将停止命令发送到加速部件的一个或多个相邻加速部件而被隔离。停止命令指令一个或多个相邻加速部件以忽略来自加速部件的通信。从一个或多个相邻加速部件中的每一个接收相邻加速部件被停止的指示。
在加速部件处对角色进行重新配置。在重新配置之后,激活命令被发送到加速部件的一个或多个相邻加速部件。激活命令指令一个或多个相邻加速部件接受来自加速部件的通信。从一个或多个相邻加速部件中的每一个接收指示相邻加速部件被激活的指示。
本发明内容被提供以以简化的形式引入在下面的具体实施例中被进一步描述的的概念的选择。本发明内容不旨在标识要求保护的主题的关键特征或基本特征,其也不旨在被用作辅助确定要求保护的主题的范围。
附加特征和优点将从下面的描述中阐述并且部分地将从描述显而易见或者可以通过实践来学习。可以借助于在随附的权利要求书中特别地指出的仪器和组合实现和获得特征和优点。这些和其他特征和优点将从以下描述和随附的权利要求变得更充分地明显,或者可以通过实践学习,如在下文中所阐述的。
附图说明
为了描述可以获得上文记载的和其他的优点和特征的方式,更特别的描述将通过参考在附图中图示的其特定实现被呈现。应当理解的是,这些附图描绘仅一些实现并且因此将不被认为是对其范围的限制,通过使用附图利用附加的特殊性和细节将描述和解释实现,其中:
图1图示了包括软件平面和硬件加速平面的示例架构。
图2图示了可以使用在数据中心中的示例架构(包括服务器)。
图3图示了示例服务器。
图4图示了示例服务器。
图5图示了使用软件平面的部件和硬件加速平面的部件实现的示例服务。
图6图示了使用软件平面的部件和硬件加速平面的部件实现的示例服务。
图7图示了加速部件的示例架构。
图8图示了包括分离的可配置域的加速部件。
图9图示了用于执行本地主机部件与相关联的本地硬件加速部件之间的数据传送的功能。
图10图示了主机部件的示例架构。
图11图示了用于管理数据中心中的服务的管理功能的示例架构。
图12图示了具有图11的管理功能的附加部件的示例架构。
图13A至图13F图示了促进重新配置相互连接的加速部件中间的加速部件的示例架构。
图14图示了用于重新配置相互连接的加速部件中间的加速部件的示例方法的流程图。
具体实施方式
示例扩展到用于重新配置相互连接的加速部件中间的加速部件的方法、系统和计算机程序产品。确定基于在以下各项中的一项或多项处的所检测的条件在加速部件处对角色进行重新配置是适当的:加速部件和角色。加速部件被包括在硬件加速平面中的一组互操作加速部件中。该组互操作加速部件中的每个加速部件处的角色被链接在一起以组成提供针对服务的服务加速的图形。
加速部件与一组互操作加速部件中的相邻加速部件隔离。加速部件通过将停止命令发送到加速部件的一个或多个相邻加速部件隔离。停止命令指令一个或多个相邻加速部件以忽略来自加速部件的通信。从一个或多个相邻加速部件中的每一个接收相邻加速部件被停止的指示。
在加速部件处角色被重新配置。在重新配置之后,激活命令被发送到加速部件的一个或多个相邻加速部件。激活命令指令一个或多个相邻加速部件接受来自加速部件的通信。从一个或多个相邻加速部件中的每一个接收指示相邻加速部件被激活的指示。
实现可以包括或利用包括计算机硬件(诸如例如一个或多个处理器和系统存储器,如下面更详细讨论的)的专用或通用计算机。实现还包括用于携带或存储计算机可执行指令和/或数据结构的物理的和其他的计算机可读介质。这样的计算机可读介质可以是可以由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。携带计算机可执行指令的计算机可读介质是传输介质。因此,以示例而非限制的方式,实现可以包括至少两不同的不同种类的计算机可读介质:计算机存储介质(设备)和传输介质。
计算机存储介质(设备)包括RAM、ROM、EEPROM、固态设备(“SSD”)(例如,基于RAM)、闪速存储器、相变存储器(“PCM”)、其他类型的存储器、其他光盘存储装置、磁盘存储装置或其他磁性存储设备或可以被用于以计算机可执行指令或数据结构的形式存储期望的程序代码部件并且可以由通用或专用计算机访问的任何其他介质。
“网络”被定义为一个或多个数据链路,该一个或多个数据链路使能计算机系统和/或模块和/或其他电子设备之间的电子数据的传输。当信息通过网络或其他通信连接(或者硬连线、无线、或者硬连线或无线的组合)被传送或被提供到计算机时,计算机适当地将连接视为传输介质。传输介质可以包括网络和/或数据链路,该网络和/或数据链路可以被用于以计算机可执行指令或数据结构的形式携带期望的程序代码部件并且可以由通用或专用计算机访问。上述的组合还应当被包括在计算机可读介质的范围内。
进一步地,在到达各种计算机系统部件时,以计算机可执行指令或数据结构的形式的程序代码装置可以从传输介质被自动地传送到计算机存储介质(设备)(或反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可以被缓冲在网络接口模块(例如,“NIC”)内的RAM中,并且然后最终地被传送到计算机系统RAM和/或计算机系统处的较少的易失性计算机存储介质(设备)。因此,应当理解,计算机存储介质(设备)可以被包括在还(或甚至主要地)利用传输介质的计算机系统部件中。
计算机可执行指令包括例如指令和数据,其响应于处理器处的执行,使得通用计算机、专用计算机或专用处理设备执行特定功能或功能组。计算机可执行指令可以是例如二进制、中间格式指令(诸如汇编语言或甚至源代码)。虽然已经以特定于结构特征和/或方法动作的语言描述了主题,但是将理解到,随附的权利要求中定义的主题不必限于上文所描述的特定特征或动作。而是,所描述的特征和动作被公开为实现权利要求的示例形式。
本领域的技术人员将理解到,所描述的方面可以被实践在具有许多类型的计算机系统配置的网络计算环境中,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、可穿戴设备、多处理器系统、基于微处理器或可编程的消费者电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、平板电脑、寻呼机、手表、路由器、交换机等。所描述的方面还可以被实践在在分布式系统环境中,其中通过网络链接(或者通过硬连线数据链路、无线数据链路或者通过硬连线数据链路和无线数据链路的组合)的本地计算机系统和远程计算机系统二者执行任务。在分布式系统环境中,程序模块可以被定位在本地存储器存储设备和远程存储器存储设备二者中。
所描述的方面还可以被实现在云计算环境中。在本描述和以下权利要求中,“云计算”被定义为用于使能对可配置的计算资源的共享池的按需网络访问的模型。例如,云计算可以被采用在市场中以提供对可配置的计算资源的共享池的普遍存在并且方便的按需访问。可配置的计算资源的共享池可以经由可视化被快速地提供并且利用低管理努力或服务提供商交互被释放,并且然后因此规模化。
云计算模型可以由各种特征(诸如例如按需自服务、宽网络访问、资源池化、迅速弹性、测量服务等)组成。云计算模型还可以曝光各种服务模型(诸如例如软件即服务(“SasS”)、平台即服务(“PaaS”)和基础设施即服务(“IaaS”))。还可以使用不同的部署模型(诸如私有云、社区云、公共云、混合云等)部署云计算模型。在本描述中并且在权利要求中,“云计算环境”是在其中采用云计算的环境。
在本描述和以下权利要求中,“加速部件”被定义为专用于(被配置(可能通过编程))比在通用中央处理单元(CPU)上运行的软件可以执行计算功能更高效地执行计算功能的硬件部件。加速部件包括现场可编程门阵列(FPGA)、图形处理单元(GPU)、专用集成电路(ASIC)、可擦和/或复杂可编程逻辑器件(PLD)、可编程阵列逻辑(PAL)器件、通用阵列逻辑(GAL)器件和大规模并行处理器阵列(MPPA)器件。
在本描述中并且在以下权利要求中,“角色”被定义为由加速部件提供到被用于加速服务的一组互操作加速部件的功能。一组互操作加速部件中的每个加速部件处的角色可以链接在一起以组成提供服务加速的图形。
在本描述中并且在以下权利要求中,“图像”被定义为包括可以被使用在加速部件(诸如例如FPGA)的配置中的信息的文件。被包括在图像文件中的信息可以被用于编程加速部件的硬件部件(例如,FPGA的逻辑块和可配置的互连)来实现的期望的功能。期望的功能可以被实现以实际上解决可计算的任何问题。
在本描述中并且在以下权利要求中,“图形”被定义为为服务提供加速的一组相互连接(例如,网络连接的)加速部件,其中该组中的每个加速部件提供加速功能的一部分。
在本描述中并且在以下权利要求中,“相邻加速部件”被定义为被配置为当被相互连接到图形内的其他加速部件时与另一加速部件交换输入和/或输出的加速部件。从图形的视角逻辑上察看邻居。加速部件相对于另一加速部件的物理接近度不是标识相邻加速部件中的确定因素。即,不物理地相邻到彼此(或者甚至在网络上或在数据中心内彼此靠近)的加速部件可以被配置为当在图形内相互连接时彼此交换数据。即使加速部件之间交换的数据物理地通过图形外部的其他加速部件或通过加速部件之间的传送中的主机部件,图形内相互连接的加速部件也可以被视为相邻加速部件。然而,在网络中或在数据中心中被物理地相邻或靠近彼此并且在图形内被相互连接的加速部件还可以被视为相对于彼此的相邻加速部件。
一般而言,加速部件可以包括可编程逻辑块阵列和可配置的相互连接的层次结构,该可配置的相互连接的层次结构允许逻辑块以不同的配置被连接在一起以提供不同的功能(即,不同的角色)。图像文件可以在加速部件处被接收并且被加载以配置可编程的逻辑块并且配置相互连接来提供期望的功能(即,角色)。
在一些环境中,应用(服务)从数据中心被提供到客户端。数据中心包括多个(并且潜在地非常大量的)软件驱动的通用计算设备。每个通用计算设备可以包括一个或多个中央处理单元,该一个或多个中央处理单元处理机器可读指令以执行指定的计算活动。多个通用计算设备被联网到彼此,使得多个通用计算机系统(或其子集)的组合功率可以被用于执行更复杂的计算活动。
数据中心提供商面对增加在数据中心内并且由数据中心所提供的处理能力和效率的连续的挑战。至少部分地由于功率限制,连续添加越来越多的通用计算设备是不可行的。计算设备专业化是一个选项。例如,计算设备可以针对特定规模工作量被专业化以提供一些效率增益。然而,计算设备专业化针对至少两个原因是有问题的。首先,数据中心中的同质性的缺少增加管理问题并且为依赖的应用提供不一致的平台。进一步地,数据中心服务迅速地演变,使得不可编程的硬件特征不实际。因此,数据中心提供商需要性能和效率方面的连续的改进,但是不能够从通用计算设备获得那些改进。
多个方面促进使用高级软件服务重新配置相互连接的加速部件中的单个加速部件。管理器或者控制器可以向加速部件发送消息以指令加速部件不听相邻加速部件,直到图像被加载到加速部件上。管理器或者控制器然后通过向相邻加速部件发送指令相邻加速部件不听加速部件的消息隔离加速部件。然后,管理器控制器可以关闭加速部件处的应用层用于至少部分重新配置并且关闭输入/输出(I/O)部分。当重新配置完成时,恢复加速部件与相邻加速部件之间的通信。
因此,多个方面可以被用于:(a)重新配置相互连接的加速部件中间的单个加速部件,(b)使用高级软件服务重新配置加速部件,(c)向加速部件发送指令加速部件忽略相邻加速部件的消息,直到加速部件被重新配置,(d)通过向相邻加速部件发送指令相邻加速部件忽略加速部件的消息隔离加速部件,(e)关闭加速部件的应用层用于至少部分配置,和(f)重新配置加速部件的应用层并且关闭加速部件的I/O部分。
多个方面可以使用性能处理算法,该性能处理算法可以重新配置加速部件组或者鲁棒地重新映射服务、通过重新映射加速部件从降低性能和故障恢复并且将错误报告给管理软件以诊断问题。
一般而言,数据中心部署包括硬件加速平面和软件平面。硬件加速平面可以包括多个联网的加速部件(例如,FPGA)。软件平面可以包括多个联网的软件实现的主机部件(例如,中央处理单元(CPU))。可以在硬件加速平面与软件平面之间共享网络基础设施。在一些环境中,软件实现的主机部件被本地的链接到对应的加速部件。
图1图示了包括软件平面104和硬件加速平面106的示例架构102。软件平面104包括软件驱动的部件(各自由符号“S”表示的)的集合,而硬件平面包括硬件加速部件(各自由符号“H”表示的)的集合。例如,每个主机部件可以对应于使用一个或多个中央处理单元(CPU)执行机器可读指令的服务计算机。每个CPU进而可以执行一个或多个硬件线程上的指令。每个加速部件可以执行用于实现功能(诸如例如由数据中心造成的服务提供的部分)的硬件逻辑。
可以使用加速部件的异质集合构建硬件加速平面106,包括不同类型的加速部件和/或具有不同的能力的相同类型的加速部件。例如,硬件加速平面106可以包括具有不同的相应的处理能力和架构的FPGA设备、FPGA设备和其他设备的混合等等。硬件加速平面106提供加速部件的可重新配置的构造。
主机部件通常通过使用其CPU硬件线程中的每个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。因此,主机部件108从加速部件110的视角是本地主机部件并且加速部件110从主机部件108的视角是本地加速部件。主机部件108和加速部件110的本地链接可以形成服务器的一部分。更一般地,软件平面104中的主机部件可以通过共同地被表示为localH-to-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还包括主机部件212,其包括CPU 214、216等。主机部件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在不负担由主机部件212所执行的基于CPU的操作的情况下对接收自(和/或发送到)TOR交换机210(例如,通过执行加密、压缩等)的分组执行处理。
管理功能232用于管理架构202的操作。可以使用不同的控制架构物理地实现管理功能232。例如,在一个控制架构中,管理功能232可以包括多个本地管理部件,该多个本地管理部件被耦合到一个或多个全局管理部件。
图3图示了示例服务器302。服务器302包括主机部件304、加速部件310和本地链路312,主机部件304包括GPU 306、308等。加速部件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图示了使用软件平面10的部件4和硬件加速平面106的部件实现的示例服务512。在操作(1)中,主机部件502在执行计算任务的过程中与主机部件504通信。在操作(2)中,主机部件504然后通过本地链路与加速部件506通信请求服务512的使用,该服务512被实现在硬件加速平面106中(虽然主机部件504可以不“知道”在何处实现服务512)。
所请求的服务512是展开在多个加速部件上面的组成服务,其中的每一个加速部件执行服务的指定部分。虽然加速部件506被联系以请求服务512的使用,但是加速部件506可以不是组成服务的头部(或者甚至是多部件服务的一部分)。相反,加速部件508可以是用于组成服务的头部部件。
如此,在操作(3)中,主机部件504经由加速部件506与加速部件508间接地通信。加速部件508然后执行组成服务的其部分以生成中间输出结果。在操作(4)中,加速部件508然后调用加速部件510,其执行组成服务的另一相应部分,以生成最后结果。在操作(5)、(6)和(7)中,硬件加速平面106通过上文阐述的部件的相同链但是在相反方向上将最后结果连续地转发回到请求主机部件504。
以在软件平面104中所执行的操作的独立的方式执行硬件加速平面106中的操作。换句话说,软件平面104中的主机部件不管理硬件加速平面106中的操作。然而,主机部件可以通过发出服务的请求调用硬件加速平面106中的操作,该服务由硬件加速平面106托管。
硬件加速平面106以对请求主机部件透明的方式操作。例如,主机部件504可以“不知道”其请求如何在硬件加速平面106中被处理,包括服务对应于组成服务的事实。
软件平面104中的通信(例如,对应于操作(1))可以使用与在硬件加速平面106(例如,对应于操作(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)被重新配置有新功能时,加速部件处的角色(即,专用逻辑)被改变是可能(虽然未保证)的。然而,软壳中的现有功能被改变是不可能的,并且软壳中的现有功能被改变是极其不可能的。因此,软壳中的部件并且壳中的更大的扩展部件针对角色提供公用接口。如此,壳允许用于角色的代码跨不同的加速部件相对地容易被端口传送。
转到图7,图7图示了加速部件702的示例架构。加速部件702可以被包括在硬件加速平面106中。包括在加速部件702中的部件可以被实现在加速部件702的硬件资源(例如,逻辑块和可编程的相互连接)上。
加速部件702包括应用逻辑706、与第一组资源相关联的软壳704和与第二组资源相关联的壳711。与壳711相关联的资源对应于低级接口相关部件,该低级接口相关部件通常跨许多不同的应用场景保持相同。与软壳704相关联的资源可以跨至少一些不同的应用场景保持相同。应用逻辑706还可以被概念化为包括应用域(例如,“角色”)。应用域或角色可以表示被包括在展开在多个加速部件上面的组成服务中的功能的一部分。
应用域托管执行服务特定任务的应用逻辑706(诸如用于排名文档、加密数据、压缩数据、促进计算机视觉、促进语音翻译、机器学习等的功能的一部分)。与软壳704相关联的资源与应用资源相比较通常更少地经受改变,并且与壳711相关联的资源与与软壳704相关联的资源相比较更少地经受改变(虽然改变(重新配置)加速部件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、806等的加速部件802。配置部件(未示出)可以在不影响其他可配置域的情况下对每个可配置域进行配置。因此,配置部件可以对一个或多个可配置域进行配置,而其他可配置域将基于未被干扰的其相应的配置执行操作。
图9图示了用于执行主机部件902与相关联(例如,本地链接的)加速部件904之间的数据传送的功能。数据可以经由主机接口(例如,主机接口724)被传送(例如,结合DMA存储器传送使用PCIe)。在操作(1)中,主机逻辑906将待处理的数据放置到与主机逻辑906相关联的主存储器中的内核引脚输入缓冲器908中。在操作(2)中,主机逻辑906指令加速部件904检索数据并且开始对其进行处理。主机逻辑的线程然后或者入睡直到其从加速部件904接收到通知事件,或者其异步地继续处理其他数据。在操作(3)中,加速部件904传送来自主机逻辑的存储器的数据并且将其放置在加速部件输入缓冲器910中。
在操作(4)和(5)中,应用逻辑912从输入缓冲器910检索数据,处理其以生成输出结果,并且将输出结果放置在输出缓冲器914中。在操作(6)中,加速部件904将输出缓冲器914的内容复制到输出缓冲器916(在主机逻辑的存储器中)中。在操作(7)中,加速部件904通知主机逻辑906数据准备检索。在操作(8)中,主机逻辑线程唤醒并且消耗输出缓冲器916中的数据。主机逻辑906可以然后丢弃输出缓冲器916的内容,其允许加速部件904将其重新使用在下一加载操作中。
图10图示了主机部件1002的示例架构。主机部件1002可以包括一个或多个处理设备1004(诸如一个或多个中央处理单元(CPU))。主机部件1002还可以包括用于存储任何种类的信息(诸如代码、设置、数据等)的任何存储资源1006。非限制性地,例如,存储资源1006可以包括任何类型的RAM、任何ROM、闪速设备、硬盘、光盘等等中的任一个。更一般地,任何存储资源可以使用用于存储信息的任何技术。进一步地,任何存储资源可以提供信息的易失性或非易失性保留。进一步地,任何存储资源可以表示主机部件1002的固定或可移除的部件。在一个情况中,当处理设备1004执行被存储在任何存储资源或存储资源的组合中的相关联的指令时,主机部件1002可以执行与本地租户功能相关联的操作中的任一个。主机部件1002还包括用于与任何存储资源交互的一个或多个驱动机构(诸如硬盘驱动机构、光盘驱动机构等等)。
主机部件1002还包括用于接收各种输入(经由输入设备1012)并且用于提供各种输出(经由输出设备1014)的输入/输出模块1010。一个特定输出机构可以包括演示设备1016和相关联的图形用户接口(GUI)1018。主机部件1002还可以包括用于经由一个或多个通信管道1022与其他设备交换数据的一个或多个网络接口1020。一个或多个通信总线1024将上文所描述的部件通信地耦合在一起。
可以以任何方式实现通信管道1022(例如,通过局域网、广域网(例如,因特网)、点对点连接等或其任何组合)。通信管道1022可以包括由任何协议或协议的组合管理的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
与主机部件1002类似的多个主机部件可以被包括在软件平面104中。
图11图示了用于管理数据中心中的服务的管理功能1122的示例架构1102。管理功能1122可以包括执行不同的相应功能(其可以以不同的方式被物理地实现)的若干子部件。架构1102可以被包括在架构102中。如此,管理功能1122以及其他相关联的部件可以被实现在主机部件(例如,在软件平面104中)的硬件资源上和/或被实现在加速部件(例如,在硬件加速平面106中)的硬件资源上。主机部件硬件资源可以包括与主机部件1002相关联的硬件资源中的任一个。加速部件硬件资源可以包括与加速部件702相关联的硬件资源中的任一个。
本地确定部件1124例如可以基于被存储在数据存储装置1126中的信息来标识架构102内的服务的当前位置。在操作中,位置确定部件1124可以接收用于服务的请求。作为响应,如果与服务相关联的地址存在于数据存储装置1126中,则位置确定部件1124返回该地址。地址可以标识托管所请求的服务(或是其头部)的硬件加速平面106中的特定加速部件。
请求处理部件(RHC)1128处理由租户功能的实例做出的服务的请求。例如,租户功能的实例可以对应于在特定本地主机部件上运行的软件程序。该软件程序可以请求其执行的过程中的服务。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确定实现服务的适当的部件。例如,RHC1128可以从以下各项中间选择:本地加速部件(与做出请求的本地主机部件相关联的)、远程加速部件或本地主机部件自身(其中本地主机部件将实现软件中的服务)或其某种组合。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至图13F图示了促进重新配置相互连接的加速部件中间的加速部件的示例架构1300。初始地参考图13A,计算机架构1300包括加速部件1301-1304、其他部件1331和1332和服务管理器1322。加速部件1301-1304(例如,FPGA)、其他部件1331和1332和服务管理器1322可以被连接到网络(或其一部分)(诸如例如局域网(“LAN”)、广域网(“WAN”)和甚至因特网)。因此,加速部件1301-1304、其他部件1331和1332和服务管理器1322以及任何其他连接的计算机系统和其部件可以通过网络创建消息相关数据并且交换消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其他高层协议(诸如传输控制信息(“TCP”)、超文本传送协议(“HTTP”)、简单邮件传送协议(“SMTP”)、简单对象访问协议(SOAP)等或者使用非数据报协议)。
在一个方面中,加速部件1301-1304、其他部件1331和1332和服务管理器1322被连接到网络基础设施120。加速部件1301-1304可以被包括在硬件加速平面106中。其他部件1331和1332可以包括主机部件和/或其他加速部件中。主机部件和/或其他加速部件可以相应地被包括在软件平面104和/或硬件加速平面106中。
加速部件1301-1304中的每个加速部件可以包括可编程逻辑块阵列和允许逻辑块以不同的配置被连接在一起以提供不同的功能(即,不同的角色)的可配置的相互连接的层次结构。图像文件可以在加速部件1301-1304处被接收并且被加载以配置可编程的逻辑块并且配置相互连接来提供期望的功能(即,角色)。
如所描绘的,加速部件1301、1032、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和1314之外,加速部件1301、1302、1303和1304中的一个或多个还可以编程有一个或多个其他角色。一个或多个其他角色可以被配置为提供其他服务功能(例如,与加速加密、压缩、计算机视觉、语音翻译、机器学习等)的一部分。因此,加速部件1301、1302、1303和1304中的一个或多个可以同时地被组成为针对不同的服务提供不同的功能的互操作加速部件的一个或多个不同组。
一般而言,服务管理器1322被配置为监测网络基础设施120。当适当时,服务管理器1322可以将硬件加速平面106中的加速部件重新配置为恢复用于服务的服务加速。不时,例如,由于检测误差或故障,针对升级的安装等,可以对加速部件处的角色进行重新配置。服务管理器1322可以管理用于角色的顺序地重新配置的重新配置协议。服务管理器1322可以包括相对于管理功能232和管理功能1122所描述的部件和功能以及用于实现重新配置协议的任何其他适当的部件和功能中的任一个。
图14图示了用于重新配置相互连接的加速部件中间的加速部件的示例方法1400的流程图。将相对于架构1300的部件和数据描述方法1400。
方法1400包括基于在以下各项中的一项或多项处所检测的条件,确定在加速部件处对角色进行重新配置是适当的:加速部件和角色、被包括在硬件加速平面中的一组互操作加速部件中的加速部件、被链接在一起以组成图形的一组互操作加速部件中的每个加速部件处的角色(1401),所述图形针对服务提供服务加速。例如,转到图13B,服务管理器1322基于在加速部件1303和/或角色1313处的所检测到的条件,确定该角色1313将被重新配置。所检测到的条件可以包括在加速部件1303和/或角色1313处的误差、安装角色1313的升级的需要等。
方法1400包括将加速部件与一组互操作加速部件中的相邻加速部件隔离,加速部件通过将停止命令发送到加速部件的一个或多个相邻加速部件而被隔离,停止命令指令一个或多个相邻加速部件忽略来自加速部件的通信(1402)并且从一个或多个相邻加速部件中的每个相邻加速部件接收相邻加速部件被停止的指示(1403)。例如,服务管理器1322可以将图形静止命令1351发送到图形1333。图形静止命令1351指令图形1333停止流进和流出图形1333的所有流量。当图形1333被静止(即,停止)时,图形1333可以将图形静止消息1361返回到管理服务1322。
服务管理器1322可以将加速部件1303与加速部件1302和1304隔离。服务管理器1322可以将停止命令1352和1353分别发送到加速部件1302和1304。停止命令1352和1353指令角色1312和1314忽略从角色1313出来的任何数据。服务管理器1322可以将类似停止消息发送到加速部件1303以指令加速部件1303以忽略从角色1312和1314出来的任何数据。
转到图13C,当角色1312和1314被停止时,加速部件1302和1304可以分别返回停止消息1362和1363。当角色1313被停止时,加速部件1303可以返回类似的停止消息。一旦加速部件1302和1304(和1303)被停止,加速部件1303就与图形1333的其他加速部件基本上隔离。
方法1400包括在加速部件处对角色进行重新配置(1404)。例如,服务管理器1322可以将重新配置命令1354发送到加速部件1303。重新配置命令1354使得加速部件1303对角色1313的功能进行重新配置。角色1313可以被重新配置为校正误差或故障、安装更新等。
重新配置角色1313可以包括在加速部件1303处对新图像(角色1313或另一角色中的任一个)进行加载、在加速部件1303处加载配置数据、将角色1313重新映射到不同的加速部件等。在一个方面中,从本地链接的主机部件处的存储装置加载图像。在另一方面中,通过被编程到加速部件1303中的网络接口从网络位置加载图像。加载配置数据可以被用于在加速部件1303处的功能的超集的不同的部分之间切换。功能的超集可以能够提供多个不同的角色。
在角色1313的重新配置期间,加速部件1303可以发射假数据。例如,FPGA上的引脚可以在不同的值之间翻转。假数据可以表现为到角色1312和/或角色1314的合法通信(例如,适当地形成的分组)。然而,由于角色1312和1314被停止并且图形1333被静止,因而不适当地处理任何假发射数据的风险被显著地减少(例如,潜在地完全消除)。
在角色1313的重新配置期间,加速部件1303可以关闭用于角色1313的应用层并且关闭用于角色1313的输入/输出(I/O)。如果加速部件1303还被编程有用于其他服务的角色,则加速部件1303通过重新配置角色1313被部分地重新配置。然而,当角色1313被重新配置时,加速部件1303处的其他角色可以继续如预期操作。例如,加速部件1303可以具有在角色(重新)配置期间允许网络通信的硬化网络接口。因此,在不需要重写针对其他角色的图像或者重写硬化网络接口的情况下,针对一个角色的图像可以被加载到加速部件1033上。
转到图13D,当角色1303的重新配置完成时,加速部件1303可以将重新配置完成消息1364返回到管理服务1322。如所描绘的,角色1313被重新配置为角色1313R。角色1313和1313R可以提供类似功能性。在一个方面中,角色1313R与角色1313相同。即,角色1313的图像被重新加载在加速部件1303处以校正错误或故障。在另一方面中,角色1313R是角色1313的更新版本。
在配置完成之后(例如,响应于重新配置完成消息1364),服务管理器1322可以将消息发送到加速部件1303以激活角色1313R。消息可以指令角色1313R接受来自角色1312和1314的通信。
方法1400包括将激活命令发送到加速部件的一个或多个相邻加速部件,激活命令指令一个或多个相邻加速部件中的每一个接受来自加速部件的通信(1405)。例如,响应于重新配置完成消息1364,服务管理器1322可以将激活命令1371和1372分别发送到加速部件1302和1304。激活命令1371和1372分别指令加速部件1302和1304(重新)激活角色1312和1314并且接受来自加速部件1303处的角色1313R的通信。
方法1400包括从一个或多个相邻加速部件中的每一个接收相邻加速部件被激活的指示(1406)。例如,转到图13E,当角色1312和1314被(重新)激活时,加速部件1302和1304可以将激活的消息1381和1382发送到服务管理器1322。作为反应,管理服务1322可以将激活命令1373发送到图形1333。响应于激活命令1373,激活图形1333。
转到图13F,角色1311、1312、1313R和1314可以被链接以组成图形1333。图形1333可以再次针对服务或其一部分的服务提供服务加速。加速部件1303现在被编程有指定角色1313R以执行服务加速的一部分。
因此,一般而言,方面可以被用于通过通知其他部件加速部件将被重新配置来对与较低层接口上的其他部件(例如,其他加速部件或主机部件)通信的加速部件(例如,FPGA)进行重新配置。
方面因此帮助减轻(并且潜在地消除)将不稳定性引入和/或传播到加速部件(例如,FPGA)期间的硬件加速平面和/或软件平面中的可能性。解决以下问题的各方面至少部分地:加速部件表现为主机的故障(例如,PCIe)设备,提高不稳定非屏蔽中断并且通过随机地发送可能显得有效的流量破坏其邻居的状态的加速部件故障或重新配置。服务管理器可以禁止重新配置期间的加速部件的非屏蔽中断。因此,加速部件(例如,FPGA)可以对于来自具有不正确或不相容的配置的邻居的流量保持鲁棒(例如,来自尚未重新配置的FPGA的“旧”数据)。
为了防止假数据破坏相邻的加速部件,正重新配置的加速部件(或者较高层软件服务(例如,服务管理器1322))发送“TX Halt”消息。TX Halt消息指示相邻加速部件将忽略进一步的流量直到链接被重新建立。另外,消息可以被延迟几个时钟周期,使得在不期望的链路故障的情况下,其可以被检测并且消息可以被抑制。
类似地,当加速部件从重新配置出来时,其不能信任其邻居将不发射假数据。为了处理这一点,每个加速部件可以提出被使能的“RX Halt”,自动地丢弃用于邻居的任何消息。较高层软件服务(例如,服务管理器1322)可以通知每个服务器在图形中的所有加速部件已经配置后发布RX Halt。
当数据中心应用出于任何原因暂停时,服务层次结构(诸如聚集结果的机器)中的较高层服务可以通知一组服务器是无响应的。较高层服务可以查询每个服务器以找到其状态。如果服务器是无响应的,则其通过软重启、硬重启的序列,并且然后针对手动服务和可能替换被标记,直到机器开始正确地工作。如果服务器被正确地操作,则其响应于具有关于其本地加速部件(例如,一个或多个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.一种系统,所述系统包括:
硬件加速平面,包括多个加速部件的可配置构造;
软件平面,包括被配置为执行软件的多个主机部件;
网络基础设施,由所述硬件加速平面中的加速部件和所述软件平面中的主机部件共享,所述网络基础设施由加速部件使用以彼此直接地通信;
一个或多个计算机存储设备,在其上存储表示服务管理器的计算机可执行指令,所述服务管理器被配置为:
基于在以下一项或多项处所检测的条件来确定在所述加速部件处对角色进行重新配置是适当的:所述加速部件和所述角色、被包括在所述硬件加速平面中的一组互操作加速部件中的所述加速部件、在被链接在一起以组成图形的所述一组互操作加速部件中的每个加速部件处的角色,所述图形为服务提供服务加速;
将所述加速部件与所述一组互操作加速部件中的相邻加速部件隔离,所述加速部件通过将停止命令发送到所述加速部件的所述一个或多个相邻加速部件而被隔离,所述停止命令指令所述一个或多个相邻加速部件忽略来自所述加速部件的通信;
从所述一个或多个相邻加速部件中的每一个相邻加速部件接收所述相邻加速部件被停止的指示;
在所述加速部件处对所述角色进行重新配置;
将激活命令发送到所述加速部件的所述一个或多个相邻加速部件,所述激活命令指令所述一个或多个相邻加速部件接受来自所述加速部件的通信;以及
从所述一个或多个相邻加速部件中的每一个相邻加速部件接收所述相邻加速部件被激活的指示。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562149308P | 2015-04-17 | 2015-04-17 | |
US62/149,308 | 2015-04-17 | ||
US14/752,793 | 2015-06-26 | ||
US14/752,793 US10027543B2 (en) | 2015-04-17 | 2015-06-26 | Reconfiguring an acceleration component among interconnected acceleration components |
PCT/US2016/026290 WO2016168033A1 (en) | 2015-04-17 | 2016-04-07 | Reconfiguring an acceleration component among interconnected acceleration components |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107534581A true CN107534581A (zh) | 2018-01-02 |
CN107534581B CN107534581B (zh) | 2020-12-04 |
Family
ID=55861169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680022186.8A Active CN107534581B (zh) | 2015-04-17 | 2016-04-07 | 重新配置加速部件的方法、设备和计算机可读存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10027543B2 (zh) |
EP (1) | EP3283957B1 (zh) |
CN (1) | CN107534581B (zh) |
WO (1) | WO2016168033A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110875847A (zh) * | 2018-08-30 | 2020-03-10 | 埃森哲环球解决方案有限公司 | 网络基础设施的动态的、基于端点配置的部署 |
Families Citing this family (27)
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 |
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 |
US10296392B2 (en) | 2015-04-17 | 2019-05-21 | Microsoft Technology Licensing, Llc | Implementing a multi-component service using plural hardware 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 |
US10216555B2 (en) | 2015-06-26 | 2019-02-26 | Microsoft Technology Licensing, Llc | Partially reconfiguring acceleration components |
US10338135B2 (en) | 2016-09-28 | 2019-07-02 | Amazon Technologies, Inc. | Extracting debug information from FPGAs in multi-tenant environments |
US11099894B2 (en) | 2016-09-28 | 2021-08-24 | Amazon Technologies, Inc. | Intermediate host integrated circuit between virtual machine instance and customer programmable logic |
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 |
US10423438B2 (en) | 2016-09-30 | 2019-09-24 | Amazon Technologies, Inc. | Virtual machines controlling separate subsets of programmable hardware |
US10642492B2 (en) | 2016-09-30 | 2020-05-05 | Amazon Technologies, Inc. | Controlling access to previously-stored logic in a reconfigurable logic device |
US11115293B2 (en) | 2016-11-17 | 2021-09-07 | Amazon Technologies, Inc. | Networked programmable logic service provider |
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 |
US10326696B2 (en) | 2017-01-02 | 2019-06-18 | Microsoft Technology Licensing, Llc | Transmission of messages by acceleration components configured to accelerate a service |
US10425472B2 (en) | 2017-01-17 | 2019-09-24 | Microsoft Technology Licensing, Llc | Hardware implemented load balancing |
US10764129B2 (en) * | 2017-04-18 | 2020-09-01 | Amazon Technologies, Inc. | Logic repository service supporting adaptable host logic |
US10444813B2 (en) | 2017-09-28 | 2019-10-15 | Intel Corporation | Multi-criteria power management scheme for pooled accelerator architectures |
US11068281B2 (en) * | 2018-03-02 | 2021-07-20 | Fastly, Inc. | Isolating applications at the edge |
EP3543870B1 (en) * | 2018-03-22 | 2022-04-13 | Tata Consultancy Services Limited | Exactly-once transaction semantics for fault tolerant fpga based transaction systems |
US10846179B2 (en) * | 2018-11-05 | 2020-11-24 | Arista Networks, Inc. | Hitless repair for network device components |
US11301231B2 (en) | 2019-04-05 | 2022-04-12 | Arista Networks, Inc. | Dynamic run time programming of hardware tables |
US11076019B2 (en) | 2019-11-15 | 2021-07-27 | F5 Networks, Inc. | Scheduling services on a platform including configurable resources |
US11630696B2 (en) | 2020-03-30 | 2023-04-18 | International Business Machines Corporation | Messaging for a hardware acceleration system |
US11360789B2 (en) | 2020-07-06 | 2022-06-14 | International Business Machines Corporation | Configuration of hardware devices |
US11863385B2 (en) | 2022-01-21 | 2024-01-02 | International Business Machines Corporation | Optimizing container executions with network-attached hardware components of a composable disaggregated infrastructure |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890998A (zh) * | 2003-10-10 | 2007-01-03 | 艾利森电话股份有限公司 | 可扩展移动终端平台的方法和系统 |
CN102282542A (zh) * | 2008-10-14 | 2011-12-14 | 奇托尔·V·斯里尼瓦桑 | 对于多核芯片建立正式验证的并行软件的ticc-范例 |
US20130055240A1 (en) * | 2011-08-22 | 2013-02-28 | Vmware, Inc. | Virtual port command processing during migration of virtual machine |
CN103493009A (zh) * | 2011-06-03 | 2014-01-01 | A·常 | 建立电子装置之间的连接 |
US20140282056A1 (en) * | 2013-03-15 | 2014-09-18 | Ebay Inc. | User interface overlay application |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5684980A (en) | 1992-07-29 | 1997-11-04 | Virtual Computer Corporation | FPGA virtual computer for executing a sequence of program instructions by successively reconfiguring a group of FPGA in response to those instructions |
US6096091A (en) | 1998-02-24 | 2000-08-01 | Advanced Micro Devices, Inc. | Dynamically reconfigurable logic networks interconnected by fall-through FIFOs for flexible pipeline processing in a system-on-a-chip |
US6326806B1 (en) | 2000-03-29 | 2001-12-04 | Xilinx, Inc. | FPGA-based communications access point and system for reconfiguration |
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 |
US6996443B2 (en) | 2002-01-11 | 2006-02-07 | Bae Systems Information And Electronic Systems Integration Inc. | Reconfigurable digital processing system for space |
US7146598B2 (en) | 2002-11-07 | 2006-12-05 | Computer Network Technoloy Corp. | Method and apparatus for configuring a programmable logic device |
US8024396B2 (en) * | 2007-04-26 | 2011-09-20 | Microsoft Corporation | Distributed behavior controlled execution of modeled applications |
US8046727B2 (en) | 2007-09-12 | 2011-10-25 | Neal Solomon | IP cores in reconfigurable three dimensional integrated circuits |
US8145894B1 (en) | 2008-02-25 | 2012-03-27 | Drc Computer Corporation | Reconfiguration of an accelerator module having a programmable logic device |
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 |
US8368423B2 (en) | 2009-12-23 | 2013-02-05 | L-3 Communications Integrated Systems, L.P. | Heterogeneous computer architecture based on partial reconfiguration |
US8473692B2 (en) | 2010-10-27 | 2013-06-25 | International Business Machines Corporation | Operating system image management |
US9081750B2 (en) | 2012-02-29 | 2015-07-14 | Red Hat, Inc. | Recovery escalation of cloud deployments |
KR101893982B1 (ko) | 2012-04-09 | 2018-10-05 | 삼성전자 주식회사 | 분산 처리 시스템, 분산 처리 시스템의 스케줄러 노드 및 스케줄 방법, 및 이를 위한 프로그램 생성 장치 |
US8775576B2 (en) | 2012-04-17 | 2014-07-08 | Nimbix, Inc. | Reconfigurable cloud computing |
US9673824B2 (en) | 2012-10-26 | 2017-06-06 | Altera Corporation | Techniques and circuitry for configuring and calibrating an integrated circuit |
US9298484B2 (en) * | 2013-03-14 | 2016-03-29 | International Business Machines Corporation | Encapsulation of an application for virtualization |
US9195470B2 (en) | 2013-07-22 | 2015-11-24 | Globalfoundries Inc. | Dynamic data dimensioning by partial reconfiguration of single or multiple field-programmable gate arrays using bootstraps |
-
2015
- 2015-06-26 US US14/752,793 patent/US10027543B2/en active Active
-
2016
- 2016-04-07 CN CN201680022186.8A patent/CN107534581B/zh active Active
- 2016-04-07 EP EP16719603.9A patent/EP3283957B1/en active Active
- 2016-04-07 WO PCT/US2016/026290 patent/WO2016168033A1/en unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890998A (zh) * | 2003-10-10 | 2007-01-03 | 艾利森电话股份有限公司 | 可扩展移动终端平台的方法和系统 |
CN102282542A (zh) * | 2008-10-14 | 2011-12-14 | 奇托尔·V·斯里尼瓦桑 | 对于多核芯片建立正式验证的并行软件的ticc-范例 |
CN103493009A (zh) * | 2011-06-03 | 2014-01-01 | A·常 | 建立电子装置之间的连接 |
US20130055240A1 (en) * | 2011-08-22 | 2013-02-28 | Vmware, Inc. | Virtual port command processing during migration of virtual machine |
US20140282056A1 (en) * | 2013-03-15 | 2014-09-18 | Ebay Inc. | User interface overlay application |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110875847A (zh) * | 2018-08-30 | 2020-03-10 | 埃森哲环球解决方案有限公司 | 网络基础设施的动态的、基于端点配置的部署 |
Also Published As
Publication number | Publication date |
---|---|
US20160308718A1 (en) | 2016-10-20 |
EP3283957B1 (en) | 2019-03-27 |
CN107534581B (zh) | 2020-12-04 |
US10027543B2 (en) | 2018-07-17 |
WO2016168033A1 (en) | 2016-10-20 |
EP3283957A1 (en) | 2018-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107534581A (zh) | 重新配置相互连接的加速部件中间的加速部件 | |
US10977104B2 (en) | Partially reconfiguring acceleration components | |
US10819657B2 (en) | Allocating acceleration component functionality for supporting services | |
CN107787484B (zh) | 通过网络配置加速部件 | |
US20220191648A1 (en) | Digital twin framework for next generation networks | |
US10511478B2 (en) | Changing between different roles at acceleration components | |
CN102664786B (zh) | 虚拟交换机截取器 | |
WO2019099111A1 (en) | Distributed software-defined industrial systems | |
CN107533493A (zh) | 恢复服务加速 | |
CN107533496A (zh) | 本地恢复加速部件处的功能 | |
US20210011823A1 (en) | Continuous testing, integration, and deployment management for edge computing | |
CN107526659A (zh) | 用于失效备援的方法和设备 | |
CN107750357A (zh) | 具有硬件加速平面和软件平面的数据处理系统 | |
CN104067257A (zh) | 自动化事件管理 | |
CN105051692A (zh) | 通过隔离的自动化故障处理 | |
US20230028146A1 (en) | Continuous integration and continuous delivery pipeline data for workflow deployment |
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 |