CN117178263A - SmartNIC中的网络附接的MPI处理架构 - Google Patents

SmartNIC中的网络附接的MPI处理架构 Download PDF

Info

Publication number
CN117178263A
CN117178263A CN202280029059.6A CN202280029059A CN117178263A CN 117178263 A CN117178263 A CN 117178263A CN 202280029059 A CN202280029059 A CN 202280029059A CN 117178263 A CN117178263 A CN 117178263A
Authority
CN
China
Prior art keywords
mpi
address
message
nic
cpu
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
CN202280029059.6A
Other languages
English (en)
Inventor
钟冠文
胡成辰
G·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.)
Xilinx Inc
Original Assignee
Xilinx Inc
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
Priority claimed from US17/307,747 external-priority patent/US12050944B2/en
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of CN117178263A publication Critical patent/CN117178263A/zh
Pending legal-status Critical Current

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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/2521Translation architectures other than single NAT servers
    • H04L61/2525Translation at a client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本文的实施方案描述了SmartNIC中的接口外壳,该接口外壳减少了依赖于硬件计算引擎(其可包括一个或多个加速器)的以CPU为中心的解决方案中的数据复制开销。该接口外壳在没有CPU参与的情况下卸载标签匹配和地址转换。此外,该接口外壳使得该计算引擎能够直接从网络读取消息,而无需额外的数据复制,即,无需首先将该数据复制到该CPU的存储器中。

Description

SmartNIC中的网络附接的MPI处理架构
技术领域
本公开的示例总体涉及用于智能网络接口卡(SmartNIC)的消息传递接口(MPI)外壳。
背景技术
数据和向外扩展的工作负载/应用的爆炸给现代数据中心带来越来越多的可扩展性和性能挑战。为了给现代应用提供低延迟、高吞吐量和低功率消耗,数据中心通常将其计算任务置于分布式和联网设置中。例如,数据中心可包括经由网络连接的多个节点,其中架构中的每个节点包括具有多核中央处理单元(CPU)的主机和ASIC(专用集成电路)、FPGA(现场可编程门阵列)或GPU(图形处理单元)形式的硬件加速器。
MPI广泛部署在跨各种领域(诸如科学计算、遗传计算和机器学习)的许多分布式应用中。数十年来,它已经是用于开发并行和分布式计算的事实上的编程模型。MPI提供各种原语,诸如点对点通信以及全局和同步操作。节点之间的数据通信(发送/接收)经由网络进行。在计算卸载到加速器上的传统MPI应用中,从网络接收的数据首先存储在主机的存储器中,并且随后经由PCIe(外围组件互连高速)总线复制到加速器的存储器(以下称为设备存储器)以用于计算加速度。在计算之后,结果通常被再次复制回主机的存储器。几个数据副本的开销使这种以CPU为中心的解决方案具有显著较低的系统性能并且导致高延迟。换句话讲,当经由网络从另一节点接收任务时,接收节点上的CPU必须首先处理数据,并且随后将数据发送到对应于节点中的加速器的存储器。一旦完成,加速器就在节点最终将经处理的数据传输到请求节点之前将数据传输回CPU的存储器。因此,在MPI环境中使用加速器可产生显著的开销,因为数据在用于CPU的存储器与加速器之间传输。
发明内容
一个实施方案描述了包括一种网络接口卡(NIC),该NIC包括消息传递接口(MPI)外壳,该MPI外壳包括电路,该电路被配置为:嗅探从网络接收的分组以识别MPI消息,并且将MPI消息中包含的数据转发到计算电路以进行处理,而无需首先将MPI消息中包含的数据复制到对应于中央处理单元(CPU)的存储器中。此外,CPU设置在与NIC相同的计算节点中。
本文所述的另一个实施方案是一种NIC,该NIC包括硬件计算电路和MPI外壳,该MPI外壳包括电路,该电路被配置为:嗅探从网络接收的分组以识别MPI消息,将MPI消息中包含的数据转发到计算电路以进行处理,并且从NIC外部的CPU接收指令,该指令指示计算电路处理MPI消息中包含的数据。
本文所述的另一个实施方案是一种NIC,该NIC包括接口外壳,该接口外壳包括电路,该电路被配置为:嗅探从网络接收的分组以识别对应于分布式计算系统的消息,其中使用消息在分布式计算系统中的节点之间传输任务,并且将消息中包含的数据转发到硬件计算电路以进行处理,而无需首先将消息中包含的数据复制到对应于CPU的存储器中。此外,CPU设置在与NIC相同的计算节点中。
附图说明
为了能够详细理解上述特征的方式,可以通过参考示例性具体实施来获得上文简要概括的更具体的描述,其中一些示例性具体实施在附图中示出。然而,应当注意,附图仅示出了典型的示例性具体实施并且因此不应被视为限制其范围。
图1示出了根据示例的具有包括MPI外壳的SmartNIC的并行计算系统。
图2是根据示例的并行计算系统中的节点的框图。
图3是根据示例的MPI外壳的框图。
图4示出了根据示例的MPI外壳中的分组分类器。
图5示出了根据示例的MPI外壳中的标签匹配器。
图6示出了根据示例的MPI外壳中的地址转换器。
图7示出了根据示例的MPI外壳中的数据移动器。
图8示出了根据示例的MPI外壳中的计算引擎。
图9示出了根据示例的MPI外壳中的数据控制器。
图10A至图10C示出了根据示例的将MPI外壳集成到不同SmartNIC具体实施中。
具体实施方式
下文中参考附图描述各种特征。应当注意,附图可以按比例绘制也可以不按比例绘制,并且类似结构或功能的元件在所有附图中由相似的附图标号表示。应当注意,附图仅旨在便于对特征的描述。它们并不旨在作为对特征的详尽描述也不旨在作为对权利要求的范围的限制。另外,所例示的示例不必具有所示出的所有方面或优点。结合特定示例描述的方面或优点不一定限于该示例,并且即使未被如此示出或未被如此明确描述也可在任何其他示例中得以实践。
本文的实施方案描述了SmartNIC中的MPI外壳,该MPI外壳减少了依赖于硬件加速器的以CPU为中心的解决方案中的数据复制开销。MPI外壳在没有CPU参与的情况下卸载标签匹配和地址转换。此外,MPI外壳使得加速器能够直接从网络读取消息,而无需额外的数据复制,即,无需首先将该数据复制到该CPU的存储器中。此外,MPI外壳使得MPI编程模型能够包含具有SmartNIC的以网络为中心的数据中心架构,MPI外壳可无缝地集成到现有MPI库中而无需在应用中进行广泛改变,并且MPI外壳使得数据计算尽可能接近(例如,带到SmartNIC上的计算机引擎或加速器)实现高性能、低延迟和低功率消耗。
在一个实施方案中,SmartNIC和计算引擎可被设计在单个设备(诸如基于FPGA的SmartNIC设备)上。这种数据中心架构以高速(40Gbps至200Gbps)网络为目标,并且由于其分布式自适应计算特征而提供改进的计算能力。数据中心架构的固有异构性、可扩展性和效率使其紧密地包含要求高性能、低延迟和低功率消耗的现代分布式系统应用。
图1示出了根据示例的具有包括MPI外壳的SmartNIC的计算系统100。如图所示,计算系统100(例如,并行计算系统)包括经由网络150(例如,本地接入网络(LAN))互连的多个节点105。每个节点105可包括CPU 110和SmartNIC 115,但是节点105可包括多个CPU(其可包括多个核心)和多个SmartNIC 115。在一个实施方案中,节点105使用MPI通信,但是本文所述的实施方案可扩展为包括其中在节点105之间传输任务的任何分布式计算系统。
在节点105A中,CPU 110依赖于SmartNIC 115与网络150通信,并且因此与其它节点105通信。SmartNIC 115包括MPI外壳120,其允许SmartNIC 115“嗅探”或“拦截”从系统100中的其它节点105传输到节点105A的数据。代替将该数据存储在对应于CPU 110的存储器(例如,RAM)中,CPU 110可指示MPI外壳120改为使用集成计算引擎125(其也被称为计算电路并且可包括一个或多个用户定义的硬件加速器)来处理该数据。一旦被处理,CPU 110便可指示SmartNIC 115随后使用网络150将经处理的数据传输到另一节点105。因此,数据(所接收的数据和经处理的数据两者)绝非必须存储在CPU 110的存储器中。因此,数据写入/读取进程绕过CPU及其对应的存储器复合体。
在一个实施方案中,计算引擎125与SmartNIC 115分开。在这种情况下,在绕过CPU110的存储器复合体的同时,MPI外壳120仍可直接向计算引擎125提供MPI消息以供处理,从计算引擎125接收经处理的数据,并且将经处理的数据转发给系统100中的不同节点105。CPU 110可使用MPI外壳120来控制该进程,但MPI消息不需要流过CPU 110以便到达独立计算引擎125。
MPI外壳120和计算引擎125是SmartNIC 115中的硬件(例如,电路)。在一个实施方案中,MPI外壳120和计算引擎125在SmartNIC中的FPGA中的可编程逻辑中实现。在另一实施方案中,MPI外壳120和计算引擎125在ASIC或片上系统(SoC)中实现。在这种情况下,形成MPI外壳120和计算引擎125的电路被硬化。在任何情况下,MPI外壳120可在SmartNIC 115中的集成电路中实现,而计算引擎125可在SmartNIC 115上的相同集成电路或与SmartNIC115分开的不同集成电路中实现。
图2是根据示例的并行计算系统中的节点的框图。在一个实施方案中,图2示出了图1中的节点105内的部件。在该示例中,节点105包括由CPU 110执行的软件,该软件包括MPI应用205、MPI库210和驱动器250。这些驱动器250包括网络堆栈215、内核驱动器217和MPI外壳运行时220。MPI应用205可包括任何应用,诸如科学计算应用、遗传计算应用或机器学习/人工智能应用。MPI库210允许MPI应用205利用分布式计算环境(例如,图1中的计算系统100)。MPI库210可实现分布式计算环境中的节点之间的点对点通信以及全局和同步操作。
驱动器250允许MPI应用205和库210与SmartNIC 115通信。不必改变或更新网络堆栈215和内核驱动器217来执行本文的实施方案。然而,MPI外壳运行时220是允许CPU 110和在CPU 110上执行的软件(例如,MPI应用205)控制SmartNIC 115中的MPI外壳120并与其通信的新驱动器250。在一个实施方案中,MPI外壳运行时220是用于设备存储器管理和CPU110与MPI外壳120之间的通信(诸如控制计算引擎125)的软件库,如下文所讨论的。针对设备存储器(即,由计算引擎125使用的本地存储器)的存储器管理,MPI外壳运行时220为硬件进程分配物理地定位在设备存储器中的消息缓冲区,并且当硬件进程完成其生命周期时释放缓冲区。它可用各种存储器管理算法来实现,诸如固定大小的块分配、伙伴存储器分配和板分配。尽管MPI外壳运行时220被示出为与MPI外壳120分开,但其可被视为MPI外壳的一部分,其中运行时220是外壳的软件部分,而外壳的硬件部分设置在SmartNIC 115中。
SmartNIC 115包括与CPU 110中执行的软件交接的SmartNIC直接存储器访问(DMA)子系统225和SmartNIC介质访问控制(MAC)子系统230。下面的讨论通常涉及“主机”,其可包括在与SmartNIC 115相同的节点中的CPU 110以及由CPU 110执行的软件。
聚焦于典型的MPI具体实施,MPI标准通常使用包括发送方(例如,MPI_send)和接收方(MPI_rcv)的双向通信。在发送方侧,第一节点中的CPU准备具有其标头和数据的消息以用于使用传输协议(诸如TCP/IP、RoCE(通过融合以太网的远程直接存储器访问)或iWARP)通过通信信道传输,并且通过通信信道向接收方发送消息。在接收方侧,第二节点中的CPU从通信信道提取消息标头和数据,并且将其存储在临时缓冲区中,执行被称为标签匹配的操作以检查传入消息是否与由接收方发布的接收请求匹配,并且将消息复制到目标接收缓冲区。
在节点具有集成到SmartNIC 115中的MPI外壳120的情况下,MPI进程可被分成硬件和软件进程。硬件进程指示在SmartNIC上或与其附接的硬件计算引擎125将执行该进程,而软件进程是仅在CPU 110上执行的传统MPI进程。每个进程具有唯一编号、秩作为其标识。针对软件和硬件进程之间的任何双向通信,其可被分类为如下四个示例:
示例A:如果发送方和接收方都是软件进程,则系统利用上述传统MPI通信流而无需任何改变。即,通信穿过MPI外壳120而不受外壳120影响。
示例B:如果发送方是软件进程而接收方是硬件进程,则系统利用上述传统MPI发送操作而无需任何改变。然而,在接收方侧,MPI外壳120直接从SmartNIC MAC子系统230嗅探/过滤与硬件进程相关的消息分组,并且将数据存储到定位在设备存储器(即本地加速器或计算引擎存储器)处的目标接收缓冲区中。标签匹配和地址转换在没有CPU参与的情况下被卸载到MPI外壳120上(这将在下面更详细地讨论)。当消息被完整接收并被存储在设备存储器中时,MPI外壳120通知接收方端的主机,例如,在CPU 110中执行的MPI应用205。当所有消息就绪时,主机向特定硬件计算引擎125发出以消息地址作为自变量的计算命令以进行计算。计算引擎125随后从其设备存储器读取消息,开始计算,将结果写回到设备存储器(如果适用),并且在结束之后通知主机(例如,MPI应用205)。
示例C:如果发送方是硬件进程而接收方是软件进程,则在接收方端,接收操作与上述传统MPI接收操作相同。然而,在发送方侧,如果消息被存储在设备存储器中,则主机使用SmartNIC DMA子系统225来向SmartNIC 115中的传输(TX)逻辑通知消息地址。随后,TX逻辑经由MPI外壳中的数据控制器(其在图3和图9中详细讨论)读取消息,并且将数据发送到远程接收方。如果消息被存储在主机侧存储器中,则发送操作与传统MPI操作相同。
示例D:如果发送方和接收方都是硬件进程,则在接收方端,其遵循示例B中提到的操作。在发送方端,其遵循示例C中提到的操作。
图3是根据示例的MPI外壳120的框图。具体地,图3示出了驻留于SmartNIC上的MPI外壳120的部分。尽管未示出,但MPI外壳120还可包括在主机(例如,图2中的MPI外壳运行时220)中执行的MPI外壳运行时(例如,软件驱动器)。
MPI外壳120的硬件包括数据控制器305、数据移动器320、地址转换器325、标签匹配器330、分组分类器335和计算引擎125。在以下附图中更详细地讨论这些硬件元件(例如,电路)中的每个元件。然而,作为简要介绍,分组分类器335过滤(或识别)与MPI消息相关的所接收的分组,并且生成这些分组的元数据。该元数据随后由MPI外壳120中的下游硬件元件使用。尽管未示出,但分组分类器335可从图2中的SmartNIC MAC子系统230接收分组,该子系统继而从网络接收分组。
标签匹配器330将来自源进程的传入消息与在目标进程中发布的接收请求匹配。地址转换器325计算传入MPI消息分组的存储器(例如,SmartNIC中的本地存储器)中的目标地址,并且跟踪消息的就绪状态。数据移动器320将高级可扩展接口流(AXIS)协议形式的分组转换成AXI协议形式的数据,并且当完全接收到MPI消息时向本地主机(例如,本地CPU和MPI应用)发出中断或拉取信号。数据控制器305针对MPI外壳120中的各种硬件元件执行仲裁以共享和访问SmartNIC中的存储器。计算引擎125可对MPI消息中的数据执行任何加速器功能。如上所讨论,计算引擎125可使用可编程或硬化逻辑来实现。
图4示出了根据示例的MPI外壳120中的分组分类器335。分组分类器335包括解析器405和匹配表410。一般来讲,分组分类器335过滤与MPI通信相关的分组,并且生成这些分组的元数据。此外,图2中的MPI外壳运行时220中的表配置可写入和删除分组分类器335中的匹配表410中的条目。
解析器405从传入分组提取信息。该信息可包括消息标头、分组序列号、有效载荷长度和流ID。在一个实施方案中,消息标头包含<秩src、秩dst、标签、context_id、操作码、消息长度(msg_len)>,其中操作码用于识别MPI操作,诸如发送、接收、放置和获取操作。秩src和秩dst信号分别是源进程和目标进程的唯一标识。流ID用于对分组进行分类,并且流ID的一个示例可用<IP源地址、IP目标地址、协议、源端口、目标端口>来设计。
匹配表410从解析器405接收导出的流ID(fid)作为输入,并且搜索对应于fid的流的MPI通信信息。MPI通信信息由秩src、秩dst、标签和context_id定义。当主机及其远程对等体完成其MPI握手进程时,匹配表410的条目由主机(例如,本地CPU)更新或写入。更新/写入操作可使用AXI-Lite接口来实现。匹配表410可使用散列二进制/三进制/半三进制内容可寻址存储器(BCAM/TCAM/STCAM)等来实现。
分组分类器335输出包括<秩src、秩dst、标签、context_id、操作码、msg_len、pkt_seq、payload_len、丢弃>的元数据pc,其中丢弃信号是到匹配表410的查找请求的未命中信号。即,当匹配表410不能找到对应于从解析器405接收的fid的流时,丢弃信号为高。当丢弃信号为高时,对应的分组被SmartNIC丢弃。
图5示出了根据示例的MPI外壳120中的标签匹配器330。标签匹配器330将来自源进程的发送操作与来自目标进程的接收请求匹配。如图5所示,标签匹配器330包括两个查找表:发布接收(post_recv)匹配表505和非预期消息(unexpected_msg)匹配表510。post_recv匹配表505用于存储来自本地主机的不能在unexpected_msg表510中找到任何匹配元素的接收请求,而unexpected_msg匹配表510存储来自发送方的不能在post_recv匹配表505中找到任何匹配条目的到达消息。表505和510可用散列、三进制方法、TCAM以及其他范围搜索技术来实现。
标签匹配器330的输入是来自主机的接收请求(recv_req)、元数据pc和分组。如果分组是来自发送方的消息的第一分段,则元数据pc包含具有<秩src、秩dst、context_id、标签>的消息标头。标签匹配器330的输出包括分组、存储器分配请求(alloc_reqpr)、地址更新请求(addr_udum)和多个地址查找请求(addr_lppr、addr_lpnon_hdr和addr_lpum)。
Addr_lppr信号指示来自发送方的目标消息的分组在主机已发布其对应的接收请求recv_req之后到达。此外,addr_lppr信号指示在post_recv匹配表中存在用于这些分组的条目。
Addr_lpum信号指示由主机发布的接收请求在标签匹配器330已经将对应的消息记录在unexpected_msg匹配表510中之后到达。
Addr_lpnon_hdr信号用于请求用于来自发送方的消息的连续分组的存储器位置,其在其有效载荷中不包含任何消息标头信息。该信号包括<秩src、秩dst、标签、有效载荷长度(payload_len)、分组序列号(pkt_seq)>。
Alloc_reqpr信号指示在主机发布接收请求之前来自发送方的目标消息的分组何时到达,并且需要分配存储器空间来存储非预期消息。该信号包括<秩src、秩dst、标签、消息长度(mlen)、分组序列号(pkt_seq)>。
Addr_udum信号是包括<秩src、秩dst、标签、由主机分配的地址(addr)、mlen>的接收请求。该信号从在unexpected_msg匹配表510或post_recv匹配表505中都不能找到的主机发布。该信号向MPI外壳中的地址转换器(例如,图3中的地址转换器325)通知由主机为该接收请求分配的存储器地址/空间。
当从分组分类器接收到分组时,标签匹配器330使用元数据pc在post_recv匹配表505中执行查找,以确定这是否是MPI消息的第一分组。Post_recv表505中的条目的关键字(Kpr)包括<秩src、秩dst、context_id、标签>。如果查找结果是命中,则从post_recv表505删除对应的条目,并且标签匹配器330向MPI外壳中的地址转换器发出地址查找请求(addr_lppr)以获取该分组的存储器位置。否则,标签匹配器330更新unexpected_msg匹配表510,并且向地址转换器发出针对该消息的存储器分配请求(alloc_reqpr),因为标签匹配器330不能在post_recv表505中找到任何匹配。如果所接收的分组不包含消息的标头(例如,不是MPI消息中的第一分组),则标签匹配器330向地址转换器模块发出地址查找请求(addr_lpnon_hdr)以获得该分组的存储器位置。
来自发送方的MPI发送操作与来自接收方的MPI接收操作配对。当接收方调用MPI接收操作(MPI_recv)时,主机向标签匹配器330发布接收请求(recv_req)。接收请求可包含<秩src、秩dst、context_id、标签、base_addr、mlen>,其中base_addr是由主机为消息分配的设备存储器的基址。然后,标签匹配器330从接收请求提取包括<秩src、秩dst、context_id、标签>的关键字(Kum),并且搜索unexpected_msg匹配表510(在其中执行查找)以检查是否存在所接收的非预期消息。如果查找命中,则从unexpected_msg表510删除对应于非预期消息的条目,并且标签匹配器330向地址转换器发出地址查找请求(addr_lpum)。否则,标签匹配器330向地址转换器发送地址更新请求(addr_udum)以更新与消息相关联的基址。因为这是不匹配的接收请求,所以标签匹配器330在post_recv匹配表505中写入新条目以包括所接收的请求。
图6示出了根据示例的MPI外壳中的地址转换器325。地址转换器325用于计算设备存储器中用于传入消息分组的目标地址,并且跟踪消息的就绪状态。地址转换器325包括地址表605、序列范围(seq_range)表610、状态管理器615和存储器管理器620。这两个表605、610用于记录为目标消息分组分配的存储器地址。
在一个实施方案中,地址表605的每个条目包含关键字(Kat)和值(Vat),其中Kat具有<秩src、秩dst、标签>,并且Vat包括为消息mlen分配的基址(addrat)、用于查询消息递送状态的索引(idx)以及包含消息标头的MPI消息的第一分组的分组序列号(pkt_base_seq)。
Seq_range表610具有与表605类似的关键字-值结构。不同之处在于,在seq_range表610中,关键字(Ktsr)包含描述分组序列范围(pkt_seq_range)的字段。Pkt_seq_range信号是包含(消息的第一分组的pkt_base_seq、pkt_base_seq+mlen)的元组。
地址表605接收来自图5中的标签匹配器330的addr_lppr,用于与发布了对应的接收请求的消息匹配的传入分组,或者接收addr_lpum,用于作为查找请求输入到达的、与对应非预期消息一起发布的匹配的接收请求。如果针对addr_lppr的查找命中,则地址表605生成具有pkt_seq_range的关键字-值对(Ktsr、Vtsr),并且将其写入到seq_range表610中。同时,地址转换器325用其pkt_seq_range和所接收的字节(payload_len)来更新状态管理器615中的第idx个寄存器,并且计算新的基础存储器地址addr'at=(addrat+pkt_seq-pkt_base_seq),其中addrat和pkt_base_seq来自Vat,并且pkt_seq来自addr_lppr。所计算的存储器地址(addr'at)随后被发送到数据移动器(在图7中详细示出),用于存储所接收的对应分组。
相反,如果针对addr_lpum的查找命中,则地址表605不更新seq_range表610,因为请求来自发布的接收并且其非预期消息已经被接收。在这种情况下,地址表605仅向状态管理器615中的第idx个寄存器通知标签匹配器已经从主机接收到针对该消息的接收请求。地址表605可支持通配符搜索诸如MPI_ANY_SOURCE和MPI_ANY_TAG,并且可用TCAM或STCAM来实现。
Seq_range表610从标签匹配器接收addr_lpnon_hdr(<秩src、秩dst、标签、payload_len、pkt_seq>),用于不具有作为查找输入的消息标头的消息的传入分组。除了秩src、秩dst、标签搜索之外,seq_range表610还针对addr_lpnon_hdr请求进行范围搜索操作,并且检查其pkt_seq是否落在任何条目的pkt_seq_range内。如果查找命中,则地址表605计算新的基础存储器地址addr'tsr=(addrtsr+pkt_seq-pkt_base_seq),其中addrtsr和pkt_base_seq来自Vtsr,并且pkt_seq来自addr_lpnon_hdr。所计算的存储器地址addr'tsr随后被发送到数据移动器,用于存储对应的接收分组。另外,地址转换器325还用所接收的字节数(payload_len)来更新状态管理器615中的第idx个寄存器。Seq_range表610具有通配符和范围搜索要求,并且可用TCAM来实现。
状态管理器615跟踪每个消息的传输状态。在一个实施方案中,状态管理器615具有一组寄存器和寄存器分配器。该一组寄存器可记录信息,诸如用于消息的<秩src、秩dst、标签、addr(从主机或存储器管理器620分配的地址)、mlen、接收字节(recv_bytes)、分组序列范围(pkt_seq_range)、rr_recved>,其中rr_recved是指示标签匹配器已经从主机接收到针对该消息的接收请求(recv_req)并且主机正在等待该消息的就绪信号。
寄存器分配器可管理空闲寄存器池,为每个alloc_reqpr或addr_udum请求分配来自空闲池的新寄存器,并且向其他部件输出用于访问该寄存器的指针(idx)。当第idx个寄存器具有等于mlen的recv_bytes并且rr_recved被断言为高时,这指示找到了匹配的接收请求的对应的消息被完整接收,并且准备好供主机读取。随后,状态管理器615生成包含<秩src、秩dst、标签、addr>的就绪信号(msg_ready)到数据移动器,并且发出删除信号以移除地址表605和seq_range表610中的对应的条目。
在一个实施方案中,存储器管理器620为传入的非预期消息分配存储器空间,并且生成针对地址表605的更新请求。存储器管理器620跟踪所分配的存储器块以及它们之间的空闲存储器空间。存储器管理器620可用各种存储器管理算法来实现,诸如固定大小的块分配、伙伴存储器分配和板分配。存储器管理器620接收alloc_reqpr信号(<秩src、秩dst、标签、mlen、pkt_seq>)作为其输入,并且从alloc_reqpr产生根据消息长度(mlen)分配的物理存储器地址(addrmm)。所分配的addrmm随后被发送到数据移动器,用于存储所接收的对应分组。存储器地址还经由(idx、addrmm)记录在状态管理器615中的第idx个寄存器中,用于消息状态查询和更新。此外,存储器管理器620还生成包含关键字-值对(Kat=<秩src、秩dst、标签>、Vat=<addrmm、mlen、idx、pkt_seq>)的更新请求,并且写入到地址表605中。
当从标签匹配器接收到addr_udum信号时,地址转换器325写入/更新地址表605中的条目。Addr_udum指示主机发布新的接收请求,并且在标签匹配中的unexpected_msg表中不存在与所发布的接收请求匹配的任何非预期消息。Addr_udum信号包括<秩src、秩dst、标签、addr、mlen>,如标签匹配器中解释的。Addr_udum信号中的基址(addr)由主机分配以存储从秩src到秩dst的具有标签的专用消息。然后利用addr_udum和来自状态管理器615的idx生成包含关键字-值对(Kat=<秩src,秩dst、标签>、Vat=<addr、mlen、idx、pkt_seq=none>)的更新请求,并且将其写入到地址表605中。
图7示出了根据示例的MPI外壳中的数据移动器320。数据移动器320包括AXIS到AXI桥705和消息就绪(msg_rdy)FIFO 710。AXIS到AXI桥705将AXI流传输协议形式的分组数据(例如,AXIS_data)转换为AXI协议形式的数据(例如,AXI_data)。经转换的数据随后经由存储器控制器写入到设备存储器中。AXIS_data的对应的基址(address)从图6所示的地址转换器获得,并且指示其在SmartNIC的本地存储器中的目标存储位置。
Msg_rdy FIFO 710存储消息的就绪状态。这些就绪状态可包含源进程和目标进程的标识(秩src和秩dst)、标签及其在设备存储器中的地址,其指示消息被完整写入到设备存储器中并且准备好被读取。Msg_rdy FIFO 710的空信号可经由存储器映射寄存器连接到PCIe/主机的中断系统或拉取系统。如果与中断系统连接,则当msg_rdy FIFO不为空时,数据移动器320触发中断系统并且使主机相应地处理中断。如果与拉取系统连接,则当msg_rdy FIFO 710具有存储元素时,数据移动器320将就绪信号写入到专用存储器映射寄存器。主机可周期性地/不断地检查专用存储器映射寄存器的值并且相应地处理事件。
图8示出了根据示例的MPI外壳中的计算引擎800。在该示例中,计算引擎800容纳可形成一个或多个硬件加速器的多个内核(内核0至n)。每个内核包括控制FIFO 805和状态FIFO 810。控制FIFO 805从主机接收控制消息。这些控制消息可包含<工作负载的唯一ID、地址自变量的数量(N)、自变量0的地址、自变量1的地址、……、自变量N的地址>。为了启动具有工作负载的内核,主机可经由AXI-Lite接口向控制FIFO 805发出控制消息。一旦控制FIFO 805内部具有元素,内核便可从FIFO 805获取控制消息并开始执行。在控制消息提供基址的情况下,内核可利用AXI接口读取存储在设备存储器内的数据。内核可支持多个AXI接口以增加其存储器访问带宽。内核还可具有主机可经由AXI-Lite接口访问的存储器映射寄存器。
当内核结束执行时,内核将完整信号写入到其状态FIFO 810。状态FIFO的空信号可经由存储器映射寄存器连接到PCIe/主机的中断系统或拉取系统。针对具有中断系统的设计,当状态FIFO 810不为空时,内核触发中断系统并且使主机相应地处理中断。针对具有拉取系统的设计,当状态FIFO具有元素时,内核将完成信号写入到专用存储器映射寄存器。主机可周期性地或不断地检查专用存储器映射寄存器的值,并且一旦检测到‘完整’状态就相应地处理事件。
如果使用可编程逻辑来实现计算引擎800,则可使用高级合成(HLS)或寄存器传输级(RTL)编码来设计内核。然而,在另一个实施方案中,计算引擎800可在硬化电路(诸如ASIC或SoC)中实现。
图9示出了根据示例的MPI外壳中的数据控制器305。数据控制器305为各种连接的模块/部件提供存储器访问通道。数据控制器305包括AXI互连器315以及一个或多个存储器控制器310(在该示例中示出了多个存储器控制器)。存储器控制器310访问SmartNIC中的设备存储器。模块和部件(包括数据移动器和计算引擎、连接的主机和SmartNIC的发送逻辑或传输层卸载引擎)可共享存储器控制器以用于经由利用AXI协议的AXI互连器315进行存储器访问。AXI互连器315用作MPI外壳与主机(例如,CPU)之间的接口。
主机与硬件加速器之间的通信包括当消息就绪时主机上的中断或拉取操作(在图7中用数据移动器320解释)、来自主机的启动加速器的控制消息以及当加速器完成其执行时主机上的中断或拉取操作(在图8中用计算引擎125描述)。
此外,控制寄存器访问用于配置或读取MPI外壳中的存储器映射寄存器,以用于加速器中的标量自变量、错误信息或收集统计数据,诸如所接收的消息的数量、所丢弃的消息的数量、可用加速器的数量和所支持的加速器的类型。
此外,全局操作(诸如MPI_bcast、MPI_gather、MPI_scatter和MPI_reduce)都基于MPI_send和MPI_recv中的操作。具有MPI外壳的系统也可支持这些全局操作而无需任何改变。此外,减少相关操作诸如MPI_reduce和MPI_allreduce包含计算操作,诸如MPI_max、MPI_min、MPI_sum、MPI_and和MPI_or。这些预定义计算操作可在MPI外壳中的加速器中实现。
图10A至图10C示出了根据示例的将MPI外壳集成到不同SmartNIC具体实施中。以网络为中心的数据中心中的节点通常包括具有多核CPU的主机和用作连接到网络的SmartNIC的设备。该设备可以是ASIC(专用集成电路)SmartNIC或可编程SmartNIC。用作嗅探器的MPI外壳可与各种SmartNIC系统集成。图10A至图10C示出了可编程SmartNIC中的MPI外壳集成的三个示例。
图10A中的第一示例示出了具有集成到基本SmartNIC中的MPI外壳的系统架构。在该示例中使用的通信信道是TCP/IP协议。系统利用其主机进行TCP/IP控制,诸如TCP连接、重传、拥塞控制、TCP发送和SmartNIC中的TCP ACK。更具体地,该系统中的主机负责MPI库、网络堆栈诸如TCP/IP、控制其SmartNIC连接的内核驱动器以及MPI外壳运行时。MPI库210包含各种功能,诸如MPI进程管理、点对点消息传送控制、全局操作以及同步。MPI外壳用作嗅探器而无需打断现有网络流,并且仅处理来自将被发送到计算引擎125的目标消息的分组。
从网络(M-RX)接收的分组可在到达分组分类器335之前被重新引导到SmartNICMAC子系统230中的接收路径(D-RX)。针对发送到硬件进程(即,计算引擎125)的消息,MPI外壳依赖于主机来确认所接收的所有TCP分组。
针对发送操作,如果消息数据驻留在设备存储器中,则主机(1)构造具有标头、消息数据的地址和虚拟数据的消息,并且(2)经由正常TCP发送操作发送消息。解析器1005检测这种消息。解析器1005随后触发分段卸载引擎1010以从设备存储器读取数据以用于发送实际消息分组。
图10B示出了具有集成到SmartNIC中的MPI外壳的系统架构,其具有TCP卸载引擎(TOE)。该集成类似于图10A的集成。该系统保持两组TCP管理:一组使用传统的基于CPU的TCP/IP堆栈用于软件进程,另一组利用TOE用于硬件进程。
根据由分组分类器335生成的结果,从网络(M-RX)接收的分组经由D-RX被重新引导到主机或者被重新引导到TOE接收(TOE RX)引擎1025。针对发送操作,TOE传输(TOE TX)引擎1015可从设备存储器读取消息数据并且经由仲裁器1020将其发送出到远程对等体。
图10C示出了具有集成到SmartNIC中的MPI外壳的系统架构,其具有RoCE RX引擎1040、RoCE TX引擎1030和仲裁器1035。该连接非常类似于图10A和图10B中的连接,并且因此不再详细描述。
在前文中,参考了在本公开中呈现的实施方案。然而,本公开的范围不限于具体描述的实施方案。相反,所描述的特征和元件的任何组合(无论是否涉及不同的实施方案)都被设想为实现和实践所设想的实施方案。此外,尽管本文所公开的实施方案可以实现优于其他可能的解决方案或优于现有技术的优点,但特定的优点是否通过给定的实施方案被实现不限制本公开的范围。因此,前述方面、特征、实施方案和优点只是例示性的,并且不被认为是所附权利要求的要素或限制,除非在权利要求中有明确记载。
如本领域的技术人员将理解的,本文所公开的实施方案可以体现为系统、方法或计算机程序产品。因此,各方面可以采用完全硬件实施方案、完全软件实施方案(包括固件、驻留软件、微代码等)或组合软件和硬件方面的实施方案的形式,其在本文中全都可以被一般地称为“电路”、“模块”或“系统”。此外,各方面可以采用体现在一个或多个计算机可读介质中的计算机程序产品的形式,该一个或多个计算机可读介质具有体现在其上的计算机可读程序代码。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是(例如但不限于)电、磁、光、电磁、红外或半导体系统、装置或设备或者前述各项的任何合适的组合。计算机可读存储介质的更具体示例(不完全列表)将包括以下:具有一条或多条导线的电连接件;便携式计算机软盘;硬盘;随机存取存储器(RAM);只读存储器(ROM);可擦除可编程只读存储器(EPROM或闪存);光纤;便携式压缩盘只读存储器(CD-ROM);光存储设备;磁存储设备;或前述各项的任何合适的组合。在本文件的上下文中,计算机可读存储介质是可包含或存储供指令执行系统、装置或设备使用或者与其结合使用的程序的任何有形介质。
计算机可读信号介质可包括具有体现在其中(例如,在基带中或作为载波的一部分)的计算机可读程序代码的传播数据信号。此类传播信号可以采用多种形式中的任何一种形式,包括但不限于电磁、光学或它们的任何合适的组合。计算机可读信号介质可以是并非计算机可读存储介质并且可以传达、传播或传送供指令执行系统、装置或设备使用或者与其结合使用的程序的任何计算机可读介质。
体现在计算机可读介质上的程序代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光纤电缆、RF等或前述各项的任何合适的组合。
用于进行针对本公开的各方面的操作的计算机程序代码可以一种或多种编程语言的任何组合来编写,包括面向对象的编程语言(诸如Java、Smalltalk、C++等等)和常规过程式编程语言(诸如“C”编程语言或类似的编程语言)。程序代码可整个地在用户计算机上执行、部分地在用户计算机上执行、作为独立的软件包、部分地在用户计算机上执行并且部分地在远程计算机上执行或者整个地在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。
本公开的各方面在下文参考根据本公开中呈现的实施方案的方法、设备(系统)和计算机程序产品的流程图图示和/或框图进行描述。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以通过计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生机器,使得经由计算机或其他可编程数据处理设备的处理器执行的指令形成用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的方式。
这些计算机程序指令还可以存储在可以指引计算机、其他可编程数据处理装置或其他设备以特定方式起作用的计算机可读介质中,使得存储在计算机可读介质中的指令产生包括实现在流程图和/或框图的一个或多个框中指定的功能/动作的指令的制品。
计算机程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使一系列操作步骤在计算机、其他可编程装置或其他设备上执行以产生计算机实现的方法,使得在计算机或其他可编程设备上执行的指令提供用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的方法。
图中的流程图和框图示出了根据本发明的各种示例的系统、方法和计算机程序产品的可能具体实施的架构、功能性和操作。就这一点而言,流程图或框图中的每个框可以表示指令的包括用于实现指定逻辑功能的一个或多个可执行指令的模块、段或部分。在一些另选的具体实施中,框中指出的功能可以不按照图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反顺序执行。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可由执行指定功能或动作或者执行专用硬件和计算机指令的组合的基于专用硬件的系统来实现。
虽然前述内容针对特定示例,但在不脱离本发明的基本范围的情况下可以设计出其他的和另外的示例,并且本发明的范围由所附权利要求确定。

Claims (14)

1.一种网络接口卡(NIC),所述NIC包括:
消息传递接口(MPI)外壳,所述MPI外壳包括电路,所述电路被配置为:
嗅探从网络接收的分组以识别MPI消息;
以及
将所述MPI消息中包含的数据转发到计算电路以进行处理,而无需首先将所述MPI消息中包含的所述数据复制到对应于中央处理单元(CPU)的存储器中,其中所述CPU设置在与所述NIC相同的计算节点中。
2.根据权利要求1所述的NIC,其中所述MPI外壳被配置为在没有CPU参与的情况下针对所述MPI消息中包含的所述数据执行标签匹配和地址转换,其中所述MPI外壳还包括:
标签匹配器,所述标签匹配器被配置为接收对应于所述MPI消息的分组作为输入,并且生成地址查找请求;
地址转换器,所述地址转换器被配置为从所述标签匹配器接收所述地址查找请求,并且生成从所述CPU或设置在所述地址转换器中的存储器管理器分配的地址;
分组分类器,所述分组分类器被配置为嗅探从所述网络接收的所述分组以识别所述MPI消息,并且生成对应于所述MPI消息的所述分组的元数据,其中所述元数据包含由所述标签匹配器用来生成地址查找的信息;
数据移动器,所述数据移动器被配置为从所述地址转换器接收所述地址,并且将所述MPI消息中的所述数据存储在与所述计算电路共享的目标存储器中的所述地址处;和
数据控制器,所述数据控制器包括耦接到本地存储器和互连器的存储器控制器,其中所述数据控制器耦接到所述数据移动器的输出,并且其中所述互连器用作所述MPI外壳与所述CPU之间的接口。
3.一种NIC,所述NIC包括:
硬件计算电路;和
MPI外壳,所述MPI外壳包括电路,所述电路被配置为:
嗅探从网络接收的分组以识别MPI消息;
将所述MPI消息中包含的数据转发到所述计算电路以进行处理;以及
从所述NIC外部的CPU接收指令,所述指令指示所述计算电路处理所述MPI消息中包含的所述数据。
4.一种NIC,所述NIC包括:
接口外壳,所述接口外壳包括电路,所述电路被配置为:
嗅探从网络接收的分组以识别对应于分布式计算系统的消息,其中使用消息在所述分布式计算系统中的节点之间传输任务;以及
将所述消息中包含的数据转发到硬件计算电路以进行处理,而无需首先将所述消息中包含的所述数据复制到对应于中央处理单元(CPU)的存储器中,其中所述CPU设置在与所述NIC相同的计算节点中。
5.根据权利要求1、3或4所述的NIC,其中所述计算电路设置在所述NIC中。
6.根据权利要求4所述的NIC,其中所述计算电路和所述接口外壳设置在所述NIC中的相同集成电路上。
7.根据权利要求4所述的NIC,其中所述接口外壳被配置为在没有CPU参与的情况下针对所述消息中包含的所述数据执行标签匹配和地址转换。
8.根据权利要求4所述的NIC,其中所述接口外壳被配置为从所述CPU接收指令,所述指令指示所述计算电路处理包含在所述消息中的所述数据。
9.根据权利要求1和3所述的NIC,其中所述计算电路和所述MPI外壳设置在所述NIC中的相同集成电路上。
10.根据权利要求1和3所述的NIC,其中所述MPI外壳被配置为在没有CPU参与的情况下针对所述MPI消息中包含的所述数据执行标签匹配和地址转换。
11.根据权利要求10所述的NIC,其中所述MPI外壳还包括:
标签匹配器,所述标签匹配器被配置为接收对应于所述MPI消息的分组作为输入,并且生成地址查找请求;和
地址转换器,所述地址转换器被配置为从所述标签匹配器接收所述地址查找请求,并且生成从所述CPU或设置在所述地址转换器中的存储器管理器分配的地址。
12.根据权利要求11所述的NIC,其中所述MPI外壳还包括:
分组分类器,所述分组分类器被配置为嗅探从所述网络接收的所述分组以识别所述MPI消息,并且生成对应于所述MPI消息的所述分组的元数据,其中所述元数据包含由所述标签匹配器用来生成地址查找的信息。
13.根据权利要求12所述的NIC,其中所述MPI外壳还包括:
数据移动器,所述数据移动器被配置为从所述地址转换器接收所述地址,并且将所述MPI消息中包含的所述数据存储在与所述计算电路共享的目标存储器中的所述地址处。
14.根据权利要求3所述的NIC,其中所述MPI外壳被配置为在没有CPU参与的情况下针对所述MPI消息中包含的所述数据执行标签匹配和地址转换,其中所述MPI外壳还包括:
标签匹配器,所述标签匹配器被配置为接收对应于所述MPI消息的分组作为输入,并且生成地址查找请求;
地址转换器,所述地址转换器被配置为从所述标签匹配器接收所述地址查找请求,并且生成从所述CPU或设置在所述地址转换器中的存储器管理器分配的地址;
分组分类器,所述分组分类器被配置为嗅探从所述网络接收的所述分组以识别所述MPI消息,并且生成对应于所述MPI消息的所述分组的元数据,其中所述元数据包含由所述标签匹配器用来生成地址查找的信息;和
数据移动器,所述数据移动器被配置为从所述地址转换器接收所述地址,并且将所述MPI消息中的所述数据存储在与所述计算电路共享的目标存储器中的所述地址处;以及数据控制器,所述数据控制器包括耦接到本地存储器和互连器的存储器控制器,其中所述数据控制器耦接到所述数据移动器的输出,并且其中所述互连器用作所述MPI外壳与所述CPU之间的接口。
CN202280029059.6A 2021-05-04 2022-03-16 SmartNIC中的网络附接的MPI处理架构 Pending CN117178263A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/307,747 2021-05-04
US17/307,747 US12050944B2 (en) 2021-05-04 Network attached MPI processing architecture in smartnics
PCT/US2022/020476 WO2022235337A1 (en) 2021-05-04 2022-03-16 Network attached mpi processing architecture in smartnics

Publications (1)

Publication Number Publication Date
CN117178263A true CN117178263A (zh) 2023-12-05

Family

ID=81384586

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280029059.6A Pending CN117178263A (zh) 2021-05-04 2022-03-16 SmartNIC中的网络附接的MPI处理架构

Country Status (5)

Country Link
EP (1) EP4334814A1 (zh)
JP (1) JP2024517706A (zh)
KR (1) KR20240004315A (zh)
CN (1) CN117178263A (zh)
WO (1) WO2022235337A1 (zh)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11315013B2 (en) * 2018-04-23 2022-04-26 EMC IP Holding Company LLC Implementing parameter server in networking infrastructure for high-performance computing

Also Published As

Publication number Publication date
KR20240004315A (ko) 2024-01-11
JP2024517706A (ja) 2024-04-23
US20220358002A1 (en) 2022-11-10
WO2022235337A1 (en) 2022-11-10
EP4334814A1 (en) 2024-03-13

Similar Documents

Publication Publication Date Title
US9444757B2 (en) Dynamic configuration of processing modules in a network communications processor architecture
WO2020236295A1 (en) System and method for facilitating efficient message matching in a network interface controller (nic)
US7937447B1 (en) Communication between computer systems over an input/output (I/O) bus
US7668984B2 (en) Low latency send queues in I/O adapter hardware
JP6676027B2 (ja) ネットワークプロセッサにおけるマルチコア相互接続
WO2023005773A1 (zh) 基于远程直接数据存储的报文转发方法、装置、网卡及设备
US8761204B2 (en) Packet assembly module for multi-core, multi-thread network processors
US8751655B2 (en) Collective acceleration unit tree structure
US8683221B2 (en) Configurable memory encryption with constant pipeline delay in a multi-core processor
US11750418B2 (en) Cross network bridging
US8595401B2 (en) Input output bridging
US11095626B2 (en) Secure in-line received network packet processing
EP2382757A2 (en) Message communication techniques
CN112291293A (zh) 任务处理方法、相关设备及计算机存储介质
US10255213B1 (en) Adapter device for large address spaces
US11093405B1 (en) Shared mid-level data cache
US9195464B2 (en) Tracking written addresses of a shared memory of a multi-core processor
US11036643B1 (en) Mid-level instruction cache
US20230109396A1 (en) Load balancing and networking policy performance by a packet processing pipeline
US20200099669A1 (en) Secure In-line Network Packet Transmittal
US12050944B2 (en) Network attached MPI processing architecture in smartnics
US20220358002A1 (en) Network attached mpi processing architecture in smartnics
US7266614B1 (en) Embedded channel adapter having link layer configured for concurrent retrieval of payload data during packet transmission
US11327890B1 (en) Partitioning in a processor cache
US20150254100A1 (en) Software Enabled Network Storage Accelerator (SENSA) - Storage Virtualization Offload Engine (SVOE)

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