CN101115054B - 用于网络接口控制器的存储器映射的缓冲器 - Google Patents
用于网络接口控制器的存储器映射的缓冲器 Download PDFInfo
- Publication number
- CN101115054B CN101115054B CN200710137000.6A CN200710137000A CN101115054B CN 101115054 B CN101115054 B CN 101115054B CN 200710137000 A CN200710137000 A CN 200710137000A CN 101115054 B CN101115054 B CN 101115054B
- Authority
- CN
- China
- Prior art keywords
- memory
- processing unit
- processor
- data
- network interface
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
用于网络接口控制器的存储器映射的缓冲器描述了用于提供具有存储器映射的缓冲器(300)的网络接口控制器(NIC,218)的***和方法。一种处理***包括多个处理单元(200),每个所述处理单元包括至少一个处理器(212)和至少一个***存储器(214)。NIC(218)与每个所述处理单元(200)相关联,以用于在所述各处理单元(200)之间发送和接收数据。每一个所述单元(200)进一步包括存储器互连(216),所述NIC(218)被直接连接到该存储器互连,并且所述NIC(218)包括至少一个存储器映射的缓冲器(300)。
Description
技术领域
本发明一般而言涉及数据通信***和方法,更特别地涉及其中为网络接口控制器提供了存储器映射的接收和发送缓冲器的数据通信***和方法。
背景技术
如图1所示,网络接口控制器(NIC)是一种支持计算机之间的数据传输的硬件设备。其中,对称多处理器(SMP)***10包括多个中央处理器单元(CPU)12,所述各中央器处理单元通过存储器互连16共享存储器单元14。虽然SMP10被示出为具有四个CPU(内核),但是本领域技术人员将理解,SMP10可以具有更多或更少的CPU。SMP10在NIC18的控制下通过以太网连接和结构(开关)22发送消息给其他SMP20、30和40。所述NIC18一般将具有与其相关联的处理器(未示出),该处理器或者是作为该NIC的组成部分或者是以帮助器处理器的形式,从而该NIC具有足够的智能来解释各种命令。所述NIC18以及各种I/O设备42、44通过I/O互连46被连接到所述SMP的剩余部分。该I/O互连46通过I/O适配器48(例如桥接器)与存储器互连16通信。
在这种***中,所传输的数据的通常的源和目的地是页式虚拟存储器。页式虚拟存储器提供虚拟地址,所述虚拟地址被转换或者映射到物理页面上,并且允许把虚拟页面换出到盘上或者从主存储器中移除以及稍后将其从盘上换入到新的物理页面位置处。操作***可以对所谓的“未钉住的(unpinned)”虚拟页面单方面执行页面交换。因此,在这种***上操作的应用软件典型地使用地址转换硬件来访问主存储器,所述地址转换硬件确保正确的物理页面被访问,例如确保所述操作***尚未针对该应用软件需要访问的页面发起页面交换。软件访问在需要把数据换出的时间间隔期间暂停,并且在把数据换入到新的物理位置处时通过访问该位置而恢复。
一些连网解决方案通过提供软件以把数据从未钉住的虚拟存储器拷贝到已钉住的(pinned)接口存储器来解决与虚拟页面交换期间的软件暂停相关联的停机时间。已钉住的存储器由不能被所述操作***交换到盘上的页面构成。在这种***中,所述NIC18将典型地只访问已钉住的接口存储器。这简化了由该NIC18执行的直接存储器访问(DMA)传输,这是由于在网络操作期间从不交换数据,这样又确保数据在整个NIC的DMA数据传输期间保持可访问,并且确保该数据的物理地址保持恒定。然而,这种解决方案需要以数据拷贝(例如从未钉住的虚拟存储器拷贝到可以由NIC18访问的已钉住的***缓冲器)的形式的额外开销,所述数据拷贝利用了重要的***资源。
由未钉住的虚拟存储器所造成的所述问题的另一种解决方案消除了上面描述的数据拷贝,但是代之以要求所述NIC18调用一个操作***功能以便在直接从/向虚拟页面发送数据之前钉住该页面。另外,所述页面稍后必须由另一个NIC/操作***交互来释放(unpin),以便允许在网络活动完成之后进行页面交换。虽然这消除了到已钉住的页面的拷贝,但是所述NIC18现在必须调用代价高昂的页面钉住和页面释放功能。这些操作中的每一个都需要所述NIC的处理器与所述操作***之间的通信。当这些通信需要所述I/O互连46的中断或轮询时,所述中断和轮询在资源利用效率方面的代价是十分高昂的。
相应地,将希望提供使得NIC能够更加高效地处理数据传输问题的机制和方法。
发明内容
根据本发明的一个示例性实施例,一种处理***包括:多个处理单元,每个处理单元包括至少一个处理器和至少一个***存储器;以及网络接口控制器(NIC),其与所述多个处理单元当中的每一个相关联,以用于在各处理单元之间发送和接收数据,其中,所述多个单元当中的每一个进一步包括存储器互连,所述NIC被直接连接到该存储器互连,并且所述NIC包括至少一个存储器映射的缓冲器。
根据本发明的另一个示例性实施例,一种用于在处理***中传送数据的方法包括以下步骤:提供多个处理单元,每个处理单元包括至少一个处理器和至少一个***存储器;以及通过与所述多个处理单元当中的每一个相关联的网络接口控制器(NIC)在各处理单元之间发送和接收数据,其中,所述多个单元当中的每一个进一步包括存储器互连,所述NIC被直接连接到该存储器互连,并且所述NIC包括至少一个存储器映射的缓冲器。
附图说明
附图被结合在说明书中并且构成说明书的一部分,该附图示出本发明的实施例并且与下面的描述一起解释本发明。在附图中:
图1示出一个示例性处理***,其中网络接口控制器通过I/O互连被连接到该处理***;
图2示出一个示例性处理***,其中NIC通过到根据一个示例性实施例的存储器互连的直接连接被连接到该处理***;
图3描绘根据本发明一个示例性实施例的NIC的一部分,其包括存储器映射的接收缓冲器;
图4是描绘根据本发明一个示例性实施例的用于传送数据的一般方法的流程图;
图5是描绘根据本发明一个示例性实施例的用于管理存储器的方法的流程图;以及
图6是描绘根据本发明另一个示例性实施例的用于管理存储器的方法的流程图。
具体实施方式
下面对于本发明的各示例性实施例的描述是参考附图进行的。不同附图中的相同附图标记标识相同或类似的元件。下面的详细描述不限制本发明。代之以,本发明的范围由所附权利要求书来限定。
根据本发明的各示例性实施例,在所述NIC内的发送及接收命令和数据的缓冲器被直接映射到所述处理器的存储器互连(有时也被称作“存储器总线”、“一致性互连”或“前端总线”)上。这尤其允许:把数据高效地拷贝到NIC;把命令高效地拷贝到NIC;从NIC高效地拷贝数据;以及高效地检测数据到达和命令完成。为了实现这种存储器映射的缓冲器,SMP的总体架构被修改成使得所述NIC被直接连接到所述存储器互连(而不是如图1所示的那样通过I/O互连46和I/O适配器48间接连接)。现在将相对于图2描述根据一个示例性实施例的支持这种存储器映射的发送和接收缓冲器的一般架构。
其中,SMP***200包括多个中央处理器单元(CPU)212,所述各中央处理器单元通过存储器互连216共享存储器单元214。虽然SMP200被示出为具有四个CPU(内核),但是本领域技术人员将理解,SMP200可以具有更多或更少的CPU。SMP200在NIC218的控制下通过以太网连接和结构(开关)220发送消息给其他SMP200。所述NIC218一般将具有与其相关联的处理器(未示出),该处理器或者是作为该NIC的组成部分或者是以帮助器处理器的形式,从而该NIC具有足够的智能来解释各种命令。各种I/O设备230(例如显示器、第二存储器存储设备等等)通过I/O适配器238(例如桥接器)和I/O互连240被连接到所述存储器互连216。从图1与图2的比较可以看出,图2的示例性实施例使得所述NIC218被直接连接到该存储器互连216而不是通过I/O互连和I/O适配器被间接连接。这种架构尤其便于在所述NIC218内的发送和/或接收缓冲器的存储器映射。如在此所用的术语“存储器映射”是指各CPU212通过存储器214内的对应于缓冲器的保留存储器位置直接向(或从)所述NIC218内的发送(或接收)缓冲器进行写入(或读取)的能力。
因此,图2的示例性***的接收侧(其一部分被显示为图3)将包括一个或多个存储器映射的接收缓冲器300。如图中所示,NIC218被直接连接到存储器互连216,这是因为数据在一方面的NIC218与另一方面的***存储器308或处理器304之间的它的路线上不必通过I/O总线。如在此所用的短语“直接连接”不排除在缓冲器与存储器互连之间提供接口(例如存储器接口电路305)。
在图3的左侧,数据通过例如以太网接口到达,并且被接收队列填充电路302放置到存储器映射的接收缓冲器300中。根据该示例性实施例,该存储器映射的接收缓冲器300是循环队列数据结构,但是本发明不限于循环队列。然而,在该实例中,接收缓冲器300在其中(在“活动区”中)存储有由尾指针和头指针标识的内容,所述尾指针和头指针分别表示最近存放的数据和最早存放的数据。在接收到数据时,数据被***在所述接收缓冲器300的尾部,并且把尾指针移动越过新***的数据。通过把头指针移动越过不需要的数据来从该接收缓冲器300的所述活动区中移除数据。
当所述接收缓冲器300为满时,可以丢弃进入的分组,以便防止缓冲器溢出。当使用可靠的协议(例如传输控制协议或TCP)来重传分组时,即使丢弃了分组也可以保持正确的操作。可以使用其他技术来防止缓冲器溢出。例如,代替丢弃最近接收的帧,所述***可以丢弃较早接收的帧,比如最早接收的帧。所述接收队列填充电路302把来自到达的以太网帧的数据存放到所述接收缓冲器300的尾指针之外的区域内。把尾指针前进越过来自该以太网帧的有效数据。把尾指针前进越过到达的数据表明新的数据已经到达并且可以被处理。所述接收缓冲器的头、尾指针也被存储器映射,即与该接收缓冲器300的头指针和尾指针相关联的值在***存储器308的用户缓冲区306内的预定存储器位置处被自动更新(通过存储器接口电路305)。这使得所述头、尾指针值能够由处理器304直接访问,该处理器可以利用所述存储器互连216进行存储器引用。这又使得处理器304能够例如读取所述接收缓冲器尾指针并且将其当前值与先前的接收缓冲器尾指针值进行比较。当该值改变时,该处理器304就知道新的以太网帧数据已经到达。
后面的这一特征说明了根据本发明的各示例性实施例的处理***和方法利用高速缓存一致性存储器互连访问来实现所述NIC218的高效轮询的能力。只要所述接收缓冲器300内的数据保持不变,所述处理器304就可以读取被保存在该处理器内的该数据的高速缓存值。这例如可能在没有消息到达该NIC218内的时间段期间发生。当新的消息从网络到达时,数据被递送到所述接收缓冲器300中,并且所述接收队列填充电路使得该接收缓冲器300内的数据改变值。当该接收缓冲器300内的值改变并且该数据被所述处理器304读取时,所述数据基于操作在所述***中的高速缓存一致性共享存储器协议而被传输到该处理器304,并且该处理器304随后在其高速缓冲存储器(图3中未示出)中观察改变的值。这使得该处理器304检测到新到达的消息。注意,直到接收到消息为止,这种轮询技术不需要从所述接收缓冲器300向所述轮询处理器传输信息。
除了实现高效轮询之外,本发明的各示例性实施例还提供到其后接收位置的高效数据传输。数据从驻留在所述接收缓冲器300内的以太网帧被传输到一个或多个用户应用内的一个或多个应用缓冲器(未示出)。较高级别软件协议可以指定数据递送指令,所述数据递送指令被存储在***存储器308中的递送指令数据库310内。这些递送指令可以从该数据库310被选择性地检索,以便用于根据被嵌入在所述以太网帧内的报头信息来处理所接收的数据。所述应用可以具有复杂的数据递送要求,其允许把到达的数据与标签信息(或其他信息)进行匹配,以便在所述接收缓冲器300中接收到数据之后确定该数据的适当位置。例如,消息传递接口(MPI)技术提供标签和排序信息,所述标签和排序信息将被匹配以便确定要把到达的消息放置到哪个读取缓冲器中。在另一个例子中,报头数据可以表明数据应当被递送到的特定TCP套接字。低级别的接收缓冲器处理软件随后可以把具有单个拷贝的数据从所述接收缓冲器300递送到适当的目标位置。注意,尽管该示例性实施例在单个接收缓冲器300的背景下描述了接收操作,但是也可以以类似的方式实现多个接收缓冲器以便例如支持分散操作。
可以被存储在递送指令数据库310内的数据递送指令的另一个例子是支持远程直接存储器访问(RDMA)的那些递送指令。RDMA递送指令描述了可以把数据直接放到其中的缓冲区(未示出),比如包含在虚拟存储器中是连续的数据的物理页面列表。进入的以太网分组可以携带所述RDMA递送指令的名称、缓冲器偏移量、长度和实际数据。利用所引用的RDMA递送指令,所述数据被递送到开始于所期望的偏移量的缓冲区内。该RDMA递送指令可以被重复使用,直到所有数据都已被成功地放置在该缓冲器中。此时,可以从所述RDMA递送数据库中除去该指令。可以使用一个高层协议来向/从该递送指令数据库310安装/除去RDMA递送指令,并且随后一个低层协议使用这些递送指令来直接递送数据。
因此,当进入的以太网帧被处理时,所述处理器304可以使用从所述以太网分组获得的信息以及从所述递送数据库310获得的信息以便确定目标地址位置。DMA命令随后被***在DMA命令缓冲器320的尾部,以便通过DMA引擎324发起适当的DMA传输。当DMA命令完成时,DMA命令头指针移动越过所述命令以表示命令完成。当已知DMA命令完成时,就不再需要所述接收缓冲器300内的已被拷贝到最终用户缓冲器位置处的数据。于是可以把该接收缓冲器的头指针移动越过这种数据而不会有数据丢失。
在所述NIC218内的发送侧操作可以以与上面讨论的接收侧操作几乎相同的方式来执行。可以为该NIC218提供一个存储器映射的发送缓冲器(未示出)或者多个存储器映射的发送缓冲器,该NIC218具有被分配在***存储器308的用户缓冲区306内的相应的存储器空间。所述处理器304可以容易地监视发送活动,例如通过将其高速缓存的发送值(例如头指针和尾指针)与所述***存储器308中的相应值进行比较。实现具有存储器映射的发送和接收缓冲器的NIC的本发明的各示例性实施例提供了许多好处,其中的一些在上面被提到。除了可以直接访问缓冲器数据的诸如处理器304之类的处理器之外,运行在主机操作***上的程序线程(典型地是核心线程)可以通过存储器映射的命令和数据缓冲器直接与所述NIC218通信以便进行发送和接收。
例如,运行在主机操作***内的程序线程可以高效地发起发送侧或接收侧DMA,并且检测未决的发送侧或接收侧DMA操作的完成。通过对存储器映射的命令缓冲器320(其还具有被分配在用户缓冲器部分306内的相应的存储器空间)进行写入来发起DMA,并且通过从存储器映射的命令缓冲器320进行读取来检测DMA完成。针对命令完成的轮询是高效的,这是因为可以对DMA完成的状态进行高速缓存以便在处理器304内进行重复读取,并且直到该DMA的完成状态改变值为止都不需要把命令状态从NIC218传输到处理器304。每当表示该DMA的完成状态的数据值改变时,可以使得所述处理器的高速缓存(未示出)内的相应数据无效。对于DMA完成状态的任何后续读取都导致新的有效数据从所述NIC218被传输到所述处理器304。因此,运行在所述主机操作***上的程序线程可以高效地发起DMA传输并且检测该DMA传输的完成。
因此,根据本发明的一个一般示例性实施例,一种用于在处理***中传送数据的方法包括图4的流程图中所示出的步骤。在图中,在步骤400提供多个处理单元,每个处理单元包括至少一个处理器和至少一个***存储器。在步骤410通过与所述多个处理单元当中的每一个相关联的NIC在各处理单元之间发送及接收数据,其中所述多个单元当中的每一个还包括存储器互连,所述NIC被直接连接到该存储器互连,并且所述NIC包括至少一个存储器映射的缓冲器。
如上面在背景技术部分中所述,与NIC数据传输相关联的页面钉住也是SMP***设计者(以及其他处理***的设计者)所感兴趣的问题。本发明的各示例性实施例还通过提供存储器映射的接收和发送缓冲器来便于页面钉住,所述存储器映射的接收和发送缓冲器允许运行在主机操作***内的核心程序针对基于DMA的拷贝高效地控制页面钉住,以用于网络发送或网络接收的目的。在一个示例性实施例中,运行在所述主机操作***上的一个或多个核心程序线程可以通过所述发送和接收过程来调节大量数据的流动。这允许对所需要的页面进行高效的钉住和释放,同时不需要钉住过多的页面,正如下面相对于图5和图6的流程图所述。
为了进行发送,在图5中,一个线程在步骤500执行发送所需的页面钉住动作(例如向所述操作***通知:直到另行通知为止,某些页面将不被交换),确定已钉住的页面的固定的物理地址(步骤502),并且随后发起DMA以便从已钉住的页面发送数据(步骤504)。当一个线程在步骤506检测到消息发送完成时(例如通过识别出与所述存储器映射的发送缓冲器相关联的值的改变,比如头指针值的改变),该线程随后可以在步骤508释放已经被发送的页面。在必要时可以重复图5中所示出的过程(顺序地或者并行地重复,例如以流水线的方式),从而使得在检测DMA发送进展时,可以按照需要钉住新的页面而不会不必要地钉住过多页面。
为了进行接收,在图6中,一个线程在步骤600执行接收所需的页面钉住动作,确定已钉住页面的固定的物理地址(步骤602),随后发起DMA以便把所接收的数据拷贝到所钉住的位置(步骤604)。当一个线程在步骤606检测到消息接收完成时(例如通过检测与所述存储器映射的接收缓冲器相关联的值的改变,比如尾指针值的改变),该线程在步骤608于是可以在随后基于如上所述的递送指令把拷贝到所述已钉住页面的数据递送到例如应用缓冲器之后释放所述页面。可以重复图6中所示出的过程(顺序地或者并行地重复,例如以流水线的方式),从而使得在检测DMA接收进展时,可以按照需要钉住新的页面而不会不必要地钉住过多页面。
可以利用通过图2的网络发送消息的协议来协调发送侧与接收侧进展。例如,接收NIC218可以钉住与其接收侧缓冲器300相关联的页面。该接收NIC218随后可以通过发送一条消息向发送器(例如不同的SMP200内的另一个NIC218)通知:该接收NIC218已经准备好把信息块接收到该接收侧缓冲器300中。该发送器随后可以钉住与相应的发送侧缓冲器相关联的页面。随后可以利用DMA来发送数据,以便把来自发送用户的缓冲器的信息拷贝到所述网络。可以利用DMA把所接收的数据从所述NIC的接收缓冲器300拷贝到用户缓冲区306内的接收用户的缓冲器。在拷贝完成之后,所述接收NIC可以释放与所述接收缓冲器300相关联的页面,并且发送一条消息给所述发送NIC以表明接收完成并且所述发送侧缓冲器也可以被释放。接收器和发送器的页面钉住、基于DMA的发送和基于DMA的接收、检测DMA完成、以及接收器和发送器的页面释放的这一循环都可以在没有中断或***调用的情况下执行,这是因为所述各NIC被直接连接到其相应的存储器互连。该循环可以被重复,以便通过网络移动大量数据而不会不必要地钉住过多存储器,也不会产生用于处理***调用或中断的昂贵开销。
根据这些示例性实施例的***和方法还可以被用来执行其他功能。例如,所述接收缓冲器300尤其可以被用来实现乱序递送。例如,可以推迟对第一以太网帧的处理,其中对于该第一以太网帧的递送指令尚不可用。在第一帧的处理被推迟的同时,由所述NIC218相对于第一以太网帧随后接收的第二以太网帧可以被处理及递送。与此同时,可以由一个更高级别的应用把递送指令***到用于第一以太网帧的递送指令数据库310中。接收处理随后可以根据所提供的指令来递送该第一以太网帧。
因此,根据各示例性实施例,一个核心模式帮助器线程可以访问SMP操作***数据结构以及直接与处在前端总线上的NIC通信。使用核心模式线程使得根据这些示例性实施例的处理***和方法能够执行整个钉住、发送/接收数据、释放循环,而不会在轮询期间浪费总线周期并且不会在例如I/O总线上使用昂贵的中断。
前面对本发明的各示例性实施例的描述提供了说明和描述,但是其不打算是穷举的或者把本发明限制为所公开的精确形式。许多修改和变型根据上面的教导是可能的,或者可以在实践本发明的过程中获得。后面的权利要求书及其等同物限定本发明的范围。
Claims (10)
1.一种处理***,包括:
多个处理单元(200),每个所述处理单元(200)包括至少一个处理器(212)和至少一个***存储器(214);以及
网络接口控制器NIC(218),其与所述多个处理单元(200)当中的每一个相关联,以用于在所述处理单元(200)之间发送和接收数据;
其中,所述多个处理单元当中的每一个进一步包括存储器互连(216),所述网络接口控制器NIC(218)被直接连接到该存储器互连,并且所述网络接口控制器NIC(218)包括从所述多个处理单元直接能读取和写入访问的存储器映射的接收和发送缓冲器,其中所述存储器映射的接收和发送缓冲器允许运行在主机操作***内的核心程序针对基于直接存储器访问DMA的拷贝来控制页面钉住;以及
其中,所述至少一个处理器(212)和至少一个***存储器与所述网络接口控制器共享该存储器互连。
2.根据权利要求1所述的***,其中,所述网络接口控制器NIC(218)还包括:
其中所述至少一个***存储器(214)的一部分被分配用于对存储器映射的发送缓冲器和存储器映射的接收缓冲器的至少其中之一进行存储器映射。
3.根据权利要求2所述的***,其中,所述存储器映射的发送缓冲器和所述存储器映射的接收缓冲器的所述至少其中之一是具有头指针和尾指针的循环队列,并且进一步地,其中所述头指针和所述尾指针的当前值被映射到所述***存储器(214)内的预定位置(306)。
4.根据权利要求3所述的***,其中,所述至少一个处理器(212)把所述头指针和所述尾指针的其中之一的先前存储的值与所述头指针和所述尾指针的所述其中之一的相应的当前值进行比较,以作为用于所述存储器映射的接收缓冲器(300)的轮询机制。
5.根据权利要求3所述的***,其中,所述至少一个处理器(212)把所述头指针和所述尾指针的至少其中之一的先前存储的值与所述头指针和所述尾指针的所述至少其中之一的相应的当前值进行比较,以便确定是否要释放所述***存储器(214)中的一个或多个页面。
6.根据权利要求1所述的***,还包括:
I/O互连(240),I/O设备(230)通过该I/O互连(240)与所述至少一个处理器(212)和至少一个***存储器(214)通信;以及
I/O适配器(238),用于把所述I/O互连(240)连接到所述存储器互连(216)。
7.根据权利要求1所述的***,其中,所述***存储器(214)还包括递送指令数据库(310),并且所述至少一个处理器(212)操作用于根据来自所述递送指令数据库(310)的指令来转发在所述存储器映射的接收缓冲器中接收到的数据。
8.根据权利要求7所述的***,其中,所述处理器(212)根据来自所述递送指令数据库(310)的所述指令执行对所述数据的直接存储器访问(DMA)传输。
9.根据权利要求6所述的***,还包括:
运行在所述至少一个处理器(212)上的操作***应用;
在所述操作***下操作的核心模式帮助器线程,其能够访问操作***数据结构并且能够与所述网络接口控制器NIC(218)直接通信,
其中,所述核心模式帮助器线程在不中断所述I/O互连(240)的情况下执行钉住、发送/接收数据、释放循环。
10.一种用于在处理***中传送数据的方法,包括以下步骤:
提供(400)多个处理单元(200),每个所述处理单元包括至少一个处理器(212)和至少一个***存储器(214);以及
通过与所述多个处理单元当中的每一个相关联的网络接口控制器NIC(218)在所述处理单元(200)之间发送和接收数据(402);
其中,所述多个处理单元(200)当中的每一个进一步包括存储器互连(216),所述网络接口控制器NIC(218)被直接连接到该存储器互连,并且所述网络接口控制器NIC(218)包括从所述多个处理单元直接能读取和写入访问的存储器映射的接收和发送缓冲器,其中所述存储器映射的接收和发送缓冲器允许运行在主机操作***内的核心程序针对基于直接存储器访问DMA的拷贝来控制页面钉住;以及
其中,所述至少一个处理器(212)和至少一个***存储器与所述网络接口控制器共享该存储器互连。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/493285 | 2006-07-26 | ||
US11/493,285 US9137179B2 (en) | 2006-07-26 | 2006-07-26 | Memory-mapped buffers for network interface controllers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101115054A CN101115054A (zh) | 2008-01-30 |
CN101115054B true CN101115054B (zh) | 2016-03-02 |
Family
ID=38987719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710137000.6A Active CN101115054B (zh) | 2006-07-26 | 2007-07-26 | 用于网络接口控制器的存储器映射的缓冲器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9137179B2 (zh) |
CN (1) | CN101115054B (zh) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1295609C (zh) * | 2001-12-14 | 2007-01-17 | 皇家飞利浦电子股份有限公司 | 数据处理***、通信装置和处理数据的方法 |
US20050091334A1 (en) * | 2003-09-29 | 2005-04-28 | Weiyi Chen | System and method for high performance message passing |
US20080065835A1 (en) * | 2006-09-11 | 2008-03-13 | Sun Microsystems, Inc. | Offloading operations for maintaining data coherence across a plurality of nodes |
US7813342B2 (en) * | 2007-03-26 | 2010-10-12 | Gadelrab Serag | Method and apparatus for writing network packets into computer memory |
US20090089475A1 (en) * | 2007-09-28 | 2009-04-02 | Nagabhushan Chitlur | Low latency interface between device driver and network interface card |
US8145749B2 (en) * | 2008-08-11 | 2012-03-27 | International Business Machines Corporation | Data processing in a hybrid computing environment |
US8141102B2 (en) * | 2008-09-04 | 2012-03-20 | International Business Machines Corporation | Data processing in a hybrid computing environment |
US7984267B2 (en) * | 2008-09-04 | 2011-07-19 | International Business Machines Corporation | Message passing module in hybrid computing system starting and sending operation information to service program for accelerator to execute application program |
US8230442B2 (en) | 2008-09-05 | 2012-07-24 | International Business Machines Corporation | Executing an accelerator application program in a hybrid computing environment |
US8527734B2 (en) | 2009-01-23 | 2013-09-03 | International Business Machines Corporation | Administering registered virtual addresses in a hybrid computing environment including maintaining a watch list of currently registered virtual addresses by an operating system |
US9286232B2 (en) * | 2009-01-26 | 2016-03-15 | International Business Machines Corporation | Administering registered virtual addresses in a hybrid computing environment including maintaining a cache of ranges of currently registered virtual addresses |
US8843880B2 (en) * | 2009-01-27 | 2014-09-23 | International Business Machines Corporation | Software development for a hybrid computing environment |
US8255909B2 (en) * | 2009-01-28 | 2012-08-28 | International Business Machines Corporation | Synchronizing access to resources in a hybrid computing environment |
US9170864B2 (en) * | 2009-01-29 | 2015-10-27 | International Business Machines Corporation | Data processing in a hybrid computing environment |
US20100191923A1 (en) * | 2009-01-29 | 2010-07-29 | International Business Machines Corporation | Data Processing In A Computing Environment |
US8001206B2 (en) * | 2009-01-29 | 2011-08-16 | International Business Machines Corporation | Broadcasting data in a hybrid computing environment |
KR101070511B1 (ko) * | 2009-03-20 | 2011-10-05 | (주)인디링스 | Ssd 컨트롤러 및 ssd 컨트롤러의 동작 방법 |
US8037217B2 (en) * | 2009-04-23 | 2011-10-11 | International Business Machines Corporation | Direct memory access in a hybrid computing environment |
US8180972B2 (en) | 2009-08-07 | 2012-05-15 | International Business Machines Corporation | Reducing remote reads of memory in a hybrid computing environment by maintaining remote memory values locally |
US8478965B2 (en) * | 2009-10-30 | 2013-07-02 | International Business Machines Corporation | Cascaded accelerator functions |
US9417905B2 (en) * | 2010-02-03 | 2016-08-16 | International Business Machines Corporation | Terminating an accelerator application program in a hybrid computing environment |
US8578132B2 (en) * | 2010-03-29 | 2013-11-05 | International Business Machines Corporation | Direct injection of data to be transferred in a hybrid computing environment |
US9015443B2 (en) | 2010-04-30 | 2015-04-21 | International Business Machines Corporation | Reducing remote reads of memory in a hybrid computing environment |
CN102439983B (zh) * | 2011-10-27 | 2014-04-16 | 华为技术有限公司 | 一种数据快速分发方法和装置 |
CN102541803A (zh) * | 2011-12-31 | 2012-07-04 | 曙光信息产业股份有限公司 | 数据发送方法和计算机 |
AU2013229673B2 (en) * | 2012-03-07 | 2016-01-07 | Akzo Nobel Coatings International B.V. | Non-aqueous liquid coating composition |
US9288163B2 (en) * | 2013-03-15 | 2016-03-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Low-latency packet receive method for networking devices |
AU2013245529A1 (en) | 2013-10-18 | 2015-05-07 | Cisco Technology, Inc. | Network Interface |
US20150326684A1 (en) * | 2014-05-07 | 2015-11-12 | Diablo Technologies Inc. | System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access |
US9742855B2 (en) * | 2014-09-04 | 2017-08-22 | Mellanox Technologies, Ltd. | Hybrid tag matching |
US10540317B2 (en) | 2015-07-08 | 2020-01-21 | International Business Machines Corporation | Efficient means of combining network traffic for 64Bit and 31 bit workloads |
US10078615B1 (en) * | 2015-09-18 | 2018-09-18 | Aquantia Corp. | Ethernet controller with integrated multi-media payload de-framer and mapper |
US11671382B2 (en) | 2016-06-17 | 2023-06-06 | Intel Corporation | Technologies for coordinating access to data packets in a memory |
US10341264B2 (en) * | 2016-06-30 | 2019-07-02 | Intel Corporation | Technologies for scalable packet reception and transmission |
US10999209B2 (en) | 2017-06-28 | 2021-05-04 | Intel Corporation | Technologies for scalable network packet processing with lock-free rings |
US10672095B2 (en) | 2017-12-15 | 2020-06-02 | Ati Technologies Ulc | Parallel data transfer to increase bandwidth for accelerated processing devices |
CN112596960B (zh) * | 2020-11-25 | 2023-06-13 | 新华三云计算技术有限公司 | 一种分布式存储服务切换方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050226238A1 (en) * | 2004-03-31 | 2005-10-13 | Yatin Hoskote | Hardware-based multi-threading for packet processing |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5515538A (en) * | 1992-05-29 | 1996-05-07 | Sun Microsystems, Inc. | Apparatus and method for interrupt handling in a multi-threaded operating system kernel |
US5577204A (en) * | 1993-12-15 | 1996-11-19 | Convex Computer Corporation | Parallel processing computer system interconnections utilizing unidirectional communication links with separate request and response lines for direct communication or using a crossbar switching device |
US5659798A (en) * | 1996-02-02 | 1997-08-19 | Blumrich; Matthias Augustin | Method and system for initiating and loading DMA controller registers by using user-level programs |
US5764896A (en) * | 1996-06-28 | 1998-06-09 | Compaq Computer Corporation | Method and system for reducing transfer latency when transferring data from a network to a computer system |
US5922046A (en) * | 1996-09-12 | 1999-07-13 | Cabletron Systems, Inc. | Method and apparatus for avoiding control reads in a network node |
US6070219A (en) * | 1996-10-09 | 2000-05-30 | Intel Corporation | Hierarchical interrupt structure for event notification on multi-virtual circuit network interface controller |
US6067608A (en) * | 1997-04-15 | 2000-05-23 | Bull Hn Information Systems Inc. | High performance mechanism for managing allocation of virtual memory buffers to virtual processes on a least recently used basis |
US5887134A (en) * | 1997-06-30 | 1999-03-23 | Sun Microsystems | System and method for preserving message order while employing both programmed I/O and DMA operations |
US7133940B2 (en) * | 1997-10-14 | 2006-11-07 | Alacritech, Inc. | Network interface device employing a DMA command queue |
US6185438B1 (en) * | 1998-10-01 | 2001-02-06 | Samsung Electronics Co., Ltd. | Processor using virtual array of buffer descriptors and method of operation |
US20060034275A1 (en) * | 2000-05-03 | 2006-02-16 | At&T Laboratories-Cambridge Ltd. | Data transfer, synchronising applications, and low latency networks |
US6799200B1 (en) | 2000-07-18 | 2004-09-28 | International Business Machines Corporaiton | Mechanisms for efficient message passing with copy avoidance in a distributed system |
US7328232B1 (en) * | 2000-10-18 | 2008-02-05 | Beptech Inc. | Distributed multiprocessing system |
US6754773B2 (en) * | 2001-01-29 | 2004-06-22 | Snap Appliance, Inc. | Data engine with metadata processor |
US6862634B2 (en) * | 2001-06-29 | 2005-03-01 | Fujitsu Limited | Mechanism to improve performance in a multi-node computer system |
US7007142B2 (en) * | 2002-02-19 | 2006-02-28 | Intel Corporation | Network data storage-related operations |
US20040003135A1 (en) * | 2002-06-27 | 2004-01-01 | Moore Terrill M. | Technique for driver installation |
US7467381B2 (en) * | 2003-12-16 | 2008-12-16 | Intel Corporation | Resource partitioning and direct access utilizing hardware support for virtualization |
US7386642B2 (en) * | 2005-01-28 | 2008-06-10 | Sony Computer Entertainment Inc. | IO direct memory access system and method |
US7817634B2 (en) * | 2006-06-30 | 2010-10-19 | Intel Corporation | Network with a constrained usage model supporting remote direct memory access |
-
2006
- 2006-07-26 US US11/493,285 patent/US9137179B2/en active Active
-
2007
- 2007-07-26 CN CN200710137000.6A patent/CN101115054B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050226238A1 (en) * | 2004-03-31 | 2005-10-13 | Yatin Hoskote | Hardware-based multi-threading for packet processing |
Non-Patent Citations (1)
Title |
---|
容晓峰等.网络接口控制器(NIC)的缓冲区管理技术研究.计算机工程与应用2001 19.2001,2001(19),70-72. * |
Also Published As
Publication number | Publication date |
---|---|
US20080028103A1 (en) | 2008-01-31 |
CN101115054A (zh) | 2008-01-30 |
US9137179B2 (en) | 2015-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101115054B (zh) | 用于网络接口控制器的存储器映射的缓冲器 | |
CA2186598C (en) | Method and apparatus for maintaining transaction ordering and supporting deferred replies in a bus bridge | |
US7533197B2 (en) | System and method for remote direct memory access without page locking by the operating system | |
US8249072B2 (en) | Scalable interface for connecting multiple computer systems which performs parallel MPI header matching | |
JP4416658B2 (ja) | クラスタ型マルチプロセッサシステムの異なるノード上で実行中のプロセス間でのメッセージの明示的な通信のためのシステムおよび方法 | |
US6950438B1 (en) | System and method for implementing a separate virtual channel for posted requests in a multiprocessor computer system | |
US5282272A (en) | Interrupt distribution scheme for a computer bus | |
US20080109569A1 (en) | Remote DMA systems and methods for supporting synchronization of distributed processes in a multi-processor system using collective operations | |
US20080109573A1 (en) | RDMA systems and methods for sending commands from a source node to a target node for local execution of commands at the target node | |
US7571216B1 (en) | Network device/CPU interface scheme | |
US6938094B1 (en) | Virtual channels and corresponding buffer allocations for deadlock-free computer system operation | |
US6888843B2 (en) | Response virtual channel for handling all responses | |
US8521934B1 (en) | Multi-port context-based host controller | |
JP3748774B2 (ja) | キャッシュコヒーレンス共用ディスクコンピュータシステムにおけるi/o転送 | |
US5271020A (en) | Bus stretching protocol for handling invalid data | |
EP0908826A2 (en) | Packet protocol and distributed burst engine | |
US20050138230A1 (en) | Method, apparatus and program product for low latency I/O adapter queuing in a computer system | |
US8095617B2 (en) | Caching data in a cluster computing system which avoids false-sharing conflicts | |
US20080109604A1 (en) | Systems and methods for remote direct memory access to processor caches for RDMA reads and writes | |
US7552232B2 (en) | Speculative method and system for rapid data communications | |
CN111290983A (zh) | Usb传输设备及传输方法 | |
US6714994B1 (en) | Host bridge translating non-coherent packets from non-coherent link to coherent packets on conherent link and vice versa | |
EP1314094A2 (en) | System and method for separate virtual channels for posted requests in a multiprocessor system | |
JP4856413B2 (ja) | 演算処理装置、情報処理装置、及び演算処理装置の制御方法 | |
JP3644158B2 (ja) | 並列計算機におけるデータ送受信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200907 Address after: American Texas Patentee after: HEWLETT-PACKARD DEVELOPMENT Co.,L.P. Address before: American Texas Patentee before: Hewlett-Packard Development Co.,L.P. |