一种用于多核处理器片内核间网络通信的方法与流程

文档序号:15845119发布日期:2018-11-07 08:55阅读:223来源:国知局
一种用于多核处理器片内核间网络通信的方法与流程

本发明涉及一种网络通信的方法,具体为一种用于多核处理器片内核间网络通信的方法,属于网络应用技术领域。

背景技术

网络是用物理链路将各个孤立的计算机节点相连在一起,组成数据链路,从而达到资源共享和通信的目的。网络通信是通过网络将各个孤立的设备进行连接,通过信息交换实现各个计算机之间的通信。目前嵌入式系统大多采用amp模式(非对称多处理,asymmetricmultiprocessing),每个处理器核心运行一个独立的操作系统,每个核上也需要独立地使用网络资源与外界进行通信。但是由于硬件限制,同一处理器内的多个核之间是不能通过网络进行通信的。这是因为嵌入式多核处理器芯片上通常只集成一个网卡,多核共用这一个网卡。而网络路由规则存在限制,即从一个网卡发送出去的网络数据包是不会再被转发回这个网卡的,因此,按照正常的网络通信方式,多核处理器内部各个核之间是不能通过网络进行通信的。

多核处理器现有的核间通信方式有核间中断、共享内存等方式,但是接口比较复杂,使用起来远不及标准的网络通信接口方便,因此,针对上述问题提出一种用于多核处理器片内核间网络通信的方法。



技术实现要素:

本发明的目的就在于为了解决上述问题而提出了一种用于多核处理器片内核间网络通信的方法,实现了多核处理器片内核间的网络通信,使得多核处理器的网络通信不再受到片内核间网络不通的局限,也可以使用标准网络接口进行通信。

本发明通过以下技术方案来实现上述目的,一种用于多核处理器片内核间网络通信的方法,包括以下步骤:

s1)为每个核设置不同的mac地址,并在网络驱动程序中添加相应的过滤规则;

s2)使用一套特定的规则给每个核设置不同的ip地址,使得某个核在发送数据包时可以判断出这个数据包的目的地址是处理器内的其它核或者是片外的地址;

s3)在驱动层中添加判断,发送每个数据包之前首先分析数据包的目的地址,根据目的地址属于片内还是片外地址执行不同的操作。

其中,所述多核处理器,至少有两个处理核心,而处理器芯片上一般只集成一个网络硬件。

其中,所述网络硬件,分为两个模块,接收模块和发送模块。

其中,所述多核处理器的网络通信使用分层结构:应用程序、网络协议栈、网络驱动程序、网络硬件。

其中,步骤s1为每个核设置不同的mac地址,只要求各个核的mac地址互不相同。

其中,步骤s1各个核根据各自的mac地址在网络驱动程序中添加相应的过滤规则,保证网络硬件接收模块在接收到目的地址为此mac地址的数据包时的处理不是丢弃而是向上层传递。

其中,步骤s2使用一套特定的规则给每个核设置不同的ip地址,使得某个核在发送数据包时可以判断出这个数据包的目的地址是处理器内的其它核或者是片外的地址。

其中,步骤s3在网络驱动程序中添加判断,发送数据包时根据判断的结果执行不同的操作;某个核发送一个数据包时,首先分析数据包的目的地址,如果目的地址指向的是同一处理器内的其它核,则将此数据包直接挂载到网络硬件的接收模块,开始数据的接收流程,向上传递到多核处理器内的其它核,否则还是按照正常流程,将数据包挂载到网络硬件的发送模块,最终通过物理链路将数据包发送出去,传递到片外地址。

本发明的有益效果是:本发明为多核处理器的各个核设置ip地址,使得某个核在发送数据包时可以判断出这个数据包的目的地址是处理器内的其它核或者是片外的地址;在网络驱动程序中添加判断,发送数据包时根据判断的结果执行不同的操作;某个核发送一个数据包时,首先分析数据包的目的地址,如果目的地址指向的是同一处理器内的其它核,则将此数据包直接挂载到网络硬件的接收模块,开始数据的接收流程,向上传递到多核处理器内的其它核,否则还是按照正常流程,将数据包挂载到网络硬件的发送模块,最终通过物理链路将数据包发送出去,传递到片外地址;实现了多核处理器片内核间的网络通信,使得多核处理器的网络通信不再受到片内核间网络不通的局限,可以使用标准网络接口进行通信;用户在编写应用程序时不需要添加额外的处理就可以实现片内核间网络通信,对用户透明;使用网络通信的标准接口在嵌入式多核处理器的多核之间进行核间通信,接口简单易用。

附图说明

图1为本发明用于多核处理器的片内核间网络通信方法流程图;

图2为本发明的网络通信的分层结构图;

图3为本发明的片内核间网络通信图;

图4为本发明的片外网络通信图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1-4所示,一种用于多核处理器片内核间网络通信的方法,包括以下步骤:

s1)为每个核设置不同的mac地址,并在网络驱动程序中添加相应的过滤规则;

s2)使用一套特定的规则给每个核设置不同的ip地址,使得某个核在发送数据包时可以判断出这个数据包的目的地址是处理器内的其它核或者是片外的地址;

s3)在驱动层中添加判断,发送每个数据包之前首先分析数据包的目的地址,根据目的地址属于片内还是片外地址执行不同的操作。

其中,所述多核处理器,至少有两个处理核心,而处理器芯片上一般只集成一个网络硬件。

其中,所述网络硬件,分为两个模块,接收模块和发送模块。

其中,所述多核处理器的网络通信使用分层结构:应用程序、网络协议栈、网络驱动程序、网络硬件。

其中,步骤s1为每个核设置不同的mac地址,只要求各个核的mac地址互不相同即可,无其它特殊要求。

其中,步骤s1各个核根据各自的mac地址在网络驱动程序中添加相应的过滤规则,保证网络硬件接收模块在接收到目的地址为此mac地址的数据包时的处理不是丢弃而是向上层传递。

其中,步骤s2使用一套特定的规则给每个核设置不同的ip地址,使得某个核在发送数据包时可以判断出这个数据包的目的地址是处理器内的其它核或者是片外的地址。

其中,步骤s3在网络驱动程序中添加判断,发送数据包时根据判断的结果执行不同的操作;某个核发送一个数据包时,首先分析数据包的目的地址,如果目的地址指向的是同一处理器内的其它核,则将此数据包直接挂载到网络硬件的接收模块,开始数据的接收流程,向上传递到多核处理器内的其它核,否则还是按照正常流程,将数据包挂载到网络硬件的发送模块,最终通过物理链路将数据包发送出去,传递到片外地址,网络通信实现分层的结构:应用程序、网络协议栈、网络驱动程序、网络硬件。

上层的协议栈不需要修改,只在网络驱动程序中进行适当修改,使用户在编写应用程序时不需要加额外的处理就可以实现片内核间网络通信,对用户透明。

(1)设置mac地址

每个核设置不同的mac地址,并在网络驱动程序中添加相应的过滤规则,保证网络硬件接收模块在接收到目的地址为此mac地址的数据包时的处理不是丢弃而是向上层传递。

(2)设置ip地址

使用一套特定的规则给每个核设置不同的ip地址,使得某个核在发送数据包时可以判断出这个数据包的目的地址是处理器内的其它核或者是片外的地址。

(3)在发送数据包时先做判断,判断数据包的目的地址是片内还是片外地址,根据判断结果做不同的处理

网络硬件分为接收模块和发送模块。在实现片内核间网络通信过程中,可以在网络驱动程序中进行修改,如果数据包的目的地址是同一处理器中的其它核,在发送时将数据包发送到网络硬件时直接挂载到接收模块,而不是通过网络硬件的发送模块发送出去。数据包挂载到网络硬件的接收模块之后,就和正常的接收流程一样开始过滤和向上传递,最终会传递到其它核上运行的的协议栈和应用程序。如果数据包的目的地址是此处理器外的地址,那么将数据包挂载到网络硬件的发送模块,再通过物理链路发送到目的地。

实施例:

本实施例是本发明在一款嵌入式多核处理器tms320c6678(简称c6678)上实施的实例。本实施例涉及的c6678处理器有8个处理核心,而芯片上只集成了一个网络硬件。

下面详细说明本实施例的具体实现:

(1)设置mac地址

mac地址只要求8个核的mac地址互不相同即可,无其它特殊要求。本实例中给8个核设置的mac地址分别为:12-34-56-10-01-00、12-34-56-10-01-01、12-34-56-10-01-02、12-34-56-10-01-03、12-34-56-10-01-04、12-34-56-10-01-05、12-34-56-10-01-06、12-34-56-10-01-07。

各个核根据各自的mac地址在网络驱动程序中添加相应的过滤规则,保证网络硬件接收模块在接收到目的地址为此mac地址的数据包时的处理不是丢弃而是向上层传递。

(2)设置ip地址

系统给每块板卡的每个处理器的每个核都进行编号,分别叫做槽位号、dsp号和核号。可以根据槽位号、dsp号和核号来制定一套规则,为每个核设置ip地址。

设置ip地址需要按照一套特定的规则,能保证某个核在发送数据包时可以根据这套规则判断出这个数据包的目的地址是片内的其它核还是片外的地址。本实例设置ip地址(点分十进制表示法)使用的规则为:前两个字节固定为192和168,第三字节为槽位号,第四字节为dsp号乘以10再加上核号再加上100。因此本实例中给8个核设置的ip地址分别为:192.168.10.110、192.168.10.111、192.168.10.112、192.168.10.113、192.168.10.114、192.168.10.115、192.168.10.116、192.168.10.117。

根据此规则设置ip地址,某个核在发送数据时判断发送数据包的目的地址是否为同一处理器内的其它核只需要做以下判断:

a)第一、二字节是否为192和168;

b)第三字节是否等于槽位号(10);

c)第四字节减去100再减去dsp号乘以10得到的结果是否大于等于0且小于等于7;

若以上三个条件都满足,那么数据包的目的地址就是同一处理器内的其它核,否则就是处理器外的地址。

(3)在发送数据包时先做判断,判断数据包的目的地址是片内还是片外地址,根据判断结果做不同的处理。

c6678芯片中与网络相关的外部设备硬件是pa(packetaccelerator),pa分为发送模块和接收模块。

c6678芯片中的每个处理器核心与外设之间的数据通信是通过硬件队列来实现的,处理器核心将数据发送到pa的发送模块,只需要将数据挂载到648号硬件队列上;处理器核心将数据发送到pa的接收模块,只需要将数据挂载到640号硬件队列上。

如果此数据包的目的地址是此处理器内的其它核,那么将此数据包通过640号硬件队列发送网络硬件的接收模块,如果数据包的目的地址是此处理器外的地址,那么就是正常的数据发送流程,将此数据包通过648号硬件队列发送到网络硬件的发送模块,最后通过物理链路发送出去。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1