一种多cpu通信的方法

文档序号:6604814阅读:585来源:国知局
专利名称:一种多cpu通信的方法
技术领域
本发明涉及通信技术领域,特别是指一种多CPU通信的方法。
背景技术
随着计算机及通信技术的发展,单个CPU已经无法满足人们的需求,多CPU技术也就随之应运而生。
图1所示为主从式多CPU结构。将具有强大运算能力的通用处理器作为主CPU,将通信控制器或网络处理器等具有强大的通信控制功能和数据转发能力的CPU作为接口元件互连(PCIPeripheral ComponentInterconnection)总线上的普通PCI设备,完成和外界通信或数据转发功能。这样,在一块单板上就同时拥有强大的运算能力和快速的数据转发能力,这种结构被称之为主从式多CPU结构。
针对主从式多CPU结构,其CPU间的通信通常采用“共享内存+邮箱协议”的方案。图2所示为共享内存式通信队列。在每个CPU都能访问到的空间中建立两个队列,采用接收指针(Precv)和发送指针(Psend)两个指针来对队列进行管理,Precv指向当前正在读取的缓冲区地址,Psend指向存放下一个待发送数据的缓冲区地址。每个队列由32或64个大小为2KB的缓冲区组成,每个缓冲区存放一个需要传输的数据包。队列0中存放主CPU发给从CPU的数据,从CPU定时来读取,队列1中存放从CPU发给主CPU的数据,而主CPU也是定时来读取。
主从CPU间数据发送的方式是完全相同,下面以主CPU向从CPU发送数据包为例来说明数据传输过程。
主CPU随机地向队列0中写入数据,为防止每个缓冲区中的数据包在没有被取走前,被新的数据改写,设置每个缓冲区的第一个长字为控制位。当有数据需要写入缓冲区时,首先判断缓冲区的第一个长字的内容,若缓冲区的第一个长字为0x5555aaaa,则表示当前缓冲区内的数据包有效,还没有被取走,不能写入新数据;若缓冲区的第一个长字为0xaaaa5555,则表示当前缓冲区内的数据包已经被取走,可以写入新的数据。如果整个队列的每个缓冲区中的数据包全部有效,新来的数据将被丢弃。
从CPU定时地读取队列0中的数据。Precv从队列的头部遍历到队列的尾部,一旦发现某个缓冲区的第一个长字内容为0x5555aaaa,就把该缓冲区的数据读取出来,同时把该缓冲区的第一个长字修改为0xaaaa5555。从CPU读取数据所需时间的设置原则是假如从CPU把队列0中所有数据包读取完毕需要的时间为T,为防止从CPU一次读取时有数据包被遗漏,则设置从CPU读取所有数据包的时间为1.5T~2T。
为了解决访问冲突问题和防止在数据接收的同时新来的数据被丢弃,在取出队列0头部第一个缓冲区的数据包后,立刻修改指针Psend的指向,使它指到队列0的头部,新来的数据就存放在队列0的头部。并且在所有数据包全部取出后,修改指针Precv的指向,使它指向队列0的头部,以保证从CPU每次都是从缓冲区队列的头部开始读取数据。
从上述实现方式中可以看出,此方法存在以下缺点由于传输带宽与传输每个数据包的延迟时间相互矛盾,即传输每个数据包的延迟时间越长,传输带宽也就相对越小,所以,一旦队列长度和读取所有数据包所需的时间确定,传输带宽和传输每个数据包的延迟时间也就随之确定,为保证每次能把数据包全部取走避免遗漏,每次读取所有数据所需的时间应该足够长,而该时间增大就意味着传输每个数据包的延迟时间增大,这对于实时性很强的业务来说是不能允许的。
CPU间传输的数据很多,各种数据的优先级和重要程度都不同,有的数据包允许被丢弃,而有的数据包一旦被丢弃,将造成系统工作异常。在上述现有技术方案中,无论是普通的数据报文还是重要的控制报文,所有的数据包都是通过同一个通道同一方式进行传输,无法保证重要数据的可靠性。
对于每个队列来说,数据的写入是随机的,而数据的读取是定时的,访问冲突的问题很难彻底避免和解决。
由于依靠接收指针和发送指针来对队列进行管理,且主从CPU都有一套维护指针的软件代码,增加了软件设计的复杂度。

发明内容
有鉴于此,本发明提供了一种多CPU通信的方法,在增加传输带宽的同时大大减少传输每个数据包的延迟时间,降低系统的丢包率;同时,彻底解决重要数据的可靠性问题;并且可以完全避免访问冲突,防止由于访问冲突而引起的数据异常。
为达到上述目的,本发明的技术方案是这样实现的一种多CPU通信的方法,该方法包括以下步骤分别设置与CPU相连的可相互访问的外挂内存空间,将待发送的数据报文由发送方CPU写入与接收方CPU相连的内存空间,设置寄存器以产生中断信号给接收方CPU,接收方CPU收到中断信号后,进行数据报文接收;将待发送的控制报文由发送方CPU写入智能输入输出单元的缓冲区,产生智能输入输出单元的中断信号给接收方CPU,接收方CPU收到中断信号后,从智能输入输出单元的缓冲区中取得控制报文。
较佳地,所述设置外挂内存空间步骤进一步包括在与CPU各自相连的外挂内存空间内,各建立一固定大小的缓冲区,作为接收对方数据报文的目的地址,并在每一个缓冲区增设控制该缓冲区是否可写入消息的控制位;较佳地,数据报文的传输过程进一步包括发送方CPU判断本方控制位是否为可写入消息状态,如果是就申请本方缓冲区的动态空间并存放待发送的数据报文,否则等待一定时间后,强制把该控制位设置为可写入消息状态,再申请本方缓冲区的动态空间并存放待发送的数据报文;发送方CPU将本方缓冲区动态空间中的数据报文写入接收方缓冲区的目的地址后,将本方控制位设置为禁止写入消息状态;接收方CPU处理完收到的数据报文后,将发送方的控制位修改为可写入消息状态。
较佳地,将一个控制报文分为若干个控制帧,其传输过程进一步包括a、发送方CPU根据智能输入输出单元中的缓冲区尾指针得到空闲消息帧头指针的地址,然后向该指针所指的缓冲区中写入待传送的控制帧,尾指针指向该缓冲区的下一个空闲消息帧;b、将该缓冲区计数器的值加一,发送方CPU产生智能输入输出单元中断,上报给接收方CPU;c、接收方CPU接到中断后,在智能输入输出单元的寄存器中,得到发送方CPU发来的控制报帧所在地址的指针,然后从该指针指向的缓冲区空间处取得待传送的控制报文;d、缓冲区头指针指向该缓冲区中的下一个消息帧所在的地址,取完所有控制帧后,缓冲区计数器的值减一。
较佳地,发送方为从CPU,接收方为主CPU,其中从CPU包括内核和微引擎两部分,数据报文的传输过程进一步包括从CPU将其缓冲区中的待发送的数据报文以直接存取控制方式写入与主CPU相连的缓冲区的目的地址后,主CPU返回硬件信号通知从CPU的微引擎;从CPU的微引擎将本方的控制位设置为禁止写入消息状态后,产生中断通知从CPU的内核;从CPU的内核控制门铃寄存器发中断给主CPU;主CPU收到中断后,读取本方缓冲区中的数据,将其封装并发送给上层软件,并将从CPU的控制位设置为可写入消息状态。
较佳地,发送方为主CPU,接收方为从CPU,其中主CPU包括内核和微引擎两部分,数据报文的传输过程进一步包括主CPU将其缓冲区中的待发送的数据报文以字节拷贝方式或直接存取控制方式写入与从CPU相连的缓冲区后,将本方的控制位设置为禁止写入消息状态,并设置从CPU的门铃寄存器发中断给从CPU的内核;从CPU的内核设置本方的内部线程中断寄存器,使从CPU的微引擎产生中断,转发本方缓冲区中的数据报文;从CPU的微引擎将主CPU的控制位设置为可写入消息状态。
较佳地,所述的固定大小的缓冲区中,只存放一个包括报头和报文的数据报文。
较佳地,发送方为从CPU,接收方为主CPU,其中从CPU包括内核和微引擎两部分,控制报文的传输过程进一步包括所述步骤a进一步包括从CPU根据本方智能输入输出单元中的发送缓冲区尾指针得到指向发送缓冲区的空闲消息帧头指针的地址,然后向该指针所指的缓冲区处写入待传送的控制帧,发送缓冲区尾指针指向发送缓冲区的下一个空闲消息帧;所述步骤c进一步包括主CPU接到中断后,在从CPU的发送缓冲区中的先进先出寄存器中得到从CPU发来的控制报文的数据指针所在的地址,然后从该指针指向的缓冲区空间处取得待传送的控制报文。
较佳地,发送方为主CPU,接收方为从CPU,其中主CPU包括内核和微引擎两部分,控制报文的传输过程进一步包括所述步骤a进一步包括主CPU读取从CPU的智能输入输出单元中的接收缓冲区中的先进先出寄存器,从该寄存器中得到接收缓冲区尾指针,并根据该尾指针得到从CPU接收缓冲区的空闲消息帧的头指针地址,向该指针所指的缓冲区处写入待传送的控制帧,接收缓冲区尾指针指向接收缓冲区的下一个空闲消息帧;所述步骤c进一步包括从CPU接到中断后,根据本方接收缓冲区头指针处得到主CPU发送来的控制报文的数据指针所在的地址,并从该指针指向的缓冲区处取得待传送的控制报文。
应用本发明,利用中断来进行数据传输,在增加传输带宽的同时大大减少了每个数据包的延迟时间,降低了系统的丢包率;并依靠中断解决了访问冲突,从而防止了由于访问冲突引起的数据异常。在传输普通的数据报文和重要的控制报文时,分别采用不同的中断和传输通道,避免了数据报文和控制报文在同一通道内相互干扰的问题,彻底解决了重要数据的安全性问题,在数据传输的效率,可靠性和传输带宽等方面有很大的提高,同时,充分利用芯片本身的功能,避免了复杂的软件设计,大大减少了软件设计、维护的工作量。


图1为现有技术的主从式多CPU结构图;图2为现有技术的共享内存式通信队列;图3为主从式CPU的系统结构图;图4为数据报文传输模型;图5为IXP1200向MPC750发送控制报文的图解;图6为MPC750向IXP1200发送控制报文的图解。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明做进一步详细说明。
在本实施例中,以MPC750(Motorola公司PPC系列的通用处理器)和IXP1200(Intel公司的Strong ARM系列的网络处理器)为例,针对主从式多CPU结构详细说明本发明的技术方案。
图3所示为主从式CPU的系统结构图。MPC750具有强大的运算能力,在此作为主CPU使用;IXP1200具有强大的数据转发能力,它包括内核(CORE)和微引擎(uE)两部分,CORE是一个精简指令集计算机(RISCReduced Instruction System Computer)结构的通用处理器,uE的作用是进行数据的处理和转发,这两部分共同集成在一个芯片中,在此作为从CPU使用。设置两个外挂的内存(SDRAM)分别与MPC750和IXP1200相连,而且MPC750和IXP1200可以相互访问对方的SDRAM空间。
数据报文的流量一般较大,其主要是指IXP1200的uE将自身无法处理的数据报文上报给MPC750进行处理和MPC750将处理后的数据信息下发给IXP1200的uE,在进行数据报文的传输时,是通过主从CPU各自外挂的SDRAM空间来完成的,并且通过中断方式通知对方接收;而控制报文是指MPC750下发给IXP1200的各种控制命令和IXP1200上报给MPC750的状态信息,在进行控制报文的传输时,是通过IXP1200自带的I2O(Intelligent Inputand Output)单元来完成的,并且控制报文的数据传输也采用中断方式通知对方接收,但该中断和数据报文所使用的中断不是同一个中断。这就使数据报文和控制报文分别采用了不同的传输通道,因而避免了数据报文和控制报文采用同一通道相互干扰的问题。MPC750内部也有I2O单元,可以用来作为控制报文的传输通道,在本实施例中,控制报文的传输只使用IXP1200的I2O单元。
图4所示为数据报文传输模型。数据报文传输机制的实现过程如下1、在IXP1200和MPC750的SDRAM内各建立一个2KB的固定缓冲区,作为双方向对方传输数据的目的地址,这样每次数据传输的源地址是动态申请的,而目的地址是固定的;2、为了简化设计,2KB的缓冲区中只存放一个数据报文,它既包括数据报文的报头也包括数据报文的具体数据内容,每次只传输一个数据报文,等对方接收完该报文后,再传输下一个;3、传输的数据报文长度在40~1500字节之间,而且以60字节长度为主,由于MPC750的直接存取控制器(DMADirect Memory Access)在处理较大的数据报文或者DMA链表时,其性能比较明显,而在处理较小的数据报文时,其性能不能很好的体现出来,所以为了简化设计,本实施例采用的方案是MPC750发给IXP1200的数据报文用字节拷贝(bcopy)方式处理,而IXP1200发给MPC750的数据报文用DMA方式处理;4、为了防止缓冲区内的数据报文来不及取走就被下一个数据报文刷新,另外增加控制位来表示哪个CPU控制当前的数据报文,在2KB的缓冲区旁设置8字节控制位,初始化时把缓冲区内的控制位都设置为1。发送前发现本方的控制位为1时才能发送,否则等待,如果等待很长时间控制位还是0,就把该控制位强制设为1。例如如IXP1200要向MPC750发送一个数据报文,发送前发现本方SDRAM中的控制位为1,就用DMA方式将要发送的数据报文写到MPC750的SDRAM里,随后uE把本方的控制位置为0,当MPC750在中断服务程序里把该数据报文从MPC750的SDRAM缓冲区读出来后,再把IXP1200的控制位修改为1,这样当IXP1200发现本方的控制位为1时,就可以发送下一个数据报文。MPC750向IXP1200发送数据报文的原理相同。
5、利用每个设备的PCI配置空间内的门铃(DoorBell)寄存器,实现PCI总线上的主从CPU之间中断方式的通信。如果IXP1200作为PCI总线的目标(Target)设备设置该寄存器,就产生一个中断送给MPC750,如果MPC750作为PCI总线的主机(HOST)处理器设置该寄存器,就产生一个中断送给IXP1200。
下面具体说明主从CPU之间数据报文的传输过程。
IXP1200发送数据报文给MPC7501、初始化时IXP1200和MPC750各自把本方的控制位写为1,当IXP1200有数据报文要发送时,先读取本方缓冲区的控制位,如果控制位为1就可以继续执行发送数据报文的操作,否则就等待,直至等待的时间大于发送一个数据报文所需时间的20倍,就强制把该控制位设置为1;
2、如果控制位为1,uE申请本方SDRAM中的动态空间存放待发送的数据报文;3、通过uE的PCI_DMA指令,uE用DMA方式把该待发送的数据报文写入MPC750的SDRAM内;4、MPC750收到该数据后,返回一个硬件信号通知uE,uE此时先把本方的控制位写为0,然后产生一个中断信号通知CORE,CORE再执行相应中断服务程序,在此中断服务程序中只需设置本方的Doorbell寄存器发外部中断给MPC750,CORE执行完此操作后退出该中断服务程序;5、MPC750收到该中断后,从缓冲区中读取IXP1200发送来的数据报文,并将之封装完毕后送给上层软件处理,并把IXP1200的控制位写为1。
MPC750发送数据报文给IXP12001、初始化时IXP1200和MPC750各自把本方的控制位写为1,当MPC750有数据报文要发送时,先读取本方缓冲区的控制位,如果控制位为1就可以继续执行发送数据报文的操作,否则就等待,直至等待的时间大于发送一个数据报文所需时间的20倍,就强制把该控制位设置为1;2、如果控制位为1,MPC750先申请本方SDRAM中的动态空间存放待发送的数据报文,再用bcopy的方式把数据报文写入到IXP1200的SDRAM内,写入完成后把本方的控制位写为0;3、MPC750设置IXP1200的Doorbell寄存器以产生相应中断信号给IXP1200的CORE,CORE再执行相应中断服务程序,在此中断服务程序中,只需要设置IXP1200中CORE上的内部线程中断(INTER_THD_SIG)寄存器,使uE产生中断并转发MPC750发送来的数据报文,CORE执行完此操作后退出该服务程序;4、uE收到中断后将MPC750的控制位改为1。
控制报文传输机制的实现过程相对于数据报文,控制报文的流量较少,但是它要求的传输可靠性很高,数据报文在流量过大时允许丢包,但是控制报文要尽量避免这种情况。为了满足这种高可靠性的需求,将一个控制报文分为若干个控制帧,并采用I2O单元来实现控制报文的传输,I2O为挂在PCI总线上的设备之间进行通信提供了一个标准、可靠的消息传递机制,它包含了四个位于本地SDRAM中的先进先出缓冲区(FIFOs)即Inbound free list FIFO接收缓冲区中的空闲队列;Inbound post list FIFO接收缓冲区中已经被占用的队列;Outbound free list FIFO发送缓冲区中的空闲队列;Outbound post list FIFO发送缓冲区中已经被占用的队列。
MPC750和IXP1200各有一个I2O单元,可以使用各自的I2O单元实现两者间的通信,为了更好的支持多CPU的结构,在本实施例中只使用IXP1200的接收缓冲区和发送缓冲区,即只使用IXP1200提供的I2O单元,不使用MPC750的该单元。
IXP1200发送控制报文给MPC750为了程序设计的方便,使用OUT_MFA_HEAD_PTR和out_mfa_tail_ptr分别表示发送缓冲区中已被占用队列的头指针和尾指针,由于该队列和空闲队列共用一段连续的内存的空间,所以发送缓冲区的空闲队列的头指针和尾指针也可以知道,即发送缓冲区中已被占用队列的头指针和尾指针就是发送缓冲区的空闲队列的尾指针和头指针。同时,用发送缓冲区计数器(OUT_BOUND_CNT)记录发送缓冲区中需要发送的数据报文的个数。
图5所示为IXP1200向MPC750发送控制报文的图解。首先IXP1200根据out_mfa_tail_ptr得到指向发送缓冲区的空闲消息帧的头指针的地址,然后向该指针所指的内存处依次写入待发送的控制帧,每写一帧,out_mfa_tail_ptr就下移一帧,直到所有控制帧写完后,out_mfa_tail_ptr指向发送缓冲区的下一个空闲消息帧,以便下次发送控制报文使用,OUT BOUND CNT的值加一。只要OUT BOUND CNT的值不等于0,IXP1200就会产生PCI中断,上报给MPC750。
MPC750收到中断后,从IXP1200的发送缓冲区先进先出寄存器(OUTBOUND_FIFO)中得到IXP1200发来的控制帧所在地址的指针,然后从该指针所指地址的内存空间处取得待传送的控制帧,每取一帧,OUT_MFA_HEAD_PTR就指向发送缓冲区的下一个控制帧所在的地址,待所有控制帧取完后,OUT_BOUND_CNT的值减一。
MPC750发送控制报文给IXP1200为了程序设计的方便,使用IN_MFA_TAIL_PTR和in_mfa_head_ptr分别表示接收缓冲区中已被占用队列的尾指针和头指针,由于该队列和空闲队列共用一段连续的内存的空间,所以接收缓冲区的空闲队列的头指针和尾指针也可以知道,即接收缓冲区中已被占用队列的尾指针和头指针就是接收缓冲区的空闲队列的头指针和尾指针。同时,用接收缓冲区计数器(IN_BOUND_CNT)记录接收缓冲区中已经接收的数据报文的个数。
图6所示为MPC750向IXP1200发送控制报文的图解。MPC750向IXP1200发送控制报文时,MPC750先读IXP1200的接收缓冲区先进先出寄存器(INBOUND_FIFO),根据IN_MFA_TAIL_PTR得到IXP1200接收缓冲区的空闲消息帧的头指针的地址,然后向该指针所指的内存处依次写入待发送的控制帧,每写一帧,IN_MFA_TAIL_PTR就下移一帧,直到所有控制帧写完后,IN_MFA_TAIL_PTR指针指向接收缓冲区的下一个空闲消息帧,以便下次发送控制报文使用,IN_BOUND_CNT的值加一。只要IN_BOUND_CNT的值不等于0,MPC750就会产生I2O中断上报给IXP1200。
IXP1200接到I2O中断后,在in_mfa_head_ptr处得到MPC750发来的控制帧所在地址的指针,再从该指针所指地址的内存处取得待传送的控制帧,每取一帧,in_mfa_head_ptr就指向接收缓冲区的下一个控制帧所在地址,待所有控制帧取完后,IN_BOUND_CNT的值减一。
在本实施例中,MPC750和IXP1200进行数据传输时,MPC750是采用bcopy方式把数据发送给IXP1200的,如果数据量很大,MPC750也可以采用DMA的方式把数据发送给IXP1200,数据传输速度会更快,而且CPU的占用率也会降低。
以上实施例只介绍了主CPU和一个从CPU的通信情况,该通信方法同样适用于主CPU和两个或两个以上从CPU同时通信的情况。同时,对于其它系列有类似结构的CPU,该通信方法同样适用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种多CPU通信的方法,其特征在于,该方法包括以下步骤分别设置与CPU相连的可相互访问的外挂内存空间,将待发送的数据报文由发送方CPU写入与接收方CPU相连的内存空间,设置寄存器以产生中断信号给接收方CPU,接收方CPU收到中断信号后,进行数据报文接收;将待发送的控制报文由发送方CPU写入智能输入输出单元的缓冲区,产生智能输入输出单元的中断信号给接收方CPU,接收方CPU收到中断信号后,从智能输入输出单元的缓冲区中取得控制报文。
2.根据权利要求1所述的多CPU通信的方法,其特征在于,所述设置外挂内存空间步骤进一步包括在与CPU各自相连的外挂内存空间内,各建立一固定大小的缓冲区,作为接收对方数据报文的目的地址,并在每一个缓冲区增设控制该缓冲区是否可写入消息的控制位;
3.根据权利要求2所述的多CPU通信的方法,其特征在于,数据报文的传输过程进一步包括发送方CPU判断本方控制位是否为可写入消息状态,如果是就申请本方缓冲区的动态空间并存放待发送的数据报文,否则等待一定时间后,强制把该控制位设置为可写入消息状态,再申请本方缓冲区的动态空间并存放待发送的数据报文;发送方CPU将本方缓冲区动态空间中的数据报文写入接收方缓冲区的目的地址后,将本方控制位设置为禁止写入消息状态;接收方CPU处理完收到的数据报文后,将发送方的控制位修改为可写入消息状态。
4.根据权利要求1所述的多CPU通信的方法,其特征在于,将一个控制报文分为若干个控制帧,其传输过程进一步包括a、发送方CPU根据智能输入输出单元中的缓冲区尾指针得到空闲消息帧头指针的地址,然后向该指针所指的缓冲区中写入待传送的控制帧,尾指针指向该缓冲区的下一个空闲消息帧;b、将该缓冲区计数器的值加一,发送方CPU产生智能输入输出单元中断,上报给接收方CPU;c、接收方CPU接到中断后,在智能输入输出单元的寄存器中,得到发送方CPU发来的控制报帧所在地址的指针,然后从该指针指向的缓冲区空间处取得待传送的控制报文;d、缓冲区头指针指向该缓冲区中的下一个消息帧所在的地址,取完所有控制帧后,缓冲区计数器的值减一。
5.根据权利要求3所述的多CPU通信的方法,其特征在于,发送方为从CPU,接收方为主CPU,其中从CPU包括内核和微引擎两部分,数据报文的传输过程进一步包括从CPU将其缓冲区中的待发送的数据报文以直接存取控制方式写入与主CPU相连的缓冲区的目的地址后,主CPU返回硬件信号通知从CPU的微引擎;从CPU的微引擎将本方的控制位设置为禁止写入消息状态后,产生中断通知从CPU的内核;从CPU的内核控制门铃寄存器发中断给主CPU;主CPU收到中断后,读取本方缓冲区中的数据,将其封装并发送给上层软件,并将从CPU的控制位设置为可写入消息状态。
6.根据权利要求3所述的多CPU通信的方法,其特征在于发送方为主CPU,接收方为从CPU,其中主CPU包括内核和微引擎两部分,数据报文的传输过程进一步包括主CPU将其缓冲区中的待发送的数据报文以字节拷贝方式或直接存取控制方式写入与从CPU相连的缓冲区后,将本方的控制位设置为禁止写入消息状态,并设置从CPU的门铃寄存器发中断给从CPU的内核;从CPU的内核设置本方的内部线程中断寄存器,使从CPU的微引擎产生中断,转发本方缓冲区中的数据报文;从CPU的微引擎将主CPU的控制位设置为可写入消息状态。
7.根据权利要求2或5或6所述的多CPU通信的方法,其特征在于所述的固定大小的缓冲区中,只存放一个包括报头和报文的数据报文。
8.根据权利要求4所述的多CPU通信的方法,其特征在于发送方为从CPU,接收方为主CPU,其中从CPU包括内核和微引擎两部分,控制报文的传输过程进一步包括所述步骤a进一步包括从CPU根据本方智能输入输出单元中的发送缓冲区尾指针得到指向发送缓冲区的空闲消息帧头指针的地址,然后向该指针所指的缓冲区处写入待传送的控制帧,发送缓冲区尾指针指向发送缓冲区的下一个空闲消息帧;所述步骤c进一步包括主CPU接到中断后,在从CPU的发送缓冲区中的先进先出寄存器中得到从CPU发来的控制报文的数据指针所在的地址,然后从该指针指向的缓冲区空间处取得待传送的控制报文。
9.根据权利要求4所述的多CPU通信的方法,其特征在于发送方为主CPU,接收方为从CPU,其中主CPU包括内核和微引擎两部分,控制报文的传输过程进一步包括所述步骤a进一步包括主CPU读取从CPU的智能输入输出单元中的接收缓冲区中的先进先出寄存器,从该寄存器中得到接收缓冲区尾指针,并根据该尾指针得到从CPU接收缓冲区的空闲消息帧的头指针地址,向该指针所指的缓冲区处写入待传送的控制帧,接收缓冲区尾指针指向接收缓冲区的下一个空闲消息帧;所述步骤c进一步包括从CPU接到中断后,根据本方接收缓冲区头指针处得到主CPU发送来的控制报文的数据指针所在的地址,并从该指针指向的缓冲区处取得待传送的控制报文。
全文摘要
本发明提供了一种多CPU通信的方法,该方法包括以下步骤分别设置与CPU相连的可相互访问的外挂内存空间,将待发送的数据报文由发送方CPU写入与接收方CPU相连的内存空间,设置寄存器以产生中断信号给接收方CPU,接收方CPU收到中断信号后,进行数据报文接收;将待发送的控制报文由发送方CPU写入智能输入输出单元的缓冲区,产生智能输入输出单元的中断信号给接收方CPU,接收方CPU收到中断信号后,从智能输入输出单元的缓冲区中取得控制报文。应用本发明,采用不同的中断和传输通道进行数据传输,解决了重要数据的安全问题,提高了数据传输的速度。
文档编号G06F12/14GK1512373SQ02158910
公开日2004年7月14日 申请日期2002年12月26日 优先权日2002年12月26日
发明者朱克楚 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1