CN105827535A - 硬线程多核中央处理器的报文转发方法及装置 - Google Patents
硬线程多核中央处理器的报文转发方法及装置 Download PDFInfo
- Publication number
- CN105827535A CN105827535A CN201510003842.7A CN201510003842A CN105827535A CN 105827535 A CN105827535 A CN 105827535A CN 201510003842 A CN201510003842 A CN 201510003842A CN 105827535 A CN105827535 A CN 105827535A
- Authority
- CN
- China
- Prior art keywords
- message
- rigid line
- line journey
- sent completely
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种硬线程多核中央处理器的报文转发方法,该方法包括:第一硬线程接收并处理完当前报文后,检查上一个报文是否发送完成;当上一个报文发送完成时,触发发送当前报文的指令;触发发送当前报文的指令之后,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。本发明还公开了一种硬线程多核中央处理器的报文转发装置。采用本发明能够进一步提高报文转发性能。
Description
技术领域
本发明涉及网络通信技术,特别涉及一种硬线程多核中央处理器的报文转发方法及装置。
背景技术
硬线程多核中央处理器(CPU)是广泛用于嵌入式系统的CPU。多核CPU上vxWorks或linux下基于软件协议栈的IP报文转发,其性能很低:在一款硬线程多核CPU上的转发速度只有100Mbps左右。而在同样硬线程多核CPU上基于硬转发的速度可达到十多倍的性能提升。其中,硬转发指的是CPU收到报文后不经过协议栈软件而是直接处理并转发。因此,这种高速硬转发技术需要进一步改进以满足更高性能需求。下面所讲的报文转发都是基于硬转发进行的。
现有技术中,硬线程多核中央处理器的报文转发方法包括以下步骤:
步骤S1、第一硬线程接收并处理完当前报文后,触发发送当前报文的指令,进行当前报文的发送;
步骤S2、触发发送当前报文的指令后,即在当前报文发送过程中周期性查询状态寄存器,根据状态寄存器的指示确定当前报文是否发送完成。
步骤S3、当确定当前报文发送完成后,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
根据上述描述,现有技术中的报文硬转发方法,需要等待当前报文在第一线程上发送完成,才可以接收下一个报文,如果没有接收到下一个报文时,将时间让给其他硬线程处理报文。实际测得等待时间长短不一,长的有8~10us,短的不到1us,也就是说,从触发发送报文的指令到报文发送完成之间的时间就是等待时间。
如何进一步提高报文转发性能是现阶段有待解决的问题。
发明内容
有鉴于此,本发明提供了一种硬线程多核中央处理器的报文转发方法及装置,能够进一步提高报文转发性能。
为达到上述目的,本发明的技术方案具体是这样实现的:
本发明公开了一种硬线程多核中央处理器的报文转发方法,该方法包括:
第一硬线程接收并处理完当前报文后,检查上一个报文是否发送完成;
当上一个报文发送完成时,触发发送当前报文的指令;
触发发送当前报文的指令之后,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
所述检查上一个报文是否发送完成的方法包括:周期性查询状态寄存器,根据状态寄存器的指示确定上一个报文是否发送完成。
所述硬线程多核处理器包括多个硬线程,每个硬线程执行相应的任务,具有相应独立的状态寄存器。
本发明还公开了一种硬线程多核中央处理器的报文转发装置,应用于执行转发的硬线程,该装置包括:
查询单元,用于接收并处理完当前报文后,检查上一个报文是否发送完成;
触发单元,用于当上一个报文发送完成时,触发发送当前报文的指令;
指示单元,用于在触发发送当前报文的指令之后,指示硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
所述查询单元,具体用于周期性查询状态寄存器,根据状态寄存器的指示确定是否发送完成。
由上述的技术方案可见,本发明提供了一种硬线程多核中央处理器的报文转发方法,该方法包括:第一硬线程接收并处理完当前报文后,检查上一个报文是否发送完成;当上一个报文发送完成时,触发发送当前报文的指令;触发发送当前报文的指令之后,无需等待发送完成,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。而不像现有技术那样,第一硬线程接收并处理完当前报文后,进行当前报文的发送,但是要等待当前报文发送完成,才能指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。如此,这种节省CPU处理时间的方法在报文转发中大幅提升了性能,从而实现本发明的目的。
附图说明
图1为本发明一实施例提供了一种硬线程多核中央处理器的报文转发方法流程示意图。
图2为本发明一种硬线程多核中央处理器的报文转发装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
硬线程多核中央处理器包括多个硬线程,每个硬线程有各自独立的转发报文机制。每个硬线程执行相应的任务,具有相应独立的收发单元。其中收发单元是一种状态寄存器,用于硬线程根据状态寄存器的指示确认该硬线程上的报文是否发送完成。以4硬线程2核CPU来说,就是每4个硬线程绑定1个核,共2个核绑定1个CPU。
本发明的核心思想是,第一硬线程接收并处理完当前报文后,且触发发送当前报文之前,检查上一个报文是否发送完成;触发发送当前报文之后,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。如此,第一硬线程触发发送当前报文的指令后,不需要周期性查询状态寄存器,等待当前报文在第一线程上发送完成,就直接指示第一硬线程可以接收下一个报文,如果没有接收到下一个报文时,将时间让给其他硬线程处理报文。从而将这个等待时间节省下来,接收第一硬线程上的下一个报文,或者给其他硬线程处理报文。并且,不需要像现有技术那样,触发发送当前报文的指令后,即在当前报文发送过程中周期性查询状态寄存器,根据状态寄存器的指示确定当前报文是否发送完成。而是将检查提前到了发送当前报文之前,检查上一个报文是否发送完成。但实际上,在发送当前报文之前,上一个报文大多数已经发送完成,所以这样的提前检查,基本没有引入额外的等待时间,和现有技术触发发送当前报文的指令后,检查当前报文是否发送完成所耗费的等待时间相比,差别很大,前者所用时间很短。
如图1所示,本发明一实施例提供了一种硬线程多核中央处理器的报文转发方法,该方法包括以下步骤:
步骤11、第一硬线程接收并处理完当前报文后,检查上一个报文是否发送完成;
其中,检查上一个报文是否发送完成的方法具体包括:周期性查询状态寄存器,根据状态寄存器的指示确定上一个报文是否发送完成。实际上,在发送当前报文之前,上一个报文大多数已经发送完成,所以本发明中虽然也需要周期性查询状态寄存器,但是基本上绝大多数情况1次查询,就可以确定上一个报文已经发送完成。所以,本步骤基本没有引入额外的等待时间,和现有技术触发发送当前报文的指令后,检查当前报文是否发送完成所耗费的1~8us的等待时间相比,差别很大,前者所用时间很短。
步骤12、当上一个报文发送完成时,触发发送当前报文的指令;
步骤13、触发发送当前报文的指令之后,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
这里,硬线程多核中央处理器包括多个硬线程,本发明为方便清楚地说明本发明的方法,定义第一硬线程和其他硬线程,对于第一硬线程没有任何特定含义,接收当前报文的任何一个硬线程都可以称作第一硬线程。
为清楚说明本发明,下面列举具体场景,以4个硬线程为例进行说明。
首先,硬线程1接收并处理完报文1后,在触发发送报文1之前,检查硬线程1上是否有上一个报文未发送完成,本实施例中假设报文1是硬线程1上接收的第一个报文,所以不存在上一个报文,因此直接触发发送报文1,同时指示硬线程1可以继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
一种情况是,假设,硬线程1在接收到可以继续接收下一个报文的指示后,接收到报文2,在处理完报文2,且触发发送报文2之前,检查硬线程1上是否有上一个报文,即报文1未发送完成,如果报文1没有发送完成,需要等待报文1发送完成。这个等待时间相当短。如果报文1发送完成,则触发发送当前报文2,同时指示硬线程1可以继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
在这种情况下,硬线程1在触发发送报文1之后,直接指示硬线程1可以继续接收下一个报文,不需要等待报文1发送完成,缩短了接收报文1和报文2之间的时间,因此节省了发包时间。
另一种情况是,假设,硬线程1在接收到可以继续接收下一个报文的指示后,没有接收到下一个报文,那么就可以将时间让给其他硬线程处理报文。
如果,此时硬线程2上正在处理报文3,由于硬线程1触发发送报文1之后,不需要周期性查询状态寄存器,来确定报文1是否发送完成,所以将这个等待时间让给硬线程2用于处理报文3,从而大大提高了报文处理性能。硬线程2的工作原理与硬线程1相同,在此不再赘述。
综上所述,本发明对硬线程多核CPU发包时序进行了改进,实现硬件发包和CPU运行处理时间片高度并发,大幅提升IP报文处理能力。通过测试表明,采用现有技术的方法,1.8Gbps报文处理会有少量丢包,而采用本发明的方法后,2.7Gbps转发流量可以长时间稳定运行不丢包。从而可以看出,通过本发明的方法,转发报文的性能大幅提高后,丢包现象就可以避免。本发明节省CPU处理时间的方法不但可以用于硬线程间,核间,网络包发送,进一步地,还可以用于其他异步硬件处理,例如硬件加解密等。
基于同样的发明构思,本发明还提出一种硬线程多核中央处理器的报文转发装置,应用于执行转发的硬线程,参见图2,该装置包括:
查询单元201,用于接收并处理完当前报文后,检查上一个报文是否发送完成;
触发单元202,用于当上一个报文发送完成时,触发发送当前报文的指令;
指示单元203,用于在触发发送当前报文的指令之后,指示硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
所述查询单元201,具体用于周期性查询状态寄存器,根据状态寄存器的指示确定是否发送完成。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种硬线程多核中央处理器的报文转发方法,该方法包括:
第一硬线程接收并处理完当前报文后,检查上一个报文是否发送完成;
当上一个报文发送完成时,触发发送当前报文的指令;
触发发送当前报文的指令之后,指示第一硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
2.如权利要求1所述的方法,其特征在于,所述检查上一个报文是否发送完成的方法包括:周期性查询状态寄存器,根据状态寄存器的指示确定上一个报文是否发送完成。
3.如权利要求2所述的方法,其特征在于,所述硬线程多核处理器包括多个硬线程,每个硬线程执行相应的任务,具有相应独立的状态寄存器。
4.一种硬线程多核中央处理器的报文转发装置,应用于执行转发的硬线程,该装置包括:
查询单元,用于接收并处理完当前报文后,检查上一个报文是否发送完成;
触发单元,用于当上一个报文发送完成时,触发发送当前报文的指令;
指示单元,用于在触发发送当前报文的指令之后,指示硬线程继续接收下一个报文,或者在没有接收到下一个报文时,将时间让给其他硬线程处理报文。
5.如权利要求4所述的装置,其特征在于,所述查询单元,具体用于周期性查询状态寄存器,根据状态寄存器的指示确定是否发送完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510003842.7A CN105827535A (zh) | 2015-01-06 | 2015-01-06 | 硬线程多核中央处理器的报文转发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510003842.7A CN105827535A (zh) | 2015-01-06 | 2015-01-06 | 硬线程多核中央处理器的报文转发方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105827535A true CN105827535A (zh) | 2016-08-03 |
Family
ID=56514802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510003842.7A Pending CN105827535A (zh) | 2015-01-06 | 2015-01-06 | 硬线程多核中央处理器的报文转发方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105827535A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080181245A1 (en) * | 2007-01-31 | 2008-07-31 | Claude Basso | System and Method for Multicore Communication Processing |
CN101661386A (zh) * | 2009-09-24 | 2010-03-03 | 成都市华为赛门铁克科技有限公司 | 多硬件线程处理器及其业务处理方法 |
CN102868635A (zh) * | 2012-08-24 | 2013-01-09 | 汉柏科技有限公司 | 多核多线程的报文保序方法及系统 |
CN102891809A (zh) * | 2012-09-25 | 2013-01-23 | 汉柏科技有限公司 | 多核网络设备报文按接口保序方法及系统 |
CN104011676A (zh) * | 2011-12-20 | 2014-08-27 | 国际商业机器公司 | 用于跨过多个硬件线程的虚拟线程的细粒度并行的低延迟变量转移网络 |
-
2015
- 2015-01-06 CN CN201510003842.7A patent/CN105827535A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080181245A1 (en) * | 2007-01-31 | 2008-07-31 | Claude Basso | System and Method for Multicore Communication Processing |
CN101661386A (zh) * | 2009-09-24 | 2010-03-03 | 成都市华为赛门铁克科技有限公司 | 多硬件线程处理器及其业务处理方法 |
CN104011676A (zh) * | 2011-12-20 | 2014-08-27 | 国际商业机器公司 | 用于跨过多个硬件线程的虚拟线程的细粒度并行的低延迟变量转移网络 |
CN102868635A (zh) * | 2012-08-24 | 2013-01-09 | 汉柏科技有限公司 | 多核多线程的报文保序方法及系统 |
CN102891809A (zh) * | 2012-09-25 | 2013-01-23 | 汉柏科技有限公司 | 多核网络设备报文按接口保序方法及系统 |
Non-Patent Citations (2)
Title |
---|
哈马克: "《计算机组成与嵌入式系统 原书第6版》", 20 October 2013 * |
帕特森: "《计算机组成与设计 硬件/软件接口 原书第4版》", 31 January 2012 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108270732B (zh) | 一种流媒体处理方法及系统 | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
CN106664290B (zh) | 一种光电混合网络的数据传输方法及装置 | |
CN102868635B (zh) | 多核多线程的报文保序方法及系统 | |
CN106034084B (zh) | 一种数据传输方法及装置 | |
CN102891809B (zh) | 多核网络设备报文按接口保序方法及系统 | |
CN110677277A (zh) | 数据处理方法、装置、服务器和计算机可读存储介质 | |
CN109547519B (zh) | 反向代理方法、装置及计算机可读存储介质 | |
CN113366433A (zh) | 处理输入/输出存储指令 | |
WO2014117584A1 (en) | System and method for load balancing in a speech recognition system | |
CN113366457A (zh) | 处理输入/输出存储指令 | |
US11671678B2 (en) | Method and device, equipment, and storage medium for data processing | |
CN107404446A (zh) | 一种处理分片报文的方法及装置 | |
CN113366438A (zh) | 处理输入/输出存储指令 | |
CN105743951A (zh) | 一种数据发送、接收的方法及装置 | |
US9240952B2 (en) | System and method for communication between networked applications | |
WO2014075427A1 (zh) | 一种获取对象的方法、装置和系统 | |
CN105827535A (zh) | 硬线程多核中央处理器的报文转发方法及装置 | |
CN112565105A (zh) | 一种降低时间敏感帧转发时延的方法、装置及设备 | |
CN104079398A (zh) | 一种数据通信方法、装置及系统 | |
CN108289165B (zh) | 一种基于手机控制相机的实现方法、装置及终端设备 | |
CN114338477B (zh) | 一种通信链路监控方法、装置、设备及存储介质 | |
EP2642678B1 (en) | Data decoding method and apparatus | |
EP3977705B1 (en) | Streaming communication between devices | |
CN110213176B (zh) | 交换机的报文处理方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160803 |
|
WD01 | Invention patent application deemed withdrawn after publication |