为网络处理器调度连接的方法与装置的制作方法

文档序号:7598221阅读:171来源:国知局
专利名称:为网络处理器调度连接的方法与装置的制作方法
技术领域
一般地,本发明涉及网络处理器,更具体地,涉及一种高速调度器与使用该调度器的方法。
背景技术
诸如交换机或路由器等网络设备可以包括网络处理器。该网络处理器经常被用来处理从一个或多个连接接收与向该网络设备发出的数据(例如信元(cell)或帧)发送。网络设备可以使用一个或多个相应于连接的控制结构(例如控制块)在存储器中存储信息,数据从所述连接发送到网络处理器。网络处理器一般在存储器中可以存储250000或更多个控制结构。因此,需要大型存储器来存储这些控制结构。由于网络处理器的大小限制,所以大型存储器一般位于在网络处理器外部。
网络处理器的一个或多个组件可以修改存储在控制结构中的信息。例如,每次网络处理器从连接接收信元或帧时,网络处理器的一个或多个组件可以访问外部存储器,以修改存储在一个或多个控制结构中的信息。
由于有限的存储器带宽,所以外部存储器访问可以成为网络处理器的速度限制手段或瓶颈。因为希望以比外部存储器访问快的速度接收数据进入和/或从网络处理器发送数据,所以存在一种需求,需要为网络处理器提供数据高速调度的方法与装置。

发明内容
根据本发明的第一方面,提供了为网络处理器调度连接的第一方法。该第一方法包括以下步骤在高速缓冲存储器中,根据存储在相应于每个连接(connection)的控制结构中的服务质量参数,调度多个待服务连接;以及在调度时机期间(1)在高速缓冲存储器中,标识多个连接中的一个或多个待服务连接;(2)选择所标识的待服务连接中的一个;(3)对所选择的连接进行服务;(4)访问在高速缓冲存储器中的、包括服务质量参数的控制结构的一个或多个部分,所述服务质量参数相应于所选择的连接;(5)计算对所选择的连接进行服务的下一服务时间,所述下一服务时间基于服务质量参数;以及(6)根据下一服务时间,确定是否在高速缓冲存储器与日程表之一中调度所选择的待服务连接。
根据本发明的第二方面,提供了为网络处理器调度连接的第二方法。该第二方法包括以下步骤在调度时机期间,(1)根据相应于多个连接中每一个的控制结构的一个或多个部分,在高速缓冲存储器中,标识被调度进行服务的多个连接中的一个或多个;(2)对所所标识的连接中的一个进行服务;以及(3)根据相应于已接受服务的连接的控制结构的一个或多个部分,在高速缓冲存储器与日程表之一中,调度待再次服务的已接受服务的连接。
还提供了许多其他方面,以及根据本发明这些其他方面的系统与装置。
从以下详细描述、权利要求以及附图中可以更明显地看出本发明的其他特征与方面。


图1为其中可以实现本发明的网络处理器系统的示例性示意图;图2为根据本发明的示例性网络处理器系统的详细方框图;图3显示根据本发明的调度数据的示例性方法;图4显示根据本发明的调度数据的更详细的示例性方法;图5显示根据本发明的对调度进行服务的连接进行服务的示例性方法;图6显示根据本发明的调度连接进行服务的示例性方法。
具体实施例方式
在本发明的一个或多个实施例中,网络处理器系统可以包括耦合至一个或多个高速连接的网络处理器。网络处理器也可以包括耦合至输出连接的输出端口。网络处理器可以从高速连接接收数据,并通过输出端口从输出连接发送该数据。网络处理器包括调度逻辑,用来调度何时借助网络处理器的输出端口从输出连接发送由该网络处理器所接收的数据。
为了调度从高速连接所接收的数据的发送,调度逻辑可以访问外部存储器,以检索相应于高速连接的信息(例如控制结构)。因为调度逻辑必须使用有限大小的带宽来访问外部存储器,所以该存储器访问的速度是有限的。当网络处理器系统耦合至一个或多个需要服务的高速连接时,这样的速度限制可以成为问题。本方法与装置通过在调度待服务的高速连接时限制为检索控制结构而访问外部存储器的次数,提供了从高速连接所接收的数据的高速调度。
图1为根据本发明的网络处理器系统100的示例性示意图。网络处理器系统100可以包括网络处理器102。网络处理器102可以从自主流104-108和/或管道120-124接收数据。自主流(autonomous flow)与管道是对等的。每个自主流104-108表示从网络处理器102到网络设备(未显示)的各个连接。每个管道120-124可以包括一个或多个管道流130。管道流130表示从网络处理器102到网络设备(未显示)的与其他各个到网络设备的连接在一起组合在管道120-124中的各个连接(例如因特网服务供应商可以从系统带宽所有者购买一组管道流,并向消费者销售这些管道流)。
在图1所示的网络处理器系统100中,网络处理器102从多个自主流104-118和/或多个管道120-124接收数据,其中每个管道包括多个管道流(例如130),这些数据将从输出端口132发送。网络处理器102的每个输出端口132可以连接到有限系统带宽的网络连接。因此,来自所有自主流104-118以及管道120-124的数据不能同时得到服务(例如来自每个自主流与管道的数据不能同时发送)。
在图1所示的网络处理器102中,可以向每个自主流104-118或管道120-124分配优先级,(例如高、中、或低),以及带宽。分配给自主流104-118或管道120-124的优先级决定了自主流104-118或管道120-124接受服务的频率。分配给自主流104-118或管道120-124的带宽决定了在服务自主流或管道时可用于自主流104-118或管道120-124的系统带宽的比例。
图2为根据本发明的示例性网络处理器系统100的详细方框图。网络处理器系统100包括耦合至存储器(诸如外部存储器)的网络处理器102。网络处理器102可以通过一个或多个上述连接接收数据,并通过一个或多个输出端口132(图1)从连接发送数据。存储器202可以在一个或多个相应于每个连接的控制结构(例如控制块)中存储信息,网络处理器102从所述连接接收数据。网络处理器102可以包括通过存储器接口206(诸如存储器控制器)耦合至存储器202的调度逻辑204。调度逻辑204可以调度待服务连接和/或对这些连接提供服务,网络处理器系统100从所述待服务连接接收数据。当从网络服务器102发送由该网络服务器102从一连接中所接收到的数据时服务该连接。
调度逻辑204可以包括高速缓冲存储器210,用来存储有关于近期要接受服务的连接的信息。更具体地,高速缓冲存储器210可以作为项存储相应于近期要接受服务的连接的控制结构(例如控制块)。虽然高速缓冲存储器210存储相应于近期要接受服务的连接的控制结构,但为了方便,称高速缓冲存储器210在其中存储了连接。在一个方面,高速缓冲存储器210可以包括时间戳内容可寻址存储器(CAM)212、流标识CAM 214及流控制块RAM 216。时间戳内容CAM 212、流标识CAM 214及流控制块RAM 216可以存储每个高速缓冲存储器项中的一个或多个部分。可以使用其他配置和/或存储器类型。
调度逻辑204可以包括连接到高速缓冲存储器210以及存储器202(例如通过存储器接口206)的入队控制逻辑208。虽然包含在调度逻辑204中的控制逻辑可以耦合至时间戳内容CAM 212、流标识CAM 214以及流控制块RAM216中的一个或多个,但是为了方便,称该控制逻辑耦合至高速缓冲存储器210。入队控制逻辑208可以使用高速缓冲存储器210调度待服务连接,网络处理器系统100通过该待服务连接接收新数据。
出队控制逻辑218可以耦合至高速缓冲存储器210。对于给定的调度时机,出队控制逻辑218可以在高速缓冲存储器210中标识在该调度时机期间相应于被调度待服务连接的项,并对一个或多个连接进行服务。
出队更新控制逻辑220可以耦合至高速缓冲存储器210的输出。出队更新控制逻辑220可以更新相应于在调度时机期间接受服务的连接的控制块中的一个或多个部分。下一时间戳控制逻辑222也可以耦合至高速缓冲存储器210的输出。下一时间戳控制逻辑222确定在调度时机期间已接受服务的连接应该再次被调度到接受服务的时间。出队更新控制逻辑220与下一时间戳控制逻辑222中每一个的输出可以耦合至高速缓冲存储器210与清出控制逻辑224的输入。
根据在调度时机期间已接受服务的连接再次被调度到接受服务的时间,将刚接受服务的连接(例如相应于该连接的控制块)输入高速缓冲存储器210或清出控制逻辑224。如果刚接受服务的连接需要调度到在近期接受服务,则该连接存储在高速缓冲存储器210中。在另一方面,如果刚接受服务的连接在近期不会被调度为再次接受服务,则将该连接输出到清出控制逻辑224。
清出控制逻辑224确定是向存储器202(例如外部存储器)还是重装控制逻辑226输出相应于刚接受服务的连接的控制块。如果刚接受服务的连接不再需要服务(例如若该连接为空),则将相应于该连接的控制块写入存储器202。另一方面,如果刚接受服务的连接需要再次服务但不在近期,则将相应于该连接的控制块输出到重装控制逻辑226(其进而耦合至重装日程表228)。
重装日程表228可以包括一组存储器地址,这些存储器地址被反复检查以标识需要接受服务的连接的项。当反复检查存储器地址组时,在第一时间单元期间指示该组中的第一个存储器地址的指针,可以在每一接下来的时间单元期间递增以指示在该组中的下一个存储器地址。如果在该时间单元中检查了日程表的最后一个地址,则在下一个时间单元中可以检查该日程表的第一个地址。在重装日程表228中被调度项的存储器地址与在重装日程表228中正在被检查的存储器地址之间的距离越长,则由该被调度的项所标识的连接等待服务的时间越长。
根据输入到重装逻辑控制226的连接何时需要再次服务,重装逻辑控制226向重装日程表228写入相应于连接的控制块。重装逻辑控制226可以访问重装日程表228,以确定是否在近期调度一个或多个连接接受服务,可以从存储器202中检索相应于这些连接的控制块,并且可以向高速缓冲存储器210写入这些控制块。
除了上述功能之外,清出控制逻辑224还可以从高速缓冲存储器210中去除项,并且在重装日程表228中调度该项接受服务(例如通过重装逻辑控制226),以为表示需要在被去除项之前服务的连接的项腾出空间(例如通过入队控制逻辑208和/或重装逻辑控制226)。
现在参照图1-2,并参照图3,详细描述网络处理器系统100的操作,其中图3显示了根据本发明的调度数据的示例性方法。参照图3,在步骤302,开始方法300。在步骤304,在高速缓冲存储器210中被调度服务的多个连接中的一个或多个被标识为在调度时机期间进行服务。根据相应于所述多个连接的每一个的控制结构的一个或多个部分来标识多个连接进行服务。更具体地,高速缓冲存储器210中的每一项都可以是相应于连接的控制块。每个控制块可以包括描述该连接的多个字段。出队控制逻辑218可以使用键值来标识在高速缓冲存储器210中被调度服务的多个连接中的一个或多个。例如,当出队控制逻辑218向高速缓冲存储器210输入该键值时,高速缓冲存储器210将通知出队控制逻辑218包括匹配该键值的部分(例如,任何命中)的所有控制块项。
在步骤306,在调度时机期间,对所标识的连接之一进行服务。在调度时机期间,出队控制逻辑218任意地选择所标识的控制块项之一并且对相应于所选择的控制块项的连接进行服务。更具体地,来自相应于所选择的控制块项的连接的数据从网络处理器系统100发送,并且通过出队更新逻辑220与下一时间戳控制逻辑222更新该控制块的一个或多个部分。
在步骤308,在高速缓冲存储器与日程表之一中调度该已服务连接再次在调度时机期间接受服务。根据相应于连接的控制块的一个或多个部分,刚接受服务的连接在一位置中被调度为再次接受服务。例如,相应于连接的控制块可以包括指示何时应该再次对该连接进行服务的字段。如果该字段的值指示应该在近期对该连接进行服务(例如,近似小于预定数目的调度时机),则在高速缓冲存储器210中调度该连接接受服务。否则,在重装日程表228中调度该连接接受服务。
如上所述,在步骤304,出队控制逻辑218可以在高速缓冲存储器210中标识多个连接中的一个或多个,以在调度时机期间进行服务。假设在步骤304中标识所述多个连接中的多个,则在步骤310,在每个随后的调度时机期间,对所标识的连接中剩余的一个进行服务,直至对所有所标识的连接进行了服务。更具体地,在每个随后的调度时机期间,出队控制逻辑218任意选择剩余控制块项中的一个,并且对所选择的项进行服务(如上所述),直至对每个剩余的所标识的连接进行了服务,所述剩余控制块项作为对出队控制逻辑218所输入的键值的响应由高速缓冲存储器210标识。在步骤312,图3的方法300结束。
参照图1-2并参照图4,描述网络处理器系统100的操作,图4显示了根据本发明的调度数据的更详细的示例性方法400。参照图4,在步骤402,开始该调度数据的方法。在步骤404,可以在高速缓冲存储器中调度多个连接接受服务。可以根据存储在相应于每个连接的控制块中的服务质量参数,在高速缓冲存储器210中调度所述多个连接。
如上所述,当调度逻辑204对连接进行服务时,调度逻辑204访问并修改相应于该连接的控制块的部分。如果由存储器202(例如外部存储器)存储控制块,则每次对连接进行服务时进行外部存储器访问。因为到存储器202的带宽是有限的,所以所述存储器访问可以很耗时。如果每次网络处理器102对连接进行服务时,网络处理器系统100都访问外部存储器202,则网络处理器102通过其接收数据的连接的速度就由该存储器访问时间限制。因此,在高速缓冲存储器210中本地存储必定在近期访问的控制块减少了所进行的外部存储器访问的次数,并且允许对连接的高速调度。
例如,相应于网络处理器系统100通过其接收数据的连接的每个控制块包括或者被给定下一时间字段值。该下一时间字段的值基于分配给该连接的带宽。该下一时间字段的值指示该连接何时需要服务。如果下一时间近似小于预定的值(例如,小于2*Ds调度时机,其中Ds为在高速缓存中的项数),则在高速缓冲存储器210中调度该连接接受服务。在一个实施例中,高速缓冲存储器包括64个项。因此,如果多于64个的连接包括小于预定值的下一时间,则在高速缓冲存储器210中只存储64个连接。高速缓冲存储器210可以存储其他数目的项。
入队控制逻辑208、重装控制逻辑226以及高速缓冲存储器210可以在高速缓冲存储器210中调度多个连接(例如相应于连接的控制块)接受服务。入队控制逻辑208可以从存储器202中检索相应于网络处理器102通过其接收新数据的连接的控制块,并且在高速缓冲存储器210中调度该连接。调度逻辑204(例如通过入队控制逻辑208)如何由调度网络处理器102通过其接收新数据的连接的细节以下将参照图6描述。重装控制逻辑226可以从存储器202中检索相应于在重装日程表228中调度的连接的控制块,并且在高速缓冲存储器210中调度该连接。高速缓冲存储器210可以在高速缓冲存储器210中调度刚从高速缓冲存储器210中接受服务了的连接再次接受服务。
在步骤406,标识在高速缓冲存储器210中的多个连接中的一个或多个以在调度时机期间进行服务。步骤406类似于上述的步骤304。更具体地,由出队控制逻辑218输入高速缓冲存储器210中的键值可以是时间值(例如,当前指针(curptr)),其指示由调度逻辑204正在进行服务的项。该时间值可以等于当前时间或在其之后。例如,当出队控制逻辑218输入当前指针到高速缓冲存储器210时,高速缓冲存储器210(例如,高速缓冲存储器210的时间戳CAM 212)将向出队控制逻辑218返回高速缓冲存储器210中每个包含等于当前指针值的值(例如,在下一时间字段中)的控制块项的地址。由高速缓冲存储器210返回给出队控制逻辑218的每一个值都被认为是一次命中。每次命中都表示在高速缓冲存储器210中被调度以在下一调度时机期间进行服务的连接。虽然可以标识高速缓冲存储器210中多个连接中的一个或多个为在下一调度时机期间进行服务,但是对于以下图4的方法400的描述,假设标识多个连接为在下一调度时机期间进行服务。
在步骤408,在调度时机期间,选择被标识接受服务的连接之一。更具体地,因为所标识的所有连接都被调度为在调度时机期间进行服务,所以出队控制逻辑218任意从高速缓冲存储器210中读入所标识的连接之一(例如,相应于该连接的控制块的一个或多个部分)。
在步骤410,在调度时机期间,对所选择的连接进行服务。来自所选择的连接的数据从网络处理器系统100发送。更具体地,出队控制逻辑218发送相应于所选择连接的控制块的一部分(例如头指针)给发送接口(例如输出端口),数据从该发送接口从网络处理器系统100发送。头指针指向从连接接收的信元或帧队列中的第一个信元或帧。在服务过程中,第一个信元或帧(例如,由头指针指向的信元或帧)从队列中移除,并从网络处理器发送。
在步骤412,在调度时机期间,在高速缓冲存储器210中访问相应于所选择连接的控制块的一个或多个部分。出队更新控制逻辑220从速缓存存储器210中读取并更新相应于刚接受服务的连接的控制块的一个或多个部分。更具体地,出队更新控制逻辑220修改相应于刚接受服务的连接的控制块的头指针,以及可以的尾指针。尾指针指向从所选择的连接接收的信元或帧队列中的最后一个信元或帧。出队更新控制逻辑220可以更新存储相应于所选择的连接的统计数字的控制块的一个或多个部分,诸如在队列中剩余的信元或帧的数目,或者从所选择的连接接收的信元或帧的数目。下一时间戳控制逻辑222可以读入控制块的一个或多个部分(例如下一时间字段)。
在步骤414,在调度时机期间,计算对所选择的连接进行服务的下一服务时间。下一服务时间可以基于服务质量参数(例如带宽参数)。更具体地,通过将基于服务质量参数与从该连接发送的信元或帧的大小的值加到该连接的上一服务时间上,下一时间戳控制逻辑222计算对于刚接受服务的连接的下一服务时间。在调度时机期间,下一时间戳控制逻辑222用新算出的下一服务时间来更新相应于刚接受服务的连接的控制块。
在对所选择的连接进行服务之后,所选择的连接可以包括待从该连接发送的其他信元或帧,或者不包括待从该连接发送的其他信元或帧(例如,所选择的连接为空)。假设刚接受服务的连接包括待从网络处理器发送的其他数据(例如,该连接不为空),则在步骤416,在调度时机期间,根据下一服务时间,确定是否在高速缓冲存储器210与日程表(例如重装日程表228)之一中调度所选择的连接接受服务。步骤416类似于上述的步骤308。更具体地,刚接受服务的连接的更新后的下一服务时间与当前指针进行比较,如上所述,当前指针表示时间值。如果更新后下一服务时间与当前指针之间的差异近似小于预定值(例如,小于2*Ds调度时机,其中Ds为在高速缓存中可以存储的项数),则高速缓冲存储器210(例如通过下一时间戳控制逻辑222与出队更新控制逻辑220)在高速缓冲存储器210中调度所选择的连接再次接受服务。在另一方面,如果更新后下一服务时间与当前指针之间的差异近似大于或等于预定值,则高速缓冲存储器210(例如通过下一时间戳控制逻辑222与出队更新控制逻辑220)将相应于刚接受服务的连接的控制块输入到清出控制逻辑224。可以使用更大的或更小的预定值。清出控制逻辑224将控制块写入存储器202,并通知重装控制逻辑226,以根据该连接的下一服务时间在重装日程表228中调度该连接接受服务。如上所述,在重装日程表228中被调度的存储器地址与在重装日程表228中当前正在被检查的存储器地址之间的距离越长,则该连接必须等待服务的时间越长。
在步骤418,图4的方法400结束。类似于图3的步骤310,在进行了方法400之后,在每个随后的调度时机期间,可以对高速缓冲存储器210中标识为接受服务的连接中的剩余的一个进行(如图3所述),直至对所有被标识连接进行了服务。更具体地,在每个随后的调度时机期间,可以对高速缓冲存储器210中标识为接受服务的连接中的剩余的一个进行步骤410至416,直至对所有被标识连接进行了服务。
现在参照图1、2、4并参照图5描述网络处理器系统100的操作,图5显示包括图4所示方法的步骤406至416的、对被调度要进行服务的连接进行服务的方法。
对被调度要进行服务的连接进行服务参照图5,在步骤502开始方法500。在步骤504与506,出队控制逻辑218向高速缓冲存储器210(例如高速缓冲存储器210的时间戳CAM 212)输入作为键值的当前指针,并且高速缓冲存储器210分别通知所有命中的出队控制逻辑218,如图4的步骤406所述。如果在步骤506高速缓冲存储器210向出队控制逻辑218返回命中,则进行步骤512。在步骤512,出队控制逻辑218从高速缓冲存储器210中读入命中之一(例如相应于被调度待服务连接的控制块),如图4的步骤408所述。在步骤514,向发送接口(例如输出端口)发送指向从相应于该命中的连接接收的帧或信元的队列中的第一个帧或信元的指针(例如头指针),如图4的步骤410所述。因此,在步骤514,对该连接进行服务。在步骤516,更新相应于该连接的控制块的一个或多个部分(例如指针),如图4的步骤412所述。在步骤518,对于在步骤514进行了服务的连接计算接入时间(例如下一服务时间),如图4的步骤414所述。
在步骤520,确定刚接受服务的连接现在是否为空(例如,该连接不包含待发送的任何数据)。例如,出队更新控制逻辑220可以访问相应于该连接的控制块的一个或多个部分(例如计数字段),以确定该连接是否为空。如果在步骤520确定该连接为空,则进行步骤530。在步骤530,从高速缓冲存储器210中清出该连接(例如,相应于该连接的控制块)。更具体地,高速缓冲存储器210(例如通过下一时间戳控制逻辑222与出队更新控制逻辑220)输出该连接给清出控制逻辑224。清出控制逻辑224将相应于该连接的控制块写入存储器202。因为该连接不包含待发送的任何数据,所以不需要在高速缓冲存储器210或在重装日程表228中调度该连接接受服务。此后,进行步骤532。在步骤532,图5的方法500结束。
或者,如果在步骤520确定刚接受服务的连接不为空(例如刚接受服务的连接包含待发送的数据),则进行步骤522。步骤522,接入时间(例如下一服务时间)与当前指针比较,当前指针表示时间值,如图4的步骤416所述。如果接入时间与当前指针之间的距离小于预定值,则进行步骤524。在步骤524,刚接受服务的连接接入(例如,被调度为接受服务)高速缓冲存储器210(例如,到时间戳CAM 212,和/或流控制块RAM 216),如图4的步骤416所述。此后,进行步骤532。
或者,如果接入时间与当前指针之间的距离大于或等于预定值,则进行步骤526与528。在步骤526与528,该连接依次从高速缓冲存储器210中清出,并且接入重装日程表228,如图4的步骤416所述。此后,进行步骤532,在其中图5的方法500结束。
然而,如果在步骤506高速缓冲存储器210未向出队控制逻辑218返回命中(例如在调度时机期间没有标识连接为接受服务),则进行步骤508。在步骤508,确定当前指针是否等于当前时间。如上所述,当前指针为可以等于当前时间或在其之后的时间值。如果当前指针不等于当前时间,则进行步骤510。在步骤510,将当前指针递增一个调度时机。此后,使用更新后的当前指针进行步骤504。在另一方面,如果在步骤508确定当前指针等于当前时间,则使用当前指针进行步骤504。因为不能递增当前指针到当前时间之前,所以不递增当前指针。
虽然当前时间继续递增,但是每次在步骤506发现命中,并因此对调度为接受服务的连接进行服务,故不递增当前指针。因此,如果在给定调度时机期间,对于所输入的当前指针发现多个命中(例如连接),则在每次随后的调度时机期间,对剩余的多个命中之一进行服务,直至对于所输入的当前指针的所有命中都接受服务。在对多个命中进行服务的调度时机期间,因为没有递增当前指针,所以当前指针落在当前时间之后。在没有发现命中的下一个调度时机期间,执行步骤508和510,并且递增当前指针。
现在参照图1、2、4并参照图6描述网络处理器系统100的操作,图6显示的包括图4所示方法的步骤404的、通过入队控制逻辑208调度连接进行服务的方法。
通过入队控制逻辑调度连接进行服务参照图6,在步骤602,开始方法600。在步骤604,在调度时机期间,调度逻辑204可以在入队控制逻辑208中接收包括流标识、帧或信元标识以及帧或信元大小的数据(例如新的入队请求)。流标识标识网络处理器系统100通过其接收数据的连接。帧或信元标识以及帧或信元大小相应于在网络处理器系统100中从连接接收的数据。
在步骤606,流标识送往高速缓冲存储器210。更具体地,入队控制逻辑208将流标识作为键值输入高速缓冲存储器210(例如,高速缓冲存储器210的流标识CAM 214),以确定相应于由该流标识所标识的连接的控制块是否存储在高速缓冲存储器210中。入队控制逻辑208可以访问相应于该连接的控制块,以更新控制块的部分,从而反映新接收的帧或信元。
在步骤608,确定是否在高速缓冲存储器210发现命中。例如,当入队控制逻辑208向高速缓冲存储器210输入键值(例如流标识)时,高速缓冲存储器210(例如,流标识CAM)通知入队控制逻辑208包含匹配该键值的部分的控制块项(例如,任何命中)。命中指示在高速缓冲存储器210中包括了相应于由该流标识所标识的连接的控制块。如果在步骤608中发现命中,则进行步骤612。
或者,如果在步骤608中未发现命中,则进行步骤610。在步骤610中,从存储器202中读取相应于由该流标识所标识的连接的控制块。因为相应于该连接的控制块没有存储在高速缓冲存储器210中,所以其存储在存储器202中,这表示或者在重装日程表228中调度该连接接受服务,或者没有调度该连接接受服务。如果连接不包含待发送的数据,则该连接没有调度进行服务。更具体地,例如,入队控制逻辑208通过存储器接口206从存储器202检索(例如读取)相应于由流标识所标识的连接的控制块(例如流控制块(FCB))。当从存储器202读取控制块时,在入队控制逻辑208能够检索控制块之前,入队控制逻辑208可以等待来自该存储器的数据有效信号。然后,入队控制逻辑208将该控制块写入高速缓冲存储器210。此后,进行步骤612。
在步骤612,更新控制块的一个或多个部分(例如指针)。更具体地,入队控制逻辑208可以更新控制块中的尾指针(以及可以的头指针),以反映在网络处理器系统100中从该连接接收的新的帧或信元。入队控制逻辑208可以更新存储相应于该连接的统计数字的控制块的一个或多个部分,诸如从该连接接收的信元或帧的队列中的信元或帧的数目(例如计数字段)。
在步骤614,对于由流标识所标识的连接,计算接入时间(例如下一服务时间)。更具体地,入队控制逻辑208可以计算该包含(例如分配给)在相应于通过其接收信元或帧的连接的控制块中的接入时间。如上所述,下一服务时间表示调度连接何时接受服务,并且基于服务质量参数(例如带宽参数)。入队控制逻辑208可以用下一服务时间来更新相应于网络处理器102通过其接收数据的连接的控制块。如果网络处理器从新的连接接收数据,则入队控制逻辑208为该连接计算并分配下一服务时间值,该值快于如果先前从该连接接收的数据被调度来服务,应计算并分配给同一连接的下一时间值。
在步骤616,根据下一服务时间,确定是否在高速缓冲存储器210与重装日程表228之一中调度网络处理器102通过其接收数据的连接。入队控制逻辑208进行类似于由下一时间戳控制逻辑222在步骤398与428中所进行的步骤,以在高速缓冲存储器210或重装日程表228中调度该待服务的连接。因为入队控制逻辑208先前将该连接写入高速缓冲存储器210(例如在步骤610),所以在步骤616,入队控制逻辑208确定是在高速缓冲存储器210保留该连接,还是将其移动到重装日程表228中。更具体地,将接入时间(例如下一服务时间)与指示时间值的当前指针进行比较。类似于步骤522,如果接入时间与当前指针之间的差异小于预定值,则进行步骤618。类似于步骤524,在步骤618中,网络处理器102通过其接收数据的连接保留接入(例如调度进行服务)到高速缓冲存储器210。此后,进行步骤622,其中结束图6的方法600。
在另一方面,如果接入时间与当前指针之间的差异大于或等于预定值,则进行步骤620。类似于步骤528,在步骤620中,网络处理器102通过其接收数据的连接接入到重装日程表228中。更具体地,入队控制逻辑208将该连接从高速缓冲存储器210移动到重装日程表228中。此后,进行步骤622,其中结束图6的方法600。
如上图5中所述,在调度时机期间,入队控制逻辑208可以选择并对来自高速缓冲存储器210的连接进行服务。也可以在同一调度时机期间,在高速缓冲存储器210中调度连接接受服务。如上图6是所述,入队控制逻辑208可以在高速缓冲存储器210中调度连接接受服务。重装控制逻辑226也可以在高速缓冲存储器210中调度连接接受服务。更具体地,重装控制逻辑226可以在重装日程表228中发现相应于连接的一个或多个控制块,这些控制块被调度在近期接受服务(例如,在一个或两个调度时机之内),重装控制逻辑226可以从存储器202中读取相应于连接的控制块,并且在高速缓冲存储器210中存储(例如调度进行服务)这些相应于连接的控制块。通过这种方式,当必要时,可以从存储器202中检索相应于被调度近期服务(例如在重装日程表228中)的连接的控制块,并且在调度这些控制块接受服务的调度时机之前,在高速缓冲存储器210中调度这些控制块。因此,在该连接服务接受服务的调度时机期间,调度逻辑204可以本地访问相应于该连接的控制块。
在高速缓冲存储器210中当前被调度进行服务的连接(例如,相应于连接的控制块)可以在其接受服务之前从高速缓冲存储器210中移除,以为其他必须在高速缓冲存储器210中当前被调度进行服务的一个或多个连接之前进行服务的连接腾出空间。高速缓冲存储器210可以使用移除策略,诸如最近最少使用策略,以移除连接。如上所述,根据包含在相应于连接的控制块中的下一服务时间值来调度该连接进行服务。高速缓冲存储器210可以借助清出控制逻辑224将被移除项(例如,连接)提供给重装控制逻辑226。根据连接的下一服务时间,重装控制逻辑226可以在重装日程表228中调度被移除连接。
通过使用图3与4的方法,调度连接进行服务,同时限制为检索相应于连接的控制结构而访问存储器(例如外部存储器)的次数。
以上描述只公开了本发明的示例性实施例。对于本领域技术人员来说,显然可在不脱离本发明范围的前提下进行对本发明上述实施例的修改。例如,虽然本发明实施例公开了在高速缓冲存储器210的不同的部分(例如时间戳CAM 212、流标识CAM 214以及流控制块RAM 216)中存储相应于连接的控制块的一个或多个部分,但是在其他实施例中,整个控制块可以作为一项存储在高速缓冲存储器210的一个部分中。另外,虽然在一个或多个实施例中,重装控制逻辑226、入队控制逻辑208以及清出控制逻辑224直接耦合至存储器接口206,但在其他实施例中,重装控制逻辑226、入队控制逻辑208以及清出控制逻辑224可以通过的控制逻辑耦合至存储器接口206,所述控制逻辑跟踪对存储器接口的大量操作,并保证对存储器带宽的高效利用。可以使用多于或少于所述数目的高速缓存器项。另外,除了在调度时机期间对一个连接进行服务之外,在其他实施例中,还可以在调度时机期间对多个连接进行服务。
因此,虽然针对其示例性实施例描述了本发明,但是应该理解其他实施例也落入由权利要求所限定的本发明的精神与范围之内。
权利要求
1.一种为网络处理器调度连接的方法,包括以下步骤在高速缓冲存储器中,根据存储在相应于每个连接的控制结构中的服务质量参数,调度多个待服务连接;以及在调度时机期间在所述高速缓冲存储器中,标识所述多个待服务连接中的一个或多个;选择所标识的待服务连接中的一个;对所选择的连接进行服务;访问在所述高速缓冲存储器中的、包括所述服务质量参数的控制结构的一个或多个部分,所述服务质量参数相应于所选择的连接;计算对所选择的连接进行服务的下一服务时间,所述下一服务时间基于所述服务质量参数;以及根据所述下一服务时间,确定是否在所述高速缓冲存储器与日程表之一中调度所选择的待服务连接。
2.根据权利要求1的方法,还包括以下步骤在每个随后的调度时机期间,对在所述高速缓冲存储器中所标识的待服务的一个或多个连接中的剩余的一个进行服务,直至对所有所标识的待服务的一个或多个连接进行了服务。
3.根据权利要求1的方法,其中所述根据存储在相应于每个连接的控制结构中的服务质量参数,调度多个待服务连接的步骤包括从第一连接接收数据;确定相应于第一连接的控制结构的项是否包含在所述高速缓冲存储器与外部存储器之一中;访问所述控制结构的一个或多个部分;计算对第一连接进行服务的服务时间,所述服务时间基于所述服务质量参数;确定是否在所述高速缓冲存储器与日程表之一中调度待服务的第一连接;以及如果确定在所述高速缓冲存储器中调度第一连接,则根据存储在相应于第一连接的控制结构中的服务质量参数,在所述高速缓冲存储器中调度待服务的第一连接。
4.根据权利要求1的方法,其中根据存储在相应于每个连接的控制结构中的服务质量参数,调度多个待服务连接的步骤包括在高速缓冲存储器项中,存储相应于所述多个连接的每一个连接的控制结构的一个或多个部分。
5.根据权利要求1的方法,其中在所述高速缓冲存储器中,标识所述多个待服务连接中的一个或多个的步骤包括使用键值,以在所述高速缓冲存储器中标识所述多个连接中的一个或多个包含了匹配所述键值的服务时间的连接,所述服务时间基于所述服务质量参数。
6.根据权利要求5的方法,还包括以下步骤当所述下一服务时间与所述键值之间的差异近似小于预定数目的调度时机时,在所述高速缓冲存储器中调度所选择的待服务连接。
7.根据权利要求5的方法,还包括以下步骤当所述下一服务时间与所述键值之间的差异近似大于或等于预定数目的调度时机时,在所述日程表中调度所选择的待服务连接。
8.根据权利要求1的方法,其中所述访问在所述高速缓冲存储器中的控制结构的一个或多个部分的步骤包括至少以下之一从片上存储器(on chipmemory)中读取,以及向片上存储器写入。
9.根据权利要求1的方法,其中所述计算对所选择的连接进行服务的下一服务时间的步骤包括计算在对所选择的连接进行服务之前,要等待多少个调度时机。
10.一种为网络处理器调度连接的装置,包括外部存储器;以及调度逻辑,具有高速缓冲存储器以及日程表,耦合至所述外部存储器,并且用来在所述高速缓冲存储器中,根据存储在相应于每个连接的控制结构中的服务质量参数,调度多个待服务连接;以及在调度时机期间在所述高速缓冲存储器中,标识所述多个待服务连接中的一个或多个;选择所标识的待服务连接中的一个;对所选择的连接进行服务;访问在所述高速缓冲存储器中的、包括所述服务质量参数的控制结构的一个或多个部分,所述服务质量参数相应于所选择的连接;计算对所选择的连接进行服务的下一服务时间,所述下一服务时间基于所述服务质量参数;以及根据所述下一服务时间,确定是否在所述高速缓冲存储器与日程表之一中调度所选择的待服务连接。
11.根据权利要求10的装置,其中所述调度逻辑还用来在每个随后的调度时机期间,对在所述高速缓冲存储器中所标识的待服务的一个或多个连接中的剩余的一个进行服务,直至对所有所标识的待服务的一个或多个连接进行了服务。
12.根据权利要求10的装置,其中所述调度逻辑还用来从第一连接接收数据;确定相应于第一连接的控制结构的项是否包含在所述高速缓冲存储器与外部存储器之一中;访问所述控制结构的一个或多个部分;计算对第一连接进行服务的服务时间,所述服务时间基于所述服务质量参数;确定是否在所述高速缓冲存储器与日程表之一中调度待服务的第一连接;以及如果确定在所述高速缓冲存储器中调度第一连接,则根据存储在相应于第一连接的控制结构中的服务质量参数,在所述高速缓冲存储器中调度待服务的第一连接。
13.根据权利要求10的装置,其所述调度逻辑还用来在高速缓冲存储器项中,存储相应于所述多个连接的每一个连接的控制结构的一个或多个部分。
14.根据权利要求10的装置,其中所述调度逻辑还用来使用键值,以在所述高速缓冲存储器中标识所述多个连接中的一个或多个包含了匹配所述键值的服务时间的连接,所述服务时间基于所述服务质量参数。
15.根据权利要求14的装置,其中所述调度逻辑还用来当所述下一服务时间与键值时间之间的差异近似小于预定数目的调度时机时,在所述高速缓冲存储器中调度所选择的待服务连接。
16.根据权利要求14的装置,其中所述调度逻辑还用来当所述下一服务时间与所述键值之间的差异近似大于或等于预定数目的调度时机时,在所述日程表中调度所选择的待服务连接。
17.根据权利要求10的装置,其中所述调度逻辑还用来进行至少以下之一从片上存储器中读取,以及向片上存储器写入。
18.根据权利要求10的装置,其中所述调度逻辑还用来计算在对所选择的连接进行服务之前,要等待多少个调度时机。
19.根据权利要求10的装置,其中所述调度逻辑包括重装控制逻辑,耦合至所述高速缓冲存储器、重装日程表、外部存储器以及清出控制逻辑,用来在所述重装日程表中,调度相应于待服务连接的控制结构的一个或多个部分;从所述重装日程表中,检索所述相应于待服务连接的控制结构的一个或多个部分;以及在所述高速缓冲存储器中,调度相应于待服务连接的所检索的控制结构的一个或多个部分;入队控制逻辑,耦合至所述高速缓冲存储器以及外部存储器,用来在所述高速缓冲存储器中,调度相应于待服务连接的控制结构的一个或多个部分;出队控制逻辑,耦合至所述高速缓冲存储器,用来在所述高速缓冲存储器中,标识待服务的多个连接中的一个或多个;选择所标识的待服务连接中的一个;以及对所选择的连接进行服务;以及清出控制逻辑,耦合至所述高速缓冲存储器以及外部存储器,用来检索相应于已在所述高速缓冲存储器中调度的连接的控制结构的一个或多个部分;以及确定是否输出所述控制结构的一个或多个部分到所述外部存储器与重装控制逻辑中的一个。
20.根据权利要求19的装置,其中所述高速缓冲存储器包括时间戳内容可寻址存储器;流标识内容可寻址存储器;以及流控制块存储器;其中所述时间戳内容可寻址存储器、流标识内容可寻址存储器以及流控制块存储器用来存储每个高速缓冲存储器项的一个或多个部分。
21.一种用来调度连接的方法,包括在调度时机期间根据相应于多个连接中每一个的控制结构的一个或多个部分,在所述高速缓冲存储器中,标识被调度进行服务的多个连接中的一个或多个;对所标识的连接中的一个进行服务;以及根据相应于已接受服务的连接的控制结构的一个或多个部分,在所述高速缓冲存储器与日程表之一中,调度待再次服务的已接受服务的连接。
22.根据权利要求1的方法,还包括以下步骤在随后的每个调度时机期间,对所标识的连接中剩余的一个进行服务,直至对所有所标识的连接进行了服务。
全文摘要
根据第一方面,提供了一种为网络处理器调度连接的方法。该方法包括以下步骤在高速缓冲存储器中,根据存储在相应于每个连接的控制结构中的服务质量参数,调度多个待服务连接;以及在调度时机期间(1)在高速缓冲存储器中,标识多个连接中的一个或多个待服务连接;(2)选择所标识的待服务连接中的一个;(3)对所选择的连接进行服务;(4)访问在高速缓冲存储器中的控制结构的一个或多个部分;(5)计算对所选择的连接进行服务的下一服务时间;以及(6)根据下一服务时间,确定是否在高速缓冲存储器与日程表之一中调度所选择的待服务连接。还提供了许多其他方面。
文档编号H04L29/08GK1602014SQ20041008244
公开日2005年3月30日 申请日期2004年9月22日 优先权日2003年9月25日
发明者莱尔·E·格罗斯巴克, 格伦·H·汉德洛格滕, 詹姆斯·F·迈科斯, 戴维·A·诺加德 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1