CN115686879A - 促进网络接口控制器中动态触发操作管理的系统和方法 - Google Patents

促进网络接口控制器中动态触发操作管理的系统和方法 Download PDF

Info

Publication number
CN115686879A
CN115686879A CN202111267935.2A CN202111267935A CN115686879A CN 115686879 A CN115686879 A CN 115686879A CN 202111267935 A CN202111267935 A CN 202111267935A CN 115686879 A CN115686879 A CN 115686879A
Authority
CN
China
Prior art keywords
command
trigger
nic
condition
subset
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
CN202111267935.2A
Other languages
English (en)
Inventor
K·D·安德伍德
D·罗威斯
R·L·阿尔弗森
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.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
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 Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN115686879A publication Critical patent/CN115686879A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers

Abstract

本公开涉及促进网络接口控制器中动态触发操作管理的系统和方法。提供了一种用于促进网络接口控制器(NIC)中的高效命令管理的系统。在操作期间,所述系统可以在所述NIC处确定触发条件以及与所述触发条件相对应的命令集在命令队列中的位置。所述命令队列可以在所述NIC外部。所述位置可以与所述命令集在所述命令队列中的结束相对应。然后,所述系统可以在所述NIC处确定是否已经满足所述触发条件。如果满足所述触发条件,则所述系统可以从所述命令队列中获取所述命令集中的相应命令并从所述NIC发出所述命令直到到达所述位置,从而在满足所述触发条件之前绕过本地存储所述命令集。

Description

促进网络接口控制器中动态触发操作管理的系统和方法
技术领域
本公开涉及通信网络。更具体地,本公开涉及一种用于网络接口控制器(NIC)中的动态触发操作管理的方法和系统。
附图说明
图1图示了根据本申请的一方面的示例性网络。
图2A图示了根据本申请的一方面的示例性NIC芯片。
图2B图示了根据本申请的一方面的NIC的示例性架构。
图3A图示了根据本申请的一方面的NIC中的示例性动态触发操作管理过程。
图3B图示了根据本申请的一方面的NIC的触发操作的示例性批取得(batch-retrieval)过程。
图3C图示了根据本申请的一方面的NIC的触发操作的批取得的示例性重置过程。
图4A呈现了根据本申请的一方面的流程图,其图示了NIC管理来自命令队列的触发操作的过程。
图4B呈现了根据本申请的一方面的流程图,其图示了NIC在没有本地缓冲的情况下取得和发出一批命令的过程。
图4C呈现了根据本申请的一方面的流程图,其图示了NIC重设(rearming)触发操作的批处理的过程。
图5图示了根据本申请的一方面的配备有促进动态触发操作管理的NIC的示例性计算机系统。
在这些附图中,相同的附图标记指代相同的附图元素。
具体实施方式
以下描述被呈现以使得本领域的任何技术人员能够制造和使用本发明,并且在特定应用及其要求的上下文中被提供。对所公开示例的各种修改对于本领域技术人员来说将是明显的,并且在不脱离本发明的精神和范围的情况下,本文定义的一般原理可以应用于其他示例和应用。因此,本发明不限于所示示例,而旨在符合与权利要求一致的最大范围。
随着网络使能的设备和应用程序变得越来越普遍,各种类型的流量(traffic)以及不断增加的网络负载持续对底层网络架构提出更高的性能要求。例如,比如高性能计算(HPC)、媒体流和物联网(IOT)等应用程序可以生成具有独特特性的不同类型的流量。因此,除了比如带宽和时延等传统网络性能指标之外,网络架构师还持续面临比如可扩展性、多功能性和效率等挑战。
比如HPC节点等主机设备可以配备有一个或多个大容量NIC。通常,这种NIC可以是可以提供低时延的以太网NIC。这种NIC可以促进去往和来自用户空间缓冲区的数据传输,而无需来自主机设备的操作系统的干预。例如,NIC可以提供单独的网络原子操作(networkatomic operation)(例如,浮点加法)和触发操作两者。触发操作为主机设备上的应用程序提供了设置网络操作的能力,这些网络操作可以在无需应用程序参与的情况下通过完成其他网络操作而被异步触发。
本技术的一个方面可以提供一种用于促进网络接口控制器(NIC)中的高效命令管理的系统。在操作期间,所述系统可以在所述NIC处确定触发条件以及与所述触发条件相对应的命令集在命令队列中的位置。所述命令队列可以在所述NIC外部。所述位置可以与所述命令集在所述命令队列中的结束相对应。然后,所述系统可以在所述NIC处确定是否已经满足所述触发条件。如果满足所述触发条件,则所述系统可以从所述命令队列中获取所述命令集中的相应命令并从所述NIC发出所述命令直到到达所述位置,从而在满足所述触发条件之前绕过本地存储所述命令集。
在该方面的变体中,所述系统可以获得指示所述触发条件和所述命令队列中的所述位置的触发命令。然后,所述系统可以在数据结构中生成包括所述触发条件和所述位置的条目(entry)。
在进一步变体中,所述系统可以通过确定第二命令队列中存在所述触发命令并从所述第二命令队列中取得所述触发命令来获得所述触发命令。所述第二命令队列也可以在所述NIC外部。
在该方面的变体中,所述命令集可以包括多个命令子集。相应的命令子集可以与所述命令子集的触发子条件以及指示命令子集在命令队列中的结束的位置相关联。然后,所述系统可以在数据结构中生成包括所述触发子条件和所述命令子集的所述位置的条目。
在进一步变体中,所述命令子集的条目还可以包括下一条目指示符,所述下一条目指示符指示所述数据结构中存在第二命令子集的第二条目。如果满足所述触发子条件,则所述系统可以发出所述命令子集。随后,所述系统可以确定是否已经满足所述第二命令子集的第二触发子条件。
在进一步变体中,所述系统可以基于一个或多个捆绑条件将所述多个命令子集组合成触发操作组。然后,所述系统可以为所述触发操作组分配标识符,其中,相应的命令子集与所述标识符相关联。
在该方面的变体中,所述位置可以是所述命令队列的目标写指针值。然后,所述系统可以通过用所述目标写指针值更新所述命令队列的写指针并移动所述命令队列的读指针直到到达所述写指针来从所述命令队列中获取相应命令。
在进一步变体中,所述系统可以基于重设计数器来确定是否重设所述命令集。然后,所述系统可以通过重置所述读指针和所述写指针并使所述重设计数器递减来重设所述命令集。
在进一步变体中,所述系统可以进一步通过从基本条件(例如,基本值)导出所述触发条件来重设所述命令集。
在该方面的变体中,所述触发条件可以对应于阈值。然后,所述系统可以通过确定计数器值是否已经达到所述阈值来确定是否已经满足所述触发条件。
本文描述的示例通过以下方式解决了在避免NIC中的本地缓冲的同时高效地管理触发操作的问题:(i)等待触发条件满足触发操作集;(ii)获得并发出触发操作集中的每一个,而不将这些触发操作存储在NIC的内部缓冲区中;以及(iii)在发出整个集合时,对命令队列中已经存储的触发操作重新使用相同的触发条件。避免本地缓冲可以允许NIC高效地支持大量触发操作,而无需NIC中的大型存储模块。为了促进批处理,将控制流传递到NIC。基于批处理和重新使用触发条件,NIC可以避免本地存储大量触发操作并避免重置触发条件。
通常,NIC的主机设备可以向NIC发出数据操作命令(例如,远程直接存储器存取(RDMA)的“获取GET”或“PUT”命令)。因此,主机设备可以将命令(例如,命令的直接存储器存取(DMA)描述符)传输到NIC。如果主机设备需要将大量命令传输到NIC,则在主机设备上运行的应用程序可以将这些命令存储在主机设备的命令队列中。主机设备可以将命令队列维持在主机设备的存储器设备的命令队列存储器段中。在存储比如触发操作等命令时,应用程序可以更新写指针,所述写指针向NIC通知新触发操作的插入。
然后,NIC的触发操作单元(TOU)可以基于读指针从命令队列中获取触发操作,将所述操作存储在TOU的内部缓冲区中并更新所述读指针。TOU可以配备有用于存储相应触发操作的命令的完整长度的专用内部缓冲区。TOU可以存储触发操作,直到满足触发操作的触发条件。在一些实施例中,内部缓冲区可以被实施为NIC的存储器设备上的链表。链表还可以包括触发操作的触发条件。因此,链表的每个元素可能需要64字节到128字节的存储。
当NIC发出触发操作(即,发出触发操作的命令)时,触发操作可以由另一个主机设备的NIC处理。如果应用程序需要再次使用触发操作,则应用程序可以将触发操作重新插入命令队列中。然而,许多操作(例如,集体操作)可能会重复地使用相同的操作模式。此外,应用程序也可能会重复地使用相同的操作模式。因此,设置随后重复的触发操作可能会导致不必要的开销。而且,应用程序可能需要大量的触发操作。因此,在等待满足触发条件的同时将如此大量的触发操作存储在NIC中可能是低效的。
为了解决这个问题,NIC可以支持可以包括触发条件和写指针的触发命令。触发条件可以指示何时发出触发操作集,并且写指针可以指示所述触发操作集在命令队列中的结束。应用程序可以继续将触发操作放置在常规命令的命令队列中。代替更新写指针,应用程序可以将触发命令放置在命令队列段中的第二命令队列中。所述触发命令可以指示与触发操作相关联的写指针,从而将控制流移位到TOU。NIC的TOU可以从第二命令队列中取得触发命令,并将触发命令中的信息存储在本地触发操作表中。所述信息可以包括触发条件、写指针和命令队列的标识符中的一项或多项。在一些实施例中,所述表可以被实施为NIC上的链表,并且所述表的相应条目可以是所述链表的元素。
TOU可以监测触发条件。触发条件可以是指示其他相关操作的完成的阈值。例如,如果触发操作依赖于来自n个节点的数据,则阈值可以是n。当从每个这样的节点接收数据时,NIC的计数器可以递增。计数器可以基于非负整数。当计数器值达到n时,TOU可以确定已经满足触发条件。当满足触发条件时,TOU可以允许NIC获得触发操作中的每一个(即,每个对应的命令)并发出所获得的触发操作,而无需将所述触发操作存储在TOU的内部缓冲区中。发出触发操作可以包括将触发操作插入到包中并将包发送到对应的远程节点。然后,TOU可以使读指针递增,获得下一触发操作并发出所获得的触发操作。TOU可以继续这个过程,直到读指针到达条目的写指针为止。以这种方式,NIC可以发出触发操作,而无需将这些触发操作存储在内部缓冲区中。
通常,触发操作集可以包括多个子集,每个子集具有对应的阈值。每个这样的触发操作子集的阈值可以相同或者可以不同。应用程序可以基于一个或多个捆绑条件将每个这样的触发操作子集捆绑在一起。捆绑条件的示例包括但不限于来自用户的显式定义(例如,基于应用程序编程接口(API))以及NIC自动检测到顺序命令的阈值是相同的。触发操作集可以被称为触发组(TG)。NIC可以为相应的TG分配标识符。TG的每个子.可以与同一TG标识符相关联。于是,触发操作表可以包括TG标识符。
此外,如果应用程序重复地重新使用相同的触发操作集,而不是重新发出触发操作,则应用程序可以指示TG的触发操作应该重复的次数。TOU可以维护相应的TG标识符与计数器的映射,所述计数器指示触发操作在基本表中应该重复的次数。基本表也可以被实施为链表。当TG中的所有触发操作都被发出时,TOU可以检查计数器是否具有非零正值。如果计数器具有非零正值,则TOU可以等待TG的相应触发操作的发出的完成,使计数器递减并重设TG的触发操作。重设包括将读指针和写指针重置为初始值(例如,零值)。以这种方式,NIC可以高效地使用命令队列中已经存储的触发操作,从而允许应用程序避免重复地重新发出相同的触发操作集。
在本公开中,术语“交换机”是在一般意义上使用,并且它可以指在任何网络层中操作的任何独立或结构交换机。“交换机”不应被解释为将本发明的示例限制于第2层网络。可以将流量转发到外部设备或另一个交换机的任何设备都可以被称为“交换机”。可以将流量转发到终端设备的任何物理或虚拟设备(例如,在计算设备上操作的虚拟机或交换机)都可以被称为“交换机”。“交换机”的示例包括但不限于第2层交换机、第3层路由器、路由交换机、Gen-Z网络的部件、或包括多个相似或异构的较小物理和/或虚拟交换机的结构交换机。
术语“包”是指可以在网络上一起传输的一组比特。“包”不应被解释为将本发明的示例限制于第3层网络。“包”可以由涉及一组比特的其他术语来代替,比如“消息”、“帧”、“信元”、“数据报”或“事务”。此外,术语“端口”可以指可以接收或发射数据的端口。“端口”还可以指可以促进该端口的操作的硬件、软件和/或固件逻辑。
短语“触发操作”是指由应用程序针对触发操作发出的命令。在本公开中,短语“触发操作”和“触发操作命令”可互换使用。
在本公开中,结合图1的描述与网络架构有关,并且结合图2A及之后的描述提供了关于与支持高效命令管理的NIC相关联的架构和操作的更多细节。
图1图示了根据本申请的一方面的示例性网络。在该示例中,交换机的网络100(也可以被称为“交换机结构”)可以包括交换机102、104、106、108和110。每个交换机在交换机结构100内可以具有唯一的地址或ID。各种类型的设备和网络可以耦接到交换机结构。例如,存储阵列112可以经由交换机110耦接到交换机结构100;基于无限带宽(IB)的HPC网络114可以经由交换机108耦接到交换机结构100;多个终端主机(比如主机116)可以经由交换机104耦接到交换机结构100;并且IP/以太网络118可以经由交换机102耦接到交换机结构100。通常,交换机可以具有边缘端口和结构端口。边缘端口可以耦接到结构外部的设备。结构端口可以经由结构链路耦接到结构内的另一个交换机。通常,流量可以经由边缘交换机的入口端口注入到交换机结构100中,并经由另一个(或同一个)边缘交换机的出口端口离开交换机结构100。入口链路可以将边缘设备(例如,HPC终端主机)的NIC耦接到边缘交换机的入口边缘端口。然后,交换机结构100可以将流量传输到出口边缘交换机,所述出口边缘交换机进而可以经由另一个NIC将流量传递到目的地边缘设备。
图2A图示了根据本申请的一方面的示例性NIC芯片。参考图1中的示例,NIC芯片200可以是为主机116设计的定制专用集成电路(ASIC),以与交换机结构100一起工作。在该示例中,芯片200可以提供NIC 202。芯片200的相应NIC可以配备有主机接口(HI)(例如,用于连接到主机处理器的接口)和用于与耦接到图1的交换机结构100的链路进行通信的高速网络接口(HNI)。例如,NIC 202可以包括HI 210和HNI 220。
在一些实施例中,HI 210可以是外围部件互连(PCI)或快速外围部件互连(PCIe)接口。HI 210可以经由主机连接201耦接到主机,所述主机连接可以包括N(例如,在一些芯片中N可以是16)个PCle Gen4、PCle Gen5和PCle Gen6通道,这些通道能够分别以高达每通道16Gbps、32Gbps和64Gbps的信令速率进行操作。HNI 210可以促进高速网络连接203,所述高速网络连接可以与图1的交换机结构100中的链路进行通信。HNI 210可以使用M(例如,在一些芯片中M可以是4)个全双工串行通道(full-duplex serial lanes)以100Gbps、200Gbps、400Gbps或800Gbps的总速率进行操作。基于非归零(NRZ)调制或脉冲幅度调制4(PAM4),M个通道中的每一个都可以分别以X Gbps或Y Gbps进行操作。例如,400G以太网可以使用100Gbps的PAM4(即,Y=100)。HNI 220可以支持电气和电子工程师协会(IEEE)802.3基于以太网的协议、以及为更高速率的小消息提供支持的增强型帧格式。
NIC 202可以支持以下中的一项或多项:基于消息传递接口(MPI)的点对点消息传递、远程存储器存取(RMA)操作、批量数据集体操作的卸载和进度、以及以太网包处理。此外,NIC 202所支持的RMA操作可以包括PUT、GET和原子存储器操作(AMO)。NIC 202可以提供可靠的传输。例如,如果NIC 202是源NIC,则NIC 202可以为幂等操作提供重试机制。此外,基于连接的错误检测和重试机制可以用于可操纵目标状态的命令操作(orderedopeartion)。NIC 202的硬件可以维护重试机制所需的状态。以这种方式,NIC 202可以减轻主机(例如,软件)上的负担。规定重试机制的策略可以由主机经由软件来指定,从而确保NIC 202的灵活性。
此外,NIC 202可以促进触发操作、通用卸载机制以及相关操作序列(比如批量数据集体)的进度。NIC 202可以支持应用程序编程接口(API)(例如,自由结构API),所述API促进了由图1的交换机结构100向在主机116上运行的应用程序提供结构通信服务。NIC 202还可以支持低级别网络编程接口,比如门户API。另外,NIC 202可以提供高效的以太网包处理,所述以太网包处理在NIC 202为发送方时可以包括有效发射,在NIC 202为目标时可以包括流操纵,以及校验计算。而且,NIC 202可以支持虚拟化(例如,使用容器(container)或虚拟机)。
图2B图示了根据本申请的一方面的NIC的示例性架构。在NIC 202中,HNI 220的端口宏可以促进低级别以太网操作,比如物理编码子层(PCS)和媒体存取控制(MAC)。另外,NIC 202可以为链路层重试(LLR)提供支持。NIC 202可以包括命令队列(CQ)单元230。CQ单元230可以负责获取和发出主机端命令。CQ单元230可以包括命令队列232和调度器234。命令队列232可以包括分别用于启动器命令(PUT、GET等)和目标命令(Append、Search等)的两组独立的队列。命令队列232可以被实施为在NIC 202的存储器中维护的循环缓冲区。在主机上运行的应用程序可以直接写入命令队列232。调度器234可以包括分别用于启动器命令和目标命令的两个单独的调度器。启动器命令基于散列函数被分类到流队列236中。流队列236之一可以分配到唯一的流。此外,CQ单元230可以进一步包括触发操作模块(或逻辑块)238,所述触发操作模块负责对触发命令进行排队和分派。
图3A图示了根据本申请的一方面的NIC中的示例性动态触发操作管理过程。在该示例中,主机设备300可以配备有NIC 330。设备300可以包括处理器302、存储器设备304和接口系统306。NIC 330的HI 332可以耦接到设备300的接口系统306。NIC 330可以经由HNI336耦接到网络340。在一些实施例中,HI 332可以是PCIe接口,并且接口系统306可以是为HI 332提供插槽的PCIe系统。NIC 330还可以包括用于管理来自设备300的输入命令的CQ单元334,如结合图2A所描述的。在操作期间,设备300可以发出针对操作(例如,RDMA操作)的命令320。为了传输命令320,主机300可以生成命令描述符(例如,DMA描述符)并且将命令320传输到NIC 330。
如果命令320是大量命令之一,则设备300可以将命令320存储在存储器设备304中的CQ存储器段312中。段312可以存储一个或多个CQ 352和354。命令320可以存储在CQ 352中。当NIC 330具有可用于下一命令的资源时,NIC 330可以向设备300请求命令。如果命令320是下一命令,则处理器302可以经由HI 332将命令320传输到NIC 330。这里,NIC 330可以从主机300的存储器设备304读取命令。在一些实施例中,在主机300的操作系统上运行的NIC 330的设备驱动程序308可以促进主机设备300与NIC 330之间的通信。
当在设备300上运行的应用程序310发出针对NIC 330的命令(所述命令可以包括触发操作)时,所述命令可以存储在段312的CQ 352中。然后,设备300可以通过推进CQ 352的写指针来向NIC 330通知所述命令。然后,NIC 330可以经由HI 332向CQ 352发出读操作并推进CQ 352的预取指针。然后,NIC 330的TOU 334可以基于读指针从CQ 352获得触发操作,将所述操作存储在TOU 334的内部缓冲区342中并更新读指针。缓冲区342可以是用于存储相应触发操作的命令的完整长度的专用缓冲区。TOU 334可以将触发操作存储在缓冲区342中,直到满足触发操作的触发条件。在一些实施例中,缓冲区334可以被实施为NIC 330的存储器设备上的链表。链表还可以包括触发操作的触发条件。因此,链表的每个元素会需要64字节到128字节的存储。
当NIC 330发出触发操作时,触发操作可以由另一个主机设备的NIC处理。发出触发操作可以包括将触发操作插入到包中并经由网络340将包发送到对应的远程节点。如果应用程序310需要再次使用触发操作,则应用程序310可以将触发操作重新插入CQ 352中。然而,许多操作(比如集体操作)可能会重复地使用相同的操作模式。此外,应用程序310也可以重复地使用相同的操作模式。因此,设置随后重复的触发操作可能会导致不必要的开销。而且,应用程序310可能需要大量触发操作。因此,在等待触发条件得到满足的同时将如此大量的触发操作存储在缓冲区342中可能是低效的。
为了解决这个问题,应用程序310可以发出触发操作集322,并且将这些触发操作存储在CQ 352中,而无需推进对应的写指针。应用程序310还可以发出可以包括触发条件和写指针的触发命令324。触发条件可以指示何时发出触发操作集322,并且写指针可以指示触发操作集322在CQ 352中的结束。应用程序310可以将命令324存储在CQ 354中并推进CQ354的写指针。作为响应,NIC 330可以从CQ 354获得命令324并推进CQ 354的读指针。然后,TOU 334可以将命令324存储在触发操作(TO)表344中。在一些实施例中,表344可以被实施为NIC 330的本地存储器设备中的链表。
通过等待触发条件满足,NIC 330可以在避免缓冲区342中的本地缓冲的同时高效地管理触发操作集322。响应于满足触发条件,TOU 334可以从CQ 352获得触发操作集中的每一个。然后,NIC 330可以发出触发操作,而无需将触发操作存储在缓冲区342中。然后,TOU 334可以推进读指针并获得触发操作集322的下一触发操作。换句话说,为了促进批处理,控制流从应用程序310转移到NIC 330。在发出整个集时,对于已经存储在CQ 352中的触发操作集322,TOU 334可以重新使用来自表344的相同触发条件。基于批处理和重新使用触发条件,NIC 330可以避免本地存储大量触发操作并避免重置触发条件。
图3B图示了根据本申请的一方面的NIC的触发操作的示例性批取得(batch-retrieval)过程。应用程序310可以继续设置CQ 352中的触发操作322。代替更新写指针316,应用程序310可以将命令324放置在段312中的CQ 354中。命令324可以包括写指针指示符396,所述写指针指示符可以是指示在发出触发操作集322时CQ 352的写指针316应该是什么的目标写指针值。TOU 334可以从CQ 354中取得命令324并将命令324中的信息存储在表344中。所述信息可以包括以下中的一项或多项:触发条件372;指示触发操作集322在CQ352中的结束的写指针指示符374(例如,写指针指示符396的值);以及CQ标识符376(例如,CQ 352的标识符)。
然后,TOU 354可以监测触发条件372,所述触发条件可以是指示其他相关操作的完成的阈值。NIC 330可以维护与相应的这种阈值相对应的计数器。当计数器达到表344的触发条件372中指定的阈值时,TOU 334可以确定已经满足触发条件372。当满足触发条件372时,TOU可以利用写指针指示符396更新写指针316。然后,TOU 334可以允许NIC 330获得触发操作集322中的每个触发操作(即,每个对应的命令)并发出所获得的触发操作,而无需将所述触发操作存储在缓冲区342中。随后,NIC 330的CQ单元338可以使读指针314递增,从而允许NIC 330从CQ 352获得下一触发操作并发出所获得的触发操作。TOU 334和CQ单元338可以继续该过程,直到读指针314到达写指针316(例如,由写指针指示符396指示的位置)为止。以这种方式,NIC 330可以发出触发操作集322,而无需将这些触发操作存储在内部缓冲区342中。
在一些实施例中,触发操作集322可以包括多个子集362、364和366。子集中的每一个可以与对应的触发条件(例如,阈值)和写指针指示符相关联。每个这样的触发操作子集的触发条件可以被称为触发子条件。这些触发子条件可以相同或者可以不同。这允许触发操作集322表示复杂的触发操作集,这些触发操作具有不同的触发条件,但总体上具有相同的重复模式。TOU 334可以为表344中的子集362、364和366中的每一个生成并维护条目。在这种情况下,TOP表344还可以包括可以指示是否存在后一触发操作子集的下一指针376。如果存在后一子集,则下一指针376的值可以指示在表344中存储与后一子集相关联的信息的下一条目。如果表344被实施为链表,则下一指针376的值可以是指向链表的下一元素(或节点)的指针。
在该示例中,TOU 334可以监测表344的第一条目中的触发条件372的值。当满足子集362的触发条件372(例如,计数器达到值5)时,TOU 334向NIC 330发信号以从CQ 352获得触发操作,如由表344的对应条目中的CQ标识符376的值所指示的。为此,TOU 334可以利用写指针指示符392更新写指针316。相应地,NIC 330可以获得由读指针314指示的触发操作并发出触发操作。然后,CQ单元338可以使读指针314递增,这允许NIC 330获得由读指针314指示的下一触发操作并发出所述触发操作。TOU 334可以重复该过程,直到读指针314到达写指针316(例如,由写指针指示符392指示的位置)为止。
基于条目中的下一指针376的值,TOU 334可以确定表344中的另一条目,从而指示另一子集的存在。相应地,TOU 334可以监测表344的下一条目中的触发条件372的值。以同样的方式,当满足子集364的触发条件372(例如,计数器达到值12)时,TOU 334可以利用写指针指示符394更新写指针316。然后,NIC 330可以获得子集364的每个触发操作并发出所获得的触发操作。TOU 334和CQ单元338可以重复该过程,直到读指针314到达写指针316(例如,由写指针指示符394指示的位置)为止。基于第二条目中的下一指针376的值,TOU 334可以确定表344中另一条目的存在。
当满足子集366的触发条件372(例如,计数器达到值17)时,TOU 334可以利用写指针指示符396更新写指针316。然后,NIC 330可以获得子集364的每个触发操作并发出所获得的触发操作。TOU 334可以重复该过程,直到读指针314到达写指针316(例如,由写指针指示符396指示的位置)为止。基于第三条目中的文本指针376的值(例如,预定值,比如NULL),TOU 334可以确定已经发出了整个触发操作集322。以这种方式,TOU 334可以促进NIC 330中触发操作的高效处理,而无需将触发操作存储在缓冲区342中。
图3C图示了根据本申请的一方面的NIC的触发操作的批取得(batch-retrieval)的示例性重置过程。应用程序310可以单独发出触发操作的子集362、364和366(即,不作为触发操作集322的一部分)。然后,子集362、364和366可以基于一个或多个捆绑条件捆绑在一起。捆绑条件的示例包括但不限于来自用户的明确定义以及NIC 330自动检测子集362、364和366之间的相关性。明确定义可以基于用户经由API对应用程序310的输入。另一方面,NIC 330可以基于子集362、364和366的相似阈值来确定相关性。NIC 330可以确定相关性,因为子集362、364和366是针对应用程序310的特定子操作的。基于该组合,触发操作集322可以被称为触发组或TG。NIC 330(或应用程序310)可以为相应的TG分配标识符。TG的每个子集可以与同一TG标识符相关联。
因此,表344可以包括TG标识符370。例如,子集362、364和366可以与TG标识符值0相关联。因此,表344中与触发操作集322相关联的每个条目的TG标识符370的值可以为0。假设应用程序310将另一个触发操作集328放置在CQ存储器段312中的CQ 356中。然后,应用程序310可以发出可以包括触发条件和写指针的触发命令326。触发条件可以指示何时发出触发操作集328,并且写指针可以指示触发操作集328在CQ 356中的结束。TOU 334可以从CQ354中取得命令326并将命令326中的信息存储在表344中。
假设触发操作集328包括三个子集。相应地,TOU 334可以在表344中生成三个对应的条目。如果触发操作集328与TG标识符值1相关联,则表344中与触发操作集328相关联的每个条目的TG标识符370的值可以为1。此外,与触发操作集328相关联的每个条目的CQ标识符376可以对应于CQ 356。以这种方式,表344可以存储来自应用程序310的每个触发操作集的一个或多个条目。所述集中的每一个的条目可以包括相同的TG标识符。NIC 330可以维护用于管理每个触发操作集的触发条件的单独计数器。
此外,如果应用程序310重复地重新使用触发操作集322,而不是重新发出触发操作集322,则应用程序310可以指示触发操作集322应该重复的次数。TOU 334可以维护触发操作集322的TG标识符(即,值0)与计数器的映射,所述计数器指示触发操作集322应该重复或重设的次数。TOU 33可以维护基本表346中的映射。表346也可以被实施为链表。对于相应的TG,表346可以包括TG标识符382、基本触发条件384、触发条件增量386和重设计数388。如果触发操作集322要重复七次,则这些触发操作应该重设七次。因此,触发操作集322的条目可以包括TG标识符0和重设计数值7。
对用于指示触发条件的计数器进行重置(例如,重置为值0)可能会导致竞争条件。因此,代替对计数器进行重置,NIC 330可以继续增大计数器值。例如,如果触发操作集依赖于来自n个节点的数据,则阈值可以是n。当计数器值达到n时,TOU 334可以确定已经满足触发条件。然后,NIC 330可以获得并发出触发操作集中的每个操作。如果在再次接收到来自n个节点的数据时要重复触发操作,则后续阈值可以为2n。相应地,基本触发条件可以是n,并且触发条件增量也可以为n。对于触发操作集322,计数器的初始值为0。此外,当阈值达到17时,发出触发操作集322中的所有操作。相应地,对于触发操作集322,基本触发条件384和触发条件增量386的值可以分别为0和17。对于第一重设和第二重设,基本触发条件384的值可以分别设置为17和34(即,对于每次重设,递增17)。
当发出触发操作集322中的所有触发操作时,表344的对应条目中的下一指针376可以包括“REARM”值。如结合图3B所描述的,REARM值可以是指示触发操作应该被重设的预定义值。然后,TOU 334可以从TOP表344中确定相关联的TG标识符。TOU 334可以在表346中查找TG标识符并识别对应的条目。TOU 334可以确定条目中的重设计数器值是否具有非零正值。如果计数器具有非零正值,则TOU 334可以等待触发操作集322的相应触发操作的发出的完成,使计数器值递减并重设触发操作集322。重设包括将读指针和写指针重置为初始值(例如,零值)。TOU 334还可以通过条目的触发条件增量的值来更新基本触发条件的值。
假设触发操作集328没有被应用程序310重复。于是,表344的对应条目中的下一指针376可以包括不同于REARM值的“DONE”值(例如,预定义值)。基于DONE值,TOU 334可以确定触发操作集328没有被重复。代替DONE值,条目可以包括REARM值。然后,TOU 334可以确定表346中的重设计数388的对应值为0。如果使用DONE值,则触发操作集328可能在表346中没有对应的条目。以这种方式,NIC 330可以高效地使用命令队列352中已经存储的触发操作,从而允许应用程序310避免重复地重新发出相同的触发操作。
图4A呈现了根据本申请的一方面的流程图,其图示了NIC管理来自命令队列的触发操作的过程。在操作期间,NIC可以接收触发命令(操作402)并为触发命令分配触发组标识符(操作404)。NIC可以使用来自接收到的触发命令的信息在TO表中生成条目(操作406)。类似地,NIC可以使用来自接收到的触发命令的信息在基本表中生成条目(操作408)。
图4B呈现了根据本申请的一方面的流程图,其图示了NIC在没有本地缓冲的情况下取得和发出一批命令的过程。在操作期间,NIC可以基于TG标识符获得基本表中的基本值(操作422)。然后,NIC可以基于基本触发条件来计算触发条件(例如,基于基本阈值来计算阈值)(操作424)。NIC可以监测TO表中当前条目中的触发条件(操作426),并检查是否满足触发条件(操作428)。在一些实施例中,触发条件是计数器值达到阈值。
如果不满足触发条件,则NIC可以继续监测TO表中当前条目中的触发条件(操作426)。另一方面,如果满足触发条件,则NIC可以基于条目中指定的写指针指示符来更新命令队列的写指针(操作430)。然后,NIC可以获得触发操作(例如,当NIC的CQ单元移动读指针时)并发出所获得的触发操作,而无需将所述触发操作存储在本地缓冲区中(操作432)。NIC可以检查读指针是否已经到达写指针(操作434)。如果读指针尚未到达写指针,则NIC可以通过移动读指针来继续获得下一触发操作并发出所获得的触发操作,而无需将所述触发操作存储在本地缓冲区中(操作432)。
另一方面,如果读指针已经到达写指针,则NIC可以确定下一条目是否由条目中的下一指针指示(操作436)。如果条目中指示了下一条目,则NIC可以基于条目中指定的下一指针来选择当前条目(操作438)。然后,NIC可以监测TO表中更新的当前条目中的触发条件(操作426)。另一方面,如果没有指示下一条目,则NIC可以确定条目中是否指示了重设(操作440)。如果条目中指示了重设,则NIC可以发起重设过程(操作442)。否则,NIC已完成发出触发操作。
图4C呈现了根据本申请的一方面的流程图,其图示了NIC重设触发操作的批处理的过程。在操作期间,NIC可以基于TG标识符识别基本表中的条目(操作452),并从所述条目获得重设计数(操作454)。然后,NIC可以确定重设计数是否大于零(操作456)。如果重设计数不大于零(即,已经变为零),则NIC可以释放基本表和TO表中的对应条目(操作464)。然而,如果重设计数大于零,则NIC可以基于条目中指定的触发条件增量值来更新基本触发条件(操作458)。
NIC可以检查读指针是否已经到达写指针(操作460)。如果读指针尚未到达写指针,NIC可以等待命令队列为空(操作462),并继续检查读指针是否已经到达写指针(操作460)。另一方面,如果读指针已经到达写指针,则NIC可以使条目中的重设计数递减(操作466)并重置读指针和写指针(例如,重置为初始值,比如值0)(操作468)。
图5图示了根据本申请的一方面的配备有促进动态触发操作管理的NIC的示例性计算机系统。计算机系统550可以包括处理器552、存储器设备554和存储设备556。存储器设备554可以包括易失性存储器设备(例如,双列直插式存储器模块(DIMM))。此外,计算机系统550可以耦接到键盘562、指向设备564和显示设备566。存储设备556可以存储操作系统570。应用程序572可以在操作系统570上操作。存储器设备554可以包括CQ 542和544。应用程序572可以将触发操作放置在CQ 542中并将触发命令放置在CQ 544中。
计算机系统550可以配备有耦接促进高效命令管理的NIC 520的主机接口。NIC520可以向计算机系统550提供一个或多个HNI。NIC 520可以经由HNI中的一个耦接到交换机502。NIC 520可以包括触发操作逻辑块530,如结合图3A、图3B和图3C所描述的。触发操作逻辑块530可以包括命令逻辑块532、触发逻辑块534、执行逻辑块536和重置逻辑块538。命令逻辑块532可以从CQ 544中取得触发命令,并在本地TO表和基本表中填充对应的条目。命令逻辑块532还可以基于一个或多个捆绑条件将相关的触发操作组合到TG中,并分配对应的TG标识符。
触发逻辑块534可以确定是否已经满足CQ 542中的触发操作集(或子集)的触发条件。执行逻辑块536可以从触发操作集获得相应的触发操作并发出所述触发操作,而无需将所述触发操作存储在本地缓冲区中。执行逻辑块536还可以确定是否应该重设触发操作集。重设逻辑块538可以通过更新基本触发条件、使重设计数器递减以及重置CQ 542的读指针和写指针来重设触发操作集。如果没有重设触发操作集,则重设逻辑块538可以释放与触发操作集相关联的条目。
在本具体实施方式中描述的数据结构和代码通常被存储在计算机可读存储介质上,所述介质可以是可以存储供计算机系统使用的代码和/或数据的任何设备或介质。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、磁存储设备和光存储设备(比如磁盘、磁带、CD(致密盘)、DVD(数字多功能盘或数字视频盘))、或能够存储现在已知或以后开发的计算机可读介质的其他介质。
在具体实施方式部分中描述的方法和过程可以被体现为代码和/或数据,所述代码和/或数据可以存储在如上所述的计算机可读存储介质中。当计算机系统读取并执行存储在计算机可读存储介质上的代码和/或数据时,所述计算机系统执行被体现为数据结构和代码并被存储在计算机可读存储介质内的方法和过程。
本文所描述的方法和过程可以由硬件模块或装置执行和/或包括在其中。这些模块或装置可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、在特定时间执行特定的软件模块或代码的专用或共享处理器、和/或现在已知或以后开发的其他可编程逻辑设备。在激活硬件模块或装置时,这些硬件模块或装置执行其中所包括的方法和过程。
本发明示例的先前描述仅是出于图示和描述的目而呈现的。所述描述并非旨在是穷举的或限制本公开。相应地,对于本领域普通技术人员而言,许多的修改和变化将是明显的。本发明的范围由所附权利要求限定。

Claims (20)

1.一种用于促进网络接口控制器(NIC)中的高效命令管理的方法,所述方法包括:
由所述NIC确定触发条件以及与所述触发条件相对应的命令集在命令队列中的位置,其中,所述命令队列在所述NIC外部,并且其中,所述位置与所述命令集在所述命令队列中的结束相对应;
由所述NIC确定是否已经满足所述触发条件;以及
响应于满足所述触发条件,从所述命令队列中获取所述命令集中的相应命令并从所述NIC发出所述命令直到到达所述位置,从而在满足所述触发条件之前绕过本地存储所述命令集。
2.如权利要求1所述的方法,进一步包括:
获得指示所述触发条件和所述命令队列中的所述位置的触发命令;以及
在数据结构中生成包括所述触发条件和所述位置的条目。
3.如权利要求2所述的方法,其中,获得所述触发命令进一步包括:
确定所述NIC外部的第二命令队列中存在所述触发命令;以及
从所述第二命令队列中取得所述触发命令。
4.如权利要求1所述的方法,其中,所述命令集包括多个命令子集,其中,相应的命令子集与所述命令子集的触发子条件以及指示所述命令子集在所述命令队列中的结束的位置相关联;并且
其中,所述方法进一步包括在数据结构中生成包括所述触发子条件和所述命令子集的所述位置的条目。
5.如权利要求4所述的方法,其中,所述命令子集的条目进一步包括下一条目指示符,所述下一条目指示符指示所述数据结构中存在第二命令子集的第二条目;并且
其中,所述方法进一步包括:
响应于满足所述触发子条件而发出所述命令子集;以及
确定是否已经满足所述第二命令子集的第二触发子条件。
6.如权利要求4所述的方法,进一步包括:
基于一个或多个捆绑条件将所述多个命令子集组合成触发操作组;以及
为所述触发操作组分配标识符,其中,相应的命令子集与所述标识符相关联。
7.如权利要求1所述的方法,其中,所述位置是所述命令队列的目标写指针值;
其中,从所述命令队列中获取相应命令进一步包括:
利用所述目标写指针值更新所述命令队列的写指针;以及
移动所述命令队列的读指针直到到达所述写指针。
8.如权利要求7所述的方法,进一步包括:
基于重设计数器来确定是否重设所述命令集;以及
通过以下方式重设所述命令集:
重置所述读指针和所述写指针;以及
使所述重设计数器递减。
9.如权利要求7所述的方法,其中,重设所述命令集进一步包括从基本条件导出所述触发条件。
10.如权利要求1所述的方法,其中,所述触发条件对应于阈值;
其中,确定是否已经满足所述触发条件进一步包括确定计数器值是否已经达到所述阈值。
11.一种网络接口控制器(NIC),包括:
耦接主机设备的主机接口;
触发逻辑块,所述触发逻辑块用于:
确定触发条件以及与所述触发条件相对应的命令集在命令队列中的位置,其中,所述命令队列在所述主机设备的存储器设备中,并且其中,所述位置与所述命令集在所述命令队列中的结束相对应;以及
确定是否已经满足所述触发条件;以及
执行逻辑块,所述执行逻辑块用于:响应于满足所述触发条件,从所述命令队列中获取所述命令集中的相应命令并从所述NIC发出所述命令直到到达所述位置,从而在满足所述触发条件之前绕过本地存储所述命令集。
12.如权利要求11所述的网络接口控制器,进一步包括:命令逻辑块,所述命令逻辑块用于:
获得指示所述触发条件和所述命令队列中的所述位置的触发命令;以及
在数据结构中生成包括所述触发条件和所述位置的条目。
13.如权利要求12所述的网络接口控制器,其中,所述命令逻辑块用于通过以下方式获得所述触发命令:
确定所述NIC外部的第二命令队列中存在所述触发命令;以及
从所述第二命令队列中取得所述触发命令。
14.如权利要求11所述的网络接口控制器,其中,所述命令集包括多个命令子集,其中,相应的命令子集与所述命令子集的触发子条件以及指示所述命令子集在所述命令队列中的结束的位置相关联;并且
其中,所述网络接口控制器进一步包括命令逻辑块,所述命令逻辑块用于在数据结构中生成包括所述触发子条件和所述命令子集的所述位置的条目。
15.如权利要求14所述的网络接口控制器,其中,所述命令子集的条目进一步包括下一条目指示符,所述下一条目指示符指示所述数据结构中存在第二命令子集的第二条目;
其中,所述执行逻辑块进一步用于响应于满足所述触发子条件而发出所述命令子集;并且
其中,所述触发逻辑块进一步用于确定是否已经满足所述第二命令子集的第二触发子条件。
16.如权利要求14所述的网络接口控制器,其中,所述命令逻辑块进一步用于:
基于一个或多个捆绑条件将所述多个命令子集组合成触发操作组;以及
为所述触发操作组分配标识符,其中,相应的命令子集与所述标识符相关联。
17.如权利要求11所述的网络接口控制器,其中,所述位置是所述命令队列的目标写指针值;
其中,所述执行逻辑块用于通过以下方式从所述命令队列中获取相应命令:
利用所述目标写指针值更新所述命令队列的写指针;以及
移动所述命令队列的读指针直到到达所述写指针。
18.如权利要求17所述的网络接口控制器,进一步包括:重设逻辑块,所述重设逻辑块用于:
基于重设计数器来确定是否重设所述命令集;以及
通过以下方式重设所述命令集:
重置所述读指针和所述写指针;以及
使所述重设计数器递减。
19.如权利要求17所述的网络接口控制器,其中,所述重设逻辑块用于通过从基本条件导出所述触发条件来重设所述命令集。
20.如权利要求11所述的网络接口控制器,其中,所述触发条件对应于阈值;
其中,所述触发逻辑块用于通过确定计数器值是否已经达到所述阈值来确定是否已经满足所述触发条件。
CN202111267935.2A 2021-07-28 2021-10-29 促进网络接口控制器中动态触发操作管理的系统和方法 Pending CN115686879A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/387,334 2021-07-28
US17/387,334 US11665113B2 (en) 2021-07-28 2021-07-28 System and method for facilitating dynamic triggered operation management in a network interface controller (NIC)

Publications (1)

Publication Number Publication Date
CN115686879A true CN115686879A (zh) 2023-02-03

Family

ID=85038787

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111267935.2A Pending CN115686879A (zh) 2021-07-28 2021-10-29 促进网络接口控制器中动态触发操作管理的系统和方法

Country Status (2)

Country Link
US (1) US11665113B2 (zh)
CN (1) CN115686879A (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050177657A1 (en) * 2004-02-03 2005-08-11 Level 5 Networks, Inc. Queue depth management for communication between host and peripheral device
US7962656B1 (en) * 2006-01-03 2011-06-14 Hewlett-Packard Development Company, L.P. Command encoding of data to enable high-level functions in computer networks
US20150261434A1 (en) * 2014-03-17 2015-09-17 Mellanox Technologies Ltd. Storage system and server
US20170064051A1 (en) * 2015-08-28 2017-03-02 International Business Machines Corporation Coalescing messages using a network interface controller
US20190044795A1 (en) * 2018-06-29 2019-02-07 Intel Corporation Technologies for monitoring networked computing devices using deadman triggers
US20200034195A1 (en) * 2018-07-30 2020-01-30 Advanced Micro Devices, Inc. Network-related performance for gpus
US20210014177A1 (en) * 2020-09-26 2021-01-14 Intel Corporation Deterministic packet scheduling and dma for time sensitive networking

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8249072B2 (en) * 2009-03-12 2012-08-21 Oracle America, Inc. Scalable interface for connecting multiple computer systems which performs parallel MPI header matching
TWI416336B (zh) * 2009-11-10 2013-11-21 Realtek Semiconductor Corp 可共享緩衝器的網路介面卡與緩衝器共享方法
US20120213118A1 (en) * 2011-02-18 2012-08-23 Lindsay Steven B Method and system for network interface controller (nic) address resolution protocol (arp) batching
US9143467B2 (en) * 2011-10-25 2015-09-22 Mellanox Technologies Ltd. Network interface controller with circular receive buffer
US9479461B2 (en) * 2012-03-16 2016-10-25 Hitachi, Ltd. Computer system and method for communicating data between computers
US9424214B2 (en) * 2012-09-28 2016-08-23 Mellanox Technologies Ltd. Network interface controller with direct connection to host memory
US9742855B2 (en) * 2014-09-04 2017-08-22 Mellanox Technologies, Ltd. Hybrid tag matching
WO2018119843A1 (en) * 2016-12-29 2018-07-05 Intel Corporation Network interface controller with non-volatile random access memory write packet log
US10498672B2 (en) * 2017-01-30 2019-12-03 Mellanox Technologies, Ltd. Mechanism for distributing MPI tag matching
US10248596B2 (en) * 2017-04-27 2019-04-02 Dell Products L.P. Systems and methods for providing a lower-latency path in a virtualized software defined storage architecture
US11277350B2 (en) * 2018-01-09 2022-03-15 Intel Corporation Communication of a large message using multiple network interface controllers
DE112020002497T5 (de) * 2019-05-23 2022-04-28 Hewlett Packard Enterprise Development Lp System und verfahren zur dynamischen zuweisung von reduktionsmotoren

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050177657A1 (en) * 2004-02-03 2005-08-11 Level 5 Networks, Inc. Queue depth management for communication between host and peripheral device
US7962656B1 (en) * 2006-01-03 2011-06-14 Hewlett-Packard Development Company, L.P. Command encoding of data to enable high-level functions in computer networks
US20150261434A1 (en) * 2014-03-17 2015-09-17 Mellanox Technologies Ltd. Storage system and server
US20170064051A1 (en) * 2015-08-28 2017-03-02 International Business Machines Corporation Coalescing messages using a network interface controller
US20190044795A1 (en) * 2018-06-29 2019-02-07 Intel Corporation Technologies for monitoring networked computing devices using deadman triggers
US20200034195A1 (en) * 2018-07-30 2020-01-30 Advanced Micro Devices, Inc. Network-related performance for gpus
US20210014177A1 (en) * 2020-09-26 2021-01-14 Intel Corporation Deterministic packet scheduling and dma for time sensitive networking

Also Published As

Publication number Publication date
US11665113B2 (en) 2023-05-30
US20230036404A1 (en) 2023-02-02

Similar Documents

Publication Publication Date Title
US11876701B2 (en) System and method for facilitating operation management in a network interface controller (NIC) for accelerators
US11709702B2 (en) Work conserving, load balancing, and scheduling
JP4583383B2 (ja) Tcp再送信プロセス速度の向上方法
JP4508195B2 (ja) アウト・オブ・オーダのrdma送信メッセージの配信に関する書き込み動作の回数の減少
US6948004B2 (en) Host-fabric adapter having work queue entry (WQE) ring hardware assist (HWA) mechanism
US7768907B2 (en) System and method for improved Ethernet load balancing
US10397144B2 (en) Receive buffer architecture method and apparatus
US20130060963A1 (en) Facilitating routing by selectively aggregating contiguous data units
WO2004019165A2 (en) Method and system for tcp/ip using generic buffers for non-posting tcp applications
JP4979823B2 (ja) データ転送エラー検査
US11665113B2 (en) System and method for facilitating dynamic triggered operation management in a network interface controller (NIC)
US20240160584A1 (en) System and method for facilitating dynamic command management in a network interface controller (nic)
US9229893B1 (en) Systems and methods for managing direct memory access operations

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