CN107750357A - 具有硬件加速平面和软件平面的数据处理*** - Google Patents

具有硬件加速平面和软件平面的数据处理*** Download PDF

Info

Publication number
CN107750357A
CN107750357A CN201680035401.8A CN201680035401A CN107750357A CN 107750357 A CN107750357 A CN 107750357A CN 201680035401 A CN201680035401 A CN 201680035401A CN 107750357 A CN107750357 A CN 107750357A
Authority
CN
China
Prior art keywords
acceleration components
local
hardware
service
hardware acceleration
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201680035401.8A
Other languages
English (en)
Other versions
CN107750357B (zh
Inventor
D·C·伯格
A·R·帕特南
S·F·海尔
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
Priority to CN202110844740.3A priority Critical patent/CN113553185A/zh
Publication of CN107750357A publication Critical patent/CN107750357A/zh
Application granted granted Critical
Publication of CN107750357B publication Critical patent/CN107750357B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and 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
    • 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
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5015Service provider selection

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本文描述了一种数据处理***,其包括两个或更多个软件驱动的主机部件。该两个或更多个主机部件共同提供软件平面。该数据处理***还包括共同提供硬件加速平面的两个或更多个硬件加速部件(诸如FPGA设备)。公共物理网络允许主机部件彼此通信,并且还允许硬件加速部件彼此通信。进一步地,硬件加速平面中的硬件加速部件包括使得它们能够以透明方式彼此通信、而无需来自软件平面的协助的功能。

Description

具有硬件加速平面和软件平面的数据处理***
背景技术
计算机行业在提高软件驱动的计算设备的速度和效率的工作中面临越来越多的挑战,例如,由于功率限制和其他因素。软件驱动的计算设备采用以常规时序方式处理机器可读指令的一个或多个中央处理单元(CPU)。为了解决这个问题,计算行业已经提出了使用硬件加速部件(诸如现场可编程门阵列(FPGA))来补充由软件驱动的计算设备执行的处理。然而,软件驱动的计算设备和硬件加速部件是不同的类型的设备,具有根本上不同的体系架构、性能特点、功率要求、程序配置范例、接口特征等。因此,以满足具体数据处理环境的各种设计要求的方式将这两种类型的设备集成在一起是一项具有挑战性的任务。
发明内容
本文中描述了一种数据处理***,其包括两个或更多个软件驱动的主机部件。该两个或更多个主机部件共同提供软件平面。该数据处理***还包括共同提供硬件加速平面的两个或更多个硬件加速部件(诸如FPGA设备)。在一个实现方式中,公共物理网络允许主机部件彼此通信,并且还允许硬件加速部件彼此通信。进一步地,硬件加速平面中的硬件加速部件包括使得它们能够以透明方式彼此通信的功能而无需来自软件平面的协助功能。总的来说,数据处理***可以被认为支持共享公共物理网络基板的两个逻辑网络。逻辑网络可以彼此交互,但是以独立方式操作。
上文所总结的功能可以表现在各种类型的***、设备、部件、方法、计算机可读存储介质、数据结构、图形用户接口呈现、制品等中。
提供本发明内容以简化形式介绍概念的选择;这些概念在下面的具体实施方式中得以进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
图1示出了包括软件平面和硬件加速平面的数据处理***的概述。
图2示出了图1的数据处理***的操作的第一示例。
图3示出了图1的数据处理***的操作的第二示例。
图4示出了与数据中心相对应的图1的数据处理***的一个实现方式。
图5是图4的数据中心实现方式的更为包含性的描绘。
图6示出了与图4所示的方式相比较的实现服务器单元部件的备选方式。
图7示出了与图4所示的方式相比较的实现服务器单元部件的又一方式。
图8示出了与图1所示的数据处理***相比较的备选数据处理***,例如,与图1所示的网络基础设施相比较,其使用不同的网络基础设施。
图9是示出了图1的数据处理***的一种操作方式的流程图。
图10示出了用于管理图1的数据处理***的管理功能的一个实现方式的概述。
图11提供作为图10的管理功能的部件的服务映射部件(SMC)的一个请求驱动操作方式的概述。
图12至图15示出了用于处理由驻留在主机部件上的租户功能实例所做出的服务请求的不同的相应选项。
图16提供了图10的SMC的另一背景相关的操作方式的概述。
图17至图20示出了用于物理实现图10的管理功能的不同的相应体系架构。
图21至图24示出了用于在图1的数据处理***中配置硬件加速部件的各种相应策略。
图25示出了实现图1的硬件加速部件的一种方式。
图26示出了包括单独的可配置域的硬件加速部件。
图27示出了用于在本地主机部件和相关联的本地硬件加速部件之间执行数据传送的功能。
图28示出了在图25中引入的路由器的一个实现方式。
图29示出了在图25中引入的运输部件的一个实现方式。
图30示出了在图25中引入的3端***换机的一个实现方式。
图31示出了图1所示的主机部件的一个实现方式。
在整个公开内容和附图中,相同的附图标记用于指示相同的部件和特征。100系列数字是指最初在图1中发现的特征,200系列数字是指在图2中最初发现的特征,300系列数字是指在图3中最初发现的特征,以此类推。
具体实施方式
本公开的组织如下。A节描述了包括硬件加速平面和软件平面的说明性数据处理***。B节描述了用于管理A节的数据处理***的管理功能。C节阐述了硬件加速平面中的说明性硬件加速部件的一个实现方式。
作为初步事项,附图中的一些附图在一个或多个结构部件的上下文中描述了概念,其不同地被称为功能、模块、特征、元件等。附图中所示的各种部件可以通过任何物理和有形机构以任何方式实现,比如,通过在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等,和/或其任何组合。在一种情况下,附图中所图示的各种部件分成不同单元,可以反映在实际实现方式中所使用的对应的不同物理和有形部件。可替代地或另外,附图中所图示的任何单个部件可以由多个实际物理部件来实现。可替代地或另外,附图中任何两个或更多个单独部件的描绘可以反映由单个实际物理部件执行的不同功能。
其他附图描述了流程图形式的概念。在这种形式中,某些操作被描述为构成以某个次序执行的不同框。这些实施例是说明性的而非限制性的。本文中所描述的某些框可以被组合在一起并且在单个操作中执行,某些框可以被分解成多个部件框,并且可以以与本文中所图示的次序不同的次序执行某些框(包括以并行方式执行框)。流程图中所示的框可以通过任何物理和有形机构以任何方式来实现,比如,通过在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等,和/或其任何组合。
关于术语,短语“被配置成”涵盖可以被构造成执行所标识的操作的任何种类的物理和有形功能的任何方式。该功能可以被配置成使用比如在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等,和/或其任何组合来执行操作。
术语“逻辑”涵盖用于执行任务的任何物理和有形功能。比如,流程图中所图示的每个操作与用于执行该操作的逻辑部件相对应。可以使用比如在计算机设备上运行的软件、硬件(例如,芯片实现的逻辑功能)等,和/或其任何组合来执行操作。当由计算设备实现时,逻辑部件表示作为计算***的物理部分的电气部件,无论被怎样实现。
本文中所描述的存储资源中的任何存储资源或存储资源的任何组合可以被认为是计算机可读介质。在许多情况下,计算机可读介质表示某种形式的物理和有形实体。术语计算机可读介质还涵盖例如经由物理管道和/或空气或其他无线介质等传送或接收的传播信号。然而,特定术语“计算机可读存储介质”和“计算机可读介质设备”明确地排除传播信号本身,同时包括所有其他形式的计算机可读介质。
以下解释可以将一个或多个特征标识为“可选的”。这种类型的语句不应被解释为对可以被认为是可选的特征的穷尽指示;也就是说,其他特征可以被认为是可选的,尽管在文本中没有明确标识。进一步地,对单个实体的任何描述并不旨在排除使用多个这样的实体;类似地,对多个实体的描述并不旨在排除使用单个实体。进一步地,虽然描述可以将某些特征解释为执行所标识的功能或实现所标识的机构的备选方式,但是也可以以任何组合将特征组合在一起。最后,术语“示例性”或“说明性”是指潜在的许多实现方式中的一个实现方式。
A.概述
图1示出了包括软件平面104和硬件加速平面106的数据处理***102的概述。软件平面104包括软件驱动部件(每个由图1中的符号“S”表示)的集合,而硬件平面包括硬件加速部件(每个由图1中的符号“H”表示)的集合。比如,每个主机部件可以与使用一个或多个中央处理单元(CPU)执行机器可读指令的服务器计算机相对应。反过来,每个CPU可以执行一个或多个硬件线程上的指令。另一方面,每个硬件加速部件可以与用于实现功能的硬件逻辑相对应,诸如现场可编程门阵列(FPGA)设备、大规模并行处理器阵列(MPPA)设备、图形处理单元(GPU)、专用集成电路(ASIC)、多处理器片上***(MPSoC)等。
术语“硬件”加速部件还旨在广泛地涵盖利用硬件设备执行功能的不同方式,包括比如至少:(a)其中至少一些任务以硬ASIC逻辑等方式实现的情况;(b)其中至少一些任务以软(可配置)FPGA逻辑等方式实现的情况;(c)其中至少一些任务作为FPGA软件处理器覆盖层上的软件运行的情况;(d)其中至少一些任务在软处理器等的MPPA上运行的情况;(e)其中至少一些任务作为在硬ASIC处理器等上的软件运行的情况等,或其任何组合。类似地,数据处理***102可以适应软件平面104中的软件驱动设备的不同表现。
为了简化对硬件加速部件的重复参考,以下解释将这些设备简称为“加速部件”。进一步地,以下解释将提出加速部件与FPGA设备相对应的主要示例,尽管如所指出的,数据处理***102可以使用其他类型的加速部件来构造。进一步地,硬件加速平面106可以使用加速部件的异构集合来构造,包括具有不同的相应处理能力和体系架构的不同类型的FPGA设备、FPGA设备和其他设备的混合等等。
主机部件通常使用时序执行范例来执行操作,例如,通过使用其CPU硬件线程中的每个CPU硬件线程来一个接一个地执行机器可读指令。相比之下,加速部件可以使用空间范例来执行操作,例如,通过使用大量的并行逻辑元件来执行计算任务。因此,与软件驱动的主机部件相比较,加速部件可以在更短的时间内执行一些操作。在数据处理***102的上下文中,与术语“加速部件”相关联的“加速”限定词反映了其用于加速由主机部件执行的功能的潜力。
在一个示例中,数据处理***102与包括多个计算机服务器的数据中心环境相对应。计算机服务器与图1所示的软件平面104中的主机部件相对应。在其他情况下,数据处理***102与企业***相对应。在其他情况下,数据处理***102与使用至少一个主机部件的用户设备或电器相对应,该主机部件可以访问两个或更多个加速部件等。这些示例以举例而不是限制的方式引用;另外其他应用是可能的。
在一个实现方式中,数据处理***102中的每个主机部件通过本地链路耦合到至少一个加速部件。处理设备的基本单元在本文中被称为“服务器单元部件”,因为该设备可以被分组在一起,并且被维持为数据处理***102内的单个可服务单元(尽管不一定如此)。服务器单元部件中的主机部件被称为“本地”主机部件,以将其区别于与其他服务器单元部件相关联的其他主机部件。同样地,服务器单元部件的加速部件被称为“本地”加速部件,以将它们区别于与其他服务器单元部件相关联的其他加速部件。
例如,图1示出了说明性的本地主机部件108,其通过本地链路112(例如,如将在下文所描述的快速***部件互连(PCIe)链路)耦合到本地加速部件110。本地主机部件108和本地加速部件110的配对形成单个服务器单元部件的至少一部分。更一般地,图1示出了软件平面104通过许多单独的本地链路耦合到硬件加速平面,图1统称为本地H到本地S的耦合114。
本地主机部件108还可以间接地与硬件加速平面106中的任何其他远程加速部件通信。例如,本地主机部件108可以经由本地加速部件110访问远程加速部件116。更具体地,本地加速部件110经由链路118与远程加速部件116通信。
在一个实现方式中,公共网络120用于将软件平面104中的主机部件耦合到其他主机部件,并且将硬件加速平面106中的加速部件耦合到其他加速部件。也就是说,两个主机部件可以像两个加速部件那样使用相同的网络120彼此通信。作为另一特征,软件平面104中的主机部件之间的交互独立于硬件加速平面106中的加速部件之间的交互。这意味着,比如,从软件平面104中的主机部件的角度来看,两个或更多个加速部件可以以透明方式彼此通信,在主机部件的方向之外,并且主机部件不“知道”在硬件加速平面106中发生的具体交互。然而,主机部件可以通过发出针对由硬件加速平面106托管的服务请求来发起在硬件加速平面106中发生的交互。
根据一个非限制性实现方式,数据处理***102使用以太网协议来通过公共网络120传送IP分组。在一个实现方式中,服务器单元部件中的每个本地主机部件被给予单个物理IP地址。同一服务器单元部件中的本地加速部件可以采用相同的IP地址。服务器单元部件可以以不同方式确定传入分组是否以本地主机部件而非本地加速部件为目的地。例如,以本地加速部件为目的地的分组可以被表述为指定特定端口的用户数据报协议(UDP)分组;另一方面,目的地为主机的分组不以这种方式来表述。在另一种情况下,属于加速平面106的分组可以基于分组中的每个分组中的状态标志的值(例如,分组的报头或主体)来与属于软件平面104的分组相区别。
鉴于上述特点,数据处理***102可以被概念化为形成共享相同物理通信链路的两个逻辑网络。与两个逻辑网络相关联的分组可以以上述方式通过它们相应的业务类别彼此相区别。但是在其他实现方式中(例如,如下文关于图8所描述的),数据处理***102可以分别使用两个不同的物理网络来处理主机到主机业务和硬件到硬件业务。进一步地,在确实使用公共网络120的实现方式中,主机到主机网络基础设施不需要与硬件到硬件网络基础设施完全相同;也就是说,这两个基础设施就以下意义而言是共同的:他们的大多数网络资源是共享的但不一定是所有的网络资源都是共享的。
最后,管理功能122用来管理数据处理***102的操作。如将在B节(下文)中更详细地阐述的,管理功能122可以使用不同的控制体系架构物理地实现。例如,在一个控制体系架构中,管理功能122可以包括耦合到一个或多个全局管理部件的多个本地管理部件。
通过对B节的介绍,管理功能122可以包括执行不同的相应逻辑功能(其可以以不同方式物理地实现)的若干个子部件。比如,位置确定部件124基于存储在数据存储装置126中的当前分配信息来标识数据处理***102内的服务的当前位置。如本文中所使用的,服务是指由数据处理***102执行的任何功能。例如,一个服务可以与加密功能相对应。另一服务可以与文档排序功能相对应。另一服务可以与数据压缩功能相对应,等等。
在操作中,位置确定部件124可以接收针对服务的请求。作为响应,位置确定部件124返回与服务相关联的地址,如果该地址存在于数据存储装置126中。该地址可以标识托管所请求的服务的具体加速部件。
服务映射部件(SMC)128将服务映射到具体加速部件。SMC 128可以根据其接收到的触发事件的类型以至少两种模式进行操作,该触发事件调用其操作。在第一种情况下,SMC 128处理由租户功能实例做出的针对服务的请求。租户功能实例可以与在具体的本地主机部件上运行的软件程序相对应,或者更特定地,与在虚拟机上执行的程序相对应,其反过来又与具体本地主机部件相关联。该软件程序可以在其执行过程中请求服务。SMC 128通过确定数据处理***102中的适当部件(或多个部件)来处理该请求以提供服务。所考虑的可能部件包括本地加速部件(与发起请求的本地主机部件相关联);远程加速部件;和/或本地主机部件本身(本地主机部件因此将以软件实现该服务)。SMC 128基于一个或多个映射考虑来做出其确定,诸如所请求的服务是否与线路速率服务有关。
在另一操作方式中,SMC 128通常以背景和全局模式操作,从而基于数据处理***102中的全局条件向加速部件分配服务(而非处理来自租户功能实例的个体请求,或除此以外)。例如,SMC 128可以响应于影响一个或多个服务的需求改变来调用其分配功能。在这种模式下,SMC 128再次基于一个或多个映射考虑来做出其确定,诸如与服务相关联的历史需求等。
在执行其功能时,SMC 128可以与位置确定部件124交互。比如,当SMC 128试图确定由加速部件提供的已经分配的服务的地址时,SMC 128可以咨询数据存储装置126。当数据存储装置126将服务映射到一个或多个加速部件时,它还可以更新数据存储装置126,例如,通过存储与服务相关的那些加速部件的地址。
尽管在图1中未示出,SMC 128的子部件也管理多部件服务。多部件服务是由多个部分组成的服务。多个相应的加速部件执行相应的部分。
应当指出,为了方便起见,图1图示了管理功能122与软件平面104和硬件平面106中的部件分离。但是,如在B节中将阐明的,可以使用软件平面104和/或硬件平面106的资源来实现管理功能122的任何方面。当由硬件平面106实现时,可以像任何服务一样加速管理功能。
图2示出了与单个事务或单个事务的一部分相对应的图1的数据处理***102的操作的第一示例。在操作(1)中,在执行单个计算任务的过程中,第一主机部件202与第二主机部件204进行通信。然后,第二主机部件204请求使用在硬件加速平面106中实现的服务(尽管第二主机部件204可能不“知道”服务在哪里被实现,除了该服务可以在指定地址处被访问之外)。
在许多情况下,所请求的服务在单个加速部件上实现(尽管可以有多个冗余的这样的加速部件可供从中选择)。但是,在图2的具体示例中,所请求的服务与分散在加速部件的集合(或集群)上的多部件服务相对应,每个加速部件执行服务的所分配部分。图形结构可以指定个体加速部件在集合中被耦合在一起的方式。在一些实现方式中,图形结构还标识至少一个头部件。头部件与接触点相对应,数据处理***102中的实体可以通过该接触点与硬件加速平面106中的多部件服务交互。头部件还可以用作由图形结构定义的处理流水线中的初始处理阶段。
在图2的具体情况下,假设加速部件206与本地地链接到本地主机部件204的本地加速部件相对应,并且加速部件208是多部件服务的头部件。在操作(2)和(3)中,请求主机部件204经由其本地加速部件206访问加速部件208。然后,加速部件208执行其多部件服务的一部分以生成中间输出结果。在操作(4)中,加速部件208然后调用执行多部件服务的另一相应部分的另一加速部件210,以生成最终结果。在操作(5)、(6)和(7)中,硬件加速平面106通过上文所阐述的相同的部件链、但是沿相反方向顺序地将最终结果转发回请求主机部件204。应当指出,包括定义返回路径的流程操作在内的上文所描述的数据流操作仅作为示例而非限制性地被引用;其他多部件服务可以使用指定任何其他流路径的其他图形结构。例如,加速部件210可以将最终结果直接转发到本地加速部件206。
首先,应当指出,在硬件加速平面106中发生的操作以与在软件平面104中执行的操作独立的方式来执行。换句话说,软件平面104中的主机部件不管理硬件加速平面106中的操作。然而,主机部件可以通过发出针对由硬件加速平面106所托管的服务的请求来调用硬件加速平面106中的操作。
第二,应当指出,硬件加速平面106以对请求主机部件透明的方式执行其事务。例如,本地主机部件204可能“不知道”其请求是如何在硬件加速平面中被处理的,包括该服务与多部件服务相对应的事实。
第三,应当指出,在该实现方式中,软件平面104中的通信(例如,与操作(1)相对应)使用与硬件加速平面106中的通信(例如,与操作(3)至(6)相对应)相同的公共网络120进行。操作(2)和(7)可以通过本地链路进行,与图1所示的本地H到本地S的耦合114相对应。
图2所示的多部件服务类似于环,因为在第一方向上遍历一系列加速部件以得到最终结果;该最终结果然后沿与头部件相反的方向通过相同系列的加速部件被传播回来。但是,如上文所指出的,其他多部件服务可以使用具有不同相应流程结构的加速部件的不同集合。
例如,图3示出了与图1的示例相比较采用不同流程结构的、图1的数据处理***102的操作的第二示例。更特定地,在操作(1)中,本地主机部件(未示出)向其本地加速部件302发送请求。在这种情况下,假设本地加速部件也是服务的头部件。在操作(2)中,头部件然后可以将多个消息转发到多个相应的加速部件。接收消息的每个加速部件可以与其他加速部件并行地执行多部件服务的一部分。(应当指出,图3可以仅表示更完整的事务的一部分。)
而且,多部件服务不一定需要采用单个头部件或任何头部件。例如,多部件服务可以采用全部执行相同功能的加速部件的集群。数据处理***102可以被配置成通过联系集群中的任何任意成员来调用这种多部件服务。该加速部件可以被称为头部件,因为它是要访问的第一部件,但是不具有特殊状态。在其他情况下,主机部件可以最初将多个请求分发到加速部件集合的多个成员。
图4示出了表示图1的数据处理***102的一个实现方式的数据中心402的一部分。具体地,图4示出了该数据中心402中的一个机架。该机架包括多个服务器单元部件(404,406,...,408),每个部件耦合到机架顶(TOR)交换机410。机架顶交换机是指将机架中的部件耦合到数据中心的其他部件的交换机。尽管未示出,但是其他机架可能呈现类似体系架构。机架是用于容纳或以其他方式分组多个处理部件的物理结构。
图4还示出了一个代表***器单元部件404的说明性组合。它包括本地主机部件412,其包括一个或多个中央处理单元(CPU)(414,416,...)以及本地加速部件418。本地加速部件418经由本地链路420直接耦合到主机部件412。本地链路420例如可以被实现为PCIe链路。本地加速部件418还通过网络接口控制器(NIC)422间接耦合到主机部件412。
最后,应当指出,本地加速部件418耦合到TOR交换机410,因此,在该具体实现方式中,本地加速部件418表示主机部件412通过其与数据中心中的其他部件(包括其他主机部件和其他加速部件)交互的唯一路径402。除了其他效果之外,图4的体系架构允许本地加速部件418对从TOR交换机410接收的(和/或发送到TOR交换机410)分组执行处理(例如,通过执行加密、压缩等),而不需要加负担于由主机部件412执行的基于CPU的操作。
应当指出,本地主机部件412可以通过本地链路420或经由NIC422与本地加速部件418通信。不同的实体可以在不同的相应情况下利用这两个路径。例如,假设在主机部件412上运行的程序请求服务。在一个实现方式中,假设主机部件412提供位置确定部件124和数据存储装置126的本地实例化。或者,全局管理部件可以提供位置确定部件124及其数据存储装置126。在任一情况下,主机部件412可以咨询数据存储装置126以确定服务的地址。然后,主机部件412可以使用所标识的地址经由NIC 422和TOR交换机410来访问服务。
在另一实现方式中,假设本地加速部件418提供位置确定部件124和数据存储装置126的本地实例化。主机部件412可以经由本地链路420访问本地加速部件418。本地加速部件418然后可以咨询本地数据存储装置126以确定服务的地址,根据该地址,它经由TOR交换机410访问该服务。还有其他访问服务的方式也是可能的。
图5是图4所示的数据中心402的更为包含性的描绘。数据中心402包括多个机架(502至512,...)。每个机架包括多个服务器单元部件。每个服务器单元部件又可以具有上文在图4中所描述的体系架构。例如,代表***器单元部件514包括本地主机部件(S)516、网络接口控制器(N)518和本地加速部件(S)520。
图5所示的路由基础设施与上文参考图1所描述的公共网络120的一个实现方式相对应。路由基础设施包括多个机架顶(TOR)交换机522和更高层交换基础设施524。该更高层交换基础设施524将TOR交换机522连接在一起。更高层交换基础设施524可以具有任何体系架构,并且可以由任何路由协议来驱动。在图5所示的示例中,更高层交换基础设施524至少包括聚合交换机526、核心交换机528等的集合。通过所图示的基础设施路由的业务可以与以太网IP分组相对应。
图5所示的数据中心402可以与在单个地理位置处提供的资源集合、或分布在多个地理位置(例如,位于世界的不同部分的多个个体贡献数据中心)上的分布式资源集合相对应。在分布式的上下文中,管理功能122可以基于任何映射考虑,从第一贡献数据中心向第二贡献数据中心发送工作,诸如:(1)确定加速部件在第二贡献数据中心处可用;(2)确定加速部件被配置成在第二贡献数据中心处执行期望的服务或多个服务;和/或(3)确定加速部件不仅被配置成执行期望的服务或多个服务,而且它们可以立即可用(例如,“在线”)以执行那些服务,等等。如本文中所使用的,术语“全局”通常是指比与单个服务器单元部件相关联的本地域更为包含性的任何范围。
通常,应当指出,尽管图4和图5重点关注使用相对宽泛的数据处理***(与数据中心相对应),本文中所阐述的原理中的一些原理可以应用于较小***,包括其中单个本地主机部件(或其他类型的部件)耦合到多个加速部件的情况,该较小***包括本地加速部件和一个或多个远程加速部件。这种较小***甚至可以在用户设备或电器等中实现。用户设备可以具有使用本地加速资源和/或远程加速资源的选项。
与图4所示的体系架构相比较,图6示出了实现服务器单元部件602的备选方式。与图4的情况相似,图6的服务器单元部件602包括本地主机部件604,其由一个或多个CPU(606,608,...)、本地加速部件610和用于将本地主机部件604与本地加速部件610耦合的本地链路612组成。与图4的情况不同,服务器单元部件602实现作为本地加速部件610的内部部件而非单独部件的网络接口控制器(NIC)614。
与图4所示的体系架构相比较,图7示出了实现服务器单元部件702的另一备选方式。在图7的情况下,服务器单元部件702包括任何数目n个本地主机部件(704,...,706)以及任何数目m个本地加速部件(708,...,710)(服务器单元部件702的其他部件从图中被省略,以便于解释)。例如,服务器单元部件702可以包括耦合到两个本地加速部件的单个主机部件。两个加速部件可以执行不同的相应任务。例如,一个加速部件可以用于处理到其本地TOR交换机的传出业务,而另一加速部件可以用于处理来自TOR交换机的传入业务。另外,服务器单元部件702可以在本地加速部件(708,...,710)中的任一本地加速部件上加载任何服务。
还应当指出,在上文所阐述的示例中,服务器单元部件可以是指例如通过在数据中心的机架内形成单个可服务单元对部件的物理分组。在其他情况下,服务器单元部件可以包括一个或多个主机部件和一个或多个加速部件,这些部件并不必须一起容纳在单个物理单元中。在这种情况下,本地加速部件可以被考虑为与其相应的本地主机部件逻辑地相关联,而非物理地相关联。
可替代地或另外,本地主机部件和一个或多个远程加速部件可以在诸如单个MPSoC-FPGA管芯之类的单个物理部件上实现。网络交换机也可以并入该单个部件。
与图1所示的相比较,图8示出了备选数据处理***802。与图1的数据处理***102类似,数据处理***802包括软件平面104和硬件加速平面106、以及用于将本地主机部件连接到相应的本地加速部件的本地H到本地S的耦合114。但是,与图1的数据处理***102不同,数据处理***802包括用于将主机部件耦合在一起的第一网络804和用于将硬件部件耦合在一起的第二网络806,其中第一网络804与第二网络806至少部分不同。例如,第一网络804可以与图5所示的数据中心交换体系架构的类型相对应。第二网络806可以与用于将加速部件连接在一起的、具有任何网络拓扑的专用链路相对应。例如,第二网络806可以与p×r环形网络相对应。环形网络中的每个加速部件经由适当的电缆链路等耦合到东、西、北和南相邻的加速部件。可替代地,可以使用其他类型的环形网络,其具有任何相应的尺寸和维度。
在其他情况下,由单个处理部件(例如,在单个管芯上实现)提供的本地硬CPU、和/或软CPU和/或加速逻辑可以经由不同网络耦合到其他处理部件(例如,如在其他管芯、板、机架等上实现)的其他元件。个体服务本身可以利用一个或多个递归本地互连网络。
进一步地,应当指出,上文的描述在主机部件发出服务请求、由加速部件满足的上下文中被构建。但是,可替代地或者另外,任何加速部件还可以做出针对可以由任何其他部件(例如,另一加速部件和/或甚至主机部件)满足的服务请求。SMC 102可以以与上文所描述的方式类似的方式来解决这样的请求。实际上,本文中所描述的某些特征可以单独地在硬件加速平面而不是软件平面上实现。
更一般地说,某些特征可以由请求服务的任何第一部件来实现,该服务可能由第一部件、和/或相对于第一部件的一个或多个本地部件、和/或由相对于第一部件的一个或多个远程部件来满足。然而,为了便于解释,下文的描述将主要在做出请求的实体与本地主机部件相对应的上下文中继续被构建。
最后,其他实现方式可以采用不同的策略来将主机部件耦合到硬件部件,例如,不同于图14所示的本地H到本地S耦合114。
图9示出了表示图1的数据处理***102的一个说明性操作方式的过程902。在框904中,本地主机部件发出针对服务的请求。在框906中,本地主机部件接收到对该请求的回复,该回复可以标识该服务的地址。在备选实现方式中,相关联的本地加速部件可以在从本地主机部件接收到请求之后执行框904和906。换句话说,本地主机部件或本地加速部件可以执行地址查找功能。
在框908中,假定已经被标识的地址涉及由本地加速部件本地实现的功能,相关联的本地加速部件可以本地地执行服务。可替代地或另外,在框910中,本地加速部件将请求路由到远程加速部件。如上文所指出的,本地加速部件被配置成执行到远程加速部件的路由,而不牵涉到本地主机部件。进一步地,多个主机部件在数据处理***102中通过与多个加速部件相同的物理网络彼此通信。
总之,对于A节,数据处理***102具有若干个有用特点。首先,数据处理***102使用公共网络120(除了图8的示例之外),其避免了与用于将加速部件耦合在一起的定制网络相关联的费用。第二,公共网络120使得可以向诸如数据中心之类的现有数据处理环境添加加速平面。并且在安装之后,所得到的数据处理***102可以有效地被维护,因为它利用在现有数据处理环境中发现的现有物理链路。第三,数据处理***102集成加速平面106,而不施加大的附加功率要求,例如,考虑到上文所描述的方式,其中本地加速部件可以与现有服务器单元部件集成。第四,数据处理***102提供了一种有效和灵活机制,用于允许主机部件访问由硬件加速平面106提供的任何加速资源,例如,在没有将主机部件与特定固定加速资源严格地配对的情况下,以及在没有通过管理硬件加速平面106本身加重主机部件的负担的情况下。第五,数据处理***102通过智能地将这些资源分散在硬件平面106中来提供用于管理加速资源的有效机制,从而:(a)减少资源的过度利用和利用不足(例如,与“滞留能力”问题相对应);(b)方便这些服务的消费者快速访问这些服务;(c)适应由一些消费者和/或服务指定的提高的处理要求等等。上述效果是说明性的,而不是穷举的;数据处理***102还提供了其他有用的效果。
B.管理功能
图10示出了用于管理图1的数据处理***102的管理功能122的一个实现方式的概述。更特定地,图10描绘了由管理功能122执行的功能的逻辑视图,其包括其主引擎,服务映射部件(SMC)128。不同的子部件与由管理功能122执行的不同的主要功能相对应。下文所描述的图17至20示出了逻辑功能的各种可能的物理实现方式。
如在介绍性的A节中所描述的,位置确定部件124基于存储在数据存储装置126中的当前分配信息来标识数据处理***102内的服务的当前位置。在操作中,位置确定部件124接收针对服务的请求。作为响应,它返回服务的地址(如果存在于数据存储装置126内)。该地址可以标识实现该服务的具体加速部件。
数据存储装置126可以维护将服务映射到地址的任何类型的信息。在图10所示的小摘录中,数据存储装置126将少量服务(服务w、服务x、服务y和服务z)映射到当前被配置成提供这些服务的加速部件。例如,数据存储装置126指示用于服务w的配置图像当前被安装在具有地址a1、a6和a8的设备上。地址信息可以以任何方式表达。这里,为了便于解释,以高级符号形式表示地址信息。
在一些实现方式中,数据存储装置126还可以可选地存储以任何方式表征每个当前服务到部件(service-to-component)分配的状态信息。通常,用于服务到部件分配的状态信息指定如在其被指派的部件(或多个部件)上实现的所分配的服务,要在数据处理***102内被处理的方式,诸如通过指定持久性等级,指定其访问权限(例如,“所有权”)等。在一个非限制性实现方式中,比如,服务到部件分配可以被指定为保留的或非保留的。当执行配置操作时,SMC 128可以在确定是否适合改变分配时考虑与该分配相关联的保留/非保留状态信息,例如,以满足当前针对服务的请求、对一个或多个服务的需求的改变等。例如,数据存储装置126指示具有地址a1、a6和a8的加速部件当前被配置成执行服务w,但是仅对加速部件a1和a8的指派被考虑为保留。因此,与其他两个加速部件相比较,SMC 128将对加速部件a6的分配视为用于重新指派(重新配置)的更适当的候选。
另外,或可替代地,数据存储装置126可以提供指示服务到部件分配是否要由租户功能的所有实例共享,或专用于一个或多个具体租户功能的实例(或另外指示的一些服务的消费者)的信息。在前者(完全共享)的情况下,所有租户功能实例竞争由加速部件提供的相同资源。在后者(专用)情况下,仅准许与服务分配相关联的那些客户端使用所分配的加速部件。图10以高级方式示出了在具有地址位a3的加速部件上运行的服务x和y被保留以供一个或多个指定的租户功能实例使用,而任何租户功能实例可以使用另一服务到部件分配。
SMC 128还可以与提供可用性信息的数据存储装置1002交互。可用性信息标识具有实现一个或多个服务的可用容量的加速部件的池。例如,在一种使用方式中,SMC 128可以确定将一个或多个加速部件指派为功能的提供者是适当的。为此,SMC 128利用数据存储装置1002以找到具有实现该功能的空闲容量的加速部件。然后,SMC 128将功能指派给这些空闲加速部件中的一个或多个空闲加速部件。这样做会改变所选加速部件的可用性相关状态。
SMC 128还管理和维护数据存储装置1002中的可用性信息。在这样做时,SMC 128可以使用不同的规则来确定加速部件是可用还是不可用的。在一种途径中,SMC 128可以将当前正在被使用的加速部件考虑为不可用的,同时将当前未被使用加速部件考虑为可用的。在其他情况下,加速部件可以具有不同的可配置域(例如,瓦片),其中一些当前正在被使用,而另一些当前没有被使用。这里,SMC 128可以通过表达当前未被使用的其处理资源的一部分来指定加速部件的可用性。例如,图10指示地址为a1的加速部件具有50%的处理资源可供使用。另一方面,地址为a2的加速部件完全可用,而地址为a3的加速部件完全不可用。如下文将更详细地描述的,个体的加速部件可以以不同的方式通知SMC 128它们的相对利用水平。
在其他情况下,SMC 128在将加速部件注册为是否可用或不可用时可以考虑针对加速部件的待决请求。例如,SMC 128可以指示加速部件不可用,因为它被调度为将服务递送到一个或多个租户功能实例,尽管它在当前时间不能从事提供该服务。
在其他情况下,SMC 128还可以注册可用的每个加速部件的类型。例如,数据处理***102可以对应于支持具有不同物理特性的加速部件的异构环境。这种情况下的可用性信息不仅可以指示可用的处理资源的身份,还可以指示这些资源的类型。
在其他情况下,当将加速部件注册为可用或不可用时,SMC 128还可以考虑服务到部件分配的状态。例如,假设具体加速部件当前被配置成执行某个服务,并且此外,假设分配已经被指定为保留而不是非保留。鉴于其保留状态,SMC 128可以将加速部件指定为不可用(或其一部分被指定为不可用),而不管该服务当前是否正在被主动用于在目前执行功能。实际上,加速部件的保留状态至少在某些情形下用作防止SMC 128重新配置加速部件的锁。
现在参考SMC 128本身的核心映射操作,SMC 128响应于触发事件而将服务分配或映射到加速部件。更特定地,SMC 128根据已经接收的触发事件的类型以不同的模式操作。在请求驱动的模式下,SMC 128处理租户功能针对服务的请求。这里,每个触发事件与由至少部分地驻留在具体本地主机部件上的租户功能实例提出的请求相对应。响应于本地主机部件的每个请求,SMC 128确定实现该服务的适当部件。例如,SMC 128可以从以下各项中进行选择:本地加速部件(与发出请求的本地主机部件相关联)、远程加速部件或本地主机部件本身(随后本地主机部件将以软件方式实现该服务),或其某种组合。
在第二背景模式下,SMC 128通过全局地将服务分配给数据处理***102内的加速部件来操作,以满足数据处理***102中的总体预期需求和/或满足其他***范围目标和其他因素(而不是仅仅关注主机部件的个别请求)。这里,所接收到的每个触发事件与作为整体的数据处理***102中的一些条件相对应,其保证服务的分配(或重新分配),诸如对服务的需求的改变。
然而,应当指出,上文所描述的模式不是分析的互斥域。例如,在请求驱动的模式下,SMC 128可以尝试实现至少两个目标。作为第一主要目标,SMC 128将尝试找到满足有待解决的针对服务的请求的加速部件(或多个加速部件),同时满足与作为整体的数据处理***102相关的一个或多个性能目标。作为第二目标,关于由其他租户功能实例对该服务的未来使用,SMC 128可以可选地考虑功能其对服务的分配的长期影响。换句话说,第二目标涉及恰好由具体租户功能实例的请求触发的背景考虑。
例如,考虑以下简化情况。租户功能实例可以做出针对服务的请求,其中租户功能实例与本地主机部件相关联。SMC 128可以通过配置本地加速部件来执行该服务以响应该请求。在做出该决定时,SMC 128首先尝试功能找到满足租户功能实例的请求的分配。但是,SMC 128还可以基于许多其他主机部件已经请求相同服务的确定来做出其分配,并且这些主机部件大多与已经生成当前针对服务的请求的租户功能实例位于相同的机架中。换句话说,这个补充发现进一步支持将服务置于机架内加速部件的决定。
图10描绘了可选地包括执行不同相应分析的多个逻辑部件的SMC 128。作为分析的第一可选部件,SMC 128可以使用状态确定逻辑1004来定义其正在做出的分配的状态,例如,作为保留的或非保留的,专用的或完全共享的等等。例如,假定SMC 128从针对服务的租户功能实例接收到请求。作为响应,SMC 128可以决定配置本地加速部件以提供服务,并且在该过程中,将该分配指定为非保留的,例如,在该请求可以是针对服务的“一次性”请求的初始假设下。在另一情形下,假设SMC 128做出附加的确定,即,相同的租户功能实例在短时间内已经重复地做出针对同一服务的请求。在这种情形下,SMC 128可以做出与上文所描述的分配决定相同的分配决定,但是这次SMC 128可以将其指定为保留。SMC 128还可以可选地将该服务指定为仅专用于请求租户功能。通过这样做,SMC 128可以使得数据处理***102功能能够更有效地满足租户功能示例针对该服务的未来请求。换句话说,在本地加速部件被本地主机部件大量使用时,保留状态可能会降低SMC 128在稍后将服务从本地加速部件移出的机会。
另外,租户功能(或本地主机部件)实例可以特定地请求它被授予本地加速部件的保留和专用使用。状态确定逻辑1004可以在确定是否兑现该请求时使用不同的环境特定规则。比如,状态确定逻辑1004可以决定兑现该请求,只要没有接收到引起覆盖该请求的其他触发事件。状态确定逻辑1004可以覆盖该请求,比如,当其尝试履行基于任何环境特定原因而被确定为紧迫性比租户功能的请求更大的另一请求。
在一些实现方式中,应当指出,租户功能(或本地主机部件或服务的某个其他消费者)实例可以独立地控制其本地资源的使用。例如,本地主机部件可以将利用信息传递到管理功能122,其指示其本地加速部件不可用或不完全可用,而不管本地加速部件在此刻实际上是否是忙碌的。这样做时,本地主机部件可能会组织SMC 128“窃取”其本地资源。不同的实现方式可以使用不同的环境特定规则来确定实体是否被准许以上文所描述的方式限制对其本地资源的访问,如果是,在何种情形下发生。
在另一示例中,假设SMC 128确定针对具体服务的需求普遍增加。作为响应,SMC128可以找到与加速部件的“池”相对应的规定数目个空闲加速部件,然后将该加速部件的池指定为用于提供具体服务的保留(但完全共享)资源。之后,SMC 128可以检测针对具体服务的需求的普遍降低。作为响应,SMC 128可以例如通过将先前被注册为“保留”的一个或多个加速部件的状态改变为“未保留”来减少保留的加速部件的池。
应当指出,上文所描述的状态的具体维度(保留与非保留,专用与完全共享)通过说明方式而非限制方式来引用。其他实现方式可以采用任何其他与状态相关的维度,或者可以仅适应单个状态指定(因此省略对状态确定逻辑1004的功能的使用)。
作为分析的第二部件,SMC 128可以使用尺寸确定逻辑1006来确定适于提供服务的若干个加速部件。SMC 128可以基于与服务相关联的处理需求的考虑以及可用于满足这些处理需求的资源来做出这样的确定。
作为分析的第三部件,SMC 128可以使用类型确定逻辑1008来确定适于提供服务的加速部件的类型。例如,考虑数据处理***102具有加速部件的异构集合的情况,这些加速部件具有不同的相应能力。类型确定逻辑1008可以确定适于提供服务的具体类型的加速部件中的一个或多个加速部件。
作为分析的第四部件,SMC 128可以使用布局确定逻辑1010来确定适于寻址具体触发事件的特定加速部件(或多个加速部件)。这一决定反过来又可以有一个或多个方面。比如,作为其分析的一部分,布局确定逻辑1010可以确定配置加速部件以执行服务是否合适,其中该部件当前未被配置成执行服务。
通过说明而非限制的方式引用分析的上述各方面。在其他实现方式中,SMC 128可以提供附加的分析阶段。
通常,SMC 128基于一个或多个映射考虑来执行其各种分配确定。例如,一个映射考虑可以涉及在数据存储装置1012中提供的历史需求信息。
然而,应当指出,SMC 128不是在所有情况下都需要执行多因素分析。在一些情况下,比如,主机部件可以针对与单个固定位置相关联的服务(例如,与本地加速部件或远程加速部件相对应)做出请求。在那些情况下,SMC 128可以简单地听从位置确定部件124以将服务请求映射到服务的地址,而不是以不同的方式评估执行服务的成本和收益。在其他情况下,数据存储装置126可以将多个地址与单个服务相关联,每个地址与可以执行服务的加速部件相关联。SMC 128可以在向具体地址分配针对服务的请求时使用任何映射考虑,诸如负载平衡考虑。
作为其操作的结果,SMC 128可以用将服务映射到可以找到那些服务的地址的信息来更新数据存储装置126(假定该信息已被SMC128改变)。SMC 128还可以存储涉及新的服务到部件分配的状态信息。
为了配置一个或多个加速部件以执行功能(如果尚未如此配置),SMC 128可以调用配置部件1014。在一个实现方式中,配置部件1014通过将配置流发送到加速部件来配置加速部件。配置流指定要“被编程”到接收方加速部件中的逻辑。配置部件1014可以使用不同的策略来配置加速部件,其中几个在下文进行阐述。
故障监视部件1016确定加速部件是否已经出现故障。SMC 128可以通过用备用加速部件替换故障加速部件来响应故障通知。
B.1.SMC在请求驱动模式下的操作
图11提供当被应用于处理在主机部件上运行的租户功能实例的请求的任务时,SMC 128的一种操作方式的概述。在所图示的场景中,假设主机部件1102实现多个租户功能(T1,T2,...,Tn)实例。每个租户功能实例可以与至少部分地在主机部件1102上执行的软件程序相对应,例如,在使用主机部件1102的物理资源运行的虚拟机中(除了其他可能的主机部件之外)。进一步假设一个租户功能实例通过生成针对具体服务的请求来发起图11所示的事务。例如,租户功能可以执行照片编辑功能,并且可以调用作为其整体操作的一部分的压缩服务。或者,租户功能可以执行搜索算法,并且可以调用作为其整体操作的一部分的排名服务。
在操作(1)中,本地主机部件1102可以向SMC 128发送其针对服务的请求。在操作(2)中,除了其他分析之外,SMC 128可以确定至少一个适当的部件来实现服务。在这种情况下,假设SMC 128确定远程加速部件1104是实现该服务的最适当部件。SMC 128可以从位置确定部件124获得该加速部件1104的地址。在操作(3)中,SMC 128可以将其答案传达给本地主机部件1102,例如,以与服务相关联的地址的形式。在操作(4)中,本地主机部件1102可以经由其本地加速部件1106来调用远程加速部件1104。处理租户功能的请求的其他方式是可能的。例如,本地加速部件1106可以查询SMC 128,而非本地主机部件102,或除本地主机部件102之外。
路径1108表示其中代表性加速部件1110(和/或其相关联的本地主机部件)向SMC128传达利用信息的示例。利用信息可以标识加速部件1110是全部或部分可供使用还是不能使用。利用信息还可以可选地指定加速部件1110所拥有的、可供使用的处理资源的类型。如上文所指出的,还可以选择利用信息来有目的地组织SMC 128稍后利用加速部件1110的资源,例如,通过全部或部分地指示资源不可用。
尽管未示出,但是任何加速部件还可以向SMC 128做出针对特定资源的定向请求。例如,主机部件1102可以特定地要求使用其本地加速部件1106作为保留和专用资源。如上文所指出的,SMC 128可以在确定是否兑现这样的请求时使用不同的环境特定规则。
进一步地,尽管未示出,除了主机部件之外的其他部件可以做出请求。例如,硬件加速部件可以运行租户功能实例,其发出可以由其本身、另一硬件加速部件(或多个加速部件)、主机部件(或多个部件)等或其任何组合满足的针对服务的请求。
图12至图15示出了处理驻留在主机部件上的由租户功能做出的针对服务的请求的不同的相应选项。从图12开始,假设本地主机部件1202包括至少两个租户功能实例T1(1204)和T2(1206),两者都同时运行(但实际上,本地主机部件1202可以托管更多的租户功能实例)。第一租户功能实例T1需要加速服务A1来执行其操作,而第二租户功能实例T2需要加速服务A2来执行其操作。
进一步假设本地加速部件1208例如经由PCIe本地链路等与本地主机部件1202耦合。在当前时刻,本地加速部件1208托管用于执行加速服务A1的A1逻辑1210、以及用于执行加速服务A2的A2逻辑1212。
根据一个管理决定,SMC 128将T1指派给A1逻辑1210,并且将T2指派给A2逻辑1212。然而,由SMC 128做出的该决定不是固定的规则;如将要描述的,SMC 128可以基于多个因素来做出其决定,其中一些因素可能反映了相互矛盾的考虑。如此,基于其他因素(在此时未描述),SMC 128可以选择以与图12所示的方式不同的方式将作业指派给加速逻辑。
在图13的场景中,主机部件1302具有与上文所描述的服务需求相同的服务需求的相同的租户功能实例(1304,1306)。但是,在这种情况下,本地加速部件1308仅包括用于执行服务A1的A1逻辑1310。也就是说,它不再托管用于执行服务A2的A2逻辑。
响应于上述场景,SMC 128可以选择将T1指派给加速部件1308的A1逻辑1310。然后,SMC 128可以将T2指派给远程加速部件1314的A2逻辑1312,该A2逻辑1312已经被配置成执行该服务。再次,所图示的指派在这里本着说明而非限制的精神得以阐述;SMC 128可以基于输入考虑的另一组合来选择不同的分配。在一个实现方式中,本地主机部件1302和远程加速部件1314可以可选地压缩它们彼此发送的信息,例如,以减少带宽的消耗。
应当指出,主机部件1302经由本地加速部件1308访问A2逻辑1312,但是在另一情况(未图示)中,主机部件1302可以经由与加速部件1314相关联的本地主机部件(未图示)访问A2逻辑1312。
图14呈现了其中主机部件1402具有与上文所描述的服务需求相同的服务需求的相同的租户功能实例(1404,1406)的另一场景。在这种情况下,本地加速部件1408包括用于执行服务A1的A1逻辑1410和用于执行服务A3的A3逻辑1412。进一步假设数据存储装置1002中的可用性信息指示A3逻辑1412当前未被任何租户功能实例使用。响应于上述场景,SMC128可以使用(图10的)配置部件1014以重新配置加速部件1408,使得它包括A2逻辑1414而不包括A3逻辑1412(如图14的底部所示)。然后,SMC 128可以将T2指派给A2逻辑1414。尽管未示出,但是SMC 128可以可替代地或另外决定重新配置任何远程加速部件以执行A2服务。
通常,SMC 128可以以完全方式或部分方式执行配置,以满足租户功能实例的任何请求。SMC通过重新配置加速部件所提供的所有应用逻辑来执行完整配置。SMC 128可以通过重新配置由加速部件提供的应用逻辑的部分(例如,一个或多个瓦片)来执行部分配置,从而在重新配置期间保持其他部分(例如,一个或多个其他瓦片)完整且可操作。对于在下文所描述的SMC 128在背景操作模式下的操作也是如此。进一步地,应当指出,附加因素可能在确定A3逻辑1412是否是用于重新配置的有效候选者时可能发挥作用,诸如服务是否被认为是保留的,是否存在针对该服务的待决请求等。
图15呈现了其中主机部件1502具有与上文所描述的服务需求相同的服务需求的相同的租户功能实例(1504,1506)的另一场景。在这种情况下,本地加速部件1508仅包括用于执行服务A1的A1逻辑1510。响应于上述场景,SMC 128可以将T1指派给A1逻辑1510。进一步地,假设SMC 128确定对于任何加速部件执行A2服务是不可行的。作为响应,如果实际上该逻辑在主机部件1502处可用,则SMC 128可以指令本地主机部件1502将T2指派给本地A2软件逻辑1512。SMC 128可以基于各种理由来做出图15的决定。例如,SMC 128可能得出结论:硬件加速是不可能的,因为当前不存在针对该服务的配置图像。或者,可能存在配置图像,但是SMC 128得出结论:加速设备中的任一加速设备的容量都不足以加载和/或运行这样的配置。
最后,上述示例在在主机部件上运行的租户功能实例的上下文中进行了描述。但是如上文已经指出的,租户功能实例可以更一般地与服务请求者相对应,并且那些服务请求者可以在包括加速部件的任何部件上运行。因此,例如,在加速部件上运行的请求者可以生成针对要由一个或多个其他加速部件和/或由其自身和/或由一个或多个主机部件执行的服务的请求。SMC 102可以以上文所描述的方式中的任一方式处理请求者的请求。
B.2.SMC在背景模式下的操作
图16提供了当在背景模式下操作时SMC 128的一种操作方式的概述。在操作(1)中,SMC 128可以接收启动SMC 128的操作的某个类型的触发事件。例如,触发事件可以与影响服务的需求改变等相对应。在操作(2)中,响应于触发事件,SMC 128基于一个或多个映射考虑和数据存储装置1002中的可用性信息来确定一个或多个服务向加速部件的分配,例如,通过将服务指派给一个或多个可用的加速部件的集合。在操作(3)中,SMC 128执行其分配决定。作为该过程的一部分,SMC 128可以调用配置部件1014来配置已经被分配以执行服务的加速部件,假定这些部件尚未被配置成执行服务。SMC 128还更新数据存储装置126中的服务位置信息,并且如果合适,更新数据存储装置1002中的可用性信息。
在图16的具体示例中,SMC 102分配第一加速部件组1602以执行第一服务(“服务y”),并且分配第二加速部件组1604以执行第二服务(“服务z”)。在实际实践中,所分配的加速部件组可以具有任意数目个成员,并且这些成员可以以任何方式跨越硬件加速平面106分布。然而,SMC 128可以尝试以具体方式对与服务相关联的加速部件进行分组,以实现令人满意的带宽和等待时间性能(除其他因素之外)。SMC 128可以在分配与单个多部件服务相关联的加速部件时应用进一步分析。
SMC 128还可以以背景模式操作,以将实现具体服务的一个或多个加速部件分配给至少一个租户功能实例,而不一定要求租户功能每次针对该具体服务做出请求。例如,假设租户功能实例经常使用与图16中的“服务z”相对应的压缩功能。SMC 128可以主动地将一个或多个专用加速部件1604分配给至少该租户功能实例。当租户功能需要使用服务时,它可以从与已指派给它的加速部件1604相关联的可用地址池中得到。相对于租户功能实例组(而非单个实例),可以执行相同的专用映射操作。
B.3.管理功能的物理实现方式
图17示出了图10的管理功能122的第一物理实现方式。在这种情况下,管理功能122在单个全局管理部件(MG)1702上或者在多个全局管理部件(1702,...,1704)上被提供。如果使用多个全局管理部件(1702,...,1704),则它们可以提供冗余逻辑和信息以实现所需的负载平衡和故障管理性能。在一种情况下,每个全局管理部件可以在可以与主机部件中的一个主机部件或专用管理计算设备相对应的计算机服务器设备上实现。在操作中,任何个体的主机部件(S)或加速部件(H)可以经由图1所示的公共网络120与全局管理部件交互。
图18示出了图10的管理功能122的第二物理实现方式。在这种情况下,每个服务器单元部件(诸如代表***器单元部件1802)提供至少一个本地管理部件(ML)1804。例如,本地主机部件1806可以实现本地管理部件1804(例如,作为其管理程序功能的一部分),或者本地加速部件1808可以实现本地管理部件1804,或服务器单元部件1802内的一些其他部件可以实现本地管理部件1804(或其某种组合)。数据处理***102还包括一个或多个全局管理部件(1810,...,1812)。每个全局管理部件可以以上文关于图17所描述的方式提供冗余逻辑和信息。如上文所阐述的,管理功能122共同地呈现数据处理***102中的所有本地和全局管理部件。
图18的体系架构可以以下列方式实现SMC 128的请求驱动的方面。本地管理部件1804可以首先确定本地加速部件1808是否可以执行租户功能所请求的服务。在本地加速部件1808不能执行该任务的情况下,全局管理部件(MG)可以执行其他决定,诸如标识用于执行服务的远程加速部件。另一方面,在图17的体系架构中,单个全局管理部件可以执行涉及将请求映射到加速部件的所有决定。
进一步地,本地管理部件1804可以在诸如周期性基础和/或事件驱动的基础(例如,响应于利用改变)之类的任何基础上向全局管理部件发送利用信息。全局管理部件可以使用利用信息在数据存储装置1002中更新其可用性信息的主记录。
图19示出了图10的管理功能122的第三物理实现方式。在这种情况下,每个服务器单元部件存储其自己的专用本地管理部件(ML)(其可以由作为其管理程序功能的一部分的本地主机部件、本地加速部件、某些其他本地部件或其某种组合来实现)。比如,服务器单元部件1902提供本地管理部件1904、以及本地主机部件1906和本地加速部件1908。同样地,服务器单元部件1910提供本地管理部件1912、以及本地主机部件1914和本地加速部件1916。本地管理部件的每个实例存储关于相同部件的其他实例的冗余逻辑和信息。已知的分布式***工具可以用于确保该部件的所有分布式版本都包含相同的逻辑和信息,诸如Maryand的Forest Hill的Apache Software Foundation提供的ZOOKEEPER工具。(除此之外,应当指出,相同的技术可以用于维护本小节中描述的其他示例中的冗余逻辑和信息。)如上文所阐述的,管理功能122将数据处理***102中的所有本地管理部件集中地呈现。也就是说,在这个实现方式中没有中央的全局管理部件。
图20示出了图10的管理功能122的第四物理实现方式。在这种情况下,管理功能122实现了个体管理部件的层次结构。例如,在一个仅代表性的结构中,每个服务器单元部件包括低层本地管理部件(ML3)(其可以由本地主机部件、本地加速部件、一些其他本地部件或其某个组合来实现)。例如,服务器单元部件2002提供了低层本地管理部件2004、以及本地主机部件2006和本地加速部件2008。同样地,服务器单元部件2010提供了低层本地管理部件2012、以及本地主机部件2014和加速部件2016。该结构的下一管理层至少包括中层管理部件2018和中层管理部件2020。该结构的顶层包括单个全局管理部件2022(或多个冗余的这种全局管理部件)。因此,所图示的控制体系架构形成具有三个层级的结构,但是体系架构可以具有任何数目个层级。
在操作中,低级管理部件(2004,2012,...)处理直接影响与个体服务器单元部件相关联的资源的某些低级管理决定。中层管理部件(2018,2020)可以做出影响数据处理***102的相关部分的决定,诸如个体机架或机架组。顶层管理部件(2022)可以做出全局决定,其广泛应用于整个数据处理***102。
B.4.配置部件
图21至图24示出了用于配置加速部件的不同的相应策略,其与实现图10的配置部件1014的不同方式相对应。从图21开始,全局管理部件2102访问数据存储装置2104,数据存储装置2104提供一个或更多的配置图像。每个配置图像包含可用于实现相应服务的逻辑。全局管理部件2102可以通过将配置流(对应于配置图像)转发到加速部件来配置加速部件。例如,在一种方法中,全局管理部件2102可以将配置流发送到与特定服务器单元部件2108相关联的本地管理部件2106。本地管理部件2106可以随后基于所接收的配置流来协调本地加速部件2110的配置。或者,本地主机部件2112可以代替本地管理部件2106、或除本地管理部件2106之外执行上文所描述的操作。
图22示出了用于配置加速部件的另一策略。在这种情况下,全局管理部件2202向服务器单元部件2206的本地管理部件2204发送指令。作为响应,本地管理部件2204访问本地数据存储装置2208中的配置图像,然后使用它来配置本地加速部件2210。可替代地,本地主机部件2212可以代替本地管理部件2204、或除了本地管理部件2204之外执行上文所描述的操作。
图23示出了用于配置本地加速部件2302的另一技术。在该途径中,假设加速部件2302包括应用逻辑2304,其又由当前模型2306支配(其中模型与以具体方式执行功能的逻辑相对应)。进一步假定加速部件2302可以访问本地存储装置2308。本地存储装置2308存储与一个或多个其他模型(模型1,...,模型n)相关联的配置图像。当被触发时,本地模型加载部件2310可以用与本地存储装置2308中的另一模型相关联的配置来置换与当前模型2306相关联的配置。模型加载部件2310可以由加速部件2302本身、主机部件、本地管理部件等、或其组合来实现。在一个实现方式中,图23所示的配置操作可以在比作为整体的应用逻辑2304的总体重新配置更少的时间内执行,因为它需要替换应用逻辑2304使用的逻辑中的一些逻辑,而非以大规模的方式替换整个应用逻辑2304。
最后,图24示出了具有支持部分配置的应用逻辑2402的加速部件。管理功能122可以通过将应用1(2404)与应用2(2406)分开配置来利用该功能,反之亦然。
C.硬件加速部件的说明性实现方式
图25示出了图1的数据处理***中的加速部件2502的一种实现方式,该加速部件2502可以被物理地实现为FPGA设备。应当指出,下文所呈现的细节是本着说明而非限制的精神进行阐述;与图25所示的加速部件相比较,其他数据处理***可以使用具有以一种或多种方式变化的体系架构的加速部件。进一步地,其他数据处理***可以采用包括具有不同类型的加速部件的异构设计。
从高层观点来看,加速部件2502可以被实现为具有不同功能层的层次结构。在最低层级处,加速部件2502提供“外壳”,其提供跨大多数应用场景通常保持相同的基本接口相关部件。位于外壳内部的核心部件2504可以包括“内壳”和应用逻辑2506。内壳与核心部件2504中的除了应用逻辑2506之外的所有资源相对应,并且表示在某个应用场景集合中保持相同的第二级别的资源。应用逻辑2506本身表示最容易受到改变的最高级别的资源。但是,应当指出,加速部件2502的任何部件在技术上都可以进行重新配置。
在操作中,应用逻辑2506以与软件实现的应用与其底层操作***资源交互的方式类似的方式,与外壳资源和内壳资源进行交互。从应用开发的角度来看,使用公共外壳资源和内壳资源可以使开发人员不必为他或她创建的每个应用重新创建这些公共部件。这种策略还降低了开发人员可能会以导致作为整体的数据处理***102内的问题的方式来更改核内壳或外壳功能的风险。
首先参考外壳,加速部件2502包括桥接器2508,其用于将加速部件2502耦合到网络接口控制器(经由NIC接口2510)和本地机架顶交换机(经由TOR接口2512)。桥接器2508支持两种模式。在第一节点中,桥接器2508提供允许来自NIC或TOR的业务流入加速部件2502以及来自加速部件2502的业务流出到NIC或TOR的数据路径。加速部件2502可以对其“拦截”的业务执行任何处理,诸如压缩、加密等。在第二模式下,桥接器2508支持允许业务在NIC和TOR之间流动的数据路径,而不会由加速部件2502进一步处理。在内部,桥接器可以由缓冲所接收的分组的各种FIFO(2514,2516)以及将分组路由到其所期望的目的地的各种选择器和仲裁逻辑组成。旁路控制部件2518控制桥接器2508是在第一模式还是在第二模式下操作。
存储器控制器2520支配加速部件2502和本地存储器2522(诸如DRAM存储器)之间的交互。存储器控制器2520可以执行作为其服务的一部分的纠错。
主机接口2524提供使得加速部件能够与本地主机部件(图25中未示出)交互的功能。在一个实现方式中,主机接口2524可以结合直接存储器访问(DMA)使用快速***部件互连(PCIe)来与本地主机部件交换信息。
最后,壳可以包括各种其他特征2526,诸如时钟信号发生器、状态LED、纠错功能等等。
在一个实现方式中,内壳可以包括路由器2528,其用于在加速部件2502的各种内部部件之间以及加速部件2502和外部实体之间(经由运输部件2530)路由消息。每个这样的端点与相应的端口相关联。例如,路由器2528耦合到存储器控制器2520、主机接口1120、应用逻辑2506和运输部件2530。
运输部件2530规划用于传输到远程实体(诸如远程加速部件)的分组,并且从远程加速部件(诸如远程加速部件)接收分组。
3端***换机2532当被激活时,通过在NIC和TOR之间、以及在NIC或TOR和与加速部件2502本身相关联的本地端口之间路由分组来接管桥接器2508的功能。
最后,可选的诊断记录器2534将关于路由器2528、运输部件2530和3端***换机2532执行的操作的事务信息存储在循环缓冲器中。例如,事务信息可以包括关于分组的来源和目的地IP地址、主机特定数据、时间戳等的数据。技术人员可以研究事务信息的日志以尝试诊断加速部件2502中的故障或次优性能的原因。
图26示出了加速部件3202,其包括单独的可配置域(2604,2606,...)。配置部件(例如,图10的配置部件1014)可以配置每个可配置域,而不影响其他可配置域。因此,配置部件1014可以配置一个或多个可配置域,同时其他可配置域正在基于它们相应的配置来执行操作,这些配置不受干扰。
在一些实现方式中,图1的数据处理***102可以动态地重新配置其加速部件以解决任何映射考虑。该重新配置可以在部分和/或全部服务的基础上执行,并且可以在周期性和/或事件驱动的基础上执行。实际上,在一些情况下,数据处理***102可能在通过重新配置其加速逻辑来使其本身适应数据处理***102中的变化条件的过程中看起来是继续的。
C.1.本地链路
图27示出了本地主机部件2702通过其可以经由图25所示的主机接口2524(例如,结合DMA存储器传送来使用PCIe)向其本地加速部件2704转发信息的功能。在一个非限制性协议中,在操作(1)中,主机逻辑2706将要处理的数据放入与主机逻辑2706相关联的主存储器中的内核固定式(kernel-pinned)输入缓冲器2708。在操作(2)中,主机逻辑2706指令加速部件2704取回数据并且开始处理它。主机逻辑的线程然后被置于睡眠状态,直到它从加速部件2704接收到通知事件为止,或者它继续异步处理其他数据。在操作(3)中,加速部件2704从主机逻辑的存储器传送数据并且将其放置在加速部件输入缓冲器2710中。
在操作(4)和(5)中,应用逻辑2712从输入缓冲器2710取回数据,处理它以生成输出结果,并且将输出结果放置在输出缓冲器2714中。在操作(6)中,加速部件2704将输出缓冲器2714的内容复制到主机逻辑的存储器中的输出缓冲器中。在操作(7)中,加速部件通知主机逻辑2706该数据准备好被取回。在操作(8)中,主机逻辑线程唤醒并且消费输出缓冲器2716中的数据。然后,主机逻辑2706可以丢弃输出缓冲器2716的内容,其允许加速部件2704在下一事务中重用它。
C.2.路由器
图28示出了在图25中引入的路由器2528的一个实现方式。路由器包括用于从相应端口接收消息的任何数目个输入单元(这里为四个,2802、2804、2806、2808)以及用于将消息转发到相应的端口的任意数目个输出单元(这里为四个,2810、2812、2814、2814)。如上文所描述的,与端口相关联的端点包括存储器控制器2520、主机接口2524、应用逻辑2506和运输部件2530。交叉开关部件2818基于与消息相关联的地址信息将消息从输入端口转发到输出端口。更特定地,消息由多个“微片”(flits)组成,并且路由器2528在逐个微片的基础上发送消息。
在一个非限制性实现方式中,路由器2528支持用于在相同物理链路上传送不同类别的业务的若干个虚拟信道(诸如八个)。也就是说,针对由应用逻辑2506实现多个服务的那些场景,路由器2528可以支持多个业务类别,并且这些业务需要在业务的单独类别上进行通信。
路由器2528可以使用基于信用的流技术来管理对路由器的资源(例如,其可用的缓冲空间)的访问。在该技术中,输入单元(2802至2808)向上游实体提供与其缓冲器中可用的确切数目个微片相对应的信用。该信用授权上游实体将其数据传送到输入单元(2802至2808)的权利。更特定地,在一个实现方式中,路由器2528支持可以在多个虚拟信道之间共享的“弹性”输入缓冲器。输出单元(2810至2816)负责跟踪其下游接收器中的可用信用,并且向正在请求向给定输出端口发送微片的任何输入单元(2802至2808)提供授权。
C.3.运输部件
图29示出了在图25中引入的运输部件2530的一个实现方式。运输部件2530可以提供寄存器接口来在节点之间建立连接。也就是说,每个这样的连接是单向的,并且将源部件上的发送队列链接到目的地部件上的接收队列。在运输部件2530可以传送或接收数据之前,软件过程可以通过静态地分配连接来建立连接。数据存储装置2902存储控制连接状态的两个表,发送连接表和接收连接表。
分组处理部件2904处理从路由器2528到达的、目的地为远程端点(例如,另一加速部件)的消息。它通过缓冲和分组化消息来实现。分组处理部件2904还处理从一些远程端点接收并且目的地为路由器2528的分组。
对于从路由器2528到达的消息,分组处理部件2904将每个消息请求匹配到发送连接表中的发送连接表条目,例如,使用如由路由器2528提供的、与消息相关联的报头信息和虚拟信道(VC)信息作为查询项。分组处理部件2904使用从发送连接表条目取回的信息(诸如顺序号、地址信息等)来构建其发送给远程实体的分组。
更特定地,在一种非限制性途径中,分组处理部件2904将分组封装在UDP/IP以太网帧中,并且将它们发送到远程加速部件。在一个实现方式中,分组可以包括以太网报头,其后是IPv4报头,随后是UDP报头,随后是传送报头(特定地与运输部件2530相关联),再随后是有效载荷。
对于从网络到达的分组(例如,如在3端***换机2532的本地端口上接收到的),分组处理部件2904将每个分组匹配到分组报头中提供的接收可连接表条目。如果存在匹配,则分组处理部件取回条目的虚拟频道字段,并且使用该信息将接收到的消息转发到路由器2528(按照路由器2528所使用的信用流技术)。
故障处理部件2906缓冲所有发送的分组,直到其从接收节点(例如,远程加速部件)接收到确认(ACK)为止。如果针对连接的ACK在指定的超时周期内没有到达,则故障处理部件2906可以重传该分组。故障处理部件2906将以规定次数(例如,128次)重复这样的重传。如果在所有这些尝试之后分组仍然未被确认,则故障处理部件2906可以丢弃它并且释放其缓冲器。
C.4.3端***换机
图30示出了3端***换机2532的一个实现方式。3端***换机2532操作以将加速部件生成的网络分组安全地***(并且移除)到数据中心网络上,而不会损害主机到TOR网络业务。
3端***换机2532连接到NIC接口2510(与主机接口相对应)、TOR接口2512以及与本地加速部件2502本身相关联的本地接口。3端***换机2532可以被概念化为包括接收接口(3002,3004,3006),其用于分别从主机部件和TOR交换机接收分组,并且用于在本地加速部件处接收分组。3端***换机2532还包括发送接口(3008,3010,3012),其用于分别向TOR交换机和主机部件提供分组,以及接收由本地加速部件传送的分组。
分组分类器(3014,3016)例如基于由分组指定的状态信息来确定从主机部件或TOR交换机接收的分组类别。在一个实现方式中,每个分组被分类为属于无损流(例如,远程直接存储器访问(RDMA)业务)或有损流(例如,传输控制协议/因特网协议(TCP/IP)业务))。属于无损流的业务不容忍丢包,而属于有损流的业务可以容忍一些丢包。
分组缓冲器(3018,3020)根据它们所属的业务的类别将传入分组存储在不同的相应缓冲器中。如果缓冲器中没有可用空间,则分组将被丢弃。(在一个实现方式中,因为应用逻辑2506可以通过使用“反压(back pressuring)”来调节分组的流,所以3端***换机2532没有提供用于由本地加速部件(经由本地端口)提供的分组的分组缓冲。)仲裁逻辑3022在可用分组中选择并且传送所选择的分组。
如上文所描述的,目的地为本地加速部件的业务被封装在固定端口号码上的UDP/IP分组中。3端***换机2532检查传入分组(例如,如从TOR接收的)来确定它们是否是正确端口号码上的UDP分组。如果是,则3端***换机2532输出本地RX端口接口3006上的分组。在一个实现方式中,到达本地TX端口接口3012上的所有业务都从TOR TX端口接口3008发送出去,但也可以被发送到主机TX端口接口3010。进一步地,应当指出,图30指示加速部件2502拦截来自TOR的业务而不拦截来自主机部件的业务,但是也可以配置成拦截来自主机部件的业务。
PFC处理逻辑3024允许3端***换机2532将优先级流控制帧***到被传送到TOR或主机部件的业务流中。也就是说,对于无损业务类别,如果分组缓冲器填满,则PFC处理逻辑3024向链路伙伴发送PFC消息,请求暂停该类别上的业务。如果在主机RX端口接口3002或TOR RX端口接口3004上接收到无损业务类别的PFC控制帧,则3端***换机2532将停止在接收到控制消息的端口上发送分组。
C.5.说明性主机部件
图31示出了与图1所示的主机部件(S)中的任一主机部件相对应的主机部件3102的一个实现方式。主机部件3102可以包括一个或多个处理设备3104,诸如一个或多个中央处理单元(CPU),每个处理单元可以实现一个或多个硬件线程。主机部件3102还可以包括任何存储资源3106,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储资源3106可以包括以下任一项:任何类型的RAM,任何类型的ROM,闪存设备,硬盘,光盘等。更一般地,任何存储资源都可以使用任何技术来存储信息。进一步地,任何存储资源可以提供信息的易失性或非易失性保留。进一步地,任何存储资源可以表示主机部件3102的固定或可移除部件。在一种情况下,当处理设备3104执行被存储在任何存储资源或存储资源的组合中的相关联的指令时,主机部件3102可以执行与本地租户功能相关联的操作中的任一操作。主机部件3102还包括用于与任何存储资源交互的一个或多个驱动机构3108,诸如硬盘驱动机构、光盘驱动机构等。
主机部件3102还包括输入/输出模块3110,其用于接收各种输入(经由输入设备3112)和用于提供各种输出(经由输出设备3114))。一个具体输出机构可以包括呈现设备3116和相关联的图形用户接口(GUI)3118。主机部件3102还可以包括一个或多个网络接口3120,其用于经由一个或多个通信管道3122与其他设备交换数据。一个或多个通信总线3124将上文所描述的部件通信地耦合在一起。
通信管道3122可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信管道3722可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
以下总结提供了本文中所阐述的技术的说明性方面的非穷尽性列表。
根据第一方面,描述了一种数据处理***,其包括两个或更多个主机部件,每个主机部件使用一个或多个中央处理单元来执行机器可读指令,两个或更多个主机部件共同提供软件平面。该数据处理***还包括共同提供硬件加速平面的两个或更多个硬件加速部件。数据处理***还包括用于允许主机部件彼此通信以及允许硬件加速部件彼此通信的公共网络。进一步地,硬件加速平面中的硬件加速部件具有使得硬件加速部件能够以透明方式彼此通信而无需来自软件加速平面的协助的功能。
根据第二方面,硬件加速平面中的上述两个或更多个硬件加速部件与现场可编程门阵列(FPGA)设备相对应。
根据第三方面,软件平面中的上述两个或更多个主机部件经由第一逻辑网络通过公共网络交换分组,并且硬件加速平面中上述两个或更多个硬件加速部件经由第二逻辑网络通过公共网络交换分组。第一逻辑网络和第二逻辑网络共享公共网络的物理链路,并且基于它们的相应分组所属的业务类别而被彼此区分。
根据第四方面,通过第二逻辑网络发送的分组在所标识的端口上使用指定协议,其构成将通过第二逻辑网络发送的分组区别于通过第一逻辑网络发送的分组的特性。
根据第五方面,数据处理***还包括多个服务器单元部件。每个服务器单元部件包括:本地主机部件;本地硬件加速部件;以及用于将本地主机部件与本地硬件加速部件耦合的本地链路。本地硬件加速部件被耦合到公共网络,并且用作管道,本地主机部件与公共网络通过该管道通信。
根据第六方面,至少一个服务器单元部件包括多个本地主机部件和/或多个本地硬件加速部件。
根据第七方面,本地硬件加速部件被耦合到数据中心中的机架顶交换机。
根据第八方面,本地硬件加速部件还被耦合到网络接口控制器,并且网络接口控制器被耦合到本地主机部件。
根据第九方面,本地主机部件或本地硬件加速部件被配置成发出针对服务的请求;以及接收对请求的的回复,其标识该服务的地址。本地硬件加速部件被配置成:当已标识的地址涉及由本地硬件加速部件本地实现的功能时,本地执行服务;以及当已标识的地址涉及由远程硬件加速部件远程实现的功能时,经由公共网络将请求路由到具体远程硬件加速部件。再者,本地硬件加速部件被配置成执行路由,而没有牵涉到本地主机部件。
根据第十方面,数据处理***还包括用于响应于该请求而标识地址的管理功能。
根据第十一方面,描述了一种用于在数据处理环境中执行功能的方法。该方法包括:在使用一个或多个中央处理单元执行机器可读指令的本地主机部件中,或在被耦合到本地主机部件的本地硬件加速部件中执行以下操作:(a)发出针对服务的请求;以及(b)接收对请求的回复,其标识该服务的地址。该方法还包括:在本地硬件加速部件中执行以下操作:(a)当已标识的地址涉及由本地硬件加速部件本地实现的功能时,本地执行服务;以及(b)当已标识的地址涉及由远程硬件加速部件远程实现的功能时,将请求路由到远程硬件加速部件。再者,本地硬件加速部件被配置成执行到远程硬件加速部件的路由,而没有牵涉到本地主机部件。进一步地,多个主机部件在数据处理环境中彼此通信,并且多个硬件加速部件通过公共网络在数据处理环境中彼此通信。
根据第十二方面,上文所描述的方法中的每个硬件加速部件与现场可编程门阵列(FPGA)设备相对应。
根据第十三方面,上文所描述的方法中的公共网络支持共享公共网络的物理链路的第一逻辑网络和第二逻辑网络。数据处理环境中的主机部件使用第一逻辑网络彼此交换分组,数据处理环境中的硬件加速部件使用第二逻辑网络来彼此交换分组。第一逻辑网络和第二逻辑网络基于它们相应的分组所属的业务类别而被彼此区分。
根据第十四方面,通过上文所描述的方法中的第二网络发送的分组在所标识的端口上使用指定协议,其构成将通过第二逻辑网络发送的分组区别于通过第一逻辑网络发送的分组的特性。
根据第十五方面,上文所描述的方法中的本地硬件加速部件被耦合到公共网络,并且本地主机部件经由本地硬件加速部件与公共网络交互。
根据第十六方面,上文所描述的方法中的本地硬件加速部件被耦合到数据中心中的机架顶交换机。
根据第十七方面,描述了一种数据中心中的服务器单元部件。该服务器单元部件包括:本地主机部件,其使用一个或多个中央处理单元执行机器可读指令;本地硬件加速部件;以及本地链路,其用于耦合本地主机部件与本地硬件加速部件。本地硬件加速部件被耦合到公共网络,并且用作管道,本地主机部件与公共网络通过该管道通信。更一般地,数据中心包括多个主机部件和多个硬件加速部件,其设置在其他相应的服务器单元部件中,其中公共网络用作共享管道,多个主机部件通过共享管道彼此通信以及多个硬件加速部件通过共享管道彼此通信的。进一步地,本地硬件加速部件被配置成与其他相应服务器单元部件的远程硬件加速部件交互,而没有牵涉到本地主机部件。
根据第十八方面,服务器单元部件包括多个本地主机部件和/或多个本地硬件加速部件。
根据第十九方面,本地硬件加速部件被耦合到数据中心中的机顶架交换机。
根据第二十方面,本地硬件加速部件被配置成从本地主机部件接收服务请求,并且本地硬件加速部件被配置成:(a)当与服务相关联的地址涉及由本地硬件加速部件本地实现的功能时,本地执行服务;以及(b)当该地址涉及由远程硬件加速部件远程实现的功能时,经由公共网络将请求路由到远程硬件加速部件。本地硬件加速部件被配置成执行到远程硬件加速部件的路由,而没有牵涉到本地主机部件。
第二十一方面与上述第一方面到第二十方面的任何组合(例如,任何排列或子集)相对应。
第二十二方面与与第一方面至第二十一方面相关联的任何方法对应物、设备对应物、***对应物、器件对应物、计算机可读存储介质对应物、数据结构对应物、制品对应物、图形用户接口呈现对应物等相对应。
最后,尽管主题已经以结构特征和/或方法动作特有的语言进行了描述,但是应当理解,所附权利要求中限定的主题不一定限于上文所描述的特定特征或动作。相反,上文所描述的特定特征和动作被公开为实现权利要求的示例形式。

Claims (15)

1.一种数据处理***,包括:
两个或更多个主机部件,每个主机部件使用一个或多个中央处理单元来执行机器可读指令,所述两个或更多个主机部件共同提供软件平面;
两个或更多个硬件加速部件,共同提供硬件加速平面;以及
公共网络,用于允许所述主机部件彼此通信,并且用于允许所述硬件加速部件彼此通信;
所述硬件加速平面中的所述硬件加速部件具有使得所述硬件加速部件能够以透明方式彼此通信而无需来自所述软件加速平面的协助的功能。
2.根据权利要求1所述的数据处理***,
其中所述软件平面中的所述两个或更多个主机部件经由第一逻辑网络在所述公共网络上交换分组,
其中所述硬件加速平面中的所述两个或更多个硬件加速部件经由第二逻辑网络在所述公共网络上交换分组,并且
其中所述第一逻辑网络和所述第二逻辑网络共享所述公共网络的物理链路,并且基于其相应分组涉及的业务类别而被彼此区分。
3.根据权利要求2所述的数据处理***,其中通过所述第二逻辑网络发送的分组在所标识的端口上使用指定协议,所述指定协议构成使通过所述第二逻辑网络发送的分组区别于通过所述第一逻辑网络发送的分组的特性。
4.根据权利要求1所述的数据处理***,还包括多个服务器单元部件,每个服务器单元部件包括:
本地主机部件;
本地硬件加速部件;以及
本地链路,用于将所述本地主机部件与所述本地硬件加速部件耦合,
所述本地硬件加速部件被耦合到所述公共网络并且用作管道,所述本地主机部件与所述公共网络通过所述管道通信。
5.根据权利要求4所述的数据处理***,其中所述本地硬件加速部件被耦合到数据中心中的机架顶交换机。
6.根据权利要求4所述的数据处理***,
其中所述本地硬件加速部件还被耦合到网络接口控制器,并且
其中所述网络接口控制器被耦合到所述本地主机部件。
7.根据权利要求4所述的数据处理***,
其中所述本地主机部件或者所述本地硬件加速部件被配置成:
发出针对服务的请求;以及
接收对所述请求的回复,所述回复标识所述服务的地址;并且
其中所述本地硬件加速部件被配置成:
当已经被标识的所述地址涉及由所述本地硬件加速部件本地实现的功能时,本地执行所述服务;以及
当已经被标识的所述地址涉及由所述远程硬件加速部件远程实现的功能时,经由所述公共网络将所述请求路由到特定远程硬件加速部件,
其中所述本地硬件加速部件被配置成在不牵涉到所述本地主机部件的情况下执行路由。
8.一种用于在数据处理环境中执行功能的方法,包括:
在使用一个或多个中央处理单元执行机器可读指令的本地主机部件中,或者在被耦合到所述本地主机部件的本地硬件加速部件中:
发出针对服务的请求;以及
接收对所述请求的回复,所述回复标识所述服务的地址;并且
在所述本地硬件加速部件中:
当已经被标识的所述地址涉及由所述本地硬件加速部件本地实现的功能时,本地执行所述服务;以及
当已经被标识的所述地址涉及由所述远程硬件加速部件远程实现的功能时,将所述请求路由到远程硬件加速部件,
其中所述本地硬件加速部件被配置成在不牵涉到所述本地主机部件的情况下,执行到所述远程硬件加速部件的路由,并且
其中多个主机部件在所述数据处理环境中彼此通信,并且多个硬件加速部件通过公共网络在所述数据处理环境中彼此通信。
9.一种数据中心中的服务器单元部件,包括:
本地主机部件,所述本地主机部件使用一个或多个中央处理单元执行机器可读指令;
本地硬件加速部件;以及
本地链路,用于将所述本地主机部件与所述本地硬件加速部件耦合,
所述本地硬件加速部件被耦合到公共网络并且用作管道,所述本地主机部件与所述公共网络通过所述管道通信,
其中所述数据中心包括在其他相应的服务器单元部件中被提供的多个主机部件和多个硬件加速部件,
其中所述公共网络用作共享管道,所述多个主机部件通过所述共享管道彼此通信、并且所述多个硬件加速部件通过所述共享管道彼此通信,并且
其中所述本地硬件加速部件被配置成在不牵涉到所述本地主机部件的情况下,与其他相应的服务器单元部件的远程硬件加速部件交互。
10.根据权利要求9所述的服务器单元部件,其中所述本地硬件加速部件被配置成从所述本地主机部件接收针对服务的请求,并且其中所述本地硬件加速部件被配置成:
当与所述服务相关联的地址涉及由所述本地硬件加速部件本地实现的功能时,本地执行所述服务;以及
当所述地址涉及由所述远程硬件加速部件远程实现的功能时,经由所述公共网络将所述请求路由到远程硬件加速部件,
其中所述本地硬件加速部件被配置成在不牵涉到所述本地主机部件的情况下执行到所述远程硬件加速部件的路由。
11.根据权利要求1所述的数据处理***,其中所述硬件加速平面中的所述两个或更多个硬件加速部件对应于现场可编程门阵列(FPGA)设备。
12.根据权利要求4所述的数据处理***,其中至少一个服务器单元部件包括多个本地主机部件和/或多个本地硬件加速部件。
13.根据权利要求8所述的方法,
其中所述本地硬件加速部件被耦合到所述公共网络,并且
其中所述本地主机部件经由所述本地硬件加速部件与所述公共网络交互。
14.根据权利要求9所述的服务器单元部件,其中所述服务器单元部件包括多个本地主机部件和/或多个本地硬件加速部件。
15.根据权利要求9所述的服务器单元部件,其中所述本地硬件加速部件被耦合到数据中心中的机架顶交换机。
CN201680035401.8A 2015-04-17 2016-04-07 具有硬件加速平面和软件平面的数据处理*** Active CN107750357B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110844740.3A CN113553185A (zh) 2015-04-17 2016-04-07 具有硬件加速平面和软件平面的数据处理***

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562149488P 2015-04-17 2015-04-17
US62/149,488 2015-04-17
US14/717,680 US9792154B2 (en) 2015-04-17 2015-05-20 Data processing system having a hardware acceleration plane and a software plane
US14/717,680 2015-05-20
PCT/US2016/026286 WO2016168030A1 (en) 2015-04-17 2016-04-07 Data processing system having a hardware acceleration plane and a software plane

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202110844740.3A Division CN113553185A (zh) 2015-04-17 2016-04-07 具有硬件加速平面和软件平面的数据处理***

Publications (2)

Publication Number Publication Date
CN107750357A true CN107750357A (zh) 2018-03-02
CN107750357B CN107750357B (zh) 2021-08-06

Family

ID=55861166

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201680035401.8A Active CN107750357B (zh) 2015-04-17 2016-04-07 具有硬件加速平面和软件平面的数据处理***
CN202110844740.3A Pending CN113553185A (zh) 2015-04-17 2016-04-07 具有硬件加速平面和软件平面的数据处理***

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202110844740.3A Pending CN113553185A (zh) 2015-04-17 2016-04-07 具有硬件加速平面和软件平面的数据处理***

Country Status (4)

Country Link
US (2) US9792154B2 (zh)
EP (1) EP3283955A1 (zh)
CN (2) CN107750357B (zh)
WO (1) WO2016168030A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111262917A (zh) * 2020-01-13 2020-06-09 苏州浪潮智能科技有限公司 一种基于fpga云平台的远端数据搬移装置和方法

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130318268A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Offloading of computation for rack level servers and corresponding methods and systems
US9665503B2 (en) 2012-05-22 2017-05-30 Xockets, Inc. Efficient packet handling, redirection, and inspection using offload processors
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
KR20160037827A (ko) 2013-01-17 2016-04-06 엑소케츠 인코포레이티드 시스템 메모리로의 연결을 위한 오프로드 프로세서 모듈들
US9792154B2 (en) 2015-04-17 2017-10-17 Microsoft Technology Licensing, Llc Data processing system having a hardware acceleration plane and a software plane
US10511478B2 (en) 2015-04-17 2019-12-17 Microsoft Technology Licensing, Llc Changing between different roles at acceleration components
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
US10034407B2 (en) * 2016-07-22 2018-07-24 Intel Corporation Storage sled for a data center
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
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
CN107562525B (zh) * 2017-07-18 2020-05-26 东莞理工学院 一种遥感图像处理异构平台之间的协同调度方法
US20190044809A1 (en) * 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller
WO2019139588A1 (en) * 2018-01-11 2019-07-18 Nokia Technologies Oy Hardware acceleration for frequency domain scheduler in wireless networks
WO2019217934A1 (en) 2018-05-11 2019-11-14 Lattice Semiconductor Corporation Secure boot systems and methods for programmable logic devices
US20220321403A1 (en) * 2021-04-02 2022-10-06 Nokia Solutions And Networks Oy Programmable network segmentation for multi-tenant fpgas in cloud infrastructures

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060143350A1 (en) * 2003-12-30 2006-06-29 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
CN101443750A (zh) * 2006-01-17 2009-05-27 思科技术公司 用于订户知晓应用服务器集群上的负载平衡的技术
US20100251265A1 (en) * 2009-03-30 2010-09-30 Microsoft Corporation Operating System Distributed Over Heterogeneous Platforms
CN101986305A (zh) * 2010-11-01 2011-03-16 华为技术有限公司 一种文件***的操作方法及一种通信装置
US20110167055A1 (en) * 2006-08-25 2011-07-07 Teradata Us, Inc. Hardware accelerated reconfigurable processor for accelerating database operations and queries
US8018866B1 (en) * 2008-08-26 2011-09-13 Juniper Networks, Inc. Adaptively applying network acceleration services with an intermediate network device
US20120092040A1 (en) * 2007-04-19 2012-04-19 Microsoft Corporation Field-Programmable Gate Array Based Accelerator System
US20120150592A1 (en) * 2010-12-10 2012-06-14 Endre Govrik Systems and methods for user marketing and endorsement on social networks
CN103164215A (zh) * 2011-08-30 2013-06-19 三星电子株式会社 数据处理***和用于在异类加速器之间进行切换的方法
CN103218572A (zh) * 2012-01-23 2013-07-24 国际商业机器公司 用于在数据处理***中访问数据的方法和设备
US20140007113A1 (en) * 2012-06-29 2014-01-02 Nokia Corporation Method and apparatus for task based remote services
EP2722767A1 (en) * 2012-10-16 2014-04-23 Solarflare Communications Inc Encapsulated accelerator
CN104038570A (zh) * 2014-06-27 2014-09-10 曙光信息产业(北京)有限公司 一种数据处理方法及装置
CN104299466A (zh) * 2014-09-25 2015-01-21 浪潮(北京)电子信息产业有限公司 一种基于云计算平台的远程硬件实验方法及***
US20150103837A1 (en) * 2013-10-15 2015-04-16 Cisco Technology, Inc. Leveraging hardware accelerators for scalable distributed stream processing in a network environment

Family Cites Families (239)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802290A (en) 1992-07-29 1998-09-01 Virtual Computer Corporation Computer network of distributed virtual computers which are EAC reconfigurable in response to instruction to be executed
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
US5600845A (en) 1994-07-27 1997-02-04 Metalithic Systems Incorporated Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5748979A (en) 1995-04-05 1998-05-05 Xilinx Inc Reprogrammable instruction set accelerator using a plurality of programmable execution units and an instruction page table
US5774668A (en) 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5828858A (en) 1996-09-16 1998-10-27 Virginia Tech Intellectual Properties, Inc. Worm-hole run-time reconfigurable processor field programmable gate array (FPGA)
US5915123A (en) 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
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
US6104211A (en) 1998-09-11 2000-08-15 Xilinx, Inc. System for preventing radiation failures in programmable logic devices
US6256758B1 (en) 1999-03-03 2001-07-03 Agere Systems Guardian Corp. Fault tolerant operation of field programmable gate arrays
US6496971B1 (en) 2000-02-07 2002-12-17 Xilinx, Inc. Supporting multiple FPGA configuration modes using dedicated on-chip processor
US6326806B1 (en) 2000-03-29 2001-12-04 Xilinx, Inc. FPGA-based communications access point and system for reconfiguration
US8195823B2 (en) 2000-04-17 2012-06-05 Circadence Corporation Dynamic network link acceleration
US7340596B1 (en) 2000-06-12 2008-03-04 Altera Corporation Embedded processor with watchdog timer for programmable logic
US6530049B1 (en) 2000-07-06 2003-03-04 Lattice Semiconductor Corporation On-line fault tolerant operation via incremental reconfiguration of field programmable gate arrays
IL137296A (en) 2000-07-13 2009-09-01 Nds Ltd Configurable hardware system
US20030033450A1 (en) 2000-07-20 2003-02-13 John Appleby-Alis System, method, and article of manufacture for remote updating of hardware
US6526557B1 (en) 2000-07-25 2003-02-25 Xilinx, Inc. Architecture and method for partially reconfiguring an FPGA
US6804193B1 (en) 2000-07-28 2004-10-12 Marconi Intellectual Property (Ringfence) Inc. Protected Ethernet backplane communication
US6915338B1 (en) 2000-10-24 2005-07-05 Microsoft Corporation System and method providing automatic policy enforcement in a multi-computer service application
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
US7111224B1 (en) 2001-02-28 2006-09-19 Xilinx, Inc. FPGA configuration memory with built-in error correction mechanism
US7035928B2 (en) 2001-04-25 2006-04-25 Hewlett-Packard Development Company, L.P. Allocating computer resources for efficient use by a program
US6462579B1 (en) 2001-04-26 2002-10-08 Xilinx, Inc. Partial reconfiguration of a programmable gate array using a bus macro
SE0102199D0 (sv) 2001-06-20 2001-06-20 Ericsson Telefon Ab L M Upgrading field programmable gate arrays over datacommunication networks
US6973608B1 (en) 2001-07-06 2005-12-06 Agere Systems Inc. Fault tolerant operation of field programmable gate arrays
US6874108B1 (en) 2001-08-27 2005-03-29 Agere Systems Inc. Fault tolerant operation of reconfigurable devices utilizing an adjustable system clock
US6573748B1 (en) 2001-11-06 2003-06-03 Xilinx, Inc. Programmable logic device with output register for specifying memory space during reconfiguration
US6754881B2 (en) * 2001-12-10 2004-06-22 International Business Machines Corporation Field programmable network processor and method for customizing a network processor
US6996443B2 (en) 2002-01-11 2006-02-07 Bae Systems Information And Electronic Systems Integration Inc. Reconfigurable digital processing system for space
GB0304628D0 (en) 2003-02-28 2003-04-02 Imec Inter Uni Micro Electr Method for hardware-software multitasking on a reconfigurable computing platform
US20040081104A1 (en) 2002-10-29 2004-04-29 Weimin Pan Method and system for network switch configuration
US7533256B2 (en) * 2002-10-31 2009-05-12 Brocade Communications Systems, Inc. Method and apparatus for encryption of data on storage units using devices inside a storage area network fabric
US7146598B2 (en) 2002-11-07 2006-12-05 Computer Network Technoloy Corp. Method and apparatus for configuring a programmable logic device
US7444551B1 (en) 2002-12-16 2008-10-28 Nvidia Corporation Method and apparatus for system status monitoring, testing and restoration
US7430652B2 (en) 2003-03-28 2008-09-30 Tarari, Inc. Devices for performing multiple independent hardware acceleration operations and methods for performing same
US7685254B2 (en) 2003-06-10 2010-03-23 Pandya Ashish A Runtime adaptable search processor
US7590736B2 (en) 2003-06-30 2009-09-15 Microsoft Corporation Flexible network load balancing
KR101049983B1 (ko) 2003-10-10 2011-07-19 텔레폰악티에볼라겟엘엠에릭슨(펍) 이동-단말기 게이트웨이
US7584345B2 (en) 2003-10-30 2009-09-01 International Business Machines Corporation System for using FPGA technology with a microprocessor for reconfigurable, instruction level hardware acceleration
GB2407730A (en) 2003-10-30 2005-05-04 Agilent Technologies Inc Programmable network monitoring element
JP2005235074A (ja) 2004-02-23 2005-09-02 Fujitsu Ltd Fpgaのソフトエラー補正方法
US7020860B1 (en) 2004-03-24 2006-03-28 Xilinx, Inc. Method for monitoring and improving integrated circuit fabrication using FPGAs
US7444454B2 (en) * 2004-05-11 2008-10-28 L-3 Communications Integrated Systems L.P. Systems and methods for interconnection of multiple FPGA devices
US7460549B1 (en) 2004-06-18 2008-12-02 Honeywell International Inc. Resource management for ad hoc wireless networks with cluster organizations
WO2006014373A2 (en) 2004-07-02 2006-02-09 Idirect Incorporated Method apparatus and system for accelerated communication
US20060015866A1 (en) 2004-07-16 2006-01-19 Ang Boon S System installer for a reconfigurable data center
US7263631B2 (en) 2004-08-13 2007-08-28 Seakr Engineering, Incorporated Soft error detection and recovery
US7676649B2 (en) 2004-10-01 2010-03-09 Lockheed Martin Corporation Computing machine with redundancy and related systems and methods
US7224184B1 (en) 2004-11-05 2007-05-29 Xilinx, Inc. High bandwidth reconfigurable on-chip network for reconfigurable systems
US7734895B1 (en) 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
KR101332911B1 (ko) 2005-05-11 2013-11-26 퀄컴 인코포레이티드 분산 처리 시스템 및 방법
US20070038560A1 (en) 2005-08-12 2007-02-15 Carl Ansley Transaction payment system and processing
US7500083B2 (en) 2005-08-15 2009-03-03 Silicon Informatics Accelerated processing with scheduling to configured coprocessor for molecular data type by service and control coprocessor upon analysis of software code
US7676554B1 (en) 2005-09-15 2010-03-09 Juniper Networks, Inc. Network acceleration device having persistent in-memory cache
JP4940464B2 (ja) 2005-09-16 2012-05-30 独立行政法人産業技術総合研究所 ネットワーク機器試験装置
US7546572B1 (en) 2005-09-20 2009-06-09 Xilinx, Inc. Shared memory interface in a programmable logic device using partial reconfiguration
US7286020B1 (en) 2005-09-21 2007-10-23 Altera Corporation Techniques for monitoring and replacing circuits to maintain high performance
US7382154B2 (en) 2005-10-03 2008-06-03 Honeywell International Inc. Reconfigurable network on a chip
US7617470B1 (en) 2005-10-11 2009-11-10 California Institute Of Technology Reconfigurable integrated circuit and method for increasing performance of a reconfigurable integrated circuit
US7899864B2 (en) 2005-11-01 2011-03-01 Microsoft Corporation Multi-user terminal services accelerator
US7389460B1 (en) 2005-11-14 2008-06-17 University Of Central Florida Research Foundation, Inc. Runtime-competitive fault handling for reconfigurable logic devices
DE102006019532A1 (de) 2006-03-08 2007-09-20 Gabler Thermoform Gmbh & Co. Kg Thermoformmaschine
US7822958B1 (en) 2006-03-10 2010-10-26 Altera Corporation Booting mechanism for FPGA-based embedded system
US20090187733A1 (en) 2006-03-13 2009-07-23 Tarek El-Ghazawi Virtual Configuration Management for Effiicient Use of Reconfigurable Hardwware
US20070283311A1 (en) 2006-05-30 2007-12-06 Theodore Karoubalis Method and system for dynamic reconfiguration of field programmable gate arrays
US8713574B2 (en) 2006-06-05 2014-04-29 International Business Machines Corporation Soft co-processors to provide a software service function off-load architecture in a multi-core processing environment
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
WO2008014493A2 (en) 2006-07-28 2008-01-31 Drc Computer Corporation Configurable processor module accelerator using a progrmmable logic device
US8312120B2 (en) 2006-08-22 2012-11-13 Citrix Systems, Inc. Systems and methods for providing dynamic spillover of virtual servers based on bandwidth
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
US7598766B2 (en) 2007-01-09 2009-10-06 University Of Washington Customized silicon chips produced using dynamically configurable polymorphic network
US7925900B2 (en) 2007-01-26 2011-04-12 Microsoft Corporation I/O co-processor coupled hybrid computing device
US8286196B2 (en) 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
US8024396B2 (en) 2007-04-26 2011-09-20 Microsoft Corporation Distributed behavior controlled execution of modeled applications
US7797587B2 (en) 2007-06-06 2010-09-14 Dell Products L.P. System and method of recovering from failures in a virtual machine
US8159259B1 (en) 2007-08-06 2012-04-17 Lewis James M Self-modifying FPGA for anti-tamper applications
US7895463B2 (en) 2007-08-28 2011-02-22 Cisco Technology, Inc. Redundant application network appliances using a low latency lossless interconnect link
US8046727B2 (en) 2007-09-12 2011-10-25 Neal Solomon IP cores in reconfigurable three dimensional integrated circuits
US8554972B2 (en) 2007-09-13 2013-10-08 Friedrich-Alexander-Universitaet-Erlangen-Nuernberg Logic chip, method and computer program for providing a configuration information for a configurable logic chip
US7971051B2 (en) 2007-09-27 2011-06-28 Fujitsu Limited FPGA configuration protection and control using hardware watchdog timer
WO2009052529A1 (en) 2007-10-20 2009-04-23 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphical data
WO2009067675A1 (en) 2007-11-23 2009-05-28 Mercury Computer Systems, Inc. Client-server visualization system with hybrid data processing
US9866370B2 (en) 2007-12-05 2018-01-09 Itt Manufacturing Enterprises, Llc Configurable ASIC-embedded cryptographic processing engine
KR100901858B1 (ko) 2007-12-18 2009-06-09 한국전자통신연구원 설정 재구성 및 신호 수집 장치
US8527590B2 (en) 2008-01-16 2013-09-03 Janos Tapolcai Solving mixed integer programs with peer-to-peer applications
US20090189892A1 (en) 2008-01-27 2009-07-30 Nitin Desai Methods and systems for detecting a dirty region within a frame encompassing three dimensional graphics
FR2927212B1 (fr) 2008-02-01 2010-07-30 Centre Nat Rech Scient Procede de reconfiguration d'un ensemble de composants d'un circuit electronique, systeme de reconfiguration et protocole de transmission de donnees correspondants.
EP2255292A4 (en) 2008-02-05 2014-09-24 Viasat Inc PROGRAMMABLE LOGIC CIRCUIT ELEMENTS ON SECURE SITES
DK2249707T3 (da) 2008-02-06 2022-07-04 Capis Sprl Indretning til automatiseret screening for medfødte hjertesygdomme
US8117512B2 (en) 2008-02-06 2012-02-14 Westinghouse Electric Company Llc Failure detection and mitigation in logic circuits
US8250578B2 (en) 2008-02-22 2012-08-21 International Business Machines Corporation Pipelining hardware accelerators to computer systems
US8145894B1 (en) 2008-02-25 2012-03-27 Drc Computer Corporation Reconfiguration of an accelerator module having a programmable logic device
US7906984B1 (en) 2008-02-26 2011-03-15 The United States Of America As Represented By The Secretary Of The Air Force Relocatable field programmable gate array bitstreams for fault tolerance
CN101276298B (zh) 2008-04-01 2010-06-02 中国科学院计算技术研究所 一种fpga电路故障检测装置
US8131660B2 (en) 2008-04-08 2012-03-06 Microsoft Corporation Reconfigurable hardware accelerator for boolean satisfiability solver
US8374986B2 (en) 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
US8453013B1 (en) 2008-07-09 2013-05-28 Google Inc System-hang recovery mechanisms for distributed systems
JP2010044578A (ja) 2008-08-12 2010-02-25 Toshiba Corp マルチコアプロセッサ
US8434087B2 (en) 2008-08-29 2013-04-30 International Business Machines Corporation Distributed acceleration devices management for streams processing
US20100057647A1 (en) 2008-09-04 2010-03-04 Microsoft Corporation Accommodating learned clauses in reconfigurable hardware accelerator for boolean satisfiability solver
US8131659B2 (en) 2008-09-25 2012-03-06 Microsoft Corporation Field-programmable gate array based accelerator system
US8041976B2 (en) 2008-10-01 2011-10-18 International Business Machines Corporation Power management for clusters of computers
US7979844B2 (en) 2008-10-14 2011-07-12 Edss, Inc. TICC-paradigm to build formally verified parallel software for multi-core chips
US8040808B1 (en) 2008-10-20 2011-10-18 Juniper Networks, Inc. Service aware path selection with a network acceleration device
US8443062B2 (en) 2008-10-23 2013-05-14 Microsoft Corporation Quorum based transactionally consistent membership management in distributed storage systems
US8117497B1 (en) 2008-11-17 2012-02-14 Xilinx, Inc. Method and apparatus for error upset detection and correction
US8874701B2 (en) 2008-12-22 2014-10-28 Sap Se On-demand provisioning of services running on embedded devices
US8706901B2 (en) 2009-04-13 2014-04-22 International Business Machines Corporation Protocols for high performance computing visualization, computational steering and forward progress
CN101545933B (zh) 2009-04-28 2012-01-11 国网电力科学研究院 用于雷电探测的远程智能升级装置及其实现方法
US8719547B2 (en) 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US8508367B2 (en) 2009-09-21 2013-08-13 Checkpoint Systems, Inc. Configurable monitoring device
US8786440B2 (en) 2009-10-02 2014-07-22 Checkpoint Systems, Inc. Calibration of beamforming nodes in a configurable monitoring device system
US8856794B2 (en) 2009-10-13 2014-10-07 Empire Technology Development Llc Multicore runtime management using process affinity graphs
KR101259133B1 (ko) 2009-11-11 2013-04-30 삼성중공업 주식회사 동작 중 재구성이 가능한 제어 시스템 및 그 방법
CN101783812A (zh) 2009-12-01 2010-07-21 深圳市蓝韵实业有限公司 一种基于网络的fpga配置***及配置方法
US8656019B2 (en) 2009-12-17 2014-02-18 International Business Machines Corporation Data processing workload administration in a cloud computing environment
US8368423B2 (en) 2009-12-23 2013-02-05 L-3 Communications Integrated Systems, L.P. Heterogeneous computer architecture based on partial reconfiguration
US20110161495A1 (en) 2009-12-26 2011-06-30 Ralf Ratering Accelerating opencl applications by utilizing a virtual opencl device as interface to compute clouds
CN101794222A (zh) 2010-01-13 2010-08-04 腾讯科技(深圳)有限公司 软件版本搜集方法、管理***及软件升级检测方法和***
US9141580B2 (en) 2010-03-23 2015-09-22 Citrix Systems, Inc. Systems and methods for monitoring and maintaining consistency of a configuration
US8938510B2 (en) 2010-04-26 2015-01-20 Bittan Inc. On-demand mailbox synchronization and migration system
KR101475584B1 (ko) 2010-04-30 2014-12-22 인터디지탈 패튼 홀딩스, 인크 네트워크 통신에서의 경량 프로토콜 및 에이전트
EP2387270A1 (en) 2010-05-12 2011-11-16 Nokia Siemens Networks Oy Radio link failure recovery control in communication network having relay nodes
EP2577936A2 (en) 2010-05-28 2013-04-10 Lawrence A. Laurich Accelerator system for use with secure data storage
US8803892B2 (en) 2010-06-10 2014-08-12 Otoy, Inc. Allocation of GPU resources across multiple clients
US20120324068A1 (en) 2011-06-17 2012-12-20 Microsoft Corporation Direct networking for multi-server units
US8812627B2 (en) 2010-08-20 2014-08-19 Adobe Systems Incorporated System and method for installation and management of cloud-independent multi-tenant applications
US8516268B2 (en) 2010-08-23 2013-08-20 Raytheon Company Secure field-programmable gate array (FPGA) architecture
US8739171B2 (en) 2010-08-31 2014-05-27 International Business Machines Corporation High-throughput-computing in a hybrid computing environment
WO2012031362A1 (en) 2010-09-07 2012-03-15 Corporation De L ' Ecole Polytechnique De Montreal Methods, apparatus and system to support large-scale micro- systems including embedded and distributed power supply, thermal regulation, multi-distributed-sensors and electrical signal propagation
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
US8473692B2 (en) 2010-10-27 2013-06-25 International Business Machines Corporation Operating system image management
US9329886B2 (en) 2010-12-10 2016-05-03 Amazon Technologies, Inc. Virtual machine morphing for heterogeneous migration environments
CN102024048B (zh) 2010-12-15 2014-04-09 中兴通讯股份有限公司 一种移动终端及其浏览器的实现方法
CN103270492B (zh) 2010-12-15 2016-08-17 国际商业机器公司 用于网络使能应用的硬件加速图形的方法和***
CN102117197B (zh) 2011-03-04 2012-08-15 中国电子科技集团公司第三十八研究所 高性能通用信号处理器指令分配装置
US8990548B2 (en) 2011-04-11 2015-03-24 Intel Corporation Apparatuses for configuring programmable logic devices from BIOS PROM
US8998076B2 (en) 2011-06-03 2015-04-07 Arthur Chang Establishing connections among electronic devices
US8656389B2 (en) 2011-08-22 2014-02-18 Vmware, Inc. Virtual port command processing during migration of virtual machine
US20130249947A1 (en) 2011-08-26 2013-09-26 Reincloud Corporation Communication using augmented reality
JP2013062566A (ja) 2011-09-12 2013-04-04 Ricoh Co Ltd 情報処理装置、演算方法およびプログラム
WO2013042271A1 (ja) 2011-09-22 2013-03-28 富士通株式会社 電子計算機システム及び仮想マシン配置方法
WO2013049079A2 (en) 2011-09-26 2013-04-04 Limelight Networks, Inc. Dynamic request handling using cloud-computing capabilities
CN102377778A (zh) 2011-10-17 2012-03-14 中国人民解放军国防科学技术大学 一种基于以太网的远程非对称端通信方法
US9647731B2 (en) 2011-10-20 2017-05-09 Microelectronics Research & Development Corp. Reconfigurable network on a chip (NoC) radio through reduced instruction set computer (RISC) agents by overwriting program store for different phases of demodulation
JP5948806B2 (ja) 2011-11-16 2016-07-06 富士通株式会社 プラグインカード収容装置及びプラグインカード制御方法
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
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
US8935375B2 (en) 2011-12-12 2015-01-13 Microsoft Corporation Increasing availability of stateful applications
US9448846B2 (en) 2011-12-13 2016-09-20 International Business Machines Corporation Dynamically configurable hardware queues for dispatching jobs to a plurality of hardware acceleration engines
US20130177293A1 (en) 2012-01-06 2013-07-11 Nokia Corporation Method and apparatus for the assignment of roles for image capturing devices
CN103220371B (zh) 2012-01-18 2016-03-02 ***通信集团公司 内容适配方法及***
US9465632B2 (en) 2012-02-04 2016-10-11 Global Supercomputing Corporation Parallel hardware hypervisor for virtualizing application-specific supercomputers
CN103246582B (zh) 2012-02-07 2017-03-08 鼎桥通信技术有限公司 一种fpga故障检测方法和装置
US9443269B2 (en) 2012-02-16 2016-09-13 Novasparks, Inc. FPGA matrix architecture
US9081750B2 (en) 2012-02-29 2015-07-14 Red Hat, Inc. Recovery escalation of cloud deployments
CN102662628B (zh) 2012-03-23 2015-03-04 山东大学 Rsa加密算法的指令优化处理器
KR101893982B1 (ko) 2012-04-09 2018-10-05 삼성전자 주식회사 분산 처리 시스템, 분산 처리 시스템의 스케줄러 노드 및 스케줄 방법, 및 이를 위한 프로그램 생성 장치
US8775576B2 (en) 2012-04-17 2014-07-08 Nimbix, Inc. Reconfigurable cloud computing
US8943352B1 (en) 2012-05-07 2015-01-27 Dust Networks, Inc. Low power timing, configuring, and scheduling
EP2663007A1 (en) 2012-05-08 2013-11-13 Alcatel Lucent A method for transmission of ACK/NACK messages, and a network device therefor
US20130318268A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Offloading of computation for rack level servers and corresponding methods and systems
KR101695251B1 (ko) 2012-05-22 2017-01-12 한화테크윈 주식회사 원격으로 카메라 fpga 배열을 변경하기 위한 시스템 및 카메라 제어 방법
US9665503B2 (en) 2012-05-22 2017-05-30 Xockets, Inc. Efficient packet handling, redirection, and inspection using offload processors
CN102724478B (zh) 2012-05-25 2015-03-04 张亮 面向公共安全服务的嵌入式移动智能监控***
CN103577266B (zh) 2012-07-31 2017-06-23 国际商业机器公司 用于对现场可编程门阵列资源进行分配的方法及***
US9304730B2 (en) 2012-08-23 2016-04-05 Microsoft Technology Licensing, Llc Direct communication between GPU and FPGA components
US9912517B1 (en) 2012-08-23 2018-03-06 Amazon Technologies, Inc. Optimized deployment and execution of programs in a distributed computing environment
US8977637B2 (en) 2012-08-30 2015-03-10 International Business Machines Corporation Facilitating field programmable gate array accelerations of database functions
US8867545B2 (en) 2012-09-25 2014-10-21 Accedian Networks Inc. Modified Ethernet preamble for inter line card communications in a modular communication chassis
US9160617B2 (en) 2012-09-28 2015-10-13 International Business Machines Corporation Faulty core recovery mechanisms for a three-dimensional network on a processor array
JP6011210B2 (ja) 2012-09-28 2016-10-19 富士通株式会社 ストレージ制御装置,プログラマブル論理回路の復旧処理方法及び制御プログラム
US10270709B2 (en) 2015-06-26 2019-04-23 Microsoft Technology Licensing, Llc Allocating acceleration component functionality for supporting services
WO2014058439A1 (en) 2012-10-14 2014-04-17 Empire Technology Development, Llc Error-capturing service replacement in datacenter environment for simplified application restructuring
US9317482B2 (en) 2012-10-14 2016-04-19 Microsoft Technology Licensing, Llc Universal FPGA/ASIC matrix-vector multiplication architecture
US8635571B1 (en) 2012-10-19 2014-01-21 Altera Corporation Integrating multiple FPGA designs by merging configuration settings
US9673824B2 (en) 2012-10-26 2017-06-06 Altera Corporation Techniques and circuitry for configuring and calibrating an integrated circuit
US20150271342A1 (en) 2012-11-06 2015-09-24 Alcatel Lucent Network resource allocation in communication networks
US9191993B2 (en) 2012-11-20 2015-11-17 Adc Telecommunications, Inc. Distributed antenna system with uplink bandwidth for signal analysis
US9419859B2 (en) 2012-12-04 2016-08-16 Microsoft Technology Licensing, Llc Service allocation in a distributed computing platform
JP6194456B2 (ja) 2012-12-17 2017-09-13 アーベーベー・シュバイツ・アーゲー ネットワークデバイス構成を自動的に展開するための方法
CN103034295B (zh) 2012-12-26 2015-08-12 无锡江南计算技术研究所 输入输出能力增强的可重构微服务器
WO2014116206A1 (en) 2013-01-23 2014-07-31 Empire Technology Development Llc Management of hardware accelerator configurations in a processor chip
US9361416B2 (en) 2013-01-30 2016-06-07 Empire Technology Development Llc Dynamic reconfiguration of programmable hardware
US9990212B2 (en) 2013-02-19 2018-06-05 Empire Technology Development Llc Testing and repair of a hardware accelerator image in a programmable logic circuit
JP5500282B1 (ja) 2013-02-28 2014-05-21 日本電気株式会社 障害修復装置、障害修復方法、及び、障害修復プログラム
US9298484B2 (en) 2013-03-14 2016-03-29 International Business Machines Corporation Encapsulation of an application for virtualization
US9361393B2 (en) 2013-03-15 2016-06-07 Paypal, Inc. User interface overlay application
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
US9378065B2 (en) 2013-03-15 2016-06-28 Advanced Elemental Technologies, Inc. Purposeful computing
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
WO2014189529A1 (en) 2013-05-24 2014-11-27 Empire Technology Development, Llc Datacenter application packages with hardware accelerators
US9497079B2 (en) 2013-06-13 2016-11-15 Sap Se Method and system for establishing, by an upgrading acceleration node, a bypass link to another acceleration node
US8863072B1 (en) 2013-06-19 2014-10-14 Altera Corporation FPGA and OS image build tool
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
US8910109B1 (en) 2013-08-12 2014-12-09 Altera Corporation System level tools to support FPGA partial reconfiguration
NL2011315C2 (en) 2013-08-19 2015-02-23 Topic Embedded Systems B V A computing platform, a reconfigurable hardware device and a method for simultaneously executing processes on dynamically reconfigurable hardware device, such as an fpga, as well as instruction set processors, such as a cpu, and a related computer readable medium.
WO2015026373A1 (en) 2013-08-23 2015-02-26 Empire Technology Development, Llc Detacenter-based hardware accelerator integration
US10019260B2 (en) 2013-09-20 2018-07-10 Via Alliance Semiconductor Co., Ltd Fingerprint units comparing stored static fingerprints with dynamically generated fingerprints and reconfiguring processor settings upon a fingerprint match
WO2015042684A1 (en) 2013-09-24 2015-04-02 University Of Ottawa Virtualization of hardware accelerator
US9294097B1 (en) * 2013-11-15 2016-03-22 Scientific Concepts International Corporation Device array topology configuration and source code partitioning for device arrays
US8924907B1 (en) 2013-11-25 2014-12-30 Altera Corporation Bitstream verification on embedded processor—FPGA platform
CN103677916A (zh) 2013-12-10 2014-03-26 中国航空工业集团公司第六三一研究所 一种基于fpga的在线重配置***及方法
CN103645950B (zh) 2013-12-13 2018-05-04 北京奇虎科技有限公司 一种计算机的加速方法和装置
US9286084B2 (en) 2013-12-30 2016-03-15 Qualcomm Incorporated Adaptive hardware reconfiguration of configurable co-processor cores for hardware optimization of functionality blocks based on use case prediction, and related methods, circuits, and computer-readable media
KR20150084098A (ko) 2014-01-13 2015-07-22 한국전자통신연구원 스트림 데이터 분산 처리 시스템 및 그 방법
US8997033B1 (en) 2014-03-05 2015-03-31 Altera Corporation Techniques for generating a single configuration file for multiple partial reconfiguration regions
JP6308821B2 (ja) 2014-03-13 2018-04-11 キヤノン株式会社 画像処理装置
CN104951353B (zh) 2014-03-28 2018-09-21 华为技术有限公司 一种对vnf实现加速处理的方法及装置
US9576332B1 (en) 2014-06-02 2017-02-21 VCE IP Holding Company LLC Systems and methods for remote graphics processing unit service
US9898795B2 (en) 2014-06-19 2018-02-20 Vmware, Inc. Host-based heterogeneous multi-GPU assignment
JP6598432B2 (ja) 2014-06-24 2019-10-30 キヤノン株式会社 画像処理装置、その制御方法およびプログラム
US9619544B2 (en) 2014-06-26 2017-04-11 Amazon Technologies, Inc. Distributed state management using dynamic replication graphs
US9529882B2 (en) 2014-06-26 2016-12-27 Amazon Technologies, Inc. Coordinated suspension of replication groups
CN105306241B (zh) 2014-07-11 2018-11-06 华为技术有限公司 一种业务部署方法及网络功能加速平台
US20160087849A1 (en) 2014-09-24 2016-03-24 Infinera Corporation Planning and reconfiguring a multilayer network
US10303644B2 (en) 2014-11-21 2019-05-28 International Business Machines Corporation Providing remote, reliant and high performance PCI express device in cloud computing environments
US9483291B1 (en) 2015-01-29 2016-11-01 Altera Corporation Hierarchical accelerator registry for optimal performance predictability in network function virtualization
CN104699508B (zh) 2015-03-25 2017-08-22 南京大学 云计算平台中快速部署和更新虚拟环境***及其方法
CN109144688B (zh) 2015-03-27 2022-09-23 华为技术有限公司 异构多核可重构计算平台上任务调度的方法和装置
US20160308649A1 (en) 2015-04-17 2016-10-20 Microsoft Technology Licensing, Llc Providing Services in a System having a Hardware Acceleration Plane and a Software Plane
US9652327B2 (en) 2015-04-17 2017-05-16 Microsoft Technology Licensing, Llc Restoring service acceleration
US9983938B2 (en) 2015-04-17 2018-05-29 Microsoft Technology Licensing, Llc Locally restoring functionality at acceleration components
US10511478B2 (en) 2015-04-17 2019-12-17 Microsoft Technology Licensing, Llc Changing between different roles at acceleration components
US10296392B2 (en) 2015-04-17 2019-05-21 Microsoft Technology Licensing, Llc Implementing a multi-component service using plural hardware 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
US10027543B2 (en) 2015-04-17 2018-07-17 Microsoft Technology Licensing, Llc Reconfiguring an acceleration component among interconnected 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
US10101981B2 (en) 2015-05-08 2018-10-16 Citrix Systems, Inc. Auto discovery and configuration of services in a load balancing appliance
US9819542B2 (en) 2015-06-26 2017-11-14 Microsoft Technology Licensing, Llc Configuring acceleration components over a network
US10216555B2 (en) 2015-06-26 2019-02-26 Microsoft Technology Licensing, Llc Partially reconfiguring acceleration components
CN105824706B (zh) 2015-12-31 2020-11-06 华为技术有限公司 一种配置加速器的方法和装置
CN107426138A (zh) 2016-05-23 2017-12-01 杭州仙宇网络科技有限公司 一种加速数据远程访问的方法,服务器设备
US10666507B2 (en) 2017-06-30 2020-05-26 Microsoft Technology Licensing, Llc Automatic reconfiguration of dependency graph for coordination of device configuration

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060143350A1 (en) * 2003-12-30 2006-06-29 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
CN101443750A (zh) * 2006-01-17 2009-05-27 思科技术公司 用于订户知晓应用服务器集群上的负载平衡的技术
US20110167055A1 (en) * 2006-08-25 2011-07-07 Teradata Us, Inc. Hardware accelerated reconfigurable processor for accelerating database operations and queries
US20120092040A1 (en) * 2007-04-19 2012-04-19 Microsoft Corporation Field-Programmable Gate Array Based Accelerator System
US8018866B1 (en) * 2008-08-26 2011-09-13 Juniper Networks, Inc. Adaptively applying network acceleration services with an intermediate network device
US20100251265A1 (en) * 2009-03-30 2010-09-30 Microsoft Corporation Operating System Distributed Over Heterogeneous Platforms
CN101986305A (zh) * 2010-11-01 2011-03-16 华为技术有限公司 一种文件***的操作方法及一种通信装置
US20120150592A1 (en) * 2010-12-10 2012-06-14 Endre Govrik Systems and methods for user marketing and endorsement on social networks
CN103164215A (zh) * 2011-08-30 2013-06-19 三星电子株式会社 数据处理***和用于在异类加速器之间进行切换的方法
CN103218572A (zh) * 2012-01-23 2013-07-24 国际商业机器公司 用于在数据处理***中访问数据的方法和设备
US20140007113A1 (en) * 2012-06-29 2014-01-02 Nokia Corporation Method and apparatus for task based remote services
EP2722767A1 (en) * 2012-10-16 2014-04-23 Solarflare Communications Inc Encapsulated accelerator
US20150103837A1 (en) * 2013-10-15 2015-04-16 Cisco Technology, Inc. Leveraging hardware accelerators for scalable distributed stream processing in a network environment
CN104038570A (zh) * 2014-06-27 2014-09-10 曙光信息产业(北京)有限公司 一种数据处理方法及装置
CN104299466A (zh) * 2014-09-25 2015-01-21 浪潮(北京)电子信息产业有限公司 一种基于云计算平台的远程硬件实验方法及***

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
KAVINGA UPUL BANDARA EKANAYAKA: "FPGA Based Custom Accelerator Architecture Framework for Complex Event Processing", 《IEEE》 *
郑凌: "基于CPU-FPGA的异构多核***设计及并行编程模型研究", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111262917A (zh) * 2020-01-13 2020-06-09 苏州浪潮智能科技有限公司 一种基于fpga云平台的远端数据搬移装置和方法
US11868297B2 (en) 2020-01-13 2024-01-09 Inspur Suzhou Intelligent Technology Co., Ltd. Far-end data migration device and method based on FPGA cloud platform

Also Published As

Publication number Publication date
US11010198B2 (en) 2021-05-18
US9792154B2 (en) 2017-10-17
CN107750357B (zh) 2021-08-06
EP3283955A1 (en) 2018-02-21
US20170351547A1 (en) 2017-12-07
CN113553185A (zh) 2021-10-26
US20160306667A1 (en) 2016-10-20
WO2016168030A1 (en) 2016-10-20

Similar Documents

Publication Publication Date Title
CN107750357A (zh) 具有硬件加速平面和软件平面的数据处理***
CN104170334B (zh) 一种用于管理网络的控制器的配置托管元件的方法及设备
CN105594166B (zh) 用于配置数据流的方法、计算机可读存储介质和装置
CN107533538A (zh) 在使用加速部件的***中处理租户要求
CN104717156B (zh) 使用网络接口卡管理软件定义网络中的数据流的方法和***
CN102986172B (zh) 虚拟集***换
CN103346981B (zh) 虚拟交换方法、相关装置和计算机***
US20180349196A1 (en) Implementing a Service Using Plural Acceleration Components
CN102017544B (zh) 卸载网络处理的方法和***
CN107836001A (zh) 硬件加速器上的卷积神经网络
CN102334112B (zh) 用于虚拟机网络的方法和***
CN109144660A (zh) 微服务架构
CN104038401B (zh) 用于分布式覆盖虚拟环境的互操作性的方法和***
CN107533481A (zh) 在具有硬件加速平面和软件平面的***中提供服务
CN103369027B (zh) 混合云环境中的位置感知虚拟服务配备
CN104320350B (zh) 用于提供基于信用的流控制的方法及***
CN107710237A (zh) 服务器上深度神经网络划分
US10606651B2 (en) Free form expression accelerator with thread length-based thread assignment to clustered soft processor cores that share a functional circuit
CN107710238A (zh) 具有堆栈存储器的硬件加速器上的深度神经网络处理
CN108028813A (zh) 用于在高性能计算环境中使用用于线性转发表(lft)查找的全局路由报头(grh)中的子网前缀值的***和方法
CN104247341B (zh) 分布式交换机及其多播树层次结构的动态优化方法
CN110313163A (zh) 分布式计算***中的负载平衡
CN105721358A (zh) 多跳分布控制面和单跳数据面交换结构***的方法和装置
CN103748558A (zh) 虚拟网络覆盖
CN105554176B (zh) 发送报文的方法、装置和通信***

Legal Events

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