更新网络处理器缓存的项的制作方法

文档序号:6553992阅读:193来源:国知局
专利名称:更新网络处理器缓存的项的制作方法
更新网络处理器緩存的项背景技术网络通信系统经由 一个或多个路由器将分组中的信息从发射器 传送到接收器, 一个或多个路由器在网络内或网络之间的节点之间路 由分组。路由器可以包括处理这些分组并将其转发到不同目的地的一 个或多个网络处理器、以及存储网络处理器使用的项(例如节点配置数 据、分组队列和流配置数据等)的一个或多个外部存储器。网络处理器可以包括设置、配置和更新外部存储器中的项的控制 面,以及具有使用这些项来处理和转发分组的多个微引擎的数据面。 每个微引擎可以具有存储外部存储器中频繁使用的项的本地存储器。 一旦控制面更新了外部存储器中的项,则它可以向数据面的微^ 1擎发 送信号以告知可以在其本地存储器中緩存或存储这些更新的项。对此 信号响应,微引擎可以刷新本地存储器中存储的所有项,以使它们与 外部存储器中存储的项 一致。


附图中通过举例方式而非限制来图示本文描述的本发明。为了图 示的简单和明确,附图中示出的部件并非一定按比例绘制。例如,为了清晰图示,可能将一些部件的尺寸相对于其他部件;故大。而且,在 认为适合的情况下,附图中重复使用引用标号以指示对应或相似的部件。图1示出网络装置的实施例。图2示出图1的网络装置的网络处理器的实施例。图3示出图2所示的网络处理器的控制面实现的方法的实施例。图4示出图2所示的网络处理器的微引擎实现的另一个方法的实施例。图5示出用于更新图2所示的网络处理器緩存的项的实施例的数 据流程图。
具体实施方式
下文的描述描述了用于更新网络处理器中緩存的项的技术。在下 文的描述中,阐述了许多特定细节、例如逻辑实现、伪代码、指定操 作数的方式、资源分区/共享/复制实现、系统组件的类型和相互关系、 以及逻辑分区/集成选择来提供对本发明更透彻的理解。但是,没有这 些特定细节,仍可以实施本发明。在其他实例中,未详细地示出控制 结构、门级电路和完整的软件指令序列,以免妨碍对本发明的理解。 本领域技术人员通过所包括的描述将能够无需过多试验即可实现相 应的功能。说明书中对"一个实施例"、"实施例"、"示范实施例"等的引述 说明,所描述的实施例可以包括特定特征、结构或特点,但是每个实 施例并不一定包括该特定特征、结构或特点。而且,此类短语不一定 指代相同的实施例。而且,当结合实施例描述特定特征、结构或特点 时,应认为结合其他实施例实现此类特征、结构或特点而无论该其他 实施例是否明确地予以描述均属于本领域技术人员的知识范围内。本发明的实施例能以硬件、软件或它们的任何组合形式来实现。 本发明的实施例还可以作为存储在机器可读媒体上的指令来实现,这 些指令可以被一个或多个处理器读取并执行。机器可读々某体可以包括 用于存储或传送机器(例如计算装置)可读形式的信息的任何机制。例如,机器可读々某体可以包括只读存储器(ROM);随机存取存储器 (RAM);磁盘存储媒体;光存储i某体;闪速存储器装置;电、光、声 音或其他形式的传播信号(例如载波、红外线信号、数字信号等)和其他。图1中示出路由网络通信系统的分组的网络装置8的实施例。网 络装置8可以包括网络接口 10、成帧器11、 一个或多个网络处理器12/13、交换机结构14和一个或多个外部存储器15/16。网络装置8的 示例可以包括ATM交换机(异步传输模式)、IP路由器(因特网协议)、 SDH DXC(同步数字分层结构数据交叉连接)等。成帧器11可以对帧执行操作。在一个实施例中,成帧器ll可以 从网络通信系统的网络接口 10接收行数据报,对帧定界并从帧中提 取例如以太网分组的有效负载。在另一个实施例中,成帧器11可以从 网络处理器13接收分组,将分组封装到帧中,并将帧映射到网络接 口 10上。成帧器11还可以执行例如检错和/或纠错的操作。成帧器11 的示例可以包括POS(同步光网络上的分组)成帧器、高级数据链路 (HDLC)成帧器等。网络处理器12和13可以对分组执行操作。在一个实施例中,网 络处理器12可以处理来自成帧器11的分组并经由交换机结构14将其 转发到另一个网络装置的适当端口。例如,网络处理器12可以将 IPv4(因特网协议版本4)分组组装成CSIX(通用交换机接口规范)分组, 修改分组报头和有效负载,确定适当端口并将CSIX分组转发到另一 个网络装置的适当端口。网络处理器13可以处理来自交换机结构14 的分组,并经由成帧器11将其转发到网络接口 IO的适当端口 20。例 如,网络处理器13可以将CSIX分组重组成IPv4分组,^修改分组才艮 头和有效负载,确定适当端口 20并将IPv4数据报转发到适当端口 20。 网络处理器12和13的示例可以包括Intel IXP 2XXX(例如IXP2400、 IXP2800)网络处理器。交换机结构14可以从与之连接的网络处理器接收分组并将分组 发送到网络处理器。交换机结构14的示例可以包括符合CSIX或其他 结构技术(例如HyperTransport、 Infiniband、 PCI-X、同步光网络上的 分组、RapidIO和Utopia)的交换j几结构。外部存储器15和16可以存储网络处理器12和13处理和转发分 组所用的项155/165。这些项可以包括节点配置数据、队列配置数据、 流配置数据、网络路由选择数据等。外部存储器15和16也可以緩存这些分组。在一个实施例中,外部存储器15/16可以包括用于存储分组的SDRAM(同步动态随机存取存储器)和用于存储项的QDR SRAM(四倍数据速率静态随机存取存储器)。其他实施例可以在图1说明的网络装置的结构上实现其他修改和 变化。例如,网络处理器12和13可以代替成帧器11执行成帧的工作, 并且可以在单盒方案中省略交换机结构。又如,可以将网络处理器12 和13合二为一。图2中示出网络处理器12(或网络处理器13)的实施例。如图所示, 网络处理器12可以包括控制面211、数据面212和可经由总线连接彼 此通信的便笺式存储器213。控制面211可以作为具有用于执行指令以执行多种任务的 一个或 多个处理核214!、 ...、214m(例如Intel XScale⑧处理核或StrongARM 处理核)的集成电路(IC)来实现。在一个实施例中,控制面211的处理 核214、...、214m可以拭行指令以建立、配置和更新外部存储器15/16 中存储的项155/165。例如,处理核214!、 ...、 214m可以更新外部存 储器15/16,外部存储器15/16包含例如节点的配置数据、每个分组队 列的配置数据、每个分组流的配置数据等的项。在另一个实施例中,处理核214!..... 214M还可以处理包含可能需要相对复杂的计算的协议消息和路由选择信息的分组。例如,处理核21A、 ...、 214M可以处 理包含路由选择信息(例如RIP(路由选择信息协议)分组、OSPF(开放 式最短路径优先)分组等)的路由选择协议分组。数据面212可以包括图2中可以彼此通信的多个微引擎215!、...、 215N。每个微引擎可以包括处理和转发分组的多个线程216T、...、216K, 以及存储指令代码220和项224的一个或多个本地存储器218i、...、218N。本地存储器218i.....218N可以包括控制存储装置、存储器、通用寄存器、传送寄存器、和/或其他存储机构。在一个实施例中,本地存储器218i.....218n可以包括可由残程216!..... 216k執行的指令代码220以及与外部存储器15/16的项155/165 —致的一个或多个项224。线程216i.....216jc可以访问本地存储器218。 ...、 218n来提取一些有用信息用于分組转发。可以基于某个标准(例如数据面212的一个或多个微引擎215!.....215n是否頻繁使用項155/165)来将项155/165从外部存储器15/16緩存到微引擎215!、 ...、 215m的本地存儲 器218、…、218N。而且, 一个微引擎215!、…、215n緩存的項155/165 可以不同于另一个微引擎215h.,215N緩存的项155/165。控制面211的处理核214!.....214m和数据面212的微引擎215!、 ...、 215N都可访问便笺式存储器213。便蓬式存储器213可以包括存储每个微引擎215!.....215n的数据的緩冲器226!..... 226N。可以使用多种结构(例如环形缓沖器、链路列表、堆栈等)来实现緩冲器226!.....226N。在其他实施例中,可以将便笺式存储器215视为平面存+者器(flat memory)。在一个实施例中,控制面211的处理核214i、 ...、 214m可以通近 添加、删除或更改外部存储器15/16中的一个或多个项155/165来更 新一个或多个项155/165,并且可以将与更新的项155/165相关的信息写入到与将更新的项155/165存储在其本地存储器218!..... 218n中的微引擎215!..... 251N关联的便笺式存储器213的每个緩冲器226i、…、226N。然后,微引擎215i、 ...、 215n可以从其緩冲器226!、...、 226n中提取信息,从外部存储器15/16读取更新的项155/165,并更新本地存储器218!.....218w中的对应项224。写入緩冲器226!.....226N中的信息可以包括唯一地标识外部存储器15/16的项155/165的 项标识符(例如,地址、项编号、项指针)。其他实施例可以在图2说明的网络处理器的结构上实现其他修改 和变化。例如,网络处理器12还可以包括散列引擎、用于通信的外 围组件互连(PCI)总线接口等。图3示出控制面211的一个或多个处理核214!、 ...、 214M实现的、 用于更新外部存储器15/16中存储的外部项155/165的过程。如图所 示,在框301中,控制面211可以更新外部存4诸器15中的项155。然后,在框302中,控制面211可以搜索受更新的项155影响的数据面212的微引擎215!.....215N。在一个实施例中,控制面211通过确定微引擎215!.....215N在其对应的本地存储器218!..... 218n中具有緩存的更新的项155来确定更新的项155影响了微引擎215!.....215N。控制面211能以多种方式来实现框302。在一个实施例中,控制 面211可以通过参考外部存储器15/16或便笺式存储器213的表来确 定受影响的微引擎215!、 ...、 215N,其中该表列出缓存了特定外部项155的微引擎215!.....215N。例如,控制面211可以向外部存储器15的CAM(内容可寻址存储器)提供更新的项155的标识符(例如,地 址、索引、散列值等)以获取具有緩存的项155的微引擎215!、 ...、 215N 的列表。具体来说,CAM可以返回具有至少N位的数据字,其中每 一位指示对应的微引擎215、、 ...、 215n是否具有緩存的更新的項155。 但是,应该认识到,控制面211可以利用其他技术和结构来维护项155/165与已存储项155/165的本地副本的微引擎215!..... 2"n之间的对应关系。在框303中,控制面211可以将与框301中更新的外部项155关联的信息写入到受更新的项155影响的微引擎215,..... 215n的緩冲器226!.....226N。该信息可以包括标识控制面211已更新的外部项155/165的标识符。例如,如果在框301中更新了外部表151的项155,则控制面211可以搜索将项155存储在它们的本地存储器218i..... 218n中的微引擎215!.....215n(框302)。然后,在框303中,控制面211可以将更新的项155的标识符(例如,地址、项编号、项指针和/或其他数据)写 入框302中识别的受影响的微引擎215i、 ...、 215n的緩冲器226!、...、 226N。例如,如果控制面211在框302确定微引擎215!和215n已緩 存了更新的项155,则在框303中,控制面211可以将项155的标识 符写入到对应的緩冲器226!和226N以通知微引擎215:和215N所识别的项155已被更新。在另一个实施例中,如果在框301中更新了外部存储器15的所 有项或多于一个阈值级的项,则控制面211可以放弃框302,并将通 配标识符写入到緩冲器226i、…、226n以指示外部存儲器15的所有纟爰 存的项155是无效的或过时的。图4示出用于更新数据面微引擎215!..... 215n的本地存儲器218!、 ...、 218n的一个或多个項224的方法的实施例。在框402中, 可以将数据面212的每个微引擎215!、 ...、 215w的一个线程216!、...、216K设计成或以其他方式配置成执行更新微引擎215!..... 215n的緩存的项224的任务。在一个实施例中,控制面211可以指定每个微引擎215i.....215N中要更新微引擎215i.....215n的緩存的項224的线程216!.....216K。其他实施例可以利用其他技术来指定用于更新緩存的项224的线程。例如,微引擎215,..... 215N可以指定线程,线程可以由指令代码220预先确定,和/或可以将线程指定硬连线(hardwired)到微引擎215!.....215n中。在框404中,可以将微引擎215!.....215N的线程216i..... 216K选为连续执行其分配的任务。为此,微引擎215^.....215n和/或控制面211可以使用多种线程调度算法(例如轮换(round robin)、优先级、加权优先级和/或其他调度算法) 来唤醒和/或以其他方式激活所选线程。在框406中,所选线程216b ...、216K可以确定所选线程216!、…、216K是否被指定用于更新其微引擎215!..... 215N的本地存储器218!.....218N。如果所选线程216!.....216k在框406中确定指定了另一个线程216!.....216k用于更新,则在框408中,所选线程216、...、216K可以继续按常规方式处理分组。但是,如果所选线程216!.....216K被指定用于更新其本地存储器218!.....218N,则在框410中,线程216!.....216K可以确定其微引擎215i..... 215n的緩冲器226i.....226k是否指示逸些項226是无效的或过时的。所选线程216i.....216K能以多种方式实现框410。对于緩冲器226!、 ...、 226K是暂存环(scratch rmg)的实施例,所选线程216!、…、 216K可以执行指令代码220的预定指令(例如('br—linp—state[…]'),并且 可以确定预定指令的返回值是真(T)还是假('O')。如果返回值为假,则所选线程216!.....216K可以确定没有更新待处理,同样地,如果返回值为真,则可以确定其本地存储器218!..... 218n的一个或多个項226待更新。如果所选线程216!.....216K确定要更新其本地存储器218!.....218N的项224,则在框412中,线程216!、…、216K可以从与线程216!、...、216K的微引擎215!.....215N关联的緩冲器226、...、226n中提取更新的项155/165的标识符。该信息可以包括唯一地标识外部存储器 15/16的更新的项155/165的项标识符。这种标识符可以包括外部存储 器编号、外部存储器指针、项编号、项指针和/或可用于辨别项155/165的其他标识信息。但是,如果所选的线程216!..... 216K确定不更新其本地存储器218!.....218n的項224,则所选线程216!..... 216K可以继续到框408以#1行常^见分组处理。在框414中,所选线程216i.....216K可以从外部存储器15/16中读取已经由其对应緩冲器226!..... 226N中的信息标识为更新的项155/165。而且,所选线程216b ...、 216k可以基于从外部存儲器15/16 读取的项来更新对应緩存的项224(框416)。其他实施例可以在图4说明的过程上实现其他修改和变化。例如,微引擎215! ..... 215N可以不分配单个线程216!、 ...、 216k来批行更新本地存储器218!.....218N的任务。而是,微引擎215!..... 215N的每个线程216^ ...、 216K均可以在进行常》见分组处理之前确定是否 要更新其本地存储器218i.....218n中緩存的項224。图5示出用于更新网络处理器12的本地存储器218!..... 218N的项224的实施例的数据流程图。如图所示,控制面211可以更新外 部存储器15中的一个或多个外部项155(箭头501)。然后,控制面211 可以将与更新的外部项155关联的信息写入分配给受影响的微引擎215!、 ...、 215n的緩冲器226!、 ...、 226^箭头502)。响应线程216.....216k基于其緩冲器218!..... 218N中存储的信息而确定其微引擎215、...、215n的一个或多个緩存的項224已被更新,线程216! ...216K 可以从外部存储器15中读取更新的外部项155(箭头504),并利用读 取的项155更新对应的本地存储器218!、 ...、 218N(箭头505)。虽然本发明的某些特征是参考示范实施例来描述的,但是该描述 不应视为限制意义的。本发明有关的本领域技术人员显见到这些示范 实施例的多种修改以及本发明的其他实施例,而这些修改和其他实施 例应视为属于本发明的精神和范围内。
权利要求
1.一种包括多个微引擎的网络处理器处理网络分组的方法,所述方法包括更新所述网络处理器外部的存储器中的项;识别所述多个微引擎中在其本地存储器中已存储所述项的微引擎;以及将信息写入到所识别的微引擎的缓冲器,所述信息指示所述项已被更新。
2. 如权利要求l所述的方法,其特征在于,还包括 响应基于写入到所述緩冲器的所述信息确定所述项已被更新,而更新所述微引擎的所述本地存储器中的所述项。
3. 如权利要求l所述的方法,其特征在于,还包括 响应基于写入到所述緩冲器的所述信息确定所述项已被更新,而从所述网络处理器外部的所述存储器中读取所述项;以及基于从所述网络处理器外部的所述存储器中读取的所述项来更 新所述微引擎的所述本地存储器。
4. 如权利要求l所述的方法,其特征在于,还包括 响应基于写入到所述纟复冲器的所述信息确定所迷项已^L更新,而更新所述微引擎的所述本地存储器中的所迷项;以及基于所述微引擎的所述本地存储器中更新的项来处理网络分組。
5. 如权利要求l所述的方法,其特征在于,还包括 指定所述多个微引擎的每个微引擎的至少一个线程基于每个微引擎的对应的緩冲器中存储的信息来更新每个微引擎的对应的本地 存储器的项。
6. 如权利要求l所述的方法,其特征在于,还包括激活所述微引擎的线程来处理所述緩沖器中存储的信息并基于所述緩冲器中存储的所述信息来更新所述微引擎的所述本地存储器。
7. 如权利要求l所述的方法,其特征在于,还包括;基于所述微引擎的所述緩冲器中存储的所述信息来确定所述微 引擎的所述本地存储器中的所有项都是无效的。
8. 如权利要求l所述的方法,其特征在于,还包括基于所述微引擎的所述緩沖器中存储的所述信息来确定所述微 引擎的所述本地存储器中的所有项都是过时的。
9. 一种基于外部存储器中存储的项来处理网络分组的网络处理 器,包括用于处理网络分组的多个微引擎,每个微引擎具有对应的本地存 储器和对应的緩冲器,所迷对应的本地存储器用于緩存所述外部存储 器中存储的项,所述对应的緩冲器用于识别已在所述外部存储器中更 新的所述本地存储器中的项,以及控制面,所述控制面用于更新所述外部存储器中的项、识别所述 多个微引擎中在对应的本地存储器中存储有所述项的每个微引擎、并 将所述项的标识符存储在每个识别的微引擎的对应的緩冲器中以指 示所述项在所述外部存储器中已;f皮更新。
10. 如权利要求9所述的网络处理器,其特征在于,所述控制面 包括至少一个处理核,所述至少一个处理核用于更新所述项、识别每 个微引擎、并将所述标识符存储在每个识别的微引擎的对应的緩沖器 中。
11. 如权利要求9所迷的网络处理器,其特征在于,每个微引擎 响应基于写入到所述对应的緩冲器的所述标识符确定所述项已被更新,而从所述外部存储器中读取所述项,以及基于从所迷外部存储器中读取的所述项来更新所述对应的本地 存储器。
12. 如权利要求9所述的网络处理器,其特征在于,每个微引擎 响应基于写入到所迷对应的緩冲器的所述标识符确定所述项已-故更新,而更新所述对应的本地存储器中的所述项,以及基于所述对应的本地存储器中更新的项来处理网络分组。
13. 如权利要求9所述的网络处理器,其特征在于,每个微引擎 包括用于处理网络分组的多个线程和基于所述对应的緩冲器中存储 的项的标识符来更新所述对应的本地存储器的项的至少 一个线程。
14. 一种网络装置,包括用于传输网络分组的多个端口 ; 存储用于处理网络分组的项的存储器;基于所述网络处理器外部的所述存储器中存储的项来处理网络 分组的网络处理器,其中所述网络处理器包括用于处理网络分组的多个微引擎,每个微引擎具有对应的本地存 储器和对应的緩冲器,所述对应的本地存储器用于緩存所述外部存储 器中存储的项,所述对应的緩冲器用于识别已在所述外部存储器中更 新的所述本地存储器中的项,以及至少一个处理核,所述至少一个处理核用于控制所述多个微引 擎、更新所述网络处理器外部的所述存储器中的项、识别所述多个微 引擎中在对应的本地存储器中存储有所述存储器的更新的项的每个 微引擎、并在每个识别的微引擎的对应的緩冲器中存储信息以指示所 述存储器的更新的项。
15. 如权利要求14所述的网络装置,其特征在于,每个微引擎 基于所述对应的緩冲器中的所述信息从所述存储器中读取更新的项,以及基于从所述存储器中读取的更新的项来更新所述对应的本地存 储器。
16. 如权利要求14所述的网络装置,其特征在于,每个微引擎 基于其对应的緩冲器中的信息来更新对应的本地存储器中的项,以及基于所述对应的本地存储器中更新的项来处理网络分组。
17.如权利要求14所述的网络装置,其特征在于,每个微引擎包 括用于处理网络分组的多个线程,其中所述多个线程中的至少一个线 程基于所述对应的緩沖器中的信息来更新所述对应的本地存储器中 的项。
18. 如权利要求14所述的网络装置,其特征在于, 每个微引擎包括用于处理网络分组的多个线程,以及 所述至少一个处理核指定每个微引擎的至少一个线程基于所述微引擎的对应的緩冲器中的信息来更新所述微引擎的对应的本地存 储器的项。
19. 一种包含多个指令的机器可读々某体,所述指令执行时使网络装置更新所述网络装置的网络处理器外部的存储器中的项;识别所述网络处理器中已在所述网络处理器的本地存储器中緩 存了所述项的每个微引擎;将信息存储到每个识别的微引擎的对应的緩冲器,所述信息指示 所述项已在所述网络处理器外部的所述存储器中^L更新;以及基于每个识别的微引擎的对应的緩沖器中的所述信息更新所述 本地存储器中緩存的所述项。
20. 如权利要求19所述的机器可读媒体,其特征在于,所述多 个指令还使所述网络装置响应基于写入到所述緩冲器的所述信息确定所述项已^f支更新,而 从所述网络处理器外部的所迷存储器中读取所述项;以及基于从所述网络处理器外部的所述存储器中读取的所述项来更 新所述本地存储器中緩存的所述项。
21. 如权利要求19所述的机器可读々某体,其特征在于,所述多个 指令还使所述网络装置基于所述本地存储器中緩存的更新的项来处 理网络分组。
22. 如权利要求19所述的机器可读々某体,其特征在于,所述多个指令还使所述网络装置指定所述多个微引擎的每个微引擎的至少一 个线程基于每个微引擎的对应的緩沖器中存储的信息来更新所述本 地存储器的项。
全文摘要
描述更新网络处理器中缓存的项的机器可读媒体、方法和设备。在一些实施例中,网络处理器的微引擎在对应的本地存储器中缓存项,并基于这些微引擎的对应的缓冲器中存储的信息来更新缓存的项。网络处理器的控制面识别在对应的本地存储器中存储有更新的项的每个微引擎,并在每个识别的微引擎的对应的缓冲器中存储信息以指示该项在外部存储器中已被更新。
文档编号G06F15/16GK101273343SQ200580051673
公开日2008年9月24日 申请日期2005年9月28日 优先权日2005年9月28日
发明者Y·张, Y·韩, Z·于 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1