CN1500336A - 可编微程序的协议包解析程序和封装程序 - Google Patents

可编微程序的协议包解析程序和封装程序 Download PDF

Info

Publication number
CN1500336A
CN1500336A CNA028075862A CN02807586A CN1500336A CN 1500336 A CN1500336 A CN 1500336A CN A028075862 A CNA028075862 A CN A028075862A CN 02807586 A CN02807586 A CN 02807586A CN 1500336 A CN1500336 A CN 1500336A
Authority
CN
China
Prior art keywords
routine
instruction
bag
microcontroller
template
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.)
Granted
Application number
CNA028075862A
Other languages
English (en)
Other versions
CN100468322C (zh
Inventor
G
G·德万
P·凯利瓦尔
M·穆萨尔
S·麦钱特
侯驰非
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.)
Nokia Technologies Oy
Original Assignee
Nokia Intelligent Edge Routers Inc
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 Nokia Intelligent Edge Routers Inc filed Critical Nokia Intelligent Edge Routers Inc
Publication of CN1500336A publication Critical patent/CN1500336A/zh
Application granted granted Critical
Publication of CN100468322C publication Critical patent/CN100468322C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Abstract

本发明公开一种用于解析包和将数据封装形成包的可编微程序的控制器。可编微程序的控制器载入微控制器内的指令。指令字具有多个指令字段。微控制器并行处理多个指令字段。每个指令字段与用于解析包或将数据封装形成包的特定操作相关。通过根据解析和封装特定的指令系统对模板编程,将特定的例行程序排列在一起,对可编程微控制器进行编程,从而处理支持新型协议的包。

Description

可编微程序的协议包解析程序和封装程序
技术领域
本发明属于网络领域。更具体地,本发明涉及可编微程序的协议包(protocol packet)的解析程序(parser)和封装程序(encapsulator)。
背景技术
今天,数据单元(“包”)可以穿越众多的互连网络而达到目的地。通常,网络设备,例如路由器,利用最佳路径发送和转发包穿过网络边界。路由器可以使用大量协议来发送和转发包。包通常包括协议报头(protocolheader),用以指示用于包的协议以及存储数据的有效负载部分。这样,路由器执行两个基本类型的操作,即解析协议报头的包,将数据从包中取出;将数据与协议报头封装形成用于传输的包。
先前的解析和封装技术是借助硬件电路。即,电路是解析具体包或将数据与具体协议报头封装形成不同类型包的硬件线路。但是,使用硬件电路的缺点在于,它不能编程。特别是,硬件电路不灵活,或者不适于支持新类型协议的包。例如,如果使用新协议发送包,则包将包括新型的协议报头。因此,如果硬件电路的设计不能处理新型的协议报头,则必须设计并使用新型的硬件电路用以支持这种新型的协议。
另一种先前的解析和封装技术使用网络处理器,必须访问外部存储器,处理用于执行解析和封装功能的代码或指令。这种技术的不足之处是,由于网络处理器花费时间访问外部存储器造成长的等待时间。这种长的等待时间使路由器解析包和将数据封装形成包的速度变慢。因此,由于解析和封装功能必须在高速下执行,以便保持路由器支持的高数据速度,这种技术不足以在高数据速度下进行解析和封装。
这种技术的另外不足之处在于,包的每种变化类型需要单独的程序,这些变化类型是根据包支持的协议的很多组合得到的。大量的程序容量很大,因此对存储器资源造成了很重的负担。因此,利用网络处理器访问外部存储器来处理代码和指令,用于解析包或封装数据形成包对于路由器来说是低效的。
发明内容
本发明提供一种可编微程序的控制器,用于解析包并将数据封装形成包。在一个实施例中,装入微控制器内的指令。指令字具有多个指令字段。微控制器并行处理多个指令字段。每个指令字段与解析包或将数据封装形成包的具体指令相关。通过根据为解析和封装而具体设计的指令系统编程一个模板,将具体的例行程序(routine)排列在一起,可编程的微控制器可以编程用以处理支持新型协议的包。
从下面的附图以及详细描述中,将更加清楚本发明的其它特征和优点。
附图说明
本发明通过实施例进行描述,并且不受各个附图的限制,在附图中相似的参考符号代表相似的元件。在附图中:
图1A表示可以实施本发明的一个典型的网络环境;
图1B表示根据一个实施例解析和封装引擎的简化框图;
图2表示根据一个实施例具有协议报头和有效负载部分的包的框图;
图3A表示根据一个实施例存储例行程序用以解析包和将数据封装形成包的例行程序存储器;
图3B表示根据一个实施例的模板,其将例行程序排列在一起以解析包或将数据封装形成包;
图3C表示根据一个实施例的寄存器组,用于解析包或将数据封装形成包;
图4表示根据一个实施例具有多个操作槽(operation slot)的指令的框图;
图5表示根据一个实施例的图1B中高水平结构的VLIW引擎,用以解析包或将数据封装形成包;
图6表示根据一个实施例解析包的操作流程图;
图7表示根据一个实施例将数据封装形成包的操作流程图;
图8表示对图1A的解析和封装引擎进行编程操作的流程图。
具体实施方式
下面描述用于解析包并将数据封装形成包的可编微程序的控制器。在一个实施例中,载入微控制器内的指令。指令字具有多个指令段。微控制器并行处理多个指令字段。每个指令字段与解析包或将数据封装形成包的具体指令相关。通过根据为解析和封装具体设计的指令系统编程一个模板,将具体的例行程序排列在一起,可编程的微控制器可以编程用以处理支持新型协议的包。
这里所述的解析和封装技术,使解析包或将数据封装形成包的处理等待时间缩短。特别是,通过载入微控制器内的指令,微控制器避免访问外部存储器来载入指令,从而缩短了处理的等待时间。并且,这里所述的解析和封装技术通过并行处理指令内的多个指令字段,缩短了解析包并将数据封装形成包的处理时间。
这里所述的解析和封装技术是通过能够编程的微控制器(“可编程微控制器”)实现的,从而适于并且灵活地支持目前的以及新的协议类型。可编程的微控制器使用可编程的模板,其中特定的例行程序捆绑在一起处理包的特定协议。通过将例行程序捆绑在一起应用于特定的协议(当前的或新型的),模板可以有效地使用存储器空间。并且,为了支持新型协议,可以容易地下载新的例行程序并将其加入模板中。
可编程微控制器使用解析和封装专用的微指令系统。通过使用解析和封装专用的微指令系统,可编程微控制器能非常快地执行解析和封装功能。可编程微控制器能处理例行程序内的指令系统,这些例行程序一起捆绑在模板中,从而允许高效地传输每个例行程序的控制。
图1表示可以实施本发明的典型网络环境100。参看图1,网络环境100包括网络设备105,它通过网络101连接到路由器110。路由器110也通过网络102连接到网络设备115上。为了说明的目的,图中示出了两套网络和设备。但是,网络环境100可以包括任意数量的具有路由器的网络和设备。路由器110可以从网络设备105和115接收包以及将包转发到网络设备105和115。
在一个实施例中,网络设备105和115可以是一般用途的计算引擎、服务器或工作站。在另一个实施例中,网络设备105和115可以是路由器、网关、集线器、桥接器或转换器。但是,网络设备105和115并不限定于任何特定类型的网络设备。网络101和102可以代表任意类型的网络。例如,网络101和102可以是局域网LAN,如以太网;或者广域网WAN,如异步传输方式(ATM)网络,帧中继网络或互联网。
在一个实施例中,路由器110是执行网际协议(IP)第3层服务的网络设备。即,路由器110执行IP第3层服务,提供发送和转发功能,从而包可以利用互联网上的最佳路径到达其目的地。在其他实施例中,路由器110可以执行其它网络设备服务,例如多协议标签转换(MPLS)服务。MPLS使用标签和索引转换网络上的包。路由器110也能支持用于网络通讯的标准7层结构的模型应用程序和服务。即,路由器110可以作为IP路由器使用。路由器110也可以是与网络设备105和115类型相同的设备。
在一个实施例中,路由器110可以是网络路由器,用于在相同的管理权限和控制下在一个特殊的网络组中转发包,这通常称为自治系统(AS)。同样地,路由器110可以代表“内部路由器”,运行并支持内部网关协议(IGP),交换AS内的信息。
如果运行并支持IGP,则路由器110能运行发送协议,例如中间系统—中间系统协议(IS-IS),开放最短路径优先协议(OSPF)以及路由选择信息协议(RIP)。IS-IS协议和OSPF协议是连接状态协议。连接状态协议使用连接状态包维持网络的统一视图。RIP协议是基于使用最短路径计算的距离矢量的简单协议。路由器110解析包并将数据封装形成支持上述IGP协议的包。
在另一个实施例中,路由器110代表用于在自治系统(AS)之间转发包的网络路由器,此时的路由器被称为“外部路由器”,并且运行和支持外部网关协议(EGP)。如果运行并支持EGP,路由器110运行发送协议,例如边界网关协议(BGP)。BGP协议通过可靠的传输协议如传输控制协议(TCP)交换连接信息,这是因为BGP协议没有错误控制能力。路由器110解析包并将数据封装形成支持上述EGP协议的包。
路由器110包括解析和封装引擎112,用于在提取有效负载时解析包(如包200),或者将有效负载与协议报头(如发送协议报头)封装形成包。在一个实施例中,解析和封装引擎112是可编程微控制器,它包括解析包或者封装数据形成包专用的指令系统。在其他实施例中,可编程微控制器可以是可编程微处理器或者芯片上的可编程系统或子系统。
如同下面将要详细描述的,解析和封装引擎112是可编微程序的,用于处理支持当前和新型协议的包。例如,新的例行程序可以下载到路由器110,对解析和封装引擎112编程,将例行程序添加到模板,以便支持新的协议。这样,不必为新协议的每个不同变化书写新的程序,应用于包内当前协议。
图1B表示根据一个实施例解析和封装引擎112的简化框图。在一个实施例中,解析和封装引擎112是同时执行解析和封装功能的单一系统。在另外的实施例中,解析和封装引擎112可以是两个单独的系统,其中解析系统在接收端执行解析功能,封装系统在输出端执行封装功能。为了解释的目的,解析和封装引擎112称为单处理系统。在一个实施例中,解析和封装引擎112是芯片上的系统或子系统,它被设计为可编程微控制器或微处理器。
参看图1B,解析和封装引擎112包括多个超长指令字(VLIW)引擎150-1到150-N。在图1B的实施例中,VLIW引擎150-1到150-N连接到相同的存储单个协议代码的嵌入存储器300以及存储模板350的嵌入存储器350。但是,VLIW引擎150-1到150-N可以连接到单独的嵌入存储设备。嵌入存储器300和350是指包含在解析和封装引擎112中的存储设备。例如,嵌入存储器300和350是嵌入到芯片上的相同系统或子系统或者相同微控制器或微处理器的存储设备。这样,解析和封装引擎112不需要为了指令而访问外部存储器。
VLIW引擎150-1到150-N可以是提供有逻辑电路的专用集成电路(ASIC),其中的逻辑电路基于VLIW结构或水平微代码指令结构可编微程序。VLIW引擎150-1到150-N用于执行解析或封装功能。例如,VLIW引擎150-1可以设计成解析包,VLIW引擎150-N可以设计成将数据封装形成包。作为选择,VLIW引擎150-1和150-N可以设计成同时执行解析和封装功能。VLIW引擎150-1到150-N中的每一个可以并行运行解析或封装功能。
VLIW引擎150-1到150-N可以处理存储在嵌入存储器300中的单独协议的代码,这是基于VLIW指令结构或微代码指令结构。特别是,单独协议的代码包括具有多个指令字段的指令。VLIW引擎150-1到150-N设计为并行处理多个指令字段,这将在下面详细解释。
VLIW引擎150-1到150-N设计成根据例行程序在存储于嵌入存储器350的模板内的排列来判断在嵌入存储器300中处理哪个指令。例如,模板将特殊的例行程序排列或捆绑在一起,处理包的特殊协议(当前的或新型的)。为了处理新协议,解析和封装引擎112下载或编程嵌入存储器350内的模板,通过根据如同附录中作为例子给出的特殊指令增添新的例行程序。
图2表示根据一个实施例具有协议报头202和有效负载部分207的包200的框图。协议报头202包括多个特殊的协议报头P1(203)到PN(206),其中包200支持。例如,包200可以包括如下的具有有效负荷(Payload)部分的协议报头,如表1所示。
       表1
    (典型的包)
PPP IP UDP  Payload
在表1的例子中,PPP指点对点协议报头,用于两个系统在第2层或物理层之间进行通讯。例如,PPP定义有多少比特的信息在物理链路上传输。UDP是指通过网际协议(IP)传送数据报的用户数据报协议报头。这样,IP指向用于在互联网上传送包的报头。IP报头包括用于转发包的IP地址。但包200能包括任意数量的当前协议的当前协议报头组合,以及包括用于新型协议的协议报头。例如,BGP路由协议报头可用于包200中。
路由器110使用解析和封装引擎112解析包200,根据协议报头202,确定包200内包括的哪个协议报头提取有效负载207。同样地,路由器110使用解析和封装引擎112,将有效负载207与协议报头202封装形成包200进行传输。例如,IP协议报头可以将传输控制协议(TCP)的协议报头进行封装,用以传输包200。
图3A表示根据一个实施例存储例行程序用以解析包和将数据封装形成包的例行程序存储器300。例行程序存储器300可以代表图1B所示的相同的嵌入存储器300。参看图3A,例行程序存储器300将多个协议程序存储为P1例行程序(302)到PN例行程序(308)。每个例行程序包括基于特定指令系统的多个微指令,用以解析或封装,如图4及附录所示。
例如,再看表1,P1例行程序(302)可以是用于解析具有PPP报头的包的例行程序,或者是用于将数据与PPP报头封装的例行程序;P2例行程序(304)可以是用于解析具有IP报头的包的例行程序,或者是用于将数据与IP报头封装的例行程序;P3例行程序(306)可以是用于解析具有UDP报头的包的例行程序,或者是用于将数据与UDP报头封装的例行程序。
用于当前或新协议报头的任意数量的例行程序可以存储在例行程序存储器300中。例行程序可以在模板350中捆绑在一起,如图3B所示。模板350可以代表图1B所示的嵌入存储器350。如图3B所示,模板300包括将P1到P3捆绑或排列在一起的请求352到356。这样,尽管包内包括不同类型的协议报头,但通过使用模板300,例行程序可以捆绑在一起对包进行处理。
并且,如果包使用了新协议,则新例行程序可以存储在例行程序存储器300中。例如,可以通过网络101或105或从外部设备将PN例行程序308下载到路由器110,并存储在例行程序存储器300中。这里,如图3B所示,“新”请求358可以增加或编程在模板350中,用以请求PN例行程序308处理用于解析或封装的新的协议,从而得到灵活的和适用的包解析程序和封装程序。另外,通过使用模板300,可以高效地利用存储器空间,这是因为例行程序存储一次,并且例行程序可以被请求或与模板300捆绑在一起组合很多次,用于具有不同的或新协议报头的不同类型的包。
在另一个实施例中,协议报头链具有ID,并且ID可以存储在模板中。例如,模板可以表示为48位,其中6位表示特定的ID。这样,在上述实施例中,模板可以包括8个特定的ID。ID可以请求例行程序存储器300中的特定例行程序。这样,解析和封装引擎112可以使用模板350解析包,取出数据,或将数据封装形成包。
图3C表示解析和封装引擎112使用的寄存器组360。参看图3C,寄存器组360包括:校验和寄存器362、缓冲器指针寄存器364、微程序寄存器366、分支支程序寄存器368、微指令寄存器370、标志寄存器372、暂存寄存器(S0-S5)374、常数表376和字段寄存器378。寄存器组360可以是一个单寄存器文件,或者也可以是多个单独的寄存器。
校验和寄存器362存储用于确定数据中正确位数的校验和值。校验和寄存器362可以包括多个位(如16位)以存储校验和计算值。缓冲器指针寄存器364将指针或地址存储在包缓冲存储器中特定的位置,包缓冲存储器在解析和封装引擎112内存储待解析的包或存储待封装形成包的数据。例如,如果解析包200,缓冲器指针寄存器364将位置存储在包缓冲存储器中,其中的下一个字节是将要解析的。如果将数据封装,缓冲器指针寄存器364存储在形成包时将数据添加到包中的位置。
微程序寄存器366在判断执行例行程序中的哪个指令时将指针或位置存储到例行程序存储器300。例如,微程序寄存器366可以指向用于处理存储在例行程序存储器300中P1例行程序(302)的指令的位置。微指令寄存器370存储在微程序寄存器366中存储的位置的实际指令或内容。微指令寄存器370可以存储将由解析和封装引擎112执行的当前的微指令或随后的微指令。分支程序寄存器368存储将由解析和封装引擎112执行的可能分支微指令的指针或位置。
标志(LGE)寄存器372存储比较值,用于表示,例如,根据比较功能得到的小于、大于或等于。暂存寄存器(S0-S5)存储解析和封装引擎112使用的中间计算值或数据(例如,用于执行比较功能)。虽然在图3C中示出了9个寄存器,但可以使用任意数量的暂存寄存器。常数表376存储与协议有关的常数或固定值或数据,这可以用于判断某些数据是否与常数值或数据匹配。例如,某个协议报头可以具有4字节的固定数据,常数表376可以在判断解析的报头是否匹配那个特定协议报头的固定字节时存储这些固定的字节。字段寄存器378在解析包或字段用于将数据封装形成包时存储字段。
图4表示根据一个实施例具有多个指令或操作字段或槽的指令400的框图。参看图4,指令400包括用于微操作的6个槽。这6个槽包括M槽402、C槽404、T槽406、X槽408、A槽410和B槽412。6个槽中的每一个包括如附录所示的微操作组。指令400中的所有微操作是使用图3C寄存器组360的信息并行执行的。如表2所示,下面说明6个微操作中的每一个。
         表2
说明
M 存储器载入和存储操作
C 校验和计算操作
T 测试和比较操作
X 数据提取和插入操作
A 分支目标地址操作
B 分支触发操作
M槽存储器载入和存储操作用于从包中提取或得到数据或者将数据加入形成包。C槽校验和计算操作用于判断数据是否包含正确的位数。这个计算操作可以通过并行处理所有的槽快速计算。T槽测试和比较操作用于比较进入的校验和与计算的校验和,并根据比较设定标志。例如,比较可以在标志(LGE)寄存器372中设定小于标志、大于标志或等于标志。X槽数据提取和插入操作用于实际的解析和封装过程。即,在一组数据中提取一定数量的数据(例如,一个字节)时,此操作是唯一的。同样地,一定数量的数据(例如,一个字节)可以插入一组数据中形成包。
A槽分支目标地址操作和B槽分支触发操作用于特殊目的,即通过将分支过程分成两个部分将指令的例行程序插入。第一部分与A槽操作相关,其中对例行程序内的目标微指令产生分支。目标微指令可以存储在分支程序寄存器368中。第二部分与B槽操作相关,用于指示是产生目标微指令的分支,还是执行下一个微指令。
在一个实施例中,在一个循环中同时取出两个微指令。例如,微指令寄存器366存储下一个待执行的微指令,分支程序寄存器368存储可能用于分支处理的目标微指令。这样,可以同时取出下一个微指令以及分支目标微指令,提供有效的例行程序分支。
在一个实施例中,指令400可以在一个流水线中处理。例如,如下面的表3所示,指令400可以在四个阶段处理:预取阶段、取出阶段、解码阶段以及执行阶段。
             表3
 PF(预取) F(取出) D(解码) E(执行)
在预取阶段,下一个连续的微指令和可能的分支目标微指令分别存储在微程序寄存器366和分支程序寄存器368中,如同上述对A槽操作和B槽操作所作的描述。在取出阶段,取出存储在微指令寄存器366和分支程序寄存器368中的两个微指令,并选择一个寄存器的内容用于解码阶段。
在解码阶段,微指令被解码,用于解析或者封装处理,其中缓冲指针寄存器364的数值被相应地调节。例如,如果已经解析了2个字节的数据,则缓冲指针寄存器364存储一个调节了两个字节的位置。在执行阶段,例行程序内的所有微指令都完成了,适当的结果存储在寄存器组360的各个寄存器中。
图5表示根据一个实施例的图1B中解析和封装引擎112中VLIW的高层次结构。但图5的高层次结构包括其它的部分,例如图3C所示的寄存器组360。参看图5,VLIW引擎包括6个槽402到412的每一个指令400的执行单元。具体地,M单元513执行M槽402指令,C单元511执行C槽404指令,T单元502执行T槽406指令,X单元501执行X槽408指令,A/B单元509执行A槽和B槽指令。通过使6槽操作中的每一个具有执行单元,多槽指令可以在执行循环中并行处理。
图5所示的结构实施例可以用于解析和封装操作,其中使用图3C寄存器组360中的寄存器。在一个实施例中,具有图5所示结构的单独VLIW引擎可用于解析包。在另一个实施例中,具有图5所示结构的单独VLIW引擎可用于将数据封装形成包。为了便于解释,图中的结构以单引擎代表。下面详细解释图5所示结构的操作。
在下面对图5所示的结构实施例的详细操作进行描述时,下面的标志具有以下的意思。标志“Imm(M)”、“Imm(X)”和“Imm(T)”是指分别输入M单元513、X单元501和T单元502的编程数值。标志“CHK”指校验和数值。M单元513是执行存储器或包缓冲存储器载入并存储操作的处理单元。M单元513用于处理M槽402操作,执行解析和封装功能。例如,M单元513可以用于执行这里详细描述的代表性微指令,用以执行解析和封装功能。为了执行解析功能,M单元513根据缓冲器指针寄存器364的信息从包缓冲存储器(未图示)接收数据,并根据CHK或Imm(M)输入将接收的数据存储在字段寄存器378。为了执行封装功能,M单元513根据缓冲器指针寄存器364的信息从字段寄存器378接收数据,并根据CHK或Imm(M)输入将数据存储在包缓冲存储器中。
C单元511是执行校验和计算操作的处理单元。C单元511用于处理这里所述的C槽404操作,执行校验和计算。在一个实施例中,C单元511是用于计算校验和数值的算术逻辑单元(ALU)。为了执行校验和计算,C单元511可以接收M单元513得到的数据以及字段寄存器378或暂存寄存器374的数据和校验和寄存器362的校验和数值,作为输入。C单元511将校验和计算的输出存储在校验和寄存器362中。并且,C单元511能找出与M单元513之间的载入路径或存储路径。例如,随着若干字节信息从M单元513载入或存储到M单元513,这些信息送入C单元511,从而提高处理效率。
T单元502是执行测试和比较操作的处理单元。T单元502用于处理T槽406的操作,如下所述。在一个实施例中,T单元502是执行测试和比较操作的ALU。为了执行测试和比较操作,T单元502接收暂存寄存器374的输出以及校验寄存器362存储的校验和数值,作为输入Imm(T)。T单元502将校验和数值与Imm(T)指示的预期数值或暂存寄存器374中的数值进行对比。对比的结果用于将标志存储于LGE寄存器372中,指示T单元502的结果小于、大于或等于预期的数值。LGE寄存器372中的标志位用于分支操作。
X单元501是执行数据取出和插入操作的处理单元。X单元用于这里所述的X槽408操作。在一个实施例中,X单元501是执行取出和插入操作的ALU。为了执行数据取出,X单元501接收字段寄存器378的数据、校验和(CHK)和Imm(X)值,作为输入。X单元501执行的操作结果临时存储在暂存寄存器374中或字段寄存器360中。存储在暂存寄存器374或字段寄存器360中的数据用于取出数据或将数据添加到包缓冲存储器。
A/B单元509是执行分支目标地址和触发操作的处理单元。A/B单元509用于处理这里所述的A槽410和B槽412的操作。在一个实施例中,A/B单元509接收分支程序寄存器368和微程序寄存器366中的数据或信息。A/B单元509根据LGE寄存器372中的比较标志,将基于分支程序寄存器368的分支微指令存储在微指令寄存器370中。例如如果比较的条件为真,产生分支,则A/B单元509将分支目标微指令存储到微指令寄存器366中,这将是解析和封装引擎112执行的下一个微指令。
在另一个实施例中,对于图5的结构实现中断机构,用以处理多个缓冲器的解析。在一个实施例中,这里所述的指令系统忽略包缓冲器的大小。载入和存储的包缓冲器的有效偏移(offset)是通过对缓冲器指针寄存器366Bp(存储器基址寄存器)增加偏移计算的。如果对于任何载入或存储的包缓冲器偏移超过包缓冲器的大小,可以触发异常或中断,使解析和封装引擎112以联接状态(CS)数据结构保存所有的有效状态,这可以包括在寄存器组360中。在这种情况下,在存储预中断状态之前从缓冲器指针寄存器364中的数值减去包缓冲器的大小。这样,缓冲器指针寄存器将包含负偏移。如果在存储状态之前从缓冲器指针寄存器364中减去新的包,则缓冲器指针寄存器364将包含负偏移。如果接收新的包缓冲器,CS数据结构的恢复状态重新进行载入或存储,引起异常或中断。包缓冲器的有效偏移现在是根据缓冲器指针寄存器364的数值。下面的表4表示微操作字段处理的作用。
                   表4
微操作字段   中断动作
    M槽   允许部分完成、重新启动和组合数据
    C槽   允许在中断时完成
    T槽   在中断时放弃执行,在重新启动时重新执行
    X槽   允许在中断时结束
    A槽   在中断时放弃执行,在重新启动时重新执行
    B槽   在重新启动D状态过程中存储T位并使用T位
图6表示根据一个实施例解析包的操作600的流程图。最初,操作600在操作602开始。
在操作602接收包。例如,包接收到路由器110的包缓冲存储器内。
在操作604,对于包内的每个协议报头,使用具有各个例行程序的模板解析包。例如,图5的结构可以从请求的例行程序接收指令,即从模板350接收指令,用以解析接收的包。
图7表示根据一个实施例封装操作700的流程图。最初,操作700开始于操作702。
在操作702存储有效负载数据。例如,有效负荷数据存储在包缓冲存储器中,用于将包传输到网络。
在操作704,对于每个被加入形成包的协议报头,使用具有各个例行程序的模板将有效负载数据封装。例如,图5的结构可以从请求的例行程序接收指令,即从模板350接收指令,将有效负载数据封装形成包用于传输。图8表示对图1的解析和封装引擎112编程的操作800的流程图。最初,操作800开始于操作802。
在操作802,下载新的例行程序。例如,新的例行程序可以通过网络服务器下载到路由器110。另外,连接到路由器110的外部设备可以下载新的例行程序。
在操作804,存储新的例行程序。例如,路由器110将新的例行程序存储在例行程序存储器300中。
在操作806,将新例行程序的请求加入到模板中。例如,模板350将新请求加入到新的例行程序中。这样,具有新请求的模板350用于使用新协议报头解析包,并将数据与新的协议报头封装。
上述协议包解析程序和封装程序的操作可以使用图5的代表性结构实现。例如,代表性结构可以用于执行附录中描述的代表性微操作。在这种结构中,操作被存储在存储设备中,例如嵌入随机存取存储器(RAM)。
对于另外的实施例,协议包解析程序和封装程序的操作可以用不连续的硬件或固件实现。例如,一个或多个专用集成电路(ASIC)可以编程执行上述的解析和封装操作。在另一个实施例中,解析和封装操作可以在另外电路板上的一个或多个ASIC实现,电路板可以插入上述的路由器。在另一个实施例中,字段可编程门阵列(FPGA)或静态可编程门阵列(SPGA)可以用于实现上述的解析和封装的操作。在再一个实施例中,组合使用硬件和软件可用于实现上述的冗余操作。
这样,描述了可编微程序的协议包解析程序和封装程序。在上面的描述中,参考特殊的代表性实施例描述了本发明。但是很明显,在不偏离权利要求限定的本发明宽广的精神和范围的情况下,可以做出多种修改和变化。因此,说明书和附图是用作说明的目的,而不是限定的目的。
                                    附录
                              (代表性微操作槽说明)
                                 M槽微操作系统
类别 助记忆 Src  Dest
Nop
 Nop
 Halt
缓冲器指针Mgmt
 Add_Bp Rm Rm,Bp  Bp
 Add_Bp_I Imm Imm  Bp
 Sub_Bp,Rm Rm,Bp  Bp
 Sub_Bp_I,Rm Imm  Bp
 Sub_Bp,Rm Rm  Bp
 Sub_Bp_I,Rm Imm  Bp
 Sub_Bp,Rn Bp  Rn
载入(PostIncrement)
Load8@(bp)+,Rn Bp,Mem  Rn
Load16@(bp)+,Rn Bp,Mem  Rn
Load32@(bp)+,Rn Bp,Mem  Rn
载入(Immediate)
Load8_I@(<offset>,bp)+,Rn Imm,Bp,Mem  Rn
Load16_I@(<offset>,bp)+,Rn Imm,Bp,Mem  Rn
Load32_I@(<offset>,bp)+,Rn Imm,Bp,Mem  Rn
载入(Register)
Load8_R@(Rm,bp),Rn Imm,Bp,Mem  Rn
Load16_R@(Rm,bp),Rn Imm,Bp,Mem  Rn
Load32_R@(Rm,bp),Rn Imm,Bp,Mem  Rn
存储(PreDecrement)
 Store8 Rm,@-(bp) Rm,Bp  Mem
 Store16 Rm,@-(bp) Rm,Bp  Mem
 Store32 Rm,@-(bp) Rm,Bp  Mem
存储(Immediate)
 Store8_I Rm,@(<offset>,bp) Imm,Rm,Bp  Mem
 Store16_I Rm,@(<offset>,bp) Imm,Rm,Bp  Mem
 Store32_I Rm,@(<offset>,bp) Imm,Rm,Bp  Mem
 Store16 Chk I@(<offset>,bp) Imm,Chk,Bp  Mem
存储(Register)
 Store8 Rm,@(Rn,bp) Rm,Rn,Bp  Mem
 Store16 Rm,@(Rn,bp) Rm,Rn,Bp  Mem
 Store32 Rm,@(Rn,bp) Rm,Rn,Bp  Mem
                                      X槽微操作系统
类别 助记忆  Src  Dest
Nop
 Nop
移动
 Mov Rm,Rn  Rm  Rn
 Mov_I<value>,Rn  Imm  Rn
 Mov_C<index>,Rn  Const  Rn
条件移动
 Cmov.e Rm,Rn  Rm,LGE  Rn
 Cmov.ne Rm,Rn  Rm,LGE  Rn
 Cmov_I.e<value>,Rn  Imm,LGE  Rn
 Cmov_I.ne<value>,Rn  Imm,LGE  Rn
 Cmov_C.e<index>,Rn  Const,LGE  Rn
 Cmov_I.ne<value>,Rn  Const,LGE  Rn
取出
 Extract4.k Rm,Rn(k=0,1,2,...,7)  Rm  Rn
 Extract8.k Rm,Rn(k=0,1,2,3)  Rm  Rn
 Extract16.k Rm,Rn(k=0,1)  Rm  Rn
插入
 Insert4.k Rm,Rn(k=0,1,2,...,7)  Rm,Rn  Rn
 Insert8.k Rm,Rn(k=0,1,2,3)  Rm,Rn  Rn
 Insert16.k Rm,Rn(k=0,1)  Rm,Rn  Rn
校验寄存器存取
 Rstore_Chk Rn  Chk  Rn
运算
 Add Rm,Rn  Rm,Rn  Rn
 Add_I<value>,Rn  Imm,Rn  Rn
 Sub Rm,Rn  Rm,Rn  Rn
 Sub_I<value>,Rn  Imm,Rn  Rn
逻辑
 Or Rm,Rn  Rm,Rn  Rn
 Or_I<value>,Rn  Imm,Rn  Rn
 And Rm,Rn  Rm,Rn  Rn
 And_I<value>,Rn  Imm,Rn  Rn
 Xor Rm,Rn  Rm  Rn
 Xor_I<value>,Rn  Imm,Rn  Rn
 Set<position>,Rn  Imm,Rn  Rn
 Clr<position>,Rn  Imm,Rn  Rn
移位
 Lshift1 Rn  Rn  Rn
 Lshift2 Rn  Rn  Rn
 Lshift8 Rn  Rn  Rn
 Rshift1 Rn  Rn  Rn
 Rshift2 Rn  Rn  Rn
 Rshift8 Rn  Rn  Rn
                       C槽微操作系统
类别 助记忆 Src  Dest
校验和初始化
Lchk L input  Chk
Schk S input  Chk
Rchk R input  Chk
校验和累加
Lchk_acc L input,Chk  Chk
Schk_acc S input,Chk  Chk
Rchk_acc R input,Chk  Chk
               T槽微操作系统
类别 助记忆 Src  Dest
 Nop
Nop
比较
Cmp Rn,Rm  Rm,Rn  LGE
Cmp_I Imm,Rm  Rm,Imm  LGE
Cmp_Chk Rm  Chk,Rm  LGE
测试
Test_I Imm,Rm  Rm,Imm  LGE
                     A槽微操作系统
类别 助记忆 Src  Dest
 Nop
 Nop
载入目标地址
 Bra<label> Imm  BrPC
 Bra_Next_protocol Template  BrPC
               B槽微操作系统
类别 助记忆  Src Dest
分支触发
 Br.e  BrPC,LGE μPC
 Br.ne  BrPC,LGE μPC
 Br.l  BrPC,LGE μPC
 Br.le  BrPC,LGE μPC
 Br.g  BrPC,LGE μPC
 Br.ge  BrPC,LGE μPC
 Jmp  BrPC μPC
                   代表性微操作说明
Add_Bp Rm
将Bp指令加到寄存器  M槽
Bp←Bp+Rm1
1.来自Rm的低字节字节,Bp=1字节
Add_Bp_I<Imm>
将Bp指令加上Immediate M槽
1.(Imm=1字节,Bp=1字节)
Add Rm,Rn
累加指令  X槽
Rn←Rn+Immediate1
1.4字节操作
Add_I<Imm>,Rn
累加Immediate指令  X槽
Rn←Rn+Immediate1
1.Immediate=1字节,Rn=4字节
And Rm,Rn
逻辑和指令  X槽
Rn←Rn & Rm1
1.Imm=1字节,Rn=4字节
And_I<Imm>,Rn
逻辑和Immediate指令  X槽
Rn←Rn & Immediate1
1.Immediate=1字节,Rn=4字节
Br.e
相等触发指令分支  B槽
If(E)μPC←BrPC
Br.g
大于触发指令分支    B槽
If(G)μPC←BrPC
Br.ge
大于或等于触发指令分支    B槽
If(G\\E)μPC←BrPC
Br.l
小于触发指令分支    B槽
If(L)μPC←BrPC
Br.le
小于或等于触发指令分支    B槽
If(L\\E)μPC←BrPC
Br.ne不等于触发指令分支    B槽
If(~E)μPC←BrPC←
Bra<Imm>
分支地址指令    A槽
BrPC←Immediate
Bra_Next_Protocol
分支到下一个协议    B槽
BrPC←f(template[next_protocol])1,2
1.下一个协议等于=在连接状态下将指针加入到协议链模板内。
2.f=从协议id到微程序存储进入点的协议地图功能。(左移位结构位数)
Clr.k Rn(k=0,1,...,31)
清除位指令    X槽
Rn←Rn &(~(0x1<<k))
Cmov.e Rm,Rn等于指令时条件移动    X槽
If(~E)Rn←Immediate1
1.4字节操作
Cmov_I.e<Imm>,Rn
不等于指令时条件移动    X槽
If(E)Rn←Immediate1
1.4字节操作
Cmov_I.e<Imm>,Rn
等于指令时条件移动Immediate   X槽
If(E)Rn←Immediate1
1.Rn中的低字节(字节3)得到数据,其它3个字节清零
Cmov_I.ne<Imm>,Rn
不等于指令时条件移动Immediate X槽
If(~E)Rn←Immediate1
1.Rn中的低字节(字节3)得到数据,其它个字节清除
Cmov_C.ne<Index>,Rn
等于指令时条件移动constant X槽
If(E)Rn←ConstantTable[index]Cmov_C.ne<Index>,Rn
不等于指令时条件移动constant X槽
If(~E)Rn←ConstantTable[index]
Cmp Rm,Rn
比较指令    T槽
If(Rn==Rm)E←true1
If(Rn>Rm)G←true
If(Rn<Rm)L←true
1.32位比较操作
Cmp_I<Imm>,Rm
比较Immediate指令  T槽
If(Rm==Immediate)E←true1
If(Rm>Immediate)G←true
If(Rm<Immediate)L←true
1.8位比较指令(Rm中低位字节,字节3,具有Immediate)
Cmp_Chk Rm
比较校验和寄存器  T槽
If(Rm==Chk)E←true1
If(gm>Chk)G←true
If(Rm<Chk)L←true
1.16位比较操作(Rm中低位字节,字节2和3,具有Immediate)
Extract4.k Rm,Rn(k=0,1,2,3,4,5,6,7)
取出半字节指令  X槽
Rn←((Rm>>(7-k)*4)&0xF)1
1.半字节插入最不重要位置(位3:0),其它3.5字节在目的地清除
Extract8.k Rm,Rn(k=0,1,2,3)
取出字节指令   X槽
Rn←((Rm>>(3.k)*8)&0xFF)1
1.1字节插入最不重要位置(字节3),其它3字节在目的地清除
Extract16.k Rm,Rn(k=0,1)
取出双字节指令  X槽
Rn←((Rm>>(1-k)*16)&0xFFFF)1
1.2字节插入最不重要位置(字节2和3),其它2字节在目的地清除
Halt
中止指令  M槽
结束处理
Insert4.k Rm,Rn(k=0,1,2,3,4,5,6,7)
插入半字节指令    X槽
Rn←((Rn &(~0xF<<((7-k)*4)))|((Rm & 0xF)<<((7-k)*4)))1
1.半字节插入半字节位置k,其它3.5字节保持不变
Insert8.k Rm,Rn(k=0,1,2,3)
插入字节指令    X槽
Rn←((Rn &(~0xF<<((3-k)*8)))|((Rm & 0xF)<<((3-k)*8)))1
1.1字节插入字节位置k,其它3字节保持不变
Insert16.k Rm,Rn(k=0,1)
插入双字节指令    X槽
Rn←((Rn &(~0xF<<((3-k)*8)))|((Rm & 0xF)<<((3-k)*8)))1
1.2字节插入双字节位置k,其它2字节保持不变
Jmp
Jump指令    B槽
μPC←BrPC
Lchk
载入数据的校验和    C槽
Chk←低8位+高8位
1.增加补码(互联网校验和算法)
Lchk_acc
累加载入数据的校验和    C槽
Chk←Chk+低8位+高8位
Load8@(bp)+,Rn
载入具有后增量寻址指令的字节  M槽
Rn←Memtory[Bp]1
Bp←Bp+1
1.1字节数据到达目的地寄存器最不重要的字节,其它字节清除,8位偏移
Load8  I@(<Imm>Bp),Rn
载入具有Immediate寻址指令的字节  M槽
Rn←Memtory[Immediate+Bp]1
1.字节数据到达目的地寄存器最不重要的字节,其它字节清除,8位偏移
Load8  R@(Rm,Bp)<Rn
载入具有寄存器寻址指令的字节  M槽
Rn←Memtory[Register+Bp]1
1.1字节数据到达目的地寄存器最不重要的字节,其它字节清除,8位偏移—仅仅使用地址寄存器最低字节
Load16@(Bp)+,Rn
载入具有后增量寻址指令的未调整双字节  M槽
Rn←Memtory[Rm+Bp]1,2
Rn←Bp+2←←←
1.16位数据到达目的地寄存器中的较低次序的两个字节,其它字节清除
2.字节调整的偏移
Load16@(<Imm>,Bp),Rn
直接载入未调整的双字节指令  M槽
Rn←Memtory[Immediate+Bp]1,2
1.16位数据到达目的地寄存器中的较低次序的两个字节,其它字节清除
2.字节调整的偏移
Load16@(<Imm>,Bp),Rn
直接载入未调整的双字节指令  M槽
Rn←Memtory[Immediate+Bp]1,2
1.16位数据到达目的地寄存器较低次序的两个字节,其它字节清除
2.字节调整的偏移
Load32@(<Imm>,Bp),Rn
直接载入未调整的四字节指令  M槽
Rn←Memtory[Immediate+Bp](32位)
Load32@(Bp)+,Rn
寄存器间接载入未调整的四字节指令  M槽
Bp←Bp+4
Lshift1 Rn
左移位1个指令  X槽
Rn←Rn<<1
Lshift2 Rn
左移位2个指令  X槽
Rn←Rn<<2
Lshift8 Rn
左移位8个指令  X槽
Rn←Rn<<8
Mov Rm,Rn
移动指令  X槽
Rn←Rm
Mov_C<Index>,Rn
移动constant指令  X槽
Rn←ConstantTable[Index](4字节)
Mov_I<Imm>,Rn
移动Immediate指令  X槽
Rn←Immediate
Nop
无操作指令    所有槽
无操作
Or Rm,Rn
或指令X槽
Rn←Rn or Rm(4字节)
Or_I<Imm>,Rn
或Immediate指令  X槽
Rn←Rn|Immediate(Immediate=1个字节,Rn=04个字节)
Rchk
X槽数据校验和  C槽
Chk←低位字节+高位字节1
1.One’s Completion Addition(互联网校验和算法)
Rchk_acc
累加X槽数据的校验和  C槽
Chk←Chk+低位字节+高位字节1
1.One’s Completion Addition(互联网校验和算法)
Rload_Bp Rm
载入存储器基址寄存器    X槽
Bp←Pm(低字节)
Rload_Bp_I<Imm>
将Immediate载入存储器基址寄存器  X槽
Bp←Immediate(1字节)
Rshift1 Rn
左移1个指令  X槽
Rn←Rn>>1
Rshift2 Rn
左移2个指令  X槽
Rn←Rn>>2
Rshift8 Rn
左移8指令  X槽
Rn←Rn>>8
Rstore_Bp,Rn
存储存储器基址寄存器  M槽
Rn←Bp(Rn的低字节得到Bp,其余字节清除)
Rstore_Chk,Rn
存储存储器基址寄存器  X槽
Rn←~Chk1,2
1.Rn的低2位字节得到Chk,其余字节清零
2.Rn得到Chk补码
Schk
计数数据校验和  C槽
Chk←低位字节+高位字节1
1.增加补码(互联网校验和算法)
Set.k Rn(k=0,1,...,31)
设定位指令  X槽
Rn←Rn|(0x1<<k)
Store8 Rm,@<Imm>
存储字节指令  M槽
存储器[Immediate+Bp]←Rm(8位)
Store16 Rm,@<Imm>
存储未调整的双字节指令  M槽
存储器[Immediate+Bp]←Rm(16位)
Store32 Rm,@<Imm>存储未调整的双字节指令  M槽
存储器[Immediate+Bp]←Rm(32位)
Sub_Bp Rm
从Bp指令中减去寄存器  M槽
Bp←Bp-Rm(来自Rm的低字节,Bp=1字节)
Sub_Bp_I<Imm>
从Bp指令中减去Immediate M槽
Bp←Bp-<Imm>(Imm=1字节,Bp=1字节)
Sub Rm,Rn
减法指令  X槽
Rn←Rn-Rm(4字节)
Sub_I<Imm>,Rn
减Immediate指令
Rn←Rn-Immediate(Imm=1字节,Rn=4字节)
Test_I<Imm>,Rm
相对伪指令测试寄存器  T槽
If((Rm & Immediate)==0)E←0 Else E←1
Xor Rm,Rn
Or指令  X槽
Rn←Rn^Rm(4字节)
Xor_I Rm,Rn
Xor_I Rm,Rn
或Immediate指令  X槽
Rn←Rn^Immediate(Immediate=1字节,Rn=4字节)

Claims (35)

1.一种用于可编程微控制器的方法,包括:
载入微控制器内的指令字,该指令字具有多个指令字段;以及并行处理多个指令字段,每个指令字段与解析包或将数据封装形成包的特定操作相关。
2.如权利要求1所述的方法,其中包包括一个或多个协议报头。
3.如权利要求2所述的方法,其中指令字从模板载入,该模板具有与每个协议报头相关的例行程序。
4.如权利要求3所述的方法,还包括
通过将新的例行程序加入到模板中,对微控制器进行编程。
5.如权利要求4所述的方法,其中新的例行程序与新的协议相关。
6.如权利要求1所述的方法,其中并行处理多个指令字段包括:
执行存储器载入和存储操作;
执行校验和计算操作;
执行测试和比较操作;
执行数据取出和插入操作;
执行分支目标地址操作;以及
执行分支触发操作。
7.一种可编程微控制器,包括:
嵌入存储器,用于存储一个或多个指令字,每个指令字包括多个指令字段;以及
一个或多个处理机,每个处理机并行处理每个指令字的多个指令字段,每个指令字段与解析包或将数据封装形成包的特定操作相关。
8.如权利要求7所述的可编程微控制器,其中包包括一个或多个协议报头。
9.如权利要求8所述的可编程微控制器,其中嵌入存储器存储模板,该模板具有与每个协议报头相关的例行程序。
10.如权利要求9所述的可编程微控制器,其中通过将新的例行程序加入模板中对子系统进行编程。
11.如权利要求10所述的可编程微控制器,其中新的例行程序与新的协议相关。
12.如权利要求7所述的可编程微控制器,其中每个处理机包括:
一个执行存储器载入和存储操作的执行单元;
一个执行校验和计算操作的执行单元;
一个执行测试和比较操作的执行单元;
一个执行数据取出和插入操作的执行单元;
一个执行分支目标地址操作的执行单元;以及
一个执行分支触发操作的执行单元。
13.如权利要求7所述的可编程微控制器,其中可编程微控制器是芯片上的系统。
14.一种可编程微控制器,还包括:
嵌入缓冲存储器,用于存储包或存储用于形成包的数据。
15.如权利要求7所述的可编程微控制器,其中指令字是基于超长指令字(VLIW)结构或者微编码结构。
16.一种可编程微控制器,包括:
嵌入缓冲存储器;
寄存器组;以及
与嵌入缓冲存储器和寄存器组连接的可编程处理电路,可编程处理电路包括多个执行单元,每个执行单元利用寄存器组并行执行指令内的操作,处理电路利用执行单元解析嵌入缓冲存储器中的包,取出数据;或者将嵌入缓冲存储器中的数据进行封装而形成包。
17.如权利要求16所述的可编程微控制器,其中寄存器组包括:校验和寄存器、缓冲器指针寄存器、微程序寄存器、分支程序寄存器、微指令寄存器、标志寄存器、或目录表。
18.如权利要求16所述的可编程微控制器,其中操作包括:存储器载入和存储操作、校验和操作、测试和比较操作、数据取出和插入操作、分支目标地址操作、或分支触发操作。
19.如权利要求18所述的可编程微控制器,其中所述执行单元中的一个执行单元执行存储器载入和存储操作、校验和操作、测试和比较操作、数据取出和插入操作、分支目标地址操作、或分支触发操作。
20.如权利要求16所述的可编程微控制器,还包括:
可编程模板,该模板存储多个例行程序,每个例行程序与不同类型的协议相关。
21.一种用于微控制器的指令,包括:
由微控制器并行处理的多个操作字段,每个操作字段与解析包或将数据封装形成包的特定功能相关。
22.如权利要求21所述的指令,其中操作字段包括:存储器载入和存储操作字段、校验和操作字段、测试和比较操作字段、数据取出和插入操作字段、分支目标地址操作字段、或分支触发操作字段。
23.如权利要求21所述的指令,其中每个操作字段与一组微指令相关。
24.如权利要求21所述的指令,其中指令在多个阶段中执行。
25.如权利要求24所述的指令,其中阶段包括:预取阶段、取出阶段、解码阶段、和执行阶段。
26.一种芯片上的系统内的模板,包括:
多个对例行程序的请求,每个例行程序与特定的协议相关,每个例行程序包括一个或多个指令,每个指令包括多个操作字段,这些操作字段被并行处理以解析包或将数据封装形成包。
27.如权利要求26所述的模板,其中特定的协议包括当前协议和新协议。
28.如权利要求26所述的模板,其中模板是可编程的,从而能加入新例行程序的请求。
29.如权利要求26所述的模板,还包括:
标识符,用于识别解析包或将数据封装形成包的例行程序。
30.如权利要求26所述的模板,其中模板存储在嵌入存储器中。
31.在具有芯片上的系统的路由器中,芯片上的系统用于解析包或将数据封装形成包,一种对芯片上的系统进行编程的方法,包括:
将用于新型协议的例行程序下载到芯片上的系统;
将下载的例行程序存储在芯片上的系统中;以及
将请求加入到存储在模板中的例行程序中,模板将例行程序捆绑在一起,用于解析包并取出数据,或者用于将数据封装形成包。
32.如权利要求31所述的方法,其中下载例行程序包括下载用于路由协议的例行程序。
33.如权利要求31所述的方法,其中下载例行程序包括从网络或外部设备下载例行程序。
34.如权利要求33所述的方法,其中从网络下载例行程序包括从互联网下载例行程序。
35.如权利要求31所述的方法,其中将请求加入到存储的例行程序中包括将请求加入到与新协议相关的存储的例行程序中。
CN02807586.2A 2001-03-30 2002-03-29 用于解析和封装包的方法、可编程微控制器和模板 Expired - Fee Related CN100468322C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/823,802 2001-03-30
US09/823,802 US7292586B2 (en) 2001-03-30 2001-03-30 Micro-programmable protocol packet parser and encapsulator

Publications (2)

Publication Number Publication Date
CN1500336A true CN1500336A (zh) 2004-05-26
CN100468322C CN100468322C (zh) 2009-03-11

Family

ID=25239764

Family Applications (1)

Application Number Title Priority Date Filing Date
CN02807586.2A Expired - Fee Related CN100468322C (zh) 2001-03-30 2002-03-29 用于解析和封装包的方法、可编程微控制器和模板

Country Status (6)

Country Link
US (1) US7292586B2 (zh)
EP (1) EP1374530A2 (zh)
CN (1) CN100468322C (zh)
AU (1) AU2002254453A1 (zh)
WO (1) WO2002080496A2 (zh)
ZA (1) ZA200307175B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107404493A (zh) * 2017-08-21 2017-11-28 广州快充网络有限公司 新能源汽车车辆数据报文解析组件及解析方法
WO2020087400A1 (zh) * 2018-10-31 2020-05-07 华为技术有限公司 一种报头解析装置及方法

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8005980B2 (en) * 2002-01-24 2011-08-23 Alcatel Lucent Method and apparatus for synchronizing redundant communication tasks
US8769154B2 (en) * 2002-01-24 2014-07-01 Alcatel Lucent Method and apparatus for facilitating routing protocol redundancy in a network element
US7769873B1 (en) 2002-10-25 2010-08-03 Juniper Networks, Inc. Dynamically inserting filters into forwarding paths of a network device
DE10260604B4 (de) * 2002-12-23 2006-09-21 Infineon Technologies Ag Multikanal-Prozessor
US7382769B1 (en) 2003-02-07 2008-06-03 Juniper Networks, Inc. Automatic filtering to prevent network attacks
US8078758B1 (en) * 2003-06-05 2011-12-13 Juniper Networks, Inc. Automatic configuration of source address filters within a network device
US7773596B1 (en) 2004-02-19 2010-08-10 Juniper Networks, Inc. Distribution of traffic flow criteria
US7577151B2 (en) 2005-04-01 2009-08-18 International Business Machines Corporation Method and apparatus for providing a network connection table
US20060221953A1 (en) * 2005-04-01 2006-10-05 Claude Basso Method and apparatus for blind checksum and correction for network transmissions
US7508771B2 (en) * 2005-04-01 2009-03-24 International Business Machines Corporation Method for reducing latency in a host ethernet adapter (HEA)
US7903687B2 (en) 2005-04-01 2011-03-08 International Business Machines Corporation Method for scheduling, writing, and reading data inside the partitioned buffer of a switch, router or packet processing device
US7606166B2 (en) 2005-04-01 2009-10-20 International Business Machines Corporation System and method for computing a blind checksum in a host ethernet adapter (HEA)
US7697536B2 (en) * 2005-04-01 2010-04-13 International Business Machines Corporation Network communications for operating system partitions
US7706409B2 (en) 2005-04-01 2010-04-27 International Business Machines Corporation System and method for parsing, filtering, and computing the checksum in a host Ethernet adapter (HEA)
US7492771B2 (en) 2005-04-01 2009-02-17 International Business Machines Corporation Method for performing a packet header lookup
US7586936B2 (en) 2005-04-01 2009-09-08 International Business Machines Corporation Host Ethernet adapter for networking offload in server environment
US7881332B2 (en) 2005-04-01 2011-02-01 International Business Machines Corporation Configurable ports for a host ethernet adapter
US7958436B2 (en) * 2005-12-23 2011-06-07 Intel Corporation Performing a cyclic redundancy checksum operation responsive to a user-level instruction
US7925957B2 (en) 2006-03-20 2011-04-12 Intel Corporation Validating data using processor instructions
US7793071B2 (en) * 2007-06-28 2010-09-07 Intel Corporation Method and system for reducing cache conflicts
US20090070487A1 (en) * 2007-09-07 2009-03-12 Reed Coke S Method and device for distributing data across network components
EP2096832A1 (en) 2008-02-28 2009-09-02 Deutsche Thomson OHG Reconfigurable hardware-based parser for packet-oriented protocols
US8291058B2 (en) * 2010-02-19 2012-10-16 Intrusion, Inc. High speed network data extractor
US10031782B2 (en) 2012-06-26 2018-07-24 Juniper Networks, Inc. Distributed processing of network device tasks
US10193801B2 (en) 2013-11-25 2019-01-29 Juniper Networks, Inc. Automatic traffic mapping for multi-protocol label switching networks
EP4099644A1 (en) * 2021-06-03 2022-12-07 Huawei Technologies Co., Ltd. Packet processing method and related apparatus

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805808A (en) * 1991-12-27 1998-09-08 Digital Equipment Corporation Real time parser for data packets in a communications network
US5717908A (en) * 1993-02-25 1998-02-10 Intel Corporation Pattern recognition system using a four address arithmetic logic unit
GB9326476D0 (en) * 1993-12-24 1994-02-23 Newbridge Networks Corp Network
US5958044A (en) * 1997-01-24 1999-09-28 Texas Instruments Incorporated Multicycle NOP
US6157641A (en) * 1997-08-22 2000-12-05 Cisco Technology, Inc. Multiprotocol packet recognition and switching
US6172980B1 (en) * 1997-09-11 2001-01-09 3Com Corporation Multiple protocol support
US6160811A (en) * 1997-09-12 2000-12-12 Gte Internetworking Incorporated Data packet router
US6363380B1 (en) * 1998-01-13 2002-03-26 U.S. Philips Corporation Multimedia computer system with story segmentation capability and operating program therefor including finite automation video parser
US6289013B1 (en) * 1998-02-09 2001-09-11 Lucent Technologies, Inc. Packet filter method and apparatus employing reduced memory
US6157955A (en) * 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6367068B1 (en) * 1998-11-13 2002-04-02 Microsoft Corporation Dynamic parsing
US6920562B1 (en) * 1998-12-18 2005-07-19 Cisco Technology, Inc. Tightly coupled software protocol decode with hardware data encryption
US6453360B1 (en) * 1999-03-01 2002-09-17 Sun Microsystems, Inc. High performance network interface
US6356951B1 (en) * 1999-03-01 2002-03-12 Sun Microsystems, Inc. System for parsing a packet for conformity with a predetermined protocol using mask and comparison values included in a parsing instruction
US6789116B1 (en) * 1999-06-30 2004-09-07 Hi/Fn, Inc. State processor for pattern matching in a network monitor device
EP1236092A4 (en) 1999-09-01 2006-07-26 Intel Corp BRANCH COMMAND FOR A PROCESSOR
US7590644B2 (en) * 1999-12-21 2009-09-15 International Business Machine Corporation Method and apparatus of streaming data transformation using code generator and translator
US6629163B1 (en) * 1999-12-29 2003-09-30 Implicit Networks, Inc. Method and system for demultiplexing a first sequence of packet components to identify specific components wherein subsequent components are processed without re-identifying components
US6895494B1 (en) * 2000-06-26 2005-05-17 Texas Instruments Incorporated Sub-pipelined and pipelined execution in a VLIW

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107404493A (zh) * 2017-08-21 2017-11-28 广州快充网络有限公司 新能源汽车车辆数据报文解析组件及解析方法
WO2020087400A1 (zh) * 2018-10-31 2020-05-07 华为技术有限公司 一种报头解析装置及方法
CN112136108A (zh) * 2018-10-31 2020-12-25 华为技术有限公司 一种报头解析装置及方法

Also Published As

Publication number Publication date
WO2002080496A2 (en) 2002-10-10
CN100468322C (zh) 2009-03-11
EP1374530A2 (en) 2004-01-02
WO2002080496A3 (en) 2003-03-13
AU2002254453A1 (en) 2002-10-15
ZA200307175B (en) 2005-09-21
US7292586B2 (en) 2007-11-06
US20020198687A1 (en) 2002-12-26

Similar Documents

Publication Publication Date Title
CN1500336A (zh) 可编微程序的协议包解析程序和封装程序
CN1153155C (zh) 装有高效利用主处理器中的寄存器数据的协处理器的信息处理装置
CN1311377C (zh) 转寄信息封包的方法
CN1126030C (zh) 数据处理装置
CN1132098C (zh) 并行分布处理系统及其方法
CN1708017A (zh) 协议仿真器
CN1688966A (zh) 包括对准或者广播指令的多媒体协处理器控制机制
CN1405986A (zh) 第2层虚拟专用网络中继系统
CN1860441A (zh) 用于可重新配置环境中的高效高性能数据操作元件
CN1802818A (zh) 网络系统、学习桥式节点、学习方法及其程序
CN1485735A (zh) 指令调度方法、指令调度设备和指令调度程序
CN1251455C (zh) 路由器和通信网络系统
CN1890944A (zh) 用于web服务中介体的端口类型不可知的代理支持
CN101056262A (zh) 应用系统业务数据和网络数据的连接与交换方法
CN1313917C (zh) 数据处理装置以及数据处理方法
CN1832457A (zh) 数据包通信装置及功能扩展方法
CN1199414C (zh) 多频带数据通信设备及其通信方法
CN1624611A (zh) 可编程控制器、通信单元、变量解决方法和数据交接方法
CN1114153C (zh) 支持程序编码长度减小的微处理器
CN1960336A (zh) 一种实现灵活QinQ的方法及设备
CN101078994A (zh) 编译器装置、编译器方法和编译器程序
CN1491383A (zh) 使用协处理器的数据处理
CN1516001A (zh) 一种新型risc流水线微控制器构架及其操作方法
CN1406037A (zh) 分组处理器和分组处理器系统
CN100347668C (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
C56 Change in the name or address of the patentee
CP03 Change of name, title or address

Address after: American Texas

Patentee after: Nokia Oyj

Address before: American California

Patentee before: Nokia Oyj

C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20140326

Address after: Espoo, Finland

Patentee after: Nokia Oyj

Address before: American Texas

Patentee before: Nokia Oyj

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160111

Address after: Espoo, Finland

Patentee after: Technology Co., Ltd. of Nokia

Address before: Espoo, Finland

Patentee before: Nokia Oyj

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090311

Termination date: 20170329

CF01 Termination of patent right due to non-payment of annual fee