基于pci共享内存的双cpu通信系统的制作方法

文档序号:6381667阅读:589来源:国知局
专利名称:基于pci共享内存的双cpu通信系统的制作方法
技术领域
本发明属于板内多CPU之间通信系统领域,具体涉及一种基于PCI共享内存的双CPU通信系统。
背景技术
在双CPU系统中,一个CPU作为PCI主设备,另一个作为PCI从设备,作为PCI从设备的CPU可以将自己的一段内存映射到PCI设备上(作为PCI从设备的一个功能),作为PCI主设备的CPU可以访问这段内存,将这段内存叫做共享内存,用它来实现这两个CPU之间的通信。目前,基于双CPU结构的网络处理器通常采用BCM1250微处理器做转发,负责数据报文的转发,PPC8245微处理器做控制,负责转发表项的管理,两者通过PCI总线相互通信。其中,BCM1250微处理器作为PCI从设备,提供16M内存作为共享内存,PPC8245微处理器可通过PCI总线访问BCM1250微处理器上的16M物理内存。数据报文采用TLV方式编码,包括数据的类型、长度和数据体。但由于PPC8245微处理器下发转发表项到BCM1250微处理器,BCM1250微处理器向PPC8245微处理器上传调试信息,需要数据传输的一致性,保证共享内存访问的一致性是亟待解决的问题。

发明内容
本发明解决了双CPU基于PCI的通信共享内存访问一致性的问题,提供了一种双CPU之间的简洁、高效的通信系统。
本发明的另一个目的,在双CPU之间提供两种不同的数据传输方式。
本发明的技术内容一种基于PCI共享内存的双CPU通信系统,其特征在于(1)BCM1250微处理器分配一段物理内存作为共享内存,设置PCI配置空间中的地址映射寄存器,PPC8245微处理器保留一段内存地址空间,设置PCI配置空间中的BAR0寄存器;(2)将共享内存分为一从PPC8245微处理器到BCM1250微处理器的通信通道和一从BCM1250微处理器到PPC8245微处理器的通信通道;(3)每个通道的一方只能读,而另一方只能写。
每个通道提供一个通道读写标志位,用于表示通道中是否有数据,通信的接收方轮循这个标志位,当有数据时,则接收数据;通信的发送方在发送数据时检查这个标志位,当没有数据时,可以发送数据,否则不可以发送数据,同时给出相应的出错信息。
每个通道进一步提供一个返回值标志位,用于表示接收方作完处理后的回应,PPC8245微处理器到BCM1250微处理器通道的发送方在给定的时间内轮循这个标志位,如在给定的时间内还没有接收方的回应,说明可能接收CPU出现异常情况,这时发送CPU需要延长等待时间,同时提示系统管理员PCI通信系统出错信息。
所述通道读写标志位的访问权限为对于发送方,只能将通道读写标志位由无数据状态(0)改为有数据状态(1),而接收方只能将通道读写标志位由有数据状态(1)改为无数据状态(0)。
本发明的技术效果将共享内存分为两个通道,没有采用多通道设计,也没有采用发送和接收缓存,这样在保证通信效率的同时,尽量保持简洁。
通信协议必须保证重要数据的可靠传输,对于同步调用的通信方式,可以保证数据的可靠性,同时还保证了数据先后的一致性,而异步调用方式则不保证数据的可靠性。本发明采用两种数据传输方式保证了系统的可靠性、稳定性,且在可靠的同步发送方式中,如果在规定的时间内接受方还没有返回,则发送方必须采用相应的措施来通知系统管理员,使系统具有容错性。
接收数据的CPU通过轮循标志位的方式来判断是否有数据的到来,这种方式下的系统开销很小,且不中断同一报文的转发流程。


图1是本发明中共享内存示意图;图2是本发明中共享内存的结构示意图;图3是本发明中从PPC8245微处理器到BCM1250微处理器通道的发送数据流程示意图;图4是本发明中从BCM1250微处理器到PPC8245微处理器通道的发送数据流程示意图;图5是本发明中两个通信的接收数据流程示意图。
具体实施例方式
在本系统中,BCM1250微处理器分配16M物理内存作为共享内存,设置PCI配置空间中的地址映射寄存器;PPC8245微处理器保留16M内存地址空间,设置PCI配置空间中的BARO寄存器。通过双方的配置,PPC8245微处理器就可以通过PCI总线访问BCM1250微处理器上的16M物理内存,完成PCI设备的初始化,同时BCM1250微处理器可以通过INTA中断PPC8245微处理器,PPC8245微处理器可以通过MAILBOX中断BCM1250微处理器,实现二者之间的中断通信。
将共享内存分为一从PPC8245微处理器到BCM1250微处理器的通信通道和一从BCM1250微处理器到PPC8245微处理器的通信通道。参考图1,共享内存的前8M为PPC8245微处理器的发送通道,BCM1250微处理器的接收通道。后8M为BCM1250微处理器的发送通道,PPC8245微处理器的接收通道,每个通道的一方只能读,而另一方只能写,这样一方面保证了两个通道的并行使用,同时也起到了数据区的读写保护。
两个通道的结构定义相同,参考图2,两个通道的前1K空间为控制头第一个四字节整型数定义为通道读写标志位,第二个四字节整型数定义为通道返回值标志位,其它的空间暂时保留。两个通道从1K到8M的空间为数据部分,其中前32字节为数据头,第一个四字节整型数定义为数据类型标志位,第二个四字节整型数定义为数据操作标志位,第三个四字节整型数定义为数据长度标志位,其它20字节保留。即从1K+32字节之后才是具体的数据内容。
虽然两个通道的结构定义相同,但通信方式不同。PPC8245微处理器下发转发表项到BCM1250微处理器,需要可靠的传输,一方在发送数据之后,必须同步等待另一方做完处理之后的返回结果,整个过程通信才结束,类似RPC的同步调用过程。在正常情况下,由于发送函数是同步调用的,每次调用发送函数都可以成功发送数据,保证了数据的可靠传输和数据的先后顺序。这种通信方式能够满足从PPC8245微处理器到BCM1250微处理器的转发表项数据的传输,其传输频繁,且必须保证这些数据的可靠传输和效率,同时还要保证数据的先后顺序。BCM1250微处理器向PPC8245微处理器上传调试信息,不需要可靠的传输,一方调用发送函数发送数据,发送函数发送数据之后立刻返回,另一方在处理完成之后也不给返回结果。这样发送函数有可能没有发送成功,即数据得不到可靠的传输。这种传输方式适合从BCM1250微处理器到PPC8245微处理器的调试信息数据的传输,其数据传输少,且是在需要的时候才有传输。
在本网络处理器中,发送模块的实现用函数的方式提供给上层模块,接收模块启动一个任务来实现,在任务中将收到的数据分发给相应的处理模块。同时每个通道提供一个通道读写标志位,用来表示通道中是否有数据(如,0表示没有数据,1表示有数据),通信的双方轮循这个标志位,来决定做相应的操作。当有数据时,接收方接收数据,当没有数据时,发送方可以发送数据。这样的设计还必须保证通道标志位的访问权限,对于发送方,只能将通道标志位由无数据状态(0)改为有数据状态(1),而接收方只能将通道标志位由有数据状态(1)改为无数据状态(0),否则共享内存的读写可能会混乱。参考图3,从PPC8245微处理器到BCM1250微处理器的可靠同步发送流程为,发送方首先通过“通道读写标志位”判断是否可以访问共享内存,如果可以访问,则发送数据,即将数据写入共享内存,再将“通道读写标志位”设置为可接收状态,然后轮循“通道返回值标志位”,等待接收方的回应。如果在给定的时间内还没有返回,说明可能接收方出现异常情况,这时发送方需要延长等待时间,如1s,每隔100ms判断一次是否返回,同时提示系统管理员PCI通信系统出错信息(这个过程不占CPU时间),然后退出发送流程。如果共享内存不可以访问,即接收方没有释放共享内存的控制权,可能接收方出现异常情况,这时发送方必须告警,提示系统管理员PCI通信系统出错的信息,然后退出发送流程。
参考图4,从BCM1250微处理器到PPC8245微处理器的不可靠的发送流程为,发送方首先通过“通道读写标志位”判断是否可以可访问共享内存,如果可以访问,则发送数据,即将数据写入共享内存,再将“通道读写标志位”设置为可接收状态,然后返回。如果共享内存不可以访问,即接收方没有释放共享内存的控制权,可能接收方出现异常情况,这时发送方直接退出。
参考图5,两个通道的接收流程为接收方启动接收任务,通过轮循“通道读写标志位”,判断通道中是否有数据,如果有数据,“通道读写标志位”为接收状态,则接收数据,根据数据控制头中的TYPE和OPTCODE,交给相应的模块处理,然后将“通道读写标志位”改为发送状态。对于“可靠的同步发送方式”的接收模块,需要将处理模块返回的结果写到“通道返回值标志位”中。
权利要求
1.一种基于PCI共享内存的双CPU通信系统,其特征在于(1)BCM1250微处理器分配一段物理内存作为共享内存,设置PCI配置空间中的地址映射寄存器,PPC8245微处理器保留一段内存地址空间,设置PCI配置空间中的BAR0寄存器;(2)将共享内存分为一从PPC8245微处理器到BCM1250微处理器的通信通道和一从BCM1250微处理器到PPC8245微处理器的通信通道;(3)每个通道的一方只能读,而另一方只能写。
2.如权利要求1所述的基于PCI共享内存的双CPU通信系统,其特征在于每个通道提供一个通道读写标志位,用于表示通道中是否有数据,通信的接收方轮循这个标志位,当有数据时,则接收数据;通信的发送方在发送数据时检查这个标志位,当没有数据时,可以发送数据,否则不可以发送数据,同时给出相应的出错信息。
3.如权利要求1或2所述的基于PCI共享内存的双CPU通信系统,其特征在于每个通道进一步提供一个返回值标志位,用于表示接收方作完处理后的回应,PPC8245微处理器到BCM1250微处理器通道的发送方在给定的时间内轮循这个标志位,如在给定的时间内还没有接收方的回应,发送方需要延长等待时间,同时提示系统管理员PCI通信系统出错信息。
4.如权利要求2所述的基于PCI共享内存的双CPU通信系统,其特征在于所述通道读写标志位的访问权限为对于发送方,只能将通道读写标志位由无数据状态(0)改为有数据状态(1),而接收方只能将通道读写标志位由有数据状态(1)改为无数据状态(0)。
全文摘要
本发明提供了一种基于PCI共享内存的双CPU通信系统,属于板内多CPU之间通信系统领域。在本系统中,BCM1250微处理器分配一段物理内存作为共享内存,设置PCI配置空间中的地址映射寄存器,PPC8245微处理器保留一段内存地址空间,设置PCI配置空间中的BAR0寄存器,将共享内存分为一从PPC8245微处理器到BCM1250微处理器的通信通道和一从BCM1250微处理器到PPC8245微处理器的通信通道,两个CPU之间通过这两个通道来实现通信。同时实现从PPC8245到BCM1250的可靠同步发送方式和从BCM1250到PPC8245的不可靠发送方式,使本发明在保证通信效率的同时,保证了系统的可靠性和稳定性。
文档编号G06F15/163GK1564147SQ200410003490
公开日2005年1月12日 申请日期2004年3月31日 优先权日2004年3月31日
发明者杨志岗, 黄明飞 申请人:港湾网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1