CN113841120A - 具有soc和fpga的服务器卸载卡 - Google Patents

具有soc和fpga的服务器卸载卡 Download PDF

Info

Publication number
CN113841120A
CN113841120A CN202080037234.7A CN202080037234A CN113841120A CN 113841120 A CN113841120 A CN 113841120A CN 202080037234 A CN202080037234 A CN 202080037234A CN 113841120 A CN113841120 A CN 113841120A
Authority
CN
China
Prior art keywords
fpga
server
soc
functions
network
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.)
Pending
Application number
CN202080037234.7A
Other languages
English (en)
Inventor
D·邱
A·帕特南
D·菲利斯通
J·拉维耶
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 CN113841120A publication Critical patent/CN113841120A/zh
Pending legal-status Critical Current

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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
    • G06F9/5055Allocation 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 software capabilities, i.e. software resources associated or available to the machine
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

一种具有卸载卡的物理服务器被公开,该卸载卡包括SoC(片上系统)和FPGA(现场可编程门阵列)。根据一组实施例,SoC可以被配置为从服务器的CPU综合体卸载适于在软件中执行的一个或多个虚拟机监测器功能,并且FPGA可以被配置为从CPU综合体卸载适于在硬件中执行的一个或多个虚拟机监测器功能。

Description

具有SOC和FPGA的服务器卸载卡
背景技术
云平台(诸如,微软Azure和亚马逊AWS)运行在分布于地理上分散的数据中心的大量物理服务器(本文称为云服务器)上。这些云服务器中有很大一部分实施虚拟化软件层,称为虚拟机监测器(hypervisor),允许虚拟机(VM)的托管。除其他之外,这使得IaaS(基础设施即服务)场景成为可能,在该场景中,云平台的客户可以购买和使用VM来执行他们的应用工作负载。
传统地,在每个实施虚拟机监测器的云服务器中,云服务器的某个百分比的CPU(中央处理器)内核将被保留以供虚拟机监测器使用。虽然该保留确保了虚拟机监测器具有足够的计算资源以执行它的功能,但也减少了可用于由例如客户VM使用的CPU内核的数目。在规模上,这可以导致云平台面向客户的计算能力整体大幅下降。
发明内容
具有卸载系统的物理服务器被公开,该卸载系统包括SoC(片上系统)和FPGA(现场可编程门阵列)。卸载系统的一个可能的实施例是在卡上。根据一组实施例,SoC可以被配置为从服务器的CPU综合体卸载适于在软件中执行的一个或多个虚拟机监测器功能,并且FPGA可以被配置为从CPU综合体卸载适于在硬件中执行的一个或多个虚拟机监测器功能。
附图说明
图1描绘了根据某些实施例的物理服务器拓扑,其包括具有SoC和FPGA的卸载卡。
图2描绘了根据某些实施例的针对图1的卸载卡的架构。
图3描绘了根据某些实施例的JTAG(联合测试工作组)多路复用器实现。
图4描绘了根据某些实施例的示例网络处理流。
具体实施方式
在下面的描述中,为了解释的目的,多个示例和细节被陈述,以提供对各种实施例的理解。然而,对于本领域技术人员而言,很明显,某些实施例可以在没有这些细节的情况下实施,或者可以通过修改或者其等同物实施。
1.概述
本公开的实施例针对采用卸载卡的物理服务器设计,该卸载卡包括SoC(片上系统)和FPGA(现场可编程门阵列)。在各种实施例中,SoC和FPGA可以运行通常由服务器的CPU综合体执行的虚拟机监测器功能,从而从CPU综合体卸载针对这些功能的处理负担。例如,卸载卡的SoC可以运行需要通用处理器的灵活性或者从通用处理器的灵活性中获益的虚拟机监测器功能(例如,联网和存储控制平面功能),而卸载卡的FPGA可以运行适于在硬件中实现/加速的虚拟机监测器功能(例如,联网和存储数据平面功能)。
在具有该通用架构的情况下,能够将大部分(如果不是全部)虚拟机监测器处理从服务器的CPU综合体移动到卸载卡,这有利地允许CPU综合体专注于运行租户(例如,客户)VM工作负载。在虚拟机监测器完全地从CPU综合体中退出的情况下,租户代码可以潜在地在CPU综合体上以“裸机”方式运行(即,没有任何中间的虚拟机监测器虚拟化层)。
另外,由于卸载卡上的虚拟机监测器代码/逻辑的执行与CPU综合体上的租户代码的执行在物理上是隔离的,该解决方案保护了虚拟机监测器免受可能试图将租户代码用作攻击载体的旁路攻击。
此外,通过采用FPGA用于加速某些服从硬件实现的虚拟机监测器功能,卸载卡可以提高服务器的效率,同时保持架构灵活性。例如,如果需要,FPGA可以从加速一种类型/类别的功能(例如,联网)被重新编程为加速另一种类型/类别的功能(例如,存储)。这对于基于逻辑的硬加速器(诸如,ASIC(专用集成电路))是不可能的。
本公开的前述和其他方面将在以下章节中进一步详细描述。
2.服务器拓扑
图1是图示根据本公开的某些实施例的物理服务器100的高级别拓扑的简化框图。在一组实施例中,物理服务器100可以是被部署为云平台的基础设施的一部分的云服务器。在这些实施例中,物理服务器100可以被挂载在由云平台提供商运营的数据中心内的服务器机架中。在其他一些实施例中,物理服务器100可以被部署在其他情境中和/或经由其他形式因素被部署,诸如,以例如单机服务器的形式被部署在预置企业IT环境中。
如在背景技术部分指出的,云服务器通常实施针对虚拟化的虚拟机监测器,这允许云平台提供服务,诸如IaaS(基础设施即服务)。然而,由于将部分平台资源(包括CPU内核)用于虚拟机监测器(也称为“托管”)用途,传统云服务器无法将他们的全部CPU能力暴露给VM,因此降低了平台的效率。
为了解决该问题和其他问题,物理服务器100包括新型卸载卡102,该卸载卡102包括SoC 104和FPGA 106。在示出的实施例中,卸载卡102被实现为基于PCIe(外围组件互联高速)的扩展卡,从而经由标准PCIe x 16 3.0边缘连接器接口108与物理服务器100的主板接口。在其他一些实施例中,卸载卡102可以使用任何其他类型的外围接口来实现。
如示出的,SoC 104具有其自身的RAM(随机存取存储器)110和闪存112,并且至少经由卸载卡102内部的接口(PCIe接口114和以太网接口116)与FPGA 106通信地耦合。另外,SoC 104通过I2C接口108和若干其他信道(例如,USB和COM)与物理服务器100的主板管理控制器(BMC)118通信地耦合。
FPGA 106还具有其自身的RAM 120和闪存122,并且通过PCIe边缘连接器接口108与物理服务器100的CPU综合体124通信地耦合。该CPU综合体包括物理服务器100的主CPU内核和相关联的RAM模块。另外,FPGA 106包括两个外部以太网接口,其中一个接口连接到外部网络126(经由,例如,TOR(机架顶)交换机或者一些其他网络设备),另一个接口连接到物理服务器100内的NIC(网络接口卡/控制器)128。
通常地,图1示出的拓扑使得通常在物理服务器100的CPU综合体124上运行的一些或者所有虚拟机监测器功能能够替代地在卸载卡102的SoC 104和FPGA 106上运行,并且因此卸载至卸载卡102的SOC 104和FPGA 106。例如,得益于通用处理器的灵活性(或者仅仅过于复杂/动态而无法在硬件中实现)的虚拟机监测器功能可以在合并一个或多个通用处理内核的SoC 104上运行。这样的功能的示例包括SDN(软件定义的联网)控制平面功能,该功能需要复杂的路由计算,并且需要相对频繁地更新以支持新的协议和特征。
另一方面,适于硬件加速的虚拟机监测器功能可以经由FPGA 106上的逻辑块实现。这样的功能的示例包括SDN数据平面功能(涉及根据控制平面决策转发网络数据业务)和存储数据平面功能(诸如数据复制、重复数据消除等)。
通过该解决方案,与传统服务器设计相比具有许多优势。首先,通过减轻CPU综合体124的某些托管处理职责,由虚拟机监测器使用的平台资源(包括CPU综合体124中的CPU内核)的量可以减少,这反过来增加了VM(也称为“访客”)可用的平台能力。这在公共云平台中尤其有利,在公共云平台中,服务器效率的每一次提升会在规模上具有重大影响。在一些实施例中,虚拟机监测器可以完全从CPU综合体124中退出并被移至卸载卡102,在这种情况下,CPU综合体124可以运行处理仅能够在CPU综合体自身上运行的问题的最小虚拟机监测器,诸如访问某些寄存器,或者完全没有虚拟机监测器,并且CPU综合体124的剩余的计算能力可以专用于访客工作负载。
第二,通过在卸载卡102上实现SoC 104(其处理非硬件加速功能)和FPGA 106(处理硬件加速功能)两者并且紧密耦合这两者,运行在SoC 104上的虚拟机监测器代码更容易与在FPGA 106中实现的逻辑交互,反之亦然。有可能具有仅在卸载卡102上包括硬件加速器的备选的实施方式,但是这些实施方式需要数据流以适当地协调硬件加速器与服务器的主CPU的活动。此外,这些备选的实施方式可能不支持“裸机”平台,并且可能无法卸载大量工作。
第三,由于卸载卡102上运行的主机代码与CPU综合体124上运行的访客代码物理隔离,恶意实体更难经由VM对虚拟机监测器进行攻击。鉴于最近在现代CPU架构中发现的某些侧路漏洞,这一点尤其重要。虽然这些已知漏洞可以被修补,但将来其他类似漏洞可能会被发现。
第四,通过使用FPGA而不是ASIC进行硬件加速,卸载卡102可以很容易地被重新用于不同的使用情形或者通过重新编程FPGA改进的相同使用情形,并且如果需要,可以更新FPGA逻辑。这在大规模部署中是有利的,在大规模部署中,可能不希望拉取和替换大量已经在现场使用的卡。
应当理解,图1中示出的物理服务器100的特定拓扑是示例性的,并且各种修改是可能的。例如,虽然SoC 104和FPGA 106被示出为在经由外围(例如,PCIe)接口与物理服务器的主板接口的扩展卡(即,卸载卡102)上实现,但是在一些实施例中,替代卸载架构可以被使用。在特定实施例中,SoC 104和/或FPGA 106中的一个或多个可以直接在服务器主板上被实现。
如另一示例,虽然NIC 128被描述为单机组件,但是在一些实施例中,NIC 128的功能可以被合并到图1示出的一个或多个其他组件中,诸如在FPGA 106中。本领域普通技术人员将认识到其他变化、修改和替代。
3.卸载卡架构
图2是示意图200,其呈现了关于根据某些实施例的图1的卸载卡102的架构的附加细节。下文将依次讨论该架构的各个方面。
3.1SoC
SoC 104可以使用若干如下现有片上系统设计中的任何一个来实现:包括一个或多个通用处理内核、用于存储器、存储装置和外围设备的接口、以及NIC的现有片上系统。在特定实施例中,SoC 104可以基于ARM微处理器架构合并通用处理内核。
如示出,SoC 104经由三个单独的接口与FPGA 106通信地耦合,这将在下文第3.2节中讨论。另外,SoC(1)经由存储器接口204连接到对应于图1的RAM 110的一个或多个DRAM(动态RAM)模块202,(2)经由存储接口208连接到对应于图1的闪存112的eMMC(嵌入式多媒体卡)设备206,(3)经由SPI(串行外围接口)接口212和中间安全芯片214连接到BIOS闪存组件210,以及(4)经由I2C总线222(其也连接到FPGA 106和PCIe边缘连接器接口108)连接到若干I2C(中间集成设备)设备,诸如EEPROM 216、热插拔控制器218和温度传感器220。
关于(1),SoC 104可以使用(多个)DRAM模块202作为其运行程序代码(包括从物理服务器100的CPU综合体124卸载的虚拟机监测器代码)的工作存储器。(多个)DRAM模块202的具体数目和容量以及存储器接口204的规格可以根据实现方式而变化。在特定实施例中,(多个)DRAM模块202可以包括8GB(千兆字节)的DDR4 DRAM,其被组织为1024M(兆位)x 64位+ECC(纠错码)的单个存储器库,并且存储器接口204可以被配置为单个DDR4-2400存储器信道。
关于(2),SoC 104可以使用eMMC设备204作为非瞬态存储介质,用于存储和引导将在SoC上执行的程序代码,包括从CPU综合体124卸载的虚拟机监测器代码,以及存储将应用于FPGA 106的FPGA配置镜像。
关于(3),BIOS闪存组件210可以保存针对SoC 104的系统固件,并且安全芯片214可以确保该系统固件不会被攻击者有意或者无意地修改或者破坏,等等。
关于(4)、I2C设备216、218和220可以向BMC 118提供关于卸载卡102的各种管理信息。这些信息可以包括诸如运行温度数据、制造信息和功率消耗数据等信息。
除上述之外,SoC 104包括分别连接到外部报头228、外部报头230和外部报头232的USB(通用串行总线)、COM和JTAG(联合测试工作组)接口224、225和226,这些接口可以被用于将SoC 104与BMC 118或者外部设备连接起来以供调试或者管理。还存在可以由BMC118通过PCIe边缘连接器接口108发送给SoC 104的功率节流信号234。
3.2SoC与FPGA之间的接口
如前所述,SoC 104通过图2中的三个内部芯片到芯片的接口(PCIe接口236、以太网接口238和JTAG接口240)与FPGA 106通信地耦合。在各种实施例中,PCIe接口236提供控制和数据传递/交换能力。针对控制能力,系统芯片104可以使用PCIe接口236(或者备选地,JTAG接口)来管理和更新FPGA 106。例如,SoC 104可以验证从RAM 110传递到FPGA 106的FPGA配置镜像,并且可以使用该接口更新FPGA上或者FPGA的闪存122中的镜像。针对数据能力,PCIe接口236可以使运行在SoC 104上的程序代码能够向FPGA 104发送数据并且从FPGA104接收数据。这对于例如已经被写入用于通过PCIe交换数据的虚拟机监测器代码是有用的,因为这样的代码可以在相对少变化的情况下被移植用于在SoC 104上执行(或者在FPGA106上实现)。在特定实施例中,PCIe接口236可以具有8个PCI 3.0通道(即,对应于PCI 3.08x接口)。在其他一些实施例中,任何其他数目(例如4、12、16等)的PCI通道可以被支持。
以太网接口238允许SoC 104和FPGA 106以网络分组的形式交换数据。例如,这对于已经被编写为通过网络分组交换数据的虚拟机监测器代码是有用的,因为这样的代码可以在相对少变化的情况下被移植用于在SoC 104上执行(或者在FPGA 106上实现)。例如,考虑如下场景,其中基于网络流的转发在FPGA 106上的硬件中被实现,并且用于确定对网络流的路由的网络控制平面在SoC 104上的软件中被实现。在这种情况下,流表例外和规则可以以网络分组的形式在FPGA 106和SoC 104之间被传送。在特定实施例中,以太网接口238可以支持25G(千兆)以太网。
JTAG接口240为SoC 104提供与FPGA 106通信的方式,用于低级别测试(例如,调试)和编程目的。在一些实施例中,可以在SoC 104和FPGA 106之间的JTAG路径中插入JTAG多路复用器,从而允许外部程序员设备经由外部报头232连接到设备接口240。在这些实施例中,来自外部程序员设备的“当前”信号将JTAG接口240的信号路径从SoC 104切换到该设备。这在加载初始位流时对于初始卸载卡启动以及在SoC至FPGA的JTAG路径未准备好时对于FPGA应用程序开发非常有用。图3描绘了根据某些实施例的具有JTAG多路复用器302的该架构的示例图300。
3.3FPGA
FPGA 106可以使用若干现有FPGA芯片中任一芯片实现。在特定实施例中,FPGA106可以使用支持特定最小数目的可编程逻辑元件(例如,1000K元件)和特定最小收发器/FPGA结构速度等级(例如,等级2)的现有FPGA芯片来实现。如图2所示,FPGA 106经由上述接口236-接口240与I2C总线222和SoC 104通信地耦合。另外,FPGA 106(1)经由内部PCIe接口242被连接到PCIe边缘连接器接口108,(2)经由存储器接口246被连接到对应于图1的RAM120的一个或多个DRAM模块244,(3)经由存储接口249被连接到对应于图1的闪存122的QSPI(四路串行外围接口)闪存模块248,以及(4)分别经由以太网接口254和以太网接口256连接到两个网络收发器模块250和252。
关于(1),内部PCIe接口242使FPGA 106能够与CPU综合体124和安装在物理服务器100中的其他PCIe设备(包括,例如,NIC 128)通信。在特定实施例中,PCIe接口242可以是PCIe 3.0x16接口。
关于(2),当执行被编程到设备中的逻辑(包括从CPU综合体124卸载的虚拟机监测器逻辑)时,FPGA 106可以使用(多个)DRAM模块244作为其工作存储器。(多个)DRAM模块244的具体数目和容量以及存储器接口246的规格可以根据实现方式而变化。在特定实施例中,(多个)DRAM模块202可以包括8GB(千兆字节)的DDR4 DRAM,其被组织为512m×64位+ECC的两个4GB存储器库,并且存储器接口246可以被配置为双DDR4-2400存储器信道。
关于(3),QSPI闪存模块248可以保存一个或多个FPGA配置镜像,FPGA 106可以在上电时加载这些镜像,以配置其自身来执行其指定功能。在特定的实施例中,QSPI闪存模块248可以保存至少三个独立的镜像,这将在下文第3.4条中描述。除了来自闪存的配置之外,FPGA 106还可以支持经由外部JTAG程序员设备的配置、由SoC 104通过JTAG接口240发送的JTAG命令、通过PCIe的CvP(经由协议的配置)、以及通过PCIe的部分重新配置。
关于(4),网络收发器模块250使FPGA 106能够接收来自外部网络126的传入网络业务,并且向外部网络126发送传出网络业务。另外,网络收发器模块252使FPGA 106能够与NIC 128交换网络业务。这在FPGA 106实现网络平面功能的场景中是有用的,因为FPGA 106可以经由模块252从NIC 128接收传出网络分组,适当地处理/转换它们,并且经由模块250将它们发送到外部网络126。相反,FPGA 106可以通过模块250从外部网络126接收传入网络分组,对其进行适当的处理/转换,并且通过模块252将其发送到NIC 128(此时,它们可以被传送到正确的目的地VM)。以该方式利用FPGA 106用于网络数据平面加速的示例网络数据流将在下文第4节中讨论。在特定实施例中,网络收发器模块250和网络收发器模块252可以是QSFP28光学模块,以太网接口254和以太网接口256可以支持100G以太网。
3.4FPGA闪存配置详情
在一组实施例中,QSPI闪存模块248可以存储针对FPGA 106的最少的三个独立配置镜像:黄金镜像、故障安全镜像和用户应用镜像。黄金镜像在初始制造时被工厂测试,并且包括用于FPGA 106的正常预期功能。故障安全镜像在工厂被编程,并且在制造后不会被覆写。在各种实施例中,该故障安全镜像包含由卸载卡102在上电时所需的最少的一组功能,并且FPGA 106的网络接口被迫进入旁路模式,在该模式下,所有业务在接口之间直接传递,而无需由FPGA进行任何中间处理。最后,用户应用镜像是由用户/客户定义的镜像。
在卸载卡102上电时,默认情况下,黄金镜像将从QSPI闪存模块248被加载并且应用于FPGA 106以配置其结构。如果上电过程中出现任何错误(或者如果在服务器运行时期间发现问题),则卡可以被重新引导以加载故障安全镜像而非黄金镜像。
4.示例网络处理工作流程
通过考虑前述卸载卡架构,图4描绘了根据某些实施例可以由物理服务器100实现的示例性网络处理工作流的流程图400。流程图400假设卸载卡106的FPGA 106被配置为维持流表,流表包括由运行在SoC 104上的网络控制平面确定的网络流,并且根据该流表转发数据分组。
从框402开始,物理服务器100的NIC 128可以向运行在服务器100上的VM呈现SR-IOV(单根IO虚拟化)接口。该SR-IOV接口(称为虚拟功能)使VM能够直接地与NIC 128通信,而无需涉及虚拟机监测器。
在框404处,VM可以创建针对网络分组的数据有效载荷,该网络分组要被传输给远程目的地,并且可以将此通知给NIC 128。作为响应,NIC 128可以从VM的客户存储器空间中读取数据有效载荷(框406),将数据有效载荷组装成一个或多个网络分组,该一个或多个网络分组具有标识VM的IP地址和预期目的地的IP地址等的报头(框408),并且将网络分组从其连接到FPGA 106的网络收发器模块252的出口端口输出(框410)。
在框412和框414处,FPGA 106可以接收网络分组并且应用其网络数据平面逻辑,以执行在流表中的对网络分组的5元组(源IP地址、源端口、目的地IP地址、目的地端口、协议)的查找。如果在表中找到匹配条目(框416),则FPGA 106可以标识条目中针对网络分组的下一跳目的地(框418),更新分组的报头(框420),并且将分组从网络收发器模块250发送到外部网络126(框422),从而结束工作流程。
另一方面,如果在框416的表中未找到匹配条目(指示这是流中的第一分组),则FPGA 106可以通过内部以太网接口238向SoC 104发送网络分组(框424)。运行在SoC 104上的网络控制平面组件然后可以计算针对分组的下一跳目的地,并且经由接口238将分组的网络流的新条目添加到FPGA的流表(框426)。使用该新条目,FPGA 106可以执行框420和框422,并且工作流可以结束。
上面的描述说明了本公开的各种实施例以及如何实现这些实施例的各方面的示例。上述示例和实施例不应被认为是唯一的实施例,并且被呈现来说明由以下权利要求书定义的本公开的灵活性和优点。例如,虽然已经描述了某些实施例的特定工艺流程和步骤,但是对于本领域技术人员而言,显然本公开的范围不限于所描述的流程和步骤。被描述为顺序的步骤可以并行执行,步骤的顺序可以变化,并且步骤可以被修改、组合、添加或者省略。作为另一示例,尽虽然已经使用硬件和软件的特定组合描述了某些实施例,但是应当认识到,硬件和软件的其他组合也是可能的,并且被描述为以软件实现的特定操作也可以以硬件实现,反之亦然。
因此,具体实施方式和附图应被视为说明性的而非限制性的。对于本领域技术人员而言,其他布置、实施例、实施方式和等同物将是显而易见的,并且可以在不脱离如以下权利要求所述的本公开的精神和范围的情况下使用。

Claims (15)

1.一种服务器,包括:
CPU(中央处理器)综合体;以及
卸载卡,所述卸载卡包括:
SoC(片上系统);以及
FPGA(现场可编程门阵列),
其中所述CPU综合体被配置为执行一个或多个虚拟机(VM),
其中所述SoC被配置为在软件中执行与所述一个或多个VM相关联的虚拟机监测器的一个或多个第一功能,并且
其中所述FPGA被配置为在硬件中执行与所述一个或多个VM相关联的虚拟机监测器的一个或多个第二功能。
2.根据权利要求1所述的服务器,其中所述SoC和所述FPGA经由所述卸载卡内部的PCIe(外围组件互连高速)接口并且经由所述卸载卡内部的以太网接口彼此通信地耦合。
3.根据权利要求1所述的服务器,其中所述SoC与驻留在所述卸载卡上的一个或多个易失性存储器模块通信地耦合,所述一个或多个易失性存储器模块充当工作存储器,所述SoC能够从所述工作存储器执行所述一个或多个第一功能。
4.根据权利要求1所述的服务器,其中所述SoC与驻留在所述卸载卡上的闪存模块通信地耦合,所述闪存模块存储针对所述一个或多个第一功能的程序代码。
5.根据权利要求1所述的服务器,其中所述FPGA与驻留在所述卸载卡上的一个或多个易失性存储器模块通信地耦合,所述一个或多个易失性存储器模块充当用于所述FPGA在执行所述一个或多个第二功能时的工作存储器。
6.根据权利要求1所述的服务器,其中所述FPGA与驻留在所述卸载卡上的闪存模块通信地耦合,所述闪存模块存储至少一个配置镜像,所述配置镜像用于将所述FPGA配置为执行所述一个或多个第二功能。
7.根据权利要求6所述的服务器,其中所述闪存模块存储第一配置镜像和第二配置镜像,所述第一配置镜像对应于针对所述FPGA的正常操作配置,所述第二配置镜像对应于针对所述FPGA的故障安全操作配置。
8.根据权利要求7所述的服务器,其中所述第一配置镜像在所述卸载卡加电时默认被应用于所述FPGA。
9.根据权利要求8所述的服务器,其中所述第二配置镜像在应用所述第一配置镜像时发生错误的情况下被应用于所述FPGA。
10.根据权利要求1所述的服务器,其中所述FPGA包括与TOR(机架顶)网络交换机通信地耦合的第一外部网络接口以及与所述服务器的NIC(网络接口卡)通信地耦合的第二外部网络接口。
11.根据权利要求1所述的服务器,其中所述一个或多个第一功能包括网络控制平面功能或者存储控制平面功能。
12.根据权利要求1所述的服务器,其中所述一个或多个第二功能包括网络数据平面功能或者存储数据平面功能。
13.一种服务器,包括:
CPU(中央处理单元)综合体,所述CPU综合体被配置为执行一个或多个虚拟机(VM);以及
卸载卡,所述卸载卡包括:
用于在软件中执行与所述一个或多个VM相关联的虚拟机监测器的一个或多个第一功能的装置;以及
用于在硬件中执行与所述一个或多个VM相关联的所述虚拟机监测器的一个或多个第二功能的装置。
14.一种方法,包括:
由驻留在服务器的卸载卡上的FPGA(现场可编程门阵列)从所述服务器的NIC(网络接口卡)接收网络分组,其中所述网络分组经由将所述FPGA和所述NIC互连的以太网接口被接收;
由所述FPGA在硬件中基于所述网络分组的报头执行在流表中的查找;
在确定在所述流表中没有找到针对所述报头的匹配条目时,由所述FPGA将所述网络分组转发给驻留在所述卸载卡上的SoC(片上系统),其中所述网络分组经由将所述FPGA和所述SoC互连的以太网接口被转发;
由所述SoC在软件中计算针对所述网络分组的下一跳目的地;以及
由所述SoC在软件中利用包括所述下一跳目的地的新流条目来更新所述流表。
15.根据权利要求14所述的方法,所述方法还包括,在确定在所述流程表中找到匹配条目时:
由所述FPGA基于所述匹配条目更新所述网络分组;以及
由所述FPGA经由所述FPGA的外部网络接口将所述网络分组传输给外部网络。
CN202080037234.7A 2019-05-20 2020-04-16 具有soc和fpga的服务器卸载卡 Pending CN113841120A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201962850421P 2019-05-20 2019-05-20
US62/850,421 2019-05-20
US16/808,286 2020-03-03
US16/808,286 US11593138B2 (en) 2019-05-20 2020-03-03 Server offload card with SoC and FPGA
PCT/US2020/028603 WO2020236363A1 (en) 2019-05-20 2020-04-16 Server offload card with soc and fpga

Publications (1)

Publication Number Publication Date
CN113841120A true CN113841120A (zh) 2021-12-24

Family

ID=73457079

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080037234.7A Pending CN113841120A (zh) 2019-05-20 2020-04-16 具有soc和fpga的服务器卸载卡

Country Status (6)

Country Link
US (1) US11593138B2 (zh)
EP (1) EP3973395A1 (zh)
JP (1) JP7502338B2 (zh)
KR (1) KR20220008833A (zh)
CN (1) CN113841120A (zh)
WO (1) WO2020236363A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11841733B2 (en) * 2020-01-08 2023-12-12 Institute Of Computing Technology, Chinese Academy Of Sciences Method and system for realizing FPGA server
US20210226929A1 (en) * 2020-01-20 2021-07-22 Oracle International Corporation Techniques for transferring data across air gaps
US12056475B2 (en) * 2020-02-04 2024-08-06 Nippon Telegraph And Telephone Corporation Offload server, offload control method, and offload program
WO2021156954A1 (ja) 2020-02-04 2021-08-12 日本電信電話株式会社 オフロードサーバ、オフロード制御方法およびオフロードプログラム
JP7380823B2 (ja) * 2020-02-17 2023-11-15 日本電信電話株式会社 オフロードサーバ、オフロード制御方法およびオフロードプログラム
CN111538695A (zh) * 2020-04-22 2020-08-14 上海御渡半导体科技有限公司 一种基于fpga实现的pcie与spi转换适配器及方法
US11431621B2 (en) 2020-07-15 2022-08-30 Verizon Patent And Licensing Inc. Systems and methods for user plane function (“UPF”) offload at configurable routing fabric
US11709522B1 (en) * 2020-09-16 2023-07-25 Xilinx, Inc. Power and temperature driven clock throttling
US11983100B2 (en) * 2020-09-29 2024-05-14 Amazon Technologies, Inc. Automated testing of systems and applications
CN112804297B (zh) * 2020-12-30 2022-08-19 之江实验室 一种可组装的分布式计算和存储系统及其构造方法
CN112929299B (zh) * 2021-01-27 2021-11-30 广州市品高软件股份有限公司 基于fpga加速卡的sdn云网络实现方法、装置及设备
US12061701B2 (en) * 2021-02-02 2024-08-13 Seagate Technology Llc On-chip NVM ISP emulation in FPGA
TWI738627B (zh) * 2021-03-12 2021-09-01 英業達股份有限公司 具有錯誤偵測功能的智能網卡系統及錯誤偵測方法
US20220321403A1 (en) * 2021-04-02 2022-10-06 Nokia Solutions And Networks Oy Programmable network segmentation for multi-tenant fpgas in cloud infrastructures
CN112764872B (zh) * 2021-04-06 2021-07-02 阿里云计算有限公司 计算机设备、虚拟化加速设备、远程控制方法及存储介质
CN115225451A (zh) * 2021-04-17 2022-10-21 华为云计算技术有限公司 一种计算节点管理系统及针对多个计算节点的管理方法
WO2023162228A1 (ja) * 2022-02-28 2023-08-31 日本電信電話株式会社 サーバ、切り替え方法、および、切り替えプログラム
KR20230157194A (ko) * 2022-05-09 2023-11-16 삼성전자주식회사 스위치를 이용하는 트래픽 처리를 위한 장치 및 방법
CN117076354A (zh) * 2022-05-10 2023-11-17 华为云计算技术有限公司 一种硬件管理卡及相关产品
US20240028545A1 (en) * 2022-07-21 2024-01-25 Dell Products L.P. Application acceleration port interface module embodiments
CN115934631B (zh) * 2022-12-30 2023-10-27 武汉麓谷科技有限公司 一种基于MPSoC的智能存储平台

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104428752A (zh) * 2012-06-21 2015-03-18 微软公司 将虚拟机流卸载至物理队列
US20160232019A1 (en) * 2015-02-09 2016-08-11 Broadcom Corporation Network Interface Controller with Integrated Network Flow Processing
US20180189081A1 (en) * 2016-12-30 2018-07-05 Neeraj S. Upasani Self-morphing server platforms

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5621622B2 (ja) * 2011-01-26 2014-11-12 日本電気株式会社 通信システム、通信端末、ゲートウェイ、通信方法及びプログラム
US8930690B2 (en) * 2012-03-21 2015-01-06 Microsoft Corporation Offloading packet processing for networking device virtualization
JP2017174301A (ja) 2016-03-25 2017-09-28 日本電気株式会社 仮想マシン配置装置、仮想マシン配置方法および仮想マシン配置プログラム
US10318311B2 (en) 2016-06-30 2019-06-11 Amazon Technologies, Inc. Memory allocation techniques at partially-offloaded virtualization managers
US11099894B2 (en) * 2016-09-28 2021-08-24 Amazon Technologies, Inc. Intermediate host integrated circuit between virtual machine instance and customer programmable logic
JP6938978B2 (ja) * 2017-03-14 2021-09-22 株式会社リコー 画像形成装置、インク吐出方法、液体吐出装置
US10747883B2 (en) * 2017-05-11 2020-08-18 Qualcomm Incorporated Collated multi-image check in system-on-chips
CN109714302B (zh) * 2017-10-25 2022-06-14 阿里巴巴集团控股有限公司 算法的卸载方法、装置和系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104428752A (zh) * 2012-06-21 2015-03-18 微软公司 将虚拟机流卸载至物理队列
US20160232019A1 (en) * 2015-02-09 2016-08-11 Broadcom Corporation Network Interface Controller with Integrated Network Flow Processing
US20180189081A1 (en) * 2016-12-30 2018-07-05 Neeraj S. Upasani Self-morphing server platforms

Also Published As

Publication number Publication date
US20200371828A1 (en) 2020-11-26
US11593138B2 (en) 2023-02-28
JP7502338B2 (ja) 2024-06-18
JP2022533997A (ja) 2022-07-27
KR20220008833A (ko) 2022-01-21
WO2020236363A1 (en) 2020-11-26
EP3973395A1 (en) 2022-03-30

Similar Documents

Publication Publication Date Title
US11593138B2 (en) Server offload card with SoC and FPGA
US10778521B2 (en) Reconfiguring a server including a reconfigurable adapter device
US8359408B2 (en) Enabling functional dependency in a multi-function device
US10691803B2 (en) Secure execution environment on a server
US20220210229A1 (en) System and method for providing secure console access with multtiple smart nics using nc-si and spdm
US8412863B2 (en) Storage apparatus and virtual port migration method for storage apparatus
US8040900B2 (en) N-port network adaptor
US20170054593A1 (en) Transformation of peripheral component interconnect express compliant virtual devices in a network environment
US20120201253A1 (en) Multi-Adapter Link Aggregation for Adapters with Hardware Based Virtual Bridges
US10911405B1 (en) Secure environment on a server
KR20100126411A (ko) 기능 변환 시스템 및 방법과 변환 수행 시스템
US20180341536A1 (en) Distributed input/output virtualization
JPWO2020236363A5 (zh)
US11321179B1 (en) Powering-down or rebooting a device in a system fabric
US8589610B2 (en) Method and system for receiving commands using a scoreboard on an infiniband host channel adaptor
CN110945843B (zh) 虚拟交换设备和方法
US9535851B2 (en) Transactional memory that performs a programmable address translation if a DAT bit in a transactional memory write command is set
CN109656674B (zh) 一种计算机设备、虚拟化芯片及数据传输方法
US11386031B2 (en) Disaggregated switch control path with direct-attached dispatch
US10228968B2 (en) Network interface device that alerts a monitoring processor if configuration of a virtual NID is changed
US20150222513A1 (en) Network interface device that alerts a monitoring processor if configuration of a virtual nid is changed

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