CN101572689A - 多处理器系统中网络接口卡与加速器传输数据的方法与装置 - Google Patents

多处理器系统中网络接口卡与加速器传输数据的方法与装置 Download PDF

Info

Publication number
CN101572689A
CN101572689A CNA2008100839529A CN200810083952A CN101572689A CN 101572689 A CN101572689 A CN 101572689A CN A2008100839529 A CNA2008100839529 A CN A2008100839529A CN 200810083952 A CN200810083952 A CN 200810083952A CN 101572689 A CN101572689 A CN 101572689A
Authority
CN
China
Prior art keywords
mentioned
accelerator
main storage
index
buffering area
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
CNA2008100839529A
Other languages
English (en)
Inventor
王佰玲
李广磊
钟忻
汪文俊
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to CNA2008100839529A priority Critical patent/CN101572689A/zh
Publication of CN101572689A publication Critical patent/CN101572689A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供了一种在多处理器系统中的网络接口卡与加速器之间传输数据的方法和装置。其中该多处理器系统包括至少一个核心处理器、多个加速器以及可以被上述核心处理器、上述多个加速器和上述网络接口卡读取的主存储器。该方法包括:将在上述网络接口卡与上述多个加速器之间传输的数据以至少一个原始数据包的形式存储到上述主存储器中;设置上述原始数据包在上述主存储器中的存储位置标识;以及使上述网络接口卡或上述多个加速器根据上述存储位置标识从上述主存储器获取上述原始数据包。本发明能够优化诸如CBE的多处理器系统中的NIC驱动器与加速器之间的数据传输过程,提高系统的数据传输效率。

Description

多处理器系统中网络接口卡与加速器传输数据的方法与装置
技术领域
本发明涉及数据处理领域,具体地,涉及在多处理器系统中的网络接口卡与加速器之间传输数据的方法和装置以及包括该装置的多处理器系统。
背景技术
Cell宽频引擎(Cell Broadband Engine,CBE)是一种单芯片多处理器系统。如图1所示,其具有在一个共享的主存储器上进行操作的9个处理单元,其中包括一个主处理单元(Power Processing Element,PPE)和8个协处理单元(Synergistic Processing Element,SPE)。基于这样的系统结构,CBE能够提供杰出的系统能力,其克服了同时期的多处理器系统在性能上所存在的三个重要限制-功率使用、存储器使用和处理器频率。因而,CBE被广泛地应用于信号处理、模式匹配、模型建立、目标确定、映射、通信和加密等。可以说,CBE已经成功地进驻了市场的大部分领域。
但是,在将CBE用作诸如提供实时图像内容过滤服务的网络服务器时,出现了一个新的限制:SPE与网络接口卡(Network Interface Card,NIC)驱动器之间的网络消息传递成为系统性能的一个瓶颈。这一限制极大地制约了CBE进入网络服务市场。
具体地,在传统的SPE与NIC驱动器之间的数据包传输过程中,数据包将通过NIC层、网络接口层、协议层、套接层,最后到达SPE层。也就是说,在CBE中,由NIC接收到的数据包被首先存储在主存储器的系统层中,在此接受来自NIC层、网络接口层、协议层、套接层的多种耗时的数据包操作,诸如数据复制、IO控制、数据包校验等。在这些操作之后,数据包中的数据被提取出来并存储在主存储器的用户层中。然后,运行在SPE上的应用可从用户层中读取该数据,以进行处理。
但是,由于大多数应用提供商都希望在不对NIC所提供的设备编程接口进行任何修改的情况下使用CBE,并且他们所提供的在SPE上运行的应用通常都是直接在原始数据包(raw packet)上进行操作的,所以,通常,对于从原始数据包中提取出的、存储在主存储器的用户层中的数据,在运行在SPE上的应用对其进行处理之前,还要将其恢复为原始数据包的形式。并且,通常,在运行在SPE上的应用对所恢复的原始数据包进行处理的过程中,仍然要对该数据包进行数据包校验、数据提取等操作。
也就是说,在数据包通过协议层、套接层时由PPE所进行的数据包校验、数据提取等操作,将在SPE上重复进行。不仅如此,在整个数据包传输处理中,协议层和套接层的操作也是最为耗时的两个阶段,大致50%的数据传输时间都耗费在了这两个阶段上。可以说,这两个阶段是造成系统性能瓶颈的重要因素。
此外,在将CBE用作网络服务器时,对于诸如用于确保网络安全的侵入检测等某些网络服务来说,在数据包通过协议层、套接层时所进行的操作并不是必需的。
因此,需要有一种能够优化诸如CBE的多处理器系统中的数据包传输过程的技术,以便尽可能减小在NIC与诸如SPE的加速器之间的数据传输中协议层、套接层的上述重复、不必要的耗时操作对系统性能的影响,来提高系统的数据传输效率。
发明内容
鉴于上述问题,本发明提供了一种在多处理器系统中的网络接口卡与加速器之间传输数据的方法和装置以及包括该装置的多处理器系统,以便在诸如CBE的多处理器系统中提供NIC驱动器与加速器之间的高性能消息传递能力,以减小协议层和套接层的耗时操作对系统性能的影响,提高整个系统的数据传输效率。
根据本发明的一个方面,提供了一种在多处理器系统中的网络接口卡与加速器(accelerator)之间传输数据的方法,其中该多处理器系统包括至少一个核心处理器、多个加速器以及可以被上述核心处理器、上述多个加速器和上述网络接口卡读取的主存储器,该方法包括:将在上述网络接口卡与上述多个加速器之间传输的数据以至少一个原始数据包的形式存储到上述主存储器中;设置上述原始数据包在上述主存储器中的存储位置标识;以及使上述网络接口卡或上述多个加速器根据上述存储位置标识从上述主存储器获取上述原始数据包。
根据本发明的另一个方面,提供了一种在多处理器系统中的网络接口卡与加速器之间传输数据的装置,其中该多处理器系统包括至少一个核心处理器、多个加速器以及可以被上述核心处理器、上述多个加速器和上述网络接口卡读取的主存储器,该装置包括:原始数据包保存单元,用于使在上述网络接口卡与上述多个加速器之间传输的数据以至少一个原始数据包的形式存储到上述主存储器中;标识设置单元,用于设置上述原始数据包在上述主存储器中的存储位置标识;以及原始数据包获取单元,用于使上述网络接口卡或上述多个加速器根据上述存储位置标识从上述主存储器获取上述原始数据包。
根据本发明的另一个方面,提供了一种多处理器系统,其包括上述的装置。
附图说明
相信通过以下结合附图对本发明具体实施方式的说明,能够使人们更好地了解本发明上述的特点、优点和目的。
图1是CBE的系统框图;
图2是根据本发明实施例的在多处理器系统中的NIC与加速器之间传输数据的方法的总体过程的流程图;
图3是根据本发明实施例的以CBE为例的多处理器系统的系统设置及其数据传输过程示意图;
图4是用于说明环缓冲机制的示意图;
图5是图2的方法中从NIC向加速器传输接收数据的过程的流程图;
图6是图2的方法中从加速器向NIC传输发送数据的过程的流程图;
图7是根据本发明实施例的在多处理器系统中的NIC与加速器之间传输数据的装置的方框图;
图8是根据本发明实施例的多处理器系统的方框图。
具体实施方式
下面就结合附图对本发明的各个优选实施例进行详细说明。
本发明的总体构思是,在包括至少一个核心处理器、多个加速器、网络接口卡以及可以被该核心处理器、多个加速器和网络接口卡读取的主存储器的多处理器系统中,通过直接读取保存在主存储器中的原始数据包(raw packet),在该网络接口卡与多个加速器中的至少一个之间传输数据。也就是说,使在该多处理器系统中的NIC与加速器之间传输的数据不经过协议层和套接层的操作,而直接经由NIC和加速器均能够访问的主存储器来进行传递。
在上述总体发明构思之下,图2是根据本发明实施例的在多处理器系统中的网络接口卡与加速器之间传输数据的方法的总体过程的流程图。其中该多处理器系统包括至少一个核心处理器、多个加速器以及可以被该核心处理器、多个加速器和网络接口卡读取的主存储器。具体地,该多处理器系统例如可以是前述具有一个PPE(核心处理器)和8个SPE(加速器)的CBE。
如图2所示,本实施例的在多处理器系统中的网络接口卡与加速器之间传输数据的方法的总体过程是,首先在步骤205,将在NIC与上述多个加速器之间传输的数据以至少一个原始数据包的形式存储到上述主存储器中。
接着,在步骤210,设置上述原始数据包在上述主存储器中的存储位置标识。
在步骤215,使NIC或上述多个加速器中与该原始数据包有关的加速器根据上述存储位置标识从主存储器获取上述原始数据包。
具体地,在从NIC向加速器传输数据的情况下,使NIC将从网络接收到的原始数据包存储在主存储器中,并为其设置存储位置标识,然后将该存储位置标识通知给用于处理该原始数据包的加速器,以使该加速器根据该存储位置标识从主存储器获得该原始数据包。另一方面,在从某一加速器向NIC传输数据的情况下,使该加速器将要通过NIC发送到网络的数据以原始数据包的形式存储在主存储器中,并为其设置存储位置标识,然后将该存储位置标识通知给NIC,以使NIC根据该存储位置标识从主存储器获得该原始数据包并将其发送出去。
为了实现上述总体过程,图3示意性地示出了根据本发明实施例的以CBE为例的多处理器系统的系统设置及其数据传输过程。如图3所示,在本实施例中,预先在上述诸如CBE的多处理器系统的主存储器中设置用于存储通过NIC从网络接收到的原始数据包的接收数据包缓冲池和用于存储上述多个加速器(在图3的CBE的情况下为SPE)要通过NIC发送到网络上的原始数据包的发送数据包缓冲池,并且分别利用环缓冲机制来管理该接收数据包缓冲池和发送数据包缓冲池。
下面参照图4对环缓冲机制进行简单说明。
如图4所示,假定存在一个数据包缓冲池和两个环缓冲区,即数据环缓冲区(Data Ring Buffer,DRB)和空环缓冲区(Free Ring Buffer,FRB)。并且,假定数据包缓冲池中的每一个元素的大小是2KB。基于上述条件,如果数据包缓冲池中的一个元素存储有数据包,则指示该元素的位置的索引便被存储在DRB中,表明该元素已被使用;相反,如果该元素未存储数据包,则其相应的索引便被存储在FRB中,表明该元素未被使用。
在此情况下,当有一个新的数据包到达时,便会从FRB中获取一个指向数据包缓冲池中的空元素的索引,并将该数据包存储到该索引所指示的位置处;然后,该索引便被从FRB中移除并放入到DRB中,以表明该元素处于使用中。另一方面,如果从DRB中获取了一个索引并根据该索引从数据包缓冲池中读出了相应元素的数据包,则该索引便被从DRB中移除并放回到FRB中。
并且,为了实现DRB和FRB中的索引的读和写,在DRB和FRB中各自包括一个读指针(S)和一个写指针(D),以分别指向当前的读位置和当前的写位置。
基于上述环缓冲机制的说明可以理解,为了利用环缓冲机制来管理主存储器中的上述接收数据包缓冲池和发送数据包缓冲池,应该分别为其设置数据环缓冲区DRB和空环缓冲区FRB。但是,由于在本实施例中是诸如CBE的多处理器系统的情况,所以应该考虑到主存储器中的上述接收数据包缓冲池和发送数据包缓冲池应该是能够由该多处理器系统中的多个加速器所共享的。因此,在本实施例中,如图3所示,在上述诸如CBE的多处理器系统中,对于上述多个加速器(SPE)的每一个,在主存储器中分别设置有:
接收数据环缓冲区D,用于存储指示分配给该加速器处理的原始接收数据包在主存储器的接收数据包缓冲池中的存储位置的索引(例如图3的主存储器中与各个SPE对应的两对D、F中左侧的D);
接收空环缓冲区F,用于存储指示主存储器中的接收数据包缓冲池中分配给该加速器的、未使用的位置的索引(例如上述两对D、F中左侧的F);
发送数据环缓冲区D,用于存储指示该加速器所要发送的原始数据包在主存储器的发送数据包缓冲池中的存储位置的索引(例如上述两对D、F中右侧的D);
发送空环缓冲区F,用于存储指示主存储器中的发送数据包缓冲池中分配给该加速器的、未使用的位置的索引(例如上述两对D、F中右侧的F)。
可以理解,在图3的结构中,对于主存储器中的接收数据包缓冲池而言,由于在主存储器中为多个加速器的每一个均设置了接收数据环缓冲区D和接收空环缓冲区F,所以可以预先将该接收数据包缓冲池中的空间分配给这多个加速器,并使相应的、指示所分配的空间的索引预先存储在各加速器的接收空环缓冲区F中,以使每一个加速器的接收数据环缓冲区D和接收空环缓冲区F仅管理该接收数据包缓冲池中分配给该加速器的那一部分空间。至于接收数据包缓冲池中的空间的具体分配原则,可以采用平均分配原则,即将该接收数据包缓冲池中的空间平均分配给这多个加速器,也可以依具体实现采用任何适合的分配原则,本发明对此并没有特别的限制。并且,该接收数据包缓冲池的空间分配,可以在系统初始启动时进行。
以上针对接收数据包缓冲池所描述的内容,对于发送数据包缓冲池来说也是同样的。
此外,在本实施例中,为了与上述利用环缓冲机制管理的主存储器中的接收数据包缓冲池和发送数据包缓冲池相配合来实现本实施例的在多处理器系统中的网络接口卡与加速器之间传输数据的方法,优选但并非限制性地,在各个加速器的本地存储器LS以及NIC的缓冲区中也进行了相应地设置。
具体地,如图3所示,在上述多个加速器(图3的CBE的情况下为SPE)的每一个的LS内分别设置有:
用于存储分配给该加速器处理的原始接收数据包的接收数据包缓冲池;
用于存储该加速器要通过NIC发送到网络上的原始数据包的发送数据包缓冲池;
用于存储指示分配给该加速器处理的原始接收数据包在主存储器的接收数据包缓冲池中的存储位置的索引的接收数据环缓冲区D,其可以是主存储器中相应的接收数据环缓冲区D的子集(例如图3的各个SPE的LS中两对D、F中左侧的D);
用于存储指示主存储器的接收数据包缓冲池中分配给该加速器的、未使用的位置的索引的接收空环缓冲区F,其可以是主存储器中相应的接收空环缓冲区F的子集(例如LS中上述两对D、F中左侧的F);
用于存储指示该加速器所要发送的原始数据包在主存储器的发送数据包缓冲池中的存储位置的索引的发送数据环缓冲区D(例如LS中上述两对D、F中右侧的D);以及
用于存储指示主存储器的发送数据包缓冲池中分配给该加速器的、未使用的位置的索引的发送空环缓冲区F,其可以是主存储器中相应的发送空环缓冲区F的子集(例如LS中上述两对D、F中右侧的F)。
并且,如图3所示,在上述NIC的缓冲区中设置有:
用于存储指示主存储器的接收数据包缓冲池中未使用的位置的索引的接收空环缓冲区R;以及
用于存储指示要发送的原始数据包在主存储器的发送数据包缓冲池中的存储位置的索引的发送数据环缓冲区S。
在上述图3中以CBE为例所描述的系统设置的基础上,下面详细描述上面图2的总体过程的具体实现。
首先描述在上述图3的系统设置的基础上从NIC向加速器传输接收数据的过程。图5是根据本发明实施例的从NIC向加速器传输接收数据的过程的流程图。
如图5所示,首先在步骤505,判断NIC是否从网络接收到数据包。如果是,则前进到步骤510,否则继续在步骤505等待数据包。
在步骤510,根据预定的策略、例如负载均衡策略,确定上述多个加速器中用于处理该接收到的数据包的加速器。
在步骤515,从上述主存储器中用于所确定的上述加速器的接收空环缓冲区F中获取一索引并存储到NIC本地缓冲区的接收空环缓冲区R中(图3中的箭头③)。
在步骤520,NIC从其接收空环缓冲区R中读取上述索引,并根据该索引,利用DMA方式将上述接收到的原始数据包从其本地缓冲区存储到主存储器的接收数据包缓冲池内的、由该索引所指示的空位置处(图3中的箭头①)。然后,NIC可以生成一个硬件中断将接收到新数据包的情况通知给核心处理器。
在步骤525,上述核心处理器、例如PPE将指示所接收到的上述原始数据包在主存储器的接收数据包缓冲池中的存储位置的上述索引从NIC本地接收空环缓冲区R移到主存储器的用于上述所确定的加速器的接收数据环缓冲区D中(图3中的箭头②),并从主存储器的用于该加速器的接收空环缓冲区F中移除该索引,以表明主存储器的接收数据包缓冲池中、由该索引所指示的位置已被使用。
在步骤530,上述所确定的加速器从主存储器中用于该加速器的接收数据环缓冲区D中获取与上述接收到的原始数据包对应的上述索引并存储到其本地存储器的接收数据环缓冲区D中(图3中的箭头④)。
在步骤535,上述所确定的加速器根据其本地接收数据环缓冲区D中所存储的上述索引,利用DMA方式将上述接收到的原始数据包从主存储器的接收数据包缓冲池获取到其本地接收数据包缓冲池中(图3中的箭头⑤)。
在步骤540,在将上述接收到的原始数据包获取到本地存储器之后,上述所确定的加速器将其本地接收数据环缓冲区D中所存储的与该原始数据包对应的上述索引移除并写入到其本地接收空环缓冲区F中。
在步骤545,将存储在上述所确定的加速器的本地接收空环缓冲区F中的上述索引复制到主存储器的用于该加速器的接收空环缓冲区F中(图3中的箭头⑥),并从主存储器的用于该加速器的接收数据环缓冲区D中移除该索引,以表明上述接收到的原始数据包已从主存储器读取到加速器本地,主存储器的接收数据包缓冲池中、由该索引所指示的位置变为空闲。
以上就是本实施例的从NIC向加速器传输接收数据的过程。需要说明的是,在上面图5的过程中,虽然在每接收到一个数据包之后,便在步骤510-520确定用于处理该原始数据包的加速器并相应地从主存储器中用于该加速器的接收空环缓冲区F中获取一索引,用于存储该原始数据包,但是,并不限于此。在具体实现中,也可以是周期地从主存储器的用于多个加速器的各个接收空环缓冲区F中一次收集多个索引到NIC的接收空环缓冲区R中,并在每次接收到一个数据包时从该接收空环缓冲区R中读取当前读指针处的索引,以将所接收到的原始数据包存储到主存储器的接收数据包缓冲池中的相应位置处,同时使接收空环缓冲区R中的读指针指向下一索引。
也就是说,由于上述多个加速器的每一个均被分配了主存储器的接收数据包缓冲池中的一部分空间,所以指示该接收数据包缓冲池中的空位置的索引相应地分散在主存储器的用于该多个加速器的各个接收空环缓冲区F中。从而,为了使各个加速器上的负载均衡,所以周期地从主存储器的用于该多个加速器的各个接收空环缓冲区F的每一个中收集一部分、例如预定数量的索引到NIC的接收空环缓冲区R中,以便能够将对接收到的原始数据包进行处理的任务均衡地分配给这多个加速器。
此外,还需要说明的是,在上面图5的过程中,虽然在每接收到一个数据包时便使相应的加速器在步骤530-540从主存储器的用于该加速器的接收数据环缓冲区D中获取相应的索引并根据该索引从主存储器获取该原始数据包到其本地存储器LS中,但是,并不限于此。在具体实现中,也可以是周期地使各个加速器从主存储器的用于该加速器的接收数据环缓冲区D中一次获取多个索引并根据这多个索引从主存储器获取相应的多个原始数据包到其本地存储器LS中,同时将该多个索引从主存储器的用于该加速器的接收数据环缓冲区D移到主存储器的用于该加速器的接收空环缓冲区F中。
下面描述在上述图3的系统设置的基础上从加速器向NIC传输发送数据的过程。图6是根据本发明实施例的从加速器向NIC传输发送数据的过程的流程图。
如图6所示,首先在步骤605,上述多个加速器中要发送数据的加速器将所要发送的数据以至少一个原始数据包的形式存储在其本地存储器LS的发送数据包缓冲池中。
在步骤610,上述要发送数据的加速器从主存储器的用于该加速器的发送空环缓冲区F中获取一索引并存储到其本地发送空环缓冲区F中(图3中的箭头⑨)。
在步骤615,上述要发送数据的加速器根据存储在其本地发送空环缓冲区F中的上述索引,利用DMA方式将要发送的一个原始数据包从其本地发送数据包缓冲池传输到主存储器的发送数据包缓冲池中、由该索引所指示的空位置处(图3中的箭头⑦)。
在步骤620,上述要发送数据的加速器将存储在其本地发送空环缓冲区F中的上述索引移除并写入到其本地发送数据环缓冲区D中。
在步骤625,将存储在上述要发送数据的加速器的本地发送数据环缓冲区D中的上述索引复制到主存储器的用于该加速器的发送数据环缓冲区D中(图3中的箭头⑧),作为上述要发送的原始数据包在主存储器内的存储位置标识,并从主存储器的用于该加速器的发送空环缓冲区F中移除该索引,以表明主存储器的发送数据包缓冲池中、由该索引所指示的位置已被使用。
在步骤630,从主存储器的用于上述要发送数据的加速器的发送数据环缓冲区D中获取与上述要发送的原始数据包相应的上述索引并存储到NIC的本地发送数据环缓冲区S中(图3中的箭头⑩)。
在步骤635,NIC根据其本地发送数据环缓冲区S中所存储的上述索引,利用DMA方式将上述要发送的原始数据包从主存储器的发送数据包缓冲池获取到其本地缓冲区中(图3中的箭头(11)),并发送出去。
在步骤640,在NIC发送了上述原始数据包之后,将与该所发送的原始数据包对应的上述索引NIC的本地发送数据环缓冲区S复制到主存储器中用于上述要发送数据的加速器的发送空环缓冲区F中(图3中的箭头(12)),并从主存储器的用于该加速器的发送数据环缓冲区D中移除该索引,以表明主存储器的发送数据包缓冲池中、由该索引所指示的位置变为空闲。
以上就是本实施例的从加速器向NIC传输发送数据的过程。需要说明的是,在上面图6的过程中,虽然在每次要发送一个原始数据包时便使要发送该数据的加速器在步骤610-615从主存储器的用于该加速器的发送空环缓冲区F中获取一索引并根据该索引将要发送的原始数据包从本地存储器LS存储到主存储器中,但是,并不限于此。在具体实现中,也可以是周期地使上述多个加速器的每一个从主存储器的用于该加速器的发送空环缓冲区F中一次获取多个索引到其本地发送空环缓冲区F中并根据这多个索引依次将要发送的原始数据包从本地存储器传输到主存储器的相应位置处,并在这多个索引全部使用之后,将这多个索引从主存储器的用于该加速器的发送空环缓冲区F转移到主存储器的用于该加速器的发送数据环缓冲区D中。
还需要说明的是,在上面图6的过程中,虽然在每次要发送一个原始数据包时便使NIC在步骤630-640从主存储器中用于要发送数据的加速器的发送数据环缓冲区D中获取与要发送的原始数据包对应的索引,并根据该索引将要发送的原始数据包获取到本地缓冲区,但是,并不限于此。在具体实现中,也可以是使NIC周期地从主存储器的用于多个加速器的各个发送数据环缓冲区D中一次收集多个索引到其本地发送数据环缓冲区S中,并且依次从该发送数据环缓冲区S中读取当前读指针处的索引,以根据该索引从主存储器的发送数据包缓冲池获取要发送的原始数据包并发送出去,同时使发送数据环缓冲区S中的读指针指向下一索引。
以上就是对本实施例的在多处理器系统中的网络接口卡与加速器之间传输数据的方法的详细描述。在本实施例中,通过在NIC与加速器之间经由主存储器中利用环缓冲机制管理的接收数据包缓冲池和发送数据包缓冲池、以原始数据包的形式来传输数据,可以得到以下的有益效果:
1)由于可以利用硬件中断复制数据包指针(索引),而并不是数据包本身,所以能够降低移动数据包的成本。
2)由于在数据包传输中丢弃了协议层的操作,所以能够避免诸如校验和计算等许多冗余的计算。
3)由于在数据包传输中丢弃了套接层的操作,所以能够避免从主存储器的系统层到用户层的、耗时的数据复制操作。
4)由于丢弃了协议层和套接层的涉及核心处理器的操作,所以减轻了核心处理器的负担,从而非常适合于CBE这样的多处理器系统的体系结构特点。
需要说明的是,虽然以上是结合图3采用环缓冲机制的系统设置来详细描述本实施例中从NIC到加速器的数据传输过程和从加速器到NIC的数据传输过程的,但是这仅是示例性的,本发明并不仅限于在图3的系统设置下的实现。对于本领域技术人员来说,可以根据上述实施例的教导,以更多可行的方式来实现本发明的上述构思。
在同一发明构思下,本发明提供一种在多处理器系统中的网络接口卡与加速器之间传输数据的装置。下面结合附图对其进行描述。
图7是根据本发明实施例的在多处理器系统中的网络接口卡与加速器之间传输数据的装置的方框图。其中该多处理器系统包括至少一个核心处理器、多个加速器以及可以被该核心处理器、多个加速器和网络接口卡读取的主存储器。具体地,该多处理器系统例如可以是前述具有一个PPE(核心处理器)和8个SPE(加速器)的CBE。并且,该多处理器系统可以采用图3所示的系统设置。
如图7所示,本实施例的在多处理器系统中的网络接口卡与加速器之间传输数据的装置7主要包括:原始数据包保存单元71、标识设置单元72和原始数据包获取单元73。
其中,原始数据包保存单元71使在NIC与上述多个加速器之间传输的数据以至少一个原始数据包的形式存储到主存储器中。
标识设置单元72设置上述原始数据包在主存储器中的存储位置标识。
原始数据包获取单元73使NIC或上述多个加速器中与上述原始数据包有关的加速器根据上述存储位置标识从主存储器获取上述原始数据包。
具体地,如图7所示,原始数据包保存单元71可进一步包括接收包保存单元711。并且,在图3所示的系统设置的基础上,该接收包保存单元711可进一步包括:加速器确定单元7111,用于根据预定的策略、例如负载均衡策略确定上述多个加速器中用于处理NIC从网络接收到的原始数据包的加速器;索引获取单元7112,用于从主存储器中用于所确定的上述加速器的接收空环缓冲区F中获取一索引并存储到NIC的本地接收空环缓冲区R中;以及接收包传输单元7113,用于使NIC根据其本地接收空环缓冲区R中所存储的上述索引,利用DMA方式将上述接收到的原始数据包从其本地缓冲区存储到主存储器的接收数据包缓冲池内的、由该索引所指示的空位置处,并生成一个硬件中断将接收到新数据包的情况通知给核心处理器。
如图7所示,标识设置单元72可进一步包括接收包标识设置单元721。并且,在图3所示的系统设置的基础上,该接收包标识设置单元721使核心处理器将指示所接收到的上述原始数据包在主存储器的接收数据包缓冲池中的存储位置的索引从主存储器中用于上述所确定的加速器的接收空环缓冲区F中移到主存储器中用于该加速器的接收数据环缓冲区D中。
如图7所示,原始数据包获取单元73可进一步包括接收包获取单元731。并且,在图3所示的系统设置的基础上,该接收包获取单元731可进一步包括:索引获取单元7311,用于使上述所确定的加速器从主存储器中用于该加速器的接收数据环缓冲区D中获取与上述接收到的原始数据包对应的索引并存储到其本地接收数据环缓冲区D中;接收包传输单元7312,用于使上述所确定的加速器根据其本地接收数据环缓冲区D中所存储的上述索引,利用DMA方式将上述接收到的原始数据包从主存储器的接收数据包缓冲池获取到其本地接收数据包缓冲池中;索引本地设置单元7313,用于使上述所确定的加速器将其本地接收数据环缓冲区D中所存储的、与上述接收到的原始数据包对应的上述索引移到其本地接收空环缓冲区F中;以及索引主存设置单元7314,用于使与上述接收到的原始数据包对应的上述索引从主存储器中用于该加速器的接收数据环缓冲区D中移到该主存储器中用于该加速器的接收空环缓冲区F中。
此外,如图7所示,原始数据包保存单元71可进一步包括发送包保存单元712。并且,在图3所示的系统设置的基础上,该发送包保存单元712可进一步包括:索引获取单元7121,用于使上述多个加速器中要发送数据的加速器从上述主存储器中用于该加速器的发送空环缓冲区F中获取一索引并存储到其本地发送空环缓冲区F中;发送包传输单元7122,用于使上述要发送数据的加速器根据其本地发送空环缓冲区F中所存储的上述索引,利用DMA方式将要发送的原始数据包从其本地发送数据包缓冲池传输到主存储器的发送数据包缓冲池中、由该索引所指示的空位置处;以及索引设置单元7123,用于使上述要发送数据的加速器将存储在其本地发送空环缓冲区F中的上述索引移到其本地发送数据环缓冲区D中。
如图7所示,标识设置单元72可进一步包括发送包标识设置单元722。并且,在图3所示的系统设置的基础上,该发送包标识设置单元722根据存储在要发送数据的加速器的本地发送数据环缓冲区D中的上述索引,将该索引从主存储器中用于该加速器的发送空环缓冲区F移到主存储器中用于该加速器的发送数据环缓冲区D中。
如图7所示,原始数据包获取单元73可进一步包括发送包获取单元732。并且,在图3所示的系统设置的基础上,该发送包获取单元732可进一步包括:索引获取单元7321,用于从主存储器中用于上述要发送数据的加速器的发送数据环缓冲区D获取指示上述要发送的原始数据包在主存储器的发送数据包缓冲池中的存储位置的索引并存储到NIC的本地发送数据环缓冲区S中;发送包传输单元7322,用于使NIC根据其本地发送数据环缓冲区S中所存储的上述索引,利用DMA方式将上述要发送的原始数据包从主存储器的发送数据包缓冲池获取到本地缓冲区中;以及索引设置单元7323,用于在NIC发送了上述原始数据包之后,使与该所发送的原始数据包对应的上述索引从主存储器的用于发送该原始数据包的加速器的发送数据环缓冲区D移到主存储器中用于该加速器的发送空环缓冲区F中。
以上就是对本实施例的在多处理器系统中的网络接口卡与加速器之间传输数据的装置的详细描述。其中,本实施例的该装置7及其各个组成部分,可以由专用的电路或芯片构成,也可以通过计算机(处理器)执行相应的程序来实现。
此外,本发明提供一种多处理器系统。图8是根据本发明实施例的多处理器系统的方框图。本实施例的该多处理器系统8采用上述图3所示的系统设置,并且如图8所示,其包括上述图7的装置7。
以上虽然通过一些示例性的实施例对本发明的在多处理器系统中的网络接口卡与加速器之间传输数据的方法和装置以及包括该装置的多处理器系统进行了详细的描述,但是以上这些实施例并不是穷举的,本领域技术人员可以在本发明的精神和范围内实现各种变化和修改。因此,本发明并不限于这些实施例,本发明的范围仅以所附权利要求为准。

Claims (23)

1.一种在多处理器系统中的网络接口卡与加速器(accelerator)之间传输数据的方法,其中该多处理器系统包括至少一个核心处理器、多个加速器以及可以被上述核心处理器、上述多个加速器和上述网络接口卡读取的主存储器,该方法包括:
将在上述网络接口卡与上述多个加速器之间传输的数据以至少一个原始数据包的形式存储到上述主存储器中;
设置上述原始数据包在上述主存储器中的存储位置标识;以及
使上述网络接口卡或上述多个加速器根据上述存储位置标识从上述主存储器获取上述原始数据包。
2.根据权利要求1所述的方法,其中在上述主存储器内设置有:
接收数据包缓冲池,用于存储通过上述网络接口卡从网络接收到的原始数据包;并且
对于上述多个加速器的每一个,在上述主存储器内设置有:
接收数据环缓冲区,用于存储指示原始接收数据包在上述接收数据包缓冲池中的存储位置的索引,其中该原始数据包是分配给该加速器处理的;以及
接收空环缓冲区,用于存储指示上述接收数据包缓冲池中分配给该加速器的、未使用的位置的索引。
3.根据权利要求2所述的方法,其中将在上述网络接口卡与上述多个加速器之间传输的数据以至少一个原始数据包的形式存储到上述主存储器中的步骤进一步包括:
在上述网络接口卡从网络接收到原始数据包时:
根据预定的策略确定上述多个加速器中用于处理该接收到的原始数据包的加速器;
从主存储器中用于所确定的上述加速器的接收空环缓冲区中获取一索引;以及
将上述原始数据包存储到上述接收数据包缓冲池内的、由上述索引所指示的位置处。
4.根据权利要求3所述的方法,其中设置上述原始数据包在上述主存储器中的存储位置标识的步骤进一步包括:
将上述索引从主存储器中用于上述所确定的加速器的接收空环缓冲区移到用于该加速器的接收数据环缓冲区中,作为上述接收到的原始数据包在上述主存储器内的存储位置标识。
5.根据权利要求4所述的方法,其中使上述网络接口卡或上述多个加速器根据上述存储位置标识从上述主存储器获取上述原始数据包的步骤进一步包括:
从主存储器中用于上述所确定的加速器的接收数据环缓冲区获取与上述接收到的原始数据包对应的索引;
使上述所确定的加速器根据上述索引,从上述接收数据包缓冲池获取上述接收到的原始数据包;以及
将上述索引从主存储器中用于该加速器的接收数据环缓冲区移到用于该加速器的接收空环缓冲区中。
6.根据权利要求4所述的方法,其中在上述多个加速器的每一个的本地存储器内设置有:
接收数据环缓冲区,用于存储指示原始接收数据包在上述主存储器的接收数据包缓冲池中的存储位置的索引,其中该原始数据包是分配给该加速器处理的;以及
接收空环缓冲区,用于存储指示上述主存储器的接收数据包缓冲池中分配给该加速器的、未使用的位置的索引。
7.根据权利要求6所述的方法,其中使上述网络接口卡或上述多个加速器根据上述存储位置标识从上述主存储器获取上述原始数据包的步骤进一步包括:
使上述所确定的加速器从主存储器中用于该加速器的接收数据环缓冲区获取与上述接收到的原始数据包对应的索引,并存储到其本地存储器的接收数据环缓冲区中;
使该加速器根据上述索引,将上述原始数据包从主存储器的接收数据包缓冲池获取到其本地存储器中;
使该加速器将其本地存储器的接收数据环缓冲区中所存储的上述索引移到其本地接收空环缓冲区中;以及
根据上述索引从上述加速器的本地接收数据环缓冲区移到其本地接收空环缓冲区中的情况,将上述索引从主存储器中用于该加速器的接收数据环缓冲区移到用于该加速器的接收空环缓冲区中。
8.根据权利要求1所述的方法,其中在上述主存储器内设置有:
发送数据包缓冲池,用于存储上述多个加速器要通过上述网络接口卡发送到网络上的原始数据包;并且
对于上述多个加速器的每一个,在上述主存储器内设置有:
发送数据环缓冲区,用于存储指示原始数据包在上述发送数据包缓冲池中的存储位置的索引,其中该原始数据包是该加速器要通过上述网络接口卡发送到网络上的;以及
发送空环缓冲区,用于存储指示上述发送数据包缓冲池中分配给该加速器的、未使用的位置的索引。
9.根据权利要求8所述的方法,其中将在上述网络接口卡与上述多个加速器之间传输的数据以至少一个原始数据包的形式存储到上述主存储器中的步骤进一步包括:
使上述多个加速器中要发送数据的加速器从主存储器中用于该加速器的发送空环缓冲区中获取一索引;以及
使该加速器将包含要发送的数据的一部分或全部的原始数据包存储到上述发送数据包缓冲池内的、由上述索引所指示的位置处。
10.根据权利要求9所述的方法,其中设置上述原始数据包在上述主存储器中的存储位置标识的步骤进一步包括:
将上述索引从主存储器中用于上述要发送数据的加速器的发送空环缓冲区移到用于该加速器的发送数据环缓冲区中,作为上述要发送的原始数据包在上述主存储器内的存储位置标识。
11.根据权利要求10所述的方法,其中使上述网络接口卡或上述多个加速器根据上述存储位置标识从上述主存储器获取上述原始数据包的步骤进一步包括:
从主存储器中用于上述要发送数据的加速器的发送数据环缓冲区获取与上述要发送的原始数据包对应的索引;
使上述网络接口卡根据上述索引,从主存储器的发送数据包缓冲池获取上述要发送的原始数据包;
在上述网络接口卡发送了上述原始数据包之后,将上述索引从主存储器中用于上述加速器的发送数据环缓冲区移到用于该加速器的发送空环缓冲区中。
12.根据权利要求8所述的方法,其中在上述多个加速器的每一个的本地存储器内设置有:
发送数据环缓冲区,用于存储指示原始数据包在上述主存储器的发送数据包缓冲池中的存储位置的索引,其中该原始数据包是该加速器要通过上述网络接口卡发送到网络上的;以及
发送空环缓冲区,用于存储指示上述主存储器的发送数据包缓冲池中分配给该加速器的、未使用的位置的索引。
13.根据权利要求12所述的方法,其中将在上述网络接口卡与上述多个加速器之间传输的数据以至少一个原始数据包的形式存储到上述主存储器中的步骤进一步包括:
使上述多个加速器中要发送数据的加速器从主存储器中用于该加速器的发送空环缓冲区中获取一索引,并存储到其本地存储器的发送空环缓冲区中;
使上述加速器根据上述索引,将包含要发送的数据的一部分或全部的原始数据包传输到主存储器的发送数据包缓冲池中、由该索引所指示的位置处;以及
使上述加速器将其本地发送空环缓冲区中所存储的上述索引移到其本地发送数据环缓冲区中;并且
设置上述原始数据包在上述主存储器中的存储位置标识的步骤进一步包括:
根据上述索引从上述加速器的本地发送空环缓冲区移到其本地发送数据环缓冲区中的情况,将上述索引从主存储器中用于该加速器的发送空环缓冲区移到用于该加速器的发送数据环缓冲区中。
14.一种在多处理器系统中的网络接口卡与加速器之间传输数据的装置,其中该多处理器系统包括至少一个核心处理器、多个加速器以及可以被上述核心处理器、上述多个加速器和上述网络接口卡读取的主存储器,该装置包括:
原始数据包保存单元,用于使在上述网络接口卡与上述多个加速器之间传输的数据以至少一个原始数据包的形式存储到上述主存储器中;
标识设置单元,用于设置上述原始数据包在上述主存储器中的存储位置标识;以及
原始数据包获取单元,用于使上述网络接口卡或上述多个加速器根据上述存储位置标识从上述主存储器获取上述原始数据包。
15.根据权利要求14所述的装置,其中在上述主存储器内设置有:
接收数据包缓冲池,用于存储通过上述网络接口卡从网络接收到的原始数据包;并且
对于上述多个加速器的每一个,在上述主存储器内设置有:
接收数据环缓冲区,用于存储指示原始接收数据包在上述接收数据包缓冲池中的存储位置的索引,其中该原始数据包是分配给该加速器处理的;以及
接收空环缓冲区,用于存储指示上述接收数据包缓冲池中分配给该加速器的、未使用的位置的索引。
16.根据权利要求15所述的装置,其中上述原始数据包保存单元进一步包括接收包保存单元,其包括:
加速器确定单元,用于根据预定的策略确定上述多个加速器中用于处理上述网络接口卡从网络接收到的原始数据包的加速器;
索引获取单元,用于从主存储器中用于所确定的上述加速器的接收空环缓冲区中获取一索引;以及
接收包传输单元,用于使上述网络接口卡将上述接收到的原始数据包存储到上述接收数据包缓冲池内的、由上述索引所指示的位置处。
17.根据权利要求16所述的装置,其中上述标识设置单元进一步包括:
接收包标识设置单元,用于将上述索引从主存储器中用于上述所确定的加速器的接收空环缓冲区移到用于该加速器的接收数据环缓冲区中,作为上述接收到的原始数据包在上述主存储器内的存储位置标识。
18.根据权利要求17所述的装置,其中上述原始数据包获取单元进一步包括接收包获取单元,其包括:
索引获取单元,用于使上述所确定的加速器从主存储器中用于该加速器的接收数据环缓冲区获取与上述接收到的原始数据包对应的索引;
接收包传输单元,用于使上述加速器根据上述索引,从主存储器的接收数据包缓冲池获取上述接收到的原始数据包;以及
索引主存设置单元,用于将上述索引从主存储器中用于该加速器的接收数据环缓冲区中移到用于该加速器的接收空环缓冲区中。
19.根据权利要求14所述的装置,其中在上述主存储器内设置有:
发送数据包缓冲池,用于存储上述多个加速器要通过上述网络接口卡发送到网络上的原始数据包;并且
对于上述多个加速器的每一个,在上述主存储器内设置有:
发送数据环缓冲区,用于存储指示原始数据包在上述发送数据包缓冲池中的存储位置的索引,其中该原始数据包是该加速器要通过上述网络接口卡发送到网络上的;以及
发送空环缓冲区,用于存储指示上述发送数据包缓冲池中分配给该加速器的、未使用的位置的索引。
20.根据权利要求19所述的装置,其中上述原始数据包保存单元进一步包括发送包保存单元,其包括:
索引获取单元,用于使上述多个加速器中要发送数据的加速器从主存储器中用于该加速器的发送空环缓冲区中获取一索引;以及
发送包传输单元,用于使上述加速器将包含要发送的数据的一部分或全部的原始数据包传输到上述发送数据包缓冲池内的、由上述索引所指示的位置处。
21.根据权利要求20所述的装置,其中上述标识设置单元进一步包括:
发送包标识设置单元,用于将上述索引从主存储器中用于上述要发送数据的加速器的发送空环缓冲区移到用于该加速器的发送数据环缓冲区中。
22.根据权利要求21所述的装置,其中上述原始数据包获取单元进一步包括发送包获取单元,其包括:
索引获取单元,用于从主存储器中用于上述要发送数据的加速器的发送数据环缓冲区获取与上述要发送的原始数据包对应的索引;
发送包传输单元,用于使上述网络接口卡根据上述索引,从主存储器的发送数据包缓冲池获取上述要发送的原始数据包;以及
索引设置单元,用于在上述网络接口卡发送了上述原始数据包之后,将上述索引从主存储器中用于上述要发送数据的加速器的发送数据环缓冲区移到用于该加速器的发送空环缓冲区中。
23.一种多处理器系统,包括:权利要求14-22中的任意一项所述的装置。
CNA2008100839529A 2008-04-29 2008-04-29 多处理器系统中网络接口卡与加速器传输数据的方法与装置 Pending CN101572689A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2008100839529A CN101572689A (zh) 2008-04-29 2008-04-29 多处理器系统中网络接口卡与加速器传输数据的方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2008100839529A CN101572689A (zh) 2008-04-29 2008-04-29 多处理器系统中网络接口卡与加速器传输数据的方法与装置

Publications (1)

Publication Number Publication Date
CN101572689A true CN101572689A (zh) 2009-11-04

Family

ID=41231926

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2008100839529A Pending CN101572689A (zh) 2008-04-29 2008-04-29 多处理器系统中网络接口卡与加速器传输数据的方法与装置

Country Status (1)

Country Link
CN (1) CN101572689A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109313618A (zh) * 2016-06-30 2019-02-05 英特尔公司 用于分组传递的图形处理单元(gpu)
CN109862023A (zh) * 2019-02-27 2019-06-07 中国科学院软件研究所 一种嵌入式设备实现加速计算和高速网络数据传输方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109313618A (zh) * 2016-06-30 2019-02-05 英特尔公司 用于分组传递的图形处理单元(gpu)
CN109313618B (zh) * 2016-06-30 2023-07-28 英特尔公司 用于分组传递的图形处理单元(gpu)
CN109862023A (zh) * 2019-02-27 2019-06-07 中国科学院软件研究所 一种嵌入式设备实现加速计算和高速网络数据传输方法

Similar Documents

Publication Publication Date Title
CN101650698B (zh) 直接存储器访问的实现方法
CN104796337A (zh) 一种转发报文的方法及装置
CN101150488B (zh) 一种零拷贝网络报文接收方法
US20150127880A1 (en) Efficient implementations for mapreduce systems
CN102521201A (zh) 多核数字信号处理器片上系统及数据传输方法
CN101150487A (zh) 一种零拷贝网络报文发送方法
WO2011128369A1 (en) Querying performance data on a parallel computer system having compute nodes
CN102724035B (zh) 一种加密卡的加解密方法
CN103368848A (zh) 信息处理设备、算术装置和信息传递方法
CN101997924A (zh) 云存储文件传输协议(cftp)
CN101667144A (zh) 一种基于共享内存的虚拟机通信方法
CN104303174A (zh) 通过处理器间互连来隧道传输平台管理消息
CN100535886C (zh) 一种节点之间的数据传输系统和装置及方法
CN102541803A (zh) 数据发送方法和计算机
CN105183662A (zh) 一种无cache一致性协议的分布式共享片上存储架构
CN111080510B (zh) 数据处理装置、方法、芯片、处理器、设备及存储介质
CN112698959A (zh) 一种多核通信方法和装置
CN101271458A (zh) 一种分布式计算文件管理方法、系统及其装置
CN113468090B (zh) 一种PCIe通信方法、装置、电子设备及可读存储介质
CN102571580A (zh) 数据接收方法和计算机
CN102566959B (zh) 一种基于sgdma的图像分割处理方法及装置
CN103282888A (zh) 数据处理方法、图像处理器gpu及第一节点设备
WO2007080718A1 (ja) ブリッジ、情報処理装置、情報処理システムおよびグローバルアドレス管理方法
CN100486248C (zh) 一种实时环境下的零拷贝通信方法
CN101572689A (zh) 多处理器系统中网络接口卡与加速器传输数据的方法与装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20091104