多通道数据处理方法及装置的制作方法

文档序号:7655278阅读:220来源:国知局
专利名称:多通道数据处理方法及装置的制作方法
技术领域
本发明涉及数据通信技术,尤其涉及一种多通道数据处理方法及装置。
背景技术
随着数据通信技术的发展,多通道数据处理的应用也越来越广泛。所谓多通道数据处理是指,从多个入通道接收报文,然后通过出通道将报文发送出去。在传统的多通道数据处理逻辑结构中,入通道和出通道是对应的。比如,参见图1所示的多通道数据处理逻辑结构示意图,入口侧共有两个数据通道RX0和RX1,出口侧也有两个数据通道TX0和TX1。其中,写缓存模块WR用于从入口侧的两个数据通道RX0和RX1接收报文,将收到的报文写入缓存模块中,如写入同步动态随机存储器SDRAM中,并在接收到的报文为包尾时,将该包信息如包长度、包缓存地址等写入队列管理模块QM;QM中包括两个包信息队列FIFO0和FIFO1,分别用于存储WR模块写入的来自RX0通道和RX1通道的报文的包信息;读数据模块RD0和RD1分别用于从QM中的FIFO0和FIFO1队列读取包信息,根据该包信息从缓存模块中读取报文,并分别将读出的报文发送给发送模块TX0和TX1;TX0和TX1用于通过自身连接的出通道将收到的报文发送出去。在图1中,缓存模块需要处理三个端口的请求仲裁WR模块的写端口和两个RD模块的读端口,缓存模块的有效带宽在这三个端口之间分配。RD模块的数目越多,各个RD模块所分得的可以访问缓存模块的带宽就越少。
对于入通道报文允许交织、而出通道报文不允许交织的情况,即来自入通道的报文可以不按照整包来传输、而出通道却必须按照整包来发送报文的情况,上述多通道数据处理方法会耗费较多的缓存资源。比如,在图1中,假设RX0和RX1从10G带宽的SPI4接口接收数据;TX0和TX1分别对应一个10G带宽的XAUI接口。如果缓存模块的有效带宽为20G,则每个RD模块平均可以获得约7G的访问带宽。但是,由于TX0和TX1是以10G的速率在发包,其发送速率要大于RD模块从缓存模块中读出报文的速率7G,因此,为了保证TX0和TX1在最恶劣的情况下也能不断流地一次发送完一个完整的数据包,TX0和TX1就需要较大的缓存来存储RD模块读出的报文,直到整个包都被读出后,再将缓存中的整包按照10G的速率一次发送出去。
可见,在现有的多通道数据处理方法中,每个包信息队列都对应一个读数据模块,包信息队列的个数越多,读数据模块的个数相应也就越多。但是,由于缓存模块的有效带宽有限,且读数据模块的数量越多,各个读数据模块所能获得的可以访问缓存模块的带宽就越少,因此,在读数据模块很多、读数据模块从缓存模块中读取报文的速率达不到发送模块发送报文的速率的情况下,为了保证发送模块能够不断流地一次发送完一个完整的数据包,各个发送模块都需要较大的缓存来存储读数据模块从缓存模块中读出的报文,直到整个包都被读出为止。对于发送模块数量较多的情形,这种为各个发送模块都配置较大缓存的做法会耗费大量宝贵的缓存资源。并且,为每个包信息队列分别设置一个读数据模块和一个发送模块,会消耗大量的逻辑资源。

发明内容
有鉴于此,本发明的主要目的在于提供一种多通道数据处理方法及装置,以节省资源。
为达到上述目的,本发明提供的多通道数据处理方法如下对队列管理模块中的包信息队列进行分组,并为每组包信息队列分别设置一个读数据模块和一个对应的发送模块,其中,所分成的组数小于包信息队列的个数;所述读数据模块从自身所对应组中的各个包信息队列中轮流读取包信息,根据读取的包信息读出报文,并将读出的报文发送给对应的发送模块;发送模块收到读数据模块发送来的报文后,将收到的报文通过与该报文的入通道相对应的出通道发送出去。
其中,所述对队列管理模块中的包信息队列进行分组包括将队列管理模块中的所有包信息队列分成一组。
所述对队列管理模块中的包信息队列进行分组包括将队列管理模块中的包信息队列至少分成两组,且其中至少有一组中包括至少两个包信息队列。
所述根据读取的包信息读出报文包括读数据模块根据读取的包信息从缓存模块中读出报文。
所述读数据模块将读出的报文发送给对应的发送模块还包括读数据模块将该报文的入通道所对应的出通道信息发送给发送模块;所述发送模块将收到的报文通过与该报文的入通道相对应的出通道发送出去包括发送模块将收到的报文通过与收到的出通道信息相对应的出通道发送出去。
当所分成的组数大于1时,各个读数据模块采用并行工作方式。
本发明提供的多通道数据处理装置包括写缓存模块、缓存模块、包括至少一组包信息队列且至少有一组包信息队列中包括至少两个包信息队列的队列管理模块、与各组包信息队列一一对应的读数据模块以及与各个读数据模块一一对应的发送模块,其中,写缓存模块,用于将从入通道接收到的报文写入缓存模块,并在收到的报文为包尾时,将该包信息写入队列管理模块中与该包的入通道相对应的包信息队列;读数据模块,用于从自身所对应组中的各个包信息队列中轮流读取包信息,根据读取的包信息从缓存模块中读出报文,并将读出的报文发送给与自身对应的发送模块;发送模块,用于在收到读数据模块发送来的报文后,将收到的报文通过与该报文的入通道相对应的出通道发送出去。
所述读数据模块进一步用于将读出的报文的入通道所对应的出通道信息发送给发送模块;所述发送模块将收到的报文通过与收到的出通道信息相对应的出通道发送出去。
所述读数据模块个数大于1时,各个读数据模块采用并行工作方式。
由此可见,在本发明所提供的技术方案中,读数据模块和发送模块是与一组包信息队列相对应的,而不是与各个包信息队列分别对应,这样可以减少读数据模块和发送模块的个数,从而节省了逻辑资源。并且,发送模块的数量减少后,所有发送模块所需要的总缓存数量就会减少,从而也节省了缓存资源。另外,读数据模块的数量减少后,各个读数据模块就可以获得更多的访问缓存模块的带宽,如果分配给读数据模块的带宽能够使得读数据模块从缓存模块中读取报文的速率达到发送模块发送报文的速率,那么,发送模块就可以连续地将读数据模块读出的报文发送出去,而无需占用缓存资源来存储读数据模块读出的报文直到整个包被读取完毕,从而进一步减少了缓存资源的占用。


图1为现有技术中的多通道数据处理逻辑结构示意图。
图2为本发明中的多通道数据处理方法流程图。
图3为本发明实施例一中改进后的多通道数据处理逻辑结构示意图。
图4为本发明实施例二中改进前的多通道数据处理逻辑结构示意图。
图5为本发明实施例二中改进后的多通道数据处理逻辑结构示意图。
图6为本发明实施例中的多通道数据处理装置结构示意图。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,下面参照附图并举实施例,对本发明作进一步详细说明。
为了解决现有技术中的问题,本发明提供了一种多通道数据处理方法,参见图2所示,该方法主要包括以下步骤步骤201对队列管理模块中的包信息队列进行分组,并为每组包信息队列分别设置一个读数据模块和一个发送模块,其中,所分成的组数小于包信息队列的个数。
在步骤201中,可以将队列管理模块中的所有包信息队列就当作一组,或者也可以将它们分成多组。在分成多组的情况下,至少要有一个组中包括至少两个包信息队列。
步骤202读数据模块对自身所对应组中的各个包信息队列进行轮询,轮流读取所述各个包信息队列中的包信息,根据读取的包信息读出报文,并将读出的报文发送给对应的发送模块。
步骤203发送模块收到读数据模块发送来的报文后,将收到的报文通过与该报文的入通道相对应的出通道发送出去。
由图2可见,在本发明所提供的技术方案中,读数据模块和发送模块是与一组包信息队列相对应的,而不是与各个包信息队列分别对应,这样可以减少读数据模块和发送模块的个数,节省逻辑资源。并且,发送模块的数量减少后,所有发送模块所需要的总缓存数量就会减少,从而也节省了缓存资源。
为更加清楚起见,下面通过两个具体实施例对本发明所提供的多通道数据处理方法进行详细说明。
实施例一为了节省缓存资源和逻辑资源,可以采用本发明所提供的方法对图1所示的多通道数据处理逻辑结构进行改进,改进后的多通道数据处理逻辑结构参见图3所示。
在图3中,QM中的两个包信息队列被分成了一组,该组对应一个RD模块和一个TX模块,该TX模块对应TX0和TX1两个出通道。其中,WR模块、QM模块和缓存模块的功能与图1一致,这里不再一一赘述,下面主要对图3中的RD模块和TX模块的工作过程进行说明。
在图3中,QM模块中仍有两个包信息队列FIFO0和FIFO1,但只有一个RD模块,此时,RD模块可以对QM中的两个包信息队列进行轮询,即轮流读取FIFO0和FIFO1中的包信息,然后根据包信息从缓存模块中读出报文,将读出的报文发送给TX模块;TX模块收到RD模块发送过来的报文后,将收到的报文发送出去。RD模块在向TX模块发送报文时,还需要将该报文的入通道所对应的出通道信息发送给TX模块;TX模块收到后,将收到的报文通过相应的出通道发送出去。比如,对于根据FIFO0中的包信息而读出的报文,RD模块会将TX0信息携带在该报文中发送给TX模块,TX模块收到后,将该报文通过TX0通道发送出去。
在图3中,任意时刻只有一个出通道在发送数据,TX0和TX1通过时分复用的方式实现出口10G的数据处理带宽。在图1中,虽然出通道TX0和TX1理论上可以达到20G的总带宽,但是,由于入通道RX0和RX1的总带宽仅有10G,因此实际上TX0和TX1的出口平均带宽也只有10G。
相比图1,图3只采用一个RD模块和一个TX模块,这样不仅可以节省一倍的缓存资源,并且还可以节省一倍的逻辑资源。另外,在图3中,缓存模块仅需处理两个端口的请求仲裁一个WR模块的写端口和一个RD模块的读端口。此时,如果缓存模块的有效带宽为20G,则RD模块平均可以获得10G的访问带宽,即RD模块可按照10G的速率从缓存模块中读取报文。这样,TX模块就可以按照10G的速率连续地发送RD模块读出的报文,而无需占用缓存来存储RD模块读出的报文直到一个完整数据包的报文都被读取完毕,从而进一步节省了缓存资源。
实施例二图4给出了另一种常见的多通道数据处理逻辑结构示意图,共包括4个带宽均为5G的入通道RX0、RX1、RX2和RX3,以及4个带宽均为10G的出通道TX0、TX1、TX2和TX3。其中,WR模块用于从入口侧的4个数据通道RX0、RX1、RX2和RX3接收报文,将收到的报文写入缓存模块中,并在接收到的报文为包尾时,将该包的信息写入QM模块;QM中包括4个包信息队列FIFO0、FIFO1、FIFO2和FIFO3,分别用于存储WR写入的来自RX0、RX1、RX2和RX3通道的报文的包信息;RD0、RD1、RD2和RD3模块分别用于从QM中的FIFO0、FIFO1、FIFO2和FIFO3队列中读取包信息,根据包信息从缓存模块中读取报文,然后通过TX0、TX1、TX2和TX3将读出的报文发送出去。
这里,为了节省逻辑资源和缓存资源,可以采用本发明所提供的方法对图4所示的多通道数据处理逻辑结构进行改进,改进后的多通道数据处理逻辑结构参见图5所示。
在图5中,QM中的4个包信息队列被分成了两组,第一组包括FIFO0和FIFO1这两个包信息队列,第二组包括FIFO2和FIFO3这两个包信息队列;并且,还为各组分别设置了读数据模块RD01和RD23以及发送模块TX01和TX23。其中,RD01模块用于根据轮询调度原则分别从FIFO0和FIFO1队列中读取包信息,并根据包信息从缓存模块中读取报文,然后将读取的报文发送给TX01模块;TX01模块用于将收到的报文通过相应的出通道发送出去,即将来自RX0通道的报文通过TX0通道发送出去,将来自RX1通道的报文通过TX1通道发送出去。RD23模块用于根据轮询调度原则分别从FIFO2和FIFO3队列中读取包信息,并根据包信息从缓存模块中读取报文,然后将读取的报文发送给TX23模块;TX23模块用于将收到的报文通过相应的出通道发送出去,即将来自RX2通道的报文通过TX2通道发送出去,将来自RX3通道的报文通过TX3通道发送出去。
在图5中,RD01和RD23并行工作,TX0和TX1按照时分复用的方式进行报文发送,TX2和TX3按照时分复用的方式进行报文发送。其中,TX01的发送带宽可达10G,与RX0和RX1的入口总带宽10G相持平,因此来自RX0和RX1的流量能够被及时发送出去;同理,来自RX2和RX3的流量也能够被及时发送出去。
当然,也可以将图4中的所有包信息队列当作一个组,为所有包信息队列只设置一个读数据模块和一个发送模块,由该读数据模块对QM中的所有包信息队列进行轮询,由TX0、TX1、TX2和TX3四个出通道通过时分复用的方式将报文发送出去。但是,由于TX0、TX1、TX2和TX3采用时分复用的方式进行报文发送后,整个出口的带宽只能达到10G,要远远小于20G的入口带宽,因此,将图4中的所有包信息队列分成一个组的做法,会造成入口流量不能够及时得到发送,并最终导致异常丢包现象的发生。
另外,还可以将图4中的包信息队列分成如下两组其中一组包括FIFO0、FIFO1和FIFO2三个包信息队列,另一组只包括FIFO3队列;并且分别为各组设置读数据模块和发送模块。也就是相当于,对FIFO3队列的处理与图4保持一致,而对FIFO0、FIFO1和FIFO2队列则采用轮询调度机制。其中的具体处理过程这里不再赘述。
相应地,本发明还提供了一种多通道数据处理装置,该装置结构参见图6所示,主要包括写缓存模块、缓存模块、包括至少一组包信息队列且至少有一组包信息队列中包括至少两个包信息队列的队列管理模块、与各组包信息队列一一对应的读数据模块以及与各个读数据模块一一对应的发送模块,其中,写缓存模块,用于将从入通道接收到的报文写入缓存模块,并在收到的报文为包尾时,将该包信息写入队列管理模块中与该包的入通道相对应的包信息队列;读数据模块,用于从自身所对应组中的各个包信息队列中轮流读取包信息,根据读取的包信息从缓存模块中读出报文,并将读出的报文发送给与自身对应的发送模块;发送模块,用于在收到读数据模块发送来的报文后,将收到的报文通过与该报文的入通道相对应的出通道发送出去。
其中,所述读数据模块进一步用于将读出的报文的入通道所对应的出通道信息发送给发送模块;
所述发送模块将收到的报文通过与收到的出通道信息相对应的出通道发送出去。
当所述读数据模块个数大于1时,各个读数据模块采用并行工作方式。
以上所述对本发明的目的、技术方案和有益效果进行了进一步的详细说明,所应理解的是,以上所述并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种多通道数据处理方法,其特征在于,包括对队列管理模块中的包信息队列进行分组,并为每组包信息队列分别设置一个读数据模块和一个对应的发送模块,其中,所分成的组数小于包信息队列的个数;所述读数据模块从自身所对应组中的各个包信息队列中轮流读取包信息,根据读取的包信息读出报文,并将读出的报文发送给对应的发送模块;发送模块收到读数据模块发送来的报文后,将收到的报文通过与该报文的入通道相对应的出通道发送出去。
2.根据权利要求1所述的方法,其特征在于,所述对队列管理模块中的包信息队列进行分组包括将队列管理模块中的所有包信息队列分成一组。
3.根据权利要求1所述的方法,其特征在于,所述对队列管理模块中的包信息队列进行分组包括将队列管理模块中的包信息队列至少分成两组,且其中至少有一组中包括至少两个包信息队列。
4.根据权利要求1所述的方法,其特征在于,所述根据读取的包信息读出报文包括读数据模块根据读取的包信息从缓存模块中读出报文。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述读数据模块将读出的报文发送给对应的发送模块还包括读数据模块将该报文的入通道所对应的出通道信息发送给发送模块;所述发送模块将收到的报文通过与该报文的入通道相对应的出通道发送出去包括发送模块将收到的报文通过与收到的出通道信息相对应的出通道发送出去。
6.根据权利要求1所述的方法,其特征在于,当所分成的组数大于1时,各个读数据模块采用并行工作方式。
7.一种多通道数据处理装置,其特征在于,包括写缓存模块、缓存模块、包括至少一组包信息队列且至少有一组包信息队列中包括至少两个包信息队列的队列管理模块、与各组包信息队列一一对应的读数据模块以及与各个读数据模块一一对应的发送模块,其中,写缓存模块,用于将从入通道接收到的报文写入缓存模块,并在收到的报文为包尾时,将该包信息写入队列管理模块中与该包的入通道相对应的包信息队列;读数据模块,用于从自身所对应组中的各个包信息队列中轮流读取包信息,根据读取的包信息从缓存模块中读出报文,并将读出的报文发送给与自身对应的发送模块;发送模块,用于在收到读数据模块发送来的报文后,将收到的报文通过与该报文的入通道相对应的出通道发送出去。
8.根据权利要求7所述的装置,其特征在于,所述读数据模块进一步用于将读出的报文的入通道所对应的出通道信息发送给发送模块;所述发送模块将收到的报文通过与收到的出通道信息相对应的出通道发送出去。
9.根据权利要求7所述的装置,其特征在于,所述读数据模块个数大于1时,各个读数据模块采用并行工作方式。
全文摘要
本发明提供了一种多通道数据处理方法及装置。该方法包括对队列管理模块中的包信息队列进行分组,并为每组包信息队列分别设置一个读数据模块和一个对应的发送模块,其中,所分成的组数小于包信息队列的个数;所述读数据模块从自身所对应组中的各个包信息队列中轮流读取包信息,根据读取的包信息读出报文,并将读出的报文发送给对应的发送模块;发送模块收到读数据模块发送来的报文后,将收到的报文通过与该报文的入通道相对应的出通道发送出去。利用本发明所提供的技术方案,能够节省缓存资源和逻辑资源。
文档编号H04L12/56GK101094176SQ200710118610
公开日2007年12月26日 申请日期2007年7月10日 优先权日2007年7月10日
发明者王彬, 刘强, 林晖, 加玉涛 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1