网络处理器的指令处理方法和网络处理器的制作方法

上传人:ting****789 文档编号:310042036 上传时间:2022-06-14 格式:DOCX 页数:5 大小:22.10KB
返回 下载 相关 举报
网络处理器的指令处理方法和网络处理器的制作方法_第1页
第1页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《网络处理器的指令处理方法和网络处理器的制作方法》由会员分享,可在线阅读,更多相关《网络处理器的指令处理方法和网络处理器的制作方法(5页珍藏版)》请在金锄头文库上搜索。

1、网络处理器的指令处理方法和网络处理器的制作方法专利名称:网络处理器的指令处理方法和网络处理器的制作方法技术领域:本发明涉及网络处理器领域,特别涉及一种网络处理器的指令处理方法和网络处理器。背景技术:网络处理器是一类专门针对数据报文转发而优化设计的处理器,作为转发引擎广泛应用于路由器、交换机等网络设备中。由于网络处理器的代码指令总数比通用处理器小得多,而且网络处理器对转发性能、尤其吞吐率要求很高,因此,大多数网络处理器在运行期间,其全部代码指令皆位于处理器内部的高速存储器中。在以网络处理器为转发引擎的网络设备上,特定业务的转发性能通常与该业务在网络处理器中执行的指令周期总和成反比,网络处理器执行

2、的指令周期总和越长,表明其转发性能越低。例如,假设每个IPv4单播报文的转发流程要执行100条指令,平均每条指令消耗1. 2个时钟周期,则合计消耗120个时钟周期,而每个MPLS报文需要消耗240个时钟周期,因此,网络处理器转发IPv4单播报文的性能要优于转发MPLS报文的性能。网络处理器执行一条指令通常包括取指、译码、运算和输出等几个操作步骤,每个步骤分别由网络处理器内不同的子单元串行完成。目前的许多网络处理器具有流水线设计,令各个子单元同时工作,达到的效果是流水线上第一条指令送到运算子单元,而此时第二条指令正在译码,第三条指令正在取指,从而可以节省消耗的时钟周期。但是实际的程序指令并非从头

3、至尾顺序执行,通常会包含有判断跳转指令,当执行到判断跳转指令时,由于跳转与否要由计算结果决定,在得到计算结果前不知道将要执行的下一条指令地址,无法提前取指和译码,因此流水线会被迫中断。显然,程序中的判断跳转指令越多,流水线中断次数也越多,从而实际消耗的时钟周期越多。因此,网络设备支持的业务越复杂,转发流程的指令周期越长,转发性能越低。网络设备支持的业务通常是多样化的,包括IPv4单播/多播、IPv6单播/多播、 MPLS、桥接、PWE3、VPLS等等。网络设备将报文从入接口转发至出接口,仅对报文做满足协议要求的、最低限度的修改,称为基本转发。为了满足用户对安全性、服务质量、可靠性、可维护性和可

4、管理性等诸多方面的需求,网络设备所做的处理称为附加特性。不同用户会依据自身需要启用一个或多个附加特性,任何一个附加特性都不会是所有用户必需的,否则它就会成为基本转发的一部分。因此,网络设备将基本转发、各类业务的公共流程提炼出来作为主线流程,并力图保持主线流程指令执行总周期尽可能短,否则会影响所有用户。网络设备的附加特性通过在主线流程中增加判断跳转指令来实现,这会降低主线流程的性能, 进而影响所有用户。例如,假设路由器在IPv4单播基本转发的基础上增加了简单流分类BA(Behavic)r Aggregation,行为聚集)、复杂流分类ACL (AccessControl Lists,存取控制列表

5、)、 URPF (Unicast Reverse Pathiorwarding,单播反向路径转发)三个附加特性,因此,不得不在主线流程中增加三个判断跳转指令分别判断BA是否使能,ACL是否使能,以及URPF是否使能?无论这三个附加特性是否使能,指令执行周期均超过未增加判断跳转指令前的执行周期,当它们均使能时,执行周期最长。由此可见,判断跳转指令延长了主线流程的执行周期,随着新附加特性的不断增加,累积效应对主线性能的影响愈发明显。现有技术中实现网络设备的附加特性通常有两种方式非函数调用型和函数调用型。非函数调用型的处理过程是顺序执行每个附加特性对应的代码片段,在每个代码片段的第一条指令判断该附加

6、特性的使能标志,如果使能则执行本代码片段,如果未使能则跳过本代码片段。函数调用型的处理过程是从第一个附加特性的使能标志开始判断是否使能,如果使能则调用该附加特性的处理函数,处理完后或者如果未使能则返回主线继续下一个附加特性的使能标志的判断。以网络设备增加BA、ACL和URPF三个附加特性为例,无论上述哪种方式,都在主线流程中增加了 3个判断跳转指令,对具有流水线设计的网络处理器而言,流水线被中断了三次。在实现本发明的过程中,发明人发现上述现有技术至少具有以下缺点当网络设备具有附加特性时,在主线流程中增加的判断跳转指令会延长指令的执行周期,从而降低了主线流程性能。发明内容为了解决现有技术的问题,

7、本发明实施例提供了一种网络处理器的指令处理方法和网络处理器。所述技术方案如下一种网络处理器的指令处理方法,所述方法包括当网络处理器执行到预先添加的组合函数调用指令时,将所述组合函数调用指令的下一条指令的地址添加到第一堆栈的栈顶,其中,所述第一堆栈为预先设置的用于所述组合函数调用的堆栈;根据所述组合函数调用指令,判断所述网络处理器的每个附加特性的使能标志是否使能,如果所述附加特性的使能标志为使能,则将所述附加特性对应的函数入口地址添加到所述第一堆栈的栈顶;当所有附加特性的使能标志判断完成后,对添加到所述第一堆栈中的所述函数入口地址从栈顶开始出栈,并执行出栈的所述函数入口地址对应的函数,直到对所述

8、组合函数调用指令的下一条指令的地址执行出栈。一种网络处理器,所述网络处理器包括第一处理模块,用于当网络处理器执行到预先添加的组合函数调用指令时,将所述组合函数调用指令的下一条指令的地址添加到第一堆栈的栈顶;根据所述组合函数调用指令,判断所述网络处理器的每个附加特性的使能标志是否使能,如果所述附加特性的使能标志为使能,则将所述附加特性对应的函数入口地址添加到所述第一堆栈的栈顶;其中, 所述第一堆栈为预先设置的用于组合函数调用的堆栈第二处理模块,用于当所有附加特性的使能标志判断完成后,对添加到所述第一堆栈中的所述函数入口地址从栈顶开始出栈,并执行出栈的所述函数入口地址对应的函数,直到对所述组合函数

9、调用指令的下一条指令的地址执行出栈。本发明实施例提供的技术方案通过添加组合函数调用指令,并根据该组合函数调用指令将使能的附加特性的函数入口地址压栈,以及出栈并调用,与现有技术相比只需在主线流程中增加一条判断跳转指令,就能实现所有使能的附加特性的函数调用,极大地节省了指令的执行周期,降低了附加特性对主线性能的影响,而且可以支持多种附加特性的任意组合,容易实现,应用灵活。图1是本发明实施例1提供的网络处理器的指令处理方法流程图;图2是本发明实施例2提供的网络处理器的指令处理方法流程图;图3是本发明实施例2提供的使用寄存器存放3个附加特性使能标志的示意图;图4是本发明实施例2提供的使用寄存器存放3个

10、附加特性函数入口地址的示意图;图5是本发明实施例2提供的执行组合函数调用指令时第一堆栈的入栈示意图;图6是本发明实施例2提供的组合函数调用的流程示意图;图7是本发明实施例3提供的网络处理器结构图。具体实施例为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。实施例1参见图1,本实施例提供了一种网络处理器的指令处理方法,包括101 当网络处理器执行到预先添加的组合函数调用指令时,将该组合函数调用指令的下一条指令的地址添加到第一堆栈的栈顶;其中,第一堆栈为预先设置的用于组合函数调用的堆栈;102:根据该组合函数调用指令,判断网络处理器的每个附加特性的使能标志

11、是否使能,如果该附加特性的使能标志为使能,则将该附加特性对应的函数入口地址添加到第一堆栈的栈顶;103:当所有附加特性的使能标志判断完成后,对添加到第一堆栈中的函数入口地址从栈顶开始出栈,并执行出栈的函数入口地址对应的函数,直到对组合函数调用指令的下一条指令的地址执行出栈。本实施例提供的上述方法通过添加组合函数调用指令,并根据该组合函数调用指令将使能的附加特性的函数入口地址压栈,以及出栈并调用,与现有技术相比只需在主线流程中增加一条跳转指令,就能实现所有附加特性的函数调用,极大地节省了指令的执行周期,降低了附加特性对主线性能的影响,而且可以支持多种附加特性的任意组合,容易实现,应用灵活。实施例

12、2参见图2,本实施例提供了一种网络处理器的指令处理方法,包括201 预先将网络处理器的所有附加特性的使能标志存储在第一寄存器中。本实施例中,网络处理器的附加特性可以为一个,也可以为多个,通常都为多个。 当为多个附加特性时,可以全部使能,或者部分使能,或者均不使能,本发明实施例对此不做具体限定。附加特性的使能标志通常为1个bit的标志位,其取值范围有两个,分别代表使能和不使能。例如,取值为1时,代表使能,取值为0时,代表不使能。本发明实施例对使能标志的具体取值不做限定。本实施例中的第一寄存器可以为通用寄存器,长度为32个bit。将网络处理器的所有附加特性的使能标志存储在该第一寄存器中,每个使能标

13、志占用一个bit,存放时可以按照从高位到低位的顺序存放,也可以按照从低位到高位的顺序存放,而且,可以将各个附加特性的使能标志排序后存放在第一寄存器中,排序的方式也有很多种,如将优先级高的附加特性的使能标志排在前面等,本发明实施例对此不做具体限定。例如,参见图3,网络处理器有3个附加特性,分别为BA,ACL和URPF,对应的使能 t示;BA_enableACL_enableuRPF_enable, rlO(Most Significant Bit,高位)开始依次存放该三个使能标志。202 预先将网络处理器的每个附加特性对应的函数入口地址分别保存在相应的第二寄存器中。本实施例中,每个附加特性对应一

14、个函数,每个函数有一个函数入口地址,将每个函数的函数入口地址存放在一个相应的第二寄存器中。本实施例中,第二寄存器与第一寄存器的相同之处是均可以为通用寄存器,长度为32个bit,不同之处是,第一寄存器用于存储使能标志,而第二寄存器用于存储函数入口地址。例如,参见图4,将BA、ACL、uRPF函数的入口地址依次存放于rl,r2和r3中。203 预先设置第一堆栈,用于组合函数调用。本发明实施例中,在一条指令中调用多个函数称为组合函数调用,除组合函数调用以外的其它函数调用称为非组合函数调用,即现有的普通函数调用。其中,第一堆栈可以具体为在网络处理器原有的堆栈的基础上新增的一个堆栈, 将该原有的堆栈称为

15、第二堆栈,第二堆栈用于非组合函数调用。本实施例中,将函数调用分为两种类型,分别在不同的堆栈中入栈和出栈,在本实施例中,组合函数调用使用第一堆栈,非组合函数调用使用第二堆栈。本实施例中,步骤201、202和203没有固定的先后顺序,也可以同时执行。204:当网络处理器执行到预先添加的组合函数调用指令时,将该组合函数调用指令的下一条指令的地址压入第一堆栈的栈顶。其中,组合函数调用指令为预先添加的一条新的指令,用于调用各个附加特性对应的函数。具体地,组合函数调用指令中可以包含存储使能标志的寄存器的地址和该寄存器所存储的使能标志的个数。例如,组合函数调用指令为 combined_bal conditi

16、on_register, number_of_ branches,其中,combined_bal为操作码,代表组合函数调用;condition_register为第一操作数,代表存放使能标志的寄存器的地址;number_0f_brancheS为第二操作数,代表该寄存器中存放的使能标志的个数。以上述3个附加特性为例,组合函数调用指令可以为 combined_bal rlO,3,表明3个附加特性的使能标志均存放在rlO寄存器中,且rlO寄存器中存放的使能标志的个数为3个。本实施例中,将组合函数调用指令的下一条指令的地址添加到第一堆栈的栈顶, 是为了在组合函数调用结束后,网络处理器能够返回到该下一条指令继续执行。205 根据组合函数调用指令中包含的存放使能标志的第一寄存器的地址,找到该第一寄存器,根据组合函数调用指令中包含的使能标志的个数,对该第一寄存器保存的使能标志逐一判断其是否使能。具体地,该判断过程为循环的过程,可以从该寄存器的高位开始,向低位方向逐位进行判断,当然也可以从该寄存器的低位开始,向高位方向逐位判断。该判断的方向可以与

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号