硬线程多核中央处理器的报文转发方法及装置的制造方法

文档序号:10473631阅读:245来源:国知局
硬线程多核中央处理器的报文转发方法及装置的制造方法
【专利摘要】本发明公开了一种硬线程多核中央处理器的报文转发方法,该方法包括:第一硬线程接收并处理完当前报文后,检查上一个报文是否发送完成;当上一个报文发送完成时,触发发送当前报文的指令;触发发送当前报文的指令之后,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。本发明还公开了一种硬线程多核中央处理器的报文转发装置。采用本发明能够进一步提高报文转发性能。
【专利说明】
硬线程多核中央处理器的报文转发方法及装置
技术领域
[0001]本发明涉及网络通信技术,特别涉及一种硬线程多核中央处理器的报文转发方法及装置。
【背景技术】
[0002]硬线程多核中央处理器(CPU)是广泛用于嵌入式系统的CPU。多核CPU上VXWorks或Iinux下基于软件协议栈的IP报文转发,其性能很低:在一款硬线程多核CPU上的转发速度只有10Mbps左右。而在同样硬线程多核CPU上基于硬转发的速度可达到十多倍的性能提升。其中,硬转发指的是CPU收到报文后不经过协议栈软件而是直接处理并转发。因此,这种高速硬转发技术需要进一步改进以满足更高性能需求。下面所讲的报文转发都是基于硬转发进行的。
[0003]现有技术中,硬线程多核中央处理器的报文转发方法包括以下步骤:
[0004]步骤S1、第一硬线程接收并处理完当前报文后,触发发送当前报文的指令,进行当前报文的发送;
[0005]步骤S2、触发发送当前报文的指令后,即在当前报文发送过程中周期性查询状态寄存器,根据状态寄存器的指示确定当前报文是否发送完成。
[0006]步骤S3、当确定当前报文发送完成后,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
[0007]根据上述描述,现有技术中的报文硬转发方法,需要等待当前报文在第一线程上发送完成,才可以接收下一个报文,如果没有接收到下一个报文时,将时间让给其他硬线程处理报文。实际测得等待时间长短不一,长的有8?10us,短的不到lus,也就是说,从触发发送报文的指令到报文发送完成之间的时间就是等待时间。
[0008]如何进一步提高报文转发性能是现阶段有待解决的问题。

【发明内容】

[0009]有鉴于此,本发明提供了一种硬线程多核中央处理器的报文转发方法及装置,能够进一步提高报文转发性能。
[0010]为达到上述目的,本发明的技术方案具体是这样实现的:
[0011]本发明公开了一种硬线程多核中央处理器的报文转发方法,该方法包括:
[0012]第一硬线程接收并处理完当前报文后,检查上一个报文是否发送完成;
[0013]当上一个报文发送完成时,触发发送当前报文的指令;
[0014]触发发送当前报文的指令之后,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
[0015]所述检查上一个报文是否发送完成的方法包括:周期性查询状态寄存器,根据状态寄存器的指示确定上一个报文是否发送完成。
[0016]所述硬线程多核处理器包括多个硬线程,每个硬线程执行相应的任务,具有相应独立的状态寄存器。
[0017]本发明还公开了一种硬线程多核中央处理器的报文转发装置,应用于执行转发的硬线程,该装置包括:
[0018]查询单元,用于接收并处理完当前报文后,检查上一个报文是否发送完成;
[0019]触发单元,用于当上一个报文发送完成时,触发发送当前报文的指令;
[0020]指示单元,用于在触发发送当前报文的指令之后,指示硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
[0021]所述查询单元,具体用于周期性查询状态寄存器,根据状态寄存器的指示确定是否发送完成。
[0022]由上述的技术方案可见,本发明提供了一种硬线程多核中央处理器的报文转发方法,该方法包括:第一硬线程接收并处理完当前报文后,检查上一个报文是否发送完成;当上一个报文发送完成时,触发发送当前报文的指令;触发发送当前报文的指令之后,无需等待发送完成,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。而不像现有技术那样,第一硬线程接收并处理完当前报文后,进行当前报文的发送,但是要等待当前报文发送完成,才能指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。如此,这种节省CPU处理时间的方法在报文转发中大幅提升了性能,从而实现本发明的目的。
【附图说明】
[0023]图1为本发明一实施例提供了一种硬线程多核中央处理器的报文转发方法流程示意图。
[0024]图2为本发明一种硬线程多核中央处理器的报文转发装置的结构示意图。
【具体实施方式】
[0025]为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
[0026]硬线程多核中央处理器包括多个硬线程,每个硬线程有各自独立的转发报文机制。每个硬线程执行相应的任务,具有相应独立的收发单元。其中收发单元是一种状态寄存器,用于硬线程根据状态寄存器的指示确认该硬线程上的报文是否发送完成。以4硬线程2核CPU来说,就是每4个硬线程绑定I个核,共2个核绑定I个CPU。
[0027]本发明的核心思想是,第一硬线程接收并处理完当前报文后,且触发发送当前报文之前,检查上一个报文是否发送完成;触发发送当前报文之后,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。如此,第一硬线程触发发送当前报文的指令后,不需要周期性查询状态寄存器,等待当前报文在第一线程上发送完成,就直接指示第一硬线程可以接收下一个报文,如果没有接收到下一个报文时,将时间让给其他硬线程处理报文。从而将这个等待时间节省下来,接收第一硬线程上的下一个报文,或者给其他硬线程处理报文。并且,不需要像现有技术那样,触发发送当前报文的指令后,即在当前报文发送过程中周期性查询状态寄存器,根据状态寄存器的指示确定当前报文是否发送完成。而是将检查提前到了发送当前报文之前,检查上一个报文是否发送完成。但实际上,在发送当前报文之前,上一个报文大多数已经发送完成,所以这样的提前检查,基本没有引入额外的等待时间,和现有技术触发发送当前报文的指令后,检查当前报文是否发送完成所耗费的等待时间相比,差别很大,前者所用时间很短。
[0028]如图1所示,本发明一实施例提供了一种硬线程多核中央处理器的报文转发方法,该方法包括以下步骤:
[0029]步骤11、第一硬线程接收并处理完当前报文后,检查上一个报文是否发送完成;
[0030]其中,检查上一个报文是否发送完成的方法具体包括:周期性查询状态寄存器,根据状态寄存器的指示确定上一个报文是否发送完成。实际上,在发送当前报文之前,上一个报文大多数已经发送完成,所以本发明中虽然也需要周期性查询状态寄存器,但是基本上绝大多数情况I次查询,就可以确定上一个报文已经发送完成。所以,本步骤基本没有引入额外的等待时间,和现有技术触发发送当前报文的指令后,检查当前报文是否发送完成所耗费的I?Sus的等待时间相比,差别很大,前者所用时间很短。
[0031]步骤12、当上一个报文发送完成时,触发发送当前报文的指令;
[0032]步骤13、触发发送当前报文的指令之后,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
[0033]这里,硬线程多核中央处理器包括多个硬线程,本发明为方便清楚地说明本发明的方法,定义第一硬线程和其他硬线程,对于第一硬线程没有任何特定含义,接收当前报文的任何一个硬线程都可以称作第一硬线程。
[0034]为清楚说明本发明,下面列举具体场景,以4个硬线程为例进行说明。
[0035]首先,硬线程I接收并处理完报文I后,在触发发送报文I之前,检查硬线程I上是否有上一个报文未发送完成,本实施例中假设报文I是硬线程I上接收的第一个报文,所以不存在上一个报文,因此直接触发发送报文1,同时指示硬线程I可以继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
[0036]—种情况是,假设,硬线程I在接收到可以继续接收下一个报文的指示后,接收到报文2,在处理完报文2,且触发发送报文2之前,检查硬线程I上是否有上一个报文,即报文I未发送完成,如果报文I没有发送完成,需要等待报文I发送完成。这个等待时间相当短。如果报文I发送完成,则触发发送当前报文2,同时指示硬线程I可以继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
[0037]在这种情况下,硬线程I在触发发送报文I之后,直接指示硬线程I可以继续接收下一个报文,不需要等待报文I发送完成,缩短了接收报文I和报文2之间的时间,因此节省了发包时间。
[0038]另一种情况是,假设,硬线程I在接收到可以继续接收下一个报文的指示后,没有接收到下一个报文,那么就可以将时间让给其他硬线程处理报文。
[0039]如果,此时硬线程2上正在处理报文3,由于硬线程I触发发送报文I之后,不需要周期性查询状态寄存器,来确定报文I是否发送完成,所以将这个等待时间让给硬线程2用于处理报文3,从而大大提高了报文处理性能。硬线程2的工作原理与硬线程I相同,在此不再赘述。
[0040]综上所述,本发明对硬线程多核CPU发包时序进行了改进,实现硬件发包和CPU运行处理时间片高度并发,大幅提升IP报文处理能力。通过测试表明,采用现有技术的方法,1.SGbps报文处理会有少量丢包,而采用本发明的方法后,2.7Gbps转发流量可以长时间稳定运行不丢包。从而可以看出,通过本发明的方法,转发报文的性能大幅提高后,丢包现象就可以避免。本发明节省CPU处理时间的方法不但可以用于硬线程间,核间,网络包发送,进一步地,还可以用于其他异步硬件处理,例如硬件加解密等。
[0041]基于同样的发明构思,本发明还提出一种硬线程多核中央处理器的报文转发装置,应用于执行转发的硬线程,参见图2,该装置包括:
[0042]查询单元201,用于接收并处理完当前报文后,检查上一个报文是否发送完成;
[0043]触发单元202,用于当上一个报文发送完成时,触发发送当前报文的指令;
[0044]指示单元203,用于在触发发送当前报文的指令之后,指示硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
[0045]所述查询单元201,具体用于周期性查询状态寄存器,根据状态寄存器的指示确定是否发送完成。
[0046]以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种硬线程多核中央处理器的报文转发方法,该方法包括: 第一硬线程接收并处理完当前报文后,检查上一个报文是否发送完成; 当上一个报文发送完成时,触发发送当前报文的指令; 触发发送当前报文的指令之后,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。2.如权利要求1所述的方法,其特征在于,所述检查上一个报文是否发送完成的方法包括:周期性查询状态寄存器,根据状态寄存器的指示确定上一个报文是否发送完成。3.如权利要求2所述的方法,其特征在于,所述硬线程多核处理器包括多个硬线程,每个硬线程执行相应的任务,具有相应独立的状态寄存器。4.一种硬线程多核中央处理器的报文转发装置,应用于执行转发的硬线程,该装置包括: 查询单元,用于接收并处理完当前报文后,检查上一个报文是否发送完成; 触发单元,用于当上一个报文发送完成时,触发发送当前报文的指令; 指示单元,用于在触发发送当前报文的指令之后,指示硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。5.如权利要求4所述的装置,其特征在于,所述查询单元,具体用于周期性查询状态寄存器,根据状态寄存器的指示确定是否发送完成。
【文档编号】H04L12/775GK105827535SQ201510003842
【公开日】2016年8月3日
【申请日】2015年1月6日
【发明人】陈晓科, 李伟
【申请人】普天信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1