WO2020236363A1 - Server offload card with soc and fpga - Google Patents

Server offload card with soc and fpga Download PDF

Info

Publication number
WO2020236363A1
WO2020236363A1 PCT/US2020/028603 US2020028603W WO2020236363A1 WO 2020236363 A1 WO2020236363 A1 WO 2020236363A1 US 2020028603 W US2020028603 W US 2020028603W WO 2020236363 A1 WO2020236363 A1 WO 2020236363A1
Authority
WO
WIPO (PCT)
Prior art keywords
fpga
server
soc
functions
offload card
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.)
Ceased
Application number
PCT/US2020/028603
Other languages
English (en)
French (fr)
Inventor
Derek Chiou
Andrew Putnam
Daniel Firestone
Jack Lavier
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 JP2021569031A priority Critical patent/JP7502338B2/ja
Priority to KR1020217037891A priority patent/KR102838679B1/ko
Priority to EP20724984.8A priority patent/EP3973395B1/en
Priority to CN202080037234.7A priority patent/CN113841120B/zh
Publication of WO2020236363A1 publication Critical patent/WO2020236363A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Definitions

  • Cloud platforms such as Microsoft Azure and Amazon AWS run on a large fleet of physical servers (referred to herein as cloud servers) that are distributed across geographically dispersed data centers.
  • cloud servers implement a virtualization software layer, known as a hypervisor, that allows for the hosting of virtual machines (VMs).
  • VMs virtual machines
  • IaaS Infrastructure- as-a-Service
  • a physical server with an offload system including a SoC (system-on-chip) and a FPGA (field programmable gate array) is disclosed.
  • One possible embodiment of the offload system is on a card.
  • the SoC can be configured to offload one or more hypervisor functions from a CPU complex of the server that are suited for execution in software
  • the FPGA can be configured to offload one or more hypervisor functions from the CPU complex that are suited for execution in hardware.
  • FIG. 1 depicts a physical server topology that includes an offload card with a SoC and a FPGA according to certain embodiments.
  • FIG. 2 depicts an architecture for the offload card of FIG. 1 according to certain embodiments.
  • FIG. 3 depicts a JTAG (Joint Test Action Group) multiplexer implementation according to certain embodiments.
  • JTAG Joint Test Action Group
  • FIG. 4 depicts an example network processing flow according to certain embodiments.
  • Embodiments of the present disclosure are directed to a physical server design that employs an offload card comprising a SoC (system-on-chip) and a FPGA (field- programmable gate array).
  • the SoC and FPGA can run hypervisor functions traditionally executed by the server’s CPU complex, thereby offloading the processing burden for those functions from the CPU complex.
  • the SoC of the offload card can run hypervisor functions that require or benefit from the flexibility of a general purpose processor (e.g., networking and storage control plane functions), while the FPGA of the offload card can run hypervisor functions that are suited for implementation/acceleration in hardware (e.g., networking and storage data plane functions).
  • the offload card can improve the server’s efficiency while at the same time maintaining architectural flexibility.
  • the FPGA can be re-programmed from accelerating one type/class of functions (e.g., networking) to accelerating another type/class of functions (e.g., storage). This is not possible with a hard logic-based accelerator such as an ASIC (application-specific integrated circuit).
  • ASIC application-specific integrated circuit
  • FIG. l is a simplified block diagram illustrating the high-level topology of a physical server 100 according to certain embodiments of the present disclosure.
  • physical server 100 may be a cloud server that is deployed as part of the infrastructure of a cloud platform.
  • physical server 100 may be mounted in a server rack within a data center operated by the cloud platform provider.
  • physical server 100 may be deployed in other contexts and/or via other form factors, such as in an on-premises enterprise IT environment in the form of, e.g., a standalone server.
  • cloud servers often implement a hypervisor for virtualization, which allows the cloud platform to offer services such as IaaS
  • physical server 100 includes a novel offload card 102 comprising a SoC 104 and a FPGA 106.
  • offload card 102 is implemented as a PCIe (Peripheral Component Interface Express)-based expansion card and thus interfaces with the mainboard of physical server 100 via a standard PCIe xl6 3.0 edge connector interface 108.
  • offload card 102 may be implemented using any other type of peripheral interface.
  • SoC 104 has its own RAM (random access memory) 110 and flash memory 112 and is communicatively coupled with FPGA 106 via at least interface that is internal to offload card 102: a PCIe interface 114 and an Ethernet interface 116.
  • SoC 104 is communicatively coupled with a baseboard management controller (BMC) 118 of physical server 100 through I2C interface 108 and a number of other channels (e.g., USB and COM).
  • BMC baseboard management controller
  • FPGA 106 also has its own RAM 120 and flash memory 122 and is
  • FPGA 106 includes two external Ethernet interfaces, one of which connects to an external network 126 (via, e.g., a TOR (top-of-rack) switch or some other network device) and the other of which connects to a NIC (network interface card/controller) 128 within physical server 100.
  • an external network 126 via, e.g., a TOR (top-of-rack) switch or some other network device
  • NIC network interface card/controller
  • the topology shown in FIG. 1 enables some or all of the hypervisor functions traditionally run on CPU complex 124 of physical server 100 to instead be run on, and thus offloaded to, SoC 104 and FPGA 106 of offload card 102.
  • hypervisor functions that benefit from the flexibility of a general purpose processor (or are simply too complex/dynamic to implement in hardware) can be run on SoC 104, which incorporates one or more general purpose processing cores. Examples of such functions include SDN (software-defined networking) control plane functions, which require complex routing computations and need to be updated relatively frequently to support new protocols and features.
  • hypervisor functions that are suited to hardware acceleration can be implemented via logic blocks on FPGA 106.
  • Examples of such functions include SDN data plane functions, which involve forwarding network data traffic according to control plane decisions, and storage data plane functions such as data replication, de- duplication, and so on.
  • the hypervisor may be entirely vacated from CPU complex 124 and moved to offload card 102, in which case CPU complex 124 can run a minimal hypervisor that deals with issues that can only be run on the CPU complex itself, such as accessing certain registers, or no hypervisor at all and the remainder of the compute capacity of CPU complex 124 can be dedicated to guest workloads.
  • offload card 102 can be easily re-purposed for different use cases or the same use case improved by re-programming the FPGA, and the FPGA logic can be updated if needed. This is advantageous in large-scale deployments where it may not be desirable to pull and replace a large number cards that are already in the field.
  • SoC 104 and FPGA 106 are shown as being implemented on an expansion card (i.e., offload card 102) that interfaces with the physical server’s mainboard via a peripheral (e.g., PCIe) interface, in some embodiments an alternative offload architecture may be used. In a particular embodiment, one or more of SoC 104 and/or FPGA 106 may be implemented directly on the server mainboard.
  • NIC 128 is depicted as being a standalone component, in some embodiments the functionality of NIC 128 may be incorporated into one or more other components shown in FIG. 1, such as in FPGA 106.
  • NIC 128 is depicted as being a standalone component, in some embodiments the functionality of NIC 128 may be incorporated into one or more other components shown in FIG. 1, such as in FPGA 106.
  • FPGA 106 field-programmable gate array
  • FIG. 2 is a schematic diagram 200 that presents additional details regarding the architecture of offload card 102 of FIG. 1 according to certain embodiments. Various aspects of this architecture are discussed in turn below.
  • SoC 104 can be implemented using any one of a number of existing system-on- chip designs that include one or more general purpose processing cores, interfaces for memory, storage, and peripherals, and a NIC. In a particular embodiment, SoC 104 may incorporate general purpose processing cores based on the ARM microprocessor architecture. [0029] As shown, SoC 104 is communicatively coupled with FPGA 106 via three separate interfaces, which are discussed in section 3.2 below. In addition, SoC is connected to (1) one or more DRAM (dynamic RAM) modules 202 corresponding to RAM 110 of FIG. 1 via a memory interface 204, (2) an eMMC (embedded multimedia card) device 206 corresponding to flash memory 112 of FIG.
  • DRAM dynamic RAM
  • eMMC embedded multimedia card
  • I2C Inter Integrated Device
  • SoC 104 can use DRAM module(s) 202 as its working memory for running program code, including hypervisor code offloaded from CPU complex 124 of physical server 100.
  • the specific number and capacity of DRAM module(s) 202 and the specification of memory interface 204 can vary depending on the implementation.
  • DRAM module(s) 202 can comprise 8 GB (gigabytes) of DDR4 DRAM organized as a single 1024M (megabit) x 64 bit + ECC (error correction code) memory bank and memory interface 204 can be configured as a single DDR4-2400 memory channel.
  • SoC 104 can use eMMC device 204 as a non-transitory storage medium for storing and booting program code to be executed on the SoC, including hypervisor code offloaded from CPU complex 124, as well as storing FPGA configuration images to be applied to FPGA 106.
  • BIOS flash memory component 210 can hold the system firmware for SoC 104 and security chip 214 can, among other things, ensure that this system firmware is not purposefully or inadvertently modified or corrupted by an attacker.
  • I2C devices 216, 218, and 220 can provide various pieces of management information regarding offload card 102 to BMC 118. These pieces of information can include information such as operating temperature data, manufacturing information, and power consumption data.
  • SoC 104 includes USB (Universal Serial Bus), COM, and JTAG (Joint Test Action Group) interfaces 224, 225, and 226 to external headers 228, 230, and 232 respectively, which can be used to connect SoC 104 with BMC 118 or external devices for debugging or management.
  • JTAG Joint Test Action Group
  • SoC 104 is communicatively coupled with FPGA 106 via three internal, chip-to-chip interfaces in FIG. 2: a PCIe interface 236, an Ethernet interface 238, and a JTAG interface 240.
  • PCIe interface 236 provides both control and data transfer/exchange capabilities. For control capabilities,
  • SoC 104 can use PCIe interface 236 (or alternatively a JTAG interface) to manage and update FPGA 106.
  • SoC 104 can validate FPGA configuration images transferred from RAM 110 to FPGA 106 and can update the image on the FPGA or in the FPGA’s flash memory 122 using this interface.
  • PCIe interface 236 can enable program code running on SoC 104 to send data to, and receive data from, FPGA 104. This is useful for, e.g., hypervisor code that is already written to exchange data over PCIe, because such code can be ported for execution on SoC 104 (or
  • PCIe interface 236 can have 8 PCI 3.0 lanes (i.e., correspond to a PCI 3.0 8x interface). In other embodiments any other number of PCI lanes, such as 4, 12, 16, etc., may be supported.
  • Ethernet interface 238 allows SoC 104 and FPGA 106 to exchange data in the form of network packets. This is useful for, e.g., hypervisor code that is already written to exchange data via network packets, because such code can be ported for execution on SoC 104 (or implementation on FPGA 106) with relatively few changes. For example, consider a scenario where network flow-based forwarding is implemented in hardware on FPGA 106 and a network control plane for determining routes for network flows is implemented in software on SoC 104. In this case, flow table exceptions and rules can be communicated between FPGA 106 and SoC 104 in the form of network packets. In a particular embodiment, Ethernet interface 238 can support 25G (gigabit) Ethernet.
  • JTAG interface 240 provides a way for SoC 104 to communicate with FPGA 106 for low-level testing (e.g., debugging) and programming purposes.
  • a JTAG multiplexer can be inserted in the JTAG path between SoC 104 and FPGA 106 that allows an external programmer device connected via external header 232 to drive interface 240.
  • a“present” signal from the external programmer device will switch the signal path of JTAG interface 240 from SoC 104 to the device.
  • FIG. 3 depicts an example diagram 300 of this architecture with a JTAG multiplexer 302 according to certain embodiments.
  • FPGA 106 can be implemented using any one of number of existing FPGA chips.
  • FPGA 106 can be implemented using an existing FPGA chip that supports a certain minimum number of programmable logic elements (e.g., 1000K elements) and a certain minimum transceiver/FPGA fabric speed grade (e.g., grade 2).
  • FPGA 106 is communicatively coupled with I2C bus 222 and with SoC 104 via interfaces 236-240 discussed above.
  • FPGA 106 is connected to (1) PCIe edge connector interface 108 via internal PCIe interface 242, (2) one or more DRAM module(s) 244 corresponding to RAM 120 of FIG.
  • internal PCIe interface 242 enables FPGA 106 to communicate with CPU complex 124 and other PCIe devices installed in physical server 100 (including, e.g., NIC 128).
  • PCIe interface 242 may be a PCIe 3.0 xl6 interface.
  • FPGA 106 can use DRAM module(s) 244 as its working memory when executing logic programmed into the device, including hypervisor logic offloaded from CPU complex 124.
  • the specific number and capacity of DRAM module(s) 244 and the specification of memory interface 246 can vary depending on the implementation.
  • DRAM module(s) 202 can comprise 8 GB (gigabytes) of DDR4 DRAM organized as two 4GB banks of 512M x 64 bit + ECC and memory interface 246 can be configured as dual DDR4-2400 memory channels.
  • QSPI flash memory module 248 can hold one or more FPGA configuration images that FPGA 106 can load upon power-up into order to configure itself to perform its designated functions. In certain embodiments, QSPI flash memory module 248 can hold at least three separate images, which is described in section 3.4 below. In addition to configuration from flash memory, FPGA 106 can also support configuration via an external JTAG programmer device, JTAG commands sent by SoC 104 over JTAG interface 240, CvP (Configuration via Protocol) over PCIe, and partial reconfiguration over PCIe.
  • JTAG programmer device JTAG commands sent by SoC 104 over JTAG interface 240
  • CvP Configuration via Protocol
  • network transceiver module 250 enables FPGA 106 to receive incoming network traffic from and transmit outgoing network traffic to external network 126. Further, network transceiver module 252 enables FPGA 106 to exchange network traffic with NIC 128. This is useful in scenarios where FPGA 106 implements network plane functions because FPGA 106 can receive outgoing network packets from NIC 128 via module 252, process/transform them appropriately, and send them out to external network 126 via module 250. Conversely, FPGA 106 can receive incoming network packets from external network 126 via module 250, process/transform them appropriately, and send them to NIC 128 via module 252 (at which point they can be communicated to the correct destination VM).
  • network transceiver modules 250 and 252 can be QSFP28 optical modules and Ethernet interfaces 254 and 256 can support 100G Ethernet.
  • QSPI flash memory module 248 can store a minimum of three separate configuration images for FPGA 106: a golden image, a failsafe image, and a user application image.
  • the golden image is factory tested at the time of initial manufacturing and comprises the normal intended functionality for FPGA 106.
  • the failsafe image is programmed at the factory and is never overwritten after manufacturing.
  • this failsafe image contains a minimum set of functions required by offload card 102 at power-up and the network interfaces of FPGA 106 are forced into a bypass mode where all traffic is passed directly between the interfaces without any intermediate processing by the FPGA.
  • the user application image is an image that has been defined by a user/customer.
  • offload card 102 At the time offload card 102 is powered-on, by default the golden image will be loaded from QSPI flash memory module 248 and applied to FPGA 106 for configuring its structures. If there any errors with this power-on process (or if problems are found during server runtime), the card can be rebooted to load the failsafe image instead of the golden image.
  • FIG. 4 depicts a flowchart 400 of an example network processing workflow that may be implemented by physical server 100 according to certain embodiments.
  • Flowchart 400 assumes that FPGA 106 of offload card 106 is configured to maintain a flow table comprising network flows determined by a network control plane running on SoC 104 and to forward data packets in accordance with the flow table.
  • NIC 128 of physical server 100 can present an SR-IOV (single root IO virtualization) interface to a VM running on server 100.
  • This SR-IOV interface (referred to as a virtual function) enables the VM to directly communicate with NIC 128, without involving the hypervisor.
  • the VM can create a data payload for a network packet to be transmitted to a remote destination and can notify NIC 128 of this.
  • NIC 128 can read the data payload from the guest memory space of the VM (block 406), assemble the data payload into one or more network packets with headers identifying, among other things, the IP address of the VM and the IP address of the intended destination (block 408), and output the network packet out of its egress port connected to network transceiver module 252 of FPGA 106 (block 410).
  • FPGA 106 can receive the network packet and apply its network data plane logic to perform a lookup of the network packet’s 5-tuple (source IP address, source port, destination IP address, destination port, protocol) into a flow table. If a matching entry is found in the table (block 416), FPGA 106 can identify the next-hop destination for the network packet in the entry (block 418), update the header of the packet (block 420), and send the packet out of network transceiver module 250 to external network 126 (block 422), thereby ending the workflow.
  • 5-tuple source IP address, source port, destination IP address, destination port, protocol
  • FPGA 106 can send the network packet to SoC 104 over internal Ethernet interface 238 (block 424).
  • a network control plane component running on SoC 104 can then calculate a next-hop destination for the packet and add a new entry for the packet’s network flow to the FPGA’s flow table via interface 238 (block 426). Using this new entry, FPGA 106 can execute blocks 420 and 422 and the workflow can end.

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)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Logic Circuits (AREA)
  • Multi Processors (AREA)
PCT/US2020/028603 2019-05-20 2020-04-16 Server offload card with soc and fpga Ceased WO2020236363A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2021569031A JP7502338B2 (ja) 2019-05-20 2020-04-16 Socおよびfpgaを有するサーバオフロードカード
KR1020217037891A KR102838679B1 (ko) 2019-05-20 2020-04-16 Soc 및 fpga를 구비한 서버 오프로드 카드
EP20724984.8A EP3973395B1 (en) 2019-05-20 2020-04-16 Server offload card with soc and fpga
CN202080037234.7A CN113841120B (zh) 2019-05-20 2020-04-16 具有soc和fpga的服务器卸载卡

Applications Claiming Priority (4)

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

Publications (1)

Publication Number Publication Date
WO2020236363A1 true WO2020236363A1 (en) 2020-11-26

Family

ID=73457079

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2020/028603 Ceased WO2020236363A1 (en) 2019-05-20 2020-04-16 Server offload card with soc and fpga

Country Status (6)

Country Link
US (1) US11593138B2 (https=)
EP (1) EP3973395B1 (https=)
JP (1) JP7502338B2 (https=)
KR (1) KR102838679B1 (https=)
CN (1) CN113841120B (https=)
WO (1) WO2020236363A1 (https=)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112804297A (zh) * 2020-12-30 2021-05-14 之江实验室 一种可组装的分布式计算和存储系统及其构造方法

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021138846A1 (zh) * 2020-01-08 2021-07-15 中国科学院计算技术研究所 一种实现fpga服务器的方法和系统
US12149509B2 (en) * 2020-01-20 2024-11-19 Oracle International Corporation Techniques for transferring data across air gaps
WO2021156954A1 (ja) 2020-02-04 2021-08-12 日本電信電話株式会社 オフロードサーバ、オフロード制御方法およびオフロードプログラム
WO2021156955A1 (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
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 阿里云计算有限公司 计算机设备、虚拟化加速设备、远程控制方法及存储介质
CN115225451B (zh) * 2021-04-17 2025-05-02 华为云计算技术有限公司 一种计算节点管理系统及针对多个计算节点的管理方法
US20230185760A1 (en) * 2021-12-13 2023-06-15 Intel Corporation Technologies for hardware microservices accelerated in xpu
WO2023162228A1 (ja) * 2022-02-28 2023-08-31 日本電信電話株式会社 サーバ、切り替え方法、および、切り替えプログラム
KR20230157194A (ko) * 2022-05-09 2023-11-16 삼성전자주식회사 스위치를 이용하는 트래픽 처리를 위한 장치 및 방법
CN117076354A (zh) * 2022-05-10 2023-11-17 华为云计算技术有限公司 一种硬件管理卡及相关产品
US20230409363A1 (en) * 2022-06-16 2023-12-21 Amazon Technologies, Inc. Radio-based application processing server with network function accelerator at virtualization management offloading card
US12141090B2 (en) * 2022-07-21 2024-11-12 Dell Products L.P. Application acceleration port interface module embodiments
CN116150060A (zh) * 2022-11-24 2023-05-23 天津市英贝特航天科技有限公司 一种基于fpga的cpci总线多备份读写方法及emmc卡
CN115858159A (zh) * 2022-12-02 2023-03-28 无锡芯光互连技术研究院有限公司 一种网络处理器和控制方法
US20240184619A1 (en) * 2022-12-02 2024-06-06 Mellanox Technologies, Ltd. Segregated fabric control plane
CN115934631B (zh) * 2022-12-30 2023-10-27 武汉麓谷科技有限公司 一种基于MPSoC的智能存储平台
US12556494B2 (en) 2023-02-27 2026-02-17 Mellanox Technologies, Ltd. Managing multiplane networks
US12568044B2 (en) 2023-03-13 2026-03-03 Mellanox Technologies, Ltd. Inter-plane access
CN116774933A (zh) * 2023-06-19 2023-09-19 北京火山引擎科技有限公司 存储设备的虚拟化处理方法、桥接设备、系统及介质
US12254349B1 (en) * 2024-02-14 2025-03-18 United Arab Emirates University On-chip communication architecture for a heterogenous system
US20250310257A1 (en) * 2024-03-30 2025-10-02 Microsoft Technology Licensing, Llc Disaggregation from network appliances to hardware-based network devices in software defined networks
CN118093474B (zh) * 2024-04-29 2024-06-21 苏州元脑智能科技有限公司 一种基板管理系统以及服务器

Family Cites Families (13)

* 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
US9092269B2 (en) * 2012-06-21 2015-07-28 Microsoft Technology Licensing, Llc Offloading virtual machine flows to physical queues
US10812632B2 (en) * 2015-02-09 2020-10-20 Avago Technologies International Sales Pte. Limited Network interface controller with integrated network flow processing
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
US11023258B2 (en) * 2016-12-30 2021-06-01 Intel Corporation Self-morphing server platforms
US10678721B1 (en) * 2017-02-02 2020-06-09 Amazon Technologies, Inc. Communication link testing
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 阿里巴巴集团控股有限公司 算法的卸载方法、装置和系统
US11831742B2 (en) * 2019-12-12 2023-11-28 Intel Corporation Semi-flexible packet coalescing control path

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS: "Intel Arria 10 Device Overview Subscribe Send Feedback", 6 December 2018 (2018-12-06), XP055709303, Retrieved from the Internet <URL:https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/arria-10/a10_overview.pdf> [retrieved on 20200626] *
COLIN WALLS: "Embedded Software: The Works", 18 October 2005, ELSEVIER SCIENCE & TECHNOLOGY, ISBN: 9780750679541, XP002799559 *
DANIEL FIRESTONE ANDREW PUTNAM SAMBHRAMA MUNDKUR DEREK CHIOU ALIREZA DABAGH MIKE ANDREWARTHA HARI ANGEPAT VIVEK BHANU ADRIAN CAULF: "Azure Accelerated Networking: SmartNICs in the Public Cloud", 9 April 2018 (2018-04-09), pages 58 - 71, XP061025576, Retrieved from the Internet <URL:https://www.usenix.org/sites/default/files/nsdi18_full_proceedings_interior.pdf> [retrieved on 20180409] *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112804297A (zh) * 2020-12-30 2021-05-14 之江实验室 一种可组装的分布式计算和存储系统及其构造方法
CN112804297B (zh) * 2020-12-30 2022-08-19 之江实验室 一种可组装的分布式计算和存储系统及其构造方法

Also Published As

Publication number Publication date
CN113841120B (zh) 2025-05-30
EP3973395B1 (en) 2025-08-27
KR20220008833A (ko) 2022-01-21
KR102838679B1 (ko) 2025-07-25
US20200371828A1 (en) 2020-11-26
US11593138B2 (en) 2023-02-28
CN113841120A (zh) 2021-12-24
JP7502338B2 (ja) 2024-06-18
JP2022533997A (ja) 2022-07-27
EP3973395A1 (en) 2022-03-30

Similar Documents

Publication Publication Date Title
US11593138B2 (en) Server offload card with SoC and FPGA
US11636053B2 (en) Emulating a local storage by accessing an external storage through a shared port of a NIC
US11716383B2 (en) Accessing multiple external storages to present an emulated local storage through a NIC
US10778521B2 (en) Reconfiguring a server including a reconfigurable adapter device
EP4127892B1 (en) DISTRIBUTED STORAGE SERVICES SUPPORTED BY A NETWORK INTERFACE CARD
US10691803B2 (en) Secure execution environment on a server
US8103810B2 (en) Native and non-native I/O virtualization in a single adapter
US8359408B2 (en) Enabling functional dependency in a multi-function device
US11474880B2 (en) Network state synchronization for workload migrations in edge devices
US20150347175A1 (en) Software-defined networking (sdn) for management of traffic between virtual processors
US8601250B2 (en) Control over loading of device drivers for an individual instance of a PCI device
US10911405B1 (en) Secure environment on a server
US12210503B2 (en) Method to perform hash table lookup for keys wider than data path size
US11321179B1 (en) Powering-down or rebooting a device in a system fabric
US20190028409A1 (en) Virtual switch device and method
US20240119020A1 (en) Driver to provide configurable accesses to a device
CN115712892A (zh) 具有统一软件视图的物理分布式控制平面防火墙

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20724984

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2021569031

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020724984

Country of ref document: EP

Effective date: 20211220

WWG Wipo information: grant in national office

Ref document number: 202080037234.7

Country of ref document: CN

WWG Wipo information: grant in national office

Ref document number: 2020724984

Country of ref document: EP