CN1286038C - 基于双环形队列、非中断式pci通信方法 - Google Patents
基于双环形队列、非中断式pci通信方法 Download PDFInfo
- Publication number
- CN1286038C CN1286038C CN 200310101813 CN200310101813A CN1286038C CN 1286038 C CN1286038 C CN 1286038C CN 200310101813 CN200310101813 CN 200310101813 CN 200310101813 A CN200310101813 A CN 200310101813A CN 1286038 C CN1286038 C CN 1286038C
- Authority
- CN
- China
- Prior art keywords
- cpu
- pointer
- data
- queue
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Multi Processors (AREA)
- Information Transfer Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于双环形队列、非中断式PCI通信方法,用于数据通信领域里的PCI总线紧耦合型多CPU系统中CPU间的通讯,包括:在每两个CPU之间的PCI总线上建立一个双环形队列缓冲区,并进行数据处理流程,具体包括发送数据流程和接收数据流程,其中接收数据流程包括:首先取写指针和读指针;然后设置变量N=读指针+1,对队列长度取余;同时判断变量N是否等于写指针;如果N不等于写指针,则将读指针指向的数据从双环形队列缓冲区中取出,将读指针加1,设置N=读指南针+1,对队列长度取余。本发明所述方法比现有技术具有更高的效率,同时极大降低对系统性能的影响、不会中断CPU的任务运行、不干扰CPU的正常流程处理。
Description
技术领域:
本发明涉及数据通信领域,尤其涉及多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的正常任务调度,满足了在大通信量下的系统的性能要求。
Claims (4)
1、一种基于双环形队列、非中断式PCI通信方法,用于PCI总线紧耦合型多CPU系统中CPU间的通讯,其特征在于,包括以下步骤:
首先,在每两个CPU之间的PCI总线上建立一个双环形队列缓冲区,该缓冲区设置两个环形队列,分别作为发送通道和接收通道;每个环形队列设置一个读指针和一个写指针;
其次,进行数据处理流程,具体包括发送数据流程和接收数据流程,其中发送数据流程包括以下步骤:
步骤一:如果写指针等于读指针,则返回失败,否则将通信数据拷贝到写指针指向的通信缓冲区;
步骤二:写指针加一,同时对队列长度取余;
步骤三:结束发送数据;
接收数据流程包括以下步骤:
步骤一:取写指针;
步骤二:取读指针;
步骤三:设置变量N=读指针+1,对队列长度取余;
步骤四:判断变量N是否等于写指针;
步骤五:如果N等于写指针,则执行步骤六;如果N不等于写指针,则将读指针指向的数据从双环形队列缓冲区中取出,将读指针加1,对队列长度取余;设置N=读指针+1,N对队列长度取余;返回步骤四;
步骤六:结束接收数据。
2、根据权利要求1所述的基于双环形队列、非中断式PCI通信方法,其特征在于,初始时,将读指针设为最大,写指针设置为0。
3、根据权利要求1所述的基于双环形队列、非中断式PCI通信方法,其特征在于,对于某个单向通道来说,发送端的CPU只有写的权限,只能修改写指针;接收端的CPU则只有读权限,只能修改读指针。
4、根据权利要求1所述的基于双环形队列、非中断式PCI通信方法,其特征在于,接收端和发送端的CPU上各设置一个定时器,定时查询各自的接收通道上是否有数据要接收。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200310101813 CN1286038C (zh) | 2003-10-17 | 2003-10-17 | 基于双环形队列、非中断式pci通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200310101813 CN1286038C (zh) | 2003-10-17 | 2003-10-17 | 基于双环形队列、非中断式pci通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1529256A CN1529256A (zh) | 2004-09-15 |
CN1286038C true CN1286038C (zh) | 2006-11-22 |
Family
ID=34304208
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200310101813 Expired - Fee Related CN1286038C (zh) | 2003-10-17 | 2003-10-17 | 基于双环形队列、非中断式pci通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1286038C (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100414930C (zh) * | 2005-03-31 | 2008-08-27 | 华为技术有限公司 | 内核间报文描述消息的传递方法 |
CN100447769C (zh) * | 2005-06-06 | 2008-12-31 | 上海奇码数字信息有限公司 | 总线系统 |
CN100432967C (zh) * | 2005-06-15 | 2008-11-12 | 杭州华三通信技术有限公司 | Pci设备之间进行通信的方法、设备以及计算机系统 |
CN101043510B (zh) * | 2007-04-29 | 2012-03-07 | 中兴通讯股份有限公司 | Pci-e总线分布式系统单板内及单板间数据通讯方法 |
CN101110779B (zh) * | 2007-07-13 | 2011-03-16 | 中兴通讯股份有限公司 | 一种经快速输入输出端口到以太网端口数据传输的方法 |
CN101309261B (zh) * | 2008-07-14 | 2011-04-06 | 成都卫士通信息产业股份有限公司 | 一种网络数据报文处理方法及系统、设备 |
CN101989459B (zh) * | 2010-10-27 | 2013-10-09 | 福建新大陆通信科技股份有限公司 | 通过数据缓冲提高eeprom使用寿命的方法 |
CN103559166A (zh) * | 2013-11-11 | 2014-02-05 | 厦门亿联网络技术股份有限公司 | 一种多核之间的高速数据传输的方法 |
CN104035884B (zh) * | 2014-06-30 | 2017-04-05 | 河南百旺金赋电脑有限公司 | 一种双环形队列数据存储方法和智能网关 |
CN107844367A (zh) * | 2017-10-25 | 2018-03-27 | 上海斐讯数据通信技术有限公司 | 一种多任务的管理方法及系统 |
US10834006B2 (en) | 2019-01-24 | 2020-11-10 | Mellanox Technologies, Ltd. | Network traffic disruptions |
US10999366B2 (en) | 2019-03-10 | 2021-05-04 | Mellanox Technologies Tlv Ltd. | Mirroring dropped packets |
CN111966498B (zh) * | 2020-08-27 | 2023-08-25 | 南京电研电力自动化股份有限公司 | 一种配电房物联网网关数据快速处理方法、系统及存储介质 |
CN113992608B (zh) * | 2021-10-25 | 2024-01-05 | 北京科东电力控制系统有限责任公司 | 一种网络收发包路径优化方法、装置及存储介质 |
CN114244790B (zh) * | 2022-02-24 | 2022-07-12 | 摩尔线程智能科技(北京)有限责任公司 | PCIe设备与主机设备的通信方法、系统及设备 |
CN114866499B (zh) * | 2022-04-27 | 2024-02-23 | 曙光信息产业(北京)有限公司 | 片上多核系统的同步广播通信方法、装置和存储介质 |
CN114866343A (zh) * | 2022-07-04 | 2022-08-05 | 支付宝(杭州)信息技术有限公司 | 数据处理方法及装置 |
CN117591451B (zh) * | 2024-01-18 | 2024-05-14 | 天津七一二通信广播股份有限公司 | 一种cpu与fpga间循环缓冲通信方法及系统 |
-
2003
- 2003-10-17 CN CN 200310101813 patent/CN1286038C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1529256A (zh) | 2004-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1286038C (zh) | 基于双环形队列、非中断式pci通信方法 | |
CN1146192C (zh) | 以太网交换芯片输出队列管理调度方法和装置 | |
CN1116639C (zh) | 带任务切换的零开销计算机中断 | |
CN1042863C (zh) | 用于在超标量处理机系统中索引中间存储器缓冲区的指定的方法和系统 | |
CN101052954A (zh) | 不对称型异构多处理器环境中的存储器屏障原语 | |
CN1065346A (zh) | 具有通用操作系统接口的设备驱动系统 | |
CN1159657C (zh) | 总线系统和其数据传输方法 | |
CN101727423B (zh) | 可重配置fpga上可抢占硬件多任务系统及其实现方法 | |
CN1493976A (zh) | 多端口寄存器堆的选择性旁路的方法和设备 | |
CN101116065B (zh) | Dma串 | |
US6356969B1 (en) | Methods and apparatus for using interrupt score boarding with intelligent peripheral device | |
CN1512373A (zh) | 一种多cpu通信的方法 | |
CN1464415A (zh) | 一种多处理器系统 | |
CN100481060C (zh) | 一种流处理器中多核扩展的方法 | |
CN1304088A (zh) | 数据处理装置 | |
CN1320451C (zh) | 具有数据溢出装置的vliw处理器 | |
CN1619467A (zh) | 计算机系统及电源管理状态切换方法 | |
CN1719427A (zh) | 存储器直接存取装置及其数据传输方法 | |
CN1540539A (zh) | 中断信号控制系统与控制方法 | |
CN209044575U (zh) | 基于pis的存储装置控制器、存储装置及系统 | |
CN1270251C (zh) | 一种实现中断请求预处理的方法 | |
CN1093661C (zh) | 反向恢复型输入输出控制装置和输入输出控制方法 | |
CN1269045C (zh) | 一种实现多个数据队列处理时动态分配存储器的方法 | |
CN109522004A (zh) | 一种etl流程在分布式架构运行的方法 | |
CN100557566C (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20061122 Termination date: 20141017 |
|
EXPY | Termination of patent right or utility model |