共享的发送队列的制作方法

文档序号:6485341阅读:150来源:国知局
共享的发送队列的制作方法
【专利摘要】通常,本
【发明内容】
涉及连网系统中共享的发送队列。方法、设备和系统配置成使用共享发送队列支持多个可靠通信信道。可靠通信信道配置成将消息从主机携带到多个目的地,并且确保消息的完整顺序与传送顺序有关。
【专利说明】共享的发送队列
【技术领域】
[0001]本公开内容涉及用于连网系统的共享的发送队列。
【背景技术】
[0002]在连网系统中,一个或更多个主机(例如,服务器)可通过网络与一个或更多个目的地装置(例如,客户端和/或其它服务器)进行通信。用于通过网络的通信的规则和数据格式一般由通信协议定义。此类协议的示例包括以太网和因特网协议族(TCP/IP)。一般情况下,主机(来源端点)中的网络控制器和每个目的地装置(目的地端点)中的网络控制器管理通过网络的消息的传送和接收,消息包括在主机与目的地装置之间的控制和/或数据。通信可无连接,或者可具有可靠连接性(确认的无错传送和有序(in-order)交付)。
[0003]可靠连接(RC)是配置成在主机与目的地装置之间提供可靠连接性的传输模式。在常规系统中,一般通过在主机上分配队列对(QP)来建立RC。在一些协议中,QP包括主机接口(发送队列)和配置成使用可靠性协议通过网络为QP提供可靠服务的实体。例如,InfiniBand标准包括可靠性协议。在另一示例中,iWARP配置成使用TCP提供可靠性服务。可靠服务配置成在主机与目的地之间提供消息的无错传送和有序交付。
[0004]可靠服务包括由配置成产生消息从主机到目的地装置的无错传送和有序交付的主机和目的地装置均执行的功能。主机配置成以消息发布到发送队列的顺序传送消息,识别和重新传送目的地端点未成功收到的消息和/或分组,以及完成目的地确认收到的有序消息。目的地端点配置成验证和处理收到的消息和/或分组,为主机提供有关收到和处理的消息的指示,以及有序交付收到的消息和/或分组(与传送顺序对应的交付顺序)。
[0005]在一些情况下,可能希望在主机处理器上运行的应用与多个目的地装置进行通信。在典型的可靠连接配置中,将在主机中分配一个或更多个专用QP,并且将为每个目的地装置建立可靠连接。软件中间方可在多个可靠连接(与相关联目的地装置)之间复用消息。通过软件的此类复用能够大幅增加通信处理开销。
【专利附图】

【附图说明】
[0006]从下面与所述主题一致的实施例的详细描述中,将明白所要求保护的主题的特征和优点,描述应参照附图理解,其中:
图1示出与本公开内容一致的一个示范系统实施例;
图2示出与本公开内容一致,包括共享的发送队列的通信子系统的示例;
图3A和3B示出与本公开内容一致,配置成管理用于通过多个可靠通信信道将多个消息传送到多个目的地的共享的发送队列的通信装置的两个示范实施例;
图4A和4B是示范流程图,示出用于使用共享的发送队列和保持用于共享的发送队列的传送顺序,通过多个可靠通信信道将多个消息传送到多个目的地装置的主机系统和通信装置的操作;
图5A和5B是另外的示范流程图,示出用于使用共享的发送队列和保持用于每个可靠通信信道的传送顺序,通过多个可靠通信信道将多个消息传送到多个目的地装置的主机系统和通信装置的操作;
图6是为与本公开内容一致的图3A所示实施例示出用于多个可靠通信信道的共享的发送队列的传送历史信息库中的条目和在共享的发送队列中的条目的示例;以及
图7是为与本公开内容一致的图3B所示实施例示出用于多个可靠通信信道的共享的发送队列的传送历史信息库中的条目和在共享的发送队列中的条目的示例。
[0007]虽然以下具体实施例将参照说明性实施例继续,但其许多备选、修改和变化将为本领域技术人员所明白。
【具体实施方式】
[0008]通常,本公开内容涉及连网系统中共享的发送队列。方法和系统配置成使用共享发送队列支持多个可靠通信信道。共享的发送队列配置成允许应用通过多个可靠通信信道与多个远程目的地进行通信的应用。与典型示范每可靠通信信道发送队列不同,共享的发送队列与可靠通信信道“去耦合”。诸如网络控制器等通信装置配置成管理通过多个可靠通信信道的通信。
[0009]方法和系统配置成允许第一多个未解决消息在某个时间点与共享的发送队列相关联。方法和系统还配置成允许第二多个未解决的消息在某个时间点与可靠通信信道相关联。这与在任何时间点将发送队列和通信信道限制到一个未解决消息的一些常规系统不同。在本文中使用时,未解决消息对应于已传送但尚未完成的消息。在一个实施例中,发布到共享的发送队列的工作队列元素的完成顺序对应于与用于共享的发送队列的工作队列元素对应的消息的传送顺序。在另一实施例中,发布到共享的发送队列的工作队列元素的完成顺序对应于在每可靠通信信道基础上消息的传送顺序(即,与其它可靠通信信道无关)。在这两个实施例中,如本文中所述,传送顺序与工作队列元素到共享的发送队列的发布顺序有关。
[0010]在本文中使用时,可靠通信信道是配置成在两个端点之间提供可靠端对端连接性的服务(例如由网络控制器提供),包括在端点之间数据的无错传送和在目的地端点数据的有序交付。可靠通信信道配置成将消息从主机(来源端点)传送到多个目的地(目的地端点),其中,每个可靠通信信道配置成在一对端点之间提供可靠服务。可靠通信信道配置成确保消息的完成顺序对应于传送顺序。“完成”在本文中使用时指所有消息数据可靠地传送到目的地端点,并且其接收已得到确认(例如,通过确认)。
[0011]在常规系统(S卩,每连接单个发送队列)中,分配的QP专用于两个端点之间的一个相关联可靠连接。将工作队列请求发布到特定发送队列对应于使用相关联的可靠连接的消息的传输。在与本公开内容一致的方法和系统中,共享的发送队列配置成与在主机(来源端点)与多个目的地端点之间的多个可靠通信信道一起进行使用。与本公开内容一致的工作队列元素可包括配置成识别要用于传输相关联消息的可靠通信信道的描述符。
[0012]应用有数据要传送时,应用可发布工作请求。工作请求可转换成放置在发送队列(即,用于提交要传送的“工作”的工作队列)中的工作队列元素(WQE)。发送队列中WQE的顺序一般对应于WQE提交到发送队列的顺序和可传送相关联消息的顺序。
[0013]每个WQE —般包括描述要传送的消息的控制信息和识别要传送的数据(消息有效负载)及其相关联应用缓冲区(buffer)的描述符(数据描述符)。在常规发送队列中,每个发送队列与相应可靠连接相关联,可靠连接配置成提供可靠服务,因此在WQE中不可识别特定可靠连接。与本公开内容一致的共享的发送队列可与多个可靠通信信道相关联。因此,发布到共享的发送队列的WQE可包括配置成将WQE与传送识别的消息(包括有效负载)应使用的可靠通信信道相关联的描述符(可靠通信信道描述符)。
[0014]发布WQE配置成通知通信装置要发送的消息(和数据)。与本公开内容一致的通信装置配置成读取发布到共享的发送队列的WQE,并且使用控制信息、数据描述符和可靠通信信道描述符生成协议消息。消息可根据类型、控制信息和有效负载而不同。通信协议可限制可传送的分组大小(最大分组大小)。如果消息大小超过最大分组大小,则消息可被分段成多个分组以用于传送。多个分组随后可在目的地重组成原消息。发布到共享的发送队列的WQE可在整个相关联消息已成功传送,并且消息接收已得到目的地确认后才完成。
[0015]通信装置配置成管理完成以消息传送顺序到应用的传递。这样,与管理通过多个可靠通信信道在应用与多个目的地之间的通信的操作系统相关联的开销可得以避免。因此,与软件相关联的速度损失也可得以避免。有利的是,诸如存储控制器等伴随装置随后可经与本公开内容一致的通信装置,通过多个可靠通信信道与多个目的地进行通信,而不要求多个发送队列(即,不要求用于每个可靠通信信道的发送队列)。因此,队列存储容量有限的伴随装置可与多个目的地进行通信,其中,专用发送队列的数量将超过伴随装置的队列存储容量。
[0016]图1不出与本公开内容一致的一个不范系统实施例。系统100 —般包括主机系统102、网络116、多个存储装置118A、118B、…、118N和多个目的地装置120A、120B、…、120N。每个目的地装置120A、120B、…、120N可包括配置成提供网络116接入到目的地装置120A、120B、…、120N的相应网络控制器130A、130B、…、130N。例如,主机系统102可配置成接收来自一个或更多个目的地装置120A、120B、…、120N的访问在一个或更多个存储装置118A、118B、…、118N中存储的数据的请求。主机系统102因而可配置成通过网络116提供请求的数据到一个或更多个目的地装置120A、120B、…、120N。
[0017]主机系统102—般包括主机处理器、主机CPU 104、系统存储器106、桥芯片集108、网络控制器Iio及存储控制器114。主机CPU 104耦合到系统存储器106和桥芯片集108。在一些实施例中,桥芯片集可包括在主机CPU 104中。桥芯片集108耦合到系统存储器106、网络控制器110和存储控制器114。存储控制器114经桥芯片集108耦合到网络控制器110。桥芯片集108可在存储控制器114与网络控制器110之间提供对等连接性。在一些实施例中,可集成网络控制器110和存储控制器114。网络控制器110配置成为主机系统102提供网络连接性。
[0018]网络控制器110(经SSQ管理引擎112)配置成管理在主机102与目的地装置120A、120B、…、120N之间消息的传送和接收。网络控制器110可配置成在主机102与目的地装置120A、120B、…、120N之间提供可靠通信信道。网络控制器110可配置成实现可靠服务。配置成提供可靠服务的通信协议的示例包括但不限于Infiniband可靠连接协议、iWARP [因特网宽域RDMA (远程直接存储器存取)协议]协议或TOE (TCP卸载引擎)协议。这些协议配置成通过网络控制器提供可靠服务,网络控制器配置成提供传输层服务,如可靠分组交付和有序消息完成。可靠分组交付包括重新发送丢失或损坏的分组,以及如果多次重试不成功,则通过信号指示错误。
[0019]通过使用这些协议,网络控制器110配置成管理可靠通信信道而无需主机OS (操作系统)的干预,也无需多次复制传送(和收到)的数据,同时确保完成有序传递到发送应用。换而言之,通过使用这些协议,通过从CPU卸载传输层处理,消除不必要的缓冲以及降低OS调用和上下文交换,降低了 CPU开销、存储器带宽利用和等待时间。此外,与本公开内容一致的共享的发送队列的实现不要求物理层更改,从而有利于与任何标准协议符合的通信装置进行通信。
[0020]系统存储器106配置成存储操作系统OS 105、应用107和一个或更多个应用数据缓冲区。如本文中所述,系统存储器106配置成存储共享的发送队列(SSQ) 122。系统存储器可配置成存储共享的接收队列(SRQ) 124。在一实施例中,网络控制器110可配置成存储共享的发送队列122和/或共享的接收队列124。在另一实施例中,存储控制器114可配置成存储共享的发送队列122和/或共享的接收队列124。在一些实施例中,存储控制器114可与网络控制器110集成。如本文中所述,共享的发送队列122 (和共享的接收队列124)可与多个可靠通信信道一起使用。共享的发送队列122可由SSQ管理引擎112管理。SSQ管理引擎112可包括在网络控制器110中。共享的接收队列124可由SSQ管理引擎112或类似的SRQ管理引擎管理。
[0021]存储控制器114耦合到一个或更多个存储装置118A、118B、…、118N。存储控制器114配置成向/从存储装置118A、118B、…、118N存储和检索数据。响应来自目的地装置120A、120B、…、120N和/或在主机CPU 104上运行的应用的请求,可存储/检索数据。
[0022]图2示出与本公开内容一致的通信子系统200的示例。通信子系统200包括图1的共享的发送 队列122和共享的接收队列124、伴随装置202、通信装置204、多个可靠传送通信信道206、多个接收通信信道208、网络210及多个目的地装置212A、212B、…、212N。通信装置204包括SSQ管理引擎214。应注意的是,图2中的箭头指示数据(消息)传送的方向。确认及诸如此类可在反方向上在相同可靠通信信道上传送。因此,传送可靠通信信道206和接收通信信道208是双向的。例如,如本文中所述,伴随装置202可以是存储控制器,并且通信装置204可以是网络控制器。继续此示例,SSQ 122可用于经多个可靠通信信道206将存储控制器202耦合到多个目的地装置212A、212B、…、212N。随后,可经多个可靠通信信道206将消息(可包括数据)从一个或更多个存储装置传送到目的地装置212A、212B、…、212N而不要求多个发送队列。如本文中所述,SSQ管理引擎214配置成管理共享的发送队列122,使得消息完成以与消息传送的顺序对应的顺序提供。SSQ管理引擎214可配置成管理共享的接收队列124。
[0023]有利的是,与本公开内容一致的共享的发送队列的实现不限制用于可靠通信信道的未解决消息的数量(在某个时间点)、消息大小,也不限制执行的操作。另外或备选,用于共享的发送队列的未解决消息的数量(在某个时间点)可只受共享的发送队列的容量限制。例如,第一多个未解决的消息可与共享的发送队列相关联。在另一示例中,第二多个未解决的消息可与可靠通信信道相关联。这与将发送队列和通信信道限制到一个未解决消息的一些常规系统不同。例如,对于iWARP RDMA (远程直接存储器存取),可使用与本公开内容一致的共享的发送队列,执行iWARP标准定义的所有操作。共享的发送队列和共享的接收队列的使用可允许多个目的地装置超过伴随装置(例如,存储控制器)的多个接口队列,而不要求主机OS (软件)干预。例如,对于存储控制器伴随装置,用于网络控制器的共享的接收队列可映射到存储控制器的提交队列,并且存储控制器的完成队列可映射到网络控制器的共享的发送队列。因此,在使用专用可靠通信信道的同时,多个目的地装置可共享存储控制器提交队列和完成队列。这允许向本地和远程目的地显露存储控制器,而不要求存储控制器对较大数量的提交队列和完成队列的支持。
[0024]图3A和3B示出与本公开内容一致的通信装置(例如,网络控制器110)的两个示范实施例302、304,通信装置配置成管理由应用用于消息通过多个可靠通信信道的传送的共享的发送队列。通信装置302、304包括多个信道传送历史信息库(XmitFIFO) 312A、312B、…、312M,其中,每个信道传送历史信息库与相应可靠通信信道RC1、RC2、…、RCm相关联。例如,RCl Xmit FIFO与可靠通信信道RCl相关联,RC2 Xmit FIFO与可靠通信信道RC2相关联等等。每个可靠通信信道RCl、RC2、"^RCm与相应目的地相关联。每个可靠通信信道RC1、RC2、…、RCm对应于在主机与相应目的地装置之间已建立的可靠通信信道。每个信道传送历史信息库312A、312B、…、312M配置成确保经相应可靠通信信道RC1、RC2、…、RCm传送的消息以用于该可靠通信信道的顺序完成。
[0025]每个信道传送历史信息库312A、312B、…、312M配置成跟踪已在相关联可靠通信信道上传送但尚未完成的消息。传送历史信息库312A、312B、…、312M配置成存储用于完成或重新传送未解决消息的跟踪信息。例如,RCl Xmit FIFO 312A配置成跟踪在可靠通信信道RCl上传送的消息,RC2 Xmit FIFO 312B配置成跟踪在可靠通信信道RC2上传送的消息等等。每个信道传送历史信息库312A、312B、…、312M还配置成确保消息以与在相关联可靠通信信道上传送它们的顺序对应的顺序完成。例如,RCl Xmit FIFO 312A配置成确保在可靠通信信道RCl上传送的消息以与传送它们的顺序对应的顺序完成。
[0026]转到图3A,在此实施例中,通信装置302还包括SSQ传送历史信息库(SSQ XmitFIFO) 314。SSQXmit FIFO 314耦合在信道传送历史信息库312A、312B、…、312M与共享的发送队列SSQ 316之间。每个信道传送历史信息库312A、312B、…、312M中的每个条目可与SSQ传送历史信息库314中的相应条目相关联。SSQ传送历史信息库314配置成确保经多个可靠通信信道RC1、RC2、…和RCm传送的消息以它们发布到共享的发送队列316的顺序完成。
[0027]与相应信道传送历史信息库312A、312B、…或312M条目对应的消息的完成可不一定促使相关联SSQ传送历史信息库314条目的完成。例如,用于一个可靠通信信道的信道传送历史信息库条目可相对于用于其它可靠通信信道的信道传送历史信息库条目失序地完成。在此实施例中,SSQ传送历史信息库条目配置成有序地完成。换而言之,SSQ传送历史信息库条目可只在前一(以发布和/或传送顺序)SSQ传送历史信息库条目已完成时才完成。为实现对应于用于SSQ 316中条目的发布顺序的完成顺序,SSQ传送历史信息库条目可在其相关联信道传送历史信息库条目完成时标记有待完成(PendingCompletion)。例如,标记可包括在相关联SSQ传送历史信息库条目中设置待完成比特。通信装置302可配置成监视用于生个SSQ传送历史信息库条目的待完成比特,并且确实以与共享的发送队列316的工作队列元素发布顺序对应的完成顺序完成标记有待完成的SSQ传送历史信息库条目。在此配置中,用于每个可靠通信信道的多个未解决消息(即,等待完成)可受SSQ 316的容量、SSQ传送历史信息库314的最大大小或相关联信道传送历史信息库312A、312B、…、312M的最大大小限制。因此,信道传送历史信息库312Α、312Β、...、312Μ和SSQ传送历史信息库314可与共享的发送队列SSQ 316 一起用于确保传送的消息的完成以它们发布到共享的发送队列316的顺序传递到发送应用。
[0028]现在转到图3Β,在此实施例中,多个信道传送历史信息库312Α、312Β、…、312Μ可耦合到共享的发送队列316。通信装置304可包括多个未解决WQE库320Α、320Β、…、320Μ,其中,每个未解决WQE库与相应传送历史信息库312Α、312Β、…、312Μ相关联。未解决WQE库320Α、320Β、…、320Μ是配置成存储与已发布到SSQ 316的WQE有关的信息的结构。例如,与WQE有关的信息可包括整个WQE、一部分WQE、提供到WQE的其它信息和/或与WQE对应的信息。未解决WQE库320Α、320Β、…、320Μ可以是传送历史信息库312Α、312Β、…、312Μ的扩展。每个未解决WQE库320Α、320Β、…或320Μ可分别作为相关联传送历史信息库312Α、312Β、…或312Μ的一部分管理,或者可单独管理。传送历史信息库312Α、312Β、…、312Μ和未解决WQE库320Α、320Β、...、320Μ配置成在每可靠通信信道基础上提供有序消息完成。换而言之,可为相应可靠通信信道RC1、RC2、…或RCM上传送的消息保持发布到SSQ316的WQE的完成顺序。与相应可靠通信信道相关联的WQE可独立完成,而无论与在其它可靠通信信道上传送的消息相关联的WQE是否已完成。在相应消息完成时,未解决WQE库320Α、320Β、...、320Μ配置成允许在SSQ316中与在相应消息之前传送但尚未完成的其它消息对应的相关联WQE被释放,由此腾出SSQ 316中的空间,允许发布新工作请求。
[0029]在此实施例中,每个WQE的至少一部分可复制到与用于传送与WQE对应的消息的可靠通信信道相关联的相应信道传送历史信息库312Α、312Β、…、312Μ (或由相应信道信道历史信息库312Α、312Β、...、312Μ弓丨用的未解决WQE库320Α、320Β、…、320Μ)。WQE的至少一部分的此副本配置成允许否定确认或未确认和超时分组(和消息)的重新传送。WQE的此副本还配置成允许发 布到SSQ的WQE的有序释放和/或失序地完成。
[0030]SSQ配置成允许应用使用SSQ将多个消息发送到多个目的地端点(而不是多个专用发送队列)。SSQ还配置成允许多个未解决消息(在任何时间点)。在一些情况下,可配置应用,以便发布到SSQ的WQE以用于与发布的WQE相关联的所有可靠通信信道(和目的地端点)的传送顺序完成。在其它情况下,可配置应用,使得在各个目的地端点之间的完成顺序不重要。在这些其它情况下,可希望在相对于各个目的地保持有序地完成的同时,允许WQE相对于不同目的地失序地完成。允许发布到SSQ的WQE相对于不同目的地(及其相关联可靠通信信道)失序地完成可降低目的地间相关性。
[0031]例如,在带有相关联第二目的地和发布到SSQ的相关联第二 WQE的第二消息之前,带有相关联第一目的地和发布到SSQ的相关联第一 WQE的第一消息可在第二消息由第二目的地接收,处理和确认后由第一目的地接收,处理和确认。如果强制实施与用于整个SSQ的传送顺序对应的完成顺序,则在第一 WQE完成前,不能完成第二 WQE,由此在取决于第一目的地和第一可靠通信信道的性能的第二消息完成中带来了延迟。如果只在每可靠通信信道(和各个目的地)基础上强制实施与传送顺序对应的完成顺序,则第二 WQE能够在第一 WQE完成前完成。因此,可降低在各个目的地之间的相关性。
[0032]在发布到SSQ 316的WQE的完成顺序在每可靠通信信道(和每目的地端点)基础上(即,与其它可靠通信信道及其相关联目的地无关)对应于消息的传送顺序时,未解决WQE库320Α、320Β、…、320Μ配置成促进WQE完成。在发布到SSQ 316的WQE完成时,可将它释放,从而允许新工作请求发布到SSQ 316。在允许相对于不同目的地的失序完成时,可不完成在新完成的WQE之前发布到SSQ 316的WQE。在适当传送历史信息库312A、312B、…、312M或未解决WQE库320A、320B、…、320M中存储WQE的至少一部分的副本允许从SSQ 316释放尚未完成的以前发布的WQE。随后,WQE的副本可用于确保可再使用在与释放的WQE对应的SSQ 316中的条目和可靠服务。应注意的是,虽然WQE可在完成之前从SSQ 316释放,但直到WQE已由相应可靠通信信道(使用WQE的副本)完成,相关联数据缓冲区才可被释放。
[0033]在对应信道传送历史信息库312A、312B、…、312M条目完成时,可完成SSQWQE。换而言之,不同于通信装置302,用于相应可靠通信信道的信道传送历史信息库条目的完成可促使用于该可靠通信信道的相关联SSQ WQE的完成,而不考虑与在其它可靠通信信道上传送的消息对应的WQE的完成。
[0034]在操作中,带有数据要传送的应用可向共享的发送队列316发布工作队列元素(WQE)。多个WQE可由应用发布到SSQ 316。每个WQE包括配置成识别要传送的相应数据的描述符。例如,描述符可包括到系统存储器中某个位置的指针和要传送的数据的多个字节。发布到SSQ的每个WQE包括配置成识别应用于传送对应于WQE的消息的可靠通信信道的可靠通信信道标志符。
[0035]通信装置因而配置成以WQE发布到共享的发送队列的顺序传送每个消息。信道传送历史信息库312A、312B、…、312M配置成接收由目的地装置对传送的消息的接收的确认。消息可作为分组的序列传送。对于可靠通信信道,在与消息(与WQE对应)相关联的所有分组已被发送,并且接收已由 目的地装置确认,以及针对相同可靠通信信道的所有以前WQE也已完成时,每个分组可被确认,并且与WQE相关联的传送可完成。
[0036]图4A和4B是示出配置成使用共享的发送队列通过多个可靠通信信道将消息传送到多个目的地装置的主机系统和通信装置(例如,通信装置302)的操作的流程图。图4A和4B所示操作配置成保持用于共享的发送队列(而不是用于一个可靠通信信道),与在共享的发送队列中WQE对应的消息的传送顺序。换而言之,完成顺序对应于跨可靠通信信道的传送顺序。
[0037]图4A和4B的操作可由在主机系统(例如,主机系统102)、通信装置(例如,网络控制器110)、伴随装置(例如,存储控制器114)或其组合上执行的应用执行。在应用具有数据要发送到目的地端点402时,流程图400开始。在操作406,应用可生成工作请求。工作请求可包括描述消息类型和消息属性的控制信息、指示在存储器中要传送的数据存储的位置的描述符、要传送的数据量、与要用于传送的可靠通信信道对应的标志符和/或指示要接收消息的目的地装置的标志符。
[0038]操作410可包括将与工作请求对应的工作队列元素(WQEx)发布到共享的发送队列(SSQ)。工作队列元素可包括可靠通信信道标识符(RCy)。在操作412,可在与RCy对应的可靠通信信道上传送与WQEx对应的消息。在操作414可为WQEx分配与可靠通信信道RCy相关联的传送历史信息库(例如,RCyXmit FIFO)中的位置。在操作416可为WQEx分配与SSQ相关联的传送历史信息库(例如,SSQ Xmit FIFO)中的位置。在操作418,用于可靠通信信道RCy的传送历史信息库(即,RCyXmit FIFO)可与用于共享的发送队列的传送历史信息库(SSQ Xmit FIFO)相关联。流程图400的操作可在返回处420结束。虽然平行示出,但操作412可在操作414、416和418之前执行或与其平行执行。如果操作412与操作414、416或418平行执行,则操作的相对定时可受约束,以确保与可靠通信信道RCy相关联的传送历史信息库RCyXmit FIFO在消息的传送之前已更新,以避免理论上可能的竞争条件,该竞争条件中,用于传送的消息的确认在完成更新RCyXmit FIFO条目之前到达。无论何时应用有数据要发送到目的地端点,流程图400的操作便可重复进行。因此,SSQ可由应用用于将多个消息发送到多个目的地端点,其中,每个消息对应于相应相关联数据。
[0039]在从目的地装置收到452确认时,流程图450 (图4B)开始。操作454可包括更新对应通信信道传送历史信息库(RC Xmit FIFO)。例如,肯定确认可指示发送的分组已由目的地装置准确收到。如果未准确收到或根本未收到分组,则可从目的地装置收到否定确认,或者在发送通信装置上超时可截止(expire),并且发送装置随后可重新发送分组。
[0040]操作456可包括确定是否更新的RC Xmit FIFO条目已完成(即,与更新的RC XmitFIFO条目相关联的消息已由目的地装置成功收到和确认)。如果更新的RC Xmit FIFO条目未完成,则程序流程可在操作460返回。如果更新的RC Xmit条目完成,则在操作464,共享的发送队列传送历史信息库(SSQXmitFIFO)中对应的条目可标记有待完成。
[0041]例如,消息可被分段成分组序列以便使用可靠通信信道RCy从主机通信装置传送到目的地装置。为确保传送的分组的有序地完成(即,所有分组由目的地确认收到),相关联RC传送历史信息库(例如,RCyXmit FIFO)可用于跟踪确认。在所有传送的分组已被确认收到,并且在相同可靠通信信道上的所有以前消息已完成时,消息已完成,并且在SSQ XmitFIFO中对应的条目可标记有待完成。
[0042]操作466可包括确定对应SSQ Xmit FIFO条目是否在传送顺序中是下一条目(即,是SSQ中的第一非完成WQE)。如果对应SSQ Xmit FIFO条目在传送顺序中不是下一条目,则程序流程可在操作460返回。如果对应SSQ Xmit FIFO条目在传送顺序中是下一条目,则在操作468,对应SSQXmit FIFO条目可完成。
[0043]操作470可包括确定下一 SSQ Xmit FIFO条目是否在操作470标记有待完成。如果下一 SSQ Xmit FIFO条目标记有待完成,则程序流程可继续到操作468,并且下一 SSQ XmitFIFO条目可完成。如果下一 SSQ Xmit FIFO条目未标记有待完成,则在操作472,可释放与完成的SSQ Xmit FIFO条目对应的共享的发送队列(并且随后可例如使用由主机接口定义的机制,向应用报告完成)。随后,程序流程在操作460返回。
[0044]流程图450的操作配置成确保传送的消息以其相关联工作队列元素发布到共享的发送队列的顺序(并且如此传送)完成。每个工作队列元素配置成指定要用于传送相关联消息的可靠通信信道。因此,以WQE发布到SSQ的顺序向请求应用传递完成,而不考虑在可靠通信信道之间WQE的完成顺序。
[0045]图5A和5B是示出配置成通过多个可靠通信信道将消息传送到多个目的地装置的主机系统和通信装置(例如,通信装置304)的操作的流程图500、550。图5A和5B所示操作配置成按可靠通信信道保持用于与发布到共享的发送队列的WQE对应的消息的传送顺序。换而言之,以WQE发布到用于该可靠通信信道的共享的发送队列的顺序,对于每个可靠通信信道将完成传递到应用,而与用于经其它可靠通信信道传送的消息的完成无关)。
[0046]图5A和5B的操作可由在主机系统(例如,主机系统102)、通信装置(例如,网络控制器110)、伴随装置(例如,存储控制器114)或其组合上执行的应用执行。在应用具有数据要发送到目的地端点502时,流程图500开始。在操作506,应用可生成工作请求。工作请求可包括描述消息类型和消息属性的控制信息、指示在存储器中要传送的数据存储的位置的描述符、要传送的数据量、与要用于传送的可靠通信信道对应的标志符和/或指示要接收消息的目的地装置的标志符。
[0047]操作510可包括将与工作请求对应的工作队列元素(WQEx)发布到共享的发送队列(SSQ)。WQEx可包括可靠通信信道标识符(RCy)。在操作512,可经与RCy对应的可靠通信信道传送与WQEx对应的消息。在操作514可为WQEx分配与可靠通信信道RCy相关联的传送历史信息库(例如,RCyXmit FIFO)中的位置。操作516包括将工作队列元素WQEx的至少一部分从SSQ复制到相关联传送历史信息库RCyXmit FIFO或者到与传送历史信息库RCyXmit FIFO相关联的结构(例如,未解决WQE库(RCy STORE))。工作队列元素的复制可用于消息的一个或更多个分组的完成和重新传送(例如,如果从目的地装置收到否定确认,或者未收到确认,并且在通信装置上发生超时)。流程图500的操作可在返回处520结束。虽然平行示出,但操作512可在操作514和516之前执行或与其平等执行(带有与相对于图A所述类似的约束)。
[0048]在从目的地装置收到552确认时,流程图550 (图5B)开始。操作554可包括更新对应通信信道传送历史信息库(RC Xmit FIFO)。例如,肯定确认可指示发送的分组已由目的地装置准确收到。如果未准确收到分组,则可从目的地装置传送否定确认,或者在发送通信装置上超时可截止,并且发送装置随后可重新发送分组。
[0049]操作556可包括确定更新的RC Xmit FIFO条目是否完成。如果更新的RC Xmit FIFO条目未完成,则程序流程可在操作560返回。如果更新的RC Xmit条目完成,则在操作562,可完成与RC Xmit条目对应的共享的发送队列工作队列条目。在操作564,可将完成传递到应用。共享的发送队列工作队列条目可包括足够的信息,以允许识别消息和相关联应用缓冲区,以便在共享的发送队列工作队列条目完成时可将其释放。在操作566,可释放共享的发送队列中对应的工 作队列条目。随后,可再使用释放的对应工作队列条目以发布另一工作请求。随后,程序流程在操作520返回。
[0050]流程图550的操作配置成确保传送的消息以其相关联工作队列元素发布到用于每个可靠通信信道的共享的发送队列的顺序完成,而与在其它可靠通信信道上传送的消息的完成无关。有利的是,在此实施例中,相对更快的可靠通信信道(和目的地装置)可完成其传送而不受共享共享的发送队列的更慢可靠通信信道(和目的地装置)限制。
[0051]图6和7是示出用于共享的发送队列和多个可靠通信信道的传送历史信息库中的条目、在共享的发送队列中的条目的两个示例。图6中的示例对应的实施例中,完成顺序对应于在共享的发送队列中工作队列元素发布顺序。图7中的示例对应的实施例中,完成顺序对应于到用于相应可靠通信信道的共享的发送队列的工作队列元素发布顺序。
[0052]现在转到图6,工作队列元素(WQEx,其中,x=l、2、…、6)以WQEl最先,随后是WQE2、…,随后是WQE6的顺序发布到共享的发送队列602。发布顺序对应于与WQE相关联的消息的传送顺序。在此示例中,每个工作队列元素与三个可靠通信信道(RC1、RC2、RC3)之一相关联,例如,WQEl - RC3、WQE2 - RC2、WQE3 - RCl等。在与每个WQE相关联的消息传送时,每个WQE在SSQ XMIT FIFO 604 (SSQ传送历史信息库)中分配有条目,并且在相关联可靠通信信道的信道传送历史信息库[RCy (y=l、2或3)XMITFIF0]中分配有条目。WQEl在SSQ Xmit FIFO 604中已分配有条目El,并且在RC3 Xmit FIFO 610中分配有条目El。WQE2在SSQ Xmit FIFO 604中已分配有条目E2,并且在RC2 Xmit FIFO 608中分配有条目El。WQE3在SSQ Xmit FIFO 604中已分配有条目E3,并且在RCl Xmit FIFO 606中分配有条目El,并以此类推。在此示例中,在消息完成时,可更新通信信道传送历史信息库RCyXmit FIFO 606,608,610中的条目。在RCyXmit FIFO 606、608、610完成时,如本文中所述,可将SSQ Xmit FIFO604中对应的条目标记有待完成。在此示例中,所有WQE以它们发布到SSQ 602的顺序和它们从SSQ 602传送的顺序完成。先完成WQE1,然后完成WQE2、WQE3等。这样,根据WQE发布到用于所有可靠通信信道的共享的发送队列602的顺序,传递完成。
[0053]转到图7,工作队列元素(WQEx)以WQE1、WQE2、…、WQE6的顺序发布到共享的发送队列702。每个工作队列元素与三个可靠通信信道RC1、RC2、RC3之一相关联。与SSQ 702中WQE对应的消息的传送顺序由“传送顺序”指示。WQE以它们发布到SSQ的顺序传送。先传送WQEl,然后传送WQE2等等。每个WQEx与特定可靠通信信道RCl、RC2或RC3相关联(例如,WQE1-RC3、WQE2-RC2、WQE3-RC1等等)。在传送时,每个WQEx在其相关联可靠通信信道的RCyXmit FIFO中分配有条目,并且WQE的至少一部分被复制到分配的RCyXMIT FIFO条目,或者分配到由RCyXmit FIFO条目引用的新结构(即,未解决WQE库716、718、720)。在此示例中,WQEl在RC3 Xmit FIFO 710中分配有条目El, WQE2在RC2 Xmit FIFO 708中分配有E1,WQE3在RCl Xmit FIFO 706中分配有条目El,并以此类推。图7中的虚线对应于将每个WQE的至少一部分从SSQ 702复制到相应未解决WQE库716、718、720。
[0054]WQE可以与WQE (B卩,消息)传送顺序不同的顺序完成。先完成在RCl上传送的消息(WQE3和WQE6),然后完成在RC2上传送的消息(WQE2和WQE5),随后完成在RCl上传送的最后消息(WQE1和WQE4)。所有WQE以用于其相关联可靠通信信道的顺序完成。就SSQ 702中工作队列元素而言,完成顺序是:WQE3、WQE6、WQE2、WQE5、WQEl及WQE4。如本文中所述,如有必要,重新传送可利用已复制到未解决WQE库716、718、720的每个工作队列元素的至少一部分。根据到用于每个可靠通信信道的共享的发送队列702的WQE发布顺序,将完成传递到请求应用。
[0055]配置成使用共享发送队列支持多个可靠通信信道的方法、设备和系统已描述。共享的发送队列配置成允许应用通过多个可靠通信信道与多个目的地进行通信的应用。诸如网络控制器等通信装置配置成管理通过多个可靠通信信道的通信。方法、设备和系统配置成允许第一多个未解决消息在某个时间点与共享的发送队列相关联。方法、设备和系统还配置成允许第二多个未解决的消息与可靠通信信道相关联。这与将发送队列和通信信道限制到一个未解决消息的一些常规系统不同。在一个实施例中,发布到共享的发送队列的工作队列元素的完成顺序对应于与用于共享的发送队列的工作队列元素对应的消息的传送顺序。在另一实施例中,发布到共享的发送队列的工作队列元素的完成顺序对应于在每可靠通信信道基础上消息的传送顺序(即,与其它可靠通信信道无关)。在这两个实施例中,传送顺序对应于工作队列元素到共享的发送队列的发布顺序。
[0056]虽然上述内容作为示范系统体系结构和方法提供,但对本公开内容的修改是可能的。例如,主机系统存储器中的操作系统105可管理系统资源并且控制在例如主机系统102上运行的任务。例如,OS 105可使用Microsoft Windows、HP-UX、Linux或UNIX实现,但可使用其它操作系统。在一个实施例中,图1所示OS 105可替代为虚拟机管理器,虚拟机管理器为基础硬件到在一个或更多个处理单元上运行的各种操作系统提供抽象层。[0057]操作系统105可实现一个或更多个协议栈。协议栈可执行一个或更多个程序以处理分组。协议栈的示例是TCP/IP (传输控制协议/因特网协议)协议栈,包括用于处置(例如,处理或生成)分组以通过网络传送和/或接收的一个或更多个程序。协议栈备选可包括在专用子系统上,如TCP卸载引擎和/或网络控制器110。
[0058]其它修改是可能的。例如,例如系统存储器106等系统存储器和/或与例如网络控制器110等网络控制器相关联的存储器可包括一个或更多个以下类型的存储器:半导体固件存储器、可编程存储器、非易失性存储器、只读存储器、电可编程存储器、随机存取存储器、闪存、磁盘存储器和/或光盘存储器。另外或备选,系统存储器106和/或与网络控制器110相关联的存储器可包括其它和/或以后开发的类型的计算机可读存储器。
[0059]本文中所述方法的实施例可在包括一个或多个存储介质的系统中实现,存储介质上单独或组合存储有在由一个或多个处理器执行时执行方法的指令。此处,处理器例如可包括网络控制器中的处理单元和/或可编程电路。因此,预期根据本文中所述方法的操作可跨诸如在几个不同物理位置的处理结构等多个物理装置分布。存储介质可包括任何类型的有形介质,例如任何类型的盘,包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)及磁光盘、半导体装置诸如只读存储器(ROM)、诸如动态和静态RAM等随机存取存储器(RAM)、可擦除编程只读存储器(EPROM)、电擦除可编程只读存储器(EEEPR0M)、闪存、磁卡或光学卡或适用于存储电子指令的任意类型的介质。
[0060]本文中描述的以太网通信协议可以能够允许使用传送控制协议/因特网协议(TCP/IP)的通信。以太网协议可符合或兼容由电气和电子工程师协议(IEEE)在2002年3月发布的题为“IEEE 802.3标准”的以太网标准和/或此标准的以后版本。
[0061]本文中描述的InfiniBand?通信协议可以能够允许通过有序消息完成建立和使用可靠通信。InfiniBand?协议可符合或兼容由InfiniBand行业协会(IBTA)在2001年6月发布的题为“InfiniBand体系结构规范,卷1,版本1.2.1” (InfiniBand ArchitectureSpecification, Volume I, Release 1.2.1)的 InfiniBand 规范和 / 或此规范的以后版本。
[0062]本文中描述的iWARP通信协议可以能够允许通过有序消息完成建立和使用可靠通信。iWARP协议可符合或兼容由RDMA联盟开发并且由因特网工程任务组(IETF)维护和发布,在2007年发布的题为“通过传送控制协议(TCP)标准的RDMA”(RDMA over TransmissionControl Protocol (TCP) standard)的iWARP标准和/或此标准的以后版本。
[0063]“电路”在本文的任何实施例中使用时可例如单独或以任何组合方式包括硬连线电路、可编程电路、状态机电路和/或存储可编程电路执行的指令的固件。
[0064]一方面,提供了一种方法。方法包括以发布顺序将多个工作队列元素发布到共享的发送队列,每个工作队列元素包括配置成识别要传送的相应数据的描述符和配置成识别要用于传送数据的通信信道的通信信道标志符;使用识别的通信信道,传送与每个工作队列元素对应的消息,消息包括要传送的相应数据,其中,消息以与工作队列元素的发布顺序对应的传送顺序传送;以及以完成顺序完成共享的发送队列中的工作队列元素,完成顺序与发布顺序有关。
[0065]另一方面,提供了一种通信系统。通信系统包括:配置成存储多个工作队列元素的共享的发送队列,其中,工作队列元素以发布顺序发布到共享的发送队列,每个工作队列元素包括配置成识别要传送的相应数据的描述符和配置成识别要用于传送数据的通信信道的通信信道标志符;通信装置,配置成使用识别的通信信道,传送与每个工作队列元素对应的消息,消息包括要传送的相应数据,其中,消息以与工作队列元素的发布顺序对应的传送顺序传送;以及通信装置配置成以完成顺序完成共享的发送队列中的工作队列元素,完成顺序与发布顺序有关。
[0066]另一方面,提供了一种系统。系统包括一个或更多个存储介质的系统,存储介质上单独或组合存储有在由一个或更多个处理器执行时,产生以下操作的指令:以发布顺序将多个工作队列元素发布到共享的发送队列,每个工作队列元素包括配置成识别要传送的相应数据的描述符和配置成识别要用于传送数据的通信信道的通信信道标志符;使用识别的通信信道,传送与每个工作队列元素对应的消息,消息包括要传送的相应数据,其中,消息以与工作队列元素的发布顺序对应的传送顺序传送;以及以完成顺序完成共享的发送队列中的工作队列元素,完成顺序与发布顺序有关。
[0067]本文中已采用的术语和表述用作描述的语言而不是限制,并且在此类术语和表述的使用中,无意排除所示和所述的特征(或其部分)的任何等效物,以及可认识到各种修改在权利要求书的范围内是可能的。相应地,权利要求书旨在包括所有此类等效物。
[0068]各种特征、方面和实施例已在本文中描述。如本领域技术人员将理解的一样,特征、方面和实施例容易实现相互的组合及变化和修改。因此,本公开内容应视为涵盖此类组合、变化和修改。
【权利要求】
1.一种方法,包括: 以发布顺序将多个工作队列元素发布到共享的发送队列,每个工作队列元素包括配置成识别要传送的相应数据的描述符和配置成识别要用于传送所述数据的通信信道的通信信道标志符; 使用所识别的通信信道,传送与每个工作队列元素对应的消息,所述消息包括要传送的所述相应数据,其中所述消息以与所述工作队列元素的所述发布顺序对应的传送顺序传送;以及 以完成顺序完成所述共享的发送队列中的所述工作队列元素,所述完成顺序与所述发布顺序有关。
2.如权利要求1所述的方法,其中每个通信信道是配置成在传送主机装置与相应目的地装置之间提供可靠的端对端连接性的可靠通信信道。
3.如权利要求1所述的方法,其中所述完成顺序与用于发布到所述共享的发送队列的所述多个工作队列元素的所述发布顺序相同。
4.如权利要求1所述的方法,其中所述完成顺序与用于具有相同通信信道标志符的工作队列元素的所述发布顺序相同。
5.如权利要求3所述的方法,还包括: 为每个传送的消息分配在相应通信信道传送历史信息库中的位置和在共享的发送队列传送历史信息库中的位置;以及 为每个传送的消息将在所述相应通信信道传送历史信息库中的所述位置和在所述共享的发送队列传送历史信息库中的所述位置相关联, 其中所述相应通信信道传送历史信息库配置成确保完成顺序与用于在所述相应通信信道上传送的消息的所述发布顺序相同,并且所述共享的发送队列传送历史信息库配置成确保所述完成顺序与用于所述多个工作队列元素的所述发布顺序相同。
6.如权利要求4所述的方法,还包括: 为每个传送的消息分配在相应通信信道传送历史信息库中的位置;以及 将相应工作队列元素的至少一部分复制到所述相应通信信道传送历史信息库中的所分配的位置, 其中所述相应通信信道传送历史信息库配置成确保完成顺序与用于在所述相应通信信道上传送的消息的所述发布顺序相同,并且所述复制的工作队列元素配置成允许从所述共享的发送队列释放已选择但尚未完成的工作队列元素。
7.如权利要求1所述的方法,其中所述共享的发送队列和所识别的通信信道的至少一个配置成允许在某个时间点有多个未解决消息。
8.一种通信系统,包括: 共享的发送队列,配置成存储多个工作队列元素,其中所述工作队列元素以发布顺序发布到所述共享的发送队列,每个工作队列元素包括配置成识别要传送的相应数据的描述符和配置成识别要用于传送所述数据的通信信道的通信信道标志符; 通信装置,配置成使用所识别的通信信道,传送与每个工作队列元素对应的消息,所述消息包括要传送的所述相应数据,其中所述消息以与所述工作队列元素的所述发布顺序对应的传送顺序传送;以及所述通信装置配置成以完成顺序完成所述共享的发送队列中的所述工作队列元素,所述完成顺序与所述发布顺序有关。
9.如权利要求8所述的通信系统,其中每个通信信道是配置成在传送主机装置与相应目的地装置之间提供可靠的端对端连接性的可靠通信信道。
10.如权利要求8所述的通信系统,其中所述完成顺序与用于发布到所述共享的发送队列的所述多个工作队列元素的所述发布顺序相同。
11.如权利要求8所述的通信系统,其中所述完成顺序与用于具有相同通信信道标志符的工作队列元素的所述发布顺序相同。
12.如权利要求10所述的通信系统,其中所述通信装置还配置成: 为每个传送的消息分配在相应通信信道传送历史信息库中的位置和在共享的发送队列传送历史信息库中的位置;以及 将在所述相应通信信道传送历史信息库中的所述位置和在所述共享的发送队列传送历史信息库中的所述位置相关联, 其中所述相应通信信道传送历史信息库配置成确保完成顺序与用于在所述相应通信信道上传送的消息的所述发布顺序相同,并且所述共享的发送队列传送历史信息库配置成确保所述完成顺序与用于所述多个工作队列元素的所述发布顺序相同。
13.如权利要求11所述的通信系统,其中所述通信装置还配置成: 为每个传送的消息分配在相应通信信道传送历史信息库中的位置;以及 将相应工作队列元素的至少一部分复制到所述相应通信信道传送历史信息库中的所分配的位置, 其中所述相应通信信道传送历史信息库配置成确保完成顺序与用于在所述相应通信信道上传送的消息的所述发布顺序相同,并且所述复制的工作队列元素配置成允许从所述共享的发送队列释放已选择但尚未完成的工作队列元素。
14.如权利要求8所述的通信系统,其中所述共享的发送队列和所识别的通信信道的至少一个配置成允许在某个时间点有多个未解决消息。
15.一种包括一个或更多个存储介质的系统,所述存储介质上单独或组合存储有在由一个或更多个处理器执行时,产生以下操作的指令: 以发布顺序将多个工作队列元素发布到共享的发送队列,每个工作队列元素包括配置成识别要传送的相应数据的描述符和配置成识别要用于传送所述数据的通信信道的通信信道标志符; 使用所识别的通信信道,传送与每个工作队列元素对应的消息,所述消息包括要传送的所述相应数据,其中所述消息以与所述工作队列元素的所述发布顺序对应的传送顺序传送;以及 以完成顺序完成所述共享的发送队列中的所述工作队列元素,所述完成顺序与所述发布顺序有关。
16.如权利要求15所述的系统,其中每个通信信道是配置成在传送主机装置与相应目的地装置之间提供可靠的端对端连接性的可靠通信信道。
17.如权利要求15所述的系统,其中所述完成顺序与用于发布到所述共享的发送队列的所述多个工作队列元素的所述发布顺序相同。
18.如权利要求15所述的系统,其中所述完成顺序与用于具有相同通信信道标志符的工作队列元素的所述发布顺序相同。
19.如权利要求17所述的系统,其中所述指令在由一个或更多个处理器执行时产生以下另外的操作,包括: 为每个传送的消息分配在相应通信信道传送历史信息库中的位置和在共享的发送队列传送历史信息库中的位置;以及 为每个传送的消息将在所述相应通信信道传送历史信息库中的所述位置和在所述共享的发送队列传送历史信息库中的所述位置相关联, 其中所述相应通信信道传送历史信息库配置成确保完成顺序与用于在所述相应通信信道上传送的消息的所述发布顺序相同,并且所述共享的发送队列传送历史信息库配置成确保所述完成顺序与用于所述多个工作队列元素的所述发布顺序相同。
20.如权利要求18所述的系统,其中所述指令在由一个或更多个处理器执行时产生以下另外的操作,包括: 为每个传送的消息分配在相应通信信道传送历史信息库中的位置;以及 将相应工作队列元素的至少一部分复制到所述相应通信信道传送历史信息库中的所分配的位置, 其中所述相应通信信道传送历史信息库配置成确保完成顺序与用于在所述相应通信信道上传送的消息的所述发布顺序相同,并且所述复制的工作队列元素配置成允许从所述共享的发送队列释放已选择但尚未完成的工作队列元素。
21.如权利要求15所述的系统,其中所述共享的发送队列和所识别的通信信道的至少一个配置成允许在某个时间点有多个未解决消息。
【文档编号】G06F13/38GK103999068SQ201180075843
【公开日】2014年8月20日 申请日期:2011年12月23日 优先权日:2011年12月23日
【发明者】V.马赫瓦克斯, R.O.沙普, B.豪索尔, K.G.基尔斯, D.E.伍德 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1