网络处理器中分组描述符字段位置的分配 【技术领域】
本发明涉及连网通信系统领域,更具体地说,涉及使对存储器的访问次数降至最小。
背景技术
分组交换网络具有用于在与网络相连的发送器和接收器之间传输数据的交换点或交换节点。这些交换点执行的交换事实上是把交换点或节点接收的数据的分组或“帧”传给网络中的另一节点的操作。这种交换操作是借助其通过分组交换网络转移通信数据的手段。
每个节点可以包括配置成处理数据分组或帧的分组处理器。每个数据帧可与配置成描述相关数据帧的帧控制块(FCB)有关。通常,FCB包括各种信息字段,信息字段由分组处理器中的存储器,例如四元数据速率静态随机存取存储器(QDR SRAM)提供。即,通过访问分组处理器中的存储器,例如QDR SRAM,获得FCB中的信息字段。
于是,希望限制字段控制块中需要信息地字段的数目,从而减少存储器访问次数,提高存储器空间效率,即存储器的带宽的效率。
【发明内容】
本发明提供一种表现为第一和第二控制块的逻辑字段控制块(FCB),第一控制块与第一存储器相关,第二控制块与第二存储器相关。每个存储器,即第一和第二存储器还可分别和分组处理器的一个数据流单元和一个调度器相关。分组处理器的数据流单元可被配置成接收并传送数据帧。分组处理器的调度器可被配置成调度要传送给分组交换网络中的另一交换机或端口的数据帧。当FCB驻留在数据流单元中的一个队列中时,信息可保存在第一控制块的字段中,而不是保存在第二控制块的字段中。由于不访问第二存储器来相对于第二控制块的字段进行读取/写入操作,因此提高了第二存储器的带宽效率。当FCB驻留在调度器中的一个队列中时,信息可保存在第二控制块的字段中,而不是保存在第一控制块的字段中。由于不访问第一存储器来相对于第一控制块的字段进行读取/写入操作,因此提高了第一存储器的带宽效率。
根据一方面,本发明提供一种系统,包括:处理数据帧的处理器,其中所述处理器包括:接收和传输所述数据帧的数据流单元,其中每个所述数据帧具有相关的帧控制块,每个所述帧控制块包括第一和第二控制块;与所述数据流单元耦接的第一存储器,其中所述第一存储器包括第一帧缓冲器控制单元,其中所述第一帧缓冲器控制单元保存所述帧控制块的所述第一控制块的字段信息;和与所述数据流单元耦接的调度器,其中所述调度器调度所述数据流单元接收的数据帧,其中所述调度器包括第二存储器,其中所述第二存储器包括第二帧缓冲器控制单元,所述第二帧缓冲器控制单元保存所述帧控制块的所述第二控制块的字段信息。
最好,数据流单元包括若干队列,其中一个或多个所述帧控制块驻留在所述若干队列之一中。在优选实施例中,驻留于所述数据流单元的所述若干队列之一中的一个或多个所述帧控制块的所述第一控制块的字段中的信息保存在所述第一存储器的所述第一帧缓冲器控制单元中。
适宜地,调度器包括第一队列,其中一个或多个所述帧控制块驻留在所述第一队列中。更适宜的是,驻留在所述第一队列中的一个或多个所述帧控制块的所述第二控制块的字段中的信息保存在所述第二存储器的所述第二帧缓冲器控制单元中。
根据另一方面,本发明提供一种降低为获得帧控制块中的所需信息,访问存储器的次数的方法,其中每个所述帧控制块包括第一控制块和第二控制块,其中所述第一控制块与第一存储器相关,所述第二控制块与第二存储器相关,所述第一存储器包括第一帧缓冲器控制单元,所述第一帧缓冲器控制单元保存所述帧控制块的所述第一控制块的字段信息,所述第二存储器包括第二帧缓冲器控制单元,所述第二帧缓冲器控制单元保存所述帧控制块的所述第二控制块的字段信息,所述方法包括下述步骤:访问所述第一存储器,以便读取或写入一个或多个所述帧控制块的所述第一控制块的字段中的信息;和访问所述第二存储器,以便读取或写入一个或多个所述帧控制块的所述第二控制块的字段中的信息。
可取的是,一个或多个所述帧控制块驻留在数据流单元中的若干队列之一中,其中所述数据流单元与所述第一存储器相关。更优选的是,当所述一个或多个帧控制块驻留在所述数据流单元中的所述若干队列之一中时,访问第一存储器,以便读取或写入一个或多个所述帧控制块的所述第一控制块的字段中的信息。最好,一个或多个所述帧控制块驻留在调度器中的一个队列中,其中所述调度器与所述第二存储器相关。适宜的是,当所述一个或多个帧控制块驻留在所述调度器的所述队列中时,访问第二存储器,读取或写入一个或多个所述帧控制块的所述第二控制块的字段中的信息。
根据另一方面,本发明提供一种保存在计算机可读存储介质上的计算机程序产品,当在计算机系统上运行时,指令计算机系统实现如上所述的系统。
【附图说明】
下面参考附图中图解说明的本发明的优选实施例,举例说明本发明,其中:
图1图解说明根据本发明配置的分组处理器;
图2图解说明根据本发明配置的数据流单元;
图3是降低为获得帧控制块中的所需信息,访问存储器的次数的方法的流程图;
图4图解说明本发明的驻留在数据流单元的FCB自由队列中的FCB的基本FCB的一个实施例;
图5图解说明本发明的驻留在数据流单元的FCB自由队列中的FCB的流式FCB的一个实施例;
图6图解说明本发明的驻留在数据流单元的GQ中的FCB的基本FCB的一个实施例;
图7图解说明本发明的驻留在数据流单元的GQ中的FCB的流式FCB的一个实施例;
图8图解说明本发明的驻留在调度器的流队列中的FCB的基本FCB的一个实施例;
图9图解说明本发明的驻留在调度器的流队列中的FCB的流式FCB的一个实施例;
图10图解说明本发明的驻留在数据流单元的TBQ中的FCB的基本FCB的一个实施例;
图11图解说明本发明的驻留在数据流单元的TBQ中的FCB的流式FCB的一个实施例。
【具体实施方式】
本发明提供一种降低为获得帧控制块中所需字段信息,访问存储器的次数的方法和系统。在本发明的一个实施例中,系统包括配置成处理数据帧的处理器。处理器可包括配置成接收和传送数据帧的数据流单元,每个数据帧可以具有相关的帧控制块。每个帧控制块可包括第一和第二控制块。处理器还可包括与数据流单元耦接的第一存储器,第一存储器包括第一帧缓冲器控制单元。第一帧缓冲器控制单元可保存帧控制块的第一控制块的字段信息。处理器还可包括与数据流单元耦接的调度器,调度器被配置成调度数据流单元接收的数据帧。调度器可包括第二存储器,第二存储器包括第二帧缓冲器控制单元。第二帧缓冲器控制单元可保存帧控制块的第二控制块的字段信息。当帧控制块排队驻留在数据流单元中时,信息可保存在第一控制块的字段中,而不是保存在第二控制块的字段中。由于未访问第二存储器来相对于第二控制块中的字段进行读/写操作,因此提高了第二存储器的带宽的效率。当帧控制块排队驻留在调度器中时,信息可保存在第二控制块的字段中,而不是保存在第一控制块的字段中。由于未访问第一存储器来相对第一控制块中的字段进行读/写操作,因此提高了第二存储器的带宽的效率。
图1图解说明了分组处理器100。分组处理器100可包括数据流单元110,数据流单元110被配置成从分组交换网络的特定交换机(未示出)或者端口(未示出)接收数据的数字分组,即数据帧,并把数据的数字分组,即数据帧传送给分组交换网络中的另一交换机或端口,例如交换机/端口120。每个数据帧可与一个帧控制块(FCB)相关,FCB描述数据的相关帧。与一个数据帧相关的每个FCB可和一个或多个缓冲器控制块(BCB)相关,与FCB相关的每个BCB可与数据存储单元140中的一个缓冲器相关。BCB可被配置成描述与下一链接的BCB相关的缓冲器,如同在美国专利申请序列号09/791336(代理人索引RAL000095下的同时待审PCT申请)中描述的那样。在一个实施例中,数据流单元10可驻留在集成电路,即集成芯片上。数据流单元110可与数据存储单元140耦接,数据存储单元140被配置成临时保存数据流单元110从分组交换网络中的一个交换机(未示出)或端口(未示出)接收的数据帧。数据流单元110还可与调度器130耦接,调度器130被配置成调度将从数据流单元110传送给交换机/端口120的数据帧。在一个实施例中,调度器130可驻留在集成电路,即集成芯片上。此外,数据流单元110还可与嵌入式处理器150耦接,嵌入式处理器150被配置成处理数据流单元110接收的数据帧。
图2更详细地说明了数据流单元110。数据流单元110可包括接收器控制器203,接收器控制器203被配置成接收和临时保存从分组交换网络中的交换机(未示出)或者端口(未示出)接收的数据分组,即数据帧。数据流单元110还可包括发射器控制器201,发射器控制器201被配置成修改帧数据,并把修改后的帧数据传送给分组交换网络中的交换机(未示出)或者端口(未示出)。数据流单元110还可包括嵌入式处理器接口控制器202,嵌入式处理器接口控制器202被配置成交换要被嵌入式处理器150处理的帧。
数据分组,即数据帧可由端口/交换机接口单元221接收。当数据流单元110按照输出(engress)模式工作时,端口/交换机接口单元221可从分组交换网络中的交换机(未示出)接收数据。否则,当数据流单元110按照输入(ingress)模式工作时,端口/交换机接口单元221可从用作到分组交换网络的接口的端口(未示出)接收数据。在被保存在数据存储单元140中之前,数据流单元110接收的数据可临时保存在接收预备区存储器220中,数据存储器单元140可由若干切片(slice)205AF表示。切片205AF可整体地或者单独地分别称为切片205。图2中的切片205的数目是例证性的,根据本发明的数据流单元110的实施例可具有其它预定数目的切片205。每个切片可包括若干缓冲器。每个切片可代表一片存储器,例如动态随机存取存储器(DRAM),从而帧数据可被写入不同切片中的不同缓冲器中,以使存储器带宽达到最大。存储器判优器204可被配置成收集来自于接收器控制器203、发射器控制器201和嵌入式处理器接口控制器202的请求,例如读取请求、写入请求,随后调度对特定数据存储存储器切片,即特定切片205中的特定缓冲器的访问。例如,接收器控制器203可被配置成向存储器判优器204发出写入请求,以便把接收的数据写入特定切片205中的各个缓冲器中。
如上所述,帧数据可保存在数据存储单元140,即若干切片205中。在一个实施例中,帧数据可以这样的方式保存在一个或多个切片205中的一个或多个缓冲器中,以致可通过使缓冲器链接在一起,重新组合每个特定帧中的数据。即,特定帧中的数据可保存在按照数据写入其中的顺序链接在一起的一个或多个缓冲器中。一个或多个缓冲器的链接可由与数据流单元110耦接的存储器229,例如四元数据速率静态随机存取存储器(QDR SRAM),中的缓冲器控制块单元(BCBU)208控制。BCBU 208可被配置成包括按照数据写入其中的顺序链接在一起的一个或多个缓冲器的地址。借助保存在BCBU208中的指针,可把包含相同帧的数据的不同缓冲器链接在一起。
如上所述,每个数据帧可与一个帧控制块(FCB)相关,FCB描述数据的相关帧。存储器210,例如QDR SRAM,中的帧控制块单元1(FCBU1)209可被配置成保存要填入FCB的字段中的信息,例如帧控制信息。即,可通过访问存储器210,即存储器210的FCBU1 209,获得FCB中的信息字段。在图3的说明中讨论了和保存信息字段的存储器210的FCBU1 209相关的其它细节。
通过把要处理的各帧的报头传送给嵌入式处理器150,保存在缓冲器中的帧数据可被嵌入式处理器150处理。如上所述,每帧数据可由一个FCB表示。这些FCB可临时保存在G队列(GQ)218中。分配器逻辑电路217可被配置成使下一FCB从GQ 218出列。一旦分配器逻辑电路217使下一FCB出列,那么分配器逻辑电路217向存储器判优器204发出读取请求,以便读取位于保存在与出列FCB相关的数据存储单元140中的帧的起点(即该帧报头)中的数据。嵌入式处理器150随后处理分配器逻辑电路217读取的数据。
一旦嵌入式处理器150处理了帧数据,那么向存储器判优器204发出把处理后的帧数据写入一个或多个切片205中的各个缓冲器中的写入请求的嵌入式处理器逻辑电路216,可把处理后的帧数据临时保存在数据存储单元140,即切片205中。
一旦嵌入式处理器150处理了帧数据,那么嵌入式处理器逻辑电路216还向调度器130发出与处理后的帧相关的FCB。调度器130可被配置成包括保存FCB的流队列223。调度器130还可包括位于存储器224,例如QDR SRAM内的帧控制块单元2(FCBU2)225,FCBU2 225被配置成类似于FCBU1 209工作。FCBU2 225可被配置成当FCB临时驻留于流队列223中时,保存要填入FCB的字段中的信息。在图3的说明中讨论了和保存信息字段的调度器130的存储器224内的FCBU2 225相关的其它细节。调度器130可被配置成把保存在流队列223中的FCB传送给目标刀形(blade)队列(TBQ)列队(enqueue)逻辑电路227,TBQ列队逻辑电路227被配置成把接收的FCB排列到TBQ 215中。
在TBQ 215中列队的FCB可由TBQ调度器228安排成从TBQ215出列,并被载入端口控制块(PCB)224中。TBQ调度器228可被配置成使下一FCB从TBQ 215出列,并把该FCB排列到PCB224中。一旦下一FCB被排列到PCB 224中,那么PCB 224可向存储器判优器204发出读取请求,以便读取位于保存在与出列FCB相关的数据存储单元140中的帧的起点(即帧报头)中的数据。在把处理后的帧数据传送给分组交换网络中的交换机(未示出)或者端口(未示出)之前,PCB 224读取的数据可临时保存在数据预备区存储器214中。为清楚起见,注意PCB 224可被配置成在每个特定读取请求中,读取保存在处理后的帧中的一部分数据。即,可在PCB 224提供的多个读取请求中读取保存在处理后的帧中的整个数据。一旦读取了保存在处理后的帧中的整个数据,那么数据存储单元140可保存另外的帧数据。
发射器控制器201还可包括帧改变预备区存储器213,帧改变预备区存储器213被配置成接收修改临时保存在数据预备区存储器214中的处理帧的命令。这些命令通常称为由嵌入式处理器150发出,并由嵌入式处理器逻辑216保存在特定缓冲器的特定存储区中的帧修改命令,如美国专利申请序列号09/792557中更详细说明的那样。在一个实施例中,PCB 224可被配置成取回保存在特定缓冲器的特定存储区中的帧修改命令,并把这些命令保存在帧改变预备区存储器213中。帧改变(FA)逻辑单元212可被配置成执行保存在帧改变预备区存储器213中的命令,以修改临时保存在数据预备区存储器214中的处理帧的内容。一旦FA逻辑单元212修改了处理帧的内容,那么可通过交换机/端口接口单元211传送修改后的处理帧。当数据流单元110按照输出模式工作时,交换机/端口接口单元211可把数据传送给用作到分组交换网络的接口的端口(未示出)。否则,当数据流单元110按照输入模式工作时,交换机/端口接口单元211可把数据传送给分组交换网络中的交换机(未示出)。
数据流单元110还可包括缓冲器控制块(BCB)判优器207,缓冲器控制块判优器207被配置成仲裁来自发射器控制器201、嵌入式处理器接口控制器202和接收器控制器203的不同BCB请求,以便相对于BCBU 208进行读取或写入操作。BCB判优器207可被配置成调度不同的访问,以便尽可能高效地利用存储器带宽。数据流单元110还可包括帧控制块(FCB)判优器206,FCB判优器206被配置成仲裁来自嵌入式处理器接口控制器202、接收器控制器203和发射器控制器201的不同FCB,以便相对于FCBU1 209进行读取或写入操作。
如上所述,每个数据帧可与一个FCB相关。由于处理帧从数据存储单元140(例如DDR DRAM)读取,并且处理帧被修改和被传送给分组交换网络中的交换机(未示出)或端口(未示出),因此与这种处理帧相关的FCB停止表示特定的数据帧。一旦FCB不再与帧数据相关,FCB可保存在FCB判优器206内的FCB自由队列222中。FCB自由队列222可被配置成包括不再与特定帧数据相关的若干FCB。注意,FCB自由队列222可包括任意数目的不再与特定帧数据相关的FCB。一旦数据流单元110接收一个数据分组,即一个数据帧,那么接收器控制器203的重装控制块(RCB)219可使来自FCB自由队列的特定FCB与接收的数据帧关联起来,随后,新关联的FCB可由RCB 219排列到GS 218中。
如上所述,每个数据帧可与一个FCB相关。与一个数据帧相关的每个FCB可与一个或多个BCB相关,与FCB相关的每个BCB可与数据存储单元140的特定缓冲器相关。一旦保存在数据存储单元140的缓冲器中的处理帧数据被发射器控制器201取回,随后被修改并被传送给分组交换网络中的交换机(未示出)或者端口(未示出),那么与不再包括任意帧数据的特定缓冲器相关的BCB停止包含任意有效信息。即,与不再包括任意帧数据的特定缓冲器相关的BCB包括无用的数据,因为与BCB相关的特定缓冲器不再包括任意帧数据。一旦BCB停止包含任意有效信息,即,一旦特定缓冲器中的帧数据已被传送,那么BCB可保存在BCB判优器206内的BCB自由队列206中。BCB自由队列226可被配置成包括不包含任意有效信息的若干BCB。注意,BCB自由队列可包括任意数目的不包含任意有效信息的BCB。一旦接收器控制器203把接收的帧数据写入数据存储单元140的特定缓冲器中,那么接收器控制器203的RCB219可把有效信息写入BCB自由队列226中的特定BCB中,所述特定BCB与保存接收的数据帧的特定缓冲器相关。
如上所述,FCB可临时驻留在FCB自由队列222中,或者临时驻留在其它队列,例如GQ 218、流队列213、TBQ 215之一中。在图3中讨论了FCB的“生命周期”的更详细说明,其中FCB最初可保存在FCB自由队列222中,随后通过队列(例如GQ 218、流队列223、TBQ 215)转移,直到被列队到FCB自由队列222中为止。在FCB的“生命周期”内,因为FCB可临时从FCB自由队列222移除,因此可认为该FCB从FCB自由队列222被租用。注意各个队列,例如GQ 218、流队列223、TBQ 215、FCB自由队列222都可同时包括一个或多个不同FCB。还要注意在其“生命周期”内,FCB临时驻留在每个队列中,例如GQ 218、流队列223、TBQ215、FCB自由队列222。
如同在背景技术部分中所述那样,FCB包括各种信息字段,信息字段由分组处理器100中的存储器210和224供给。即,通过访问分组处理器100中的存储器210,例如QDR SRAM,获得FCB中的信息字段。于是最好如下所述限制字段控制块中需要信息的字段的数目,从而减少存储器访问的次数,从而降低对存储器210和224的带宽要求。
图3图解说明了减少为获得帧控制块中的所需字段信息,访问存储器,例如存储器210、存储器224的次数,从而提高存储器,例如存储器210、存储器224的带宽效率的方法300的流程图。存储器210是与数据流单元110相关的存储器;存储器224是与调度器130相关的存储器。
如上所述,每帧数据可与一个帧控制块(FCB)相关。在本发明的一个实施例中,逻辑FCB可表示成两个不同的控制块,因为存在两个存储器210和224。例如,基本FCB(BFCB)可与存储器210相关。流式FCB(FFCB)可与存储器224相关。这两个不同的控制块,即BFCB和FFCB可共用相同的存储器地址,即物理存储器地址,但是将在这两个不同控制块的字段中提供的数据可驻留在独立的存储器,例如存储器210、存储器224中。
在步骤301中,RCB 219可使驻留在FCB判优器206的FCB自由队列222中的FCB从FCB自由队列222出列。图4图解说明了驻留在FCB自由队列222中的FCB的BFCB 400的字段。BFCB400可包括两个条目或者两行,每个条目为36位。注意,BFCB 400可包括任意数目的字段和任意的行数,所述字段和行包含任意数目的二进制位,图4只是说明性的。
驻留在FCB自由队列222中的FCB的BFCB 400可包括两个字段,例如NFA(下一FCB地址)和ECC(纠错码)。NFA字段指向下一FCB地址,从而允许FCB的链接。ECC字段可包括纠错码用代码,如美国专利申请序列号09/792533中所述。
图5图解说明了驻留在FCB自由队列222中的FCB的FFCB500的字段。FFCB 500可包括一个条目或一行,所述条目或行为36位。注意,FFCB 500可包括任意数目的字段和任意的行数,所述字段和行包括任意数目的二进制位,图5是说明性的。
驻留在FCB自由队列222中的FCB的FFCB 500可包括两个字段,例如NFA、与FCB相关的一个或多个缓冲器的字节计数(BCNT),以及一个奇偶校验位(PTY)。NFA字段可包括指向下一FCB地址,从而允许FCB自由队列222中FCB的链接的指针。BCNT字段可包括与FCB相关的一个或多个BCB的字节计数长度。但是,可能不访问存储器224的FCBU2 225,取回要保存在驻留于FCB自由队列222中的FCB的FFCB 500的字段中的信息,因为驻留于FCB自由队列222中的FCB的FFCB 500可能与一帧数据无关。即,驻留在FCB自由队列222中的FCB的FFCB 500的字段不重要,于是不必访问与FFCB 500相关的存储器224的FCBU2 225。在美国专利申请序列号09/791336中描述了和FCB与一个或多个BCB的关联,以及保存在FCB的字段中的信息有关的其它细节。在美国专利申请序列号09/792533中提供了FCB中的奇偶校验位的细节。
信息可保存在BFCB 400中,而不是保存在FFCB 500中,因为FCB自由队列222由数据流单元110处理,而不受调度器130处理,下面将进一步说明。于是,驻留在FCB自由队列222中的FCB的BFCB 400中的字段可包括有效信息;然而,驻留在FCB自由队列222中的FCB的FFCB 500中的字段可包含无效信息。
如上所述,当数据流单元110通过端口/交换机接口单元221,从分组交换网络中的交换机(未示出)或者用作到分组交换网络的接口的端口(未示出)接收帧数据时,在步骤301中,数据流单元110的RCB 219使一个FCB从FCB自由队列222出列,以使接收的帧数据和FCB相关联。通过RCB 219向存储器210的FCBU1 209发出取回FCB自由队列222中FCB的BFCB 400中字段NFA和ECC的信息的读取请求,使该FCB从FCB自由队列222出列。数据流单元110的RCB 219可只向存储器210的FCBU1 209发出读取请求,而不向存储器224的FCBU2 225发出读取请求,因为存储器210与数据流单元110相关,而存储器224与调度器130相关。于是,RCB219不访问存储器224的FCBU2 225来取回驻留在FCB自由队列222中的FCB的FFCB 500的字段,例如NFA、BCNT的信息。由于不访问存储器224,因此提高了存储器224的带宽效率。
在步骤302中,RCB 219可把从FCB自由队列222出列的FCB排列到GQ 218中。图6图解说明了驻留在GQ 218中的FCB的BFCB 600的字段。BFCB 600可包括两个条目,每个条目为36位。注意,BFCB 600可包括包含任意位数的任意数目的条目,图6是说明性的。
驻留在GQ 218中的FCB的BFCB 600可包括第一条目中的两个字段,例如下一FCB地址(NFA)、字节计数长度(BCNT),以及一个奇偶校验位(PTY)。驻留于GQ 218中的FCB的BFCB600的第二条目可包括三个字段,例如第一BCB地址(FBA),和与该FCB相关联的第一BCB有关的缓冲器的起始字节位置(SBP),和与该FCB相关联的第一BCB有关的缓冲器的结束字节位置(EBP),以及奇偶校验位(PTY)、FCB类型位(FTO)和异常终止位(ABOR)。NFA字段可指向GQ 218中的下一FCB地址,从而允许GQ 218中FCB的链接。BCNT字段可包括与该FCB相关的一个或多个BCB的字节计数长度。FBA可包括与该FCB相关的第一BCB的地址。SBP可包括和与该FCB相关联的第一BCB有关的缓冲器的起始字节位置。EBP可包括和与该FCB相关联的第一BCB有关的缓冲器的结束字节位置。如上所述,在美国专利申请序列号09/791336中描述了和保存在FCB的字段,例如FBA、SBP、EBP中的信息有关的其它细节。FTO位可包括FCB的类型。ABOR位可指示与该FCB相关的帧数据遇到异常情况,该FCB不应被认为有效。
图7图解说明了驻留在GQ 218中的FCB的FFCB 700的字段。FFCB 700包括一个36位的条目。注意,FFCB 700可包括任意位数的任意数目的条目,图7只说明性的。
驻留于GQ 218中的FCB的FFCB 700可包括两个字段,例如NFA、帧字节计数(BCNT),以及一个奇偶校验位(PTY)。NFA字段可指向下一FCB地址,从而允许GQ 218中FCB的链接。BCNT字段可包括与该FCB相关的一个或多个BCB的字节计数长度。但是,不访问存储器224的FCBU2 225来取回保存在驻留于GQ218中的FCB的FFCB 700的字段中的信息,因为驻留于GQ 218中的FCB的FFCB 700可能与一帧数据无关。即,驻留于GQ 218中的FCB的FFCB 700的字段不重要,于是,不必访问与FFCB 700相关的存储器224的FCBU2 225。
如同下面进一步说明的那样,由于GQ 218由数据流单元110处理,而不是由调度器130处理,因此信息可保存在BFCB 600中,而不是保存在FFCB 700中。于是,驻留于GQ 218中的FCB的BFCB600中的字段可包括有效信息;而驻留于GQ 218中的FCB的FFCB700中的字段可包含无效信息。
如上所述,RCB 219使从FCB自由队列222出列的FCB排列到GQ 218中。RCB 219可向存储器210的FCBU1 209发出两个写入请求,把FCB的BFCB 600的字段中的信息写入GQ 218中。第一写入请求是写入第一条目的字段,例如NFA、BCNT中的信息。第二写入请求是写入第二条目的字段,例如FBA、SBP、EBP中的信息。RCB 219只可以把这两个写入请求发给存储器210的FCBU1209,而不发给存储器224的FCBU2 225,因为存储器210与数据流单元110相关,而存储器224与调度器130相关。于是,RCB 219不访问存储器224的FCBU2 225来取回驻留于FCB自由队列222中的FCB的FFCB 500的字段,例如NFA、BCNT的信息。由于不访问存储器224,因此提高了存储器224的带宽效率。
在步骤303中,分配器逻辑单元217可使GQ 218中的FCB出列,从而如图2的说明中讨论的那样,嵌入式处理器150能够处理与该FCB相关的帧数据。分配器逻辑单元217可向存储器210的FCBU1 209发出两个读取请求,读取GQ 218中该FCB的BFCB 600的字段中的信息。第一读取请求是读取第一条目的字段,例如NFA、BCNT中的信息。第二读取请求是读取第二条目的字段,例如FBA、SBP、EBP中的信息。分配器逻辑单元217只可以把这两个读取请求发给存储器210的FCBU1 209,而不发给存储器224的FCBU2 225,因为存储器210与数据流单元110相关,而存储器224与调度器130相关。即,分配器逻辑单元217只向存储器210的FCBU1 209发出读取请求,而不向存储器224的FCBU2发出读取请求,因为GQ 218中该FCB的FFCB 700的字段中的信息不重要,即是无效信息。由于不访问存储器224,因此提高了存储器224的带宽效率。
在步骤304中,在调度器130中,可使该FCB排列到流队列223中。如上所示,嵌入式处理器逻辑单元216把与处理帧数据相关的FCB发给调度器130。调度器130可被配置成把接收的FCB保存在流队列223中。图8图解说明了驻留于流队列223中的FCB的BFCB 800的字段。BFCB可包括两个条目,每个条目为36位。注意BFCB 800可包括任意数目的字段和任意行数,所述字段和行可包括任意数目的二进制位,图8是说明性的。
驻留于流队列223中的FCB的BFCB 800可包括第一条目中的一个字段,例如下一帧控制缓冲器地址(NFA),和第二条目中的三个字段,例如第一BCB地址(FBA),和与该FCB相关联的第一BCB有关的缓冲器的起始字节位置(SBP),和与该FCB相关联的第一BCB有关的缓冲器的结束字节位置(EBP)。NFA字段可指向流队列223中的下一FCB地址,从而允许流队列223中FCB的链接。FBA可包括与该FCB相关的第一BCB的地址。SBP可包括和与该FCB相关联的第一BCB有关的缓冲器的起始字节位置。EBP可包括和与该FCB相关联的第一BCB有关的缓冲器的结束字节位置。但是,不访问存储器210的FCBU1 209来取回要保存在驻留于流队列223中的FCB的BFCB 800的字段中的信息,因为驻留于流队列223中的FCB的BFCB 800可能与一帧数据无关。驻留于流队列223中的FCB的BFCB 800的第一条目中的字段可包含不重要的信息,第二条目中的字段可包含需要被记住的信息。于是,不必访问与BFCB 800相关的存储器210的FCBU1 209。
即,驻留于流队列223中的该FCB的BFCB 800的字段不重要,于是,不必访问与BFCB 800相关的存储器210的FCBU1 209。
图9图解说明了驻留于流队列223中的FCB的FFCB 900的字段。FFCB 900可包括一个36位的条目。注意,FFCB 900可包括任意数目的字段和任意行数,所述字段和行可包括任意数目的二进制位,图9是说明性的。
驻留于流队列223中的FCB的FFCB 900可包括两个字段,例如NFA和帧字节计数(BCNT),以及一个奇偶校验位(PTY)。NFA字段可指向下一FCB地址,从而允许流队列223中FCB的链接。BCNT字段可包括与该FCB相关的一个或多个BCB的字节计数长度。
信息保存在FFCB 900中,而不是保存在BFCB 800中,因为流队列223由调度器130处理,不是由数据流单元110处理,下面将进一步说明。
如上所述,在处理帧数据之后,嵌入式处理器逻辑单元216把与处理帧数据相关的FCB发给调度器130。调度器130可被配置成在步骤304中,把接收的FCB排列到流队列223中。调度器130可向存储器224的FCBU2 225发出一个写入请求,写入流队列223中该FCB的FFCB 900的字段中的信息。写入请求是写入FFCB 900的字段,例如NFA、BCNT中的信息。调度器130只可以向存储器224的FCBU2 225,而不向存储器210的FCBU1 209发出一个读取请求。因为存储器224与调度器130相关,而存储器210与数据流单元110相关。由于不访问存储器210,因此提高了存储器210的带宽效率。
在步骤305中,调度器130可使流队列223中的FCB出列。调度器130可向存储器224的FCBU2 225发出一个读取请求,读取流队列223中该FCB的FFCB 900的字段中的信息。读取请求是读取FFCB 900的字段,例如NFA、BCNT中的信息。调度器130只向存储器224的FCBU2,而不向存储器210的FCBU1 209发出读取请求,因为存储器224与调度器130相关,而存储器210与数据流单元110相关。即,调度器130可向存储器224的FCBU2 225和存储器210的FCBU1 209发出一个读取请求,因为流队列223中FCB的BFCB 800的字段中的信息不重要,即是无效信息。由于不访问存储器210,因此提高了存储器210的带宽效率。
在步骤306中,发射器控制器201的TBQ列队逻辑单元227可使从流队列223出列的FCB排列到TBQ 215中。图10图解说明了驻留于TBQ 215中的FCB的BFCB 1000的字段。BFCB 1000可包括两个条目,每个条目为36位。注意,BFCB 1000可包括任意数目的字段和任意行数,所述字段和行可包括任意数目的二进制位,图10是说明性的。
驻留于TBQ 215中的FCB的BFCB 1000可包括第一条目中的两个字段,例如下一帧控制缓冲器地址(NFA),与该FCB相关的一个或多个BCB的字节计数(BCNT)长度,以及一个奇偶校验位,和第二条目中的四个字段,例如第一BCB地址(FBA),和与该FCB相关联的第一BCB有关的缓冲器的起始字节位置(SBP),和与该FCB相关联的第一BCB有关的缓冲器的结束字节位置(EBP),帧类型字段(FT),以及一个奇偶校验位。NFA字段可指向TBQ 215中的下一FCB地址,从而允许TBQ 215中FCB的链接。BCNT字段可包括与该FCB相关的一个或多个BCB的字节计数长度。FBA可包括与该FCB相关的第一BCB的地址。SBP可包含和与该FCB相关联的第一BCB有关的缓冲器的起始字节位置。EBP可包括和与该FCB相关联的第一BCB有关的缓冲器的结束字节位置。FT字段可包括该FCB的类型。
图11图解说明了驻留于TBQ 215中的FCB的FFCB 1100的字段。FFCB可包括一个36位的条目。注意,FFCB 1100可包括任意数目的字段和任意行数,所述字段和行可包括任意数目的二进制位,图11是说明性的。
驻留于TBQ 215中的FCB的FFCB 1100可包括两个字段,例如NFA,与FCB相关的一个或多个BCB的字节计数(BCNT)长度,以及一个奇偶校验位(PTY)。NFA字段可指向下一FCB地址,从而允许TBQ 215中FCB的链接。BCNT字段可包含与该FCB相关的一个或多个BCB的字节计数长度。但是,不访问存储器224的FCBU2 225来取回要保存在驻留于TBQ 215中的FCB的FFCB1100的字段中的信息,因为驻留于TBQ 215中的该FCB的FFCB1100与一帧数据无关。即,驻留于TBQ 215中的该FCB的FFCB1100的字段不重要,于是不必访问与FFCB 1100相关的存储器224的FCBU2 225。
信息可保存在BFCB 1000中,而不是保存在FFCB 1100中,因为TBQ 215由数据流单元110处理,而不是由调度器130处理,下面将进一步说明。于是,驻留于TBQ 215中的该FCB的BFCB 1000的字段可包括有效信息;而驻留于TBQ 215中的该FCB的FFCB1100可不包含有效信息。
如上所述,TBQ列队逻辑单元227把从调度器130接收的FCB排列到TBQ 215中。TBQ列队逻辑单元227可向存储器210的FCBU1 209发出一个写入请求,写入TBQ 215中该FCB的BFCB1000的字段,例如NFA、BCNT中的信息。当发射器控制器201从调度器130收到该FCB时,TBQ列队逻辑单元227可从调度器130接收FFCB 900中BCNT字段中的信息的副本。随后,TBQ列队逻辑单元227可被配置成把FFCB 900的BCNT字段中的信息写入BFCB 1000的BCNT字段中。TBQ列队逻辑单元227不发出写入第二条目的字段中的信息的另一写入请求,因为当在流队列223中时,BFCB 800的第二条目的字段中的信息不被更新。从而,TBQ列队逻辑单元227只访问存储器210的FCBU1 209一次,而不是访问两次,从而提高了存储器210的带宽效率。此外,TBQ列队逻辑单元227只向存储器210的FCBU1 209,而不向存储器224的FCBU2 225发出一个写入请求,因为存储器210与数据流单元110相关,而存储器224与调度器130相关。于是,TBQ列队逻辑单元227不访问存储器224的FCBU2 225来写入驻留于TBQ 215中的该FCB的FFCB1100的字段,例如NFA、BCNT中的信息。由于不访问存储器224,因此提高了存储器224的带宽效率。
在步骤307中,TBQ调度器228可使TBQ 215中的FCB出列,从而如图2的说明中讨论的那样,TBQ调度器228可读取与该FCB相关的帧数据。TBQ调度器228可向存储器210的FCBU1 209发出两个读取请求,读取TBQ 215中该FCB的BFCB 1000的字段中的信息。第一读取请求是读取第一条目的字段,例如NFA、BCNT中的信息。第二读取请求是读取第二条目的字段,例如FBA、FT、SBP、EBP中的信息。TBQ调度器228只可以向存储器210的FCBU1 209,而不向存储器224的FCBU2 225发出这两个读取请求,因为存储器210与数据流单元110相关,而存储器224与调度器130相关。于是,TBQ调度器228不访问存储器224的FCBU2 225来取回用于驻留在TBQ 215中的该FCB的FFCB 1100的字段,例如NFA、BCNT的信息。由于不访问存储器224,因此提高了存储器224的带宽效率。
在步骤308中,一旦与该FCB相关的处理帧数据通过交换机/端口接口单元211被传送给分组交换网络中的交换机(未示出)或者用作到分组交换网络接口的端口(未示出),那么该FCB可排列到FCB判优器206的FCB自由队列222中。FCB判优器206可被配置成从发射器控制器的PCB 224接收与传送的处理帧数据相关的FCB,这里FCB可由PCB 224排列在FCB自由队列222中。
如上所述,图4图解说明了驻留在FCB自由队列222中的FCB的BFCB 400的字段。驻留于FCB自由队列222中的该FCB的BFCB 400可包括两个字段,例如NFA(下一FCB地址)、ECC(纠错码)。NFA字段指向下一FCB地址,从而允许FCB自由队列222中FCB的链接。ECC字段可包含纠错码用代码,如美国专利申请序列号09/792533中所述。
如上所述,图5图解说明了驻留在FCB自由队列222中的FCB的FFCB 500的字段。FFCB可包含一个36位的条目。驻留在FCB自由队列222中的该FCB的FFCB 500可包括两个字段,例如NFA,与该FCB相关的一个或多个BCB的字节计数(BCNT)长度,以及一个奇偶校验位(PTY)。NFA字段指向下一FCB地址,从而允许FCB自由队列222中FCB的链接。BCNT字段可包含与该FCB相关的一个或多个BCB的字节计数长度。
信息保存在BFCB 400中,而不是保存在FFCB 500中,因为FCB自由队列222由数据流单元110处理,而不是由调度器130处理,下面将进一步说明。于是,驻留在FCB自由队列222中的该FCB的BFCB 400中的字段可包含有效信息;而驻留在FCB自由队列222中的该FCB的FFCB 500中的字段可以包含无效信息。
如上所述,FCB判优器206可被配置成从发射器控制器的PCB224接收与传送的处理帧数据相关的FCB,这里该FCB可由PCB224排列到FCB自由队列222中。PCB 224可向存储器210的FCBU1 209发出一个写入请求,写入用于FCB自由队列222中该FCB的BFCB 400中的字段NFA和ECC的信息。PCB 224只可以向存储器210的FCBU1 209,而不是向存储器224的FCBU2 225发出写入请求,因为存储器210与数据流单元110相关,而存储器224与调度器130相关。于是,PCB 224不访问存储器224的FCBU2225来取回用于驻留在FCB自由队列222中的该FCB的FFCB 500的字段,例如NFA、BCNT的信息。由于不访问存储器224,因此提高了存储器224的带宽效率。
注意方法300描述了FCB的“生命周期”。还要注意方法300可描述网络处理器100中其它FCB的“生命周期”。另外要指出的是一个或多个不同的FCB可临时同时驻留在每个队列中,例如GQ218、流队列223、TBQ 215、FCB自由队列中。