CN100535886C - 一种节点之间的数据传输系统和装置及方法 - Google Patents
一种节点之间的数据传输系统和装置及方法 Download PDFInfo
- Publication number
- CN100535886C CN100535886C CNB2007101778797A CN200710177879A CN100535886C CN 100535886 C CN100535886 C CN 100535886C CN B2007101778797 A CNB2007101778797 A CN B2007101778797A CN 200710177879 A CN200710177879 A CN 200710177879A CN 100535886 C CN100535886 C CN 100535886C
- Authority
- CN
- China
- Prior art keywords
- message
- common share
- buffer zone
- communication buffer
- share communication
- 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
Images
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种在非一致内存访问平台上的各节点之间以消息传递方式的数据传输系统和装置及方法。该数据传输系统,用于在非一致内存访问平台上的各节点之间传输数据,所述节点包括与操作系统的协议栈连接的数据传输装置;其特征是,所述数据传输装置包括:用于在内存中划分出共享通信缓冲区及共享通信缓冲区控制区,并将所述共享通信缓冲区的位置和大小公告给其它节点的共享通信缓冲区分配模块;用于节点之间通过共享通信缓冲区进行消息传递的底层通信模块;和将所述底层通信模块模拟为网卡并与节点的协议栈连接的虚拟网卡。本发明的有益效果是不需要特殊的硬件支持,透明、高效、安全的传输数据。
Description
技术领域
本发明涉及计算机网络通信技术,特别涉及在非一致内存访问(NonUniform Memory Access Architecture,NUMA)平台中节点之间数据传输的系统、装置和方法。
背景技术
现有技术中,在非一致内存访问(NUMA)平台上的各个多核处理器或者多个处理器上运行的操作系统之间,通常有两种数据传输方式:一种是通过共享内存,采用内存拷贝的方式来实现数据传输;另一种是通过消息传递的方式,采用基于通信硬件的通信方式传输数据。
目前最常用的是采用消息传递的方式,它是基于通信硬件(比如硬件网卡)来传输数据的。这种通信方式的数据传输过程为:发送方将待传送的消息经过直接内存存取(Direct Memory Access,DMA)从内存拷贝到硬件网卡缓冲区,再经过通信硬件网络传输到接收方的硬件网卡缓冲区,再由接收方从接收方硬件缓冲区将消息拷贝到内存。可见,上述传统的消息传递方式传输数据的一个不足是通信过程繁琐。
同时,由于传统的消息传递方式在传输数据时系统节点要访问慢速的外部总线(如PCI总线上的硬件网卡),使得通信速度较慢。现有技术的另一方面不足是,通信数据经过基于硬件的通信网络的传输,其可靠性较低。
发明内容
本发明的目的是克服现有技术在非一致内存访问平台上的各节点之间以消息传递方式传输数据必须通过硬件网卡,从而导致传输速度较慢的不足,提供在非一致内存访问平台中的节点之间以消息传递方式进行数据传输,并且传输速度快的数据传输系统和装置及方法。
为了达到上述目的,本发明采取如下技术方案:
一种节点之间的数据传输系统,用于基于非一致内存访问平台上的至少两个节点之间数据传输,所述节点包括至少一个处理器核和/或至少一个处理器、操作系统和操作系统中的协议栈;所述节点还包括与所述协议栈连接的数据传输装置;所述数据传输装置包括:
用于在内存中划分出共享通信缓冲区及共享通信缓冲区控制区,并将所述共享通信缓冲区的位置和大小公告给其它节点的共享通信缓冲区分配模块;
用于节点之间通过共享通信缓冲区进行消息传递的底层通信模块,所述底层通信模块控制所述共享通信缓冲区和所述共享通信缓冲区控制区;和
将所述底层通信模块模拟为网卡并与节点的协议栈连接的虚拟网卡。
优选地,所述公告包括通过在一个节点所管理的内存中建立一个公告区,所有所述节点将所述共享通信缓冲区的位置和大小在所述公告区公告。
优选地,所有所述节点的所述共享通信缓冲区都集中在其中一个节点上进行管理。
优选地,所有所述节点的所述共享通信缓冲区分布在各自节点上进行管理。
优选地,所述协议栈是TCP/IP协议栈。
优选地,所述底层通信模块包括:
共享通信缓冲区管理模块,用于在所述共享通信缓冲区中为其他节点分别分配一个缓冲部分,并将所述缓冲部分的位置和大小进行公告,还用于监控所述共享通信缓冲区的状态并将其状态记录在所述共享通信缓冲区控制区中;
端口地址映射模块,用于将消息传输的接收方节点号映射到所述共享通信缓冲区的所述缓冲部分并在所述缓冲部分中寻找消息传输位置;
消息传递模块,用于在传输消息时从所述共享通信缓冲区的缓冲部分中完成消息发送和消息接收。
优选地,共享通信缓冲区管理模块采用如下流控方法:当共享通信缓冲区的相应缓冲部分满,消息发送请求失败时,共享通信缓冲区管理模块将阻止继续产生消息传输事件,直到检查到共享通信缓冲区的相应缓冲部分是不满才重新启动消息传输。
优选地,所述消息传递模块在每个消息发送后立即进行完成操作。
优选地,所述消息传递模块使用流水的消息复制方法,使多个消息的发送和接收操作并行进行。
优选地,所述消息传递模块在发送消息时将消息传递到接收方的共享通信缓冲区中,在接收消息时将消息从接收方的共享通信缓冲区中取出。
优选地,所述消息传递模块在发送消息时将消息传递到发送方的共享通信缓冲区中,在接收消息时将消息从发送方的共享通信缓冲区中取出。
优选地,所述底层通信模块还包括消息探询模块,用于探询所述共享通信缓冲区中是否有新的消息到达,如果有新消息到达则通知协议栈接收消息。
优选地,所述消息探询模块周期性地逐一探询其他节点的所述共享通信缓冲区控制区,确定在给本节点分配的所述共享通信缓冲区的缓冲部分中是否有新的消息到达;当有新消息到达时,消息探询模块触发一个软中断,通知协议栈接收消息,当没有新消息到达时,消息探询模块等待一个周期,再次执行探询操作。
优选地,所述周期设为一次时钟中断的时间周期。
优选地,所述节点设置为:在所述软中断期间,所述消息探询模块执行一次探询操作。
优选地,所述虚拟网卡包括:
设备控制模块,用于对虚拟网卡设备初始化,并向节点注册虚拟网卡的打开和关闭;
消息分析模块,用于对需要发送的消息分析发送和接收地址;
消息发送模块,用于根据所述接收地址,传递给所述底层通信模块;
消息接收模块,用于将所述底层通信模块接收到的消息,封装为系统内核的数据包,传递给所述协议栈。
为了实现发明目的,本发明还提供一种数据传输装置,用于基于非一致内存访问平台上的至少两个节点之间传输数据,该装置与所述节点的协议栈连接;其特征在于,包括:
用于在内存中划分出共享通信缓冲区及共享通信缓冲区控制区,并将所述共享通信缓冲区的位置和大小公告给其它节点的共享通信缓冲区分配模块;
用于节点之间通过共享通信缓冲区进行消息传递的底层通信模块,所述底层通信模块控制所述共享通信缓冲区和所述共享通信缓冲区控制区;和
将所述底层通信模块模拟为网卡并与节点的协议栈连接的虚拟网卡。
优选地,所述公告包括通过在一个节点所管理的内存中建立一个公告区将所述共享通信缓冲区的位置和大小在所述公告区公告。
优选地,所有所述节点的所述共享通信缓冲区分布在各自节点上进行管理。
优选地,所述协议栈是TCP/IP协议栈。
优选地,所述底层通信模块包括:
共享通信缓冲区管理模块,用于在所述共享通信缓冲区中为其他节点分别分配一个缓冲部分,并将所述缓冲部分的位置和大小进行公告,还用于监控所述共享通信缓冲区的状态并将其状态记录在所述共享通信缓冲区控制区中;
端口地址映射模块,用于将消息传输的接收方节点号映射到所述共享通信缓冲区的所述缓冲部分并在所述缓冲部分中寻找消息传输位置;
消息传递模块,用于在传输消息时从所述共享通信缓冲区的缓冲部分中完成消息发送和消息接收。
优选地,共享通信缓冲区管理模块采用如下流控方法:当共享通信缓冲区的相应缓冲部分满,消息发送请求失败时,共享通信缓冲区管理模块将阻止继续产生消息传输事件,直到检查到共享通信缓冲区的相应缓冲部分是不满才重新启动消息传输。
优选地,所述消息传递模块在每个消息发送后立即进行完成操作。
优选地,所述消息传递模块使用流水的消息复制方法,使多个消息的发送和接收操作并行进行。
优选地,所述消息传递模块在发送消息时将消息传递到接收方的共享通信缓冲区中,在接收消息时将消息从接收方的共享通信缓冲区中取出。
优选地,所述消息传递模块在发送消息时将消息传递到发送方的共享通信缓冲区中,在接收消息时将消息从发送方的共享通信缓冲区中取出。
优选地,所述底层通信模块还包括消息探询模块,用于探询所述共享通信缓冲区中是否有新的消息到达,如果有新消息到达则通知协议栈接收消息。
优选地,所述消息探询模块周期性地逐一探询其他节点的所述共享通信缓冲区控制区,确定在给本节点分配的所述共享通信缓冲区的缓冲部分中是否有新的消息到达;当有新消息到达时,消息探询模块触发一个软中断,通知协议栈接收消息,当没有新消息到达时,消息探询模块等待一个周期,再次执行探询操作。
优选地,所述周期设为一次时钟中断的时间周期。
优选地,所述虚拟网卡包括:
设备控制模块,用于对虚拟网卡设备初始化,并向节点注册虚拟网卡的打开和关闭;
消息分析模块,用于对需要发送的消息分析发送和接收地址;
消息发送模块,用于根据所述接收地址,传递给所述底层通信模块;
消息接收模块,用于将所述底层通信模块接收到的消息,封装为系统内核的数据包,传递给所述协议栈。
为了实现发明目的,本发明还提供一种节点之间的数据传输方法,用于非一致内存访问平台上的多个节点之间传输数据,每个所述节点中包括至少一个处理器核和/或至少一个处理器以及其上运行的操作系统,包括如下步骤:
步骤S1,在所管理的内存中划分出共享通信缓冲区及共享通信缓冲区控制区,并将所述共享通信缓冲区的位置和大小公告给其它节点;
步骤S2,当发送方发送消息时,通过虚拟网卡将消息传送到共享通信缓冲区;
步骤S3,当接收方接收消息时,将消息从所述共享通信缓冲区中取出并将取出的消息通过虚拟网卡传送给操作系统的协议栈。
优选地,在所述步骤S1中,所述公告包括通过在内存中建立一个公告区,所有所述节点将所述共享通信缓冲区的位置和大小在所述公告区公告。
优选地,所述步骤S1中的所有所述节点的所述共享通信缓冲区都集中在其中一个节点上进行管理。
优选地,所述步骤S1中的所有所述节点的所述共享通信缓冲区分布在各自节点上进行管理。
优选地,步骤S1中还包括在所述共享通信缓冲区中分别为其他节点分配一个缓冲部分,并将所述缓冲部分的位置和大小进行公告。
优选地,所述步骤S2中包括流控方法:当所述共享通信缓冲区的相应缓冲部分满,系统的消息发送请求失败时,将阻止协议栈继续产生消息传输事件,直到检查到共享通信缓冲区的相应缓冲部分不满才重新启动消息传输。
优选地,步骤S2中,在每个消息发送后立即进行相应的完成操作。
优选地,步骤S2中发送方采用流水方法发送消息。
优选地,所述协议栈为TCP/IP协议栈。
优选地,步骤S3中还包括探询步骤:探询所述共享通信缓冲区中是否有新的消息到达,如果有新消息到达则通知接收方协议栈接收消息。
优选地,所述探询是周期地逐一探询其它节点的共享通信缓冲区中是否有新的消息到达,如果有新消息到达则通过发起一个软中断来通知接收方协议栈接收消息通知接收方协议栈接收消息。
优选地,所述周期为一次时钟中断的时间周期。
优选地,在所述软中断期间,所述探询步骤只执行一次探询操作。
优选地,在步骤S3中接收方采用流水方法接收消息。
优选地,步骤S2中发送方发送消息时将消息传递到接收方的共享通信缓冲区中;步骤S3中接收方在接收消息时将消息从接收方的共享通信缓冲区中取出。
优选地,步骤S2中发送方在发送消息时将消息传递到发送方的共享通信缓冲区中,步骤S3中接收方在接收消息时将消息从发送方的共享通信缓冲区中取出。
与现有技术相比,本发明产生了如下的有益效果:
(1)本发明的数据传输系统和装置,实现于操作系统的协议栈下层,对操作系统协议栈透明,保证了对用户程序的二进制级兼容。
(2)本发明具有高性能的特点。通过基于系统总线级的采用消息传递方式的数据传输系统及其多种优化方法,本发明为应用程序提供了低延迟高带宽的传输性能。
(3)本发明具有良好的可移植性。由于本发明的数据传输装置向协议栈提供标准的网络接口,同时仅使用内存操作完成所有功能,因此具有良好的可移植性。
(4)本发明具有较高的安全性。本发明基于系统总线级的数据传输系统和装置,重要的数据结构和操作都需要进入操作系统完成,保证了系统的安全性。
(5)本发明不需要特殊的硬件支持,比如不需要通信协处理器。在本发明的一个实施方式中可以在通用的多核心非一致内存访问平台上,透明、高效、安全的支持TCP/IP协议。
附图说明
图1为本发明一个实施例的数据传输系统结构示意图;
图2为本发明一个实施例中的底层通信模块102的结构示意图;
图3为本发明一个实施例中的虚拟网卡103的结构示意图;
图4为本发明一个实施例中的集中式通信缓冲区组织方式的示意图;
图5为本发明一个实施例中的分布式通信缓冲区组织方式的示意图;
图6为本发明一个实施例中的消息复制流水方法示意图;
图7为共享通信缓冲区位于消息接收方时消息传递的访存过程示意图;
图8为共享通信缓冲区位于消息发送方时消息传递的访存过程示意图;
图9为本发明一个实施例中的数据传输方法流程图;
图10为本发明的通信过程示意图。
具体实施方式
下面结合附图与具体实施方式对本发明作进一步详细描述。
在非一致内存访问(NUMA)平台环境下,各个操作系统节点之间可以共享物理内存,一个操作系统节点管理的处理器和/或处理器核可以访问其他操作系统节点的物理内存区域。本发明所述的操作系统节点,或者简称为节点,为在非一致内存访问平台环境下包括至少一个处理器核和/或至少一个处理器,以及在处理器核和/或处理器上运行的操作系统。
作为一种具体实施方式,本发明实施例以在各节点上运行Linux操作系统和数据传输支持TCP/IP协议为例来详细描述本发明,但应当说明的是,本发明不限于此,其也可以应用在其它操作系统以及其它的数据传输协议上。
如图1、2所示,一种节点之间的数据传输系统,用于基于非一致内存访问平台上的至少两个节点之间数据传输,图中用标号1、2表示出其中的两个节点,每个所述节点中包括操作系统和操作系统中的TCP/IP协议栈11以及在操作系统上运行的TCP/IP应用程序。
所述TCP/IP协议栈11用于向操作系统提供TCP/IP协议的支持;
所述节点还包括与所述TCP/IP协议栈11连接的数据传输装置100;所述数据传输装置100包括:
用于在内存中划分出共享通信缓冲区12及共享通信缓冲区控制区13,并将所述共享通信缓冲区12的位置和大小公告给其它节点的共享通信缓冲区分配模块101;共享缓冲区分配模块101在节点的操作系统启动时就被加载,从而完成划分共享通信缓冲区12及共享通信缓冲区控制区13,并将所述共享通信缓冲区12的位置和大小公告给其它节点的功能;
用于节点之间通过共享通信缓冲区12进行消息传递的底层通信模块102;所述底层通信模块102控制用于存放消息的所述共享通信缓冲区12和用于存储所述共享通信缓冲区的控制信息和状态的共享通信缓冲区控制区13;和
将所述底层通信模块102模拟为网卡并与节点的协议栈11连接的虚拟网卡103。
本发明中,数据是采用消息传递的方式来传输的,所以所述消息即为传输的数据。
较佳地,所述公告包括通过在一个节点所管理的内存中建立一个公告区,所有所述节点将所述共享通信缓冲区12的位置和大小在所述公告区公告。例如,在其中一个节点所管理的内存中建立一个公告区,其它节点都将自身的所述共享通信缓冲区12位置和大小在该公告区公告并在该公告区查询其它节点的共享通信缓冲区12的位置和大小。
较佳地,作为一种可实施的方式,各节点的所述共享通信缓冲区12是集中式共享通信缓冲区。如图4所示是集中式共享通信缓冲区12示意图,这种方式在其中一个通信节点(比如通信节点1)的本地内存中划分出一块较大的物理内存用做共享通信缓冲区12,并为每一个节点1、2……N分别分配一个缓冲部分1、2……N,所有节点间的通信都使用该缓冲区的一部分。这种方式的好处是缓冲区的管理比较简单,实现容易。
较佳地,作为另一种可实施的方式,各节点的所述共享通信缓冲区12是分布式共享通信缓冲区。如图5所示是分布式共享通信缓冲区示意图,其中多个通信节点1-N就是前面介绍的节点,每个节点上都包括共享通信缓冲区12,所有的共享通信缓冲区12都连接到内存总线。每个共享通信缓冲区12的大小可以设置相同也可以不同。在分布式共享通信缓冲区的组织方式下,任意的两个通信节点之间通信时,必然仅有一次本地内存访问,而另一次内存访问则为速度较慢的远程内存访问,所以系统总体的访存速度快于集中式共享通信缓冲区;同时这种方式的可扩展性也比较好,共享通信缓冲区的内存开销平均的分布到各个通信节点中,每个通信节点都仅需要占用较小的内存。
较佳地,参照图2,针对分布式共享通信缓冲区的组织方式来详细说明本发明的底层通信模块102。底层通信模块102控制用于存放消息的所述共享通信缓冲区12和用于存储所述共享通信缓冲区的控制信息和状态的共享通信缓冲区控制区13;所述控制信息包括传输消息的位置等,传输消息的位置在数据结构中即数据指针;所述状态包括所述共享缓冲区12的相应部分是空或满等状态。参照图2,所述底层通信模块102包括:
共享通信缓冲区管理模块201,用于在所述共享通信缓冲区12中分别为其他节点分配一个缓冲部分,并将所述缓冲部分的位置和大小进行公告;共享通信缓冲区管理模块201还在操作系统运行中监控所述共享通信缓冲区12的状态并将其状态记录在所述共享通信缓冲区控制区13中;该状态包括所述共享通信缓冲区12的相应部分即所述缓冲部分是空或满等状态。
端口地址映射模块202,用于将消息传输的接收方节点号映射到所述共享通信缓冲区12的所述接收方节点对应的缓冲部分,并在所述缓冲部分中寻找消息传输位置。例如发送方的节点号为A,接收方的节点号为B,发送方在自身的共享通信缓冲区中为节点B分配的缓冲部分的内存地址为address_B,则该端口地址映射模块202能够在节点需要发送消息时将接收方节点号B映射到内存地址address_B,并在该缓冲部分中找到数据指针,即可以用于传输消息的位置。节点号是指用户为了识别不同节点而编的号,并使每个节点能够获得通信另一方的节点号,这可由操作系统中的信息获得。
消息传递模块203,采用处理器内存拷贝功能从所述共享通信缓冲区12的缓冲部分中完成消息发送和从发送方所述共享通信缓冲区12的缓冲部分中完成消息接收。例如所述消息传递模块203根据端口地址映射模块202映射的内存地址和找到的消息传输位置,将需要发送的消息拷贝到相应的缓冲部分中,等待接收方接收消息;消息传递模块203接收消息时,则从发送方所述共享通信缓冲区12的缓冲部分中将消息拷贝出来。
较佳地,共享通信缓冲区管理模块201实现一个简单的流控方法,即:当共享通信缓冲区12的相应缓冲部分满,消息发送请求失败时,共享通信缓冲区管理模块201将阻止继续产生消息传输事件,直到检查到共享通信缓冲区12的相应缓冲部分是可用(即共享通信缓冲区12的相应缓冲部分不满)才重新启动消息传输。例如,当共享通信缓冲区12中对应于一个节点的缓冲部分满,消息发送请求失败时,共享通信缓冲区管理模块201将通知虚拟网卡103接口消息发送失败,并使用接口,如Linux接口netif_stop_queue函数,阻止虚拟网卡13继续产生消息传输事件,在等待一个预定的超时时间(比如可以预定为一次时钟中断的时间周期)后,共享通信缓冲区管理模块201重新检查共享通信缓冲区12是否可用(即共享通信缓冲区12的相应缓冲部分不满),如果可用,则调用netif_wake_queue重新启动消息传输;如果仍然不可用,则继续等待下一次超时。通过这种方式,可以避免消息发送方在共享通信缓冲区的缓冲部分满的情况下不断发送消息,使得大量消息被丢弃重发。
较佳地,在消息传递模块203中,在每个消息发送后进行相应的完成操作,而对于消息发送失败的情况则交由上层核心TCP协议栈11的重发机制实现。也就是说,本发明认为在消息传递模块203中发送消息一定是正常完成的,所以并不等待完成事件就进行相应的完成操作,而对于消息发送失败的情况则交由上层核心TCP协议栈11的重发机制实现。由于消息发送失败的概率非常小,所以这种开销是比较小的。然而在现有技术中,当消息发送完成后,传统的网络硬件驱动程序需要立刻进行相应的处理,释放发送缓冲区,更新设备状态,准备发送下一个消息,这样才能使得消息的发送尽量的连续进行。可见,现有技术会使得操作系统被中断的次数大幅增加,而本发明采用简单方式使得消息发送连续进行,是具有优越性的。
较佳地,所述消息传递模块203采用流水方法来发送消息和接收消息。在全局共享物理内存的条件下,通信双方都可以访问到对方的物理内存。本发明针对TCP/IP协议的通信特点——数据包大小较小,采用了基于共享通信缓冲区的通信方式,提出了一种基于消息流水的免握手数据通信方法,利用通信消息的发送方和接收方异步操作的特点,使用流水的消息复制技术。如图6所示,采用流水方法发送和接收消息是指,发送方在发送完一个消息后接着发送下一个消息,接收方在接收一个消息后接着接收下一个消息,这样发送和接收操作分别是连续进行的并且是并行进行,如图6中所示连续发送消息1、发送消息2……,连续接收消息1、接收消息2……。这种流水方法的消息发送和消息接收方式加快了数据传输的速度。
由于TCP/IP协议会将上层应用的大消息分片为最大传输单元(MaximumTransmission Unit,MTU)大小,所以在底层通信的过程中,需传递的消息大小有限,同时,TCP协议中每个消息都有一个确认回复消息,所以通信网络中小消息数量较多,小消息的延迟性能是底层网络更重要的性能指标。本发明通过基于消息流水的免握手数据通信方法,使底层通信模块102在保持了底层较低的通信延迟的情况下,底层通信带宽基本接近了基于握手协商的通信方式,取得了较好的效果。
较佳地,作为一种可实施方式,所述消息传递模块203在发送消息时将消息数据传递到接收方的共享通信缓冲区12中,在接收消息时将消息从接收方的共享通信缓冲区12中取出。这种方式可以称为接收方缓冲方法。
较佳地,作为另一种可实施方式,所述消息传递模块203在发送消息时将消息数据传递到发送方的共享通信缓冲区12中,在接收消息时将消息从发送方的共享通信缓冲区12中取出。这种方式可以称为发送方缓冲方法。
下面介绍发送方缓冲方法的优点:在底层通信模块102中,访存操作是系统最频繁的操作之一,而系统的内存为非一致内存访问(NUMA)结构,访存速度并不均一,所以应该组织共享通信缓冲区以减少访存次数。下面仅介绍在AMD x86_64的cc-NUMA平台上进行数据传输时的共享通信缓冲区位置问题。
在AMD x86_64的带有高速缓存一致性的非一致内存访问(cc-NUMA)平台上实现的基于监听的高速缓存(Cache)一致性协议——MOESI协议,为了维护内存一致性,在任何一个处理器(CPU)要高速缓存的物理内存时,都需要首先获得该内存最近的正确的复本。而这个复本有可能在主存中,也有可能在别的处理器的高速缓存中。这种情况下,当一个处理器发生了读高速缓存不命中或写高速缓存不命中时,它会在高速缓存总线上探查是否有别的处理器高速缓存了正确的消息。如果有别的处理器的高速缓存中的消息是最新并且正确的,它会通过高速缓存总线复制该复本到本地高速缓存中使用,如果不存在正确的高速缓存数据,则再通过存储器总线从主存中复制该数据到本地高速缓存中使用。从这个过程中可以明显看出,如果其他处理器中高速缓存命中,那么读写数据的速度会明显快于主存储器中的读写操作。在采用分布式共享通信缓冲区时,共享通信缓冲区位于发送方还是接收方时,共享通信缓冲区的访存模式是不同的。分别讨论如下:
当选择使用位于消息接收方的共享通信缓冲区时,如下图7所示,一次通信过程中消息传递的访存操作为:
①本地高速缓存命中读
②远地高速缓存不命中写
③本地高速缓存不命中读
④本地高速缓存不命中写
当选择使用位于消息发送方的共享通信缓冲区时,如下图8所示,一次通信过程中消息传递的访存操作为:
①本地高速缓存命中读
②本地高速缓存不命中写
③远地高速缓存不命中读
④本地高速缓存不命中写。
分析这4步操作,两种共享通信缓冲区组织方式下,步骤①、④的速度相同。步骤②由于系统为NUMA结构,读写本地内存的速度要快于读写远地内存的速度,所以共享通信缓冲区位于发送方使得步骤②速度更快。对于步骤③,原本应与步骤②类似,使得两种共享通信缓冲区组织方式的性能基本相同,但根据上文讨论的AMD x86_64高速缓存一致性协议的特性,远地高速缓存不命中后并没有真正从远地内存中读取,而是从远地处理器的高速缓存中读取,所以速度基本相同。这样综合考虑,共享通信缓冲区位于发送方的缓冲区策略的整体通信性能更优。
根据上面的分析,采用基于发送方缓冲的分布式共享通信缓冲区组织方式,并且在发送消息时是将消息拷贝到发送方本地节点的共享通信缓冲区中,再由接收方处理器从上述共享通信缓冲区取走。即通过将专有共享的通信缓冲区分布到各个通信节点上,保证了系统的访存速度和可扩展性,同时基于发送方缓存的缓存策略,更进一步优化了通信关键路径上的访存性能。
较佳地,所述底层通信模块102还包括消息探询模块204,用于探询其它节点的所述共享通信缓冲区控制区13,确定在给本节点分配的缓冲部分中是否有新的消息到达,如果有新消息到达则通知协议栈11接收消息。
较佳地,消息探询模块204主动周期性地逐一探询其它节点的共享通信缓冲区控制区13,确定是否有新的消息到达;当有新消息到达时,消息探询模块203触发一个软中断,通知协议栈11接收消息,当没有新消息到达时,消息探询模块203则等待一段预定时间,再次执行探询操作。
较佳地,所述预定时间比如可以设为一次时钟中断的时间周期。
较佳地,在所述软中断期间,所述消息探询模块203只执行一次探询操作。这样做的原因是:通过分析现有技术的Linux内核下Tasklet机制的实现发现,在一次软中断处理函数do_softirq中,处理函数会反复检查是否有新的Tasklet被调度,如果存在新的Tasklet被调度,则调度执行该Tasklet处理函数,直到一个预定义的查询阀值次数。现有技术的这种机制是为了保证尽快地处理Tasklet请求,而不断地调度自身使得Tasklet处理函数多次空执行,实际上延误了消息的接收操作。所以本发明中消息探询模块206采用稀疏Tasklet技术,使得每次软中断do_softirq期间只执行一次探询操作。这样做的好处是减少了空探询操作的次数,在通信效果上进一步降低了通信延迟。
由上面的描述可见,共享通信缓冲区12和共享通信缓冲区控制区13形成一个通信共享区域以用于消息发送方和接收方进行数据通信;共享通信缓冲区管理模块201和端口地址映射模块202形成对所述通信共享区域进行管理的管理模块区域;消息传递模块203和消息探询模块204形成与虚拟网卡连接的向上接口区域。
底层通信模块102的工作方式为:消息的发送方和接收方共享所述共享通信缓冲区12及所述共享通信缓冲区控制区13;当发送方要发送消息时,发送方首先根据共享通信缓冲区控制区13的指示,计算出接收方在共享通信缓冲区12中的缓冲部分的地址,使用处理器内存拷贝功能,将要传送的消息复制到共享通信缓冲区12的与发送方对应的缓冲部分中,随后更新共享通信缓冲区控制区13的控制信息和共享通信缓冲区状态,消息发送即可完成;各节点的消息探询模块204周期性地探询其它节点的共享通信缓冲区控制区13中的相应缓冲部分确定是否有新的消息发来;当接收方探询到有新消息发来需要收取消息时,接收方也根据发送方共享通信缓冲区控制区13中的控制信息计算出共享通信缓冲区12中相应缓冲部分的地址,再使用处理器做内存复制,将消息数据从共享通信缓冲区取出,并更新共享通信缓冲区控制区13,即完成了消息的接收操作。因此,底层通信模块102基于共享内存操作,实现了传统的底层通信硬件在通信过程中起到的最重要功能,实现了在无通信协处理器环境下的消息传递语义。
从上面对底层通信模块的工作过程的介绍可以看出:由于发送方和接收方是异步操作,即发送方并不是直接将消息发送给接收方,而是将消息拷贝到共享通信缓冲区中等待接收方来去,接收方也不是在对方将消息发送完成后立刻接收消息的,而是在探询到有新消息到来时才开始接收消息。所以接收方可以在发送方发送第二个消息的同时执行接收操作,这种流水线方法就加快了数据传输的速度。
较佳地,虚拟网卡103用于将底层通信模块模拟为一个向上层Linux内核协议栈11提供了传统网络接口所需要的功能。参照图3,所述虚拟网卡103包括:
设备控制模块301,用于对虚拟网卡设备初始化,并向节点注册虚拟网卡的打开和关闭,以及状态查询(如查询发送或接收了多少个消息)等其它操作;
消息分析模块302,用于对来自上层TCP/IP协议栈的每一个需要发送的消息,分析消息的发送和接收地址,实现IP地址与MAC地址的映射,填充消息包的包头字段,同时,根据接收方IP地址分析接收方节点的节点号,并传递消息发送模块303;
消息发送模块303,用于将TCP/IP协议栈需要发送的消息,根据所述接收方节点的节点号,传递给底层通信模块发送;
消息接收模块304,用于将所述底层通信模块接收到的消息,封装为系统内核的数据包,向上传递给所述TCP/IP协议栈101进行处理。
本实施例通过虚拟网卡103,虚拟出了一个功能完备的以太网卡,使TCP/IP与用户进程不能察觉底层网络硬件缺失,达到完全透明支持上层TCP/IP应用的发明目的。
根据图9的流程图,一种节点之间的数据传输方法,用于非一致内存访问(NUMA)平台上的多个节点之间传输数据,每个所述节点中包括至少一个处理器核和/或至少一个处理器以及其上运行的操作系统,包括如下步骤:
步骤S1,通过共享缓冲区分配模块划分出共享通信缓冲区及共享通信缓冲区控制区,并将所述共享通信缓冲区的位置和大小公告给其它节点。
较佳地,所述公告包括通过在内存中建立一个公告区将所述共享通信缓冲区的位置和大小在所述公告区公告。例如,在其中一个节点所管理的内存中建立一个公告区,其它节点都将自身的所述共享通信缓冲区位置和大小在该公告区公告并在该公告区查询其它节点的共享通信缓冲区位置和大小。
较佳地,作为一种可实施的方式,所述共享通信缓冲区是集中式共享通信缓冲区。如图4所示是集中式共享通信缓冲区示意图,这种方式在其中一个通信节点(比如通信节点1)的本地内存中划分出一块较大的物理内存用做共享通信缓冲区,并为每一个节点1、2……N分别分配一个缓冲部分1、2……N,所有节点间的通信都使用该缓冲区的一部分。这种方式的好处是缓冲区的管理比较简单,实现容易。
较佳地,作为一种可实施的方式,所述共享通信缓冲区是分布式共享通信缓冲区。如图5所示是分布式共享通信缓冲区示意图,其中多个通信节点1-N就是前面介绍的节点,每个节点上都包括共享通信缓冲区12,所有的共享通信缓冲区12都连接到内存总线。每个共享通信缓冲区的大小可以设置相同也可以不同。在分布式共享通信缓冲区的组织方式下,任意的两个通信节点之间通信时,必然仅有一次本地内存访问,而另一次内存访问则为速度较慢的远地内存访问,所以系统总体的访存速度快于集中式共享通信缓冲区;同时这种方式的可扩展性也比较好,共享通信缓冲区的内存开销平均的分布到各个通信节点中,每个通信节点都仅需要占用较小的内存。
较佳地,步骤S1中还包括在所述共享通信缓冲区中分别为其他节点分配一个缓冲部分,并将所述缓冲部分的位置和大小进行公告。
步骤S2,当发送方发送消息时,通过虚拟网卡将消息传送到共享通信缓冲区。
较佳地,所述步骤S2中包括流控方法:当所述共享通信缓冲区12的相应缓冲部分满,系统的消息发送请求失败时,共享通信缓冲区管理模块201将阻止继续产生消息传输事件,直到检查到共享通信缓冲区12的相应缓冲部分是可用(即共享通信缓冲区12的相应缓冲部分不满)才重新启动数据传输。
较佳地,步骤S2中,在每个消息发送后立即进行相应的完成操作;这样对于消息发送失败的情况交由操作系统协议栈的重发机制实现。
较佳地,发送方采用流水方法来发送消息。
步骤S3,当接收方接收消息时,将消息从所述共享通信缓冲区中取出并将取出的消息通过虚拟网卡传送给操作系统的协议栈。
较佳地,所述协议栈为TCP/IP协议栈。
较佳地,步骤S3中还包括探询步骤:探询所述共享通信缓冲区控制区,确定在共享通信缓冲区中是否有新的消息到达,如果有消息到达则通知接收方协议栈接收消息。
较佳地,所述探询是周期性地逐一探询其它节点的共享通信缓冲区,当有新消息到达时通过发起一个软中断来通知接收方协议栈接收消息。
较佳地,所述周期比如可以设为一次时钟中断的时间周期。
较佳地,在所述软中断期间,所述探询步骤只执行一次探询操作。
较佳地,接收方采用流水方法来接收消息。
较佳地,作为一种可实施方式,步骤S2中发送方发送消息时将消息数据传递到接收方的共享通信缓冲区中;步骤S3中接收方在接收消息时将消息从接收方的共享通信缓冲区中取出。
较佳地,作为一种可实施方式,步骤S2中发送方在发送消息时将消息数据传递到发送方的共享通信缓冲区中,步骤S3中接收方在接收消息时将消息从发送方的共享通信缓冲区中取出。
以上详细介绍了本发明的数据传输系统和装置及方法。总体来说,如图10所示,本发明是基于共享通信缓冲区及共享通信缓冲区控制区,通过底层通信模块进行地址映射和转换操作,消息由处理器核或者处理器从发送方套接字缓冲区复制到共享通信缓冲区的、专门为接收方分配的缓存位置;接收方周期性地探询各个操作系统节点的共享通信缓冲区中专门为其分配的缓冲位置,当在该位置处探询到消息时,则由接收方处理器从该位置取出消息并复制到接收方套接字缓冲区中,实现了网络数据在通信双方操作系统节点之间的传输。并且传输的消息都通过一个虚拟网卡来发送和接收,从而避免了采用硬件来传输数据。
与基于通信硬件的通信流程相比,本发明在通信的关键路径上不需要经过DMA从内存到硬件缓冲区,再经过通信硬件网络传输,再从对方硬件缓冲区到内存的三个步骤,减少了通信的开销;同时避免了通信数据访问慢速的外部总线(如PCI总线),而是通过高速内存总线直接从本地内存复制到远地内存,速度较快;另一方面,通信数据仅经过内存总线的传输,不需要特殊硬件支持的条件下,可以透明、高效的支持TCP/IP协议,相比于通过通信网络的传输,也具有更高的可靠性和良好的可移植性
以上所述内容,仅为本发明具体的实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围内。
Claims (41)
1、一种节点之间的数据传输系统,用于基于非一致内存访问平台上的至少两个节点之间数据传输,所述节点包括至少一个处理器核和/或至少一个处理器、内存、操作系统和操作系统中的协议栈;其特征是,所述节点还包括与所述协议栈连接的数据传输装置;所述数据传输装置包括:
用于在内存中划分出共享通信缓冲区及共享通信缓冲区控制区,并将所述共享通信缓冲区的位置和大小公告给其它节点的共享通信缓冲区分配模块;
用于节点之间通过共享通信缓冲区进行消息传递的底层通信模块,所述底层通信模块包括共享通信缓冲区管理模块、端口地址映射模块、消息传递模块,
所述共享通信缓冲区管理模块,用于在所述共享通信缓冲区中为其他节点分别分配一个缓冲部分,并将所述缓冲部分的位置和大小进行公告,还用于监控所述共享通信缓冲区的状态并将其状态记录在所述共享通信缓冲区控制区中;
所述端口地址映射模块,用于将消息传输的接收方节点号映射到所述共享通信缓冲区的所述缓冲部分并在所述缓冲部分中寻找消息传输位置;
所述消息传递模块,用于在传输消息时从所述共享通信缓冲区的缓冲部分中完成消息发送和消息接收;和
将所述底层通信模块模拟为网卡并与节点的协议栈连接的虚拟网卡。
2、根据权利要求1所述的数据传输系统,其特征是,所述公告包括通过在一个所述节点所管理的内存中建立一个公告区,所有所述节点将所述共享通信缓冲区的位置和大小在所述公告区公告。
3、根据权利要求1所述的数据传输系统,其特征是,所有所述节点的所述共享通信缓冲区都集中在其中一个节点上进行管理。
4、根据权利要求1所述的数据传输系统,其特征是,所有所述节点的所述共享通信缓冲区分布在各自节点上进行管理。
5、根据权利要求1所述的数据传输系统,其特征是,所述协议栈是TCP/IP协议栈。
6、根据权利要求1所述的数据传输系统,其特征是,共享通信缓冲区管理模块采用如下流控方法:当共享通信缓冲区的相应缓冲部分满,消息发送请求失败时,共享通信缓冲区管理模块将阻止继续产生消息传输事件,直到检查到共享通信缓冲区的相应缓冲部分是不满才重新启动消息传输。
7、根据权利要求1所述的数据传输系统,其特征是,所述消息传递模块在每个消息发送后立即进行完成操作。
8、根据权利要求1所述的数据传输系统,其特征是,所述消息传递模块使用流水的消息复制方法,使多个消息的发送和接收操作并行进行。
9、根据权利要求1所述的数据传输系统,其特征是,所述消息传递模块在发送消息时将消息传递到接收方的共享通信缓冲区中,在接收消息时将消息从接收方的共享通信缓冲区中取出。
10、根据权利要求1所述的数据传输系统,其特征是,所述消息传递模块在发送消息时将消息传递到发送方的共享通信缓冲区中,在接收消息时将消息从发送方的共享通信缓冲区中取出。
11、根据权利要求1所述的数据传输系统,其特征是,所述底层通信模块还包括消息探询模块,用于探询所述共享通信缓冲区中是否有新的消息到达,如果有新消息到达则通知协议栈接收消息。
12、根据权利要求11所述的数据传输系统,其特征是,所述消息探询模块周期性地逐一探询其他节点的所述共享通信缓冲区控制区,确定在给本节点分配的所述共享通信缓冲区的缓冲部分中是否有新的消息到达;当有新消息到达时,消息探询模块触发一个软中断,通知协议栈接收消息,当没有新消息到达时,消息探询模块等待一个周期,再次执行探询操作。
13、根据权利要求12所述的数据传输系统,其特征是,所述周期设为一次时钟中断的时间周期。
14、根据权利要求12所述的数据传输系统,其特征是,所述节点设置为:在所述软中断期间,所述消息探询模块执行一次探询操作。
15、根据权利要求1所述的数据传输系统,其特征是,所述虚拟网卡包括:
设备控制模块,用于对虚拟网卡设备初始化,并向节点注册虚拟网卡的打开和关闭;
消息分析模块,用于对需要发送的消息分析发送和接收地址;
消息发送模块,用于根据所述接收地址,将所述协议栈需要发送的消息传递给所述底层通信模块;
消息接收模块,用于将所述底层通信模块接收到的消息,封装为系统内核的数据包,传递给所述协议栈。
16、一种数据传输装置,用于基于非一致内存访问平台上的至少两个节点之间传输数据,该装置与所述节点的协议栈连接,所述节点包括内存;其特征在于,包括:
用于在内存中划分出共享通信缓冲区及共享通信缓冲区控制区,并将所述共享通信缓冲区的位置和大小公告给其它节点的共享通信缓冲区分配模块;
用于节点之间通过共享通信缓冲区进行消息传递的底层通信模块,所述底层通信模块包括共享通信缓冲区管理模块、端口地址映射模块和消息传递模块,
所述共享通信缓冲区管理模块,用于在所述共享通信缓冲区中为其他节点分别分配一个缓冲部分,并将所述缓冲部分的位置和大小进行公告,还用于监控所述共享通信缓冲区的状态并将其状态记录在所述共享通信缓冲区控制区中;
所述端口地址映射模块,用于将消息传输的接收方节点号映射到所述共享通信缓冲区的所述缓冲部分并在所述缓冲部分中寻找消息传输位置;
所述消息传递模块,用于在传输消息时从所述共享通信缓冲区的缓冲部分中完成消息发送和消息接收;和
将所述底层通信模块模拟为网卡并与节点的协议栈连接的虚拟网卡。
17、根据权利要求16所述的数据传输装置,其特征是,所述公告包括通过在一个所述节点所管理的内存中建立一个公告区将所述共享通信缓冲区的位置和大小在所述公告区公告。
18、根据权利要求16所述的数据传输装置,其特征是,所有所述节点的所述共享通信缓冲区分布在各自节点上进行管理。
19、根据权利要求16所述的数据传输装置,其特征是,所述协议栈是TCP/IP协议栈。
20、根据权利要求16所述的数据传输装置,其特征是,共享通信缓冲区管理模块采用如下流控方法:当共享通信缓冲区的相应缓冲部分满,消息发送请求失败时,共享通信缓冲区管理模块将阻止继续产生消息传输事件,直到检查到共享通信缓冲区的相应缓冲部分是不满才重新启动消息传输。
21、根据权利要求16所述的数据传输装置,其特征是,所述消息传递模块在每个消息发送后立即进行完成操作。
22、根据权利要求16所述的数据传输装置,其特征是,所述消息传递模块使用流水的消息复制方法,使多个消息的发送和接收操作并行进行。
23、根据权利要求16所述的数据传输装置,其特征是,所述消息传递模块在发送消息时将消息传递到接收方的共享通信缓冲区中,在接收消息时将消息从接收方的共享通信缓冲区中取出。
24、根据权利要求16所述的数据传输装置,其特征是,所述消息传递模块在发送消息时将消息传递到发送方的共享通信缓冲区中,在接收消息时将消息从发送方的共享通信缓冲区中取出。
25、根据权利要求16所述的数据传输装置,其特征是,所述底层通信模块还包括消息探询模块,用于探询所述共享通信缓冲区中是否有新的消息到达,如果有新消息到达则通知协议栈接收消息。
26、根据权利要求25所述的数据传输装置,其特征是,所述消息探询模块周期性地逐一探询其他节点的所述共享通信缓冲区控制区,确定在给本节点分配的所述共享通信缓冲区的缓冲部分中是否有新的消息到达;当有新消息到达时,消息探询模块触发一个软中断,通知协议栈接收消息,当没有新消息到达时,消息探询模块等待一个周期,再次执行探询操作。
27、根据权利要求26所述的数据传输装置,其特征是,所述周期设为一次时钟中断的时间周期。
28、根据权利要求16所述的数据传输装置,其特征是,所述虚拟网卡包括:
设备控制模块,用于对虚拟网卡设备初始化,并向节点注册虚拟网卡的打开和关闭;
消息分析模块,用于对需要发送的消息分析发送和接收地址;
消息发送模块,用于根据所述接收地址,将所述协议栈需要发送的消息传递给所述底层通信模块;
消息接收模块,用于将所述底层通信模块接收到的消息,封装为系统内核的数据包,传递给所述协议栈。
29、一种节点之间的数据传输方法,用于非一致内存访问平台上的多个节点之间传输数据,每个所述节点中包括至少一个处理器核和/或至少一个处理器以及其上运行的操作系统、内存,包括如下步骤:
步骤S1,在所管理的内存中划分出共享通信缓冲区及共享通信缓冲区控制区,并将所述共享通信缓冲区的位置和大小公告给其它节点,所有所述节点的所述共享通信缓冲区分布在各自节点上进行管理,在所述共享通信缓冲区中分别为其他节点分配一个缓冲部分,并将所述缓冲部分的位置和大小进行公告;
步骤S2,当发送方发送消息时,通过虚拟网卡将消息传送到共享通信缓冲区;
步骤S3,当接收方接收消息时,将消息从所述共享通信缓冲区中取出并将取出的消息通过虚拟网卡传送给操作系统的协议栈。
30、根据权利要求29所述的数据传输方法,其特征是,在所述步骤S1中,所述将所述共享通信缓冲区的位置和大小公告给其它节点中公告包括通过在所述节点的内存中建立一个公告区,所有所述节点将所述共享通信缓冲区的位置和大小在所述公告区公告。
31、根据权利要求29所述的数据传输方法,其特征是,所述步骤S2中包括流控方法:当所述共享通信缓冲区的相应缓冲部分满,系统的消息发送请求失败时,将阻止协议栈继续产生消息传输事件,直到检查到共享通信缓冲区的相应缓冲部分不满才重新启动消息传输。
32、根据权利要求29所述的数据传输方法,其特征是,步骤S2中,在每个消息发送后立即进行相应的完成操作。
33、根据权利要求29所述的数据传输方法,其特征是,步骤S2中发送方采用流水方法发送消息。
34、根据权利要求29所述的数据传输方法,其特征是,所述协议栈为TCP/IP协议栈。
35、根据权利要求29所述的数据传输方法,其特征是,步骤S3中还包括探询步骤:探询所述共享通信缓冲区中是否有新的消息到达,如果有新消息到达则通知接收方协议栈接收消息。
36、根据权利要求35所述的数据传输方法,其特征是,所述探询是周期地逐一探询其它节点的共享通信缓冲区中是否有新的消息到达,如果有新消息到达则通过发起一个软中断来通知接收方协议栈接收消息。
37、根据权利要求36所述的数据传输方法,其特征是,所述周期为一次时钟中断的时间周期。
38、根据权利要求36所述的数据传输方法,其特征是,在所述软中断期间,所述探询步骤只执行一次探询操作。
39、根据权利要求29所述的数据传输方法,其特征是,在步骤S3中接收方采用流水方法接收消息。
40、根据权利要求29所述的数据传输方法,其特征是,步骤S2中发送方发送消息时将消息传递到接收方的共享通信缓冲区中;步骤S3中接收方在接收消息时将消息从接收方的共享通信缓冲区中取出。
41、根据权利要求29所述的数据传输方法,其特征是,步骤S2中发送方在发送消息时将消息传递到发送方的共享通信缓冲区中,步骤S3中接收方在接收消息时将消息从发送方的共享通信缓冲区中取出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101778797A CN100535886C (zh) | 2007-11-21 | 2007-11-21 | 一种节点之间的数据传输系统和装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007101778797A CN100535886C (zh) | 2007-11-21 | 2007-11-21 | 一种节点之间的数据传输系统和装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101158936A CN101158936A (zh) | 2008-04-09 |
CN100535886C true CN100535886C (zh) | 2009-09-02 |
Family
ID=39307039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007101778797A Active CN100535886C (zh) | 2007-11-21 | 2007-11-21 | 一种节点之间的数据传输系统和装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100535886C (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841469A (zh) * | 2010-03-24 | 2010-09-22 | 北京创毅视讯科技有限公司 | 一种物联网中的数据传输方法、系统和装置 |
CN102006308A (zh) * | 2010-12-16 | 2011-04-06 | 成都西麦克虚拟现实电子技术有限公司 | 高兼容性实时仿真数据网络 |
CN102779110B (zh) * | 2011-05-11 | 2014-08-06 | 扬智科技股份有限公司 | 基于远端代码调用和数据访问的多核心系统及其控制方法 |
CN102521199A (zh) * | 2011-12-16 | 2012-06-27 | 浪潮电子信息产业股份有限公司 | 一种基于numa的物理多分区计算机体系结构的时序控制方法 |
CN102968311B (zh) * | 2012-12-13 | 2015-05-13 | 中国航空无线电电子研究所 | 机载嵌入式软件开发平台 |
US9100877B2 (en) * | 2013-02-01 | 2015-08-04 | Intel Deutschland Gmbh | Communication devices and methods for controlling a communication device |
CN104360962B (zh) * | 2014-11-21 | 2015-10-28 | 北京应用物理与计算数学研究所 | 匹配于高性能计算机结构的多级嵌套数据传输方法与系统 |
CN107733945B (zh) * | 2016-08-11 | 2019-03-12 | 北京百度网讯科技有限公司 | 用于机器人操作系统的信息传输方法及装置 |
CN109101456B (zh) * | 2018-08-30 | 2021-10-15 | 浪潮电子信息产业股份有限公司 | 一种仿真ssd中的数据交互通信方法、装置及终端 |
WO2021023379A1 (en) | 2019-08-06 | 2021-02-11 | Huawei Technologies Co., Ltd. | Method and appartaus for processing data in a network |
CN114356838B (zh) * | 2022-01-06 | 2024-08-13 | 西安交通大学 | 基于mpi模型的共享内存点对点阻塞通信建模方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1303054A (zh) * | 1999-10-28 | 2001-07-11 | 英业达集团(上海)电子技术有限公司 | 虚拟网络装置及其通信方法 |
US6577625B1 (en) * | 1998-06-22 | 2003-06-10 | Winbond Electronics Corp. | Ethernet switch with a share memory structure and method for sharing memory |
CN1547355A (zh) * | 2003-12-17 | 2004-11-17 | 港湾网络有限公司 | 边界网关协议的节省路由表内存消耗办法 |
-
2007
- 2007-11-21 CN CNB2007101778797A patent/CN100535886C/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6577625B1 (en) * | 1998-06-22 | 2003-06-10 | Winbond Electronics Corp. | Ethernet switch with a share memory structure and method for sharing memory |
CN1303054A (zh) * | 1999-10-28 | 2001-07-11 | 英业达集团(上海)电子技术有限公司 | 虚拟网络装置及其通信方法 |
CN1547355A (zh) * | 2003-12-17 | 2004-11-17 | 港湾网络有限公司 | 边界网关协议的节省路由表内存消耗办法 |
Also Published As
Publication number | Publication date |
---|---|
CN101158936A (zh) | 2008-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100535886C (zh) | 一种节点之间的数据传输系统和装置及方法 | |
US8874797B2 (en) | Network interface for use in parallel computing systems | |
US7996583B2 (en) | Multiple context single logic virtual host channel adapter supporting multiple transport protocols | |
US7089289B1 (en) | Mechanisms for efficient message passing with copy avoidance in a distributed system using advanced network devices | |
US6799200B1 (en) | Mechanisms for efficient message passing with copy avoidance in a distributed system | |
CN101960792B (zh) | 用于多传输方式架构的缓冲器控制的方法、设备和系统 | |
CN101150487A (zh) | 一种零拷贝网络报文发送方法 | |
CN101320361B (zh) | 一种多cpu通讯方法及系统 | |
TW201543218A (zh) | 具有多節點連接的多核網路處理器互連之晶片元件與方法 | |
CN109933438A (zh) | 高速共享内存数据收发系统 | |
US20080059686A1 (en) | Multiple context single logic virtual host channel adapter supporting multiple transport protocols | |
CN101599991A (zh) | 一种基于高速通信协议的提升网络文件系统性能的方法 | |
CA2242074A1 (en) | System and method for remote buffer allocation and management for message passing between network nodes | |
CN101227388B (zh) | 操作计算机系统的方法和具有网络接口重发的计算机系统 | |
EP4177763A1 (en) | Data access method and related device | |
TW202211035A (zh) | 用於資源分配的系統、元件以及方法 | |
US7065582B1 (en) | Automatic generation of flow control frames | |
CN113127139B (zh) | 一种基于数据面开发套件dpdk的内存分配方法和装置 | |
CN102916902A (zh) | 数据存储方法及装置 | |
CN105573801B (zh) | 堆叠系统中实现软件升级的方法、装置及系统 | |
CN100486248C (zh) | 一种实时环境下的零拷贝通信方法 | |
CN101087256B (zh) | 报文传输方法及系统 | |
JP2007503053A (ja) | 共有メモリを用いるプロセッサ間通信方法及び装置 | |
EP2779543B1 (en) | Direct push operations and gather operations | |
JP2000339267A (ja) | Pciバス制御システム |
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 |