用于隐式存储器注册的显式流控制的制作方法

文档序号:6532625阅读:157来源:国知局
用于隐式存储器注册的显式流控制的制作方法
【专利摘要】本文公开了用于使用隐式存储器注册来促成对RDMA传输的显式流控制的方法、装置和系统。为了建立RDMA数据传输,源RNIC发送针对使用隐式存储器注册在目标RNIC处分配目标缓冲区的请求。在隐式存储器注册中,将被注册的一个或多个页不是由源RNIC所显式标识的,并且可以对应于被页出到虚拟存储器的页。作为结果,对这种页的注册导致页错误,这带来了在完成对页的注册和钉扎之前的页错误延迟。响应于检测到页错误,目标RNIC返回确认,该确认指示页错误延迟正在发生。响应于接收到该确认,源RNIC暂时停止发送分组,并且在重传超时期满之前不重传针对其没有接收到ACK的分组。
【专利说明】用于隐式存储器注册的显式流控制
【技术领域】
[0001 ] 本发明的领域通常涉及计算机联网,具体但非排他地涉及用于使用隐式存储器注册执行对RDMA传输的流控制。
【背景技术】
[0002]远程直接存储器访问(RDMA)是一种直接存储器访问机制,其使计算机能够访问另一台计算机的存储器,而不涉及这些计算机的操作系统。RDMA通过使网络适配器能够向或从应用存储器直接传输数据来支持零拷贝联网,从而消除了在应用存储器与操作系统中的数据缓冲区之间拷贝数据的需要。这种传输不需要CPU、高速缓存或者上下文切换进行工作,并且传输持续与其它系统操作并行。当一应用执行RDMA读或写请求时,应用数据被直接递送给网络,从而降低了时延并加快了消息传输。
[0003]为了经由用户空间(S卩,由操作系统分配给应用的非核心存储器空间)与远程系统高效通信,传统的RDMA设备需要预注册的、预钉扎(pre-pinnd)的存储器区域用于通过光纤通道网络(fabric)或网络进行所有数据传输。这耗费大量的能够由其它应用使用的系统存储器。为了避免页错误,通常可以将存储器过度分配以(希望)解决较差情形的业务状况。然而,在业务负载较重时,即便这种方法可能失败,导致与分配给预钉扎的存储器区域的存储器量不足对应的页错误,致使暂时使用从本地或远程辅助存储设备访问的虚拟存储器而不是系统存储器;诸如硬盘驱动器之类的这些设备也具有与典型系统存储器相比慢一个数量级或更慢的访问速度。在传统方法中,页错误对于RDMA发送方是透明的,否则在该页错误发生后被较好地间接识别(例如,在超时时段内缺少确认可以表明某种类型的错误或拥塞)。
[0004]在当今市场上有多款支持RDMA的网络接口卡(RNIC),其提供开放源码方法和私有方法两者用于隐式存储器注册。它们都试图移除为RDMA传输而预钉扎(pre-pinning)存储器区域的需要。在这些情形中,RNIC本质上充当存储器管理单元并提供与系统MMU的特定形式的同步。这种MMU同步虽然有许多形式,但本质上都保证了:适配器将参与所有用户存储器区域访问并将容忍数据传输期间的页错误和页钉扎(page pinning)。这些分页事件是不确定的并可能明显延迟数据流,特别是当系统忙时或当所述错误需要从本地或网络附着的驱动器分页时。
【专利附图】

【附图说明】
[0005]通过结合附图来参照下面的详细描述,本发明的前述方面和多种附带优点变得被较好地理解,从而将变得更易了解,其中,除非另有规定,否则同样的附图标记在各个方面指代同样的部分:
[0006]图1是示出与根据使用标准的传送流控制机制的传统方法的,针对RDMA目标缓冲区的隐式存储器注册有关的页错误的结果的示意图;
[0007]图2是示出根据一个实施例的,如何使用显式流控制处理与针对RDMA目标缓冲区的隐式存储器注册有关的页错误的示意图;
[0008]图3是示出可以被用以实现本文所描述的各实施例的各方面的平台配置的示意图;
[0009]图4是示出根据一个实施例的,利用隐式存储器注册和管道式缓冲区预分配的RDMA数据传输的各方面的消息流示意图;以及
[0010]图5是示出可以被用以实现本文所描述的各实施例的各方面的RNIC的架构的示意图。
【具体实施方式】
[0011]本文描述了用于使用隐式存储器注册来对RDMA传输执行流控制的方法和装置的实施例。在下面的描述中,大量具体的细节被给出以提供对本发明的各实施例的全面理解。然而,一名相关领域内的熟练技术人员将认识到,本发明可以不用这些具体的细节中的一个或多个、或者用其它方法、组件、材料等来实现。在其它情形中,公知的结构、材料或操作未被详细地示出或描述,以避免使本发明的各方面模糊不清。
[0012]贯穿说明书对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定的特征、结构或特性被包括在本发明的至少一个实施例中。因而,短语“在一个实施例中”或“在一实施例中”在本说明书各个地方的出现并不都指同一个实施例。此外,特定的特征、结构或特性可以在一个或多个实施例中以任何恰当方式合并。
[0013]根据当前描述的各实施例的各方面,提供了一种新颖的通信方法,其使RDMA设备能避免预钉扎并能较好地容忍页错误,这通过在线缆上提供显式数据流确认以避免对不必要的分组的传输和拥塞来实现。本文公开内容描述了用于显式流控制的架构和方法,允许对一个或多个远程RDMA设备的优化回压。
[0014]显式存储器注册和存储器页钉扎
[0015]为了较好地理解和了解各实施例的优点,与现行传统方法的比较被首先提供。如上所讨论地,RDMA使得以绕过系统CPU和操作系统的方式对远程系统上的存储器能进行直接存储器访问。RDMA通过使RNIC能向或从与由操作系统使用的核心存储器分开维护的应用存储器(即,系统存储器中分配给应用的存储器空间)直接传输数据来支持零拷贝联网,从而消除了在应用存储器与由该操作系统使用的核心存储器中的数据缓冲区之间拷贝数据的需要。这是经由DMA操作来促成的,在该DMA操作中,RNIC上的DMA引擎被使能直接写入和读出系统存储器中已分配给RNIC的数据缓冲区。
[0016]现代操作系统通过分配虚拟存储器中的页、并处理由虚拟存储器地址空间利用的逻辑地址与同物理存储器对应的物理地址(即,系统存储器硬件地址)之间的映射,来实现存储器管理。这提供了多种优势,包括扩展存储器的尺寸超过系统中的物理存储器的能力。另外,每个进程在其自身的逻辑地址空间中运行。典型地,页表被用以将由应用所见的虚拟地址翻译成由硬件用以处理指令的物理地址;通常处理此特定翻译的硬件是存储器管理单元(MMU)。页表中的每项持有一标记,该标记指示对应的页是否在真实(物理)存储器中。如果该对应的页在真实存储器中,页表项将包含该页所存储在的真实存储器地址。
[0017]当页被硬件引用时,如果针对该页的页表项指示其当前不在真实存储器中,那么硬件发出页错误异常,从而激活操作系统的分页管理器部件。响应于页错误,分页管理器访问辅助存储(或者虚拟存储器所映射到的任意存储)、返回具有导致了页错误的虚拟地址的页、更新页表以反映虚拟地址的物理位置、并通知翻译机制以重新开始请求。当所有物理存储器都已在使用中,分页管理器必须释放物理存储器中的页以持有换入的(即,“页入的(paged in) ”)页。同时,对于被页入的每个页,物理存储器中的现存页必须被页出(pagedout)。实质上,页出(paging out)存储器页涉及将该存储器页中的数据从其在物理存储器中的位置拷贝到在辅助存储设备中存储的文件。页入(paging in)存储器页完成了页出的相反操作-在该情形中,与在辅助存储设备文件中存储的页对应的数据被拷贝到物理存储器中的页。分页管理器使用多种页替换算法中的一种页替换算法,诸如至少最近被用以确定释放哪个页的那种页替换算法。理想情况下,虽然使用率低的页先被页出,但是分页的结果定会增加存储器访问延迟。如果情况变得足够糟,磁盘“振荡”可能发生,其中,页被不断地页入和页出存储器。
[0018]如上所讨论地,零拷贝存储器访问被设计成绕过CPU,这意味着其也绕过MMU(至少在RDMA存储器写和读期间)。这产生了与普通的虚拟存储器使用情况相关的问题,该问题是通过对显式存储器注册以及被分配供RDMA使用的“钉扎(pinning) ”存储器页的使用来解决的。
[0019]RDMA联盟已发布了 RDMA协议动词规范,其描述了 RNIC主机(即,在其中实现RNIC的计算机系统或平台)所见的RNIC硬件、固件和软件的行为。该行为描述是以RNIC接口和一组RNIC动词的形式来规定的。RNIC接口定义了由支持RNIC动词规范的RNIC提供的RDMA服务的语义,并且可以通过硬件、固件和软件的组合来实现。动词是期望RNIC接口执行的操作。当前起草中的RDMA动词规范被发布在http://tools.1etf.0rg/html/draft-hiIland-rddp-verbs-ΟΟ上。如本文下面所使用地,该规范被称为RDMA动词。
[0020]RDMA动词定义了称为存储器注册的用于分配存储器的机制。存储器注册使由特定的RNIC能访问存储器区域。绑定一存储器窗口使该特定的RNIC访问由那个存储器窗口表示的存储器。存储器注册提供了这样的机制,其允许消费方(即,利用RDMA以用于数据传输的那些应用)描述一组虚拟际连续存储器位置或一组物理连续位置给RI,以便允许RNIC使用指引标签(STag)和带标签的偏移来作为虚拟连续缓冲区来访问任一者。存储器注册向RNIC提供Stag和带标签的偏移与物理存储器地址之间的映射。其还向RNIC提供对与存储器区域相关联的访问控制的描述。已被注册的存储器位置的集合被称为存储器区域。在RNIC可以使用存储器区域之前,与存储器区域相关联的资源必须被分配并且存储器区域必须被注册到RNIC。
[0021 ] 在对RDMA的传统使用中,在RDMA通信信道的两端处的RDMA组件(即,发送和接收计算机平台处的组件,诸如服务器)为给定的应用分配系统存储器中的缓冲区(或从OS请求对缓冲区的分配)。应用之间的数据传输是通过将发送方的计算机的源缓冲区中的数据拷贝到接收方的计算机上的目标缓冲区来执行的。由于在传输期间不涉及0S、CPU和MMU,所以在传输期间不能改变缓冲区的地址。这是通过钉扎与存储器区域相关联的存储器页来实现的。被钉扎的存储器页不可以被交换到辅助存储中。特别而言,在传统的使用情况中,当IO操作正在进行时,由使用直接存储器访问或输入-输出(IO)信道的外围设备直接访问的数据缓冲区必须驻留在被钉扎的页中,这是因为这类设备和其被连接到的总线期望找到位于物理存储器地址处的数据缓冲区;不管总线是否具有用于IO的存储器管理单元,当页错误发生时传输都不能被终止,并且当页错误已被处理时传输不能随后重新开始。相应地,在零拷贝RDMA系统中不钉扎页可能导致存储器的内容的损坏。
[0022]在显式存储器注册中,在发起真实的数据传输前,用于RDMA数据传输的缓冲器被向RNIC注册。这是部分地通过使用工作请求(WR)来促成的。每个WR定义了:1)数据传输操作类型(发送、接收、RDMA读、RDMA写等);2)用于发送、RDMA读和RDMA写的源缓冲区;以及3)用于接收、RDMA读和RDMA写的目标缓冲区。然后,源缓冲区和目标缓冲区中的每个在被钉扎的存储器区域都具有显式定义的位置(即,地址范围)。在注册后,这些缓冲区被称为“带标签的缓冲区”并由唯一的STag所标识,如上所讨论地。
[0023]对显式存储器注册和被钉扎的存储器在历史上已是用于实现RDMA的最普通方式,然而其具有显著的缺陷。具体而言,钉扎存储器花费时间和额外的存储器去设立,减少了操作系统可以分配给其它进程的存储器的量,限制了存储器系统适应时间的总体灵活性,并甚至可能导致当过程不必要地钉扎页时对存储器的不充分使用。
[0024]具有传统流控制的隐式存储器注册
[0025]为了弥补针对需要被钉扎的存储器区域的一些缺陷,已经研究出了隐式存储器注册。在隐式存储器注册方法中,RDMA数据传输可以在对目标缓冲区的分配之前被发起,其中,该缓冲区是被实时地分配的。这可能导致页错误,如果分配给该缓冲区的一个或多个存储器页被页出给辅助存储。在这种页错误事件下,在将数据写到目标存储区之前,存储器页或页必须先被页入到系统存储器中。
[0026]图1示出了被配置以支持响应于页错误事件的隐式存储器注册和传统流控制的架构的例子。该架构包括计算机平台100,其具有经由相应的互连105和107耦合到系统存储器104和IO芯片集106的中央处理单元(CPU) 102,而IO芯片集106经由互连109被操作地耦合到系统存储器104。IO芯片集106还经由外围部件互连(PCI)总线(PCIe)链路诸如之类的PCI互连100被连接到RNIC108。同样,IO芯片集106经由PCI互连113被连接到包括辅助存储112的大容量存储设备(例如,硬盘或固态盘)。平台100还包括用于促成存储器管理和存储器访问的组件,如CPU102上的存储器管理单元114、包括MMU同步逻辑118的RNIC驱动器116、和操作系统(OS) 120所描绘地。
[0027]如上所讨论地,启用了 RDMA的系统支持以绕过系统CPU的方式对远程系统(例如,平台100)上的存储器的直接存储器访问。这是经由DMA操作来实现的,在该DMA操作中,RNIC108上的DMA引擎被使能直接写入和读出系统存储器104中的RDMA存储器区域122中的缓冲区。RNIC108与系统存储器104之间的连接是经由IO芯片集106、互连109、和PCI链路110来促成的,其中,IO芯片集用作RNIC108与系统存储器104之间的IO接口。
[0028]由于传统RDMA存储器访问绕过CPU,所以其也绕过MMU。这在用于存储器区域122中的缓冲区的所有页都被钉扎时是没有问题的。然而,为了使缓冲区能被分配给虚拟存储器中的页,需要提供一种这样的机制,该机制向RNIC通告:何时发生页错误,以及一旦缓冲区被页入回系统存储器时MMU在虚拟存储器与物理存储器之间如何映射页。这是通过对RNIC驱动器116中的与由MMUl 14执行的操作相结合的MMU同步逻辑118的使用以及对系统存储器104的核心空间中的页表125的使用,来促成的。
[0029]为了发起隐式存储器注册,第二 RDMA主机(未示出)发送缓冲区注册请求消息126,缓冲区注册请求消息126包括分组流128中的第一分组‘P1’,第一分组‘P1’与包括第二和第三分组‘P2’与‘P3’的RDMA数据传输相关联,第二和第三分组‘P2’与‘P3’包含要被写到该缓冲区请求的要被分配的数据。在一个实施例中,分组Pl中的缓冲区地址信息包括地址、针对缓冲区所请求的长度(Ien)、以及被称为‘rkey’的密钥值,‘rkey’被用以验证访问权限并提供适配器侧地址翻译。与显式存储器注册的情形不同,在开始RDMA数据传输之前预注册针对目标缓冲器的存储器页在的情况下,隐式存储器注册可能导致页错误,如果当针对对目标缓冲区的分配的请求被做出时,所请求的缓冲区的所标识的位置(地址)和尺寸(Ien)不能从存储器区域122的已用部分分配(或者不能存在于物理系统存储器中)的话。图1描绘了这种情形的例子,其示出了响应于页错误事件,缓冲区124(对应于请求的缓冲区分配)正被从辅助存储112页入到存储器区域122。
[0030]现行的RNIC实现方式依赖于标准传送流控制机制以及现行链路级定时器,以提供线缆上的回压。在与隐式存储器注册相关的页错误事件中,这可能导致不成熟的分组重传、拥塞以及可靠连接的终端。进一步讲,图1示出了在使用标准传送流控制机制的传统方法中,与利用隐式存储器注册的RDMA数据传送相关的页错误的结果的例子,并按如下进行。
[0031]响应于接收分组P1,针对所请求的缓冲区的隐式存储器注册被发起。这导致存储器页错误,并且辅助存储中的虚拟存储器的页必须在分组流128中的任何数据可以被写到缓冲区124之前被页入到物理存储器。如上讨论地,存储器页入涉及在其期间数据可以不被写进存储器的时延;该时延被描述为图1中的页入时间(Ptime)。
[0032]根据通用类型的可靠的标准传送协议,对接收到分组或分组序列的证实是使用ACK消息等来确认的。在这种方法中,源或发送端重传其在重传超时时段期满时没有接收到ACK消息所对应的分组。在诸如TCP的一些协议中,重传超时时段的长度起初作为针对连接的往返时间计算的 函数开始(例如,被设为平均往返计算上的一定增量或者通过对利用往返时间计算的算法的使用),随后是指数超时回退序列,在该指数超时回退序列中,针对每个后续重传的超时时段被加倍。响应于超时期满,分组被排队用于重传。给定分组可以被重传多次,直到针对该分组的ACK被发送方接收为止或者直到连接自身超时(需要重设)为止。
[0033]如图1所进一步描述地,第一 ACK消息130 (对应于分组Pl)不从RNIC108发送,直到对针对目标缓冲区的存储器页进行的页入已完成为止,这导致页错误延迟Ptime。在此Ptime页错误延迟的时段期间,分组Pl或分组序列P1、P2及P3被重传多次(取决于使用的协议;两种情形都由带灰色背景的标记为‘Ρ1'的分组描述),随后是连接重设(RST)。
[0034]前述的传统方法是非常浪费和低效的。任何时间分组都必须被重传,网络带宽的对应部分流失。另外,无论分组是否被重传,发送RNIC和接收RNIC中的一方或双方可能都需要额外的缓冲和/或操作-特别是当相同的分组在扩展的Ptime时段期间被重传多次时。
[0035]具有显式流控制的隐式存储器注册
[0036]根据经由本文的实施例而公开的教导和原理,前述不足经由对显式流控制机制的使用而被解决,显式流控制机制是响应于隐式注册页错误来实现的并且被配置使得必定明显减少或消除Ptime时段期间对分组的重传。所述教导和原理还通过提供与为RDMA目的而对存储器页的分配相关的较高粒度,来提供增强的存储器管理。[0037]根据一个方面,较为高效的数据流是通过对利用了作为传送线缆协议的部分来提供的新型ACK消息的显式流控制机制的使用,来促成的。在造成分页事件的隐式存储器注册期间,称为接收确认(RACK)的这种新ACK被用以对接收到对应的RDMA隐式存储器注册消息进行确认,并表明页错误“延迟”事件正在发生。除了执行确认功能,RACK包括基于由基础的光纤通告网络或网络协议定义的标准ACK定时器超时值的所计算的回退时间。作为结果,远程RNIC中的传送引擎将暂时地调整针对连接的数据流的ACK超时,直到普通的ACK被接收为止。如果回退太明显,发送RNIC可以选择中止。一旦存储器页错误页入被完成并且页被钉扎,普通的ACK将被发送并且远程RNIC将基于为可靠的数据信道设定的原始的ACK超时来重新进行发射。
[0038]图2示出了对RACK确认的使用的例子,其描绘了具有与平台100相比共享共同附图标记的类似组件的平台100a。平台100和IOOa之间的区别包括:包含基于硬件的MMU同步逻辑202的经修改的RNIC200以及包含MMU同步驱动器206的RNIC驱动器204。
[0039]如前所述,分组Pl、P2以及P3的流被从远程发送RNIC (未示出)发送并被RNIC200接收,这导致了存储器页错误事件。响应于检测到存储器错误,RNIC200返回包括Ptime值的RACK消息206。Ptime值对应于回退时间,在该回退时间期间,发送RNIC被请求不发送(即,放弃发送)额外的分组。在错误的存储器页被页入到系统存储器104中(从而为分组P2和P3中的数据分配了缓冲区空间)后,RNIC200返回传统的ACK消息208,其指示分组P1、P2和P3已被成功地接收。此刻,发送RNIC重新发送与所述分组流对应的分组,如标记为‘P4-数据’的数据分组所描绘地。
[0040]为了支持显式流控制,MMU同步逻辑202和MMU同步驱动器206被配置使得MMU同步逻辑将与系统MMU114同步并且辨识与RDMA存储器使用情况(即,如部分地通过为存储器区域120分配的页所描绘地)有关的存储器映射的当前状态。在一个实施例中,MMU同步逻辑202在其本地高速缓存页表125a中设置一比特用于表示系统存储器104中的活跃的RDMA地址空间的钉扎状态。如虚线框126所示出地,本地高速缓存页表125a对应于与由MMU114维护的关于RDMA缓冲区使用情况的对应的页表信息同步的页表信息。在一些实施例中,本地高速缓存页表还包括在先的用于动态控制数据流的分页事件的最小/最大次数。当RDMA写或读操作开始时,RNIC使用其高速缓存页表的项来检查RDMA地址的映射状态。如果其被映射并且页被钉扎,RNIC将立即以普通的ACK做出响应。如果其未被钉扎,RNIC将返回RACK消息并经由MMU114请求页钉扎。RACK消息可以包括回退次数,该回退次数在一个实施例中是基于先前的分页事件的最小/最大次数。一旦数据流开始,便假定页在传输的生命周期内保持被钉扎且其将不被页出或被移除。这种冻结映射状态就RDMA数据传输的按序需求而言是重要的。
[0041]图3示出了平台IOOa的架构,其是平台100的将CPU102和IO芯片集106替换成包括集成IO接口集106a的CPU102a的变体,集成IO接口集106a被配置成执行与上面讨论的由IO芯片集106执行的那些操作类似的操作。在一个实施例中,CPU102a包括片上系统(SoC)架构,其包括多个处理器核210以及用于连接SoC上的正在通信的各组件和逻辑的多个互连(诸如由一致性互连212所例示地)。通常,IO接口 106a代表一个或多个IO接口,其可以被配置为支持直接地或经由另一组件间接地对系统存储器104、辅助存储112和RNIC200的访问。如图所示,在一个实施例中,IO接口中的至少一部分被配置为基于PCI的接口,其支持PCI互连,诸如PCIe接口。
[0042]在一些实施例中,RNIC200和系统存储器104之间的DMA数据通信可以涉及CPU102a上的(被用以访问系统存储器104的)存储器控制器216与IO接口 106a之间的额外的内部接口及互连214。在各实施例中,该内部互连包括Intel?QuickPath Interconnect? (QPI) or an Intel? Keizer Technology Interconnect?
(KTI)。在一个实施例中,核210和存储器控制器216被耦合到利用了 QPI或KTI互连线缆和利用了 QPI或KTI协议的环形互连,并且10接口 106a中的10接口被配置成接收PCIe存储器写分组读请求,并将它们转换成QPI或KTI存储器写事务和存储器读事务。虽然用于这些DMA操作的消息/写分组通过CPU102a,但是它们绕过核210并且不涉及对在平台IOOa上运行的操作系统的使用。
[0043]图4是示出了在利用了上面描述的显式流控制机制的RDMA数据传输期间由源RNIC和目标RNIC执行的各操作和逻辑的方法流和处理图。源RNIC上的过程在框402中开始,在框402中,做出缓冲区需要被分配用于即将开始的RDMA数据传输的确定。在框404中,做出缓冲区分配是否对应于数据传输的开始的确定,或者做出与在数据传输期间发生的动态的额外的缓冲区分配有关的确定。
[0044]如果缓冲区分配对应于传输的开始,那么源RNIC在框406中发送针对目标缓冲区分配的请求,并在框408中开始以流方式发送(streaming)分组。与这两种操作对应的分组在目标RNIC的输入缓冲区409处被接收,其中,所述分组是使用分组处理逻辑和RDMA处理逻辑来处理的,如由输入缓冲区409中示出的处理块所描绘地。
[0045]如框410所示出地,目标RNIC接收目标缓冲器请求并发起对要被用于缓冲区的一个或多个存储器页的注册。与存储器注册操作有关地,页错误可能在对应的页被页出时产生,如上所讨论地。相应地,在判决框412中做出页错误是否发生的确定。如果页错误发生,逻辑进行到框414,在框414中,Ptime回退计算被执行。如上所讨论地,在一个实施例中,此计算是基于先前的页错误事件的,诸如这种事件的最小和最大持续时间。如在高速缓存页表125a中所示出地,对每个存储器页,可以有最小和最大值。可选地,最小和最大值和/或其它统计数据可以被维护用于一组存储器页或整个存储器区域。Ptime计算还可以包括对链路往返时间或从其导出的值的考虑。
[0046]—旦Ptime被计算出,在框416中,包括Ptime回退的RACK确认消息便被从目标RNIC发送给源RNIC。响应于接收到RACK消息,源RNIC设置回退时间,并保持发送额外的分组,直到此时间期满为止,如在框418中所示出地。当此时间期满时,从源RNIC到目标RNIC的对分组的以流方式的发送被中止。
[0047]在Ptime时段期间,被分配用于目标缓冲区的一个或多个存储器页被页入到系统存储器,然后它们被注册和钉扎,如在框420中所描绘地。在此阶段,目标缓冲区准备好接收数据,如在框424中由DMA写数据到缓冲区所描绘地。除了处理来自框422的以流方式发送的分组,来自框408的先前以流方式发送的已被暂时缓存在输入缓存区409中的分组也被处理。根据RDMA规范,这些分组是按序以流方式发送的,并且是按其流方式发送的顺序写入的。如果有必要,源RNIC可能必须重发送来自这些分组当中的在框408中发送的分组,如果其被目标RNIC所丢弃的话。
[0048]源和目标RNIC还可以被配置为(例如,使用管道方法)支持对与相同的数据传输(即,相同的工作请求)对应的缓冲区的动态分配。在一个实施例中,针对缓冲区的请求在针对该缓冲区的预期需要之前被发出,使得如果页错误事件延迟了对用于该缓冲区的一个或多个存储器页的注册,那么该一个或多个存储器页仍将在被需要之前被注册和钉扎。
[0049]图4描绘了支持此功能的操作和逻辑,这在判决框426中开始于确定下一缓冲区是否要被分配。如果是,那么逻辑返回框402以开始缓冲区分配过程。然而,在此情形中,对缓冲区的分配不再对应于数据传输的开始,并从而判决框404为否,使得逻辑进行到框428,在框428中,针对对缓冲区的预分配的请求被发送给目标RNIC。在一个实施例中,针对对缓冲区的分配或对缓冲区的预分配的请求是同一的-从目标RNIC的角度看来它们是相同的。在另一个实施例中,缓冲区预分配请求被用标志等标记,以向目标RNIC通告其是何种类型的缓冲分配请求。相应地,在一个实施例中,响应于检测到页错误事件,目标RNIC将不返回RACK消息,这是因为源RNIC没有计划将流式分组存储在(要被分配的)缓冲区中,直到预计缓冲区要被注册和被钉扎(假定页错误将产生)之后为止。可选地,目标RNIC可以返回RACK,其将仅被源RNIC所忽略。在与预期的页错误延迟对应的时段期间,源RNIC开始以流方式发送数据中的将被存储在预分配缓冲区中的部分数据,如框430所描绘地。优选地,对缓冲区预分配的定时将使得针对数据传输的连续的分组流不中断地进行。同时,缓冲区被预分配最好不会显著早于其被需要的时间,使得对用于进行RDMA缓冲的存储区空间的利用率较为高效。
[0050]除了前述实施例,其它方法也可以被实施,以优化数据流并限制对回退时段的使用。例如,RNIC适配器可以请求对RDMA存储器区域的段而不是对整个区域钉扎,只要顺序被保存并且随后的钉扎在数据到来之前安排好(类似于上面的管线式例子)。作为另一选择,协议也可以在建立期间提供可靠连接属性,以表明对隐式存储器注册的使用。这会告知源RNIC延迟数据流的开始,直到第一 ACK被接收、或者当开始新的RDMA传输操作时RACKPtime期满为止。
[0051]图5示出了针对RNIC500的示例性系统架构。RNIC500包括NIC系统板502,在NIC系统板502上安放了网络处理器/控制器504和包含动态随机访问存储器(DRAM) 506和SRAM 508的存储器。在一个实施例中,SRAM 508是被集成在处理器/控制器504上的。在各实施例中,NIC系统板502代表以太网控制器卡、子插件板、多芯片模块板或基板,或者其可以是诸如针对计算机服务器的主板或母板之类的计算机系统板的一部分。处理器/控制器504代表以太网处理和/或控制单元,并且可以以各种形式被嵌入,包括被嵌入成以太网控制器芯片或网络处理单元(NPU)。
[0052]在示出的实施例中,处理器/控制器504包括指令存储510、处理器引擎集群512、SRAM控制器514、DRAM控制器516、写DMA块518、读DMA块520、PCIe接口 522、暂时存储器524、哈希单元526、串行器/解串器(SerDes) 528和530、以及物理层(PHY)接口 532和534。这些组件中的每个都经由被共同描绘为内部互连云535的可应用的互连结构和逻辑而被互连到一个或多个其它组件。
[0053]指令存储510包括由处理器引擎集群执行的各种指令,包括分组标识/分类指令536,RDMA主逻辑538、MMU同步逻辑202和分组组合逻辑540。处理器引擎集群512包括多个微引擎542,每个微引擎都被耦合到本地控制存储544。在一个实施例中,诸如分组标识和分类的各种操作可以使用诸如图5中所示出的管道式架构而被执行,其中每个微引擎在管道中执行关联的操作。或者,处理器引擎集群512代表中央处理单元或控制器中的一个或多个处理器核。作为另一选择,处理器引擎512和指令存储510的组合可以被实现成嵌入的逻辑,诸如经由现场可编程门阵列(FPGA)等。
[0054]在一个实施例中,指令存储510被实现成片上存储,诸如在图5中所描绘地。可选地,指令存储510中的指令的部分或全部可以被存储在SRAM 508中(如果在片外的话),并可以经由接口 546使用SRAM控制器514而被访问。SRAM 508还可以用于存储与分组处理操作以及高速缓存页表项有关的经选择的数据和/或指令。
[0055]DRAM 506被用于实现一个或多个输入缓冲区409和一个或多个输出缓冲区548,并且经由接口 550使用DRAM控制器516而被访问。根据本文描述的实施例,写DMA块518和读DMA块520被分别配置成支持DMA写和读操作。在所示出的实施例中,DRAM 506和平台主机电路之间的DMA通信是经由被耦合到PCIe互连或PCIe扩展槽554的PCIe链路522、通过PCIe接口 522而被促成的,这使能使用PCIe协议进行DRAM 506和主机556的系统存储器之间的DMA写和读传输。
[0056]暂时存储器524和哈希单元526示出为由NIC用于促成与分组处理有关的暂时存储和哈希操作的组件。例如,哈希操作可以被实现用于导出流ID并用于分组标识。
[0057]PHY532和534促成用于RNIC的物理层操作,并用作由RNIC逻辑和组件利用的数字域与被用于经由电子信号、光学信号或有线信号发射数据的模拟域之间的桥。例如,在图5的所示出的实施例中,PHY532和534中的每个都被耦合到一对IO端口,该对端口被配置为通过诸如Cat5e或Cat6线之类的线缆发送电子信号。光学和无线信号的实施例将利用额外的电路和接口,用于促成经由光学和无线信号的连接(未示出)。与PHY操作相结合,SerDes528和530被用以将输出的分组流串行化以及将进入的分组流解串行化。
[0058]除了指令存储510中示出的指令,其它指令可以经由对处理器引擎512或其它处理单元的执行而被实施,以促成额外的操作。例如,在一个实施例中,NIC500被配置为实现在RNIC自身上的TCP/IP栈。RNIC500还可以被配置为以从操作系统TCP设施转卸负载的方式促成TCP操作,由此一旦分组被外发,RNIC500便负责处理ACK消息并当ACK消息在可应用的TCP超时时段内未被接收时重发该分组。
[0059]RDMA主逻辑536包括用于促成RDMA数据传输操作的指令和逻辑,其可以包括除对本文描述的RDMA数据传输的增强操作之外的传统RDMA操作。MMU同步逻辑202被配置为实现本文描述的MMY同步逻辑和操作。
[0060]除了支持RDMA操作,RNIC可以被配置为执行传统的NIC操作,包括与分组转发有关的操作。相应地,RNIC500可以被配置为在本地或使用系统存储器中的存储器映射IO(MMIO)地址空间来存储用于促成分组标识和分类的数据,包括转发过滤器和规则。当在本地存储时,该数据可以被存储在DRAM 506或SRAM 508。在MMO地址空间中存储的数据可以被RNIC 500经由读DMA操作来访问。通常,建立丽IO地址空间映射可以由RNIC设备驱动器协同操作系统来促成。RNIC设备驱动器还可以被配置为使能指令存储510中的指令经由操作系统而被更新。可选地,指令存储中的指令可以包括被存储在诸如闪存之类的非记忆性存储器中的固件指令,该非记忆性存储器可以被集成在处理器/控制器504上或者被安放到NIC系统板502 (未示出)。
[0061]通常,本文描述的各实施例的各方面可以适用于支持RDMA实现方案和流控制的任何现行的或未来的网络协议。这些协议包括但不限于通过以太网、iWARP和Infiniband的TCP或其它可靠传送协议。此外,被用以促成物理通信传输的任何现行的物理传送层可以被利用,包括有线传输、光学传输和无线传输。
[0062]虽然已参照特定的实现方案描述了一些实施例,但是根据一些实施例的其它实现方案也是可行的。另外,在附图中示出的和/或本文描述的元件或者其它特征的布置和/或顺序无需按照示出和描述的特定方式而被布设。根据一些实施例,许多其他布置是可行的。
[0063]在附图中示出的每个系统中,每个元件在一些情形中可以都具有相同的附图标记或不同的附图标记,以暗示所表示的元件可以不同和/或相同。然而,元件可以足够灵活地具有不同的实现方式,并与本文所示出或描述的系统中的一些或全部一起工作。附图中示出的各元件可以是相同的或不同的。哪个元件被称为第一元件以及哪个元件被称为第二元件是任意的。
[0064]在上述描述和权利要求中,可以利用术语“被耦合”和“被连接”以及它们的派生词。应该理解,这些术语并不表示彼此的同义词。相反,在特定实施例中,“被连接”可被用于表示两个或多个元件是互相直接的物理或电接触。“被耦合”可表示两个或多个元件是直接的物理或电接触。但是,“被耦合”还可表示两个或多个元件不是互相直接接触,但是仍可相互协作或相互作用。
[0065]这里有一种算法,并且通常被认为是导致所需结果的动作或操作的自给序列(self-consistent sequence)。这些动作或操作包括对物理量的物理处理。通常,但不是必要的,这些物理量表现为能够被存储、传送、组合、比较以及其它处理的电子或电磁信号的形式。已证实,主要出于公共应用的原因,将这些信号称为比特、值、元件、符号、字符、术语、数字等常常是方便的。但是,应该理解,所有这些和类似的术语与适当的物理量有关,并且仅仅是应用于这些量的方便标记。
[0066]实施例是本发明的实现方案或例子。在说明书中对“实施例”、“ 一个实施例”、“一些实施例”或“其它实施例”的引用意指结合这些实施例描述的特定的特征、结构或特性被包括在本发明的至少一些实施例而不必是所有实施例中。各处的“实施例”、“一个实施例”或“一些实施例”不必都指同样的实施例。
[0067]本文描述和示出的所有组件、特征、结构、特性等不必都被包括在一个或多个特定的实施例中。如果说明书声明了组件、特征、结构或特性例如“可以”、“可”、“能够”或“能”被包括,那么该特定的组件、特征、结构或特性不是需要被包括的。如果说明书或权利要求提到“一”或“一个”元件,那么这并不意指仅有这一个元件。如果说明书或权利要求提到“一额外的”元件,那么这并不排除有一个以上的额外的元件。
[0068]如本文的文字和附图所展现地,一些实施例的各方面可以被实现在RNIC中,该RNIC包括一个或多个集成组件(例如,半导体芯片),用于促成RDMA有关的操作的逻辑经由该一个或多个集成组件来实现。此外,本文描述的各实施例可以被实现在不仅半导体芯片内,还可以被实现在机器可读介质中。例如,上面描述的设计可以被存储在和/或嵌入到与被用于设计半导体设备的设计工具相关联的机器可读介质。实例包括以VHSIC硬件描述语言(VHDL)语言、Verilog语言或SPICE语言为格式的网表。一些网表实例包括:行为层网表,寄存器转移层(RTL)网表,门层网表以及晶体管层网表。机器可读媒质也包括具有布置信息,诸如GPS-1I文件的媒质。此外,网表文件或其他用于半导体芯片设计的机器可读媒质可以在模拟环境中使用以执行上述教导的方法。
[0069]另外,本文的一些实施例的各方面可以通过诸如但不限于RNIC驱动器、MMU同步驱动器和在RNIC上实现的固件之类的对应的软件和/或固件组件和应用来促成。因而,本发明的实施例可以被用作或支持在某种形式的处理核(例如计算机的CPU、或多核计算机的一个或多个核)上执行的软件程序、软件模块、固件、和/或分布式软件,在处理器或核上运行的虚拟机,或者以其它方式在机器可读媒质之上或之中执行或实现。机器可读媒质包括任何以可被机器(如计算机)读取的形式储存或发射信息的机制。例如,机器可读媒质可包括例如只读储存器(ROM);随机存取储存器(RAM);磁盘存储媒质;光学存储媒质;和闪存器件等等。
[0070]本发明的所示出的实施例的上述描述,包括摘要中的描述,并不是要穷举或限制于所揭示的精确形态。虽然为了说明的目的在此描述了本发明的具体实施例或示例,但如本领域熟练技术人员会意识到地,各种等效更改方案在本发明的范围内是可能的。
[0071]这些更改可以根据以上对本发明实施例的具体描述进行。所附权利要求书中使用的术语不应当被解释为把本发明局限于在详细说明书和权利要求书中所揭示的具体实施例。相反,本发明的范围完全由所附权利要求书确定,而权利要求将根据权利要求书的通用规则来被解释。
【权利要求】
1.一种方法,包括: 在第一远程直接存储器访问(RDMA)网络接口控制器(RNIC)处,接收第一消息,所述第一消息包含针对对用作目标缓冲区的存储器的注册的请求,该目标缓冲区是关于使用可靠传送协议从第二 RNIC向所述第一 RNIC进行的RDMA数据传输而将被利用的;以及 响应于关于所述请求并导致页错误事件的存储器注册操作,发送第一确认消息给所述第二 RNIC,所述第一确认消息确认所述第一消息已被接收并包含指示页错误事件正在发生的信息。
2.根据权利要求1所述的方法,其中,所述第一确认消息包括回退时间,并包括针对所述第二 RNIC不发送与所述RDMA数据传输对应的分组,直到所述回退时间期满为止的请求。
3.根据权利要求1或2所述的方法,还包括: 在所述页错误延迟期间从所述第二 RNIC接收多个分组; 当所述页错误延迟正在发生时,将所述分组暂时缓存在所述第一 RNIC上;以及 在所述页错误延迟结束后,发送第二确认消息给所述第二 RNIC,所述第二确认消息指示所述多个分组已被接收。
4.根据前述权利要求中的任意权利要求所述的方法,其中,所述第一RNIC被安装在主机平台中,所述主机平台具有用于RDMA缓冲区的系统存储器和包括被用以管理对所述系统存储器的访问的存储器 管理单元(MMU)的处理器,并且其中,利用了虚拟存储器的操作系统正在所述主机平台上运行,所述方法还包括:实现一种机制以将由所述MMU用于被分配给RDMA目标缓冲区的页的页表信息的一部分与由所述第一 RNIC在本地访问的所述页表信息的高速缓存拷贝同步。
5.根据权利要求4所述的方法,其中,与请求对应的要被注册的存储器包括一个或多个存储器页,所述方法还包括:向所述MMU提供标记,所述标记请求对所述一个或多个存储器页的钉扎。
6.根据权利要求5所述的方法,还包括:在所述RDMA数据传输已经完成后向所述MMU提供标记,所述标记标识所述一个或多个存储器页可能是未被钉扎的。
7.根据前述权利要求中的任意权利要求所述的方法,其中,所述第一RNIC被安装在主机平台中,所述主机平台具有用于RDMA缓冲区的系统存储器和包括被用以管理对所述系统存储器的访问的存储器管理单元(MMU)的处理器,并且其中,利用了虚拟存储器的操作系统正在所述主机平台上运行并利用了核心存储器中的分页表,所述方法还包括:经由所述第一 RNIC更新所述分页表中的页表项以标识对应的存储器页是被钉扎的。
8.根据权利要求7所述的方法,还包括:经由所述第一RNIC更新页表项,以标识对应的存储器页在完成对利用了所述存储器页的RDMA目标缓冲区的使用后是未被钉扎的。
9.根据前述权利要求中的任意权利要求所述的方法,其中,所述第一RNIC被安装在主机平台中,所述主机平台具有用于RDMA缓冲区的系统存储器和包括被用以管理对所述系统存储器的访问的存储器管理单元(MMU)的处理器,并且其中,利用了虚拟存储器的操作系统正在所述主机平台上运行并利用了核心存储器中的分页表,所述方法还包括:经由所述第一 RNIC检测所述页错误已经发生。
10.根据前述权利要求中的任意权利要求所述的方法,还包括:确定页错误将在尝试注册将被用于所述目标缓冲区的存储器之前产生。
11.根据前述权利要求中的任意权利要求所述的方法,还包括: 接收针对在与单个RDMA工作请求对应的正在进行的RDMA数据传输期间,分配目标缓冲区或扩展现有目标缓冲区的尺寸的请求;以及 使用存储器的当前被页出的一个或多个页来分配所述目标缓冲区或扩展所述现有目标缓冲区的尺寸,其中,所述一个或多个页被页入、被注册并被钉扎。
12.根据前述权利要求中的任意权利要求所述的方法,其中,针对分配所述目标缓冲区或扩展所述现有目标缓冲区的尺寸的请求包含将所述请求标识为缓冲区预分配请求的标记,并且对存储器的已页出的页的使用导致页错误,所述方法还包括:响应于所述页错误,不向所述第二 RNIC发送包括回退时间的确认消息。
13.一种装置,包括: 网络接口,其配置为使用可靠传送协议来发送和接收分组化的数据;以及 远程直接存储器访问(RDMA)逻辑,其配置为被用以当所述装置正在工作时促成执行包括如下的操作: 接收第一消息,所述第一消息包含针对对用作目标缓冲区的存储器的注册的请求,该目标缓冲区是关于使用可靠传送协议从远程装置进行的RDMA数据传输而将被利用的;以及 响应于关于所述请求并导致页错误事件的存储器注册操作,发送第一确认消息给所述第二装置,所述第一确认消息确认所述第一消息已被接收并包含指示页错误延迟事件正在发生的信息,其中,所述第一确认消息包括回退时间,并包括针对所述远程装置不发送与所述RDMA数据传输对应的分组,直到所述回退时间期满为止的请求。
14.根据权利要求13所述的装置,其中,所述装置包括启用了RDMA的网络接口控制器(RNIC)。
15.根据权利要求13或14所述的装置,其中,所述装置被配置为被安装在主机平台中,所述主机平台具有用于RDMA缓冲区的系统存储器和包括被用以管理对所述系统存储器的访问的存储器管理单元(MMU)的处理器,其中,在所述主机平台工作期间,利用了虚拟存储器的操作系统正在所述主机平台上运行,并且其中,所述装置还包括:一种机制,用以将由所述MMU用于被分配给RDMA目标缓冲区的页的页表信息的一部分与由所述第一 RNIC在本地访问的所述页表信息的高速缓存拷贝同步。
16.根据权利要求13-15中的任意权利要求所述的装置,其中,所述装置被配置为被安装在主机平台中,所述主机平台具有用于RDMA缓冲区的系统存储器和包括被用以管理对所述系统存储器的访问的存储器管理单元(MMU)的处理器,其中,在所述主机平台工作期间,利用了虚拟存储器的操作系统正在所述主机平台上运行并利用了核心存储器中的分页表,并且其中,所述装置还被配置为:更新所述分页表中的页表项以标识对应的存储器页是被钉扎的。
17.根据前述权利要求13-15中的任意权利要求所述的装置,其中,所述装置还被配置为当工作时执行包括如下的操作: 接收针对在与单个RDMA工作请求对应的正在进行的RDMA数据传输期间,动态分配目标缓冲区或扩展现有目标缓冲区的尺寸的请求;以及 使用存储器的当前被页出的一个或多个页来分配所述目标缓冲区或扩展所述现有目标缓冲区的尺寸,其中,所述一个或多个页被页入、被注册并被钉扎。
18.—种方法,包括: 从第一远程直接存储器访问(RDMA)网络接口控制器(RNIC)向第二 RNIC发送第一消息,所述第一消息包含针对对用作目标缓冲区的存储器的注册的请求,该目标缓冲区是关于使用可靠传送协议从所述第一 RNIC向所述第二 RNIC进行的RDMA数据传输而将被利用的; 从所述第一 RNIC向所述第二 RNIC以流方式发送与所述RDMA数据传输对应的第一组多个分组; 从所述第二 RNIC接收第一确认消息,所述第一确认消息确认所述第一消息已被接收,并包含指示页错误延迟事件正在发生的信息以及回退时间;以及 作为响应,利用所述回退时间以供回退定时器使用,并且不从所述第一 RNIC向所述第二 RNIC发送针对所述RDMA数据传输的任何额外的分组,直到所述回退定时器期满为止。
19.根据权利要求18所述的方法,还包括:在与对所述回退时间的使用相关联的回退时段期间,不重发所述第一组多个分组中的任何一个。
20.根据权利要求18或19所述的方法,其中,所述RDMA数据传输对应于针对传输具有文件尺寸的文件的RDMA工作请求,并且其中,在所述第一消息中针对其请求对存储器的注册的所述目标缓冲区具有比所述文件尺寸小的尺寸,并且包括第一目标缓冲区,所述方法还包括: 从所述第一 RNIC向所述第二 RNIC发射与所述文件的RDMA数据传输对应的分组流; 在所述文件的所述RDMA数据传输期间,发送第二消息,所述第二消息包含针对对用作第二目标缓冲区的存储器的隐式注册的请求,该第二目标缓冲区是关于所述文件的所述RDMA数据传输而将被利用的。
21.根据权利要求20所述的方法,其中,所述第二消息是使用提前时段在所述第二目标缓冲区被需要之前被发送的,所述提前时段大于预计的页错误延迟,所述预计的页错误延迟可能在对用于所述第二目标缓冲区的所述存储器的所述隐式注册期间产生。
22.—种装置,包括: 网络接口,其配置为使用可靠传送协议来发送和接收分组化的数据;以及 远程直接存储器访问(RDMA)逻辑,其配置为被用以当所述装置正在工作时促成执行包括如下的操作: 从所述装置向远程装置发送第一消息,所述第一消息包含针对对用作目标缓冲区的存储器的注册的请求,该目标缓冲区是关于使用可靠传送协议从所述装置向所述远程装置进行的RDMA数据传输而将被利用的; 向所述远程装置以流方式发送与所述RDMA数据传输对应的第一组多个分组; 从所述远程装置接收第一确认消息,所述第一确认消息确认所述第一消息已被接收,并包含指示页错误延迟事件正在发生的信息以及回退时间;以及 作为响应,利用所述回退时间以供回退定时器使用,并且不向所述远程装置发送针对所述RDMA数据传输的任何额外的分组,直到所述回退定时器期满为止。
23.根据权利要求22所述的装置,其中,所述装置还被配置为:在与对所述回退时间的使用相关联的回退时段期间,不重发所述第一组多个分组中的任何一个。
24.根据权利要求22或23所述的装置,其中,所述RDMA数据传输对应于针对传输具有文件尺寸的文件的RDMA工作请求,并且其中,在所述第一消息中针对其请求对存储器的注册的所述目标缓冲区具有比所述文件尺寸小的尺寸,并且包括第一目标缓冲区,所述方法还包括: 向所述远程装置发射与所述文件的RDMA数据传输对应的分组流; 在所述文件的所述RDMA数据传输期间,发送第二消息,所述第二消息包含针对对用作第二目标缓冲区的存储器的隐式注册的请求,该第二目标缓冲区是关于所述文件的所述RDMA数据传输而将被利用的。
25.根据权利要求24所述的装置,其中,所述第二消息是使用提前时段在所述第二目标缓冲区被需要之前被发送的,所述提前时段大于预计的页错误延迟,所述预计的页错误延迟可能在对用于所述第二目标缓冲区的所述存储器的所述隐式注册期间产生。
26.一种计算机系统,包括: 系统存储器,其包括多个存储器页; 处理器,其被操作地耦合到所述系统存储器,包括用于管理对系统存储器的页访问的存储器管理单元(MMU) ‘ 辅助存储设备; 输入输出(IO)接口组件,其被操作地耦合到或集成在所述处理器中,并且被操作地耦合到所述存储器和所述辅 助存储设备;以及 网络适配器,其被操作地耦合到所述IO接口组件,并且包括被配置为经由驱动器与所述MMU通过接口进行连接的逻辑,其中,所述网络适配器还包括用于执行包括如下的远程直接存储器访问(RDMA)网络操作的逻辑: 从远程计算机系统接收第一消息,所述第一消息包含针对对存储器缓冲区的注册的请求,所述存储器缓冲区将被用于存储与使用可靠传送协议从所述远程计算机系统向所述计算机系统进行的第一 RDMA数据传输对应的数据; 关于注册要被用于所述缓冲区的存储器,标识页错误已发生;以及向所述远程计算机系统发送第一确认消息,所述第一确认消息确认所述第一消息已被接收,并包含指示页错误延迟事件正在发生的信息。
27.根据权利要求26所述的计算机系统,其中,所述第一确认消息包括回退时间,并包括针对所述远程计算机系统不发送与所述第一 RDMA数据传输对应的分组,直到所述回退时间期满为止的请求。
28.根据权利要求26或27所述的系统,其中,被用以与所述MMU通过接口进行连接的所述逻辑被配置为:将由所述MMU用于被分配给RDMA目标缓冲区的页的页表信息的一部分与由所述网络适配器在本地访问的所述页表信息的高速缓存拷贝同步。
29.根据权利要求26-28中的任意权利要求所述的系统,其中,所述网络适配器经由外围组件互连高速(PCIe)链路而被操作地耦合到所述IO接口组件。
30.根据权利要求26-29中的任意权利要求所述的系统,其中,所述网络适配器被配置为执行包括如下的操作: 发送第二消息,所述第二消息包含针对对用作目标缓冲区的存储器的注册的请求,该目标缓冲区是关于使用可靠传送协议从所述系统向所述远程装置进行的第二 RDMA数据传输而将被利用的; 向所述远程装置以流方式发送与所述第二 RDMA数据传输对应的第一组多个分组;从所述远程装置接收第一确认消息,所述第一确认消息确认所述第二消息已被接收,并包含指示页错误延迟事件正在发生的信息以及回退时间;以及 作为响应,利用所述回退时间以供回退定时器使用,并且不向所述远程装置发送针对所述第二 RDMA数据传输的任何额外的分组,直到所述回退定时器期满为止。
【文档编号】G06F12/00GK104011696SQ201380004588
【公开日】2014年8月27日 申请日期:2013年6月25日 优先权日:2012年12月11日
【发明者】A·R·戴维斯, R·J·伍德拉夫 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1