CN107710161B - 用于增加的工作流优化的独立可联网硬件加速器 - Google Patents

用于增加的工作流优化的独立可联网硬件加速器 Download PDF

Info

Publication number
CN107710161B
CN107710161B CN201680033128.5A CN201680033128A CN107710161B CN 107710161 B CN107710161 B CN 107710161B CN 201680033128 A CN201680033128 A CN 201680033128A CN 107710161 B CN107710161 B CN 107710161B
Authority
CN
China
Prior art keywords
hardware accelerator
network
computing device
workflow
hardware
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
CN201680033128.5A
Other languages
English (en)
Other versions
CN107710161A (zh
Inventor
D·C·巴格
A·M·考尔菲尔德
E·S·钟
A·R·帕特纳姆
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 CN107710161A publication Critical patent/CN107710161A/zh
Application granted granted Critical
Publication of CN107710161B publication Critical patent/CN107710161B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/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
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

专用处理设备包括处理电路和网络传输电路两者,所述处理电路被预先配置为比通用中央处理单元更快地执行计算操作的离散集合,所述网络传输电路将每个个体专用处理设备通信地耦合到网络作为它自己的独有网络客户端。来自由服务器计算设备的通用中央处理单元执行的工作流的针对硬件加速的请求根据表被引导至硬件加速器,该表将可用硬件加速器与它们被优化以执行的计算操作相关联。在可用硬件加速器中的负载平衡以及动态修改通过对这种表的更新来完成。硬件加速器的工作流的一部分被打包并且被提供给这种硬件加速器,包括经由网络通信被提供给包括网络传输电路并且充当它们自己的独有网络客户端的专用处理设备。

Description

用于增加的工作流优化的独立可联网硬件加速器
背景技术
现代计算机联网硬件使得物理上分离的计算设备能够以比先前代联网硬件可能的数量级更快的数量级来彼此通信。因此,在远离请求这种处理的用户的位置处执行数字数据处理或者代表其执行这种处理已经变得更实际。大量数据处理能力被聚集到包括专用硬件和支持系统的中央位置中,其包括通常安装在垂直取向的机架中的成百上千个计算设备。计算设备以及支持这种计算设备必要的相关联的硬件以及容纳计算设备和相关联的硬件的物理结构的这种汇集通常被称为“数据中心”。数据中心的主要计算设备通常是同质的,使得在失败的情况下,它们能够被高效地更换,由此为数据中心的处理容量和能力提供健壮性。这种同质性与利用专用或专门的处理设备以加速特定任务背道而驰。
发明内容
专用处理设备可以包括处理电路,其被预先配置为比通用中央处理单元更快地执行计算操作的离散集合。每个个体专用处理设备还可以包括网络传输电路,其将每个个体专用处理设备通信地耦合到网络作为它自己的独有网络客户端。由服务器计算设备的通用中央处理单元执行的工作流可以请求这种工作流的一部分由硬件加速器执行。可以参考表或者类似的数据结构,其将可用硬件加速器与它们被优化以执行的计算操作相关联。在可用硬件加速器中的负载平衡以及动态修改可以通过对这种表的更新来完成。在标识了一个或多个可用硬件加速器时,要由这种标识的硬件加速器执行的工作流的一部分可以被打包并且被提供给这种硬件加速器,包括经由网络通信被提供给包括网络传输电路并且充当它们自己的独有网络客户端的专用处理设备。一旦这种硬件加速器完成了它们对工作流的一部分的处理,返回的结果可以被接收并存储在存储器位置中,并且指向这种位置的指针可以被返回给在通用中央处理单元上执行的工作流,由此这种工作流的执行可以恢复。通过利用包括使得这种专用处理设备能够充当它们自己的独有网络客户端的网络传输电路的专用处理设备,一个或多个这种专用处理设备可以在数据中心的上下文内被动态地添加、移除或改变,由此使得能够以加速方式来执行更为广泛的处理,并且由此诸如通过对并行处理的增加的利用来启用更大量的加速,而不影响数据中心的服务器计算设备的期望的同质性。
提供本发明内容从而以简化的形式介绍下面在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识要求保护的主题的关键特征或必要特征,也不旨在用于限制要求保护的主题的范围。
附加特征和优点将从参考附图进行的以下详细描述变得明显。
附图说明
以下详细描述可以在结合附图进行时得到最好地理解,在附图中:
图1是包括示例性硬件加速器的示例性计算设备的框图;
图2是包括示例性联网硬件加速器的示例性系统的框图;
图3是包括多个示例性联网硬件加速器的示例性扩展系统的框图;以及
图4是联网硬件加速器的示例性利用的流程图。
具体实施方式
以下描述涉及通过使用专用处理设备来优化数据中心中的工作流的处理,该专用处理设备包括使得这种专用处理设备能够充当它们自己的独有网络客户端的网络传输电路。这种专用处理设备可以在数据中心内被动态地添加、移除或改变,由此使得能够以加速方式来执行更为广泛的处理,并且由此诸如通过对并行处理的增加的利用来启用更大量的加速,而不影响数据中心的服务器计算设备的期望的同质性。除了网络传输电路之外,专用处理设备还可以包括处理电路,其被预先配置为比通用中央处理单元更快地执行计算操作的离散集合。由服务器计算设备的通用中央处理单元执行的工作流可以请求这种工作流的一部分由硬件加速器执行。可以参考表或者类似的数据结构,其将可用硬件加速器与它们被优化以执行的计算操作相关联。在可用硬件加速器中的负载平衡以及动态修改可以通过对这种表的更新来完成。在标识了一个或多个可用硬件加速器时,要由这种标识的硬件加速器执行的工作流的一部分可以被打包并且被提供给这种硬件加速器,包括经由网络通信被提供给包括网络传输电路并且充当它们自己的独有网络客户端的专用处理设备。一旦这种硬件加速器完成了它们对工作流的一部分的处理,返回的结果可以被接收并存储在存储器位置中,并且指向这种位置的指针可以被返回给在通用中央处理单元上执行的工作流,由此这种工作流的执行可以恢复。
本文描述的技术参考硬件加速器,例如包括定制的、通常任务特定的、处理电路,其通常比通用中央处理单元更快且高效地执行特定处理任务。然而,所描述的机制不限于所描述的特定硬件加速器,并且可以与任何其他处理单元、或者多个处理单元的组合一起被利用,然而描绘了以加速方式来执行计算或处理任务。
如本文所使用的,术语“硬件加速器”意指处理电路的任何汇集,其被特别优化以执行计算机处理操作的离散子集、或者执行计算机可执行指令的离散子集,该执行以比这种操作将由未被如此特别优化的通用中央处理单元执行或者这种指令将由未被如此特别优化的通用中央处理单元执行更快的加速方式进行或者具有更高效的功率利用。因此,如本文所使用的,形容词“更高效”意指更快或者具有更高效的功率利用。附加地,如本文所使用的,术语“处理单元”意指包括能够执行计算机可执行指令的电路的硬件设备。
尽管不要求,但是下面的描述将在由计算设备执行的诸如程序模块的计算机可执行指令的总体背景下。更特别地,除非另行指示,描述将参考动作和由一个或多个计算设备或外围设备执行的操作的符号表示。因此,将理解,有时被称为被计算机执行的这种动作和操作包括由处理单元对以结构化形式表示数据的电信号的操纵。该操纵转换数据或者将其维持在存储器中的位置处,其以本领域技术人员公知的方式来重新配置或以其他方式更改计算设备或外围设备的操作。维持数据的数据结构是具有由数据的格式定义的特定属性的物理位置。
总体上,程序模块包括例程、程序、对象、部件、数据结构等,其执行特定任务或实现特定抽象数据类型。此外,本领域技术人员将认识到,计算设备不需要限于常规个人计算机,并且包括其他计算配置,包括手持设备、多处理器系统、基于微处理器的或者可编程消费电子、网络PC、服务器、微型计算机、大型计算机等。类似地,计算设备不需要限于独立计算设备,因为机制还可以被实践在分布式计算环境中,在分布式计算环境中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以被定位在本地存储器存储设备和远程存储器存储设备两者中。
参考图1,图示了示例性计算设备100,其能够执行下面描述的机制和动作中的一些或全部。诸如下面将描述的,示例性计算设备100可以包括常规计算硬件,并且可以可选地包括硬件加速器,诸如示例性硬件加速器150,其在图1中经由虚线被图示以指示其是可选部件。如先前所指示的,硬件加速器包括处理电路,其被特别优化以执行计算机处理操作的离散子集或者运行计算机可执行指令的离散子集,该执行以加速方式进行或者比这种操作将由未被如此特别优化的通用中央处理单元(例如一个或多个中央处理单元(CPU)120之一)的执行或者这种指令将由未被如此特别优化的通用中央处理单元的执行具有更高效的功率利用。
出于说明的目的,图1中示出的示例性硬件加速器150被图示为包括多个集成电路,诸如示例性集成电路151和152。这种集成电路可以包括专用集成电路(ASIC)、现场可编程门阵列(FPGA)、图形处理单元(GPU)或者其他超大规模集成电路(VLSI)。示例性硬件加速器150的集成电路151和152可以被特别优化从而以加速方式来执行计算机处理操作的离散子集或者执行计算机可执行指令的离散子集。例如,示例性硬件加速器150可以被优化以执行视频压缩。作为另一示例,示例性硬件加速器150可以被优化以执行特定排序算法,诸如在互联网搜索引擎的上下文内。在其中示例性硬件加速器150被用于例如执行压缩算法并压缩定义的数据集的实例中,这种压缩算法的执行可以从示例性CPU 120被传递到示例性硬件加速器150,由此在硬件加速器150压缩定义的数据集的同时使CPU 120可用于执行其他处理。
转到示例性计算设备100的除了示例性CPU 120和示例性硬件加速器150的剩余部分,示例性计算设备100还可以包括系统存储器130以及系统总线121,系统总线121将包括系统存储器的各种系统部件耦合到处理单元120和硬件加速器150。系统总线121可以是若干类型的总线结构中的任一种,包括存储器总线或者存储器控制器、外围总线和使用各种总线体系结构中的任一种的本地总线。取决于特定物理实施方式,CPU 120、硬件加速器150、系统存储器130以及计算设备100的其他部件中的一项或多项可以在物理上被共同定位,诸如在单个芯片、或者硅裸片、或者单个电路板上。在这种情况下,系统总线121中的一些或全部可以仅是单个芯片结构内或者单个裸片上的硅通路,并且其在图1中的图示可以仅是出于说明的目的而方便标记的。
计算设备100通常还包括计算机可读介质,其可以包括能够由计算设备100访问的并且包括易失性介质和非易失性介质以及可移除介质和不可移除介质两者的任何可用介质。通过举例而非限制的方式,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储信息的介质,信息诸如计算机可读指令、数据结构、程序模块或其他数据。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多用盘(DVD)或其他光学盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁性存储设备、或者能够被用于存储期望信息并且能够由计算设备100访问的任何其他介质。然而,计算机存储介质不包括通信介质。通信介质通常体现计算机可读介质、数据结构、程序模块或诸如载波或其他传输介质的经调制的数据信号中的其他数据,并且包括任何信息递送介质。通过举例而非限制的方式,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、RF、红外和其他无线介质的无线介质。以上中的任何组合还应当被包括在计算机可读介质的范围内。
系统存储器130包括以易失性存储器和/或非易失性存储器的形式的计算机存储介质,诸如只读存储器(ROM)131和随机访问存储器(RAM)132。包含有助于在计算设备100内的各元件之间传递信息(诸如在启动期间)的基本例程的基本输入/输出系统133(BIOS)通常被存储在ROM 131中。RAM 132通常包含处理单元120可直接访问的和/或当前由处理单元120对其操作的数据和/或程序模块。通过示例而非限制的方式,图1图示了操作系统134、其他程序模块135以及程序数据136。
计算设备100还可以包括其他可移除/不可移除、易失性/非易失性计算机存储介质。仅仅通过示例的方式,图1图示了从不可移除非易失性磁性介质读取或者向其写入的硬盘驱动器141。可以与示例性计算设备一起使用的其他可移除/不可移除、易失性/非易失性计算机存储介质包括但不限于磁带盒、闪存卡、数字多用盘、数字视频带、固态RAM、固态ROM以及其他计算机存储介质,如以上所定义和描绘的。硬盘驱动器141通常通过诸如接口140的非易失性存储器接口连接到系统总线121。
以上讨论的并且在图1中图示的驱动器及其相关联的计算机存储介质为计算设备100提供计算机可读指令、数据结构、程序模块或其他数据的存储。在图1中,例如,硬盘驱动器141被图示为存储操作系统144、其他程序模块145、以及程序数据146。要指出,这些部件可以与操作系统134、其他程序模块135和程序数据136相同或者不同。这里,操作系统144、其他程序模块145、以及程序数据146被给予不同的编号以至少说明它们是不同的副本。
计算设备100可以在使用到一个或多个远程计算机的逻辑连接的联网环境中操作。计算设备100被图示为通过网络接口或适配器170连接到一般网络连接171,网络接口或适配器170继而连接到系统总线121。在联网环境中,关于计算设备100或其部分或外围设备而描绘的程序模块可以被存储在一个或多个其他计算设备的存储器中,一个或多个其他计算设备通过一般网络连接171通信耦合到计算设备100。将认识到,所示的网络连接是示例性的,并且可以使用在计算设备之间建立通信链接的其他方式。
尽管被描绘为单个物理设备,但是示例性计算设备100可以是虚拟计算设备,在这种情况下诸如CPU 120、系统存储器130、网络接口170以及其他类似部件的上述物理部件的功能可以由计算机可执行指令提供。这种计算机可执行指令可以运行在单个物理计算设备上,或者可以跨多个物理计算设备而被分布,包括以动态方式跨多个物理计算设备被分布,使得托管这种计算机可执行指令的特定物理计算设备能够取决于需求和可用性而随时间动态变化。在其中示例性计算设备100为虚拟化设备的情况下,托管这种虚拟化计算设备的底层物理计算设备本身可以包括与以上描述的物理部件类似的并且以类似的方式操作的物理部件。另外,虚拟计算设备可以在多层中被利用,其中一个虚拟计算设备在另一虚拟计算设备的构造内被执行。因此,如本文所使用的,术语“计算设备”意指物理计算设备或包括虚拟计算设备的虚拟化计算环境,在虚拟计算设备内计算机可执行指令可以以与物理计算设备对它们的执行一致的方式来被执行。类似地,如本文所使用的,称为计算设备的物理部件的术语意指执行相同或等效功能的那些物理部件或其虚拟化。
根据一个方面,计算设备100可以是数据中心的上下文内的服务器计算设备。如先前所指示的,在数据中心上下文内,期望维持服务器计算设备之间的同质性。例如,同质服务器计算设备在发生故障的情况下可以被高效地交换,由此使任何一个服务器计算设备的故障对数据中心整体上的处理影响最小化。为了维持同质性,本地硬件加速器(诸如示例性硬件加速器150)可以是硬件加速器,其可以被重配置使得由这种硬件加速器150以加速方式可执行的处理能够被改变。例如,硬件加速器150可以包括一个或多个FPGA。如由本领域技术人员将意识到的,FPGA可以被重配置,但是它们可能消耗更大功率,并且可能比不可重配置且在物理上被构造为执行特定功能的硬件加速器更慢地处理某些计算机可执行指令。例如,针对特定任务设计的或者被配置为执行计算机可执行指令的特定子集的ASIC通常将比FPGA更快且更高效地执行这种任务以及执行这种计算机可执行指令。因此,针对经常执行的或者处理密集的任务,期望将这种任务卸载到专用的固定功能硬件加速器,诸如ASIC。然而,将这种专用的固定功能硬件加速器包括在仅仅某些服务器计算设备中违反上述有利的同质性,并且将它们包括在所有服务器计算设备中可能是昂贵且低效的。
下面描述的机制有利地启用固定功能硬件加速器向数据中心的添加而不会负面地影响通过维持在数据中心的个体服务器计算设备之间的同质性而实现的优点。更特别地,并且如下面所详述的,包括涉及网络传输功能的电路的硬件加速器可以被添加到数据中心作为它们自己的个体网络客户端。作为结果,能够加速不同特定功能、或者工作流的不同部分的许多不同的硬件加速器能够独立于个体服务器计算设备被添加到数据中心,这能够保持同质,并且作为结果,数据中心能够受益于以上详细描述的同质性的优点。由数据中心的服务器计算设备中的任何一个或多个服务器计算设备执行的工作流能够由此使其部分由涉及加速这些部分的硬件加速器加速,从而实现速度和效率上的提高,并且总体上优化这种工作流的执行。
转到图2,其中示出的示例性系统200图示了诸如通常将在数据中心中发现的、以示例性机箱210的形式的机箱。为了简化的目的,示例性机箱210被示出为仅仅包括一个服务器刀片,即示例性服务器刀片220。然而,如下面将详述的,典型的数据中心机箱可以包括除了其他示例性硬件之外的多个服务器刀片,诸如图2中图示的。除了示例性机箱210,图2的示例性系统200还图示了以示例性中央控制计算设备250的形式的单独的控制计算设备,其可以通过网络(例如以上描述的网络179)被通信耦合到示例性机箱210。图2的示例性系统200还图示了示例性联网硬件加速器,诸如示例性联网硬件加速器260,其结构和操作将在下面被进一步详细描述。
如图2的系统200所图示的,示例性机箱210可以包括一个或多个服务器刀片,诸如示例性服务器刀片220。如本领域技术人员将意识到的,服务器刀片可以是服务器计算设备,其具有与以上详细描述的并且在图1中图示的示例性计算设备100的部件中的至少一些部件类似的部件,除了这种服务器计算设备能够以“刀片”的形式、或者其他物理布置被物理地配置,在其他物理布置中部件沿两个维度展开,由此促进多个这种服务器计算设备在单个机箱(诸如示例性机箱210)内的堆叠。为了简化图示,图2仅仅图示了示例性服务器刀片220的CPU和硬件加速器,即CPU 221和硬件加速器222,而非示出服务器刀片的每个部件。
图2中示出的示例性机箱210还可以包括能够由示例性机箱210的各服务器刀片利用的并且在它们之间共享的部件。例如,示例性机箱210可以包括存储设备,诸如示例性硬盘211和212。备选地或附加地,这种存储设备可以是个体服务器刀片(诸如示例性服务器刀片220)的一部分。示例性机箱210还可以包括网络接口设备,诸如示例性网络接口设备213。如本领域技术人员将意识到的,网络接口设备可以包括网络接口卡、路由器、网络步线、交换机以及其他类似的网络接口设备。根据一个方面,机箱210可以包括单独的计算设备,诸如示例性机箱计算设备240,其可以管理机箱的其他部件,包括被分配给机箱的各服务器刀片的处理任务。
为了提供针对下面的描述的上下文,机箱的一个或多个服务器刀片(诸如示例性机箱210的示例性服务器刀片220)被分配以“工作流”,诸如示例性工作流271。如本文所使用的,术语“工作流”意指执行计算任务或者得到计算的确定的计算机可执行指令的序列。与工作流的特定部分可能由通用处理器(诸如示例性CPU 221)执行相比,工作流的特定部分可以由硬件加速器更高效地执行。例如,作为工作流271的部分,特定数据集可以被压缩。工作流271的涉及压缩该数据的该部分可以被卸载到硬件加速器中,并且由此被更高效且更快地执行。附加地,当硬件加速器执行这种压缩时,执行工作流271的通用处理单元(诸如示例性CPU 221)可以被释放以执行工作流271的其他部分或者不同的工作流。
根据一个方面,作为包括执行工作流271的CPU 221的服务器刀片220的部分的本地硬件加速器(诸如示例性硬件加速器222)可以已经被配置为执行可硬件加速的功能,例如上述压缩功能。在这种方面中,包括对数据集的压缩的工作流271的部分可以被提供给本地硬件加速器,诸如示例性硬件加速器222,以供处理。
然而,对于通常执行的功能,诸如上述压缩功能,利用专门用于执行这种功能的固定功能硬件加速器(诸如ASIC)可以是有利的。如由本领域技术人员将意识到的并且如以上所详述的,这种固定功能硬件加速器能够比可重配置的硬件加速器(诸如FPGA)更快且更高效地执行功能。然而,为了维持服务器刀片之间的同质性,本地硬件加速器(诸如硬件加速器222)可以是可重配置的硬件加速器。更特别地,利用涉及多个不同功能的多个固定功能硬件加速器来装配每个服务器刀片可能是不太实际的。此外,如果固定功能加速器的功能所涉及的工作流改变时固定功能加速器可能变得过时。返回到以上压缩功能的示例,如果压缩算法诸如通过使用更大的数据块大小而被改变以便更高效,这种改变可能导致固定功能加速器过时。对比之下,可重配置的加速器能够适应并且避免过时,并且因此更有可能在这种硬件加速器是服务器刀片本身的部件的情况下被利用。
因此,根据一个方面,可以利用预期的联网硬件加速器(诸如示例性联网硬件加速器260),而不是利用多种不同类型的硬件加速器来装配每个服务器刀片,。更特别地,并且如在图2的系统200中图示的,示例性联网硬件加速器260可以包括预先配置的特定处理电路261和网络传输电路262。预先配置的特定处理电路261可以是网络硬件加速器260的一部分,该部分能够执行联网硬件加速器被配置为执行的计算机可执行指令的预定义集合的处理。例如,预先配置的特定处理电路261可以包括预先配置为执行上述压缩的处理电路。其他类似的功能可以由具有对应的预先配置的特定处理电路的其他联网硬件加速器执行。
联网硬件加速器的网络传输电路(诸如示例性联网硬件加速器260的示例性网络传输电路262)可以包括能够执行提供网络传输功能(诸如轻量级传输层)的计算机可执行指令的电路。更特别地,轻量级传输功能可以提供基本传输功能而没有与功能更全面的传输功能相关联的随附开销和复杂度。例如,轻量级传输功能可以在接收到的网络分组关注的范围内使缓冲要求最小化,例如通过在发送节点处缓冲帧直到在发送节点处从接收节点接收到帧被正确地接收到的确认。如果在可参数化的超时时段内未接收到确认,则可以重新发送所缓冲的帧。作为另一示例,诸如由示例性网络传输电路262实现的轻量级传输功能可以仅维持通信状态的最小值,以便使得这种轻量级传输功能能够可更容易地在硬件电路中可实现。另外,网络传输安全262可以包括将示例性联网硬件加速器260与网络179链接的通信连接,示例性机箱210也被通信地耦合到网络179。
因此,在这种方面中,在机箱的服务器刀片上执行的工作流(诸如在示例性服务器刀片220上执行的示例性工作流271)可以使其一部分由网络硬件加速器260以更快且更高效的方式执行。更特别地,工作流271可以做出请求281,以使工作量271的一部分由硬件加速器执行。例如,工作流271的即将到来的部分可以包括对压缩的执行,其可以是预先配置的特定处理电路261被配置为以优化的且加速的方式执行的功能。由于上述网络传输电路262,网络通信可以在服务器刀片220与示例性联网硬件加速器260之间发生。例如,在接收到请求281时,在服务器刀片220上执行的过程可以将相关数据打包并且可以诸如经由网络传输电路262的能力将这种分组跨网络179传达到联网硬件加速器260。然后,联网硬件加速器260可以利用预先配置的特定处理电路261来以加速方式执行所请求的功能。一旦所请求的处理由联网硬件加速器260完成,则联网硬件加速器260可以诸如经由网络传输电路262生成返回通信,其可以然后通过网络179被传达到在服务器刀片220上执行的过程。然后,这种过程可以将通知返回到所请求的处理已经完成的工作流271,并且可以在必要时提供由所请求的处理生成的任何结果数据。
在联网硬件加速器与在例如服务器刀片上执行的过程之间的通信可以符合由联网硬件加速器的网络传输安全实现的网络传输。例如,为了将相关数据传达到示例性联网硬件加速器260以使得示例性联网硬件加速器260能够加速以其他方式在示例性服务器刀片220上执行的工作流271的一部分,由在示例性服务器刀片220上执行的过程执行的打包可以是根据由网络传输电路262实现的网络传输的打包,其中每个分组包括网络传输电路262所期望的相关字段。
根据一个方面,在示例性服务器刀片220与示例性联网硬件加速器260之间的示例性通信可以通过重定向器来促进,重定向器诸如在服务器刀片220上执行的或者在类似的计算设备上执行的示例性重定向器272,类似的计算设备诸如机箱计算设备240或者中央控制计算设备250。根据一个方面,重定向器272可以参考硬件加速器表230以标识用于加速由请求281提及的工作流271的该部分的合适的硬件加速器来。例如,工作流271可以要求对数据集的压缩。包括工作流271的计算机可执行指令可以已经被设计为请求由硬件加速器执行的这种压缩功能应当是可用的。这种计算机可执行指令可以生成请求281,其可以被引导至重定向器272。
如所指示的,重定向器272可以参考硬件加速器表(例如示例性硬件加速器表230)。尽管被命名为“表”,但是足以包含相关的且下面标识的信息的任何数据结构可以被利用,并且如本文所使用的,术语“表”意指任何这种数据结构。根据一个方面,硬件加速器表可以包括可用的硬件加速器的更新的枚举、这种硬件加速器能够执行的功能、以及通过其来引导到这种硬件加速器的通信的标识符。示例性硬件加速器表230可以驻留在个体服务器刀片(诸如示例性服务器刀片220)的存储器中,其可以被存储在存储介质上,诸如示例性硬盘211和212,或者其可以诸如经由中央控制计算设备250而远程可用。
返回到以上示例,其中示例性工作流271发出针对示例性工作流271的特定部分(诸如压缩功能)要由硬件加速器执行的请求281,重定向器272在接收到这种请求281时可以参考硬件加速器表230,如由箭头282所图示的,并且可以从其接收哪个硬件加速器能够执行这种功能的指示。例如,硬件加速器表230可以将联网硬件加速器260标识为能够执行工作流271寻求使其被硬件加速的压缩功能。硬件加速器表230还可以提供标识符(诸如网络地址),可以通过该标识符来引导到联网硬件加速器260的通信。然后,如由箭头291所图示的重定向器272可以例如以以上详述的方式将相关数据打包,并且经由由硬件加速器表230提供的网络地址将其发送到联网硬件加速器260。以这种方式,来自示例性服务器刀片220的通信可以通过包括网络179的现有联网基础设施到达示例性联网硬件加速器260。网络硬件加速器然后可以利用预先配置的特定处理电路261来执行所请求的功能,诸如以上提及的示例性压缩功能。网络传输安全性262然后可以将任何返回数据打包,其然后可以被传达回到在服务器刀片220上执行的过程,诸如示例性重定向器272。例如,作为通过重定向器272到网络硬件加速器260的初始通信的部分,重定向器272可以提供网络地址,诸如服务器刀片220的网络地址,返回通信可以该网络地址跨网络179被提供给重定向器272。
在一些情况下,来自工作流271的用于使工作流271的部分被硬件加速的请求(诸如示例性请求281)可以导致工作流271的这些部分被引导至本地硬件加速器,诸如示例性硬件加速器222。根据一个方面,到本地硬件加速器的通信可以与到远程硬件加速器(诸如联网硬件加速器260)的通信类似地被执行,由此使得通信功能的单个集合能够将硬件加速工作流部分传达到本地硬件加速器和远程硬件加速器两者。更特别地,到本地硬件加速器(诸如硬件加速器222)的通信可以以与以上详细描述的方式类似或等效的方式被打包。通过说明性示例的方式,工作流271可以向例如以上描述的重定向器271发出请求281。尽管先前示例在针对例如一个或多个压缩功能的执行的请求的上下文内说明了这种请求281,但是在当前说明性示例中,示例性请求281可以是针对排序算法或者其他类似功能的执行的请求,针对该功能的对应的联网硬件加速器可能当前未被通信地耦合到示例性网络179。因此,在接收到例如针对排序算法的执行的这种请求281时,重定向器272可以参考示例性硬件加速器表230,并且示例性硬件加速器表230可以将示例性本地硬件加速器222标识为被配置为例如运行排序算法。示例性本地硬件加速器222的标识诸如可以从示例性硬件加速器表230被获得,其可以是与用于标识联网硬件加速器260的网络地址类似的网络地址,除了标识本地硬件加速器222的网络地址可以在服务器刀片220本地之外。诸如以上详细描述的,在从硬件加速器表230获得这种信息时,重定向器272可以将相关数据打包,并且可以将这种分组传达到本地硬件加速器222,如由箭头292所图示的。
打包的数据在重定向器272与在服务器刀片220本地的硬件加速器222之间的通信不一定需要跨网络170行进。例如,在服务器刀片220上执行的过程可以实现针对硬件加速器222的网络传输功能,使得例如重定向器272能够将打包的数据放置到对于在服务器刀片220上执行的过程可访问的共享存储器空间中。实现针对硬件加速器222的网络传输功能的过程然后可以从共享存储器空间检索这种打包的数据并将其提供给硬件加速器222。可以以类似的方式提供返回通信。作为备选,硬件加速器222本身可以包括例如与联网硬件加速器260的示例性网络传输电路262类似的网络传输功能。
在某些情况下,重定向器272可能不能够容纳工作流271的定义的一部分被硬件加速的请求281。例如,被配置为优化请求281被涉及的工作流271的那部分的执行的一个或多个硬件加速器可能已经忙于运行其他工作流的部分。作为另一示例,被配置为优化工作流271的特定部分的一个或多个硬件加速器可能已经被移除或者以其他方式被停用。在这种情况下,重定向器272可以简单地将工作流271的处理(包括请求281所涉及的那部分)返回到正在处理工作流271的其他部分的CPU 221。这种“早期存在”由图2中的箭头293图解地图示。
如能够看出并且将在以下参考图3进一步详细描述的,联网硬件加速器(诸如示例性联网硬件加速器260)结合硬件加速器表(诸如示例性硬件加速器表230)使得数据中心的服务器计算设备(诸如示例性服务器刀片220)能够保持同质,并且由此诸如在故障的情况下可互换和容易更换,同时还促进硬件加速器独立于服务器计算设备的动态添加或重配置,硬件加速器可以涉及特定功能或者可以以其他方式加速计算机可执行指令的离散集合的处理。
转到图3,示例性系统300图示了根据以上描述扩展的图2的示例性系统200。例如,在图3的示例性系统300中示出了示例性机箱210,其包括多个服务器刀片计算设备的示例性机箱210,即以上详细描述的示例性服务器刀片计算设备220,以及附加的示例性服务器刀片计算设备340和350。出于说明的目的,示例性服务器刀片220被图示为执行以上提及的具有可硬件加速的其部分的示例性工作流271。出于说明的目的,示例性工作流271的可硬件加速部分被图示为功能322。例如,功能322可以是压缩功能或者能够由硬件加速器更快且更高效地执行的计算机可执行指令的其他类似执行。如以上详述的,硬件加速器表(诸如示例性硬件加速器表330)可以标识联网硬件加速器(诸如以上提及的联网硬件加速器260),这种处理可以向其卸载并且更快且更高效地被执行。
通过说明性示例的方式,功能322可以是能够在数据中心内被频繁执行的功能、能够被容易地并行化的功能、或者其组合。因此,可以做出如下确定:将与示例性联网硬件加速器260类似的附加联网硬件加速器添加到数据中心将是有利的。如在图3的系统300中图示的,被设计为加速功能322的执行的附加联网硬件加速器(例如被设计为加速压缩功能的执行的联网硬件加速器)可以仅仅通过向网络179通信地耦合这种联网硬件加速器中的每一个并且然后适当地更新硬件加速器表330而被添加到数据中心。添加附加硬件加速而不负面地影响服务器刀片的同质性的这种灵活性和简便性能够通过本文描述的机制来促进。
例如,在图3的示例性系统300内,以全部涉及优化特定功能(诸如压缩功能)的运行的联网硬件加速器361、362、363、364和365的形式的附加联网硬件加速器可以通过以下方式被添加到数据中心:向网络179通信地耦合这些示例性联网硬件加速器361、362、363、364和365并将硬件加速器表330更新为现在包括针对新添加的示例性联网硬件加速器361、362、363、364和365的能力、可用性和网络地址信息。随后,如果由服务器刀片220执行的工作流271寻求使功能322被硬件加速,则对硬件加速器表330的参考可以将示例性联网硬件加速器260、361、362、363、364和365中的任何一个或多个联网硬件加速器标识为能够对这种功能322进行硬件加速。因此,例如,如果功能322可并行化,则示例性联网硬件加速器260、361、362、363、364和365中的多个联网硬件加速器可以接收打包的网络通信以使那些联网硬件加速器并行地对功能322的执行进行加速。
作为另一示例,多个服务器刀片计算设备可以正在执行可能寻求使相同功能被硬件加速的工作流。例如,在图3的示例性系统300中也图示为示例性机箱210的一部分的示例性服务器刀片340可以正在运行还可能执行与功能322等效的功能342(即,由示例性联网硬件加速器260、361、362、363、364和365中的任何一个或多个联网硬件加速器可硬件加速的功能)的工作流341。在这种示例中,对硬件加速器表(诸如示例性硬件加速器表330)的动态更新可以提供负载平衡并且以其他方式使得多个工作流(诸如示例性工作流271和341)能够共享示例性联网硬件加速器260、361、362、363、364和365的硬件加速能力。例如,示例性联网硬件加速器260、362和364可能已经正在以加速方式执行作为工作流271的一部分的功能322。在这种情况下,当工作流341发起使工作流341的这种部分(即示例性功能342)被硬件加速的请求时,硬件加速器表330可以被更新以指示示例性联网硬件加速器260、362和364能够加速示例性功能342,但是当前不可用于这么做。相反,硬件加速器表330可以指示联网硬件加速器361、363和365的可用性。诸如以以上详述的方式,在服务器刀片340上执行的过程然后可以将相关数据打包并将其传达到示例性联网硬件加速器361、363和365。
诸如通过对硬件加速器表330的更新的负载平衡可以通过在任何一个或多个服务器刀片计算设备中执行的过程或者通过执行独立服务器计算设备(诸如中央控制计算设备250)的过程来被执行。除了执行计算机可执行指令的某些子集,联网硬件加速器可以包括能够提供关于中央控制计算设备的状态更新的电路,由此使得中央控制计算设备能够实现更准确的负载平衡。执行的负载平衡的种类可以依赖于联网硬件加速器所涉及的功能。例如,联网硬件加速器可以涉及能够被快速执行的功能,例如相对小量数据的压缩。在这种情况下,可以通过随机分配、循环赛分配以及其他类似的负载平衡技术来实现负载平衡,针对处理的请求通过其他类似的负载平衡技术被分布在多个不同的且独立的处理单元(例如示例性联网硬件加速器)之间。作为另一示例,联网硬件加速器可以涉及能够在较长时间段上被执行的功能,例如涉及大数据集的排序算法。在这种情况下,当工作流的运行要求这种硬件加速时,预约系统可以被用于使硬件加速器(诸如本文描述的示例性联网硬件加速器)的可用性最大化。
以上描述已经涉及单层硬件加速器表,其中执行其部分能够被硬件加速的工作流的每个服务器刀片或者其他类似的计算设备具有对联网硬件加速器的等效可访问性。在备选布置中,联网硬件加速器的利用可以包括多个层更多级别,由此启用在这种联网硬件加速器的利用中的分层调度。更特别地,在这种备选布置中,执行寻求使该工作的至少一些部分被硬件加速的工作流的任何计算设备可以诸如在硬件加速器表的它自己的版本中具有到更高级别节点的地址。针对硬件加速的请求可以由此被引导到这种更高级别节点,其能够之后然后可以将这种请求分布在这种更高级别节点已知的联网硬件加速器之间,诸如通过在其硬件加速器表中被标识。
分层地,这种更高级别节点的硬件加速器表本身可以包含标识甚至更高级别节点的信息和地址。然而,从原先请求节点(例如示例性服务器刀片220)的角度,在这种示例性服务器刀片220上执行的过程仅仅需要知道处理流水线中的下一更高级别节点的地址。例如,这种条目可以被包含在由示例性服务器刀片220可访问的硬件加速器表中。处理中涉及的剩余节点不需要通过在示例性服务器刀片220上执行的过程被跟踪或监视。
附加地,不是针对硬件加速的每个请求都要求由重定向器(诸如示例性重定向器272)来处理。更特别地,较低级别节点可以将针对硬件加速的所有请求引导至更高级别节点,据此这种请求可以在可用联网硬件加速器之间被分布并且被负载平衡。因此,尽管这种较低级别节点不需要实现重定向器,但是这种更高级别节点可以诸如以以上详细描述的方式来实现重定向器。
为了进一步说明本文描述的机制的可重配置的方面,通过示例的方式可以做出如下确定:功能352越来越多地由通过示例性数据中心的服务器刀片执行的工作流执行。这种示例性功能352可以是例如排序功能、分类功能、图像处理功能、或者能够为可硬件加速的其他类似的功能。实际上,功能352可以已经由本地硬件加速器硬件加速,诸如以上详述的那些。然而,出于当前说明性示例的目的可以做出如下确定:将数据中心扩展为包括固定功能硬件加速器(诸如ASIC)以执行这种功能可以是有利的。因此,这种示例性数据中心可以通过添加涉及这种功能352的附加联网硬件加速器并且然后对应地更新硬件加速器表330而被容易地扩展,该添加仅仅通过将这种附加联网硬件加速器(诸如,示例性联网硬件加速器371、372和373)通信地耦合到示例性网络179来进行。随后,当服务器刀片计算设备(诸如示例性服务器刀片350)执行诸如示例性工作流351(其寻求使功能352被硬件加速)的工作流时,示例性工作流351的执行可以包括用于使示例性功能352被硬件加速的请求,这种请求可以如以上所描述的触发对硬件加速器表330的参考,其可以例如经由网络地址将示例性联网硬件加速器371、372和373标识为可用于对示例性功能352进行硬件加速。以这种方式,可用于对由数据中心的服务器计算设备执行的工作流的部分进行硬件加速的硬件加速器能够被动态地添加、改变或移除而不改变数据中心的服务器,并且同时使得数据中心能够利用同质服务器硬件。
作为另一示例,如果联网硬件加速器是可重配置的硬件加速器,诸如FPGA本身,则联网硬件加速器可以被重配置为执行不同的计算功能,并且物理联网硬件加速器不需要被移除和更换。通过说明性示例的方式,如果在联网硬件加速器371、372和373被配置为执行的功能中检测到增加的使用,同时在联网硬件加速器260、361、362、363、364和365被配置为执行的功能中检测到并发减少的使用,则联网硬件加速器260、361、362、363、364和365中的至少一些联网硬件加速器可以被重配置为执行与联网硬件加速器371、372和373相同的功能。如之前所述,硬件加速器表(诸如示例性硬件加速器表330)可以被更新以反映在给定特定网络地址处的硬件加速器被配置为执行的功能中的变化。
转到图4,其中示出的示例性流程图400图示了示例性步骤序列,联网硬件加速器能够通过这些示例性步骤序列而被由一个或多个服务器计算设备执行的工作流利用。相关处理可以以工作流在通用处理单元(诸如CPU)上的执行开始,如由图4中的步骤410图示的。随后,在步骤415处,可以做出关于该工作流的至少一部分是否能够由可用的硬件加速器加速的确定。如先前所指示的,硬件加速器可以针对特定处理功能而被优化,诸如针对用于特定任务的特定计算机可执行指令的执行。因此,在步骤415的执行中,可以进行被运行的工作流的至少一部分是否执行这种任务的分析。备选地,步骤415可以包含对特定应用程序接口的调用的接收,被运行的工作流的部分可以通过特定应用程序接口来请求它们在硬件加速器上的执行。如果不存在能够被加速的工作流的部分,或者如果没有从对这种工作流的执行接收到针对硬件加速的请求,则工作流能够继续在CPU上被执行,如由步骤470指示的。
然而,如果在步骤415处,诸如通过在步骤415处接收针对工作流的一部分要由硬件加速器加速的请求,确定了工作流的至少一部分能够通过在一个或多个硬件加速器上被执行而被加速,在步骤420处可以参考硬件加速器表,以标识被设计为对在步骤415处提及的工作流的部分进行加速的一个或多个硬件加速器。作为阈值确定,在步骤425处,可以根据在步骤420处对硬件加速器表的参考做出确定,该确定关于在步骤415处提及的能够加速工作流的部分的任何硬件加速器实际上是否可用于执行这种硬件加速。如果在步骤425处确定没有这种硬件加速器可用,则处理可以返回到步骤470,并且工作流继续在CPU上被执行,包括可能已经被硬件加速、但是鉴于从在步骤420处参考的硬件加速器表获得的信息如在步骤425处确定的缺乏合适的硬件加速器的可用性的部分。
在步骤430处,可以做出随后确定,该确定关于通过在步骤420处对硬件加速器表的参考而标识的硬件加速器是在工作流的执行的本地还是远程的联网硬件加速器。如果在步骤430处,确定硬件加速器是远程的联网硬件加速器,则处理可以继续至步骤435,并且远程硬件加速器的网络地址可以从在步骤420处参考的硬件加速器表获得。随后,在步骤440处,可以诸如根据由这种远程硬件加速器实现的轻量级传输机制来将相关数据打包以对工作流的那部分进行加速,并且这些分组可以基于在步骤435处获得的网络地址而通过网络被传输到远程硬件加速器。在由远程硬件加速器对工作流的部分的处理的完成之后,例如在步骤445处可以接收响应分组。根据一个方面,在这种响应分组中包含的数据可以被放置到存储器中,如在步骤465处所指示的,并且指向这种数据的指针可以被返回给工作流,其处理然后可以在步骤470处继续。
如果在步骤430处,做出所标识的硬件加速器为本地硬件加速器的确定,则如先前所指示的,根据一个方面,在步骤450处可以从硬件加速器表获得这种本地硬件加速器的本地地址。随后,在步骤455处,工作流的可加速部分可以被打包,诸如以与在步骤440处执行的方式类似的方式,并且分组可以被提供给本地硬件加速器,诸如通过将分组存储在共享存储器位置中或者诸如通过经由可联网连接被传达。如之前所述,在步骤460处,可以从本地硬件加速器接收响应分组,其表示由本地硬件加速器对工作流的那部分的加速的处理的完成。如所描述的,在步骤465处,合适的数据然后可以被放置到存储器中,并且在步骤470处工作流的处理可以在CPU上继续。
以上的描述包括,作为第一个示例,一种系统包括:服务器计算设备,其包括:一个或多个通用中央处理单元;第一网络接口,其将所述服务器计算设备通信地耦合到网络,作为网络的第一节点;以及一个或多个计算机可读介质,其包括计算机可执行指令,该计算机可执行指令当由一个或多个通用中央处理单元执行时使服务器计算设备:接收针对工作流的一部分要由硬件加速器执行的请求,该工作流由服务器计算设备的一个或多个通用中央处理单元执行;至少基于可访问硬件加速器的预先配置的能力来标识特定硬件加速器,以将工作流的该部分引导至特定硬件加速器;将工作流的该部分打包;并且将工作流的经打包的部分发送到所标识的硬件加速器;以及第一硬件加速器,其与系统的任何服务器计算设备物理地且逻辑地分离,第一硬件加速器包括:处理电路,其被预先配置为比一个或多个通用中央处理单元更高效地执行计算操作的离散集合;以及网络传输电路,其将第一硬件加速器通信地耦合到网络,作为网络的第二节点,第二节点不同于并且独立于第一节点。
第二个示例是第一个示例的系统,其中用于标识特定硬件加速器的计算机可执行指令包括用于参考硬件加速器表的计算机可执行指令,其包括对系统的硬件加速器的标识和它们被预先配置为执行计算操作的哪些离散集合。
第三个示例是第二个示例的系统,还包括:与服务器计算设备分离的中央控制计算设备,该中央控制计算设备包括:一个或多个通用中央处理单元;第二网络接口,其将中央控制计算设备通信地耦合到网络,作为网络的第三节点;以及一个或多个计算机可读介质,其包括计算机可执行指令,计算机可执行指令当由一个或多个通用中央处理单元执行时使中央控制计算设备更新硬件加速器表。
第四个示例是第二个示例的系统,其中硬件加速器表包括用于第一硬件加速器的网络地址,该网络地址唯一地标识第二节点。
第五个示例是第二个示例的系统,其中硬件加速器表包括针对第一硬件加速器的可用性指示,其指定第一硬件加速器是忙碌还是可用。
第六个示例是第五个示例的系统,还包括第二硬件加速器,第二硬件加速器与系统的任何服务器计算设备物理地且逻辑地分离,第二硬件加速器包括:处理电路,其被预先配置为比一个或多个通用中央处理单元更高效地执行计算操作的离散集合;网络传输电路,其将第二硬件加速器通信地耦合到网络,作为网络的第三节点,第三节点不同于并且独立于第一节点和所述第二节点;其中涉及标识特定硬件加速器的计算机可执行指令包括用于根据硬件加速器表中的针对第一硬件加速器和第二硬件加速器的可用性指示来在第一硬件加速器与第二硬件加速器之间对请求进行负载平衡的计算机可执行指令。
第七个示例是第六个示例的系统,其中所述负载平衡基于请求向可用硬件加速器的随机分配。
第八个示例是第六个示例的系统,其中所述负载平衡基于请求向可用硬件加速器的调度的分配。
第九个示例是第一个示例的系统,其中网络传输电路实现具有与在网络上利用的其他网络传输功能相比降低的缓冲要求的轻量级网络传输功能。
第十个示例是第九个示例的系统,其中涉及打包工作流的部分的计算机可执行指令包括用于根据轻量级网络传输功能来生成分组的计算机可执行指令。
第十一个示例是第十个示例的系统,其中第一硬件加速器是固定功能设备,处理电路被固定为仅仅执行计算操作的离散集合。
第十二个示例是第一个示例的系统,其中涉及将工作流的经打包的部分发送到所标识的硬件加速器的计算机可执行指令包括用于在所标识的硬件加速器为第一硬件加速器时通过第一网络接口将工作流的经打包的部分发送到所标识的硬件加速器的计算机可执行指令。
第十三个示例是第一个示例的系统,其中涉及将工作流的经打包的部分发送到所标识的硬件加速器的计算机可执行指令包括用于在所标识的硬件加速器为本地硬件加速器时将工作流的经打包的部分放置到服务器计算设备的共享存储器中的计算机可执行指令;并且此外,其中服务器计算设备还包括共享存储器和本地硬件加速器。
第十四个示例是一种将硬件加速器添加到系统的方法,该系统包括通信地耦合到网络的多个计算设备,该方法包括:将第一硬件加速器通信地耦合到网络,第一硬件加速器与该系统的多个计算设备物理地且逻辑地分离,其中第一硬件加速器包括:处理电路,其被预先配置为比多个计算设备的一个或多个通用中央处理单元更高效地执行计算操作的第一离散集合;以及网络传输电路,其将第一硬件加速器通信地耦合到网络,作为该网络的节点;以及修改硬件加速器表以包括对第一硬件加速器的标识和计算操作的第一离散集合的指示,硬件加速器表包括对该系统的硬件加速器的标识和它们被预先配置为执行计算操作的哪些离散集合,硬件加速器表对于多个计算设备中的每个计算设备可访问。
第十五个示例是第十四示例的方法,其中修改硬件加速器表还包括修改硬件加速器表以包括在网络上唯一地标识第一硬件加速器的网络地址。
第十六个示例是第十四个示例的方法,还包括:在系统的第一硬件加速器与其他硬件加速器之间进行负载平衡,其他硬件加速器也被配置为通过修改硬件加速器表来改变第一硬件加速器是忙碌还是可用的指示来执行计算操作的第一离散集合。
第十七个示例是第十四示例的方法,其中网络传输电路实现具有与在所述网络上利用的其他网络传输功能相比降低的缓冲要求的轻量级网络传输功能。
第十八个示例是一种硬件加速器,其包括:处理电路,其被预先配置为比通用中央处理单元更高效地执行计算操作的离散集合;以及网络传输电路,其将第一硬件加速器通信地耦合到网络,作为该网络的第二节点,第二节点不同于并且独立于第一节点。
第十九个示例是第十八个示例的硬件加速器,其中网络传输电路实现具有与在所述网络上利用的其他网络传输功能相比降低的缓冲要求的轻量级网络传输功能。
第二十个示例是第十八个示例的硬件加速器,其中硬件加速器是固定功能设备,处理电路被固定为仅执行计算操作的离散集合。
如能够从以上描述看出的,已经呈现了用于动态地修改数据中心中的硬件加速器的存在和数量的机制。鉴于本文中描述的主题的许多可能变型,我们要求保护将可能落入随附权利要求及其等效方案的范围内的所有这种实施例作为我们的发明。

Claims (20)

1.一种用于优化工作流的处理的系统,包括:
服务器计算设备,所述服务器计算设备包括:
一个或多个通用中央处理单元;
第一网络接口,所述第一网络接口将所述服务器计算设备通信地耦合到网络作为所述网络的第一节点;
本地硬件加速器,所述本地硬件加速器与所述服务器计算设备逻辑地分离,并且所述本地硬件加速器通信地耦合到所述网络作为所述网络的第三节点,所述第三节点不同于所述第一节点;以及
一个或多个计算机可读介质,所述一个或多个计算机可读介质包括计算机可执行指令,所述计算机可执行指令当由所述一个或多个通用中央处理单元执行时使所述服务器计算设备:
接收针对工作流的一部分要由硬件加速器执行的请求,所述工作流由所述服务器计算设备的所述一个或多个通用中央处理单元执行;
至少基于所述本地硬件加速器或者一个或多个外部硬件加速器的预先配置的能力来选择所述本地硬件加速器或者所述外部硬件加速器,以向其引导所述工作流的所述部分;
将所述工作流的所述部分打包;并且
将所述工作流的经打包的所述部分发送到所选择的所述硬件加速器;以及
第一外部硬件加速器,所述第一外部硬件加速器与所述系统的任何服务器计算设备物理地且逻辑地分离,所述第一外部硬件加速器包括:
处理电路,所述处理电路被预先配置为比所述一个或多个通用中央处理单元更高效地执行计算操作的离散集合;以及
网络传输电路,所述网络传输电路将所述第一外部硬件加速器通信地耦合到所述网络,作为所述网络的第二节点,所述第二节点不同于并且独立于所述第一节点;
其中将所述工作流的经打包的所述部分发送到所选择的所述硬件加速器包括:如果所选择的所述硬件加速器为所述本地硬件加速器,则将所述工作流的经打包的所述部分放置到所述服务器计算设备的共享存储器中,以及如果所选择的所述硬件加速器为所述第一外部硬件加速器,则通过所述第一网络接口将所述工作流的经打包的所述部分发送到所选择的所述硬件加速器。
2.根据权利要求1所述的系统,其中涉及选择所述硬件加速器的所述计算机可执行指令包括用于参考硬件加速器表的计算机可执行指令,所述硬件加速器表包括对所述系统的硬件加速器的标识和所述硬件加速器被预先配置为执行计算操作的哪些离散集合。
3.根据权利要求2所述的系统,还包括与所述服务器计算设备分离的中央控制计算设备,所述中央控制计算设备包括:
一个或多个通用中央处理单元;
第二网络接口,所述第二网络接口将所述中央控制计算设备通信地耦合到所述网络,作为所述网络的第四节点;以及
一个或多个计算机可读介质,所述一个或多个计算机可读介质包括计算机可执行指令,所述计算机可执行指令当由所述一个或多个通用中央处理单元执行时使所述中央控制计算设备更新所述硬件加速器表。
4.根据权利要求2所述的系统,其中所述硬件加速器表包括用于所述第一外部硬件加速器的网络地址,所述网络地址唯一地标识所述第二节点。
5.根据权利要求2所述的系统,其中所述硬件加速器表包括针对所述第一外部硬件加速器的可用性指示,所述可用性指示指定所述第一外部硬件加速器是忙碌还是可用。
6.根据权利要求1所述的系统,
其中涉及选择所述一个或多个外部硬件加速器的所述计算机可执行指令包括用于根据硬件加速器表中的针对多个硬件加速器的可用性指示来在所述多个硬件加速器之间对所述请求进行负载平衡的计算机可执行指令。
7.根据权利要求6所述的系统,其中所述负载平衡基于请求向可用硬件加速器的随机分配。
8.根据权利要求6所述的系统,其中所述负载平衡基于请求向可用硬件加速器的调度的分配。
9.根据权利要求1所述的系统,其中所述网络传输电路实现具有与在所述网络上利用的其他网络传输功能相比降低的缓冲要求的轻量级网络传输功能。
10.根据权利要求9所述的系统,其中涉及将所述工作流的所述部分打包的所述计算机可执行指令包括用于根据所述轻量级网络传输功能来生成分组的计算机可执行指令。
11.根据权利要求10所述的系统,其中所述第一外部硬件加速器是固定功能设备,所述处理电路被固定为仅执行计算操作的所述离散集合。
12.根据权利要求1所述的系统,其中所述一个或多个外部硬件加速器之一是另一不同的服务器计算设备的物理部分,并且通过第四节点耦合到所述网络,所述另一不同的服务器计算设备通过不同于所述第四节点的第五节点耦合到所述网络;并且其中将所述工作流的经打包的所述部分发送到所选择的所述硬件加速器包括将所述工作流的经打包的所述部分发送到所述第四节点。
13.根据权利要求2所述的系统,其中所述硬件加速器表包括用于所述本地硬件加速器的网络地址,所述网络地址唯一地标识所述第三节点。
14.一种将硬件加速器添加到系统的方法,所述系统包括通信地耦合到网络的多个计算设备,所述方法包括:
将第一外部硬件加速器通信地耦合到所述网络,所述第一外部硬件加速器与所述系统的所述多个计算设备物理地且逻辑地分离,其中所述第一外部硬件加速器包括:
处理电路,所述处理电路被预先配置为比所述多个计算设备的一个或多个通用中央处理单元更高效地执行计算操作的第一离散集合;以及
网络传输电路,所述网络传输电路将所述第一外部硬件加速器通信地耦合到所述网络,作为所述网络的第一节点;以及
修改硬件加速器表以包括对所述第一外部硬件加速器的标识和计算操作的所述第一离散集合的指示,所述硬件加速器表包括对所述系统的硬件加速器的标识和所述硬件加速器被预先配置为执行计算操作的哪些离散集合,所述硬件加速器表对于所述多个计算设备中的每个计算设备可访问,
其中所述硬件加速器表还包括对第一本地硬件加速器的标识,所述第一本地硬件加速器与所述多个计算设备中的第一计算设备物理地集成,但是通信地耦合到所述网络作为第二节点,所述多个计算设备中的所述第一计算设备通信地耦合到所述网络作为第三节点。
15.根据权利要求14所述的方法,其中修改所述硬件加速器表还包括修改所述硬件加速器表以包括在所述网络上唯一地标识所述第一外部硬件加速器的网络地址。
16.根据权利要求14所述的方法,还包括在所述第一外部硬件加速器和所述系统的其他硬件加速器之间进行负载平衡,所述其他硬件加速器还被配置为通过修改所述硬件加速器表以改变所述第一外部硬件加速器是忙碌还是可用的指示来执行计算操作的所述第一离散集合。
17.根据权利要求14所述的方法,其中所述网络传输电路实现具有与在所述网络上利用的其他网络传输功能相比降低的缓冲要求的轻量级网络传输功能。
18.一种用于优化工作流的处理的系统,包括:
第一服务器计算设备,包括:
一个或多个通用中央处理单元的第一集合;
第一网络接口,所述第一网络接口将所述第一服务器计算设备通信地耦合到网络作为所述网络的第一节点;
第一本地硬件加速器,所述第一本地硬件加速器与所述第一服务器计算设备逻辑地分离,并且第一本地硬件加速器通信地耦合到所述网络作为所述网络的第二节点;
第一外部硬件加速器,所述第一外部硬件加速器与所述系统的任何服务器计算设备物理地且逻辑地分离,所述第一外部硬件加速器包括:
处理电路,所述处理电路被预先配置为比所述一个或多个通用中央处理单元更高效地执行计算操作的离散集合;以及
网络传输电路,所述网络传输电路将所述第一外部硬件加速器通信地耦合到所述网络作为所述网络的第三节点;以及
第二服务器计算设备,包括:
一个或多个通用中央处理单元的第二集合;
第二网络接口,所述第二网络接口将所述第二服务器计算设备通信地耦合到网络作为所述网络的所述第三节点;以及
一个或多个计算机可读介质,所述一个或多个计算机可读介质包括计算机可执行指令,所述计算机可执行指令当由一个或多个通用中央处理单元的所述第二集合中的至少一些通用中央处理单元执行时使所述第二服务器计算设备:
接收针对工作流的一部分要由硬件加速器执行的请求,所述工作流由所述第二服务器计算设备的一个或多个通用中央处理单元的所述第二集合中的至少一些通用中央处理单元执行;
将所述工作流的所述部分打包;并且
如果所述第一本地硬件加速器被选择则将所述工作流的经打包的所述部分发送到所述网络的所述第二节点,或者如果所述第一外部硬件加速器被选择则将所述工作流的经打包的所述部分发送到所述网络的所述第三节点。
19.根据权利要求18所述的系统,其中所述第二服务器计算设备的所述计算机可读介质还包括计算机可执行指令,所述计算机可执行指令当由一个或多个通用中央处理单元的所述第二集合中的至少一些通用中央处理单元执行时使所述第二服务器计算设备:至少基于在硬件加速器表中指示的所述第一本地硬件加速器和所述第一外部硬件加速器的预先配置的能力来选择所述第一本地硬件加速器或者所述第一外部硬件加速器。
20.根据权利要求19所述的系统,还包括与所述第一服务器计算设备和所述第二服务器计算设备分离的集中控制计算设备,所述集中控制计算设备包括:
一个或多个通用中央处理单元的第三集合;以及
包括计算机可执行指令的一个或多个计算机可读介质,所述计算机可执行指令当由一个或多个通用中央处理单元的所述第三集合中的至少一些通用中央处理单元执行时使所述集中控制计算设备更新所述硬件加速器表。
CN201680033128.5A 2015-06-09 2016-06-08 用于增加的工作流优化的独立可联网硬件加速器 Active CN107710161B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/735,108 US9606836B2 (en) 2015-06-09 2015-06-09 Independently networkable hardware accelerators for increased workflow optimization
US14/735,108 2015-06-09
PCT/US2016/036273 WO2016200844A1 (en) 2015-06-09 2016-06-08 Independently networkable hardware accelerators for increased workflow optimization

Publications (2)

Publication Number Publication Date
CN107710161A CN107710161A (zh) 2018-02-16
CN107710161B true CN107710161B (zh) 2021-06-25

Family

ID=56178480

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680033128.5A Active CN107710161B (zh) 2015-06-09 2016-06-08 用于增加的工作流优化的独立可联网硬件加速器

Country Status (4)

Country Link
US (1) US9606836B2 (zh)
EP (1) EP3308272A1 (zh)
CN (1) CN107710161B (zh)
WO (1) WO2016200844A1 (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10007561B1 (en) * 2016-08-08 2018-06-26 Bitmicro Networks, Inc. Multi-mode device for flexible acceleration and storage provisioning
CN108073423B (zh) * 2016-11-09 2020-01-17 华为技术有限公司 一种加速器加载方法、系统和加速器加载装置
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US10216596B1 (en) 2016-12-31 2019-02-26 Bitmicro Networks, Inc. Fast consistent write in a distributed system
US10425472B2 (en) * 2017-01-17 2019-09-24 Microsoft Technology Licensing, Llc Hardware implemented load balancing
US10838902B2 (en) * 2017-06-23 2020-11-17 Facebook, Inc. Apparatus, system, and method for performing hardware acceleration via expansion cards
US10585717B2 (en) * 2017-08-24 2020-03-10 International Business Machines Corporation Hybrid acceleration in a processing environment
US20190068466A1 (en) * 2017-08-30 2019-02-28 Intel Corporation Technologies for auto-discovery of fault domains
US11119835B2 (en) 2017-08-30 2021-09-14 Intel Corporation Technologies for providing efficient reprovisioning in an accelerator device
US20190044809A1 (en) * 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller
US11144357B2 (en) * 2018-05-25 2021-10-12 International Business Machines Corporation Selecting hardware accelerators based on score
US10977098B2 (en) 2018-08-14 2021-04-13 International Business Machines Corporation Automatically deploying hardware accelerators based on requests from users
US11182322B2 (en) 2018-09-25 2021-11-23 International Business Machines Corporation Efficient component communication through resource rewiring in disaggregated datacenters
US11012423B2 (en) 2018-09-25 2021-05-18 International Business Machines Corporation Maximizing resource utilization through efficient component communication in disaggregated datacenters
US11163713B2 (en) 2018-09-25 2021-11-02 International Business Machines Corporation Efficient component communication through protocol switching in disaggregated datacenters
US11650849B2 (en) * 2018-09-25 2023-05-16 International Business Machines Corporation Efficient component communication through accelerator switching in disaggregated datacenters
US10892944B2 (en) 2018-11-29 2021-01-12 International Business Machines Corporation Selecting and using a cloud-based hardware accelerator
US11169853B2 (en) 2018-12-28 2021-11-09 Intel Corporation Technologies for providing dynamic selection of edge and local accelerator resources
US10798157B2 (en) * 2018-12-28 2020-10-06 Intel Corporation Technologies for transparent function as a service arbitration for edge systems
US11327798B1 (en) * 2019-05-08 2022-05-10 Meta Platforms, Inc. Accelerating an application code portion based on a received configuration
EP3855313B1 (en) 2020-01-21 2023-08-16 Hexagon Technology Center GmbH Os optimized workflow allocation
US11561840B2 (en) * 2020-01-30 2023-01-24 Alibaba Group Holding Limited Efficient inter-chip interconnect topology for distributed parallel deep learning
US11531566B2 (en) 2020-07-10 2022-12-20 Infineon Technologies Ag Safe and secure communication network message processing
US11972289B2 (en) 2021-04-21 2024-04-30 EMC IP Holding Company LLC Method and system for provisioning workflows based on locality
US20220342720A1 (en) * 2021-04-21 2022-10-27 EMC IP Holding Company LLC Method and system for managing elastic accelerator resource pools with a shared storage
US20240129737A1 (en) * 2022-10-17 2024-04-18 Samsung Electronics Co., Ltd. Method and apparatus for selecting selective security mode and flow management in a wireless communication system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1735874A (zh) * 2002-10-30 2006-02-15 河床技术股份有限公司 用于客户-服务器通信系统的事务加速器
WO2006078953A2 (en) * 2005-01-21 2006-07-27 Internap Network Services Corporation System and method for application acceleration on a distributed computer network
CN101169714A (zh) * 2006-10-26 2008-04-30 国际商业机器公司 用于在计算环境中加速应用的执行的系统和方法
US8234267B2 (en) * 2006-08-25 2012-07-31 Teradata Us, Inc. Hardware accelerated reconfigurable processor for accelerating database operations and queries
CN103069390A (zh) * 2010-08-31 2013-04-24 国际商业机器公司 在混合计算环境中重新调度工作量
CN104221005A (zh) * 2012-03-30 2014-12-17 英特尔公司 用于从多线程发送请求至加速器的机制

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1392495B1 (it) 2008-12-29 2012-03-09 St Microelectronics Srl Metodo per progettare un acceleratore ad elevate prestazioni di tipo asic (circuito integrato ad applicazione specifica - application-specific integrated circuit)
US20100192098A1 (en) * 2009-01-29 2010-07-29 Microsoft Corporation Accelerators for capturing content
EP3125637A1 (en) * 2010-11-12 2017-02-01 InterDigital Patent Holdings, Inc. Method and apparatus for performing channel aggregation and medium access control retransmission
US8572614B2 (en) 2011-06-30 2013-10-29 International Business Machines Corporation Processing workloads using a processor hierarchy system
US8942237B2 (en) 2012-06-20 2015-01-27 International Business Machines Corporation Hypervisor independent network virtualization
US9009349B2 (en) 2013-02-08 2015-04-14 Dell Products, Lp System and method for dataplane extensibility in a flow-based switching device
US9313134B2 (en) * 2013-10-15 2016-04-12 Cisco Technology, Inc. Leveraging hardware accelerators for scalable distributed stream processing in a network environment

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1735874A (zh) * 2002-10-30 2006-02-15 河床技术股份有限公司 用于客户-服务器通信系统的事务加速器
WO2006078953A2 (en) * 2005-01-21 2006-07-27 Internap Network Services Corporation System and method for application acceleration on a distributed computer network
US8234267B2 (en) * 2006-08-25 2012-07-31 Teradata Us, Inc. Hardware accelerated reconfigurable processor for accelerating database operations and queries
CN101169714A (zh) * 2006-10-26 2008-04-30 国际商业机器公司 用于在计算环境中加速应用的执行的系统和方法
CN103069390A (zh) * 2010-08-31 2013-04-24 国际商业机器公司 在混合计算环境中重新调度工作量
CN104221005A (zh) * 2012-03-30 2014-12-17 英特尔公司 用于从多线程发送请求至加速器的机制

Also Published As

Publication number Publication date
EP3308272A1 (en) 2018-04-18
CN107710161A (zh) 2018-02-16
US20160364271A1 (en) 2016-12-15
US9606836B2 (en) 2017-03-28
WO2016200844A1 (en) 2016-12-15

Similar Documents

Publication Publication Date Title
CN107710161B (zh) 用于增加的工作流优化的独立可联网硬件加速器
US11709704B2 (en) FPGA acceleration for serverless computing
US11099917B2 (en) Efficient state maintenance for execution environments in an on-demand code execution system
JP6849642B2 (ja) 要求処理技術
US8584136B2 (en) Context-aware request dispatching in clustered environments
US11216420B2 (en) System and method for high replication factor (RF) data replication
US11321090B2 (en) Serializing and/or deserializing programs with serializable state
US20170185503A1 (en) Method and system for recommending application parameter setting and system specification setting in distributed computation
CN110673959A (zh) 用于处理任务的系统、方法和装置
Diab et al. Dynamic sharing of GPUs in cloud systems
US8626799B2 (en) Mapping data structures
CN107204998B (zh) 处理数据的方法和装置
Wang et al. Transformer: a new paradigm for building data-parallel programming models
US11188532B2 (en) Successive database record filtering on disparate database types
Nguyen et al. On the role of message broker middleware for many-task computing on a big-data platform
US20230222004A1 (en) Data locality for big data on kubernetes
US11669315B2 (en) Continuous integration and continuous delivery pipeline data for workflow deployment
US10447800B2 (en) Network cache deduplication analytics based compute cluster load balancer
CN114237892A (zh) 键值数据的处理方法、装置、电子设备及存储介质
US11561824B2 (en) Embedded persistent queue
US20140095716A1 (en) Maximizing resources in a multi-application processing environement
US20230244966A1 (en) Machine learning deployment platform
US20150186429A1 (en) Method and system for data dispatch processing in a big data system
Enoki et al. Event processing over a distributed JSON store: Design and performance
US9697036B2 (en) Method and apparatus for generating unique identifier for distributed computing environment

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