报文处理方法和装置的制造方法_2

文档序号:9581655阅读:来源:国知局
得的所有其他实施例,都属于本发明保护的范围。
[0040]本发明实施例提供的报文处理方法适用于所有需要进行报文处理或者交互的通信系统,可以适用于通信系统中的各种设备,例如各类终端设备、各种网元节点例如基站、基站控制器等,该方法具体可以由上述设备中的CPU执行。本发明实施例中出现的CPU为多核CPU。
[0041]本发明实施例中出现的任务缓存为CPU中的临时存储器,它的容量比内存小,但是交换速度非常快,在任务缓存中存储的数据是内存中的一小部分,是短时间内CPU即将访问的,当CPU调用大量数据时,可直接从任务缓存中调用,从而加快读取速率。
[0042]本发明实施例中出现的缓存队列为设置在任务缓存中的逻辑单元,用于将待处理任务的报文进行缓存。本发明实施例中出现的保序队列为保序控制单元中设置的缓冲待处理的报文的逻辑单元,预取缓存队列为本发明实施例中在上述缓存队列和保序队列之间建立的逻辑单元。
[0043]本发明实施例中出现的保序控制单元为一种多核CPU内部用于完成流保序功能的硬件加速器,保序控制单元能控制CPU内的多个处理器核处理同一条流的多个报文时的先后顺序,保证报文按进入顺序完成,不会发生乱序;且属于不同流的报文间可以并发处理,不需要保证不同的流的进入顺序和处理完成顺序一致。
[0044]图1为本发明提供的报文处理方法实施例一的流程图,本实施例的执行主体可以是CPU中的保序控制单元,如图1所示,该保序控制单元执行该报文处理方法的具体步骤为:
[0045]SlOl:将缓存队列中的待处理的报文按照所述报文的流类别将所述报文分别存入不同的预取缓存队列;其中,所述预取缓存队列为在任务缓存和保序队列之间预先建立的缓存。
[0046]在本实施例中,上述待处理的报文为缓存队列中所有等待处理的报文的统称,该待处理的报文可以为不同流类别的多个报文。保序控制单元在缓存队列和保序队列之间预先建立了预取缓存队列,该预取缓存队列用来将缓存队列中的待处理的报文按照流类别分别分开放置,其中,每个预取缓存队列中可以放置一种流类别的报文,也可以放置多种流类别的报文,对此本发明不做限制。
[0047]保序控制单元将缓存队列中的待处理的报文按照缓存队列中当前的报文顺序依次取出,并将所有的待处理的报文按照流类别分别放置在预取缓存队列中。
[0048]S102:将每个所述预取缓存队列中的报文分别分配给不同的处理器核进行处理。
[0049]在本实施例中,保序控制单元调用相应的电路分别将每个预取缓存队列中的报文并行的分配给不同的处理器核进行处理,具体的:可以将每个预取缓存队列中的报文随机分配给不同的处理器核进行处理,也可以根据当前处理器核的闲置情况进行分配,优先分配给闲置的处理器核,本发明实施例对此不做特别限定。
[0050]本实施例提供的报文处理方法,通过将缓存队列中的待处理的报文按照报文的流类别将报文分别存入不同的预取缓存队列,再将每个预取缓存队列中的报文分别分配给不同的处理器核进行处理,相较于现有技术直接从缓存队列中取出报文处理,在没有处理完成上一个流的报文时,不能处理同一缓存队列的其他流的报文,通过预取缓存队列将不同的流报文分开并分配不同的处理器核并发处理,解决了报文的处理过程中调度的阻塞造成整个CPU对报文的处理的效率较低的问题,有效提高了 CPU对报文的处理的效率。
[0051]图2为本发明提供的报文处理方法实施例二的流程图,在上述图1所示的实施例的基础上,所述将每个所述预取缓存队列中的报文分别分配给不同的处理器核进行处理之后,还包括:在所述保序队列中分别记录每个所述预取缓存队列中的报文的处理信息。在本实施例中,通过记录每个预取缓存队列中的报文处理信息,可供后续查询报文的处理进度,以及处理器核的空闲状态,便于在进行新的报文的处理过程中,能够根据处理器核的空闲状态将新的报文分配给不同的处理器核进行处理,降低处理器核的空闲度,提高报文处理效率。
[0052]如图2所示,实际情况下,待处理的报文的流类别可能有很多,本实施例中假设有两种类别的流在缓存队列中,若所述待处理的报文的流类别包括第一类流和第二类流,且这两类流的报文缓存在同一缓存队列中,则具体的报文的处理方法的步骤为:
[0053]S201:将缓存队列中的报文取出。
[0054]S202:将流类别为所述第一类流的所有报文放入一个所述预取缓存队列中,并将流类别为所述第二类流的所有报文放入与所述第一类流不同的另一所述预取缓存队列。
[0055]在本实施例中,所述预取缓存队列的数量大于等于一个,具体的个数按照CPU的配置而定,主要考量硬件资源和数据并发要求,可选地,预取缓存队列的数量与处理器核的数量相同。
[0056]本实施例中可选择至少有两个预取缓存队列,将第一类流的报文按顺序放入其中一个预取缓存队列,将第二类流的报文按顺序放入与第一类流不同的另一个预取缓存队列,以被保序控制单元调用,并发处理报文。
[0057]S203:将所述预取缓存队列中所述第一类流的报文分配给第一处理器核进行处理,在所述保序队列中记录所述第一类流的报文处理信息,并将另一所述预取缓存队列中第二类流的报文分配给第二处理器核进行处理,在所述保序队列中记录所述第二类流的报文处理信息。
[0058]在本实施例中,将分别放置在两个预取缓存队列中的待处理的报文,分别分配给两个不同的处理器核进行处理,并记录每个报文的处理信息,完成保序控制单元对报文的处理。
[0059]在上述实施例一和实施例二中,保序控制单元至少包括了:至少一个缓存队列、至少一个预取缓存队列和保序队列,以便对于进入该CPU的报文进行保序处理。
[0060]本实施例提供的报文处理方法,通过将缓存队列中的待处理的报文取出,将第一类流报文放入一个预取缓存队列,并将另一类流报文放入另一个预取缓存队列中,再将两个预取缓存队列中的报文分别分配给不同的处理器核进行处理,并在保序队列中分别记录每个预取缓存队列中的报文的处理信息,相较于直接从缓存队列中取出报文处理,在没有处理完成上一个流的报文时,不能处理同一缓存队列的其他流的报文的现有技术,通过预取缓存队列将不同的流报文分开并分配不同的处理器核并发处理,有效解决了报文的处理过程中同一缓存队列中调度的阻塞,以及多个处理器核闲置的问题,有效提高了 CPU对报文的处理的效率。
[0061]在上述实施例的基础上,下面特举一实例,对本发明提供的报文的处理方法进行详细的说明。
[0062]图3为本发明提供的报文处理方法实施例二的处理示意图。如图3所示,其中,下面以保序控制单元中的缓存队列、预取缓存队列和保序队列的实例来说明被发明的报文的处理方法,具体处理过程如下:
[0063]任务缓存中包括两个缓存队列Q_0、Q_1,其中,Q_0和Q_1之间设置为优先级队列(英文:Pr1rity Queue,简称:PQ)机制进行调度处理,待处理的报文包括三种类别的流,假设为T流、K流和G流报文,可以理解,T流、K流和G流仅是为了区分报文种类而作的示例性的说明,可以表示现有技术中的任意种类的报文,不构成对本发明实施例的任何限定。在缓存队列Q_0中依次加入了 T流报文Tl、T2以及K流报文K1、K2 ;队列Q_1中依次加入了 G流报文Gl、G2,且当前的保序控制单元的保序模式配置为原子操作。
[0064]在本实施例中,保序控制单元建立的预取缓存队列为三个,每个预取缓存队列之间可以为轮询调度(英文=Round-Robin,简称:RR)机制,保序控制单元将缓存队列Q_
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1