基于双环形队列、非中断式pci通信方法

文档序号:6419911阅读:255来源:国知局
专利名称:基于双环形队列、非中断式pci通信方法
技术领域
本发明涉及数据通信领域,尤其涉及多CPU之间通过PCI,采用非中断的通信方法。
背景技术
随着人们对于信息技术的需求日益增多,信息和通信技术已经日益渗透到人们的日常生活中,这些都有力地推动着信息技术的快速发展,尤其是在信息量日益增多的情况下,对于具有大数据处理能力的分布式处理系统的需求也急剧增多。在数据通信、计算机网络以及工业控制分布式控制系统中,一般采用双CPU甚至多CPU分布式处理的方式来提高系统的处理能力,在这样的情况下,多个CPU之间的通信性能优劣对于整个系统工作效率有着十分重要的影响。在目前的多CPU计算机系统中,一般依照耦合性的高低,分为紧耦合与松耦合两种类型。紧耦合方式主要是在CPU之间通过PCI总线相连接的形式来实现,松耦合方式则是在CPU之间通过以太网络相连接的形式来实现。紧耦合方式中各个CPU之间关系较为紧密,一般应用在通信量要求非常高的系统中,在具体的通信实现上主要采用中断方式进行多处理器间的通讯。目前,在多CPU计算机系统中,两个CPU之间主要通过PCI总线进行通信,一个CPU使用PCI总线上的DOOR BELL(门铃寄存器)向对端CPU发起中断,使得对端CPU获取数据接收信号后进行数据接收程序,这种方法在计算机系统各CPU之间通信流量低的情况下是较为适宜的,但在系统通信流量高的情况下,则将会使得CPU频繁进行中断处理,极大扰乱CPU的正常任务调度,从而进一步影响系统的整体性能。

发明内容
本发明的目的是克服现有技术存在的基于PCI总线紧耦合型多CPU系统中CPU中断过于频繁、影响系统工作性能的缺点,以期提供一种能够有效提高基于PCI总线紧耦合型多CPU系统的通讯效率、同时又不影响各个CPU的正常任务调度的方法。
为实现上述目的,本发明提出一种PCI总线紧耦合型多CPU系统中CPU间通讯方法,其特征在于,包括以下步骤首先,在每两个CPU之间的PCI总线上建立一个双环形队列缓冲区,该缓冲区设置两个环形队列,分别作为发送通道和接收通道;每个环形队列设置一个读指针和一个写指针,初始时,将读指针设为最大,写指针设置为0;其次,进行数据处理流程,具体包括发送数据流程和接收数据流程,其中发送数据流程包括以下步骤步骤一如果写指针等于读指针,则返回失败,否则将通信数据拷贝到写指针指向的通信缓冲区;步骤二写指针加一,同时对队列长度取余;步骤三结束发送数据;接收数据流程包括以下步骤步骤一取写指针;步骤二取读指针;步骤三设置变量N=读指针+1,对队列长度取余;步骤四判断变量N是否等于写指针;步骤五如果N不等于写指针,则将读指针指向的数据从双环形队列缓冲区中取出,将读指针加1,设置N=读指南针+1,对队列长度取余;返回步骤四;
步骤六结束接收数据。
本发明所述方法通过在两个CPU之间建立双环形队列缓冲区、分别建立双通道进行读取数据和写入数据操作的非中断通信方法,从而比现有技术具有更高的效率,同时极大降低对系统性能的影响、不会中断CPU的任务运行、不干扰CPU的正常流程处理,在系统流量较大、负载较重的情况下,本发明所述方法工作效率尤其优于现有的中断方法。


图1是多CPU系统的原理图。
图2是本发明所述环形队列示意图。
图3是本发明所述方法中的发送数据流程图。
图4是本发明所述方法中的接收数据流程图。
图5是作为本发明具体实施方式
的基于双环形队列的双CPU通信系统示意图。
图6是作为本发明另一个实施方式的基于双环形队列的双CPU通信系统示意图。
具体实施例方式下面结合具体实施方式
对本发明所述方法作进一步描述本发明提出的PCI总线紧耦合型多CPU系统中CPU间通讯方法,通过在每两个CPU之间的PCI总线上建立一个双环形队列绶冲区,用于此两个CPU之间的通讯,从而构成多CPU系统之间的通讯系统。与此同时,在两个CPU上分别设置一个定时器,定时检查本身作为输出端的通信通道(环形队列缓冲区),事实上,为了能够尽快取得数据,可以采用高精度定时器。
在具体处理方式上可以适当参照图2、图3和图4所示。下面进行详细的说明1、环形队列的处理如图2所示,环形队列有两个指针,一个为读指针,另一个为写指针,读指针用来读取,写指针用来写入。系统初始工作时可以将读指针设为最大,同时将写指针设置为0。
1.1、发送数据流程(写入)首先判断是否写指针等于读指针,如果写指针等于读指针,则返回失败(表示队列已满),否则将通信数据拷贝到写指针指向的通信缓冲区。然后对写指针加一,同时对队列长度取余。
1.2、接收数据流程(接收)首先取写指针和读指针;然后使得变量N=读指南针加一,对队列长度取余。判断N是否等于写指针,如果N不等于写指针则将读指针指向的数据缓冲区取出,将读指针加一,N=读指南针加一,对队列长度取余;循环取出所有数据,直到数据取完。最后结束接收数据流程。
2、基于双环形队列的双CPU通信系统如图5所示,一般情况下,一个PCI总线上有多个CPU系统中,此时每两个CPU[图5中的标注4,5]之间,就有一个双环形队列绶冲区[图5中的标注6],用于此两个CPU之间的通讯,就构成了多CPU系统之间的通讯系统。双环形队列就是使用两个环形队列,每个环形队列就是一个单向通道。两个通道中,一个通道为发送,另一个通道为接收;从对端CPU看来,正好相反一个为接收,而另一个为发送。对于某个单向通道来说,发送端的CPU只有写的权限,只能修改写指针;接收端的CPU则只有读权限,只能修改读指针。两边的CPU上各设置一个任务或定时器,定时查询自已的接收通道上是否有数据要接收;如有则接收下来。定时的长短可以根据实际需要,进行适当调整。
3、双环形队列的双CPU通信系统互拆原理在最坏情况下(队列临界情况下),即当某个通道上的写指针等于读指针加一时,如CPU_A[图5中的标注4](CPU_A为此单向通道的输入端CPU,执行写操作)上执行写入时,如果CPU_A获取写指针后,CPU_A的访问权交出,由CPU_B[图5中的标注5](为此单向通道的输出端CPU,执行读操作)取出读指针,让N等于读指针,然后再将N加一;此时,让N与写指针比较,两者相等,表明通道中没有数据,则不进行读操作。
另一种临界情况是当缓冲区满时,此时的状态应为写指针到过了缓冲区顶端,读指针在最低端;此时如进行写操作,则返回失败消息,系统等待下一次操作。
4、基于双环形队列的多CPU系统之间的通讯实例如图6所示,由MPC8245[图6中的标注7](Motorola公司的一种处理器)与IXP1200[图6中的标注8](Intel公司的一种处理器)通过PCI总线相连,组成一个双CPU的处理系统。MPC8245将自己的一块内存[图6中的标注9]共享出来作为双CPU通信用,存放两个环形队列缓冲区。一个环形队列缓冲区为MPC8245为输入端,IXP1200为输出端;另一个环形队列缓冲区为IXP1200输入端,MPC8245为输出端。
采用本发明所述方法,与现有中断式的双CPU之间的通信技术相比,增加了系统中CPU之间的通信效率,并且不影响各个CPU的正常任务调度,满足了在大通信量下的系统的性能要求。
权利要求
1.一种基于双环形队列、非中断式PCI通信方法,用于PCI总线紧耦合型多CPU系统中CPU间的通讯,其特征在于,包括以下步骤首先,在每两个CPU之间的PCI总线上建立一个双环形队列缓冲区,该缓冲区设置两个环形队列,分别作为发送通道和接收通道;每个环形队列设置一个读指针和一个写指针;其次,进行数据处理流程,具体包括发送数据流程和接收数据流程,其中发送数据流程包括以下步骤步骤一如果写指针等于读指针,则返回失败,否则将通信数据拷贝到写指针指向的通信缓冲区;步骤二写指针加一,同时对队列长度取余;步骤三结束发送数据;接收数据流程包括以下步骤步骤一取写指针;步骤二取读指针;步骤三设置变量N=读指针+1,对队列长度取余;步骤四判断变量N是否等于写指针;步骤五如果N不等于写指针,则将读指针指向的数据从双环形队列缓冲区中取出,将读指针加1,设置N=读指南针+1,对队列长度取余;返回步骤四;步骤六结束接收数据。
2.根据权利要求1所述的基于双环形队列、非中断式PCI通信方法,其特征在于,初始时,将读指针设为最大,写指针设置为0。
3.根据权利要求1所述的基于双环形队列、非中断式PCI通信方法,其特征在于,对于某个单向通道来说,发送端的CPU只有写的权限,只能修改写指针;接收端的CPU则只有读权限,只能修改读指针。
4.根据权利要求1所述的基于双环形队列、非中断式PCI通信方法,其特征在于,接收端和发送端的CPU上各设置一个定时器,定时查询各自的接收通道上是否有数据要接收。
全文摘要
本发明公开了一种基于双环形队列、非中断式PCI通信方法,用于数据通信领域里的PCI总线紧耦合型多CPU系统中CPU间的通讯,包括在每两个CPU之间的PCI总线上建立一个双环形队列缓冲区,并进行数据处理流程,具体包括发送数据流程和接收数据流程,其中接收数据流程包括首先取写指针和读指针;然后设置变量N=读指针+1,对队列长度取余;同时判断变量N是否等于写指针;如果N不等于写指针,则将读指针指向的数据从双环形队列缓冲区中取出,将读指针加1,设置N=读指南针+1,对队列长度取余。本发明所述方法比现有技术具有更高的效率,同时极大降低对系统性能的影响、不会中断CPU的任务运行、不干扰CPU的正常流程处理。
文档编号G06F15/163GK1529256SQ20031010181
公开日2004年9月15日 申请日期2003年10月17日 优先权日2003年10月17日
发明者于学鸿, 马立军, 冯海英 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1