报文接收方法、装置及中央处理器的制造方法

文档序号:10626774阅读:465来源:国知局
报文接收方法、装置及中央处理器的制造方法
【专利摘要】本发明公开了一种报文接收方法、装置及中央处理器CPU,其中,该方法包括:对一个或多个芯片中各个芯片对应的缓冲区buffer统一分配全局buffer指针;从统一分配的全局buffer指针中确定用于接收报文的buffer指针;采用确定的buffer指针对应的buffer接收报文,通过本发明,解决了相关技术中存在buffer的利用率低,以及收包效率低的问题,进而达到了提高buffer利用率,为高优先等级的报文得到优先处理提供了基础的效果。
【专利说明】
报文接收方法、装置及中央处理器
技术领域
[0001]本发明涉及通信领域,具体而言,涉及一种报文接收方法、装置及中央处理器(Central Processing Unit,简称为 CPU)。
【背景技术】
[0002]CPU收包是指交换芯片将从物理链路上收到的报文,从芯片缓存中搬运到系统主存中,由CPU获取主存中的内容并处理,搬运工作一般由直接存储器存取/访问(DirectMemory Access,简称为DMA)完成。图1是相关技术中CPU收包的示意图,如图1所示,收包时,CPU预先在主存中申请存放报文的缓存,然后CPU控制交换芯片启动DMA收包,当报文被送到交换芯片缓存时,交换芯片将报文通过DMA通道写入主存中申请的缓存,完成了 DMA过程后,交换芯片产生硬件中断通知CPU,CPU可在中断服务程序中处理报文,或在收包线程中访问该段内存完成报文处理等。
[0003]目前,marvel 的专用集成电路(Applicat1n Specific Integrated Circuit,简称为ASIC)交换芯片中内置多个RxDMA通道,分别对应不同的收包队列,DMA buffer通过描述符链进行管理,每一个缓冲区buffer对应一个描述符:图2是相关技术中Rx DMA描述符的示意图,如图2示,每个描述符链分别将第一描述符的地址分别写入对应的DMA的CurrtRxDesc Ptr<n>>寄存器,设置描述符链的next2Receive和next2Return也等于第一个描述符的地址,并使能DMA通道,此时便可以传送报文,传送完一个报文后DMACurrtRxDesc Ptr<n>>自动指向下一个描述符。
[0004]对于单芯片系统,芯片厂商提供初始化的时候给DMA通道分别分配一个环行描述符链,这几个描述符链相互独立,与buffer的对应关系也是初始化时指定的,各通道之间不能共享buffer,实际的组网应用中,不可能各通道过来的报文是均衡的,有的多,有的少,那么很容易出现有的通道没有可用的buffer,导致报文被丢弃,而有的通道的描述符链占着buffer没有被使用;另外,通道和流量等级(Traffic class,简称为TC)是有对应关系的,例如,7号通道传输TC为7的报文,6号通道传输TC为6的报文,如果各通道的buffer不能共享,那么高TC的报文的高优先权就得不到体现;对于多芯片级联的系统,每个芯片单独分配描述符链和buffer,芯片间buffer也是不共享的,这样就严重降低了 buffer的利用率,并影响收包效率。
[0005]因此,在相关技术中存在buffer的利用率低,以及收包效率低的问题。

【发明内容】

[0006]本发明提供了一种报文接收方法、装置及中央处理器CPU,以至少解决相关技术中存在buffer的利用率低,以及收包效率低的问题。
[0007]根据本发明的一个方面,提供了一种报文接收方法,包括:对一个或多个芯片中各个芯片对应的缓冲区buffer统一分配全局buffer指针;从统一分配的全局buffer指针中确定用于接收报文的buffer指针;采用确定的所述buffer指针对应的buffer接收所述报文。
[0008]优选地,从统一分配的所述全局buffer指针中确定用于接收所述报文的所述buffer指针包括:获取所述报文的流量等级TC ;依据获取的所述TC从所述全局buffer指针中确定用于接收所述报文的所述buffer指针。
[0009]优选地,依据获取的所述TC从所述全局buffer指针中确定用于接收所述报文的所述buffer指针包括:确定所述全局buffer指针中剩余的可用指针的数量少于预定值;判断获取的所述TC是否超过预定等级;在判断结果为是的情况下,将所述全局buffer指针中剩余的可用指针分配给用于接收所述报文的所述buffer指针。
[0010]优选地,在采用确定的所述buffer指针对应的所述buffer接收所述报文之后,还包括:释放所述buffer指针对应的所述buffer。
[0011]优选地,在对所述一个或多个芯片中各个芯片对应的buffer统一分配所述全局buffer指针之后,还包括:对统一分配的全局buffer指针采用全局数组的方式进行统一保存。
[0012]根据本发明的另一方面,提供了一种报文接收装置,包括:分配模块,用于对一个或多个芯片中各个芯片对应的缓冲区buffer统一分配全局buffer指针;确定模块,用于从统一分配的全局buffer指针中确定用于接收报文的buffer指针;接收模块,用于采用确定的所述buffer指针对应的buffer接收所述报文。
[0013]优选地,所述确定模块包括:获取单元,用于获取所述报文的流量等级TC ;确定单元,用于依据获取的所述TC从所述全局buffer指针中确定用于接收所述报文的所述buffer 指针。
[0014]优选地,所述确定单元包括:确定子单元,用于确定所述全局buffer指针中剩余的可用指针的数量少于预定值;判断子单元,用于判断获取的所述TC是否超过预定等级;分配子单元,用于在所述判断子单元的判断结果为是的情况下,将所述全局buffer指针中剩余的可用指针分配给用于接收所述报文的所述buffer指针。
[0015]优选地,该装置还包括:释放模块,用于释放所述buffer指针对应的所述buffer。
[0016]优选地,该装置还包括:保存模块,用于对统一分配的全局buffer指针采用全局数组的方式进行统一保存。
[0017]根据本发明的还一方面,提供了一种中央处理器CPU,包括上述任一项所述的装置。
[0018]通过本发明,采用对一个或多个芯片中各个芯片对应的buffer统一分配全局buffer指针;从统一分配的全局buffer指针中确定用于接收报文的buffer指针;采用确定的所述buffer指针对应的buffer接收所述报文,解决了相关技术中存在buffer的利用率低,以及收包效率低的问题,进而达到了提高buffer利用率,为高优先等级的报文得到优先处理提供了基础的效果。
【附图说明】
[0019]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0020]图1是相关技术中CPU收包的示意图;
[0021]图2是相关技术中Rx DMA描述符的示意图;
[0022]图3是根据本发明实施例的报文接收方法的流程图;
[0023]图4是根据本发明实施例的报文接收装置的结构框图;
[0024]图5是根据本发明实施例的报文接收装置中确定模块44的优选结构框图;
[0025]图6是根据本发明实施例的报文接收装置中确定模块44中确定单元54的优选结构框图;
[0026]图7是根据本发明实施例的报文接收装置的优选结构框图一;
[0027]图8是根据本发明实施例的报文接收装置的优选结构框图二 ;
[0028]图9是根据本发明实施例的中央处理器CPU的结构框图;
[0029]图10是根据本发明实施例的描述链表示意图;
[0030]图11是根据本发明优选实施例的获取/释放buffer的方法的示意图。
【具体实施方式】
[0031]下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0032]在本实施例中提供了一种报文接收方法,图3是根据本发明实施例的报文接收方法的流程图,如图3所示,该流程包括如下步骤:
[0033]步骤S302,对一个或多个芯片中各个芯片对应的缓冲区buffer统一分配全局buffer 指针;
[0034]步骤S304,从统一分配的全局buffer指针中确定用于接收报文的buffer指针;
[0035]步骤S306,采用确定的buffer指针对应的buffer接收报文。
[0036]通过上述步骤,通过对各个芯片对应的buffer统一分配buffer指针,实现对各个芯片的buffer实现统一管理,解决了相关技术中存在buffer的利用率低,以及收包效率低的问题,进而达到了提高buffer利用率,为高优先等级的报文得到优先处理提供了基础的效果。
[0037]为保证buffer在相对较少时,高TC可以优先获取到buffer,从统一分配的全局buffer指针中确定用于接收报文的buffer指针时,可以采用以下方式来实现:先获取报文的流量等级TC ;依据获取的TC从全局buffer指针中确定用于接收报文的buffer指针。其中,依据获取的TC从全局buffer指针中确定用于接收报文的buffer指针时,先确定全局buffer指针中剩余的可用指针的数量少于预定值(即在buffer不充足的时候);判断获取的TC是否超过预定等级(即流量等级较高);在判断结果为是的情况下,将全局buffer指针中剩余的可用指针分配给用于接收报文的buffer指针。通过采用上述处理,保证了在buffer相对较少时,优先为高TC的报文提供buffer,使得高TC的优先权得到体现。
[0038]为进一步提高buffer的利用率,在采用确定的buffer指针对应的buffer接收报文之后,还包括:释放buffer指针对应的buffer。即使得不工作的buffer尽量空闲下来,buffer得到高效利用。
[0039]优选地,在对一个或多个芯片中各个芯片对应的buffer统一分配全局buffer指针之后,还包括:对统一分配的全局buffer指针采用全局数组的方式进行统一保存。采用全局数组存储buffer指针的方式,不仅读取快速,而且简单。
[0040]在本实施例中还提供了一种报文接收装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0041]图4是根据本发明实施例的报文接收装置的结构框图,如图4所示,该装置包括:分配模块42、确定模块44和接收模块46,下面对该装置进行说明。
[0042]分配模块42,用于对一个或多个芯片中各个芯片对应的缓冲区buffer统一分配全局buffer指针;确定模块44,连接至上述分配模块42,用于从统一分配的全局buffer指针中确定用于接收报文的buffer指针;接收模块46,连接至上述确定模块44,用于采用确定的buffer指针对应的buffer接收报文。
[0043]图5是根据本发明实施例的报文接收装置中确定模块44的优选结构框图,如图5所示,该确定模块44包括:获取单元52和确定单元54,下面对该确定模块44进行说明。
[0044]获取单元52,用于获取报文的流量等级TC ;确定单元54,连接至上述获取单元52,用于依据获取的TC从全局buffer指针中确定用于接收报文的buffer指针。
[0045]图6是根据本发明实施例的报文接收装置中确定模块44中确定单元54的优选结构框图,如图6所示,该确定单元54包括:确定子单元62、判断子单元64和分配子单元66,下面对该确定单元54进行说明。
[0046]确定子单元62,用于确定全局buffer指针中剩余的可用指针的数量少于预定值;判断子单元64,连接至上述确定子单元62,用于判断获取的TC是否超过预定等级;分配子单元66,连接至上述判断子单元64,用于在判断子单元的判断结果为是的情况下,将全局buffer指针中剩余的可用指针分配给用于接收报文的buffer指针。
[0047]图7是根据本发明实施例的报文接收装置的优选结构框图一,如图7所示,该装置除包括图4所示的所有模块外,还包括:释放模块72,下面对该释放模块72进行说明。
[0048]释放模块72,连接到上述接收模块46,用于释放buffer指针对应的buffer。
[0049]图8是根据本发明实施例的报文接收装置的优选结构框图二,如图8所示,该装置除包括图4所示的所有模块外,还包括:保存模块82,下面对该保存模块82进行说明。
[0050]保存模块82,连接至上述分配模块42和确定模块44,用于对统一分配的全局buffer指针采用全局数组的方式进行统一保存。
[0051 ] 图9是根据本发明实施例的中央处理器CPU的结构框图,如图9所示,该CPU 90,包括上述任一项的报文接收装置92。
[0052]针对相关技术中的上述问题,在本实施例中,提供了一种提高DMA Buffer利用率及CPU收包效率的方法。该方法主要包括如下处理:
[0053]步骤A.系统初始化,初始化的时候堆叠系。使用全局数组统一保存各芯片分配的buffer指针,并定义一个全局下标变量标记当前可用的buffer在全局数组中的下标,并使用该数组初始化每个环形描述符链,例如,每个芯片分配200个buffer,对于双芯片级联的系统,定义大小为200*2的全局数组保存每个buffer的首地址。
[0054]步骤B.获取buffer,根据通道号(即TC队列)从全局数组中返回当前可用的buffer指针,并将下标变量后移。这里制定规则根据TC值来判断是否能获取到buffer,以保证在buffer相对较少时只给高TC的通道用;初始化描述符链表时通过该接口获取buffer指针;CPU每从描述符链next2Receive指向的buffer读取报文交由应用程序处理后,也通过该接口获取buffer指针,分配给该描述链中next2Return指向的描述符,并置该描述符DMA可用。图10是根据本发明实施例的描述链表示意图,例如,可以参见图10所示的描述符链表。
[0055]步骤C.释放buffer,全局数组的可用buffer下标前移,将该buffer首地址存储在该下标位置的全局数组中。当协议模块(应用程序)处理完报文后,调用该接口进行buffer的释放,可用buffer数加一。
[0056]通过统一管理DMA buffer的方法,从而有效地提高了 buffer利用率并使得高队列报文的高优先级得到体现。
[0057]图11是根据本发明优选实施例的获取/释放buffer的方法的示意图,如图11所示,该方法包括如下处理:
[0058]步骤A.系统初始化,使用全局数组8_^_131^_口001 []统一保存各芯片分配buffer的指针,并定义一个全局下标变量标记当前可用的buffer在全局数组中的下标g_rx_buf_pos,每个描述符链的初始化都从该全局数组中获取buffer地址,例如,每个芯片分配200个buffer,对于双芯片级联的系统,定义g_rx_buf_pool [400]保存每个buffer的首地址。
[0059]步骤B.获取buffer,根据通道号(即TC队列)从全局数组中返回当前可用的buffer指针,并将下标变量g_rx_buf_pos++。这里制定规则根据TC值来判断是否能获取到buffer,以保证在buffer相对较少时只给高TC的通道用;初始化描述符链表时通过该接口获取buffer指针;CPU每从描述符链next2Receive指向的buffer读取报文交由应用程序处理后,也通过该接口获取buffer指针,分配给该描述链中next2Return指向的描述符,并置该描述符DMA可用。例如,可以参见图10所示的描述符链表。
[0060]步骤C.释放buffer,全局数组的可用buffer下标g_rx_pool_pos—;,将该buffer首地址存储在该下标位置的全局数组中g_rx_buff_pool [g_rx_pool_pos]=buffer ο当协议模块(应用程序)处理完报文后,调用该接口进行buffer的释放,可用buffer 数加一。
[0061]显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0062]以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种报文接收方法,其特征在于,包括: 对一个或多个芯片中各个芯片对应的缓冲区buffer统一分配全局buffer指针; 从统一分配的全局buffer指针中确定用于接收报文的buffer指针; 采用确定的所述buffer指针对应的buffer接收所述报文。2.根据权利要求1所述的方法,其特征在于,从统一分配的所述全局buffer指针中确定用于接收所述报文的所述buffer指针包括: 获取所述报文的流量等级TC ; 依据获取的所述TC从所述全局buffer指针中确定用于接收所述报文的所述buffer指针。3.根据权利要求2所述的方法,其特征在于,依据获取的所述TC从所述全局buffer指针中确定用于接收所述报文的所述buffer指针包括: 确定所述全局buffer指针中剩余的可用指针的数量少于预定值; 判断获取的所述TC是否超过预定等级; 在判断结果为是的情况下,将所述全局buffer指针中剩余的可用指针分配给用于接收所述报文的所述buffer指针。4.根据权利要求1所述的方法,其特征在于,在采用确定的所述buffer指针对应的所述buffer接收所述报文之后,还包括: 释放所述buffer指针对应的所述buffer。5.根据权利要求1至4中任一项所述的方法,其特征在于,在对所述一个或多个芯片中各个芯片对应的buffer统一分配所述全局buffer指针之后,还包括: 对统一分配的全局buffer指针采用全局数组的方式进行统一保存。6.一种报文接收装置,其特征在于,包括: 分配模块,用于对一个或多个芯片中各个芯片对应的缓冲区buffer统一分配全局buffer 指针; 确定模块,用于从统一分配的全局buffer指针中确定用于接收报文的buffer指针; 接收模块,用于采用确定的所述buffer指针对应的buffer接收所述报文。7.根据权利要求6所述的装置,其特征在于,所述确定模块包括: 获取单元,用于获取所述报文的流量等级TC ; 确定单元,用于依据获取的所述TC从所述全局buffer指针中确定用于接收所述报文的所述buffer指针。8.根据权利要求7所述的装置,其特征在于,所述确定单元包括: 确定子单元,用于确定所述全局buffer指针中剩余的可用指针的数量少于预定值; 判断子单元,用于判断获取的所述TC是否超过预定等级; 分配子单元,用于在所述判断子单元的判断结果为是的情况下,将所述全局buffer指针中剩余的可用指针分配给用于接收所述报文的所述buffer指针。9.根据权利要求6所述的装置,其特征在于,还包括: 释放模块,用于释放所述buffer指针对应的所述buffer。10.根据权利要求6至9中任一项所述的装置,其特征在于,还包括: 保存模块,用于对统一分配的全局buffer指针采用全局数组的方式进行统一保存。11.一种中央处理器CPU,其特征在于,包括权利要求6至9中任一项所述的装置。
【文档编号】H04L12/879GK105991475SQ201510089818
【公开日】2016年10月5日
【申请日】2015年2月27日
【发明人】宋清华
【申请人】中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1