CN101853211B - 涉及可变大小信元的共享存储器缓冲区的方法和设备 - Google Patents
涉及可变大小信元的共享存储器缓冲区的方法和设备 Download PDFInfo
- Publication number
- CN101853211B CN101853211B CN201010157923.XA CN201010157923A CN101853211B CN 101853211 B CN101853211 B CN 101853211B CN 201010157923 A CN201010157923 A CN 201010157923A CN 101853211 B CN101853211 B CN 101853211B
- Authority
- CN
- China
- Prior art keywords
- memory block
- section
- group
- cell
- register
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/60—Software-defined switches
- H04L49/608—ATM switches adapted to switch variable length packets, e.g. IP packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/24—Multipath
- H04L45/243—Multipath using M+N parallel active paths
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/43—Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/103—Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/104—Asynchronous transfer mode [ATM] switching fabrics
- H04L49/105—ATM switching elements
- H04L49/108—ATM switching elements using shared central buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9042—Separate storage for different parts of the packet, e.g. header and payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q11/00—Selecting arrangements for multiplex systems
- H04Q11/04—Selecting arrangements for multiplex systems for time-division multiplexing
- H04Q11/0428—Integrated services digital network, i.e. systems for transmission of different types of digitised signals, e.g. speech, data, telecentral, television signals
- H04Q11/0478—Provisions for broadband connections
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/10—Packet switching elements characterised by the switching fabric construction
- H04L49/101—Packet switching elements characterised by the switching fabric construction using crossbar or matrix
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/15—Interconnection of switching modules
- H04L49/1515—Non-blocking multistage, e.g. Clos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/251—Cut-through or wormhole routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/25—Routing or path finding in a switch fabric
- H04L49/252—Store and forward routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3072—Packet splitting
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
在一个实施例中,一种设备包括其中包括引导存储器区块的共享存储器缓冲区,和被配置为将一组段中的引导段发送到引导存储器区块的写复用模块。该组段包括一组可变大小信元的比特值。所述写复用模块进一步被配置为将该组段中的标识为尾随段的每一段发送到与所述引导存储器区块互相排斥的所述共享存储器的一部分。
Description
技术领域
这里所描述的实施例一般涉及缓冲器模块,具体来说,涉及与可变大小信元的共享存储器缓冲区相关的方法和设备。
背景技术
已知的低延迟共享存储器缓冲区可以用于许多类型的应用。例如,低延迟共享存储器缓冲区可以用于吞吐量相对来说比较高的网络交换机应用中以及并行计算系统中。这些已知的共享存储器缓冲区常常使用直通方法,其中,共享存储器缓冲区被配置为在例如信元的尾端(例如,尾部比特值)在共享存储器缓冲区的输入端口被完全接收到之前,发送信元的前端(例如,起始比特值)。这些已知共享存储器缓冲区可以被配置为处理具有固定位宽度的信元和/或处理具有等于信元的最小位宽度的位宽度的段。然而,这些已知共享存储器缓冲区常常以不理想的管理开销水平处理信元和/或没有被配置为以所理想的方式处理可变大小信元。
因此,需要被配置为处理可变大小信元的共享存储器缓冲区的方法和设备。
发明内容
在一个实施例中,一种设备包括共享存储器缓冲区,该共享存储器缓冲区包括引导存储器区块和被配置为将一组段中的引导段发送到引导存储器区块的写复用模块。该组段包括一组可变大小信元的比特值。所述写复用模块进一步被配置为将该组段中被标识为尾随段的每个段发送到与所述引导存储器区块互斥的所述共享存储器的一部分。
附图说明
图1A是显示了根据实施例的缓冲器模块的示意图。
图1B是显示了根据实施例的在图1A中所显示的缓冲器模块中处理的数据信号的一部分的示意图。
图2是显示了根据实施例的缓冲器模块的示意图。
图3是显示了根据实施例的可以包括在段中的信元的多个部分的示意图。
图4是显示了根据实施例的包括缓冲器模块的交换机结构的示意图。
图5是显示了根据实施例的用于修改数据信号的比特率的方法的流程图。
图6A是显示了根据实施例的缓冲器模块的组件的示意图。
图6B是显示了根据实施例的通过在图6A中所显示的缓冲器模块的组件来处理段的时序图。
图6C是显示了根据实施例的通过在图6A中所显示的缓冲器模块的组件来处理段的时序图。
图7是显示了根据实施例的用于在缓冲器模块中处理段的方法的流程图。
图8是显示了根据实施例的图6A中所显示的缓冲器模块的变型的示意图。
具体实施方式
缓冲器模块可以具有被配置为基于一个或多个流控制信号处理并行地接收到的多个数据信号的共享存储器缓冲区。该共享存储器缓冲区可以由多个存储器区块(memory bank)限定。缓冲器模块可以被配置为基于流控制信号,修改在缓冲器模块中接收到的多个数据信号中的一个或多个的比特率(也可以被称为流速率)。例如,缓冲器模块可以被配置为响应表示在缓冲器模块中接收到的数据信号应该延迟指定的时间长度的流控制信号,延迟在缓冲器模块中接收到的数据信号。相应地,数据信号的一个或多个部分(例如,段)可以在缓冲器模块的共享存储器缓冲区保留指定的时间长度,并且发送到缓冲器模块的数据信号的比特率将不同于从缓冲器模块发送的数据信号的比特率。可以响应,例如下游处理模块处的拥塞来定义流控制信号。如果缓冲器模块包括在多级交换机结构的一级中,则可以从例如多级交换机结构的下游级接收流控制信号。在某些实施例中,多级交换机结构可以定义数据中心的核心部分的至少一部分。
在某些实施例中,每个数据信号可以被称为信道(也可以称为数据信道)。在某些实施例中,数据信号可以由信元(例如,可变大小信元和/或固定大小的信元)的一个或多个流定义。在某些实施例中,可以基于来自一个或多个数据包(例如,以太网数据包,会话控制协议数据包)的比特值来定义信元。可以在缓冲器模块中作为可以称为“段”的切片来处理数据信号(例如,信元的流)。在某些实施例中,段可以具有小于在缓冲器模块接收到的可变大小信元的最小位宽度的位宽度。
可以通过缓冲器模块来处理数据信号,以便通过缓冲器模块(以及共享存储器缓冲区)的处理延迟相对较小,并且基本上是恒定的,直到接收到触发延迟的流控制信号。例如,通过缓冲器模块的信号的处理延迟可以是几个时钟周期。相应地,信号将被时移几个时钟周期,并且发送到缓冲器模块的数据信号的比特率将基本上与从缓冲器模块发送的数据信号的比特率相同。在某些实施例中,缓冲器模块可以被配置为在例如信元的尾端(例如,尾部比特值)在缓冲器模块的输入端口被完全接收到之前,发送该信元的前端(例如,起始比特值)。
缓冲器模块可以具有写复用模块,被配置为将数据信号的段(例如,信元的流的段)并行地分布到缓冲器模块的存储器区块。此处理可以称为“分布”。缓冲器模块可以具有读复用模块,被配置为对来自缓冲器模块的数据信号的某些部分进行排序并发送。此处理可以称为重新组合。在某些实施例中,可以通过写复用模块以预定义的方式(例如,以预定义的模式,根据预定义的算法)分布段,以便可以由读复用模块基于预定义的方式重新组合数据信号的段。
在某些实施例中,缓冲器模块的一个或多个部分可以是基于硬件的模块(例如,数字信号处理器(DSP)、现场可编程门阵列(FPGA))和/或基于软件的模块(例如,可以在计算机上执行的计算机代码的模块、一组计算机可读取的指令)。在某些实施例中,与缓冲器模块关联的一个或多个功能可以包括在单一模块中,或者也可以分成多个模块。
图1A是显示了根据实施例的缓冲器模块100的示意图。如图1A所示,在缓冲器模块100,在缓冲器模块100的输入端180上(例如,通过缓冲器模块100的输入端口162)接收数据信号S0到SM。在缓冲器模块100上进行处理之后,在缓冲器模块100的输出端185(例如,通过缓冲器模块100的输出端口164)上从缓冲器模块100发送数据信号S0到SM。每个数据信号S0到SM都可以定义信道(也可以称为数据信道)。数据信号S0到SM可以统称为数据信号160。虽然所显示的缓冲器模块100的输入端180和缓冲器模块100的输出端185位于缓冲器模块100的不同的物理端,但是,缓冲器模块100的输入端180和缓冲器模块100的输出端185是在逻辑上定义的,并且不排除缓冲器模块100的各种物理配置。例如,缓冲器模块100的一个或多个输入端口162和/或一个或多个输出端口164可以物理地位于缓冲器模块100的任何端(和/或同一端)。
缓冲器模块100可以被配置为处理数据信号160,以便通过缓冲器模块100的数据信号160的处理延迟可以相对较小,并且基本上是恒定的。相应地,在通过缓冲器模块100处理数据信号160时的数据信号160的比特率,可以基本上是恒定的。例如,通过缓冲器模块100的数据信号S2的处理延迟可以是基本上恒定数量的时钟周期。相应地,数据信号S2可以被时移该数量的时钟周期,并且发送到缓冲器模块100的输入端180的数据信号S2的比特率将基本上与从缓冲器模块100的输出端185发送的数据信号S2的比特率相同。将参考图1B描述涉及缓冲器模块100处的处理延迟的更多细节。
缓冲器模块100可以被配置为响应于流控制信号170的一个或多个部分,修改一个或多个数据信号160的比特率。例如,缓冲器模块100可以被配置为响应于指示数据信号S2应该延迟指定的时间长度的流控制信号170的一部分,延迟在缓冲器模块100处接收到的数据信号S2。具体来说,缓冲器模块100可以被配置为存储(例如,保留)数据信号S2的一个或多个部分,直到缓冲器模块100接收数据信号S2不应再延迟的指示(例如,流控制信号170的一部分)。相应地,发送到缓冲器模块100的输入端180的数据信号S2的比特率将不同于(例如,基本上不同于)从缓冲器模块100的输出端185发送的数据信号S2的比特率。将参考图1B描述涉及缓冲器模块100处的数据信号延迟的更多细节。
图1B是示出根据实施例的在图1A中所显示的缓冲器模块100中处理的数据信号160的一部分的示意图。该图示出定义了数据信号S0和数据信号S1(在y轴上)对时间(在x轴上)的可变大小信元的流。图1B示出缓冲器模块100的输入端和输出端的数据信号S0,以及缓冲器模块100的输入端和输出端的数据信号S1。在某些实施例中,缓冲器模块100可以被配置为处理几个数据信号160或许多数据信号160(例如,12个数据信号、64个数据信号、数百个数据信号)。
如图1B所示,数据信号S0和数据信号S1是由可变大小信元的流进行定义的。如图1B所示的数据信号S0的部分由信元10、信元11、信元12和信元13限定。数据信号S1至少部分地由信元17和信元18来限定。如图1B所示,例如,信元11的位宽度不同于信元12的位宽度。在某些实施例中,可变大小信元可以具有指定的位宽度范围。例如,可变大小信元的位宽度可以在64字节和128字节之间,以8字节为增量。在某些实施例中,缓冲器模块100可以被配置为处理具有固定位宽度的信元和/或具有不同于信元格式的格式的数据包(例如,具有以太网数据包格式的数据)。参考图3讨论了涉及可变大小信元的更多细节。
如图1B所示,信元具有段,在缓冲器模块100中对数据信号160的处理可以基于段来进行。例如,数据信号S0的信元11具有三个段:段1、段2和段3。类似地,数据信号S1的信元17具有,例如,两个段:段6和段7。在某些实施例中,信元的开始处的段可以称为引导段。例如,位于信元11的开始处的段1,可以称为引导段(leading segment)。位于引导段后面的段,如位于信元11中的引导段(段1)后面的段2和段3,可以称为尾随段(trailingsegment)。
在某些实施例中,在分布处理期间,可以通过缓冲器模块100中包括的各个存储器区块(例如,静态随机存取存储器(SRAM)存储器区块)处理信元的段。存储器区块可以定义共享存储器缓冲区。在某些实施例中,在分布处理期间,数据信号的段可以以预定义的方式(例如,以预定义的模式,根据预定义的算法)分布到各存储器区块。例如,在某些实施例中,可以在缓冲器模块100的某些部分(例如,缓冲器模块100的指定的存储器区块,可以不同于缓冲器模块100内尾随段被处理的那些部分)处理数据信号160的引导段。在某些实施例中,可以按特定顺序来处理数据信号160的段。在某些实施例中,例如,对数据信号160的每一段的处理可以基于它们在信元内的各自位置来进行。在通过共享存储器缓冲区处理完信元的段之后,可以在重新组合处理期间对信元的段进行排序,并从缓冲器模块100发送。参考图2到7描述了涉及段处理的更多细节。
在某些实施例中,可以通过段模块(未显示)将数据信号160解析为段。在某些实施例中,段模块可以包括在(例如,集成在)如图1A所示的缓冲器模块100中。在某些实施例中,段模块也可以位于缓冲器模块100的外面。例如,如果缓冲器模块100包括在多级交换机结构(图1A中未显示)的中间级内,则段模块可以位于多级交换机结构的入口级。
如图1B所示,随着数据信号S0通过缓冲器模块100被处理,数据信号S0被时移时长L1。如图1B所示的时移可以基本上只由通过缓冲器模块100的一个或多个部分的处理延迟所引起。相应地,如图1B所示,信元11和信元12之间的时长P1在缓冲器模块100的输入端和缓冲器模块100的输出端基本上相同。数据信号S1被时移基本上恒定数量的时钟周期,当发送到缓冲器模块100的输入端时数据信号S1的比特率基本上与当从缓冲器模块100的输出端发送时数据信号S1的比特率相同。
导致时移时长L1的处理延迟可以比例如与信元11相关联的处理时间周期P2短。在某些实施例中,处理可以在缓冲器模块100中执行得使通过缓冲器模块100的处理延迟小于或大于与一个信元相关联的处理时间期。
如图1B所示,数据信号S1的信元17基于通过缓冲器模块100的处理延迟,被时移时长L2,而数据信号S1的信元18被延迟得在如图1B所示的时间帧内没有从缓冲器模块100的输出端185发送出去。具体来说,缓冲器模块100被配置为响应在时间R接收到的流控制信号170(图1B中未显示)的一部分,存储(例如,保存)信元18(不发送信元18)一段时间。在某些实施例中,可以响应缓冲器模块100的下游模块中的拥塞状况,由流控制信号170(如图1A所示)触发延迟。
虽然未显示,但是,在某些实施例中,缓冲器模块100可以被配置为从缓冲器模块100发送信元18。在信元18在缓冲器模块100中存储(例如,保存)一段时间之后,可以从缓冲器模块100发送信元18。在某些实施例中,缓冲器模块100可以被配置为响应于流控制信号170的一部分,从缓冲器模块100发送信元18。
如图1B所示,时长L1基本上等于时长L2。在某些实施例中,时长L1也可以不同于时长L2。时长L1和时长L2的差别可以由通过缓冲器模块100的不同的处理延迟所引起。例如,与数据信号S1关联的处理延迟可以不同于与数据信号S0关联的处理延迟。
图2是显示了根据实施例的缓冲器模块200的示意图。如图2所示,在缓冲器模块200上在缓冲器模块200的输入端280上接收数据信号Q0到QP。在缓冲器模块200中进行处理之后,在缓冲器模块200的输出端285上从缓冲器模块200发送数据信号Q0到QP。数据信号Q0到QP中每个都可以定义信道(也可以称为数据信道)。数据信号Q0到QP可以统称为数据信号260。
缓冲器模块200具有由存储器区块230限定的共享存储器缓冲区。存储器区块230包括存储器区块MB1到MBK。在某些实施例中,存储器区块230中的每个存储器区块都可以是例如SRAM存储器区块、flash存储器区块,和/或其他。每个存储器区块230都可以是排它(例如,互斥)的存储器区块230。例如,在某些实施例中,存储器区块230中的每个存储器区块都可以与一个或多个存储器控制器(未显示)相关联(例如,可以具有)。例如,与存储器区块MB3相关联的存储器控制器可以被配置为确定存储器区块MB3的应该向其中写入信息和/或从其中读取信息的位置(例如,行、列、被标页号的部分)。此外,存储器控制器可以管理指向位置的指针。在某些实施例中,尽管每一个存储器区块230都可以是排它(例如,互斥)的存储器区块230,但是,存储器区块230可以共同限定共享存储器缓冲区(例如,共享的直通缓冲区)。
在某些实施例中,一个或多个存储器区块230可以具有被分配为处理(例如,存储)指定的数据信号260和/或数据信号260的指定部分的部分。例如,存储器区块MB1可以具有分配为读取和/或写入数据信号Q0的某些部分的第一部分和分配为读取和/或写入数据信号Q1的某些部分的第二部分。在某些实施例中,可以随着数据信号的接收动态地分配一些部分。在某些实施例中,例如,存储器区块MB1可以具有第一部分,其被分配为读取和/或写入数据信号Q0的引导段,并且存储器区块MB2可以具有第一部分,其被分配为读取和/或写入数据信号Q0的例如紧随数据信号Q0的引导段之后的尾随段。
如图2所示,缓冲器模块200具有写复用模块210和读复用模块220。写复用模块210和读复用模块220被配置为处理数据信号260的段,以便可以通过一个或多个存储器区块230并行地处理(例如,同时处理)数据信号260的一个或多个段。
数据信号260的段可以由写复用模块210分布到存储器区块230,例如用于并行处理。此过程可以称为分布(例如,段分布)。如图2所示,例如,数据信号Q1的多个段(例如,部分)由写复用模块210分布到共享存储器缓冲区230的不同的存储器区块,并通过它们进行发送(例如,路由)。具体来说,数据信号Q1的第一段由写复用模块210通过传输路径20发送到存储器区块MB1,数据信号Q1的第二段由写复用模块210通过传输路径22发送到存储器区块MB2,而数据信号Q1的第三段由写复用模块210通过传输路径24发送到存储器区块MB3。在某些实施例中,数据信号Q1的段可以与例如单一信元关联。
在存储器区块230中处理完(例如,接收,存储)数据信号260的段之后,在从缓冲器模块200发送之前,在读复用模块220中接收(例如,由读复用模块220中接收者选择)数据信号260的段,并进行排序。此过程可以称为重新组合(例如,段重新组合)和/或重新排序(例如,段重新排序)。如图2所示,例如,通过传输路径20、22和24,在读复用模块220中接收数据信号Q1的段。对段进行排序,并作为数据信号Q1从缓冲器模块200的输出端285发送。
在此实施例中,由写复用模块210、读复用模块220,以及存储器区块230来处理数据信号,以便缓冲器模块200的输入端280上的每个数据信号260的段的顺序都与缓冲器模块200的输出端285上的每个数据信号260的段的顺序相同或基本上相同。虽然未显示,但是,也可以以类似于如图2所示的处理数据信号Q1的方式通过缓冲器模块200来处理诸如数据信号Q2之类的其他数据信号260的段。
在某些实施例中,可以由写复用模块210根据预定义的方法(例如,以预定义的模式,根据预定义的算法)将数据信号260的段分布到存储器区块230,以便可以由读复用模块220基于预定义的方法确定数据信号260的段的顺序。例如,在某些实施例中,数据信号260的引导段可以被分布到被选择(例如,被指定)为处理(例如,存储)引导段的存储器区块(存储器区块230中)。被选定处理引导段的存储器区块可以称为引导存储器区块。数据信号260的尾随段(即,尾随引导段的段)可以按照接收时间的顺序,以例如轮询的方式分布到不同于引导存储器区块的(存储器区块230中的)其他存储器区块。被配置为处理尾随段的存储器区块可以称为尾随存储器区块。在某些实施例中,可以将信元的每段(例如,引导段和尾随段)写入到存储器区块230中的互斥的存储器区块。换句话说,可以将每段写入到不同的存储器区块。
读复用模块220可以被配置为重新组合与数据信号260相关联的段,并从缓冲器模块200发送(例如,传输)数据信号260。重新组合处理可以基于用于将段分布到存储器区块230的预定义方法来限定。例如,读复用模块220可以被配置为首先从引导存储器区块读取与一信元关联的引导段,然后以轮询的方式从尾随存储器区块读取与该信元关联的尾随段(因为段是以轮询方式写入的)。相应地,在写复用模块210和读复用模块220之间需要传输的控制信号即使有也非常少。参考图6和7描述涉及分布和重新组合的更多细节。
在此实施例中,可以由控制模块240控制(例如,可以由控制模块240触发)缓冲器模块200(例如,写复用模块210,读复用模块220)中的处理。在某些实施例中,与写复用模块210关联的功能,与读复用模块220关联的功能,和/或与存储器区块230关联的功能,可以由来自控制模块240的一个或多个控制信号来触发。在某些实施例中,控制模块240可以被配置为基于流控制信号(图2中未显示)来修改一个或多个数据信号260的比特率。如果缓冲器模块200包括在多级交换机结构的一级中(图2中未显示),则可以从例如多级交换机结构的下游级接收流控制信号。参考图4描述了涉及交换机结构中的缓冲器模块的更多细节。
图3是示出根据实施例的可以包括在段中的信元300的多个部分的示意图。如图3所示,信元300包括标头310、有效负载320、以及尾部330。在某些实施例中,信元300可以包括对应于例如以太网数据包、会话控制协议数据包等等的一部分的比特值。在某些实施例中,信元300可以包括对应于与开放系统互连(OSI)模型的任何层(例如,层2,层3)关联的协议的比特值序列。
在某些实施例中,信元300可以具有与可变大小信元关联的多个位宽度构成的范围内的一个位宽度。例如,信元300可以是72字节信元,其可以通过例如交换机结构进行处理的。交换机结构可以被配置为处理具有在例如48字节和192字节之间的位宽度的信元。
如图3所示,信元300被解析为三个不同的部分:部分342,部分344,以及部分346。如图3所示,例如,部分342包括信元300的整个标头310和信元300的有效负载320的一部分。部分346包括整个尾部330和有效负载320的与部分342中所包括的不同的部分。
在某些实施例中,信元300的某些部分可以包括在段中,而段可以在诸如这里所描述的缓冲器模块(例如,参考图1和图2所描述的)中被处理。在某些实施例中,段可以包括可以用来在缓冲器模块中处理段的信息。例如,一个或多个段可以包括例如标头和/或尾部。信息可以涉及一个段相对于其他段的顺序、段的长度、基于信元300(或数据包)定义的段的数量等等。在某些实施例中,尽管段可以包括诸如标头和/或尾部之类的信息,但是,在缓冲器模块之外的网络(例如,因特网协议(IP)网络)内,段可以基本上不可被路由。换句话说,段可以包括涉及缓冲器模块内的处理的信息,但是,可以不包括可以用于缓冲器模块之外的信息(例如,不包括可以用于缓冲器模块之外的层2路由的信息)。
在此实施例中,信元300的每个部分都具有相等的位宽度或不相等的位宽度。在某些实施例中,基于信元300的若干部分定义的段可以具有相等的位宽度或不相等的位宽度。在某些实施例中,基于具有不相等的位宽度的部分定义的段可以被填充,以便段具有相等的位宽度。在某些实施例中,基于信元300的若干部分定义的段可以具有小于可以在例如交换机结构内处理的信元的最小位宽度的位宽度。在某些实施例中,基于信元300的若干部分定义的段,可以称为“微片(flit)”。
图4是示出根据实施例的包括缓冲器模块的交换机结构400的示意图。如图4所示,交换机结构400是三级的,无阻塞的克洛斯(Clos)网络,并包括第一级440、第二级450,以及第三级460。交换机结构400的每一级都可以由电子元件和电路的组合件限定。在某些实施例中,每一模块都可以是离散的电气元件的组合件。在此实施例中,第一级440至少包括模块STA1到STAD,以及缓冲器模块BA1到BAD,第二级450至少包括模块STB1到STBD,以及缓冲器模块BB1到BBD,而第三级460至少包括模块STC1到STCD,以及缓冲器模块BC1到BCD。在某些实施例中,例如,每个模块可以是专用集成电路(ASIC)。在某些实施例中,在单一ASIC或单一芯片封装中可以包括多个模块。
在某些实施例中,来自交换机结构400的多级的每一个模块(例如,模块STC2)都可以是信元交换机。信元交换机可以被配置为在信元流过交换机结构400时重定向信元。在某些实施例中,例如,每个信元交换机都可以具有多个输入端口,并且每个信元交换机都可以操作地耦合到缓冲器模块(例如,在某些实施例中,也可以称为存储器缓冲区)的输入端口(例如,写入接口)。类似地,每个信元交换机都可以具有一组输出端口,并且每个信元交换机都可以操作地耦合到缓冲器模块的输出端口(例如,读取接口)。在某些实施例中,缓冲器模块可以是使用片上SRAM实现的共享存储器缓冲区。在某些实施例中,缓冲器模块可以被配置为给信元交换机的一个或多个输入端口(例如,所有输入端口)提供所希望的带宽,以便每个时间段(例如,一个或多个时钟周期)写入至少一个传入的信元(例如,数据包的一部分),并给信元交换机的一个或多个输出端口(例如,所有输出端口)提供所希望的带宽,以便每个时间段读取至少一个传出的信元。在某些实施例中,每个信元交换机可以被配置为类似于在每个时间段都可以被重新配置的纵横开关(crossbar switch)地操作。
在某些实施例中,交换机结构400的多级的每个模块都可以包括具有输入柱线(bar)和输出柱线的纵横开关。纵横开关内的多个开关可以被配置为将每个输出柱线连接到每个输入柱线。当纵横开关内的开关处于“on”位置时,输入可以操作地耦合到输出柱线,并且数据可以流动。或者,当纵横开关内的开关处于“off”位置时,输入端不可操作地耦合到输出端,并且数据不能流动。如此,纵横开关内的开关控制哪些输入柱线操作地连接到哪些输出柱线。
在某些实施例中,第一级440的每个模块可以包括被配置为在数据进入交换机结构400时接收数据(例如,信号、数据包的一个信元等等)的一组输入端口442。在某些实施例中,第一级440的每个模块可以包括相等数量的输入端口442。
可以以任何方式构建交换机结构400的多级的模块之间的数据路径420,被配置为促进从第一级440的模块向第二级442的模块,以及从第二级450的模块向第三级460的模块的数据传输。在某些实施例中,例如,数据路径420可以是模块之间的光连接器。在某些实施例中,数据路径420可以包括在中平面中。在某些实施例中,两个或更多模块可以包含在单一芯片封装内,并且数据路径420可以是电迹线。
可以由缓冲器模块BA2响应于例如第二级450的其中一个模块(例如,第二级450的模块STB2)处的拥塞,修改信元流过例如第一级440的缓冲器模块BA2的流速。在2008年12月29日提交的标题为“Flow-Control in a Switch Fabric”的专利申请系列No.12/345,490中阐述了涉及交换机结构的多级之间的流控制信号的更多细节,在此引用该申请的全部内容作为参考。
图5是示出根据实施例的用于修改数据信号的比特率的方法流程图。如图5所示,在500中基于包括来自可变大小信元的比特值的段,定义输入数据信号。在某些实施例中,比特值可以对应于例如以太网数据包中包括的比特值。在某些实施例中,输入数据信号的段可以由段模块定义。
在510中在交换机结构的第一级的缓冲器模块中接收输入数据信号。在某些实施例中,交换机结构可以基于克洛斯体系结构来定义。在某些实施例中,交换机结构可以定义数据中心的核心部分的至少一部分,该数据中心具有多个连接到核心部分的周边的边缘设备。在某些实施例中,交换机结构可以被配置为在基本一个方向上作为单向交换机结构(而不是作为双向交换机结构)来发送数据。
在520中,从第一级下游的交换机结构的第二级接收流控制信号。在某些实施例中,流控制信号可以基于交换机结构的第二级(例如,在第二级的一个模块)上的数据拥塞来定义。在某些实施例中,第一级和第二级可以是交换机结构内的任何地方的相邻级。例如,第一级和第二级可以是多级交换机结构内的中间级。在某些实施例中,例如,第二级可以是出口级,而第一级可以是交换机结构内的中间级。
在530中,基于流控制信号,延迟输入数据信号的至少一部分。例如,在某些实施例中,可以基于流控制信号,将输入数据信号的一个或多个部分(例如,段)存储在缓冲器模块中一段指定的时间长度。相应地,虽然可以在缓冲器模块处接收输入数据信号,但是,在指定的时间长度内,可以不从缓冲器模块发送数据信号。在某些实施例中,基于流控制信号来延迟输入数据信号会导致流过缓冲器模块的数据信号的比特率改变。
图6A是显示了根据实施例的缓冲器模块600的组件的示意图。如图6A所示,缓冲器模块600包括可以定义共享存储器缓冲区、写复用模块620,和读复用模块640的多个存储器区块630。写复用模块620的功能由写控制模块690控制(例如,触发),并且读复用模块640的功能由读控制模块695控制(例如,触发)。在某些实施例中,写控制模块690的功能和读控制模块695的功能可以合并到单个模块中(例如,单个控制模块)或分成不同于图6A中所示的那些模块的多个模块。
在某些实施例中,存储器区块630中的每个存储器区块都可以与一个或多个存储器控制器(未显示)关联(例如,可以具有一个或多个存储器控制器)。例如,与存储器区块BK1关联(例如,排他地关联)的存储器控制器可以被配置为确定存储器区块BK1的应该向其中写入信息和/或从其中读取信息的位置(例如,行、列、被标页号的部分)。
在此实施例中,写复用模块620被配置为接收三个输入信道:信道ChA、信道ChB,以及信道ChC。输入信道通过包括可变大小信元的若干部分的段来定义。在此实施例中,写复用模块620被配置为接收三个信道:信道A、信道B,以及信道C。这些信道通过包括位宽度范围内的可变大小信元的若干部分的段来定义。在此实施例中,段具有小于位宽度范围内的最小位宽度的位宽度。在某些实施例中,可变大小信元可以包括,例如,数据包的一个或多个部分。在某些实施例中,缓冲器模块600可以被配置为接收比图6A所显示的那些信道更多的信道。
图6B是示出根据实施例的通过图6A中所显示的缓冲器模块600的组件来处理段的时序图。如图6B所示,时间在从时间段T1开始的x轴上向右增大。在某些实施例中,时间段T1可以代表一个时钟周期或多个时钟周期。在某些实施例中,时间段可以称为时隙。在y轴上显示了缓冲器模块600的组件中的几个。
在此实施例中,在每个信道中接收相等的位宽度的信元。在此实施例中,基于接收信元时所在的信道,对信元进行标记,并且利用下标标记信元的段。例如,信道ChA被配置为接收具有三个段的信元A1:段A11、段A12,以及段A13。段A11是信元A1的引导段,段A12和段A13是信元A1的尾随段。
在此实施例中,定义了信道的信元的引导段被写入存储器区块BK1,该存储器区块BK1已经被选定(例如,指定,指派)为该引导段的写入位置。定义了信道的信元的尾随段被以轮询的方式写入存储器区块BK2到BK5。在某些实施例中,已被选定接收引导段的存储器区块BK1可以称为引导存储器区块BK1,而存储器区块BK2到BK5可以称为尾随存储器区块BK2到BK5。
如图6B所示,在写复用模块620的输入寄存器622处接收信元A1的引导段(与信道ChA关联)、信元B1的引导段(与信道ChB关联)、以及信元C1的引导段(与信道ChC关联)。具体来说,在时间段T2,在输入寄存器RA0中接收引导段A11,在输入寄存器RB0中接收引导段B11,在输入寄存器RC0中接收引导段C11。
如图6B所示,在时间段T3期间,信元A1的引导段A11被写入引导存储器区块BK1。具体来说,写控制模块690可以被配置为触发对输入寄存器RA0的内容的选择,以便在时间段T3期间使用多路复用器AMXL和多路复用器MX1写入引导存储器区块BK1。在某些实施例中,引导段A11可以基于,例如,引导段A11中包括的指示,和/或标识之前信元的末尾的指示(并包括在之前信元的最后一段中),被标识为引导段。
在时间段T3期间,信元B1的引导段B11从输入寄存器RB0移动到输入寄存器RB1,直到在时间段T4期间引导存储器区块BK1准备接收引导段B11。换句话说,引导段B11在输入寄存器622内移动,直到存储器区块BK1的状态(例如,存储器区块BK1的写端口632的状态)从不可用状态变为可用状态。在时间段T3期间,引导段B11不能被写入引导存储器区块BK1,因为在时间段T3期间引导段A11正在被写入引导存储器区块BK1(这导致引导存储器区块BK1不可用)。此外,在时间段T3期间,引导段B11从输入寄存器RB0移动到输入寄存器RB1,以便在时间T3,在输入寄存器RB0中可以接收紧跟在引导段B11后面的信元B1的段B12。类似地,在时间段T3或时间段T4期间,引导段C11不能被写入引导存储器区块BK1,因为在时间段T3或时间段T4期间,引导段A11和引导段B11正在分别被写入引导存储器区块BK1。引导段C11从输入寄存器RC0经过输入寄存器RC1移动到输入寄存器RC2(在时间段T3和T4期间),以便在输入寄存器RC1和输入寄存器RC0中分别可以接收尾随段C12和尾随段C13。
如图6B所示,每个尾随段以轮询的方式被写入到其中一个尾随存储器区块。例如,在引导段A11在时间段T3期间被写入到引导存储器区块BK1(被选定接收引导段)之后,尾随段A12在时间段T4期间被写入到尾随存储器区块BK2,尾随段A13在时间段T5期间被写入到尾随存储器区块BK3。在此实施例中,在紧随在引导段被写入到引导存储器区块BK1的时间段之后的相邻的时间段,尾随段可以被写入尾随存储器区块。相应地,写控制模块690可以被配置为在涉及将引导段写入引导存储器区块(在此情况下,是存储器区块BK1)的冲突被解决之后,以连续的方式(在连续的时间段内)触发尾随段向尾随存储器区块的写入。在某些实施例中,写控制模块690可以被配置为触发尾随存储器区块的写入,而不确定尾随存储器区块的一个或多个写端口的可用性。可以这样执行,是因为解决了涉及将引导段写入引导存储器区块(在此情况下,是存储器区块BK1)的冲突将确保在尾随区块中将不会遇到冲突。可确保这一点,是因为段是从引导存储器区块BK1开始以轮询的方式(例如,以顺序的方式)被写入存储器区块630的。
如图6B所示,每个信道都与一组三个输入寄存器相关联。例如,定义了ChA的每个段都可以在输入寄存器RA0、输入寄存器RA1,以及输入寄存器RA2中被接收。每组输入寄存器只包括三个输入寄存器,因为写复用模块被配置为只接收三个信道。相应地,在此实施例中,保证引导存储器区块BK1在三个时间段内可用于写入。在某些实施例中,当写复用模块620被配置为接收三个以上的信道时,每组输入寄存器内的输入寄存器的数量将增大到三个以上。
如图6B所示,在连续的时间段,将引导段A11、引导段B11、以及引导段C11从引导存储器区块BK1中读取到输出寄存器644中。在时间段T4期间,将引导段A11从引导存储器区块BK1中读取到输出寄存器RA3,在时间段T5,将引导段B11从引导存储器区块BK1中读取到输出寄存器RB3,在时间段T6,将引导段C11从引导存储器区块BK1中读取到输出寄存器RC3。具体来说,在时间段T4期间,读控制模块695可以被配置为触发通过使用多路解复用器RMX1(多路解复用器642中的)从引导存储器区块BK1选择段A11,并将段A11写入输出寄存器RA3。在某些实施例中,读控制模块695可以被配置为触发将段从存储器区块630写入例如输出寄存器RA4,而不是输出寄存器RA3。
在从引导存储器区块BK1中读取信元的引导段之后,从尾随存储器区块中读取(例如,以轮询的方式读取)特定信元的尾随段。例如,在引导段A11在时间段T4期间被从引导存储器区块BK1读取之后,在时间段T5将尾随段A12从尾随存储器区块BK2中读取到寄存器RA3中。类似地,在引导段A12在时间段T5期间被从尾随存储器区块BK2中读取之后,在时间段T6期间将尾随段A13从尾随存储器区块BK3中读取到寄存器RA3中。通过按此顺序读取信元A1的段,信元A1的段可以被重新组合,并按顺序从缓冲器模块600发送。由于可以按与段被写入存储器区块630相同的预先确定的顺序(例如,轮询的顺序)从存储器区块630读取段,写控制模块690和读控制模块695可以以极少的或基本上没有的管理开销(例如,簿记)分别执行写入功能和读取功能(例如,触发这些功能的执行)。
读控制模块695可以被配置为基于从写控制模块690接收到的段编号来触发从存储器区块630读取段的操作。例如,读控制模块695可以被配置为基于信元A1总共包括三个段和/或只包括两个尾随段的指示,触发从尾随存储器区块BK2和尾随存储器区块BK3读取尾随段A12和尾随段A13的操作。在某些实施例中,读控制模块695可以被配置为基于信元的引导段中包括的指示(例如,段编号指示)来确定段编号。
在某些实施例中,可以基于写控制模块690对段编号的判断,从写控制模块690接收段编号的指示。在某些实施例中,写控制模块690可以被配置为基于信元的引导段中包括的指示(例如,段编号指示)来确定段编号。在某些实施例中,写控制模块690可以被配置为通过在段被写入到存储器区块630时统计定义信元的段来确定段编号。
在某些实施例中,段编号可以从被配置为将信元解析为段的段模块(未显示)发送到写控制模块690和/或读控制模块695。在某些实施例中,段模块可以被配置为定义当信元被解析为段时的段编号。在某些实施例中,当定义信元中的段时,段模块可以在一个或多个段中包括段编号。
在某些实施例中,写控制模块690和/或读控制模块695可以被配置为基于信元的尾随段中包括的信元结尾指示(例如,信元的最后一个尾随段中的信元结尾指示),来确定定义信元的一组段的结尾。在某些实施例中,当定义信元的段时,段模块可以被配置为在一个或多个尾随段中包括信元结尾指示。
如图6A所示,基于通过缓冲器模块600的处理延迟,定义信道ChA的信元被从时间段T1时移到时间段T5。定义信道ChB和信道ChC的信元也基于通过缓冲器模块600的处理延迟而类似地被时移。
在此实施例中,与信道关联的处理延迟是不同的。例如,缓冲器模块600的输入端上的信元B1和信元C1被对齐,但是,在缓冲器模块600的输出端,信元B1和信元C1偏移了一个时间段。虽然从缓冲器模块600并行地发送,定义信元C1的段的流落后于定义信元B1的段一个时间段。在此实施例中,信元B1和信元C1之间的时滞与信元的引导段被写入引导存储器区块BK1的时间段相关。
在此实施例中,写控制模块690被配置为选定(例如,触发选择)用于从信道ChA开始以轮询的方式写入存储器区块630的引导段,接下来从信道ChB选择(例如,触发选择)引导段,最后从信道ChC选择(例如,触发选择)引导段。在某些实施例中,写控制模块690可以被配置为以不同的顺序选择引导段。相应地,如果写控制模块690以不同的顺序选择引导段,则写控制模块690可以被配置为将该顺序传递到读控制模块695,以便读控制模块695可以以所希望的顺序触发段的读取。
在某些实施例中,不同于存储器区块BK1的存储器区块可以被选为引导存储器区块。例如,在某些实施例中,诸如存储器区块BK2之类的不同的存储器区块(而不是存储器区块BK1)可以被选为引导存储器区块。相应地,存储器区块BK1、存储器区块BK3、存储器区块BK4,以及存储器区块BK5可以被配置为作为尾随存储器区块。在某些实施例中,写控制模块690和/或读控制模块695可以被配置为动态地选择作为引导存储器区块的存储器区块。如果由写控制模块690选择(例如,指定)引导存储器区块,则选定的引导存储器区块可以传递到读控制模块695,反之亦然。在某些实施例中,可以选择一个存储器区块(例如,指定)在指定的时间段内(例如,基于计数器确定的指定的时间段内)作为引导存储器区块。
在某些实施例中,可以以任何顺序向尾随存储器区块写入尾随段和/或从其中读取尾随段。顺序可以由例如写控制模块690和/或读控制模块695进行定义。例如,与第二尾随段相邻的第一尾随段可以分别被写入到第一存储器区块和第二存储器区块。第三存储器区块可以位于第一存储器区块和第二存储器区块之间。如果分布模式由写控制模块690进行定义,则分布模式可以被传递到读控制模块695,反之亦然。
图6C是显示了根据实施例的通过图6A中所显示的缓冲器模块600的组件来处理段的时序图。如图6C所示,在从时间段U1开始的x轴上,时间向右增加。在某些实施例中,时间段U1可以代表一个时钟周期或多个时钟周期。在某些实施例中,时间段可以称为时隙。在y轴上示出缓冲器模块600的若干组件。
在此实施例中,基于接收信元时所在的信道标记信元,并且用下标标记信元的段。此外,在此实施例中,在每个信道接收可变位宽度的信元。例如,信道ChA被配置为接收具有三个段的信元A3:段A31、段A32、以及段A33。段A31是信元A3的引导段,并且段A32和段A33是信元A3的尾随段。信道ChC被配置为接收信元A5,信元A5具有五个段:段C31、段C32、段C33、段C34,以及段C35。
如图6C所示,在写复用模块620的输入寄存器622处接收信元A3的引导段(与信道ChA关联)、信元B3的引导段(与信道ChB关联)、以及信元C3的引导段(与信道ChC关联)。具体来说,在时间段U2期间,在输入寄存器RA0处接收引导段A31,在输入寄存器RB0处接收引导段B31,并且在输入寄存器RC0处接收引导段C31。
如图6C所示,在时间段U3期间,信元A3的引导段A31被写入引导存储器区块BK1。在时间段U3期间,信元B3的引导段B31从输入寄存器RB0移动到输入寄存器RB1,直到在时间段U4期间引导存储器区块BK1准备接收引导段B31。换句话说,引导段B31在输入寄存器622内移动,直到存储器区块BK1的状态(例如,存储器区块BK1的写端口的状态)从不可用状态变为可用状态。引导段C31从输入寄存器RC0经过输入寄存器RC1移动到输入寄存器RC2(在时间段U3和U4期间),以便在输入寄存器RC1和输入寄存器RC0处分别可以接收尾随段C32和尾随段C33。
在此实施例中,在定义信元B3的所有段被移动到输入寄存器RB1之后,这些段都被从输入寄存器RB1写入存储器区块630。由于引导存储器区块BK1在时间段U7期间可用,从(在时间段U6期间,被移动到输入寄存器RB0的)引导段B41开始,定义信元B4的段被从输入寄存器RB0(而不是输入寄存器RB1)写入存储器区块630。
如图6C所示,在时间段U10期间,段不被写入引导存储器区块BK1,因为在时间段U10期间,引导段不存储在任何输入寄存器622中。换句话说,引导存储器区块BK1是空闲的,直到来自至少一个信道(例如,信道ChB)的引导段可以被写入引导存储器区块BK1。
在此实施例中,来自信元B3的段B34和来自信元B4的段B41存储在存储器区块630中,并准备好在时间U7从存储器区块630被读取。在时间U8,来自信元B3的段B34存储在输出寄存器RB3中,来自信元B4的段B41存储在输出寄存器RB4中。由于只有与信道ChB关联的段的单一流可以从缓冲器模块600的输出端648发送,在时间U9期间,从缓冲器模块发送段B34,并且段B41在时间U9期间保留(例如,存储在)在输出寄存器RB4中,如图6C所示。具体来说,读控制模块695可以被配置为在时间段U9期间使用多路解复用器OMX2(多路解复用器646中)触发从输出寄存器RB3中选择段B34。当缓冲器模块600的输出端口648在时间U10期间可用时,从缓冲器模块600发送段B41。在某些实施例中,读控制模块695可以被配置为触发将段从存储器区块630,例如,主要写入到输出寄存器RB4,其次写入到输出寄存器RB3。
在某些实施例中,读复用模块640可以具有每个信道两个以上的输出寄存器(或小于两个寄存器)。在某些实施例中,如果与一个信道关联的输出端口(如输出端口648)不可用(例如,在不可用状态)和/或与一个信道关联的输出寄存器不可用(例如,在不可用状态),则存储器区块630可以被配置为存储(例如,保留)一个或多个段长于一个时间段,直到该信道的输出端口和/或输出寄存器644变为可用(例如,变为可用状态)。在这样的情况下,读控制模块695可以被配置为触发将段存储在存储器区块630中,直到信道的输出端口和/或输出寄存器变为可用。参考图8描述了每个信道具有两个以上输出寄存器的缓冲器模块600的示例。
在此实施例中,存储器区块630具有五个存储器区块,等于信元中包括的段的最大数量。存储器区块630的数量等于信元中包括的段的最大数量,以便每个信元(如信元C3)的每个段(例如,引导段和尾随段)都可以被写入存储器区块630中的互斥存储器区块。换句话说,可以将每段写入存储器区块630中的不同的存储器区块。在某些实施例中,缓冲器模块内的存储器区块可以具有比要由缓冲器模块处理的信元中包括的段的最大数量更多的存储器区块。
图7是示出根据实施例的用于在缓冲器模块中处理段的方法的流程图。如图7所示,在900中,在缓冲器模块处接收包括信元的一部分的比特值的段。在某些实施例中,该信元可以包括对应于一个或多个数据包(例如,以太网数据包)的比特值。在某些实施例中,该段可以定义数据信号(例如,定义信道的数据信号)的一部分。在某些实施例中,缓冲器模块可以包括在交换机结构的一级中。
在910中进行有关该段是信元的引导段的确定。在某些实施例中,可以基于引导段的一部分中包括的指示来进行确定。在某些实施例中,可以由诸如如图6A所示的写控制模块690之类的写控制模块来确定。
在920中进行一组存储器区块中的存储器区块是段的写入目的地的确定。在某些实施例中,可以将该段发送到存储器区块,因为存储器区块已被选为引导存储器区块。
在930中,当存储器区块的写端口的状态是不可用状态时,该段在一组寄存器内的位置被移动。在某些实施例中,该段可以在该组寄存器内移动多次。在某些实施例中,该组寄存器可以包括在写复用模块中。在某些实施例中,存储器区块的写端口可以因为来自不同信元的不同段正在通过写端口被写入到存储器区块而具有不可用状态。
在940中,当存储器区块的写端口的状态从不可用状态变为可用状态时,将该段发送到存储器区块。在某些实施例中,该段可以通过写复用模块中包括的一个或多个多路复用器被发送到存储器区块。该多路复用器可以由例如写控制模块控制。
在950中,该段被写入存储器区块内的一个位置。在某些实施例中,存储器区块内的位置可以由与存储器区块相关联的存储器控制器来确定。
在960中,当与缓冲器模块的输出端口关联的寄存器可用时,基于指向该位置的指针,从该位置取出该段。在某些实施例中,该指针可以由与存储器区块相关联的存储器控制器来确定。
图8是示出根据实施例的图6A所显示的缓冲器模块600的变型的示意图。在此实施例中,输出寄存器644包括每个输出信道4个输出寄存器(而不是如图6A所示的每个输出信道2个输出寄存器)。例如,与信道ChA的输出端关联的输出寄存器644(在缓冲器模块600的输出端)是输出寄存器RA3、输出寄存器RA4、输出寄存器RA5、以及输出寄存器RA6。可以选择存储在输出寄存器644中的段,以用于由输出多路解复用器646从缓冲器模块600发送。例如,输出多路解复用器OMX1可以由读控制模块695触发,以选择存储在输出寄存器RA5中的段,以便作为输出信道ChA的至少一部分从缓冲器模块600发送。
与每个信道相关联的另外的输出寄存器644(与如图6A所示的输出寄存器644的数量相比)可以允许读控制模块695将段从存储器区块630(例如,触发段的读取)读取到输出寄存器644中,而不会触发存储器区块630将段保留一个以上的时间段。从存储器区块630中读取的信元的段可以在输出寄存器644内移动,直到与信道关联的输出端口(比如输出端口648)可用(例如,在可用状态)。
在该信元的该段在存储器区块BK3处被接收(在前一时间段)之后的第一时间段(例如,一个时钟周期),信元的段可以被从存储器区块BK3读取到输出寄存器RB3。如果与输出信道ChB关联的输出端口648在第一时间段之后的第二时间段期间不可用来从缓冲器模块600发送该段,则在第二时间段期间,该段可以被从输出寄存器RB3移动到输出寄存器RB5中。如果在第二时间段之后的第三时间段期间,输出端口648可用,则在第三时间段期间可以通过输出端口648从缓冲器模块600发送该段。
在某些实施例中,在紧随在存储器区块630接收段所在的时间段之后的时间段期间,每个信道可以与允许读控制模块695从存储器区块630读取段(例如,触发段的读取)的输出寄存器644的数量相关联。换句话说,除非流控制信号改变经过存储器区块630的段的流,所有段都可以存储在存储器区块630中小于两个时间段的时间。在某些实施例中,缓冲器模块600的每个输出信道的输出寄存器644的最小数量可以是X+1,其中,X是要由缓冲器模块600处理的最大信元中的段的数量和要由缓冲器模块600处理的最小信元中的段的数量之间的差。例如,如果缓冲器模块600被配置为处理最小3段且最小5段的可变大小信元,则每个信道的输出寄存器644的最小数量将是3(即,5-3+1)。
在此实施例中,每个输出信道与两个多路解复用器642关联,每个多路解复用器642与两个输出寄存器644关联。多路解复用器RMX1以及其关联的输出寄存器644(输出寄存器RA3和输出寄存器RA5)可以称为输出信道ChA的左侧多路解复用器/寄存器,而多路解复用器RMX2以及其关联的输出寄存器644(输出寄存器RA4和输出寄存器RA6)可以称为输出信道ChA的右侧多路解复用器/寄存器。每个信道都可以类似地与左侧多路解复用器/寄存器和右侧多路解复用器/寄存器关联。因为每个左侧多路解复用器642和每个右侧多路解复用器642都与相等数量的输出寄存器644关联,因此,两边可以称为是平衡的。
在此实施例中,缓冲器模块600配置有平衡的左侧多路解复用器/寄存器和右侧多路解复用器/寄存器,以简化读控制模块695所使用的控制策略。例如,如果两侧是平衡的,则读控制模块695可以被配置为触发段(从存储器区块630)以交替的方式被写入到输出信道的左侧多路解复用器/寄存器和输出信道的右侧多路解复用器/寄存器,而不跟踪单个输出寄存器644的可用性。
如果多路解复用器/寄存器的两侧是不平衡的,则读控制模块695所使用的控制策略可以比平衡的多路解复用器/寄存器的情况更加复杂。例如,如果两个输出寄存器644与信道的左侧多路解复用器642关联,并且一个输出寄存器644与信道的右侧多路解复用器642关联,则在触发将段写入到与右侧多路解复用器642关联的输出寄存器644之前,读控制模块695可能需要确定(例如,验证)和/或跟踪与右侧多路解复用器642关联的一个输出寄存器644的可用性(例如,可用状态)。
这里所描述的一些实施例涉及具有计算机可读取的介质(也可以称为处理器可读取的介质)的计算机存储器产品,计算机可读取的介质具有用于执行各种计算机实现的操作的指令或计算机代码。介质和计算机代码(也可以称为代码)可以是为特定目的而设计和构建的那些。计算机可读取的介质的示例包括,但不仅限于:诸如硬盘、软盘,以及磁带之类的磁存储介质;诸如压缩光盘/数字视频盘(CD/DVD)、压缩光盘-只读存储器(CD-ROM),以及全息照相装置之类的光存储介质;诸如光盘之类的磁光存储介质;载波信号处理模块;以及,专门地被配置为存储和执行程序代码的硬件设备,如ASIC、可编程逻辑器件(PLD)、以及只读存储器(ROM)和RAM设备。
计算机代码的示例包括,但不仅限于,诸如由编译器产生的微代码或微指令,机器指令,用来产生Web服务的代码,以及包含由计算机通过使用解释器来执行的较高级别的指令的文件。例如,可以使用Java、C++,或其他编程语言(例如,面向对象的编程语言)和开发工具来实现实施例。计算机代码的其他示例包括,但不仅限于,控制信号、加密码,以及压缩码。
尽管上文描述了本发明的各种实施例,但是,应该理解,它们只是作为示例来呈现的,而不作为限制,可以在形式和细节方面进行各种修改。可以以任何组合方式组合这里所描述的设备和/或方法的任何部分,互相排斥的组合除外。这里所描述的实施例可以包括所描述的不同的实施例的功能、组件和/或特点的不同组合和/或子组合。例如,缓冲器模块可以被配置为将信元的段直接发送到另一个缓冲器模块。在某些实施例中,缓冲器模块可以包括多级共享存储器缓冲区。
Claims (28)
1.一种用于共享存储器缓冲区的设备,包括:
包括引导存储器区块的共享存储器缓冲区;
写复用模块,被配置为将一组段中的引导段发送到所述引导存储器区块,该组段包括来自一组可变大小信元的比特值,
所述写复用模块进一步被配置为将该组段中被标识为尾随段的每一段发送到与所述引导存储器区块互斥的所述共享存储器缓冲区的一部分;以及
控制模块,被配置为响应于来自所述共享存储器缓冲区下游的流控制信号,修改通过所述共享存储器缓冲区的该组段中的段的流的流速。
2.根据权利要求1所述的设备,其中来自该组可变大小信元的每个可变大小信元具有位宽度范围内的位宽度,来自该组段的每段的位宽度小于所述位宽度范围中的最小位宽度。
3.根据权利要求1所述的设备,其中,来自该组可变大小信元的每个可变大小信元具有的段数量在指定段数量范围内,并且所述共享存储器缓冲区包括的存储器区块的数量至少等于所述指定段数量范围内的最大段数量。
4.根据权利要求1所述的设备,其中,该组段定义了多个输入信道信号,
所述设备进一步包括:
操作地耦合到所述共享存储器缓冲区的一组寄存器,在该组寄存器的互斥部分处接收所述多个输入信道信号中的每个输入信道信号。
5.根据权利要求1所述的设备,其中,所述共享存储器缓冲区包括在定义了数据中心的至少核心部分的多级交换机结构的一级中。
6.根据权利要求1所述的设备,其中,所述引导存储器区块是随机存取存储器区块。
7.一种用于共享存储器缓冲区的方法,包括:
在一组寄存器处接收包括来自信元的一部分的比特值的段;
当所述段是所述信元的引导段时,确定一组存储器区块中的一个存储器区块是否是所述段的写入目的地,该组存储器区块定义了直通缓冲区的至少一部分;
当该组存储器区块中的所述存储器区块是所述段的写入目的地,且当该组存储器区块中的所述存储器区块的写端口的状态是可用状态时,将所述段从该组寄存器内的第一位置移动到该组存储器区块中的该存储器区块,以及
当该组存储器区块中的所述存储器区块是所述段的写入目的地,且当该组存储器区块中的所述存储器区块的所述写端口的所述状态是不可用状态时,将所述段从该组寄存器内的所述第一位置移动到该组寄存器内的第二位置。
8.根据权利要求7所述的方法,进一步包括:
当该组存储器区块中的所述存储器区块的所述写端口的所述状态从所述不可用状态变为可用状态时,将所述段发送到该组存储器区块中的所述存储器区块。
9.根据权利要求7所述的方法,其中,所述段定义了输入信道信号的至少一部分,
所述方法进一步包括:
将所述段写入到该组存储器区块中的所述存储器区块内的一个位置;以及
当输出信道信号的时隙可用时,基于指向该组存储器区块中的所述存储器区块内的所述位置的指针,从该组存储器区块中的所述存储器区块内的所述位置取回所述段,所述输出信道信号映射到所述输入信道信号。
10.根据权利要求7所述的方法,其中,该组存储器区块中的所述存储器区块是第一存储器区块,所述信元的所述部分是所述信元的第一部分,
所述方法进一步包括:
将包括来自所述信元的第二部分的比特值的段发送到该组存储器区块中的第二存储器区块,而无需确定所述第二存储器区块的写端口的状态。
11.根据权利要求7所述的方法,进一步包括:
将一组段中的每个尾随段写入该组存储器区块中的一个唯一的存储器区块,所述信元的所述部分是所述信元的第一部分,所述引导段被排斥在包括来自所述信元的第二部分的比特值的该组尾随段之外。
12.根据权利要求7所述的方法,进一步包括:
在多个时钟周期中的不同的唯一时钟周期期间,将一组段中的每个段写入该组存储器区块中的一个唯一存储器区块,所述比特值来自于定义了所述信元的多个比特值,所述多个比特值包括在一组段中,所述段来自于该组段。
13.根据权利要求7所述的方法,其中,所述比特值定义了数据包的至少一部分,所述信元与第一信道信号相关联,并且当来自与第二信道信号相关联的信元的引导段正在被写入该组存储器区块中的所述存储器区块时,所述该组存储器区块中的存储器区块的所述写端口的状态是不可用状态。
14.一种用于共享存储器缓冲区的设备,包括:
多级交换机结构,被配置为路由具有位宽度范围内的位宽度的一组可变大小信元;
所述多级交换机结构的一级内的共享存储器缓冲区,所述共享存储器缓冲区具有定义了直通缓冲区的至少一部分的一组存储器区块;以及
控制模块,被配置为触发将包括来自该组可变大小信元的比特值的一组段分布到该组存储器区块,
所述控制模块被配置为确定当该段是该组段的引导段时该组存储器区块中的一个存储器区块是否是段的写入目的地;
所述控制模块被配置为当该组存储器区块中的所述存储器区块是所述段的写入目的地,且当该组存储器区块中的所述存储器区块的写端口的状态是可用状态时,将所述段从一组寄存器内的第一位置发送到该组存储器区块中的该存储器区块,
所述控制模块被配置为该组存储器区块中的所述存储器区块是所述段的写入目的地,且当该组存储器区块中的所述存储器区块的所述写端口的所述状态是不可用状态时,将所述段从该组寄存器内的所述第一位置移动到该组寄存器内的第二位置。
15.根据权利要求14所述的设备,其中,所述控制模块被配置为响应于流控制信号,修改该组段中的段的流的流速。
16.根据权利要求14所述的设备,其中,该组段中的每段具有相等的位宽度。
17.根据权利要求14所述的设备,其中,所述多级交换机结构是基于克洛斯体系结构定义的。
18.根据权利要求14所述的设备,其中,所述多级交换机结构定义了数据中心的至少核心部分。
19.根据权利要求14所述的设备,进一步包括:
被配置为在该组段被所述控制模块分布到该组存储器区块之前存储该组段的一组寄存器,该组寄存器的数量是基于所述位宽度范围定义的。
20.根据权利要求14所述的设备,其中,该组段中每个段的位宽度小于与所述可变大小信元相关联的所述位宽度范围内的最小位宽度。
21.根据权利要求14所述的设备,其中,所述控制模块被配置为响应于来自所述多级交换机结构的第一级下游的所述多级交换机结构的第二级的流控制信号,修改通过所述共享存储器缓冲区的该组段中的段的流的流速。
22.一种用于共享存储器缓冲区的系统,包括:
一组寄存器,被配置为接收包括来自信元的一部分的比特值的段;
一组存储器区块,包括一个存储器区块;以及
控制模块,被配置为当所述段是所述信元的引导段时,确定一组存储器区块中的一个存储器区块是否是所述段的写入目的地,该组存储器区块定义了直通缓冲区的至少一部分;
所述控制模块被配置为当该组存储器区块中的所述存储器区块是所述段的写入目的地,且当该组存储器区块中的所述存储器区块的写端口的状态是可用状态时,触发将所述段从该组寄存器中的第一位置发送到该组存储器区块中的所述存储器区块;以及
当该组存储器区块中的所述存储器区块是所述段的写入目的地,且当所述存储器区块的所述写端口的所述状态是不可用状态时,将所述段从该组寄存器内的所述第一位置移动到该组寄存器内的第二位置。
23.根据权利要求22所述的系统,其中,所述控制模块被配置为,当该组存储器区块中的所述存储器区块的所述写端口的所述状态从所述不可用状态变为可用状态时,触发将所述段发送到该组存储器区块中的所述存储器区块。
24.根据权利要求22所述的系统,其中,所述段定义了输入信道信号的至少一部分,
所述控制模块被配置为,触发将所述段写入到该组存储器区块中的所述存储器区块内的一个位置,
所述控制模块被配置为,当输出信道信号的时隙可用时,触发基于指向该组存储器区块中的所述存储器区块内的所述位置的指针从该组存储器区块中的所述存储器区块内的所述位置取回所述段,所述输出信道信号映射到所述输入信道信号。
25.根据权利要求22所述的系统,其中,该组存储器区块中的所述存储器区块是第一存储器区块,所述信元的所述部分是所述信元的第一部分,
所述控制模块被配置为,触发将包括来自所述信元的第二部分的比特值的段发送到该组存储器区块中的第二存储器区块,而无需确定所述第二存储器区块的写端口的状态。
26.根据权利要求22所述的系统,其中,所述控制模块被配置为,触发将一组段中的每个尾随段写入该组存储器区块中的一个唯一的存储器区块,所述信元的所述部分是所述信元的第一部分,所述引导段被排斥在包括来自所述信元的第二部分的比特值的该组尾随段之外。
27.根据权利要求22所述的系统,进一步包括:
所述控制模块被配置为,触发在多个时钟周期中的不同的唯一时钟周期期间,将一组段中的每个段写入该组存储器区块中的一个唯一存储器区块,所述比特值来自于定义了所述信元的多个比特值,所述多个比特值包括在一组段中,所述段来自于该组段。
28.根据权利要求22所述的系统,其中,所述比特值定义了数据包的至少一部分,所述信元与第一信道信号相关联,并且当来自与第二信道信号相关联的信元的引导段正在被写入该组存储器区块中的所述存储器区块时,该组存储器区块中的所述存储器区块的所述写端口的状态是不可用状态。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/415,517 | 2009-03-31 | ||
US12/415,517 US8126002B2 (en) | 2009-03-31 | 2009-03-31 | Methods and apparatus related to a shared memory buffer for variable-sized cells |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101853211A CN101853211A (zh) | 2010-10-06 |
CN101853211B true CN101853211B (zh) | 2013-04-24 |
Family
ID=42244363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010157923.XA Active CN101853211B (zh) | 2009-03-31 | 2010-03-31 | 涉及可变大小信元的共享存储器缓冲区的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (2) | US8126002B2 (zh) |
EP (1) | EP2237507B1 (zh) |
CN (1) | CN101853211B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8126002B2 (en) * | 2009-03-31 | 2012-02-28 | Juniper Networks, Inc. | Methods and apparatus related to a shared memory buffer for variable-sized cells |
US20120066471A1 (en) * | 2010-09-14 | 2012-03-15 | Advanced Micro Devices, Inc. | Allocation of memory buffers based on preferred memory performance |
WO2012068171A1 (en) * | 2010-11-15 | 2012-05-24 | Reed Coke S | Parallel information system utilizing flow control and virtual channels |
CN102726009B (zh) | 2011-11-28 | 2015-01-07 | 华为技术有限公司 | 一种数据流交换控制方法及相关设备 |
WO2014006448A1 (en) * | 2012-07-03 | 2014-01-09 | Freescale Semiconductor, Inc. | Cut through packet forwarding device |
GB2555363B (en) * | 2013-10-31 | 2018-07-18 | Silicon Tailor Ltd | Multistage switch |
GB2519813B (en) | 2013-10-31 | 2016-03-30 | Silicon Tailor Ltd | Pipelined configurable processor |
US9508409B2 (en) * | 2014-04-16 | 2016-11-29 | Micron Technology, Inc. | Apparatuses and methods for implementing masked write commands |
US11888691B1 (en) * | 2020-07-20 | 2024-01-30 | Innovium, Inc. | Foldable ingress buffer for network apparatuses |
US11789858B2 (en) * | 2020-08-11 | 2023-10-17 | Samsung Electronics Co., Ltd. | Method and system for performing read/write operation within a computing system hosting non-volatile memory |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1237344A2 (en) * | 2001-02-23 | 2002-09-04 | Alcatel | Distribution of bank accesses in a multiple bank DRAM used as a data buffer |
US6728254B1 (en) * | 1999-06-30 | 2004-04-27 | Nortel Networks Limited | Multiple access parallel memory and method |
CN1499786A (zh) * | 2002-10-25 | 2004-05-26 | ���Ͽع�����˾ | 接入节点的atm交换设备中使用的组播系统和方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0680178A1 (en) * | 1994-04-28 | 1995-11-02 | Hewlett-Packard Company | Cell switch fabric chip |
US5521913A (en) * | 1994-09-12 | 1996-05-28 | Amber Wave Systems, Inc. | Distributed processing ethernet switch with adaptive cut-through switching |
US5991295A (en) * | 1995-10-10 | 1999-11-23 | Madge Networks Limited | Digital switch |
US6049546A (en) * | 1996-10-15 | 2000-04-11 | At&T Corporation | System and method for performing switching in multipoint-to-multipoint multicasting |
US6731631B1 (en) | 2000-08-11 | 2004-05-04 | Paion Company, Limited | System, method and article of manufacture for updating a switching table in a switch fabric chipset system |
US20020118692A1 (en) * | 2001-01-04 | 2002-08-29 | Oberman Stuart F. | Ensuring proper packet ordering in a cut-through and early-forwarding network switch |
US7283556B2 (en) * | 2001-07-31 | 2007-10-16 | Nishan Systems, Inc. | Method and system for managing time division multiplexing (TDM) timeslots in a network switch |
US7221652B1 (en) * | 2001-12-14 | 2007-05-22 | Applied Micro Circuits Corporation | System and method for tolerating data link faults in communications with a switch fabric |
US7352766B2 (en) * | 2002-03-12 | 2008-04-01 | Alcatel Lucent | High-speed memory having a modular structure |
US7110415B1 (en) * | 2002-05-17 | 2006-09-19 | Marvell International Ltd. | Apparatus and method for dynamically limiting output queue size in a quality of service network |
US7814280B2 (en) * | 2005-01-12 | 2010-10-12 | Fulcrum Microsystems Inc. | Shared-memory switch fabric architecture |
US7809009B2 (en) * | 2006-02-21 | 2010-10-05 | Cisco Technology, Inc. | Pipelined packet switching and queuing architecture |
US8126002B2 (en) * | 2009-03-31 | 2012-02-28 | Juniper Networks, Inc. | Methods and apparatus related to a shared memory buffer for variable-sized cells |
-
2009
- 2009-03-31 US US12/415,517 patent/US8126002B2/en active Active
-
2010
- 2010-03-17 EP EP10156709.7A patent/EP2237507B1/en active Active
- 2010-03-31 CN CN201010157923.XA patent/CN101853211B/zh active Active
-
2012
- 2012-02-27 US US13/406,219 patent/US8804753B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728254B1 (en) * | 1999-06-30 | 2004-04-27 | Nortel Networks Limited | Multiple access parallel memory and method |
EP1237344A2 (en) * | 2001-02-23 | 2002-09-04 | Alcatel | Distribution of bank accesses in a multiple bank DRAM used as a data buffer |
CN1499786A (zh) * | 2002-10-25 | 2004-05-26 | ���Ͽع�����˾ | 接入节点的atm交换设备中使用的组播系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2237507B1 (en) | 2018-08-08 |
US8804753B2 (en) | 2014-08-12 |
CN101853211A (zh) | 2010-10-06 |
EP2237507A1 (en) | 2010-10-06 |
US20100246275A1 (en) | 2010-09-30 |
US20120159062A1 (en) | 2012-06-21 |
US8126002B2 (en) | 2012-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101853211B (zh) | 涉及可变大小信元的共享存储器缓冲区的方法和设备 | |
US10979353B2 (en) | Packet processing match and action unit with configurable memory allocation | |
US9998574B2 (en) | Packet processing match and action unit with configurable bit allocation | |
US11038993B2 (en) | Flexible processing of network packets | |
US9419903B2 (en) | Structure for implementing openflow all group buckets using egress flow table entries | |
CN103348640B (zh) | 中继装置 | |
US10645032B2 (en) | Packet processing match and action unit with stateful actions | |
US7433363B2 (en) | Low latency switch architecture for high-performance packet-switched networks | |
US10078463B1 (en) | Dynamic memory reallocation for match-action packet processing | |
US20210294762A1 (en) | Procedures for improving efficiency of an interconnect fabric on a system on chip | |
US20190007331A1 (en) | Openflow Match and Action Pipeline Structure | |
JP3899085B2 (ja) | ネットワーク装置 | |
CN100367730C (zh) | 一种互连系统 | |
US6611527B1 (en) | Packet switching apparatus with a common buffer | |
KR101802810B1 (ko) | 하이브리드 회선 교환 및 패킷 교환 라우터의 아키텍처 및 그 방법 | |
US7439763B1 (en) | Scalable shared network memory switch for an FPGA | |
EP1489796B1 (en) | Fabric access node integrated circuit configured to bound cell reorder buffer depth | |
CN101416446A (zh) | 利用误差校正的高度并行交换系统 | |
US7079538B2 (en) | High-speed router | |
CN101763247B (zh) | 利用可编程转移表快速转移的系统和方法 | |
CN103858393A (zh) | 网络包的并行处理 | |
US7568074B1 (en) | Time based data storage for shared network memory switch | |
US7124241B1 (en) | Apparatus and methodology for a write hub that supports high speed and low speed data rates | |
US20020066000A1 (en) | Transporting data transmission units of different sizes using segments of fixed sizes | |
CN1729661A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee |
Owner name: JUNIPER NETWORKS INC. Free format text: FORMER NAME: NETSCREEN TECHNOLOGIES INC. |
|
CP01 | Change in the name or title of a patent holder |
Address after: American California Patentee after: Juniper Networks, Inc. Address before: American California Patentee before: Jungle network |