一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

促进网络接口控制器(NIC)中的有效消息匹配的系统和方法与流程

2021-11-30 21:53:00 来源:中国专利 TAG:

促进网络接口控制器(nic)中的有效消息匹配的系统和方法
1.背景
技术领域
2.本公开总体上涉及联网技术领域。更具体地,本公开涉及用于促进网络接口控制器(nic)中的高速mpi(消息传递接口)列表匹配的系统和方法。
3.相关技术
4.随着支持网络的设备和应用变得越来越普遍,各种类型的流量以及不断增加的网络负载继续对底层网络架构提出更多的性能要求。例如,诸如高性能计算(hpc)、媒体流化和物联网(iot)的应用可以生成具有独特特性的不同类型的流量。因此,除了常规网络性能指标(诸如带宽和延迟)之外,网络架构还继续面临诸如可扩展性、通用性和效率的挑战。


技术实现要素:

5.提供了一种能够执行消息传递接口(mpi)列表匹配的网络接口控制器(nic)。nic可以包括主机接口、网络接口和硬件列表处理引擎(lpe)。主机接口可以将nic耦接到主机设备。网络接口可以将nic连接到网络。在操作期间,lpe可以接收匹配请求,并基于所接收的匹配请求执行mpi列表匹配。
附图说明
6.图1示出了示例性网络。
7.图2a示出了具有多个nic的示例性nic芯片。
8.图2b示出了nic的示例性架构。
9.图3a示出了处理引擎的示例性架构。
10.图3b示出了匹配引擎的示例性操作流水线。
11.图4a示出了示例性匹配请求队列。
12.图4b示出了持久性列表条目缓存(plec)的示例性框图。
13.图5示出了在nic中执行列表匹配的流程图。
14.图6示出了配备促进mpi列表匹配的nic的示例性计算机系统。
15.在附图中,相同的附图标记表示相同的附图元素。
具体实施方式
16.对所公开的实施例的各种修改对于本领域技术人员来说将是显而易见的,并且在不脱离本公开的精神和范围的情况下,本文定义的一般原理可以应用于其他实施例和应用。因此,本发明不限于所示的实施例。
17.概述
18.本公开描述了促进网络接口控制器(nic)中的有效列表匹配的系统和方法。nic实施与存储器单元耦接的硬件列表处理引擎。列表处理引擎可以实现高速列表匹配。列表处
理引擎(lpe)可以在由消息传递接口(mpi)协议定义的各种列表中执行原子搜索和搜索与删除操作符,并且可以将列表操作分派给正确的匹配单元。为了提高速度,可以使用多个处理引擎,并且每个处理引擎可以包括多个存储体(memory bank),这些存储体使用交叉开关(crossbar)互连。此外,lpe通过分离端点网络接口实现列表匹配加速。列表匹配硬件可以通过将匹配尝试流水线状态与匹配终止条件重叠来减少延迟,并且可以将统一搜索流水线用于优先级和意外列表以及用于网络搜索和主机追加命令。lpe硬件还可以使用统一处理流水线来搜索属于无序网络接口的持久性列表条目,以及搜索属于有序网络接口的条目。nic还可以以有效的方式使用“紧迫”协议或“约定”协议来处理mpi消息。
19.一个实施例提供了一种能够执行mpi列表匹配的nic。nic可以包括主机接口、网络接口和硬件lpe。主机接口可以将nic耦接到主机设备。网络接口可以将nic耦接到网络。在操作期间,lpe可以接收匹配请求,并基于所接收的匹配请求执行mpi列表匹配。
20.在关于这个实施例的变型中,匹配请求可以包括对应于经由主机接口接收的命令的匹配请求、或者对应于经由网络接口接收的消息的匹配请求。
21.在另外的变型中,nic可以包括用于对应于所接收的命令的匹配请求的第一组匹配请求队列和用于对应于所接收的消息的匹配请求的第二组匹配请求队列。第一组或第二组匹配请求队列中的队列的数目对应于由nic支持的物理端点的数目。
22.在另外的变化中,消息是mpi消息。
23.在另外的变化中,该消息基于与mpi相关联的紧迫协议或约定协议。
24.在关于这个实施例的变型中,硬件列表处理引擎可以包括多个处理元件;并且相应的处理元件包括多个匹配引擎和存储一个或多个列表的多个存储体,其中存储体使用交叉开关与匹配引擎互连。
25.在另外的变型中,相应的匹配引擎可以包括用于搜索一个或多个列表的统一搜索流水线,并且一个或多个列表可以包括优先级列表和意外列表。
26.在另外的变型中,相应的匹配引擎可以包括单个流水线级,以并行地执行对先前匹配请求的匹配操作和用于确定当前读取或写入地址的计算。
27.在关于这个实施例的变型中,硬件列表处理引擎可以包括持久性列表条目缓存以存储先前匹配的列表条目,从而实现快速搜索。
28.在关于这个实施例的变型中,列表处理引擎可以在多个列表中执行原子搜索操作。
29.在本公开中,结合图1的描述与网络架构相关联,并且结合图2a及其后的描述提供了关于与支持高效mpi列表匹配的nic相关联的架构和操作的更多细节。
30.图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将流量递送到目的边缘设备。
31.示例性nic架构
32.图2a示出了具有多个nic的示例性nic芯片。参考图1中的示例,nic芯片200可以是针对主机116设计以与交换机结构100一起工作的定制专用集成电路(asic)。在这个示例中,芯片200可以提供两个独立的nic 202和204。芯片200的相应nic可以配备有主机接口(hi)(例如,用于连接到主机处理器的接口)和一个高速网络接口(hni),用于与耦接到图1的交换机结构100的链路通信。例如,nic 202可以包括hi210和hni 220,并且nic 204可以包括hi 211和hni 221。
33.在一些实施例中,hi 210可以是外围组件互连(pci)或快速外围组件互连(pcie)接口。hi 210可以通过主机连接201耦接到主机,该主机连接可以包括能够以高达每通道25gbps的信令速率操作的n个(例如,在一些芯片中,n可以是16)pcie gen 4通道。hni 210可以促进高速网络连接203,该高速网络连接可以与图1的交换机结构100中的链路通信。hni 210可以使用m个(例如,在某些芯片中m可以是4)全双工串行通道以100gbps或200gbps的聚合速率操作。m个通道中的每一个可以分别基于非归零(nrz)调制或脉冲振幅调制4(pam4)以25gbps或50gbps操作。hni 220可以支持电气和电子工程师协会(ieee)802.3基于以太网的协议,以及支持更高速率的小消息的增强帧格式。
34.nic 202可以支持以下中的一个或多个:基于消息传递接口(mpi)的点对点消息传递、远程存储器访问(rma)操作、批量数据集合操作的卸载和进度、以及以太网数据包处理。当主机发出mpi消息时,nic 202可以匹配相对应的消息类型。另外,nic 202可以为mpi实施紧迫协议和约定协议,从而从主机卸载相对应的操作。
35.另外,由nic 202支持的rma操作可以包括put、get和原子存储器操作(amo)。nic 202可以提供可靠的运输。例如,如果nic 202是源nic,则nic 202可以为幂等性操作提供重试机制。另外,基于连接的错误检测和重试机制可以用于可能操纵目标状态的有序操作。nic 202的硬件可以保持重试机制所需的状态。以这样的方式,nic 202可以消除来自主机(例如软件)的负担。规定重试机制的策略可以由主机通过驱动软件指定,从而确保nic 202中的灵活性。
36.另外,nic 202可以促进触发操作、用于卸载的通用机制以及依赖性操作序列(诸如批量数据集合)的进度。nic 202可以支持促进由图1的交换机结构100向主机116上运行的应用提供结构通信服务的应用编程接口(api)(例如,libfabric api)。nic 202还可以支持低级网络编程接口,诸如portals api。此外,nic 202可以提供高效的以太网数据包处理,这在nic 202是发送方的情况下可以包括高效传输、在nic 202是目标方的情况下包括流引导、以及校验和计算。而且,nic 202可以支持虚拟化(例如,使用容器或虚拟机)。
37.图2b示出了nic的示例性架构。在nic 202中,hni 220的端口宏可以促进低级以太网操作,诸如物理编码子层(pcs)和媒体访问控制(mac)。此外,nic 202可以支持链路层重试(llr)。进入的数据包可以由解析器228解析并存储在缓冲器229中。缓冲器229可以是被提供用于缓冲阈值量(例如,1微秒)的延迟带宽的pfc缓冲器。hni 220还可以包括分别用于
管理出来的和进入的数据包的控制发送单元224和控制接收单元226。
38.nic 202可以包括命令队列(cq)单元230。cq单元230可以负责获取和发布主机侧命令。cq单元230可以包括命令队列232和调度器234。命令队列232可以包括分别用于发起者命令(put、get等)和目标命令(append、search等)的两个独立组的队列。命令队列232可以被实施为循环缓冲器。在一些实施例中,命令队列232可以保持在主机的主存储器中。运行在主机上的应用可以直接写入命令队列232。调度器234可以包括分别用于发起者命令和目标命令的两个分离的调度器。基于散列函数,发起者命令被分类到流队列236中。流队列236中的一个可以被分配给唯一的流。另外,cq单元230还可以包括负责排队和分派所触发的命令的触发操作模块(或逻辑块)238。
39.出站传送引擎(oxe)240可以从流队列236中拉取命令,以便处理它们以进行分派。oxe 240可以包括地址转换请求单元(atru)244,该地址转换请求单元可以向地址转换单元(atu)212发送地址转换请求。atu 212可以代表不同的引擎(诸如oxe 240、入站传送引擎(ixe)250和事件引擎(ee)216)提供虚拟到物理地址转换。atu 212可以保持大的转换缓存214。atu 212既可以自己执行转换,也可以使用基于主机的地址转换服务(ats)。oxe 240还可以包括消息切分单元(mcu)246,该消息切分单元可以将大的消息分割成对应于最大传输单元(mtu)的大小的数据包。mcu 246可以包括多个mcu模块。当mcu模块变得可用时,mcu模块可以从所分配的流队列中获得下一命令。所接收的数据可以被写入到数据缓冲器242中。然后,mcu模块可以向流量整形器248发送数据包报头、相对应的流量类别和数据包大小。整形器248可以确定由mcu 246呈现的哪些请求可以前进到网络。
40.随后,所选择的数据包可以被发送到数据包和连接跟踪(pct)270。pct 270可以将数据包存储在队列274中。pct 270还可以保持用于出站命令的状态信息,并在返回响应时更新状态信息。pct 270还可以保持数据包状态信息(例如,允许响应与请求相匹配)、消息状态信息(例如,跟踪多数据包消息的进度)、发起者完成状态信息和重试状态信息(例如,保持如果请求或响应丢失的情况下重试命令所需的信息)。如果在阈值时间内没有返回响应,则相对应的命令可以存储在重试缓冲器272中。pct 270可以分别基于源表276和目标表278促进用于发起者和目标命令的连接管理。例如,pct 270可以更新其源表276,以跟踪可靠递送数据包和消息完成通知的必要状态。pct 270可以将出站数据包转发到hni 220,该hni 220将数据包存储在出站队列222中。
41.nic 202还可以包括ixe 250,如果nic 202是目标或目的地,则该ixe 250提供数据包处理。ixe 250可以从hni 220获得输入数据包。解析器256可以解析进入的数据包,并将相对应的数据包信息传递给列表处理引擎(lpe)264或消息状态表(mst)266以便进行匹配。lpe 264可以将进入的消息匹配到缓冲器。lpe 264可以确定每个消息要使用的缓冲器和起始地址。lpe 264还可以管理用于表示缓冲器和意外消息的列表条目262的池。mst 266可以存储匹配结果和生成目标侧完成事件所需的信息。mst 266可以被不受限制的操作使用,包括多数据包put命令以及单数据包和多数据包get命令。
42.随后,解析器256可以将数据包存储在数据包缓冲器254中。ixe 250可以获得用于冲突检查的匹配结果。然后,dma写入和amo模块252可以向存储器发出由写入和amo操作生成的更新。如果数据包包括生成目标侧存储器读取操作的命令(例如,get响应),则该数据包可以被传递到oxe 240。nic 202还可以包括事件引擎(ee)216,该ee 216可以从nic 202
中的其他模块或单元接收生成事件通知的请求。事件通知可以指定生成填充事件或计数事件。ee 216可以管理位于主机处理器存储器内的事件队列,它将完整的事件写入该队列。ee 216可以将计数事件转发给cq单元230。
43.mpi列表匹配
44.在mpi中,发送/接收操作以包络进行标识,该包络可以包括许多参数,诸如源、目的地、消息id和通信器。包络可以用于将给定的消息匹配到其对应的用户缓冲器。由给定过程发布的整个缓冲器列表可以称为匹配列表,并且对于给定缓冲器从匹配列表中找到相对应的缓冲器的过程称为列表匹配或标签匹配。
45.在一些实施例中,nic可以提供mpi列表匹配的硬件加速,并且nic中的列表处理引擎可以包括多个(例如,2048个)物理端点。每个物理端点可以包括四个列表:“优先级”、“溢位”、“意外”和“软件请求”。软件请求列表可以提供从硬件卸载到软件管理列表的平稳过渡。优先级、溢位和请求列表包含包括了匹配标准和存储器描述符信息的条目。意外列表包含尚未针对其预先设置列表条目的消息的报头信息。nic的lpe块可以包括用于多个(例如64k个)列表条目的存储器存储,这些条目在匹配条目(用于匹配接口)、列表条目(用于非匹配接口)和意外列表条目当中进行划分。
46.在一些实施例中,nic的lpe模块可以被划分为多个(例如,四个)处理引擎,从而使lpe能够在应用或工作负载中利用过程级并行性。每个处理引擎可以访问列表条目的子集。例如,如果lpe块包括总共64k个列表条目并且存在四个处理引擎,则每个处理引擎可以访问16k个列表条目。软件可以负责将物理端点分配给处理引擎,以提供负载平衡。
47.lpe可以包括两个列表匹配接口:一个接口从cq单元接收目标侧命令,以及另一个接口从ixe接收消息匹配请求。ixe向lpe发送每个消息的第一个数据包;lpe搜索适当的列表。如果找到匹配的条目,其可以被取消链路并被返回ixe;否则,报头可能被追加到意外列表。根据物理端点的设置,每个接口可以被称为匹配或不匹配。在这两种情况下,cq命令请求和ixe网络请求被称为匹配请求。
48.在一些实施例中,用于mpi的接口可以被初始化为处于禁用状态。进入的流量的消息匹配仅在硬件卸载状态下发生。更具体地说,处理引擎可以执行在优先级、溢位和意外列表中的原子搜索和删除与搜索操作。在搜索期间,处理引擎可以将列表操作分派给正确的匹配单元。
49.图3a示出了处理引擎的示例性架构。在这个示例中,处理引擎300可以包括多个匹配引擎(例如,匹配引擎302和304)和四个存储体(例如,存储体306、308、310和312)。
50.在一些实施例中,处理引擎300可以包括多达八个匹配引擎。可以使用交叉开关将存储体互连到匹配引擎,以最小化存储体冲突并获得匹配引擎的高并行性和利用率。每个匹配引擎可以为处理引擎300中的任何存储体生成存储器地址。多个匹配引擎(例如,匹配引擎302和304)彼此独立地操作。然而,这些多个匹配引擎需要仲裁对存储器体的访问。
51.图3b示出了匹配引擎的示例性操作流水线。匹配引擎流水线320可以包括多个阶段,即,设置阶段322、读取地址和匹配阶段324、读取数据阶段326、正确读取数据阶段328、多路匹配条目阶段330、写入地址阶段332和数据写入阶段334。
52.在设置阶段322,匹配引擎从就绪请求队列(rrq)捕获匹配请求信息。在读取地址和匹配阶段324,匹配引擎发起每个存储体中的读取请求。每个匹配引擎可以具有决定进行
读取请求还是写入请求以及向哪个存储体进行的逻辑。在一些实施例中,每个存储体可以具有用于选择匹配引擎和多路复用地址的仲裁器。注意,如果存在八个并行匹配引擎,则仲裁器可以是8:1仲裁器。与读取地址计算并行,读取地址和匹配阶段324还检查在前一匹配条目上是否存在匹配。如果存在,则它准备写入更新(计算新的偏移量或删除条目)。然后在写入地址阶段332和数据写入阶段334将地址和数据寄存到存储体。在写入地址阶段332,匹配引擎开始写入访问;并且在数据写入阶段334,匹配引擎完成写入操作。
53.在读取数据阶段326,读取的数据被记录在每个存储体的输出上。在正确读取数据阶段328,读取数据在存储体处被校正。在多路匹配条目阶段330,每个匹配引擎处的多路复用器捕获匹配条目,其包括新的当前地址。执行多个内部循环,其中每个循环包括读取地址和匹配阶段324、读取数据阶段326、正确读取数据阶段328和多路匹配条目阶段330。对于具有四个存储体的情况,匹配引擎流水线320可以包括四个循环。每个匹配引擎都包含用于保存每个操作的结果的空间。仲裁器从多个匹配引擎中选择结果以发送到输出仲裁器块。当输出仲裁器块消耗结果时,产生该结果的匹配引擎可以从rrq获取另一命令。
54.图3b中示出的流水线可以提供多个优点。首先,匹配尝试流水线阶段和匹配终止条件(例如,读取地址和匹配阶段324)之间的重叠可以减少匹配引擎中的延迟。第二,流水线320可以提供用于搜索优先级和意外列表以及用于网络搜索和主机追加命令的统一搜索流水线。
55.在一些实施例中,为了增加并行性并避免被端点和流量类别阻塞,nic可以通过分离队列来提供列表匹配加速,其中每个端点网络接口具有自己的队列。更具体地,匹配请求队列确保,对于匹配接口,一次每个物理端点只处理一个操作;对于不匹配的接口,可以允许对某些持久性列表条目的并发访问。在物理端点中,命令请求需要以它们到达的顺序执行,并且网络匹配请求需要以它们到达的顺序执行。但是,命令和网络请求之间没有排序要求。分离的队列还确保来自一个物理端点的请求不会被来自另一物理端点的请求阻塞。类似地,一个流量类别中的请求不能阻止其他流量类别中的请求。
56.图4a示出了示例性的匹配请求队列。匹配请求排队块400可以包括两列队列。第一列队列包括用于对cq命令排队的cq匹配请求队列(mrq)402和用于对ixe请求排队的ixe匹配请求队列404,其中每个队列通过物理入口索引进行索引。每个物理端点对应于cq匹配请求队列和ixe匹配请求队列。对于支持2048个物理端点的nic,cq匹配请求队列402可以包括2048个cq匹配请求队列,并且ixe匹配请求队列404可以包括2048个ixe匹配请求队列。
57.一个或多个仲裁器406可以用于在cq匹配请求队列402和ixe匹配请求队列404之间进行选择,并在每种类型的队列中的多个队列之间进行选择。在一些实施例中,标准仲裁机制(例如,循环(round

robin))可以用于仲裁。
58.当匹配请求从这些队列中的一个出列时,检查查找表408以确定用于物理入口索引的处理引擎(pe)。查找表408可以是保存用于每个物理端点的处理引擎号的触发器阵列,并且可以并行访问。然后,匹配请求被排队到属于第二列队列(处理引擎/流量类别(pe/tc)mrq 410)的适当的处理引擎/流量类别匹配请求队列中,除非它是在持久性列表条目(le)缓存(plec)412中匹配的ixe请求。plec 412的详细讨论如下。仲裁器414可以在pe/tc mrq 410中进行选择,并且多路复用器416可以多路复用仲裁器414和plec 412的输出。
59.在一些实施例中,为了另外提高列表匹配速度,系统还可以使用统一处理流水线
来搜索属于无序网络接口的持久性列表条目以及搜索属于有序网络接口的条目。更具体地,plec实现非常快速的一个单元延迟查找。
60.图4b示出了持久性列表条目缓存(plec)的示例性框图。plec存储了在物理门户索引方面相匹配的大量条目(例如,最多256个)。当物理端点在缓存中有条目时,plec允许其物理端点匹配请求队列在没有阻塞的情况下以全速出列。
61.当对于在plec中匹配的物理端点ixe匹配请求队列(mrq)出列时,plec将列表条目(le)转发到存储匹配请求的存储器块。当cq mrq出列时或者当ixe mrq出列并且在plec未命中时,为物理端点设置阻塞位。plec为每个物理端点保持阻塞位,从而确保匹配的请求和命令被原子地处理,而与合格的持久性列表条目不匹配的ixe请求在不被阻塞的情况下被满足。
62.在将在plec的缓存中匹配的ixe请求排队到处理引擎/流量类别队列之前,plec拦截这些ixe请求。当从缓存复制持久性列表条目时,在该周期中不从处理引擎/流量类别队列发起出列使得持久性链路条目(le)可以通过流水线前进到物理端点的存储器。更具体地,当plec命中发生时,从pe/tc mrq出列被抑制以便在流水线中产生冒泡。在读取plec存储器(即le缓存)时出列被抑制,使得在出现冒泡时plec数据可用。来自plec的le及其匹配请求id可以被转发到物理端点的存储器块。
63.plec从处理引擎接收分配和取消分配请求。当处理引擎将网络请求与优先级列表上的永久性le匹配时,分配请求到达,该优先级列表在不匹配的非空间检查物理端点中禁用与数据包匹配相关的事件。对命中plec中的现有条目的物理端点的分配请求没有效果。否则,条目被分配。如果缓存已满,则使用循环选择来逐出条目。当处理引擎取消可缓存列表条目的链路时,它向plec发送取消分配请求。如果plec包含具有匹配的物理端点的条目,则plec驱逐相应的条目。
64.nic上的lpe块在处理mpi消息中起着重要作用。如前所讨论那样,mpi实施了用于处理小消息的“紧迫”协议和用于处理大消息的“约定”协议。更具体地,紧迫意味着数据与put命令(消息)一起发送。系统软件为紧迫消息设置上限。对于大小超过紧迫消息的限制的消息,mpi要求使用约定协议发送消息。
65.在紧迫协议的软件实施方式中,数据被递送到系统缓冲器,数据必须从系统缓冲器复制到用户缓冲器。虽然这种方法减少了同步,但在存储器容量和存储器带宽方面很昂贵。在一些实施例中,在可以快速确定目标地址的情况下,nic可以提供将紧迫消息直接写入到用户的缓冲器的机制。
66.更具体地,当lpe接收第一个请求数据包(其包含mpi消息包络)时,它针对匹配缓冲器搜索物理端点的优先级列表。匹配可以基于源、消息中携带的一组匹配位、以及特定于缓冲器的匹配和忽略位来执行。匹配的列表条目由包含起始地址、长度、转换上下文和put数据(即,紧迫消息)被写入其中的各种属性的信息组成,从而允许直接存储器访问(dma)分派逻辑将数据直接写入到用户缓冲器。如果在优先级列表中没有找到匹配,则lpe将搜索溢位列表以获得它可以将put数据写入其中的存储器参数的描述,并将描述消息的列表条目追加到意外列表。
67.在约定协议的软件实施方式中,大容量数据传送被延迟,直到知道目标地址。虽然这种方法减少了系统存储器的使用,但它需要软件干预以确保进度。在一些实施例中,约定
协议被卸载到nic,从而提供强有力的进展。
68.更具体地,当传送较大的mpi消息时,发起者可以发送包含用于匹配的mpi包络和适量的紧迫数据的较小的初始消息。在匹配操作完成后,目标执行get以将大容量数据传送到用户缓冲器。这可以增强网络性能,因为大容量数据是作为无序的get响应递送的。网络可以在逐个数据包的基础上自适应地路由它们。
69.如果约定请求终止于意外列表,则当用户过程发布匹配追加时,将启动get。对于两种情况,约定get的启动是相同的;这是触发启动的约定put请求的匹配的完成。
70.这是有价值的卸载。预期mpi应用在早先发布非阻塞接收,并且然后返回计算。将约定卸载到nic确保了计算和通信的良好重叠。nic执行匹配并异步实例化大容量数据移动,从而提供强有力的进展。
71.图5示出了在nic中执行列表匹配的流程图。在操作期间,nic可以接收匹配请求(操作502)。匹配请求可以是来自cq的用于操纵列表或更新物理端点状态的命令,或者是来自ixe的消息匹配请求。可以基于其类型将匹配请求排队到适当的mrq(操作504)。仲裁器选择mrq以使匹配请求出列(操作506),并将出列的匹配请求发送到查找表(也称为处理引擎映射),以确定用于处理匹配请求的处理引擎(操作508)。该确定可以基于物理入口索引(即物理端点的标识)。
72.匹配请求也被发送到plec(操作510),该plec试图找到匹配(操作512)。响应于在plec中发现的匹配,plec输出匹配条目(操作514)。否则,匹配请求被发送到pe/tc mrq(操作516)。仲裁器选择pe/tc mrq以出列(操作518)。在一些实施例中,仲裁可以在两个步骤中进行。在第一步骤中,使用循环来选择就绪的处理引擎。在第二步骤,可以使用加权的循环仲裁来选择这个处理引擎内的就绪tc,其中每个tc具有预定的权重因子。
73.来自pe/tc mrq的出列请求被发送到相对应的处理引擎,该相对应的处理引擎依次搜索匹配列表条目(操作520)。处理引擎的匹配操作在图3b中示出。
74.示例性计算机系统
75.图6示出了配备促进mpi列表匹配的nic的示例性计算机系统。计算机系统650包括处理器652、存储器设备654和存储设备656。存储器设备654可以包括易失性存储器设备(例如,双列直插式存储器模块(dimm))。另外,计算机系统650可以耦接到键盘662、定点设备664和显示设备666。存储设备656可以存储操作系统670。应用672可以在操作系统670上操作。
76.计算机系统650可以配备有耦接nic 620的主机接口,该nic 620有助于有效的数据请求管理。nic 620可以向计算机系统650提供一个或多个hni。nic 620可以通过nic中的一个耦接到交换机602。如结合图2b所述,nic 620可以包括列表处理逻辑块630。列表处理逻辑块630可以包括存储要处理的匹配请求的匹配请求队列(mrq)逻辑块632、促进快速查找的plec逻辑块634、以及用于将进入的匹配请求与存储在存储体中的列表条目相匹配的处理引擎636。
77.总之,本公开描述了一种促进mpi列表匹配的nic。nic可以包括主机接口、网络接口和硬件lpe。主机接口可以将nic耦接到主机设备。网络接口可以将nic连接到网络。硬件lpe可以实现高速列表匹配。通过在处理引擎内实施多个处理引擎(pe)和多个存储体,可以实现高度并行。因为每个处理引擎或tc分配有自己的队列,所以系统阻止处理引擎或tc阻
塞其他处理引擎或tc的队列。在硬件列表处理引擎中,匹配流水线阶段和匹配终止条件重叠以减少延迟。nic还使得能够卸载mpi消息的处理,包括紧迫消息和约定消息。
78.以上描述的方法和过程可以由硬件逻辑块、模块、逻辑块或装置来执行。硬件逻辑块、模块或装置可以包括但不限于专用集成电路(asic)芯片、现场可编程门阵列(fpga)、在特定时间执行代码块的专用或共享处理器、以及现在已知或以后开发的其他可编程逻辑器件。当硬件逻辑块、模块或装置被激活时,它们执行包含在它们中的方法和过程。
79.本文描述的方法和过程也可以实现为代码或数据,该代码或数据可以存储在存储设备或计算机可读存储介质中。当处理器读取并执行所存储的代码或数据时,处理器可以执行这些方法和过程。
80.对本发明的实施例的前述描述仅出于说明和描述的目的而呈现。它们并不旨在是穷举性或将本发明限制于所公开的形式。因此,许多修改和变化对于本领域技术人员来说是显而易见的。附加地,以上公开并不旨在限制本发明。本发明的范围由所附权利要求限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献