涉及可变大小信元的共享存储器缓冲区的方法和设备的制作方法

文档序号:6601387阅读:273来源:国知局
专利名称:涉及可变大小信元的共享存储器缓冲区的方法和设备的制作方法
技术领域
这里所描述的实施例一般涉及缓冲器模块,具体来说,涉及与可变大小信元的共 享存储器缓冲区相关的方法和设备。
背景技术
已知的低延迟共享存储器缓冲区可以用于许多类型的应用。例如,低延迟共享存 储器缓冲区可以用于吞吐量相对来说比较高的网络交换机应用中以及并行计算系统中。这 些已知的共享存储器缓冲区常常使用直通方法,其中,共享存储器缓冲区被配置为在例如 信元的尾端(例如,尾部比特值)在共享存储器缓冲区的输入端口被完全接收到之前,发送 信元的前端(例如,起始比特值)。这些已知共享存储器缓冲区可以被配置为处理具有固定 位宽度的信元和/或处理具有等于信元的最小位宽度的位宽度的段。然而,这些已知共享 存储器缓冲区常常以不理想的管理开销水平处理信元和/或没有被配置为以所理想的方 式处理可变大小信元。因此,需要被配置为处理可变大小信元的共享存储器缓冲区的方法和设备。

发明内容
在一个实施例中,一种设备包括共享存储器缓冲区,该共享存储器缓冲区包括引 导存储器区块和被配置为将一组段中的引导段发送到引导存储器区块的写复用模块。该组 段包括一组可变大小信元的比特值。所述写复用模块进一步被配置为将该组段中被标识为 尾随段的每个段发送到与所述引导存储器区块互斥的所述共享存储器的一部分。


图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) 接收数据信号&到SM。在缓冲器模块100上进行处理之后,在缓冲器模块100的输出端
6185 (例如,通过缓冲器模块100的输出端口 164)上从缓冲器模块100发送数据信号SQ到 SM。每个数据信号&到SM都可以定义信道(也可以称为数据信道)。数据信号&到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可以被配置为存储(例如,保留)数据信号& 的一个或多个部分,直到缓冲器模块100接收数据信号S2不应再延迟的指示(例如,流控制 信号170的一部分)。相应地,发送到缓冲器模块100的输入端180的数据信号S2的比特 率将不同于(例如,基本上不同于)从缓冲器模块100的输出端185发送的数据信号S2的 比特率。将参考图1B描述涉及缓冲器模块100处的数据信号延迟的更多细节。图1B是示出根据实施例的在图1A中所显示的缓冲器模块100中处理的数据信 号160的一部分的示意图。该图示出定义了数据信号&和数据信号Si (在y轴上)对时间 (在x轴上)的可变大小信元的流。图1B示出缓冲器模块100的输入端和输出端的数据信 号&,以及缓冲器模块100的输入端和输出端的数据信号Slt)在某些实施例中,缓冲器模块 100可以被配置为处理几个数据信号160或许多数据信号160 (例如,12个数据信号、64个 数据信号、数百个数据信号)。如图1B所示,数据信号&和数据信号Si是由可变大小信元的流进行定义的。如 图1B所示的数据信号&的部分由信元10、信元11、信元12和信元13限定。数据信号Si 至少部分地由信元17和信元18来限定。如图1B所示,例如,信元11的位宽度不同于信元 12的位宽度。在某些实施例中,可变大小信元可以具有指定的位宽度范围。例如,可变大小 信元的位宽度可以在64字节和128字节之间,以8字节为增量。在某些实施例中,缓冲器 模块100可以被配置为处理具有固定位宽度的信元和/或具有不同于信元格式的格式的数 据包(例如,具有以太网数据包格式的数据)。参考图3讨论了涉及可变大小信元的更多细 节。如图1B所示,信元具有段,在缓冲器模块100中对数据信号160的处理可以基于 段来进行。例如,数据信号&的信元11具有三个段段1、段2和段3。类似地,数据信号 Si的信元17具有,例如,两个段段6和段7。在某些实施例中,信元的开始处的段可以称
7为引导段。例如,位于信元11的开始处的段1,可以称为引导段(leading segment)。位 于引导段后面的段,如位于信元11中的引导段(段1)后面的段2和段3,可以称为尾随段 (trailingsegment)0在某些实施例中,在分布处理期间,可以通过缓冲器模块100中包括的各个存储 器区块(例如,静态随机存取存储器(SRAM)存储器区块)处理信元的段。存储器区块可以 定义共享存储器缓冲区。在某些实施例中,在分布处理期间,数据信号的段可以以预定义的 方式(例如,以预定义的模式,根据预定义的算法)分布到各存储器区块。例如,在某些实 施例中,可以在缓冲器模块100的某些部分(例如,缓冲器模块100的指定的存储器区块, 可以不同于缓冲器模块100内尾随段被处理的那些部分)处理数据信号160的引导段。在 某些实施例中,可以按特定顺序来处理数据信号160的段。在某些实施例中,例如,对数据 信号160的每一段的处理可以基于它们在信元内的各自位置来进行。在通过共享存储器缓 冲区处理完信元的段之后,可以在重新组合处理期间对信元的段进行排序,并从缓冲器模 块100发送。参考图2到7描述了涉及段处理的更多细节。在某些实施例中,可以通过段模块(未显示)将数据信号160解析为段。在某些实 施例中,段模块可以包括在(例如,集成在)如图1A所示的缓冲器模块100中。在某些实 施例中,段模块也可以位于缓冲器模块100的外面。例如,如果缓冲器模块100包括在多级 交换机结构(图1A中未显示)的中间级内,则段模块可以位于多级交换机结构的入口级。如图1B所示,随着数据信号&通过缓冲器模块100被处理,数据信号&被时移时 长L1。如图1B所示的时移可以基本上只由通过缓冲器模块100的一个或多个部分的处理 延迟所引起。相应地,如图1B所示,信元11和信元12之间的时长P1在缓冲器模块100的 输入端和缓冲器模块100的输出端基本上相同。数据信号Si被时移基本上恒定数量的时 钟周期,当发送到缓冲器模块100的输入端时数据信号Si的比特率基本上与当从缓冲器模 块100的输出端发送时数据信号Si的比特率相同。导致时移时长L1的处理延迟可以比例如与信元11相关联的处理时间周期P2短。 在某些实施例中,处理可以在缓冲器模块100中执行得使通过缓冲器模块100的处理延迟 小于或大于与一个信元相关联的处理时间期。如图1B所示,数据信号Si的信元17基于通过缓冲器模块100的处理延迟,被时 移时长L2,而数据信号Si的信元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的不同的处理延迟所引 起。例如,与数据信号Si关联的处理延迟可以不同于与数据信号&关联的处理延迟。
图2是显示了根据实施例的缓冲器模块200的示意图。如图2所示,在缓冲器模 块200上在缓冲器模块200的输入端280上接收数据信号到QP。在缓冲器模块200中 进行处理之后,在缓冲器模块200的输出端285上从缓冲器模块200发送数据信号到QP。 数据信号Qo到QP中每个都可以定义信道(也可以称为数据信道)。数据信号Qo到QP可以 统称为数据信号260。缓冲器模块200具有由存储器区块230限定的共享存储器缓冲区。存储器区块 230包括存储器区块1 1到1 1 。在某些实施例中,存储器区块230中的每个存储器区块都 可以是例如SRAM存储器区块、flash存储器区块,和/或其他。每个存储器区块230都可 以是排它(例如,互斥)的存储器区块230。例如,在某些实施例中,存储器区块230中的 每个存储器区块都可以与一个或多个存储器控制器(未显示)相关联(例如,可以具有)。 例如,与存储器区块MB3相关联的存储器控制器可以被配置为确定存储器区块应该向 其中写入信息和/或从其中读取信息的位置(例如,行、列、被标页号的部分)。此外,存储 器控制器可以管理指向位置的指针。在某些实施例中,尽管每一个存储器区块230都可以 是排它(例如,互斥)的存储器区块230,但是,存储器区块230可以共同限定共享存储器缓 冲区(例如,共享的直通缓冲区)。在某些实施例中,一个或多个存储器区块230可以具有被分配为处理(例如,存 储)指定的数据信号260和/或数据信号260的指定部分的部分。例如,存储器区块MBi可 以具有分配为读取和/或写入数据信号Q。的某些部分的第一部分和分配为读取和/或写入 数据信号仏的某些部分的第二部分。在某些实施例中,可以随着数据信号的接收动态地分 配一些部分。在某些实施例中,例如,存储器区块MBi可以具有第一部分,其被分配为读取和 /或写入数据信号Qo的引导段,并且存储器区块MB2可以具有第一部分,其被分配为读取和 /或写入数据信号Qo的例如紧随数据信号Qo的引导段之后的尾随段。如图2所示,缓冲器模块200具有写复用模块210和读复用模块220。写复用模 块210和读复用模块220被配置为处理数据信号260的段,以便可以通过一个或多个存储 器区块230并行地处理(例如,同时处理)数据信号260的一个或多个段。数据信号260的段可以由写复用模块210分布到存储器区块230,例如用于并行处 理。此过程可以称为分布(例如,段分布)。如图2所示,例如,数据信号仏的多个段(例 如,部分)由写复用模块210分布到共享存储器缓冲区230的不同的存储器区块,并通过它 们进行发送(例如,路由)。具体来说,数据信号仏的第一段由写复用模块210通过传输路 径20发送到存储器区块MBi,数据信号Qi的第二段由写复用模块210通过传输路径22发 送到存储器区块MB2,而数据信号Qi的第三段由写复用模块210通过传输路径24发送到存 储器区块MB3。在某些实施例中,数据信号仏的段可以与例如单一信元关联。在存储器区块230中处理完(例如,接收,存储)数据信号260的段之后,在从缓冲 器模块200发送之前,在读复用模块220中接收(例如,由读复用模块220中接收者选择) 数据信号260的段,并进行排序。此过程可以称为重新组合(例如,段重新组合)和/或重 新排序(例如,段重新排序)。如图2所示,例如,通过传输路径20、22和24,在读复用模块 220中接收数据信号Qi的段。对段进行排序,并作为数据信号Qi从缓冲器模块200的输出 端285发送。在此实施例中,由写复用模块210、读复用模块220,以及存储器区块230来处理数
9据信号,以便缓冲器模块200的输入端280上的每个数据信号260的段的顺序都与缓冲器 模块200的输出端285上的每个数据信号260的段的顺序相同或基本上相同。虽然未显示, 但是,也可以以类似于如图2所示的处理数据信号Qi的方式通过缓冲器模块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可以包括对应于与开放系统互连(0SI)模型的任何层(例如,层2,层3) 关联的协议的比特值序列。在某些实施例中,信元300可以具有与可变大小信元关联的多个位宽度构成的范 围内的一个位宽度。例如,信元300可以是72字节信元,其可以通过例如交换机结构进行 处理的。交换机结构可以被配置为处理具有在例如48字节和192字节之间的位宽度的信兀。如图3所示,信元300被解析为三个不同的部分部分342,部分344,以及部分
10346。如图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 至少包括模块到STAd,以及缓冲器模块到BAd,第二级450至少包括模块STBi到 STBd,以及缓冲器模块BBi到BBd,而第三级460至少包括模块STQ到STCD,以及缓冲器模块 BC^jBCD。在某些实施例中,例如,每个模块可以是专用集成电路(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的多个
12存储器区块630。写复用模块620的功能由写控制模块690控制(例如,触发),并且读复用 模块640的功能由读控制模块695控制(例如,触发)。在某些实施例中,写控制模块690 的功能和读控制模块695的功能可以合并到单个模块中(例如,单个控制模块)或分成不 同于图6A中所示的那些模块的多个模块。在某些实施例中,存储器区块630中的每个存储器区块都可以与一个或多个存储 器控制器(未显示)关联(例如,可以具有一个或多个存储器控制器)。例如,与存储器区 块抓工关联(例如,排他地关联)的存储器控制器可以被配置为确定存储器区块的应该 向其中写入信息和/或从其中读取信息的位置(例如,行、列、被标页号的部分)。在此实施例中,写复用模块620被配置为接收三个输入信道信道ChA、信道ChB, 以及信道ChC。输入信道通过包括可变大小信元的若干部分的段来定义。在此实施例中,写 复用模块620被配置为接收三个信道信道A、信道B,以及信道C。这些信道通过包括位宽 度范围内的可变大小信元的若干部分的段来定义。在此实施例中,段具有小于位宽度范围 内的最小位宽度的位宽度。在某些实施例中,可变大小信元可以包括,例如,数据包的一个 或多个部分。在某些实施例中,缓冲器模块600可以被配置为接收比图6A所显示的那些信 道更多的信道。图6B是示出根据实施例的通过图6A中所显示的缓冲器模块600的组件来处理段 的时序图。如图6B所示,时间在从时间段T1开始的x轴上向右增大。在某些实施例中,时 间段T1可以代表一个时钟周期或多个时钟周期。在某些实施例中,时间段可以称为时隙。 在y轴上显示了缓冲器模块600的组件中的几个。在此实施例中,在每个信道中接收相等的位宽度的信元。在此实施例中,基于接收 信元时所在的信道,对信元进行标记,并且利用下标标记信元的段。例如,信道ChA被配置 为接收具有三个段的信元A1 段Ah、段Al2,以及段Al3。段Ah是信元A1的引导段,段Al2 和段Al3是信元A1的尾随段。在此实施例中,定义了信道的信元的引导段被写入存储器区块BK”该存储器区块 BK:已经被选定(例如,指定,指派)为该引导段的写入位置。定义了信道的信元的尾随段 被以轮询的方式写入存储器区块抓2到抓5。在某些实施例中,已被选定接收引导段的存储 器区块可以称为引导存储器区块B&,而存储器区块BK2到BK5可以称为尾随存储器区 块 BK2 到 BK5。如图6B所示,在写复用模块620的输入寄存器622处接收信元A1的引导段(与 信道ChA关联)、信元B1的引导段(与信道ChB关联)、以及信元C1的引导段(与信道ChC 关联)。具体来说,在时间段T2,在输入寄存器R^中接收引导段A1”在输入寄存器RB^* 接收引导段B1”在输入寄存器RQ中接收引导段Cllt)如图6B所示,在时间段T3期间,信元A1的引导段々“被写入引导存储器区块BKlt) 具体来说,写控制模块690可以被配置为触发对输入寄存器R^的内容的选择,以便在时间 段T3期间使用多路复用器AMXL和多路复用器写入引导存储器区块B&。在某些实施 例中,引导段Ah可以基于,例如,引导段Ah中包括的指示,和/或标识之前信元的末尾的 指示(并包括在之前信元的最后一段中),被标识为引导段。在时间段T3期间,信元B1的引导段Bh从输入寄存器RB。移动到输入寄存器RB” 直到在时间段T4期间引导存储器区块BKjf备接收引导段Bllt)换句话说,引导段附工在输
13入寄存器622内移动,直到存储器区块的状态(例如,存储器区块的写端口 632的 状态)从不可用状态变为可用状态。在时间段T3期间,引导段附工不能被写入引导存储器 区块肌,因为在时间段T3期间引导段Ah正在被写入引导存储器区块肌(这导致引导存 储器区块不可用)。此外,在时间段T3期间,引导段Bh从输入寄存器RB。移动到输入 寄存器RB”以便在时间T3,在输入寄存器RB。中可以接收紧跟在引导段Bh后面的信元B1 的段Bl2。类似地,在时间段T3或时间段T4期间,引导段Ch不能被写入引导存储器区块 BK”因为在时间段T3或时间段T4期间,引导段Ah和引导段叫正在分别被写入引导存储 器区块。引导段Ch从输入寄存器RQ经过输入寄存器RQ移动到输入寄存器RC2 (在时 间段T3和T4期间),以便在输入寄存器RQ和输入寄存器RQ中分别可以接收尾随段Cl2 和尾随段Cl3。如图6B所示,每个尾随段以轮询的方式被写入到其中一个尾随存储器区块。例 如,在引导段々^在时间段T3期间被写入到引导存储器区块(被选定接收引导段)之后, 尾随段Al2在时间段T4期间被写入到尾随存储器区块BK2,尾随段Al3在时间段T5期间被 写入到尾随存储器区块BK3。在此实施例中,在紧随在引导段被写入到引导存储器区块 的时间段之后的相邻的时间段,尾随段可以被写入尾随存储器区块。相应地,写控制模块 690可以被配置为在涉及将引导段写入引导存储器区块(在此情况下,是存储器区块Big 的冲突被解决之后,以连续的方式(在连续的时间段内)触发尾随段向尾随存储器区块的 写入。在某些实施例中,写控制模块690可以被配置为触发尾随存储器区块的写入,而不确 定尾随存储器区块的一个或多个写端口的可用性。可以这样执行,是因为解决了涉及将引 导段写入引导存储器区块(在此情况下,是存储器区块Big的冲突将确保在尾随区块中将 不会遇到冲突。可确保这一点,是因为段是从引导存储器区块开始以轮询的方式(例 如,以顺序的方式)被写入存储器区块630的。如图6B所示,每个信道都与一组三个输入寄存器相关联。例如,定义了 ChA的每 个段都可以在输入寄存器R^、输入寄存器RAp以及输入寄存器RA2中被接收。每组输入寄 存器只包括三个输入寄存器,因为写复用模块被配置为只接收三个信道。相应地,在此实施 例中,保证引导存储器区块^^在三个时间段内可用于写入。在某些实施例中,当写复用模 块620被配置为接收三个以上的信道时,每组输入寄存器内的输入寄存器的数量将增大到 三个以上。如图6B所示,在连续的时间段,将引导段Ah、引导段叫、以及引导段从引导 存储器区块中读取到输出寄存器644中。在时间段T4期间,将引导段Ah从引导存储 器区块中读取到输出寄存器RA3,在时间段T5,将引导段Bh从引导存储器区块^^中读 取到输出寄存器RB3,在时间段T6,将引导段从引导存储器区块队中读取到输出寄存 器RC3。具体来说,在时间段T4期间,读控制模块695可以被配置为触发通过使用多路解复 用器(多路解复用器642中的)从引导存储器区块选择段A1”并将段A“写入输 出寄存器RA3。在某些实施例中,读控制模块695可以被配置为触发将段从存储器区块630 写入例如输出寄存器RA4,而不是输出寄存器RA3。在从引导存储器区块中读取信元的引导段之后,从尾随存储器区块中读取 (例如,以轮询的方式读取)特定信元的尾随段。例如,在引导段々^在时间段T4期间被从 引导存储器区块读取之后,在时间段T5将尾随段Al2从尾随存储器区块BK2中读取到寄存器RA3中。类似地,在引导段Al2在时间段T5期间被从尾随存储器区块BK2中读取之后, 在时间段T6期间将尾随段Al3从尾随存储器区块BK3中读取到寄存器RA3中。通过按此顺 序读取信元A1的段,信元A1的段可以被重新组合,并按顺序从缓冲器模块600发送。由于 可以按与段被写入存储器区块630相同的预先确定的顺序(例如,轮询的顺序)从存储器 区块630读取段,写控制模块690和读控制模块695可以以极少的或基本上没有的管理开 销(例如,簿记)分别执行写入功能和读取功能(例如,触发这些功能的执行)。读控制模块695可以被配置为基于从写控制模块690接收到的段编号来触发从存 储器区块630读取段的操作。例如,读控制模块695可以被配置为基于信元A1总共包括三 个段和/或只包括两个尾随段的指示,触发从尾随存储器区块BK2和尾随存储器区块BK3读 取尾随段々12和尾随段々13的操作。在某些实施例中,读控制模块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之间的时滞与信元的引导段被写入 引导存储器区块的时间段相关。在此实施例中,写控制模块690被配置为选定(例如,触发选择)用于从信道ChA 开始以轮询的方式写入存储器区块630的引导段,接下来从信道ChB选择(例如,触发选 择)引导段,最后从信道ChC选择(例如,触发选择)引导段。在某些实施例中,写控制模 块690可以被配置为以不同的顺序选择引导段。相应地,如果写控制模块690以不同的顺 序选择引导段,则写控制模块690可以被配置为将该顺序传递到读控制模块695,以便读控 制模块695可以以所希望的顺序触发段的读取。在某些实施例中,不同于存储器区块的存储器区块可以被选为引导存储器区 块。例如,在某些实施例中,诸如存储器区块BK2之类的不同的存储器区块(而不是存储器区块Big可以被选为引导存储器区块。相应地,存储器区块BKi、存储器区块BK3、存储器区 块BK4,以及存储器区块抓5可以被配置为作为尾随存储器区块。在某些实施例中,写控制 模块690和/或读控制模块695可以被配置为动态地选择作为引导存储器区块的存储器区 块。如果由写控制模块690选择(例如,指定)引导存储器区块,则选定的引导存储器区块 可以传递到读控制模块695,反之亦然。在某些实施例中,可以选择一个存储器区块(例如, 指定)在指定的时间段内(例如,基于计数器确定的指定的时间段内)作为引导存储器区 块。在某些实施例中,可以以任何顺序向尾随存储器区块写入尾随段和/或从其中读 取尾随段。顺序可以由例如写控制模块690和/或读控制模块695进行定义。例如,与第二 尾随段相邻的第一尾随段可以分别被写入到第一存储器区块和第二存储器区块。第三存储 器区块可以位于第一存储器区块和第二存储器区块之间。如果分布模式由写控制模块690 进行定义,则分布模式可以被传递到读控制模块695,反之亦然。图6C是显示了根据实施例的通过图6A中所显示的缓冲器模块600的组件来处理 段的时序图。如图6C所示,在从时间段U1开始的x轴上,时间向右增加。在某些实施例 中,时间段U1可以代表一个时钟周期或多个时钟周期。在某些实施例中,时间段可以称为 时隙。在y轴上示出缓冲器模块600的若干组件。在此实施例中,基于接收信元时所在的信道标记信元,并且用下标标记信元的段。 此外,在此实施例中,在每个信道接收可变位宽度的信元。例如,信道ChA被配置为接收具 有三个段的信元A3 段A3i、段A32、以及段A33。段是信元A3的引导段,并且段A32和 段A33是信元A3的尾随段。信道ChC被配置为接收信元A5,信元A5具有五个段段C3i、段 C32、段 C33、段 C34,以及段 C35。如图6C所示,在写复用模块620的输入寄存器622处接收信元A3的引导段(与 信道ChA关联)、信元B3的引导段(与信道ChB关联)、以及信元C3的引导段(与信道ChC 关联)。具体来说,在时间段U2期间,在输入寄存器R^处接收引导段A3”在输入寄存器 RB0处接收引导段B3i,并且在输入寄存器RQ处接收引导段C3i。如图6C所示,在时间段U3期间,信元A3的引导段写入引导存储器区块BKlt) 在时间段U3期间,信元B3的引导段B3i从输入寄存器RB。移动到输入寄存器RBi,直到在时 间段U4期间引导存储器区块BKjf备接收引导段B3lt)换句话说,引导段B3i在输入寄存器 622内移动,直到存储器区块肌的状态(例如,存储器区块軋的写端口的状态)从不可用 状态变为可用状态。引导段C3i从输入寄存器RQ经过输入寄存器Rq移动到输入寄存器 RC2 (在时间段U3和U4期间),以便在输入寄存器RQ和输入寄存器RCq处分别可以接收尾 随段C32和尾随段C33。在此实施例中,在定义信元B3的所有段被移动到输入寄存器!^工之后,这些段都 被从输入寄存器1^写入存储器区块630。由于引导存储器区块^^在时间段U7期间可用, 从(在时间段TO期间,被移动到输入寄存器RBJW引导段Bl开始,定义信元B4的段被 从输入寄存器RB。(而不是输入寄存器RBD写入存储器区块630。如图6C所示,在时间段U10期间,段不被写入引导存储器区块吼,因为在时间段 U10期间,引导段不存储在任何输入寄存器622中。换句话说,引导存储器区块BKi是空闲 的,直到来自至少一个信道(例如,信道ChB)的引导段可以被写入引导存储器区块BKlt)
16
在此实施例中,来自信元B3的段B34和来自信元B4的段B+存储在存储器区块 630中,并准备好在时间U7从存储器区块630被读取。在时间U8,来自信元B3的段B34存 储在输出寄存器RB3中,来自信元B4的段B4i存储在输出寄存器RB4中。由于只有与信道 ChB关联的段的单一流可以从缓冲器模块600的输出端648发送,在时间U9期间,从缓冲 器模块发送段B34,并且段BI在时间U9期间保留(例如,存储在)在输出寄存器RB4中,如 图6C所示。具体来说,读控制模块695可以被配置为在时间段U9期间使用多路解复用器 0MX2(多路解复用器646中)触发从输出寄存器1 3中选择段B34。当缓冲器模块600的输 出端口 648在时间U10期间可用时,从缓冲器模块600发送段B4lt)在某些实施例中,读控 制模块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中,当存储器区块的写端口的状态从不可用状态变为可用状态时,将该段
17发送到存储器区块。在某些实施例中,该段可以通过写复用模块中包括的一个或多个多路 复用器被发送到存储器区块。该多路复用器可以由例如写控制模块控制。在950中,该段被写入存储器区块内的一个位置。在某些实施例中,存储器区块内 的位置可以由与存储器区块相关联的存储器控制器来确定。在960中,当与缓冲器模块的输出端口关联的寄存器可用时,基于指向该位置的 指针,从该位置取出该段。在某些实施例中,该指针可以由与存储器区块相关联的存储器控 制器来确定。图8是示出根据实施例的图6A所显示的缓冲器模块600的变型的示意图。在此 实施例中,输出寄存器644包括每个输出信道4个输出寄存器(而不是如图6A所示的每个 输出信道2个输出寄存器)。例如,与信道ChA的输出端关联的输出寄存器644 (在缓冲器 模块600的输出端)是输出寄存器RA3、输出寄存器RA4、输出寄存器RA5、以及输出寄存器 RA6。可以选择存储在输出寄存器644中的段,以用于由输出多路解复用器646从缓冲器模 块600发送。例如,输出多路解复用器0M&可以由读控制模块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关联。多路解复用器RMXi以及其关联的输出寄存器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++,或其他编程语言(例如,面向对象的编程语言)和 开发工具来实现实施例。计算机代码的其他示例包括,但不仅限于,控制信号、加密码,以及 压缩码。尽管上文描述了本发明的各种实施例,但是,应该理解,它们只是作为示例来呈现 的,而不作为限制,可以在形式和细节方面进行各种修改。可以以任何组合方式组合这里所 描述的设备和/或方法的任何部分,互相排斥的组合除外。这里所描述的实施例可以包括 所描述的不同的实施例的功能、组件和/或特点的不同组合和/或子组合。例如,缓冲器模 块可以被配置为将信元的段直接发送到另一个缓冲器模块。在某些实施例中,缓冲器模块 可以包括多级共享存储器缓冲区。
19
权利要求
一种用于共享存储器缓冲区的设备,包括包括引导存储器区块的共享存储器缓冲区;以及写复用模块,被配置为将一组段中的引导段发送到所述引导存储器区块,该组段包括来自一组可变大小信元的比特值,所述写复用模块进一步被配置为将该组段中被标识为尾随段的每一段发送到与所述引导存储器区块互斥的所述共享存储器的一部分。
2.根据权利要求1所述的设备,其中来自该组可变大小信元的每个可变大小信元具 有位宽度范围内的位宽度,来自该组段的每段的位宽度小于所述位宽度范围中的最小位宽 度。
3.根据权利要求1所述的设备,其中,来自该组可变大小信元的每个可变大小信元具 有的段数量在指定段数量范围内,并且所述共享存储器缓冲区包括的存储器区块的数量至 少等于所述指定段数量范围内的最大段数量。
4.根据权利要求1所述的设备,其中,该组段定义了多个输入信道信号,所述设备进一步包括操作地耦合到所述共享存储器缓冲区的一组寄存器,在该组寄存器的互斥部分处接收 所述多个输入信道信号中的每个输入信道信号。
5.根据权利要求1所述的设备,其中,所述共享存储器缓冲区包括在定义了数据中心 的至少核心部分的多级交换机结构的一级中。
6.根据权利要求1所述的设备,其中,所述存储器区块是随机存取存储器区块。
7.一种用于共享存储器缓冲区的方法,包括在一组寄存器处接收包括来自信元的一部分的比特值的段;当所述段是所述信元的引导段时,确定一组存储器区块中的一个存储器区块是否是所 述段的写入目的地,该组存储器区块定义了直通缓冲区的至少一部分;以及当所述存储器区块的写端口的状态是不可用状态时,将所述段从该组寄存器内的第一 位置移动到该组寄存器内的第二位置。
8.根据权利要求7所述的方法,进一步包括当所述存储器区块的所述写端口的所述状态是可用状态时,将所述段从所述第一位置 发送到所述存储器区块。
9.根据权利要求7所述的方法,进一步包括当所述存储器区块的所述写端口的所述状态从所述不可用状态变为可用状态时,将所 述段发送到所述存储器区块。
10.根据权利要求7所述的方法,其中,所述段定义了输入信道信号的至少一部分,所述方法进一步包括将所述段写入到所述存储器区块内的一个位置;以及当输出信道信号的时隙可用时,基于指向所述位置的指针,从所述位置取回所述段,所 述输出信道信号映射到所述输入信道信号。
11.根据权利要求7所述的方法,其中,所述存储器区块是第一存储器区块,所述信元 的所述部分是所述信元的第一部分,所述方法进一步包括将包括来自所述信元的第二部分的比特值的段发送到该组存储器区块中的第二存储 器区块,而无需确定所述第二存储器区块的写端口的状态。
12.根据权利要求7所述的方法,进一步包括将一组段中的每个尾随段写入该组存储器区块中的一个唯一的存储器区块,所述信元 的所述部分是所述信元的第一部分,所述引导段被排斥在包括来自所述信元的第二部分的 比特值的该组尾随段之外。
13.根据权利要求7所述的方法,进一步包括在多个时钟周期中的不同的唯一时钟周期期间,将一组段中的每个段写入该组存储器 区块中的一个唯一存储器区块,所述比特值来自于定义了所述信元的多个比特值,所述多 个比特值包括在一组段中,所述段来自于该组段。
14.根据权利要求7所述的方法,其中,所述比特值定义了数据包的至少一部分,所述 信元与第一信道信号相关联,并且当来自与第二信道信号相关联的信元的引导段正在被写 入所述存储器区块时,所述存储器区块的所述写端口的状态是不可用状态。
15.一种用于共享存储器缓冲区的设备,包括多级交换机结构,被配置为路由具有位宽度范围内的位宽度的一组可变大小信元;所述多级交换机结构的一级内的共享存储器缓冲区,所述共享存储器缓冲区具有一组 存储器区块;以及控制模块,被配置为触发将包括来自该组可变大小信元的比特值的一组段分布到该组 存储器区块,该组段中每个段的位宽度小于与所述可变大小信元相关联的所述位宽度范围 内的最小位宽度。
16.根据权利要求15所述的设备,其中,所述控制模块被配置为响应于流控制信号,修 改该组段中的段的流的流速。
17.根据权利要求15所述的设备,其中,该组段中的每段具有相等的位宽度。
18.根据权利要求15所述的设备,其中,所述多级交换机结构是基于克洛斯体系结构 定义的,所述级是所述多级交换机结构的第一级,所述控制模块被配置为响应于来自所述多级交换机结构的第一级下游的所述多级交 换机结构的第二级的流控制信号,修改通过所述共享存储器缓冲区的该组段中的段的流的 流速。
19.根据权利要求15所述的设备,其中,所述多级交换机结构定义了数据中心的至少 核心部分。
20.根据权利要求15所述的设备,进一步包括一组输入寄存器,被配置为在该组段被所述控制模块分布到该组存储器区块之前存储 该组段,该组输入寄存器的数量是基于所述位宽度范围定义的。
21.一种用于共享存储器缓冲区的系统,包括一组寄存器,被配置为接收包括来自信元的一部分的比特值的段;一组存储器区块,包括一个存储器区块;以及控制模块,被配置为当所述段是所述信元的引导段时,确定一组存储器区块中的一个 存储器区块是否是所述段的写入目的地,该组存储器区块定义了直通缓冲区的至少一部 分;以及当所述存储器区块的写端口的状态是不可用状态时,将所述段从该组寄存器内的第一 位置移动到该组寄存器内的第二位置。
22.根据权利要求21所述的系统,其中,所述控制模块被配置为,当所述存储器区块的 所述写端口的所述状态是可用状态时,触发将所述段从所述第一位置发送到所述存储器区 块。
23.根据权利要求21所述的系统,其中,所述控制模块被配置为,当所述存储器区块的 所述写端口的所述状态从所述不可用状态变为可用状态时,触发将所述段发送到所述存储 器区块。
24.根据权利要求21所述的系统,其中,所述段定义了输入信道信号的至少一部分,所述控制模块被配置为,触发将所述段写入到所述存储器区块内的一个位置,所述控制模块被配置为,当输出信道信号的时隙可用时,触发基于指向所述位置的指 针从所述位置取回所述段,所述输出信道信号映射到所述输入信道信号。
25.根据权利要求21所述的系统,其中,所述存储器区块是第一存储器区块,所述信元 的所述部分是所述信元的第一部分,所述控制模块被配置为,触发将包括来自所述信元的第二部分的比特值的段发送到该 组存储器区块中的第二存储器区块,而无需确定所述第二存储器区块的写端口的状态。
26.根据权利要求21所述的系统,其中,所述控制模块被配置为,触发将一组段中的每 个尾随段写入该组存储器区块中的一个唯一的存储器区块,所述信元的所述部分是所述信 元的第一部分,所述引导段被排斥在包括来自所述信元的第二部分的比特值的该组尾随段 之外。
27.根据权利要求21所述的系统,进一步包括所述控制模块被配置为,触发在多个时钟周期中的不同的唯一时钟周期期间,将一组 段中的每个段写入该组存储器区块中的一个唯一存储器区块,所述比特值来自于定义了所 述信元的多个比特值,所述多个比特值包括在一组段中,所述段来自于该组段。
28.根据权利要求21所述的系统,其中,所述比特值定义了数据包的至少一部分,所述 信元与第一信道信号相关联,并且当来自与第二信道信号相关联的信元的引导段正在被写 入所述存储器区块时,所述存储器区块的所述写端口的状态是不可用状态。
全文摘要
在一个实施例中,一种设备包括其中包括引导存储器区块的共享存储器缓冲区,和被配置为将一组段中的引导段发送到引导存储器区块的写复用模块。该组段包括一组可变大小信元的比特值。所述写复用模块进一步被配置为将该组段中的标识为尾随段的每一段发送到与所述引导存储器区块互相排斥的所述共享存储器的一部分。
文档编号G06F12/04GK101853211SQ20101015792
公开日2010年10月6日 申请日期2010年3月31日 优先权日2009年3月31日
发明者G·艾贝 申请人:丛林网络公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1