用于包的并行处理的包处理电路转让专利

申请号 : CN201280049622.2

文献号 : CN103858393B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 高登·J·布农

申请人 : 吉林克斯公司

摘要 :

一种包处理电路包含多个标头提取电路208-214)和耦合到所述多个标头提取电路的调度电路(206)。所述调度电路经配置以接收从具有多个数据巷道的数据总线(202)提取相应包的标头数据的一个或多个请求(302)。响应于每一请求,所述调度电路确定含有所述请求指定的相应标头的所述多个数据巷道的第一子集(304),且指派所述多个标头提取电路的相应一者以从所述多个数据巷道的所述第一子集提取相应标头数据(306)。

权利要求 :

1.一种包处理电路,其包括:

多个标头提取电路,其中每一个标头提取电路经耦合以接收数据总线的多个数据巷道的相应子集,且所述数据巷道的相应子集重叠;以及调度电路,其耦合到所述多个标头提取电路,所述调度电路经配置和布置以:接收从所述多个数据巷道提取相应包的标头数据的多个请求;以及响应于所述多个请求的每一请求:

确定含有所述请求指定的相应标头的所述多个数据巷道的第一子集;且指派所述多个标头提取电路的相应一者以从所述多个数据巷道的所述第一子集提取相应标头数据;

其中所述标头提取电路进一步经配置以并行地提取所述相应标头数据。

2.根据权利要求1所述的包处理电路,其中:

所述数据总线是N位数据总线;且

所述多个标头提取电路包含K个标头提取电路,其中K大于或等于可在所述数据总线上并行接收的包的最大数目。

3.根据权利要求2所述的包处理电路,其中:

每一数据巷道为Q位;

在所述N位数据中接收的数据包的标头的最大标头大小占据S个数据巷道;且数据巷道的所述第一子集包含L个数据巷道,L*Q等于可在所述数据总线上接收的最小大小数据包。

4.根据权利要求3所述的包处理电路,其中L=2,且针对标头提取电路i,1<=i<=K:对于i=1,标头提取电路i经配置以专门从数据巷道1到2+(S-1)接收数据,且接收来自在S个数据巷道上接收的先前字的数据;

对于1

5.根据权利要求4所述的包处理电路,其中所述调度电路经配置以响应于接收在数据巷道J,其中J

6.根据权利要求5所述的包处理电路,其中所述调度电路进一步经配置以响应于接收所有所需要的标头数据都未呈现在当前数据字中的请求而缓冲所述请求以供在后一数据字中处理。

7.根据权利要求3所述的包处理电路,其中L>2,且针对标头提取电路i,其中1<=i<=K:对于i=1,标头提取电路i经配置以专门从数据巷道1到3+S接收数据,且接收来自在S个数据巷道上接收的先前字的数据;

对于1

8.根据权利要求6所述的包处理电路,其中所述调度电路响应于接收在数据巷道J上接收的请求而进一步经配置以:对于J除以L的余数=2且J<(N/Q)以及包含包的开始的数据巷道J,向标头提取电路(J+

3L-3)/L指派所述请求;且

对于J除以L的余数=3以及包含包的结尾的数据巷道J,向标头提取电路(J+L-3)/L指派所述请求。

9.根据权利要求1所述的包处理电路,其进一步包括路由电路,所述路由电路经配置以响应于所述调度电路指派所述多个标头提取电路的一者以从所述多个数据巷道的所述第一子集提取所述标头数据而将来自所述数据总线的巷道的所述第一子集的数据路由到所述多个标头提取电路的所述所指派的一者。

10.根据权利要求1所述的包处理电路,其中所述请求的每一者指定包标头类型、包识别符和标头地址。

11.根据权利要求10所述的包处理电路,其中所述包标头提取电路的每一者经配置以响应于经指派以从数据巷道的所述第一子集提取标头数据而确定数据巷道的所述第一子集内的所述标头数据的偏移以及来自所述请求指示的所述包标头类型的所述标头数据的长度。

12.根据权利要求1所述的包处理电路,其中所述标头数据包含一个或多个标头字段的数据。

13.根据权利要求1所述的包处理电路,其中所述标头数据包含到相应标头字段的一个或多个指针。

14.根据权利要求1所述的包处理电路,其中所述调度电路经配置和布置以接收针对在所述数据总线上接收的每一字从所述数据总线提取相应包的标头数据的所述请求的集合。

说明书 :

用于包的并行处理的包处理电路

技术领域

[0001] 本发明的一个或多个实施例大体涉及通信协议,且更特定来说涉及用于操纵数据包的包处理器。

背景技术

[0002] 随着电信线路速率不断增加,有必要使用越来越宽的硬件数据总线来维持处理量。举例来说,在FPGA实施方案中,512位数据总线通常用于100Gb/s包处理,且2048位数据总线用于400Gb/s包处理。一个结果是,越来越有可能在并行横越数据总线的位集合中包含多个包。如本文所使用,经由数据总线的完全宽度并行发射的每一位集合称为字。
[0003] 作为一个实例,给定最小包大小为64字节,一些包可不完全包含在512位字中。第一数据包可在前一字中开始且在当前字中结束,且第二数据包可在当前字中开始且在后一字中结束。作为另一实例,单一2048位字可包含一个包的结束部分、三个完整包,以及另一包的开始部分。为维持所要水平的处理量,可需要并行硬件以在单一循环中处理多个包。然而,并行硬件在所要逻辑资源和功率消耗方面较昂贵。
[0004] 包处理硬件通常组织为管线。简单的解决方案采用包处理硬件的多个相同例项。如果一次可呈现最多K个包,那么用于提取标头信息和数据的包处理硬件被复制K次。
[0005] 一些先前解决方案实施多个管线,每一者经配置以从在数据总线上接收的字的任何偏移处接收和提取数据。举例来说,在一个并行化方法中,整个数据路径扇出为K个独立硬件管线。另一方法采用单一管线,每一级具有K个并行单元。尽管所有数据仍可能为所有单元使用,但仅存在单一数据路径,且并行单元可选择性地接进数据路径。在任一方法中,每一管线经配置以从所接收字的任何偏移处提取包的标头和数据字段。此类解决方案提供允许调度并行电路中的任一者来处理所接收的包集合中的任一包的灵活性。然而,这些解决方案在硬件要求方面可较昂贵。
[0006] 经由称为提取的过程将包的数据和/或标头字段与所接收字分离。提取涉及将数据的相关字段移出所接收的字。如果包字段可在所接收字内的任何偏移处开始,那么需要能够移位穿过整个所接收字的一般移位器。以上方法需要用于提取包的标头和数据字段的大量电路,这是因为每一管线必须能够从整个字中的任何偏移处提取相关位。这些方法在路由资源和功率消耗方面也较昂贵,因为许多冗余数据正发送到并行管线。
[0007] 一个或多个实施例可解决以上问题的一者或一者以上。

发明内容

[0008] 在一个实施例中,提供一种包处理电路。所述包处理电路包含多个标头提取电路和耦合到所述多个标头提取电路的调度电路。所述调度电路经配置以接收从具有多个数据巷道的数据总线提取相应包的标头数据的一个或多个请求。响应于每一请求,所述调度电路确定含有所述请求指定的相应标头的所述多个数据巷道的第一子集,且指派所述多个标头提取电路的相应一者以从所述多个数据巷道的所述第一子集提取相应标头数据。
[0009] 在一些实施例中,所述多个标头提取电路的每一者经耦合以从数据总线的所述多个数据巷道的相应第二子集接收数据,且针对被指派所述多个标头提取电路的相应一者以从其提取相应标头数据的所述多个数据巷道的每一第一子集,将所述多个数据巷道的第一子集包含在相应标头提取电路经耦合以接收的所述多个数据巷道的第二子集中。
[0010] 在一些实施例中,数据总线是N位数据总线;且所述多个标头提取电路包含若干(K个)标头提取电路,K大于或等于可在数据总线上并行接收的包的最大数目。每一数据巷道可为Q位。在N位数据中接收的数据包的标头的最大标头大小可占据S个数据巷道。数据巷道的第一子集可包含若干(L个)数据巷道,L*Q等于可在数据总线上接收的最小大小数据包。
[0011] 在一些实施例中,L可等于2,且针对标头提取电路i,1<=i<=K:对于i=1,标头提取电路i经配置以专门从数据巷道1到2+(S-1)接收数据,及接收来自在S个数据巷道上接收的先前字的数据;对于1
[0012] 在一些实施例中,L可大于2,且针对标头提取电路i(1<=i<=K):对于i=1,标头提取电路i经配置以专门从数据巷道1到3+S接收数据,且接收来自在S个数据巷道上接收的先前字的数据;对于1
[0013] 在一些实施例中,包处理电路进一步包含路由电路,其经配置以响应于调度电路指派所述多个标头提取电路的一者以从所述多个数据巷道的第一子集提取标头数据而将来自数据总线的巷道的第一子集的数据路由到所述多个标头提取电路的所指派的一者。
[0014] 在一些实施例中,所述一个或多个请求的每一者指定包标头类型、包识别符和标头地址。包标头提取电路的每一者可经配置以响应于经指派以从数据巷道的第一子集提取标头数据而确定数据巷道的第一子集内的标头数据的偏移以及来自所述请求指示的包标头类型的标头数据的长度。
[0015] 在一些实施例中,标头数据包含一个或多个标头字段的数据。在一些实施例中,标头数据包含到相应标头字段的一个或多个指针。在一些实施例中,调度电路经配置和布置以接收针对在数据总线上接收的每一字从数据总线提取相应包的标头数据的所述一个或多个请求的集合。
[0016] 在另一实施例中,提供一种管线包处理电路。所述管线包处理电路包含在管线中经配置和布置以缓冲从数据总线接收的字的多个存储器缓冲器,每一存储器缓冲器具有多个数据巷道。多个提取级布置在管线中且耦合到所述多个存储器缓冲器的相应者。每一提取级经配置以提取在存储器缓冲器的管线上缓冲的字的数据包的不同层级的标头。每一提取级包含多个包标头提取电路和一调度电路。所述调度电路经配置以接收从存储在存储器缓冲器的管线的对应一者中的字提取对应层级的相应包标头的一个或多个请求。对于每一请求,调度电路确定对应存储器缓冲器的含有所述请求指定的相应标头的数据巷道的第一子集。调度电路指派标头提取电路的相应一者以从对应存储器缓冲器的所确定的巷道的第一子集提取标头。
[0017] 在一些实施例中,管线化包处理器进一步包含耦合到存储器缓冲器的一者的包检测电路。包检测电路可经配置和布置以检测每一数据包的开始。响应于检测到包的开始,包检测电路可产生从存储在所述多个存储器缓冲器的第一者中的字提取对应包标头的请求,且将所产生的请求发射到所述多个提取级的第一者。
[0018] 在一些实施例中,管线化包处理器进一步包含耦合到提取级的相应一者的至少一个请求构建电路。每一请求构建电路可经配置和布置以:产生响应于相应提取级提取的指示包包含第二层级标头的信息提取包的第二层级标头的请求,且将所产生的请求发射到所述多个提取级的另一者。
[0019] 在又一实施例中,提供一种产生网络包处理电路的方法。输入描述包参数的规格。包参数包含数据总线宽度(N)、数据总线的数据巷道的巷道宽度(Q)、待经由数据总线接收的包的最小包大小,以及待经由数据总线接收的包的最大标头大小。基于包参数确定标头提取电路的数目(K)。基于包参数针对K个标头提取电路的每一者确定数据巷道的相应第一子集。产生电路规格,其描述具有K个标头提取电路、路由电路和耦合到所述K个标头提取电路的调度电路的包处理器。路由电路经配置以将来自数据巷道的每一相应子集的数据路由到所述K个标头提取电路的对应一者。调度电路经配置以接收从具有多个数据巷道的数据总线提取相应包的标头数据的一个或多个请求。响应于每一请求,调度电路确定含有所述请求指定的相应标头的所述多个数据巷道的第二子集,且指派所述多个标头提取电路的相应一者以从所述多个数据巷道的第二子集提取相应标头数据。第二子集包含在所述多个标头提取电路的所指派者的相应第一子集中。
[0020] 在一些实施例中,包参数包含最大标头深度(M),且电路规格描述包处理管线。包处理管线包含:M个缓冲器,其布置在管线中且经配置以针对在数据总线上接收的M个字缓冲数据总线的所述多个数据巷道;包处理器中的M者,包处理器的每一者经配置以从所述M个缓冲器的相应一者提取相应标头数据;以及M个请求产生电路,其耦合到所述M个包处理器的相应一者。每一请求产生电路可经配置以针对所述M个包处理器电路的对应一者产生所述一个或多个请求。
[0021] 将了解,在以下具体实施方式和所附权利要求书中陈述各个其它实施例。

附图说明

[0022] 在审查以下具体实施方式后且在参看图式后将了解本发明的各个方面和优点,图式中:
[0023] 图1展示根据一个或多个实施例的实例包处理管线;
[0024] 图2展示可用于实施图1所示的包处理管线的提取级的实例包处理电路;
[0025] 图3展示根据一个或多个实施例的用于提取数据包的标头的实例过程的流程图;
[0026] 图4说明根据一个或多个实施例的数据巷道子集到相应标头提取电路的实例路由;
[0027] 图5展示根据一个或多个实施例的可用于实施标头提取请求的调度的实例请求调度电路;
[0028] 图6展示根据一个或多个实施例的标头提取电路的实例实施方案;
[0029] 图7展示可用于实施图6展示的数据提取电路的实例电路;
[0030] 图8展示用于产生根据一个或多个实施例配置的数据包处理电路的过程的流程图;
[0031] 图9展示可经配置以实施根据一个或多个实施例的数据包处理电路的可编程集成电路;以及
[0032] 图10展示可经配置以实施本文描述的过程和功能的计算机架构。

具体实施方式

[0033] 一个或多个实施例提供用于包处理电路的在硬件上高效的并行架构。所述包处理电路包含多个标头提取电路,其用于处理在数据总线上接收的多个包的标头信息。数据总线划分为多个数据巷道。每一标头提取电路经配置以从数据巷道的相应子集接收和提取标头信息。因为每一提取电路仅接收数据巷道的一子集,所以需要较少路由电路,且每一提取电路执行的提取可使用较小移位电路来实施。
[0034] 图1展示根据一个或多个实施例配置的实例包处理管线100。接口电路124接收并在N字节存储器缓冲器的管线中缓冲来自N字节数据总线102的字。对于所接收的每一字,所述字存储在第一存储器缓冲器中,且先前接收的字被沿着存储器缓冲器的管线传递以供各个提取级108、114和120存取。
[0035] 每一包可包含标头的堆栈,直到最大标头层级深度M。在此实例中,管线包含M个提取级(108、114和120),用于从标头堆栈的多个层级提取标头信息,每一级处理标头堆栈中的一个标头。管线可具有少于M个级,其中每一级处理一个或多个连续标头。
[0036] 对于经由数据总线102接收的每一字,包开头(SOP)检测电路104产生提取在字中检测到的每一包的标头信息的请求。所述包是基于与字相关联的SOP数据检测的。提取请求被发送到第一提取级108,其经配置以从在接口电路124中缓冲的字提取对应于提取请求的每一者的标头信息。
[0037] SOP检测电路104产生的提取请求指示待提取的所要标头信息位于所接收的数据字内何处。标头提取请求可以多种替代格式实施,所述格式可包含各种数据值以指示包的待提取的标头信息。在此实例中,每一提取请求包含所请求标头在所接收字中开始于的偏移处以及标头格式指示符,其可用于确定标头内各个字段的位置。所述请求还可包含包识别符,其经选择为在至少两个连续字循环内为唯一的。包识别符可在所述多个提取级的每一者中用于识别对应于包的标头信息。
[0038] 每一提取级包含多个标头提取电路(未图示),针对可包含在所接收字中的最大数目的包的每一包有一个标头提取电路。对于所接收的每一提取请求,提取级经配置以指派所述多个标头提取电路的相应一者以提取所请求的标头信息。所提取的标头信息数据可包含(例如)各个标头字段的数据或参考所请求标头的各个标头字段的指针数据。
[0039] 来自每一提取级的所提取标头信息经输出以供例如数据处理电路122进一步处理。数据处理电路122使用所提取的标头字段值和指针以供进一步包处理。依据包的标头层级深度,所述包可需要由管线中的一个或多个额外提取级114和120处理。所述额外提取级提取包的标头堆栈的嵌套层级的标头信息。在此实例中,管线包含在提取级之间的请求构建电路110和116以确定所述包是否含有标头堆栈的另一层级中的额外标头。如果是,那么产生请求且将其发射到下一提取级114或120。提取级114和120以类似于提取级108的操作的方式使用存储在接口电路124的存储器缓冲器的管线的对应者中的数据字操作。
[0040] 虽然主要参考对每一提取级中的包的单一标头层级的提取描述实例和实施例,但应认识到,如果外部逻辑没有必要决定在一个标头与下一标头之间的动作,那么可在一个级中提取标头堆栈的多个标头。
[0041] 图2展示可用于实施图1所示的包处理管线的提取级的实例包处理电路。包处理电路200包含数据总线接口电路204,其用于从具有多个Q字节数据巷道的N字节数据总线接收数据字。所述电路包含K个标头提取电路208、210、212和214,其每一者经配置以接收数据巷道的相应子集并从数据巷道的所述子集的一者或一者以上提取标头信息。换句话说,每一提取电路经配置以从N字节总线的数据巷道的相应范围提取标头信息。标头提取电路的数目K等于可在单一N字节字中接收的最小大小包和包碎片的最大数目。因为每一提取电路仅接收数据巷道的子集,所以需要较少路由电路,且可使用较小移位电路实施提取。
[0042] 对于在数据总线202上接收的每一字,调度器电路206接收从所接收数据字中包含的相应包提取标头信息的提取请求的集合。对于每一提取请求,调度器电路确定字的哪些数据巷道被所指示的标头占据,且将提取请求指派到标头提取电路,所述标头提取电路的相应巷道子集包含对应于提取请求的所确定的数据巷道。在此实例中,通过将请求转发到所指派的标头提取电路而执行提取请求向标头提取电路的指派。然而,应认识到,一些实施例可在转发之前调整提取请求的格式,或可以其它方式指导所指派的标头提取电路提取所请求的标头信息。
[0043] 图3展示用于提取在数据总线上接收的数据包的标头的实例过程的流程图。可使用图2所示的包处理电路实施所述过程。在框302处,基于从数据总线接收的字输入标头提取请求(ER)。对于每一提取请求,在框304处确定字的含有提取请求指示的标头的数据巷道的子集。在框306处将每一提取请求指派到所述多个标头提取电路的相应一者。在框308处将数据巷道的每一子集的数据发射到标头提取电路的相应一者。在框310处使用所指派的标头提取电路从数据巷道的子集提取标头数据。
[0044] 应理解,路由到标头提取电路的数据巷道的相应子集并不互斥,因为标头可跨越数据巷道的边界。如果数据巷道被均匀地划分为互斥的子集,那么不同标头提取电路无法并行处理参考同一子集的多个标头提取请求。为了确保可并行处理提取请求,路由到相邻标头提取电路的数据巷道的相应子集重叠以在调度所接收标头提取请求的过程中提供某一灵活性。此重叠允许执行调度使得针对在数据总线202上接收的每一字向每一标头提取电路指派至多一个提取请求。
[0045] 图4说明根据一个或多个实施例的数据巷道子集到相应标头提取电路的实例路由。标头提取电路的数目和数据巷道402的路由(其可确保标头提取电路404可并行处理所有标头提取请求)取决于若干架构参数,包含最小大小的包所占据的巷道(L)的数目,和最大大小(H)的标头占据的数据巷道(S)的数目。
[0046] 为便于说明,本文主要参考从N字节数据总线路由到多个标头提取电路404的N/Q数据巷道描述实例和实施例,其中数据巷道为Q字节,S=2个巷道且L=2个巷道。
[0047] 一般来说,N/Q数据巷道可分割为互斥的群组,其经指派且路由到标头提取电路,如实线箭头展示。标头提取电路1经配置以接收数据巷道1和2,中间标头提取电路2到K-1的每一者经配置以接收L数据巷道,且标头提取电路K经配置以接收任何剩余数据巷道。在此实例中,在L=2的情况下,N/Q数据巷道均匀划分为各自具有2个数据巷道的互斥群组。
[0048] 通过路由额外数据巷道而提供数据巷道的子集的重叠,如虚线箭头展示。为便于说明,具有实线箭头的路由到标头提取电路的数据巷道可称为标头提取电路的默认数据巷道,且具有虚线箭头的路由到标头提取电路的额外数据巷道可称为标头提取电路的非默认数据巷道。重叠的量由参数S和L确定。在L=2的情况下,每一标头提取电路接收:S-1个非默认数据巷道,其是路由到上方的相邻标头提取电路(如果可用)的默认巷道;以及1个非默认数据巷道,其是路由到下方的相邻标头提取电路(如果可用)的默认巷道。
[0049] 由于以上路由的缘故,标头提取电路1从数据巷道1到2+(S-1)接收数据。每一中间标头提取电路i从数据巷道2*i-2到2*i+(S-1)接收数据。标头提取电路K从数据巷道2*K、2*K-1和2*K-2接收数据。
[0050] 应认识到,标头可跨越两个或两个以上连续字。在此类情况下,直到在接下来的字中接收到更多数据才可从标头提取数据。提供缓冲器巷道410和412以缓冲先前字的最后S个数据巷道。如果接收不完整的标头,那么当在后续字中接收到标头的最后部分时可由标头提取电路1处理先前巷道。
[0051] 在其中L=2的实例中,可根据默认数据巷道的以上指派和对应包的结尾的位置调度提取请求以供标头提取电路处理。如果指派到标头提取电路的最高默认巷道(如实线箭头指示)不含有包的末尾,那么调度数据巷道上接收的任何请求以供上方相邻标头提取电路处理。否则,调度所述请求以供被指派得到含有所述请求的数据巷道作为默认数据巷道的标头提取电路处理。
[0052] 从数值上来说,对在于数据巷道J上接收的请求,在J
[0053] 对于实施L>2的架构,除了以上默认数据巷道外,标头提取电路1还接收一个额外非默认数据巷道,其也由标头提取电路2接收,且每一中间标头提取电路从上方相邻标头提取电路(如果可用)接收S+1个额外非默认数据巷道。标头提取电路2到K的每一者还从下方相邻标头提取电路接收额外非默认数据巷道。
[0054] 由于数据巷道的默认和非默认路由的缘故,标头提取电路1从数据巷道1到S+3接收数据。每一中间标头提取电路i从数据巷道L*(i-2)+2到L*(i-1)+(S+3)接收数据。标头提取电路K从数据巷道L*(K-2)+2到N/Q接收数据。
[0055] 对于L>2实施方案,可基于请求的数据巷道以及对应包的开始/结束调度提取请求以供标头提取电路404处理。举例来说,如果底部或中间标头提取电路的最高默认数据巷道含有包的开始,那么将在所述巷道上接收的任何请求指派到上方相邻标头提取电路以供处理。如果中间或顶部标头提取电路的最低默认数据巷道含有包的结尾,那么将在所述巷道上接收的任何请求指派到下方相邻标头提取电路。
[0056] 从数值上来说,对于在数据巷道(J)上接收的请求,如果J除以L的余数=2(J mod L=2),J<(N/Q)且数据巷道J包含包的开始,那么将请求指派到标头提取电路(J+3L-3)/L。如果J除以L的余数=3(J mod L=3)且数据巷道J包含包的结尾,那么将请求指派到标头提取电路(J+L-3)/L。
[0057] 图5展示根据一个或多个实施例的可用于实施标头提取请求的调度的实例请求调度电路。如参看图2描述,请求调度电路针对在数据总线上接收的每一字接收提取请求的集合。请求调度电路500包含多个巷道指派电路502、504、506和508。巷道指派电路的每一者经配置以接收提取标头的请求且确定数据总线的哪些数据巷道含有请求所指示的标头。
[0058] 请求调度电路500包含多个调度器电路520到528,其包含对应于数据总线的每一数据巷道的一个调度器电路。经由请求交换开关510从巷道指派电路502-508的一者向对应于请求所指示的标头开始于的数据巷道的调度器电路路由每一提取请求。
[0059] 调度器电路520到528将提取请求指派到标头提取电路,如上文参看图4描述。由调度器电路520到528针对在数据总线上接收的每一字调度提取请求。然而,如参看图4描述,所有必要的标头信息可能并非在一个字中可用。举例来说,包标头可在当前字中开始但继续到后一字中。在此类情形中,调度电路经配置以在请求缓冲器512中缓冲对应的标头提取请求,直到接收到后一字为止。在调度完成之后,将提取请求从调度器电路经由请求交换开关530路由到所指派的标头提取电路。
[0060] 图6展示图4所示的标头提取电路的一者的例项的实例实施方案。标头提取电路602经配置以根据所接收的标头提取请求从数据巷道的子集接收和提取标头信息。在此实施方案中,请求包含指示标头在字中何处开始的基准地址(a)、指示标头中包含的字段的放置和格式的格式号(r),以及对应数据包的包ID(p)。
[0061] 标头提取电路602包含若干字段数据提取电路606到608和若干字段指针计算电路610到612。字段数据提取电路经配置以提取相应标头字段的数据,且字段指针计算电路经配置以确定到相应标头字段的指针。取决于实施方案,可相对于标头中的偏移或相对于字中的偏移来确定到相应标头字段的指针。
[0062] 字段数据提取电路和字段指针计算电路的每一者对由标头提取电路中指示的格式号r确定的不同字段操作。
[0063] 在此实例中,数据提取电路606到608被描绘为输出32位字段数据,且指针计算电路610到612被描绘为输出t位指针。仅出于说明的目的提供这些数据值。数据提取电路606到608和指针计算电路610到612的数目以及所输出标头字段和指针的长度是架构参数,其可根据标头提取电路经配置以处理的标头格式进行调整。
[0064] 在一个实施例中,标头提取电路602包含预处理电路604,其根据提取请求指示的标头基准地址a从数据巷道的输入子集选择具有所请求的标头信息的所接收数据巷道的一部分(w位)。在一些其它实施例中,不实施预处理电路,且在标头提取电路602外部的路由电路(未图示)可经配置以动态地仅将具有所请求标头信息的数据巷道路由到标头提取电路602。在又一实施例中,数据提取电路606到608和字段指针计算电路610到612可经配置以从所接收的数据巷道子集620提取相应的标头字段。子集620中包含的数据巷道取决于架构参数L和S以及包处理电路中提取电路的位置,如上文参看图4论述。
[0065] 图7展示可用于实施图6所示的数据提取电路的实例电路。如上所述,包标头可包含取决于包标头的格式处于不同偏移的不同数目的字段。将格式号r输入到数据提取电路和字段指针计算电路。数据提取电路接收格式号r,其指示协议和待提取的标头字段。控制指令电路包含配置有微代码的存储器,所述微代码指导电路702如何针对可由包处理电路处理的每一标头格式r提取字段数据。响应于输入的格式号r,控制指令电路704确定所请求字段从标头的开始的位偏移和所请求字段的位长度。出于说明的目的,位偏移和位长度分别被描绘为6和8位。将进一步认识到,控制指令电路704输出的位偏移和位长度取决于电路702经配置以处理的可能的标头格式。将此信息与标头基准偏移a组合以从所接收数据提取所请求字段信息。图6所示的指针计算电路610到612可以类似布置实施以确定所要字段的位偏移且跟据标头偏移和字段偏移计算到字段的指针。
[0066] 参看图2,认识到,标头提取电路可使用字段数据提取电路702中的相同微代码实施,使得所有包接收相同处理。或者,标头提取电路可配置有不同微代码集合。举例来说,网络应用程序可经配置以发射具有等于字大小的固定包大小的ATM数据包,以及具有可变大小的TCP/IP包。如果网络经配置以始终发射那一个字中的ATM包,那么标头将始终由第一标头提取电路处理。因此,仅第一标头提取电路需要配置有微代码来处理ATM包。同样,当如图1所示实施多个提取级时,可在不同提取级中使用不同微代码集合来处理不同标头层级。微代码可存储在可写入控制存储装置中,其允许标头提取电路的运行时更新。这允许针对特定标头格式的规则的添加、修改和移除。
[0067] 在一个或多个实施例中,软件设计工具可经配置以产生和配置如上所述的网络数据包处理电路。图8展示用于产生网络数据包处理电路设计的过程的流程图。在框802处,输入描述可能的包参数的规格。在此实例实施方案中,包参数包含数据总线的宽度N、数据巷道宽度Q、最小包大小M和最大包标头大小H。在框804处基于包参数确定针对可在数据总线上并行接收的最大数目数据包提取标头信息所需的标头提取电路的数目K。在框806处基于如参看图4描述的包参数针对K个标头提取电路的每一者选择数据总线的数据巷道的相应子集。
[0068] 在框808处产生硬件描述语言(HDL)电路设计规格,例如Verilog或VHDL。所述电路设计规格描述具有K个标头提取电路的包处理器、将数据巷道的每一选定子集路由到对应的标头提取电路的路由电路,以及包调度电路。如上所述,调度电路确定含有请求所指定的相应标头的数据巷道的第二子集,且指派所述多个标头提取电路的相应一者以从所述多个数据巷道的第二子集提取相应标头数据。标头提取电路经指派使得第二子集包含在对应于所指派标头提取电路的第一子集中,且使得针对在数据总线上接收的每一字向每一标头提取电路指派至多一个提取请求。标头提取电路和/或调度电路可根据预定义电路设计规格描述或构建。举例来说,可通过根据包参数和可能标头格式的集合实例化若干预定义模块(例如,字段数据提取电路702)而产生每一标头提取电路。
[0069] 图9是根据各个实施例的可经配置以实施包处理器的实例可编程集成电路的框图。图9所示的可编程集成电路称为现场可编程门阵列(FPGA)。如先前描述的包处理电路可实施在FPGA的可编程逻辑和互连资源上。
[0070] FPGA可在阵列中包含若干不同类型的可编程逻辑块。举例来说,图9说明FPGA架构(900),其包含大量不同可编程架构片(tile),包含多千兆位收发器(MGT 901)、可配置逻辑块(CLB 902)、随机存取存储器块(BRAM 903)、输入/输出块(IOB 904)、配置和时钟控制逻辑(CONFIG/CLOCK 905)、数字信号处理块(DSP 906)、专门输入/输出块(I/O 907)(例如,时钟端口),以及例如数字时钟管理器、模/数转换器、系统监视逻辑等其它可编程逻辑908。一些FPGA还包含专用处理器块(PROC 910)以及内部和外部再配置端口(未图示)。
[0071] 在一些FPGA中,每一可编程架构片包含可编程互连元件(INT 911),其具有前往和来自每一邻近架构片中的对应互连元件的标准化连接。因此,可编程互连元件一起实施所说明FPGA的可编程互连结构。可编程互连元件INT911还包含前往和来自同一架构片内的可编程逻辑元件的连接,如图9的顶部处包含的实例所展示。
[0072] 举例来说,CLB 902可包含可配置逻辑元件CLE 912,其可经编程以实施用户逻辑加上单一可编程互连元件INT 911。除一个或多个可编程互连元件外,BRAM 903还可包含BRAM逻辑元件(BRL 913)。通常,包含在架构片中的互连元件的数目取决于架构片的高度。在图示的实施例中,BRAM架构片具有与五个CLB一样的高度,但也可使用其它数目(例如,四个)。除适当数目的可编程互连元件外,DSP架构片906还可包含DSP逻辑元件(DSPL 914)。除可编程互连元件INT 911的一个例项外,IOB 904还可包含(例如)输入/输出逻辑元件(IOL 
915)的两个例项。如所属领域的技术人员将明白,例如连接到I/O逻辑元件915的实际I/O垫是使用在各个所说明的逻辑块上方分层的金属制造,且通常不限于输入/输出逻辑元件915的区域。
[0073] 在图示的实施例中,裸片的中心附近的柱状区域(图9中用阴影展示)用于配置、时钟和其它控制逻辑。从此柱延伸的水平区域909用于在FPGA的范围中分布时钟和配置信号。
[0074] 利用图9中说明的架构的一些FPGA包含中断组成FPGA的大部分的规则柱状结构的额外逻辑块。所述额外逻辑块可为可编程块和/或专用逻辑。举例来说,图9所示的处理器块PROC 910跨越若干列CLB和BRAM。
[0075] 注意,图9希望仅说明示范性FPGA架构。列中逻辑块的数目、列的相对宽度、列的数目和排序、列中包含的逻辑块的类型、逻辑块的相对大小,以及图9的顶部处包含的互连/逻辑实施方案仅为示范性的。举例来说,在实际FPGA中,在CLB出现的任何地方通常包含多个邻近列的CLB,以便促进用户逻辑的有效实施。
[0076] 图10展示可经配置以实施本文描述的过程和功能的实例计算布置的框图。将了解,各种替代计算布置(包含一个或多个处理器和配置有程序代码的存储器布置)将适于代管所述过程和数据结构且实施不同实施例的算法。可经由多种计算机可读存储媒体或递送信道(例如,磁盘或磁带或者光盘或光带)、电子存储装置,或作为网络上的应用服务而存储和提供包括以处理器可执行格式编码的一个或多个实施例的过程的计算机代码。
[0077] 处理器计算布置1000包含耦合到主机总线1012的一个或多个处理器1002、时钟信号产生器1004、存储器单元1006、存储单元1008和输入/输出控制单元1010。布置1000可用在电路板上的单独组件实施,或可实施在集成电路内部。当实施在集成电路内部时,处理器计算布置另外称为微控制器。
[0078] 计算布置的架构取决于实施要求,如所属领域的技术人员将了解。处理器1002可为一个或多个通用处理器,或者一个或多个通用处理器与适宜的协处理器的组合,或者一个或多个专门处理器(例如,RISC、CISC、管线化等)。
[0079] 存储器布置1006通常包含多个层级的高速缓冲存储器和主存储器。存储布置1008可包含本地和/或远程持久存储装置,例如由磁盘(未图示)、快闪存储器、EPROM或其它非易失性数据存储装置提供。存储单元可为能够读取或能够读取/写入的。此外,存储器1006和存储装置1008可在单一布置中组合。
[0080] 处理器布置1002在存储装置1008和/或存储器1006布置中执行软件,从存储装置1008和/或存储器1006布置读取数据并将数据存储到存储装置1008和/或存储器1006布置,且经由输入/输出控制布置1010与外部装置通信。这些功能通过时钟信号产生器1004同步。
计算布置的资源可由操作系统(未图示)或硬件控制单元(未图示)管理。
[0081] 认为本发明的实施例适用于多种包处理器。所属领域的技术人员通过考虑说明书和实践本文揭示的发明将了解其它方面和实施例。所述实施例可实施为经配置以执行软件的一个或多个处理器,实施为专用集成电路(ASIC),或实施为可编程逻辑装置上的逻辑。希望将说明书和所说明的实施例仅视为实例,实施例的真实范围由所附权利要求书指示。