CN102292705B - 网络处理器的指令处理方法和网络处理器 - Google Patents

网络处理器的指令处理方法和网络处理器 Download PDF

Info

Publication number
CN102292705B
CN102292705B CN2010800033734A CN201080003373A CN102292705B CN 102292705 B CN102292705 B CN 102292705B CN 2010800033734 A CN2010800033734 A CN 2010800033734A CN 201080003373 A CN201080003373 A CN 201080003373A CN 102292705 B CN102292705 B CN 102292705B
Authority
CN
China
Prior art keywords
bells
instruction
processing unit
storehouse
whistles
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.)
Active
Application number
CN2010800033734A
Other languages
English (en)
Other versions
CN102292705A (zh
Inventor
尹高嵩
韩冰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN102292705A publication Critical patent/CN102292705A/zh
Application granted granted Critical
Publication of CN102292705B publication Critical patent/CN102292705B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明提供了一种网络处理器的指令处理方法和网络处理器。所述方法包括:当网络处理器执行到预先添加的组合函数调用指令时,将其下一条指令的地址添加到第一堆栈的栈顶;根据组合函数调用指令,判断每个附加特性的使能标志是否使能,若使能则将对应的附加特性的函数入口地址添加到第一堆栈的栈顶;当所有使能标志判断完成后,将第一堆栈中的函数入口地址从栈顶开始出栈,并执行出栈的函数入口地址对应的函数,直到所述下一条指令的地址出栈。所述网络处理器包括:第一处理模块和第二处理模块。本发明只需在主线流程中增加一条判断跳转指令,就能实现所有使能的附加特性的函数调用,极大地节省了指令的执行周期,降低了附加特性对主线性能的影响。

Description

网络处理器的指令处理方法和网络处理器
技术领域
本发明涉及网络处理器领域,特别涉及一种网络处理器的指令处理方法和网络处理器。
背景技术
网络处理器是一类专门针对数据报文转发而优化设计的处理器,作为转发引擎广泛应用于路由器、交换机等网络设备中。由于网络处理器的代码指令总数比通用处理器小得多,而且网络处理器对转发性能、尤其吞吐率要求很高,因此,大多数网络处理器在运行期间,其全部代码指令皆位于处理器内部的高速存储器中。在以网络处理器为转发引擎的网络设备上,特定业务的转发性能通常与该业务在网络处理器中执行的指令周期总和成反比,网络处理器执行的指令周期总和越长,表明其转发性能越低。例如,假设每个IPv4单播报文的转发流程要执行100条指令,平均每条指令消耗1.2个时钟周期,则合计消耗120个时钟周期,而每个MPLS报文需要消耗240个时钟周期,因此,网络处理器转发IPv4单播报文的性能要优于转发MPLS报文的性能。
网络处理器执行一条指令通常包括取指、译码、运算和输出等几个操作步骤,每个步骤分别由网络处理器内不同的子单元串行完成。目前的许多网络处理器具有流水线设计,令各个子单元同时工作,达到的效果是流水线上第一条指令送到运算子单元,而此时第二条指令正在译码,第三条指令正在取指,从而可以节省消耗的时钟周期。但是实际的程序指令并非从头至尾顺序执行,通常会包含有判断跳转指令,当执行到判断跳转指令时,由于跳转与否要由计算结果决定,在得到计算结果前不知道将要执行的下一条指令地址,无法提前取指和译码,因此流水线会被迫中断。显然,程序中的判断跳转指令越多,流水线中断次数也越多,从而实际消耗的时钟周期越多。因此,网络设备支持的业务越复杂,转发流程的指令周期越长,转发性能越低。
网络设备支持的业务通常是多样化的,包括IPv4单播/多播、IPv6单播/多播、MPLS、桥接、PWE3、VPLS等等。网络设备将报文从入接口转发至出接口,仅对报文做满足协议要求的、最低限度的修改,称为基本转发。为了满足用户对安全性、服务质量、可靠性、可维护性和可管理性等诸多方面的需求,网络设备所做的处理称为附加特性。不同用户会依据自身需要启用一个或多个附加特性,任何一个附加特性都不会是所有用户必需的,否则它就会成为基本转发的一部分。因此,网络设备将基本转发、各类业务的公共流程提炼出来作为主线流程,并力图保持主线流程指令执行总周期尽可能短,否则会影响所有用户。网络设备的附加特性通过在主线流程中增加判断跳转指令来实现,这会降低主线流程的性能,进而影响所有用户。
例如,假设路由器在IPv4单播基本转发的基础上增加了简单流分类BA(Behavior Aggregation,行为聚集)、复杂流分类ACL(AccessControl Lists,存取控制列表)、URPF(Unicast Reverse PathForwarding,单播反向路径转发)三个附加特性,因此,不得不在主线流程中增加三个判断跳转指令:分别判断BA是否使能,ACL是否使能,以及URPF是否使能?无论这三个附加特性是否使能,指令执行周期均超过未增加判断跳转指令前的执行周期,当它们均使能时,执行周期最长。由此可见,判断跳转指令延长了主线流程的执行周期,随着新附加特性的不断增加,累积效应对主线性能的影响愈发明显。
现有技术中实现网络设备的附加特性通常有两种方式:非函数调用型和函数调用型。非函数调用型的处理过程是:顺序执行每个附加特性对应的代码片段,在每个代码片段的第一条指令判断该附加特性的使能标志,如果使能则执行本代码片段,如果未使能则跳过本代码片段。函数调用型的处理过程是:从第一个附加特性的使能标志开始判断是否使能,如果使能则调用该附加特性的处理函数,处理完后或者如果未使能则返回主线继续下一个附加特性的使能标志的判断。以网络设备增加BA、ACL和URPF三个附加特性为例,无论上述哪种方式,都在主线流程中增加了3个判断跳转指令,对具有流水线设计的网络处理器而言,流水线被中断了三次。
在实现本发明的过程中,发明人发现上述现有技术至少具有以下缺点:当网络设备具有附加特性时,在主线流程中增加的判断跳转指令会延长指令的执行周期,从而降低了主线流程性能。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种网络处理器的指令处理方法和网络处理器。所述技术方案如下:
一种网络处理器的指令处理方法,所述方法包括:
当网络处理器执行到预先添加的组合函数调用指令时,将所述组合函数调用指令的下一条指令的地址添加到第一堆栈的栈顶,其中,所述第一堆栈为预先设置的用于所述组合函数调用的堆栈;
根据所述组合函数调用指令,判断所述网络处理器的每个附加特性的使能标志是否使能,如果所述附加特性的使能标志为使能,则将所述附加特性对应的函数入口地址添加到所述第一堆栈的栈顶;
当所有附加特性的使能标志判断完成后,对添加到所述第一堆栈中的所述函数入口地址从栈顶开始出栈,并执行出栈的所述函数入口地址对应的函数,直到对所述组合函数调用指令的下一条指令的地址执行出栈。
一种网络处理器,所述网络处理器包括:
第一处理模块,用于当网络处理器执行到预先添加的组合函数调用指令时,将所述组合函数调用指令的下一条指令的地址添加到第一堆栈的栈顶;根据所述组合函数调用指令,判断所述网络处理器的每个附加特性的使能标志是否使能,如果所述附加特性的使能标志为使能,则将所述附加特性对应的函数入口地址添加到所述第一堆栈的栈顶;其中,所述第一堆栈为预先设置的用于组合函数调用的堆栈
第二处理模块,用于当所有附加特性的使能标志判断完成后,对添加到所述第一堆栈中的所述函数入口地址从栈顶开始出栈,并执行出栈的所述函数入口地址对应的函数,直到对所述组合函数调用指令的下一条指令的地址执行出栈。
本发明实施例提供的技术方案通过添加组合函数调用指令,并根据该组合函数调用指令将使能的附加特性的函数入口地址压栈,以及出栈并调用,与现有技术相比只需在主线流程中增加一条判断跳转指令,就能实现所有使能的附加特性的函数调用,极大地节省了指令的执行周期,降低了附加特性对主线性能的影响,而且可以支持多种附加特性的任意组合,容易实现,应用灵活。
附图说明
图1是本发明实施例1提供的网络处理器的指令处理方法流程图;
图2是本发明实施例2提供的网络处理器的指令处理方法流程图;
图3是本发明实施例2提供的使用寄存器存放3个附加特性使能标志的示意图;
图4是本发明实施例2提供的使用寄存器存放3个附加特性函数入口地址的示意图;
图5是本发明实施例2提供的执行组合函数调用指令时第一堆栈的入栈示意图;
图6是本发明实施例2提供的组合函数调用的流程示意图;
图7是本发明实施例3提供的网络处理器结构图。
具体实施例
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
参见图1,本实施例提供了一种网络处理器的指令处理方法,包括:
101:当网络处理器执行到预先添加的组合函数调用指令时,将该组合函数调用指令的下一条指令的地址添加到第一堆栈的栈顶;其中,第一堆栈为预先设置的用于组合函数调用的堆栈;
102:根据该组合函数调用指令,判断网络处理器的每个附加特性的使能标志是否使能,如果该附加特性的使能标志为使能,则将该附加特性对应的函数入口地址添加到第一堆栈的栈顶;
103:当所有附加特性的使能标志判断完成后,对添加到第一堆栈中的函数入口地址从栈顶开始出栈,并执行出栈的函数入口地址对应的函数,直到对组合函数调用指令的下一条指令的地址执行出栈。
本实施例提供的上述方法通过添加组合函数调用指令,并根据该组合函数调用指令将使能的附加特性的函数入口地址压栈,以及出栈并调用,与现有技术相比只需在主线流程中增加一条跳转指令,就能实现所有附加特性的函数调用,极大地节省了指令的执行周期,降低了附加特性对主线性能的影响,而且可以支持多种附加特性的任意组合,容易实现,应用灵活。
实施例2
参见图2,本实施例提供了一种网络处理器的指令处理方法,包括:
201:预先将网络处理器的所有附加特性的使能标志存储在第一寄存器中。
本实施例中,网络处理器的附加特性可以为一个,也可以为多个,通常都为多个。当为多个附加特性时,可以全部使能,或者部分使能,或者均不使能,本发明实施例对此不做具体限定。
附加特性的使能标志通常为1个bit的标志位,其取值范围有两个,分别代表使能和不使能。例如,取值为1时,代表使能,取值为0时,代表不使能。本发明实施例对使能标志的具体取值不做限定。
本实施例中的第一寄存器可以为通用寄存器,长度为32个bit。将网络处理器的所有附加特性的使能标志存储在该第一寄存器中,每个使能标志占用一个bit,存放时可以按照从高位到低位的顺序存放,也可以按照从低位到高位的顺序存放,而且,可以将各个附加特性的使能标志排序后存放在第一寄存器中,排序的方式也有很多种,如将优先级高的附加特性的使能标志排在前面等,本发明实施例对此不做具体限定。
例如,参见图3,网络处理器有3个附加特性,分别为BA,ACL和URPF,对应的使能标志为BA_enable、ACL_enable、uRPF_enable,在r10寄存器中从MSB(Most Significant Bit,高位)开始依次存放该三个使能标志。
202:预先将网络处理器的每个附加特性对应的函数入口地址分别保存在相应的第二寄存器中。
本实施例中,每个附加特性对应一个函数,每个函数有一个函数入口地址,将每个函数的函数入口地址存放在一个相应的第二寄存器中。本实施例中,第二寄存器与第一寄存器的相同之处是均可以为通用寄存器,长度为32个bit,不同之处是,第一寄存器用于存储使能标志,而第二寄存器用于存储函数入口地址。
例如,参见图4,将BA、ACL、uRPF函数的入口地址依次存放于r0,r1和r2中。
203:预先设置第一堆栈,用于组合函数调用。
本发明实施例中,在一条指令中调用多个函数称为组合函数调用,除组合函数调用以外的其它函数调用称为非组合函数调用,即现有的普通函数调用。
其中,第一堆栈可以具体为在网络处理器原有的堆栈的基础上新增的一个堆栈,将该原有的堆栈称为第二堆栈,第二堆栈用于非组合函数调用。本实施例中,将函数调用分为两种类型,分别在不同的堆栈中入栈和出栈,在本实施例中,组合函数调用使用第一堆栈,非组合函数调用使用第二堆栈。
本实施例中,步骤201、202和203没有固定的先后顺序,也可以同时执行。
204:当网络处理器执行到预先添加的组合函数调用指令时,将该组合函数调用指令的下一条指令的地址压入第一堆栈的栈顶。
其中,组合函数调用指令为预先添加的一条新的指令,用于调用各个附加特性对应的函数。具体地,组合函数调用指令中可以包含存储使能标志的寄存器的地址和该寄存器所存储的使能标志的个数。
例如,组合函数调用指令为combined_bal condition_register,number_of_branches,其中,combined_bal为操作码,代表组合函数调用;condition_register为第一操作数,代表存放使能标志的寄存器的地址;number_of_branches为第二操作数,代表该寄存器中存放的使能标志的个数。以上述3个附加特性为例,组合函数调用指令可以为:combined_bal r10,3,表明3个附加特性的使能标志均存放在r10寄存器中,且r10寄存器中存放的使能标志的个数为3个。
本实施例中,将组合函数调用指令的下一条指令的地址添加到第一堆栈的栈顶,是为了在组合函数调用结束后,网络处理器能够返回到该下一条指令继续执行。
205:根据组合函数调用指令中包含的存放使能标志的第一寄存器的地址,找到该第一寄存器,根据组合函数调用指令中包含的使能标志的个数,对该第一寄存器保存的使能标志逐一判断其是否使能。
具体地,该判断过程为循环的过程,可以从该寄存器的高位开始,向低位方向逐位进行判断,当然也可以从该寄存器的低位开始,向高位方向逐位判断。该判断的方向可以与使能标志在寄存器中的保存方向一致,也可以不一致。例如,存储使能标志时,按照从高位到低位的顺序在寄存器中存放,则判断时可以按照相同的方向,从高位到低位的顺序逐一判断;也可以按照相反的方向,从低位到高位的顺序逐一判断,本发明实施例对此不做具体限定。通常,在寄存器中存储使能标志时,会按照希望函数执行的顺序进行存储,而且,希望函数执行的顺序通常为附加特性优先级的顺序,因此,优选地,在判断时也按照相同的顺序进行判断,以保证判断出使能后,相应的函数按照希望的顺序被执行。
206:如果当前的使能标志为使能,则根据该使能标志对应的当前附加特性,确定当前附加特性对应的第二寄存器,将当前附加特性对应的第二寄存器中保存的函数入口地址添加到第一堆栈的栈顶。
本实施例中,每次向第一堆栈的栈顶添加内容后,均将第一堆栈的栈顶指针加1。
例如,网络处理器的3个附加特性BA、ACL和URPF均使能,则依次将其对应的3个函数A、B和C的入口地址添加到第一堆栈的栈顶,并每次均将第一堆栈的栈顶指针加1。参见图5,组合函数调用指令的当前地址为PC,第一堆栈中先后压入PC+1、A、B和C,栈顶指针变为4。图中的第二堆栈为用于非组合函数调用的堆栈,当前为空,栈顶指针为0
207:当所有附加特性的使能标志判断完成后,对添加到第一堆栈中的函数入口地址从栈顶开始依次出栈,并执行出栈的函数入口地址对应的函数,直到上述下一条指令的地址出栈。
本实施例中,根据栈顶指针从第一堆栈的栈顶开始依次出栈,按照堆栈后进先出的特性,依次出栈第一堆栈所保存的各个函数入口地址,并按照该地址调用相应的函数,从而实现相应的附加特性。其中,每次出栈均将栈顶指针减1。当上述下一条指令的地址出栈后,网络处理器返回该下一条指令继续执行,从而完成组合函数的调用。
本实施例中,各个附加特性对应的函数入口地址入栈和出栈,均是在组合函数调用指令的执行过程中完成的,由此可以看出,通过在程序中增加一条新的指令:组合函数调用指令,就可以达到所有使能的附加特性的函数的调用,从而极大地缩短了网络处理器的指令执行周期。如图6所示为组合函数调用的流程示意图。其中,3个附加特性BA、ACL和URPF对应的函数分别为BA函数、ACL函数和URPF函数,其入口地址分别为A1、B1和C1,并分别存放在寄存器r1、r2和r3中。当网络处理器执行到组合函数调用指令combined_bal r10,3时,按照图中箭头的顺序依次执行步骤①、②、③和④。步骤①为跳转到A1处执行BA函数;步骤②为跳转到B1处执行ACL函数;步骤③为跳转到C1处执行URPF函数;步骤④为跳转到Rest1,执行组合函数调用指令后面余下的代码片段。
208:网络处理器执行该下一条指令,并继续执行其它指令,当前组合函数调用的流程结束。其中,执行下一条指令以及其它指令均为现有流程,此处不做过多说明。
进一步地,上述方法还可以包括:
当网络处理器执行到非组合函数调用指令时,将该非组合函数调用指令的下一条指令的地址添加到第二堆栈的栈顶;其中,第二堆栈为预先设置的用于非组合函数调用的堆栈,在本实施例中,第二堆栈优先于第一堆栈出栈。该非组合函数调用指令可以位于上述组合函数调用指令之前或之后,本发明实施例对此不做具体限定,但是该非组合函数调用指令与其对应的返回语句之间不能出现组合函数调用指令。另外,该非组合函数调用指令对应的函数可以是非嵌套函数,即一个独立的函数;或者可以是嵌套于任一函数之中的函数,即为其它函数的子函数,该其它函数可以为任意函数,包括组合调用函数或非组合调用函数。
本实施例中,设置任何函数的返回语句为统一格式,如均为return,该返回语句不区分调用方式,以提高函数的可维护性和管理性。不过,在执行函数的返回语句时,按照第二堆栈优先于第一堆栈出栈的原则执行操作。因此,在步骤207中当执行到函数返回的汇编指令return时,优先查看第二堆栈内是否为空,如果第二堆栈不为空,则先从第二堆栈出栈,如果第二堆栈为空,再查看第一堆栈是否为空,如果第一堆栈不为空,则从第一堆栈出栈,如果第一堆栈也为空,则表明当前正在执行的程序错误,报告堆栈异常。
本实施例中,组合函数调用指令不能被嵌套于任何函数调用中,普通函数调用可以被嵌套于任何其它函数调用中,这样可以提高网络处理器程序的条理性和可维护性,而且有利于网络处理器实现路由器业务。为此,组合函数调用指令执行前要求第一堆栈、第二堆栈均为空;而普通函数调用指令执行前不要求第一堆栈、第二堆栈是否为空。
本实施例提供的上述方法通过添加组合函数调用指令,并根据该组合函数调用指令将使能的附加特性的函数入口地址压栈,以及出栈并调用,与现有技术需要增加三次判断跳转相比,只需在主线流程中增加一条判断跳转指令,就能实现所有使能的附加特性的函数调用,极大地节省了指令的执行周期,减少附加特性在主线流程中增加的判断跳转指令,降低了附加特性对主线性能的影响,而且可以支持多种附加特性的任意组合,容易实现,应用灵活。
实施例3
参见图7,本实施例提供了一种网络处理器,包括:
第一处理模块701,用于当网络处理器执行到预先添加的组合函数调用指令时,将组合函数调用指令的下一条指令的地址添加到第一堆栈的栈顶;根据组合函数调用指令,判断网络处理器的每个附加特性的使能标志是否使能,如果该附加特性对应的使能标志为使能,则将该附加特性对应的函数入口地址添加到第一堆栈的栈顶;其中,第一堆栈为预先设置的用于组合函数调用的堆栈;
第二处理模块702,用于当所有附加特性的使能标志判断完成后,对添加到第一堆栈中的函数入口地址从栈顶开始出栈,并执行出栈的函数入口地址对应的函数,直到对上述下一条指令的地址执行出栈;。
其中,第一堆栈可以具体为在网络处理器原有的堆栈的基础上新增的一个堆栈,将该原有的堆栈称为第二堆栈,第二堆栈用于非组合函数调用。本实施例中,将函数调用分为两种类型,分别在不同的堆栈中入栈和出栈,组合函数调用使用第一堆栈,非组合函数调用使用第二堆栈。
本实施例中,进一步地,上述网络处理器还可以包括:
第一初始化模块,用于将网络处理器的所有附加特性的使能标志存储在第一寄存器中;
相应地,第一处理模块包括:
判断单元,用于根据组合函数调用指令中包含的第一寄存器的地址,找到第一寄存器,根据组合函数调用指令中包含的使能标志的个数,对第一寄存器保存的每个使能标志判断是否使能。
本实施例中,进一步地,上述网络处理器还可以包括:
第二初始化模块,用于将网络处理器的每个附加特性对应的函数入口地址分别保存在相应的第二寄存器中;
相应地,第一处理模块包括:
入栈处理单元,用于如果该附加特性的使能标志为使能,则根据该附加特性确定该附加特性对应的第二寄存器,将该附加特性对应的第二寄存器中保存的函数入口地址添加到第一堆栈的栈顶。
本实施例中,进一步地,上述网络处理器还可以包括:
第三处理模块,用于当网络处理器执行到非组合函数调用指令时,将非组合函数调用指令的下一条指令的地址添加到第二堆栈的栈顶;其中,第二堆栈为预先设置的用于非组合函数调用的堆栈,且第二堆栈优先于第一堆栈出栈。所述非组合函数调用指令对应的函数为非嵌套函数,或者为嵌套于任一函数之中的函数。
本实施例中的上述所有模块和单元均可以通过硬件来实现,如在网络处理器中增加一个组合函数调用逻辑,使其具有上述所有模块和单元的功能。另外,也可以通过硬件和软件相结合的方式来实现,如用微指令来实现使能标志的判断,并在网络处理器中增加一个组合函数调用逻辑,使其具有除判断以外的所有功能,等等,当然也可以采用其它方式来实现,本发明实施例对此不做具体限定。
本实施例提供的上述网络处理器通过添加组合函数调用指令,并根据该组合函数调用指令将使能的附加特性的函数入口地址压栈,以及出栈并调用,与现有技术需要增加三次判断跳转相比,只需在主线流程中增加一条判断跳转指令,就能实现所有使能的附加特性的函数调用,极大地节省了指令的执行周期,减少附加特性在主线流程中增加的判断跳转指令,降低了附加特性对主线性能的影响,而且可以支持多种附加特性的任意组合,容易实现,应用灵活。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。
本发明实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。上述提到的存储介质可以是只读存储器,磁盘或光盘等。上述的各装置或系统,可以执行相应方法实施例中的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种网络处理器的指令处理方法,其特征在于,所述方法包括:
当网络处理器执行到预先添加的组合函数调用指令时,将所述组合函数调用指令的下一条指令的地址添加到第一堆栈的栈顶,其中,所述第一堆栈为预先设置的用于组合函数调用的堆栈,所述组合函数调用指令为预先添加的一条指令,用于调用各个附加特性对应的函数;
根据所述组合函数调用指令,判断所述网络处理器的每个附加特性的使能标志是否使能,如果所述附加特性的使能标志为使能,则将所述附加特性对应的函数入口地址添加到所述第一堆栈的栈顶;
当所有附加特性的使能标志判断完成后,对添加到所述第一堆栈中的所述函数入口地址从栈顶开始出栈,并执行出栈的所述函数入口地址对应的函数,直到对所述组合函数调用指令的下一条指令的地址执行出栈。
2.根据权利要求1所述的方法,其特征在于,在所述网络处理器执行到预先添加的组合函数调用指令之前,还包括:
将所述网络处理器的所有附加特性的使能标志存储在第一寄存器中;
相应地,所述根据所述组合函数调用指令,判断所述网络处理器的每个附加特性的使能标志是否使能,包括:
根据所述组合函数调用指令中包含的所述第一寄存器的地址,找到所述第一寄存器,根据所述组合函数调用指令中包含的使能标志的个数,对所述第一寄存器保存的每个使能标志判断是否使能。
3.根据权利要求1所述的方法,其特征在于,在所述网络处理器执行到预先添加的组合函数调用指令之前,还包括:
将所述网络处理器的每个附加特性对应的函数入口地址分别保存在所述附加特性对应的第二寄存器中;
相应地,所述如果所述附加特性的使能标志为使能,则将所述附加特性对应的函数入口地址添加到所述第一堆栈的栈顶,包括:
如果所述附加特性的使能标志为使能,则根据所述附加特性确定所述附加特性对应的第二寄存器,并将所述附加特性对应的第二寄存器中保存的所述附加特性对应的函数入口地址添加到所述第一堆栈的栈顶。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述网络处理器执行到非组合函数调用指令时,将所述非组合函数调用指令的下一条指令的地址添加到第二堆栈的栈顶;
其中,所述第二堆栈为预先设置的用于非组合函数调用的堆栈,且所述第二堆栈优先于所述第一堆栈出栈。
5.根据权利要求4所述的方法,其特征在于,所述非组合函数调用指令对应的函数为非嵌套函数,或者为嵌套于任一函数之中的函数。
6.一种网络处理器的指令处理装置,其特征在于,所述指令处理装置包括:
第一处理模块,用于当网络处理器执行到预先添加的组合函数调用指令时,将所述组合函数调用指令的下一条指令的地址添加到第一堆栈的栈顶;根据所述组合函数调用指令,判断所述网络处理器的每个附加特性的使能标志是否使能,如果所述附加特性的使能标志为使能,则将所述附加特性对应的函数入口地址添加到所述第一堆栈的栈顶;其中,所述第一堆栈为预先设置的用于组合函数调用的堆栈,所述组合函数调用指令为预先添加的一条指令,用于调用各个附加特性对应的函数;
第二处理模块,用于当所有附加特性的使能标志判断完成后,对添加到所述第一堆栈中的所述函数入口地址从栈顶开始出栈,并执行出栈的所述函数入口地址对应的函数,直到对所述组合函数调用指令的下一条指令的地址执行出栈。
7.根据权利要求6所述的指令处理装置,其特征在于,所述指令处理装置还包括:
第一初始化模块,用于在所述网络处理器执行到预先添加的所述组合函数调用指令之前,将所述网络处理器的所有附加特性的使能标志存储在第一寄存器中;
相应地,所述第一处理模块包括:
判断单元,用于根据所述组合函数调用指令中包含的所述第一寄存器的地址,找到所述第一寄存器,根据所述组合函数调用指令中包含的使能标志的个数,对所述第一寄存器保存的每个使能标志判断是否使能。
8.根据权利要求6所述的指令处理装置,其特征在于,所述指令处理装置还包括:
第二初始化模块,用于在所述网络处理器执行到预先添加的所述组合函数调用指令之前,将所述网络处理器的每个附加特性对应的函数入口地址分别保存在所述每个附加特性对应的第二寄存器中;
相应地,所述第一处理模块包括:
入栈处理单元,用于如果所述附加特性的使能标志为使能,则根据所述附加特性确定所述附加特性对应的第二寄存器,将所述附加特性对应的第二寄存器中保存的所述附加特性对应的函数入口地址添加到所述第一堆栈的栈顶。
9.根据权利要求6所述的指令处理装置,其特征在于,所述指令处理装置还包括:
第三处理模块,用于当所述网络处理器执行到非组合函数调用指令时,将所述非组合函数调用指令的下一条指令的地址添加到第二堆栈的栈顶;其中,所述第二堆栈为预先设置的用于非组合函数调用的堆栈,且所述第二堆栈优先于所述第一堆栈出栈。
10.根据权利要求9所述的指令处理装置,其特征在于,所述非组合函数调用指令对应的函数为非嵌套函数,或者为嵌套于任一函数之中的函数。
CN2010800033734A 2010-08-30 2010-08-30 网络处理器的指令处理方法和网络处理器 Active CN102292705B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2010/076458 WO2012027878A1 (zh) 2010-08-30 2010-08-30 网络处理器的指令处理方法和网络处理器

Publications (2)

Publication Number Publication Date
CN102292705A CN102292705A (zh) 2011-12-21
CN102292705B true CN102292705B (zh) 2013-12-18

Family

ID=45337996

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010800033734A Active CN102292705B (zh) 2010-08-30 2010-08-30 网络处理器的指令处理方法和网络处理器

Country Status (4)

Country Link
US (1) US20130145122A1 (zh)
EP (1) EP2592792B1 (zh)
CN (1) CN102292705B (zh)
WO (1) WO2012027878A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109240815B (zh) * 2018-08-24 2021-07-23 珠海格力电器股份有限公司 一种共享堆栈的多任务运行方法、装置及设备
CN110417813B (zh) * 2019-08-23 2021-08-27 极芯通讯技术(南京)有限公司 出栈网络处理器及网络数据出栈处理方法
US10802854B2 (en) 2019-08-30 2020-10-13 Alibaba Group Holding Limited Method and apparatus for interpreting bytecode instruction stream
CN110704108B (zh) * 2019-08-30 2020-08-14 阿里巴巴集团控股有限公司 解释执行字节码指令流的方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1371053A (zh) * 2001-02-22 2002-09-25 英业达集团(南京)电子技术有限公司 在电子通信装置的编译系统平台上下载应用程序的方法
CN1858705A (zh) * 2006-03-18 2006-11-08 华为技术有限公司 一种实现网络处理器动态加载微码的方法及网络设备
CN1885822A (zh) * 2005-06-25 2006-12-27 华为技术有限公司 一种网络处理器
US7469279B1 (en) * 2003-08-05 2008-12-23 Cisco Technology, Inc. Automatic re-provisioning of network elements to adapt to failures
CN101512482A (zh) * 2005-02-08 2009-08-19 思科技术公司 多线程分组处理体系结构

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6851046B1 (en) * 2000-11-14 2005-02-01 Globespanvirata, Inc. Jumping to a recombine target address which is encoded in a ternary branch instruction
US20020144099A1 (en) * 2001-01-25 2002-10-03 Muro Manuel R. Hardware architecture for fast servicing of processor interrupts
US8181258B2 (en) * 2003-11-26 2012-05-15 Agere Systems Inc. Access control list constructed as a tree of matching tables
US7765547B2 (en) * 2004-11-24 2010-07-27 Maxim Integrated Products, Inc. Hardware multithreading systems with state registers having thread profiling data
US7203826B2 (en) * 2005-02-18 2007-04-10 Qualcomm Incorporated Method and apparatus for managing a return stack
GB0604991D0 (en) * 2006-03-11 2006-04-19 Slam Games Ltd Instrumentation for real-time performance profiling
US20080288728A1 (en) * 2007-05-18 2008-11-20 Farooqui Aamir A multicore wireless and media signal processor (msp)
US8621424B2 (en) * 2008-06-30 2013-12-31 Yahoo! Inc. Compiler based code modification for use in document ranking
US20100122066A1 (en) * 2008-11-12 2010-05-13 Freescale Semiconductor, Inc. Instruction method for facilitating efficient coding and instruction fetch of loop construct

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1371053A (zh) * 2001-02-22 2002-09-25 英业达集团(南京)电子技术有限公司 在电子通信装置的编译系统平台上下载应用程序的方法
US7469279B1 (en) * 2003-08-05 2008-12-23 Cisco Technology, Inc. Automatic re-provisioning of network elements to adapt to failures
CN101512482A (zh) * 2005-02-08 2009-08-19 思科技术公司 多线程分组处理体系结构
CN1885822A (zh) * 2005-06-25 2006-12-27 华为技术有限公司 一种网络处理器
CN1858705A (zh) * 2006-03-18 2006-11-08 华为技术有限公司 一种实现网络处理器动态加载微码的方法及网络设备

Also Published As

Publication number Publication date
EP2592792A1 (en) 2013-05-15
EP2592792B1 (en) 2017-09-27
WO2012027878A1 (zh) 2012-03-08
US20130145122A1 (en) 2013-06-06
EP2592792A4 (en) 2013-06-12
CN102292705A (zh) 2011-12-21

Similar Documents

Publication Publication Date Title
Miano et al. Creating complex network services with ebpf: Experience and lessons learned
US7080238B2 (en) Non-blocking, multi-context pipelined processor
US7376952B2 (en) Optimizing critical section microblocks by controlling thread execution
US7707391B2 (en) Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
EP0947926A2 (en) System and method for multi-tasking, resource sharing, and execution of computer instructions
US11010167B2 (en) Instruction-based non-deterministic finite state automata accelerator
CN102292705B (zh) 网络处理器的指令处理方法和网络处理器
US9202071B2 (en) Exception handling in a data processing apparatus having a secure domain and a less secure domain
CN109981403A (zh) 虚拟机网络数据流量监控方法及装置
JP2009523275A5 (zh)
US9031077B2 (en) Systems, methods, and computer program products providing a data unit sequencing queue
JP5859185B2 (ja) 低複雑性命令プリフェッチシステム
US20020116436A1 (en) Context preservation
US20140006757A1 (en) Method for Thread Reduction in a Multi-Thread Packet Processor
US6112294A (en) Concurrent execution of multiple instructions in cyclic counter based logic component operation stages
CN105094747A (zh) 基于smt的中央处理单元以及用于检测指令的数据相关性的装置
US9298502B2 (en) Pausing virtual machines using API signaling
US8838837B2 (en) Failover mechanism
CN113452532B (zh) 一种网络通信方法、计算设备及可读存储介质
US7613905B2 (en) Partial register forwarding for CPUs with unequal delay functional units
CN104901901A (zh) 一种微引擎及其处理报文的方法
US7133951B1 (en) Alternate set of registers to service critical interrupts and operating system traps
WO2017020639A1 (zh) 网络处理器、报文处理数据的获取方法和存储介质
CN113703841B (zh) 一种寄存器数据读取的优化方法、装置及介质
US8549251B1 (en) Methods and apparatus for efficient modification of values within computing registers

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant