CN102971997B - 包括数据分段和数据描述分段的分组缓冲器 - Google Patents
包括数据分段和数据描述分段的分组缓冲器 Download PDFInfo
- Publication number
- CN102971997B CN102971997B CN201080065571.3A CN201080065571A CN102971997B CN 102971997 B CN102971997 B CN 102971997B CN 201080065571 A CN201080065571 A CN 201080065571A CN 102971997 B CN102971997 B CN 102971997B
- Authority
- CN
- China
- Prior art keywords
- bag
- packet
- queue
- buffer memory
- data buffer
- 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.)
- Expired - Fee Related
Links
Classifications
-
- 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/9047—Buffering arrangements including multiple buffers, e.g. buffer pools
-
- 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/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- 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/9036—Common buffer combined with individual queues
-
- 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
Abstract
本发明涉及一种用于在数据通信网络中存储数据的数据缓冲存储器(104)和方法,并且涉及一种包括这样的数据缓冲存储器的数据缓冲器系统(100)。该数据缓冲存储器包括数据分段(104a’),其包括多个存储器页(104a);以及包描述符分段(104b’),其包括多个包描述符(104b);其中至少一个分组队列(103)在数据分段(104a’)中存储作为包的有序集合,并且其中包是分组的有序集合。
Description
技术领域
本发明涉及一种用于在通信网络中存储分组的分组缓冲存储器。本发明进一步涉及一种用于在通信网络中存储和调度分组的方法和系统。
背景技术
在通信网络中,诸如路由器、交换机、调制解调器、网络接口卡之类的许多设备以及其它元素在例如分组缓冲器的队列中存储分组,并且借助于诸如业务管理器、网络处理器、交换部件和帧调节器之类的排队设备对来自队列的分组进行调度。许多现有技术的设备使用诸如动态随机访问存储器(DRAM)之类的随机访问存储器(RAM)来实现分组缓冲器。
分组缓冲器设计中的寻常目标是提供一种满足低成本、低功耗、高存储容量以及缓冲存储器在队列之间的弹性共享的要求的分组缓冲器。弹性共享意味着如果存在所剩下的、未被其它队列使用的足够的存储器空间,则可以允许队列的大小超过总缓冲存储器的固定部分。
低成本和低功耗经常通过将DRAM用作主缓冲存储器来实现。队列之间的存储器弹性共享通过使用例如DRAM的、基于页的存储器来实现,在该基于页的存储器中,基于页的存储器队列根据需要分配新的页,并且在自由列表(free-list)中对未使用页保持追踪。
然而,具有作为主分组缓冲器的DRAM的分组缓冲器系统设计的困难在于DRAM的随机访问属性。例如,DRAM可以具有50ns的访问时间。如果在具有例如10Gb/s或更高比特率作为线路速率的通信网络中使用包括这样的DRAM的缓冲器系统,则对DRAM中任意地址的两次连续访问之间的最小时间就超出了以线路速率传送的两个最小大小的分组之间所允许的最大时间。
为了为具有高比特率的通信网络提供分组缓冲器,并且为了克服DRAM缓慢的访问时间,已经使用快速静态随机访问存储器(SRAM)而不是缓慢的DRAM来设计快速的分组缓冲器。如今,可以获得具有低于4ns的访问时间的快速SRAM,并且这样的SRAM适合于40Gb/s的分组缓冲器。然而,SRAM较小(即,具有较小的缓冲器容量)、昂贵并且功耗高。因此,它们仅在需要小的分组缓冲器的网络组件中使用。如果需要大的分组缓冲器,则需要大量的SRAM,这导致分组缓冲器非常昂贵和耗能。
Iyer等人的文章“Designing packet buffers for router linecards”(IEEE/ACM Transactions on networking,第16卷,第3期,2008年6月)公开了一种包括SRAM和DRAM的层级的分组缓冲器,以便提供具有SRAM的速度以及DRAM的成本的分组缓冲器。可能即将就会需要的数据被保持在快速的SRAM中,而其余的数据则被保持在较慢的DRAM中。所公开的分组缓冲器包括两个SRAM高速缓存。SRAM高速缓存之一,即尾部SRAM高速缓存,被配置为在每个FIFO队列的尾部保持分组,而另外的SRAM高速缓存,即首部SRAM高速缓存,被配置为在每个FIFO队列的首部保持分组。每个队列处的大多数分组(即,既不与队列的尾部接近也不与队列的首部接近的分组)被保持在慢速DRAM中。当分组到达分组缓冲器时,它们被写入尾部SRAM高速缓存。另外,当针对队列(来自多个小的分组或者来自单个大的分组)的足够数据已经到达时(但是在尾部SRAM高速缓存溢出之前),数据在大的块中被聚集在一起,并且被写入到DRAM。类似地,在分组需要离开时进行准备时,分组的块从DRAM读入首部SRAM高速缓存,以确保将要被读取的分组将在读取操作时将处于首部SRAM高速缓存。
Iyer等人所公开的分组缓冲器的缺点在于,其在片上SRAM高速缓存中存储尾部和首部数据。如果存在许多队列,则高速缓存所需要的SRAM量将需要很大,这使得在片上装配该SRAM是不切实际的。
Starr等人的美国专利US 6,470,415B1公开了一种用于对信息进行排队的设备。该设备将SRAM的速度与DRAM的低成本和低功耗相结合。该设备包括由SRAM和DRAM存储单元的组合所形成的第一队列和第二队列。第一队列和第二队列中的每一个具有SRAM首部和SRAM尾部,其可以被用作SRAM FIFO。另外,第一队列和第二队列中的每一个队列均能够对DRAM主体中的信息进行排队。
如果诸如处理器之类的设备想要在队列中存储数据,则关于该数据的信息就被发送到对诸如第一队列和第二队列之类的多个队列中的条目进行管理的队列管理器。来自处理器的数据在队列的首部输入,该首部由SRAM所构成并且被称作SRAM首部。如果信息即将被处理器所需要,则条目可以直接从SRAM首部读取并且被发送回处理器。如果条目并非即将需要,则为了给SRAM首部中的另一条目提供空间,该条目从SRAM首部移动至DRAM主体。随着处理器从队列请求下一条目,并且从SRAM尾部接收该条目,条目以与其被加入到队列类似的方式从队列中移出到处理器。DRAM中的条目从DRAM主体顺序地移动到SRAM尾部,从而条目立即可用以用于从队列中移出到处理器。
Starr等人的US 6,470,415B1中所公开的设备的缺点在于,该设备也在片上SRAM高速缓存中存储尾部和首部数据。如果存在许多队列,则高速缓存所需要的SRMA量将需要很大,这使得在片上装配该SRAM是不切实际的。
另一种用于克服DRAM的访问限制的方法是在排队设备外部布置的SRAM中所包括的链接列表中存储包括分组信息(例如,分组长度)和下一元素指针的链接列表元素。借助于该链接列表中的信息,与DRAM中所包括的数据在没有链接列表中的信息的情况下进行访问相比,DRAM中的数据可以更快地多地进行访问。例如,通过链接列表元素和DRAM存储器页之间的直接映射,一个链接列表元素对应于DRAM中的一条分组数据。在这种情况下,存储分组的DRAM存储器的量被取整(round off)为整数页。
然而,在SRAM中存储链接列表的问题在于,即使SRAM能够比DRAM应对更快的分组速率,但是其无法应对比1/(存储器往返时间)所给出的最大分组速率更高的分组速率。存储器往返时间被定义为两个分组之间的时间,该时间由发出针对链接列表元素的读取,从存储器得到链接列表元素,提取下一个链接列表元素的指针和长度,以及发出对下一个链接列表元素的读取所给出。因而,分组速率受到SRAM的随机访问时间的限制。
现有技术的设备的另一个缺点在于在分组调度器所进行的两次调度决定之间所不得不流逝的时间,因为这一时间限制了分组速率。还有另一个缺点是由于分组量化而导致低的DRAM存储器利用。例如,如果DRAM页大小为512字节并且缓冲器仅由64字节的分组填充,则存储器利用仅为64/512=12.5%。另外的缺点是SRAM的成本。
发明内容
本发明的目标是克服现有技术的分组缓冲器和分组缓冲器系统的问题和缺陷。
除其它之外,本发明通过在分组的顶部增加分组抽象(abstraction)而解决了上述问题和缺陷。由于包具有大于最小分组大小的最小大小,所以读取链接列表元素的可接受等待时间有所增加,由此链接列表可以被存储在诸如DRAM之类的分组缓冲存储器而不是SRAM中。
另外,使用分组使得能够连续使用缓冲存储器,即用于存储分组的存储器无需被取整为整数数目的存储器页,与现有技术基于分组的系统相比,这获得了更高的存储器利用。
此外,由于包具有大于最小分组大小的最小大小,所以能够使用包调度器而不是分组调度器。包调度器能够比分组调度器较不频繁地进行调度决策,即包调度器仅需要以最大包速率而不是最大分组速率来进行决策。
另外,本发明旨在提供一种被配置为在如下通信网络中使用的数据缓冲器,该通信网络具有例如10Gb/s或更高的高比特率,优选为100Gb/s或更高的高比特率。
本发明涉及一种用于在数据通信网络中存储数据的数据缓冲存储器,包括数据分段,其包括多个存储器页;以及包描述符分段,其包括多个包描述符;其中至少一个分组队列在数据分段中存储作为包的有序集合,并且其中包是分组的有序集合。有序集合是包括至少一个对象的集合,其中定义了在集合中的对象的顺序。例如,分组的序列是分组的有序集合。
在实施例中,包中所包括分组的长度之和超过了该包的阈值。
在实施例中,包的有序集合在数据分段中存储作为多个存储器页。
在实施例中,每个包具有在包描述符分段中存储的包描述符。
在实施例中,包中的每个分组具有在数据分段中存储的分组描述符。
在实施例中,针对每个分组队列,在数据缓冲存储器中存储包描述符的有序集合。
在实施例中,针对每个分组队列,包描述符的链接列表在数据缓冲存储器中存储。
在实施例中,数据缓冲存储器是动态随机访问存储器。
本发明还涉及一种数据缓冲存储器系统,其包括连接到数据缓冲存储器的排队设备,该排队设备包括连接到数据缓冲存储器控制器以及包调度器的队列管理器,其中该队列管理器被配置为在数据缓冲存储器中分别每个队列的物理存储器页的有序集合,其中每个队列的物理存储器页的有序集合形成每个队列的逻辑的、连续的存储器。
在实施例中,队列管理器包括被配置为存储多个分组队列的队列参数的队列参数存储器。
在实施例中,包调度器被配置为使用调度算法来选择从哪个队列中将包移出队列。
在实施例中,队列管理器被配置为一旦有来自包调度器的调度器请求,就从分组缓冲存储器中一次读取一个包。
在实施例中,队列管理器被配置为对所读取的包中所包括的分组的一个或多个报头进行解析,以将包分成多个分组,以及向排队设备的输出端口发送分组。
本发明还涉及一种用于在数据通信网络中所包括的数据缓冲存储器中存储数据的方法。该方法包括以下步骤:提供包括多个存储器页的数据分段;提供包括多个包描述符的包描述符分段,以及在数据分段中存储至少一个分组队列作为包的有序集合,其中包是分组的有序集合。
在实施例中,该方法进一步包括步骤:对于每个分组队列,在数据缓冲存储器中存储包描述符的链接列表。
在实施例中,该方法进一步包括步骤:在数据分段中存储包的有序集合作为多个存储器页。
在实施例中,该方法进一步包括步骤:针对每个包,在包描述符分段中存储包描述符。
在实施例中,包描述符包括关于包的附加信息,诸如等于分组长度的累加和的包长度,以及在包中包括的分组的分组长度偏移量。
在实施例中,该方法进一步包括步骤:针对每个分组,在数据分段中存储分组描述符。
在实施例中,该方法进一步包括步骤:针对每个分组队列,在数据缓冲存储器中存储包描述符的有序集合。
在实施例中,该方法进一步包括步骤:对于每个分组队列,在数据缓冲存储器中存储包描述符的链接列表。
在实施例中,数据缓冲存储器是动态随机访问存储器。
在实施例中,排队设备连接到数据缓冲存储器,排队设备包括连接到数据缓冲存储器控制器以及包调度器的队列管理器。该方法进一步包括步骤:借助于队列管理器在数据缓冲存储器中分配每个队列的物理存储器页的有序集合。每个队列的物理存储器页的有序集合形成了每个队列的逻辑的、连续的存储器。
在实施例中,该方法进一步包括步骤:借助于队列管理器中所包括的队列参数存储器来存储多个分组队列的队列参数。
在实施例中,该方法进一步包括步骤:借助于包调度器使用调度算法来选择从哪个队列中将包移出队列。
在实施例中,该方法进一步包括步骤:借助于队列管理器,一旦有来自包调度器的调度器请求,就从分组缓冲存储器中一次读取一个包。
在实施例中,该方法进一步包括步骤:借助于队列管理器,对所读取包中所包括分组的一个或多个报头进行解析,将包分成多个分组,以及向排队设备的输出端口发送分组。
附图说明
当结合附图一起阅读时,本发明的目标、优点和效果以及特点将根据以下对本发明实施例的详细描述而更为容易理解,其中:
图1示意性地图示了根据本发明的分组缓冲器系统的实施例;
图2示意性地图示了根据本发明的分组缓冲器系统的数据结构的实施例;以及
图3示意性地图示了图2的数据结构的分层表示。
具体实施方式
虽然本发明覆盖了各种修改形式以及备选的方法、装置和系统,但是本发明的实施例在附图中示出,并且将在随后详细进行描述。然而,所要理解的是,具体描述和附图并非旨在将本发明限制为所公开的具体形式。相反,所要求保护的发明的范围旨在包括落入如所附权利要求中所表达的本发明的精神和范围以至其等同形式的完整范围之内的所有的修改形式及其备选的构造。在附图中,相同的附图标号被用于相同或相似的特征。
图1示意性地示出了根据本发明的数据缓冲器系统100(诸如,分组缓冲器系统)的实施例。在以下描述中,参考分组缓冲器系统、分组缓冲存储器、分组缓冲存储器控制器和包调度器对本发明进行描述。然而,这并不应当被解释为限制,而是应当被理解为涵盖数据缓冲器系统、数据缓冲存储器、数据缓冲存储器控制器和数据调度器。
在该描述中,术语数据应当被理解为指代分组的集合,并且术语分组应当被理解为指代数据的格式化单元,例如,因特网协议的分组、以太网帧、ATM小区或系统内部格式。分组包括两种类型的信息:控制信息和用户数据,诸如有效载荷数据。控制信息提供网络所需的信息以便递送用户数据,例如,源和目的地地址、类似校验和的检错码以及顺序信息。通常,控制信息在分组报头或报尾中找到,而用户数据则处于其间。
分组缓冲器系统100的实施例包括排队设备102,其连接到排队设备102外部所布置的分组缓冲存储器104。然而,应当理解的是,排队设备102可以包括分组缓冲存储器104。
在实施例中,发明的分组缓冲存储器104包括两个分段:被配置为在一个或多个页中物理存储分组的数据分段,以及被配置为存储包描述符的包描述分段,每个包描述符包括有关包的信息,参见图2B。如以下将更为详细描述的,包是一个或多个分组聚合于其中的逻辑存储容器。另外,包包括构成包的整数个块(chunk)。
分组缓冲存储器104可以是DRAM。
根据图1所示的实施例,排队设备102包括输入端口105,其被配置为接收诸如输入分组之类的输入数据,以及提取有关每个输入数据(例如,分组)的信息。输入端口105例如可以被配置为从分组报头或者从旁带(sideband)属性提取信息,即,作为输入端口内的专用信号。所提取的分组信息可以包括标识分组所选择的队列103的队列编号、分组长度,以及诸如服务等级(CoS)和丢弃优先级的其它信息。
排队设备102进一步包括丢弃单元106,其连接到输入端口105并且被配置为基于所提取的分组信息以及基于有关该分组所选择的队列103的状态信息来执行分组丢弃决定。因此,丢弃单元106能够基于所提取的分组信息并且基于有关该分组所选择的队列103的状态信息来决定是将分组加入队列还是丢弃分组。有关队列103的状态信息例如可以是队列103为满,或者队列103包括一个或多个空的条目。
丢弃单元106可以进一步被配置为基于诸如尾部丢弃和加权随机早期检测(WRED)之类的分组丢弃算法来执行丢弃决定。
另外,排队设备102包括队列管理器107,其连接到丢弃单元106和分组缓冲存储器控制器108,分组缓冲存储器控制器108被布置为与分组缓冲存储器104进行通信。在实施例中,分组缓冲存储器控制器108包括在排队设备102中。
队列管理器107被配置为聚合将要被加入队列至被称作包的逻辑存储容器中的一个或多个所接收分组。
针对每个空队列,即包括一个或多个空条目的队列,包保持开放并且等待分组到达。借助于队列管理器107而决定要加入队列的分组被划分为页大小的数据单元(即,页),并且以顺序保留的方式被添加至包,即分组之间的到达顺序在包中得以保留,从而第一个到达的分组将是包中的第一个分组而最后到达的分组将是包中的最后分组。新的分组被添加至包直至包中分组数据的总量超出了包的阈值。阈值例如可以是256字节或者2K字节,或者处于其间的阈值。当包的大小超出阈值时,包被关闭并且新的包被打开。
队列管理器107被配置为通过向分组缓冲存储器104发出针对构成包的块的读请求和/或写请求的序列,从分组缓冲存储器104读取包或包的一部分和/或向其写入包或包的一部分。块的大小允许分组缓冲存储器的有效读取和写入。例如,块可以对应于一个或多个DRAM脉冲串(burst),并且块大小例如可以是16字节或64字节。
参考图2C,将包布置在逻辑的、连续的存储器(即,逻辑存储器)中,其中包彼此相邻布置并且看上去相连接,但是实际上可能是不连接的。逻辑的、连续的存储器可以是逻辑先入先出(FIFO)队列。
逻辑的、连续存储器可以通过对分组缓冲存储器104中所包括的物理存储器页进行链接以形成连续的包来实现。分组缓冲存储器104中所包括的物理存储器页可以是固定大小。用于链接页的下一指针与页内容存储在相同的分组缓冲存储器中。优选地,参考图2B,分组缓冲存储器104的每个页104a均具有包括指向下一个页的下一指针的报头。
队列管理器107包括队列参数存储器111,例如内部SRAM,其被配置为存储队列参数,诸如指向首部页的指针以及首部页内的写入偏移量,指向下一个页的指针,指向尾部页的指针以及尾部页内写入的偏移量,以及指向首部包以及尾部包的指针。因此,在实施例中,参考图2A,队列参数存储器111被配置为存储从标号0至N-1的每个队列103的页层和包的队列参数。
排队设备102进一步包括包调度器110,其连接至队列管理器107并且被配置为使用适当调度算法(例如,循环(round-robin)、加权循环、非足额加权循环(deficitweighted round robin)、加权公平排队、严格优先权排队、最早截止期优先或者调度算法的组合)来选择从哪个队列103中移出包。队列可以以调度分层进行组织。
一旦有来自包调度器110的调度器请求,队列管理器107就经由分组缓冲存储器控制器108从分组缓冲存储器104一次读取一个包。通过对所读取包中所包括分组的报头进行解析,每个分组报头包括有关分组长度的信息,队列管理器107能够将包分成多个分组,并且将该分组发送至排队设备102的输出端口112。因此,例如分组的输出端口借助于输出端口112而退出排队设备102。
图2示出了在包A和包B两个包中存储分组0至分组3四个分组的具有队列编号2的队列103的示例性表示,上述包依次存储在页0、页2和页3三个页中。
因此,参考图2A和图2B,数据缓冲存储器104的阴影页,即页0、页2和页3被队列编号2所使用。参考图2C,链接页形成了一片连续的逻辑存储器,其保持可能跨越页边界的包。该连续逻辑存储器中的包被配置为具有最小大小,例如处于从256字节到2K字节的间隔中。
然而,应当理解的是,连续逻辑存储器中不同的包并不必具有相同的最小大小,而是可以具有不同的最小大小。例如,包的大小可以是可每个队列进行配置的。最小大小优选地是预先确定的并且由所需要的数据读取速率进行确定。
例如,如果调度器能够以速率RS[1/s]制定调度决定,并且所需数据读取速率为RD[bit/s],则最小的包大小应当被设置为大于或等于RD/RS[bit]。
在实施例中,包被配置为以其整体保持至少一个分组,但是优选地,包被配置为以其整体保持多个分组。然而,如上所述,包可以跨越页边界并且因此无需以其整体保持页。如图2C所图示的,包A包括分组0、分组1和分组2,并且包B包括分组3。然而,如所图示的,包A包括页2以及页0的第一部分,而包B包括页0的第二部分和页3。
另外,如图2A所示,队列参数存储器111被配置为包括编号为从队列编号0到队列编号N-1的N个队列的队列参数。针对每个队列,队列参数存储器111包括多个页层的队列参数以及多个包层队列参数。
页层的队列参数可以包括Page_Head、Page_HdNext和Page_Tail指针,即,分别指向首部页、指向下一页和指向尾部页的指针。包层的队列指数可以包括Package_Head和Package_Tail指针,即分别指向首部包和指向尾部包的指针。然而,应当理解的是,诸如队列长度和纠错码之类的另外队列参数可以包括在队列参数存储器111中。
如图2中示意性所图示的,参考图2A,队列参数存储器111中所包括的Page_Head指针指向分组缓冲存储器104中所包括的第一个(首部)页(即页编号2)的地址,参考图2B当分组将要被从队列中移出时,应当从上述地址开始第一页的读取。
另外,参考图2A,队列参数存储器111中所包括的Page_HdNext指针指向下一页(图中的页编号为0)的开始地址,,并且Page_Tail指针指向队列2的最后(尾部)页(图2B中的页编号为3)的开始地址,当分组将要被从队列中移出时应当在该页的结束处停止读取,或者如果将要将更多分组加入队列,则应当在该页结束处写入另外的数据。
如图2B所示,每个分组缓冲存储器页104a包含页报头,该页报头在该页并非是队列的最后页的情况下包括指向下一页的下一字段。另外,例如DRAM的分组缓冲存储器104包括两个分段:存储包括分组数据(即,有效载荷数据)的页104a的数据分段104a’,以及存储包描述符104b的包描述符分段104b’。因此,分组数据、分组长度和下一个页指针全都存储在分组缓冲存储器104中。
队列编号为2的Package_Head和Package_Tail指针(其包括在队列参数存储器111中)分别指向包A和包B的第一个和最后一个包描述符。除非包是队列中的最后一个,否则每个包描述符104b包括指向下一包的下一字段。如图2B所示,包A的包描述包括指向包B的下一字段。
包描述符104b可以包括关于包的附加信息,诸如等于分组长度的累加和的包长度以及包中所包括分组的分组长度偏移量。分组长度偏移量可以作为分组信息随每个分组一起接收。当包被调度时,即当包要被读取并且包括于其中的分组将要被发送到排队设备102的输出端口112时,包调度器110使用该包长度来更新用于整形和调度的算法的状态信息。
在图2中,未示出由保持未用页和包描述符的自由列表使用的、一个或多个队列的页的参数集。
如前文所提到的,包调度器110被配置为选择非空队列以从队列管理器107读取包,以及向队列管理器107发出从列中移出命令。这可以周期性执行。队列管理器107读取队列的包首部参数“Package_Head”以及包尾部参数“Package_Tail”。首部参数“Package_Head”和尾部参数“Package_Tail”包括在队列参数存储器111中。经由分组缓冲存储器控制器108,队列管理器107如队列的包首部参数“Package_Head”所指示的从分组缓冲存储器104读取队列的第一个包。在实施例中,队列管理器107通过将读取操作分解为块读取操作来读取包,即队列管理器107逐个读取包的块。
因此,一旦有来自包调度器110的调度器请求,队列管理器107读取一个包的块。通过对所读取的第一个包中所包括分组的报头进行解析,每个包的首部包括有关分组的长度的信息,队列管理器107能够将包分成多个分组,并且将分组发送至排队设备102的输出端口112。
如果包在页结尾附近开始,,PageHdNext指针防止了读取带宽的损失。当选择该包时,PageHead指针所指示的页将立即结束,并且由于PageHdNext指针,队列管理器能够通过从下一页读取包数据来继续而不必等待读取操作返回新的页指针。
当第一个包的分组已经被发送至输出端口112时,队列管理器107经由分组缓冲存储器控制器108,并且借助于所读取的第一个包中的下一个字段中所包括的指针来读取下一个包。通过对所读取的下一个包中所包括的分组的报头进行解析,队列管理器107能够将下一个包分成多个分组,并且将分组发送至排队设备102的输出端口112。
在实施例中,队列管理器107被配置为调节其对分组缓冲存储器控制器和输出端口的容量的读请求和写请求的速率。例如,队列管理器107可以在输出端口中的中间存储数据或者存储器控制器中的中间存储请求快要被充满时被背压(backpressure)所停止。
此后,借助于下一包中的下一字段中的指针,队列管理器107读取后续的包,对所读取的后续包中所包括分组的报头进行解析,将所读取的后续包分成多个分组并且将它们发送至排队设备102的输出端口112。该过程重复进行直至由Package_Tail所指示的最后的包已经由队列管理器107所读取。
一旦包已经从队列被读取,例如队列参数、页和包描述符的相关联数据被从队列参数存储器111和分组缓冲存储器104中移除。所释放的队列元素被加入队列至内部SRAM111中所包括的自由列表。如之前所提到的,从分组缓冲存储器104所读取的分组数据被发送至排队设备102的输出端口112。
因此,不同于其中分组调度器被配置为对分组进行操作的现有技术的分组缓冲器系统的分组调度器,根据本发明的分组缓冲器系统的实施例中所包括的包调度器110被配置为对包进行操作,并且被配置为一次选择包中所包括的一个分组。由于包的最小大小大于分组的最小大小,所以为从队列中移出而调度的最小数据量在根据本发明的分组缓冲器系统中比在现有技术的分组缓冲器系统中大。另外,由于包的最小大小大于分组的最小大小,所以与现有技术的分组缓冲器系统相比,根据本发明的包调度器110和队列管理器107的组合能够被缩放至比现有技术的分组缓冲器系统的组合更高的数据速率,例如缩放至100Gb/s或更高的数据速率。
如果包调度器110从队列读取数据比向队列写入数据更快,则队列管理器107能够读取到最后未完成的包,而并不需要等待其被填充至阈值。这意味着如果队列包含比最小的包大小更少的分组数据,则这些分组仍然能够被读取。因此,队列管理器无需等待整个包被填满。
在实施例中,分组数据缓冲存储器104是DRAM,并且分组缓冲存储器控制器108是DRAM控制器。在这样的实施例中,为了获得对将DRAM连接到DRAM控制器的DRAM数据总线113的高度利用,对于队列管理器107而言读取特定的最小数据量(被称为块)是有利的。这意味着包的大小优选地被取整至整数个块。如果块为32个字节,则这意味着512字节(即,16个块)的包大小优选地例如为511字节或513字节的包大小。因而,具有例如511字节或513字节大小的包将被取整为对应于16个块。
另外,块可以由每个DRAM存储体(bank)的一个数据脉冲串构成,并且如果脉冲串由DRAM数据总线上数据的四个时钟周期构成,则可以存在四个存储体,并且数据总线的宽度可以是32比特,这产生512比特的块大小。如果使用这样的块,包优选地与块的边界对齐;即,如果块中的分组和分组报头所使用的存储器量并没有达到整数个块,则块最后的比特可能被闲置。
应当理解的是,包是整数个具有固定大小的块,并且包还是具有在最小和最大限制内的可变大小的整数个分组。
图3示出了数据结构的分层表示。分组被存储在由页层所呈现的连续的、逻辑存储器中所存储的包中。块层将页拆分为块;即,当将页写入DRAM时,适于DRAM操作的更小的单位。块层还将从DRAM读取的块组装为页。
Claims (30)
1.一种用于在数据缓冲存储器中存储数据的装置,包括:
用于在所述数据缓冲存储器的数据分段中存储多个存储器页的装置;
用于在所述数据缓冲存储器的包描述符分段中存储多个包描述符的装置;以及
用于在所述数据分段中存储至少一个分组队列作为包的有序集合的装置,其中包是分组的有序集合,并且所述包具有大于最小分组尺寸的最小尺寸,以及
其中除非包是所述至少一个队列中的最后一个包,否则每个所述包的包描述符包括指向下一个包的字段。
2.根据权利要求1所述的装置,其中包中所包括的分组的长度之和超过所述包的阈值。
3.根据权利要求1所述的装置,其中所述包的有序集合被配置为在数据分段中存储作为多个存储器页。
4.根据权利要求1所述的装置,其中每个包具有被配置为在所述包描述符分段中存储的包描述符。
5.根据权利要求4所述的装置,其中所述包描述符包括关于所述包的附加信息。
6.根据权利要求5所述的装置,其中所述关于所述包的附加信息包括等于分组长度的累加和的包长度,以及在所述包中包括的所述分组的分组长度偏移量。
7.根据权利要求1所述的装置,其中所述包中的每个分组具有被配置为在所述数据分段中存储的分组描述符。
8.根据权利要求1所述的装置,其中针对每个分组队列,所述包描述符的有序集合被配置为在所述数据缓冲存储器中存储。
9.根据权利要求1所述的装置,其中针对每个分组队列,包描述符的链接列表被配置为在所述数据缓冲存储器中存储。
10.根据权利要求1所述的装置,其中所述数据缓冲存储器是动态随机访问存储器。
11.一种数据缓冲存储器系统,包括:
根据权利要求1所述的数据缓冲存储器;以及
连接到所述数据缓冲存储器的排队设备,所述排队设备包括连接到数据缓冲存储器控制器以及包调度器的队列管理器,
其中所述队列管理器被配置为在所述数据缓冲存储器中分配每个队列的物理存储器页的有序集合,并且
其中每个队列的物理存储器页的有序集合形成每个队列的逻辑的、连续的存储器。
12.根据权利要求11所述的数据缓冲存储器系统,其中所述队列管理器包括被配置为存储多个分组队列的队列参数的队列参数存储器。
13.根据权利要求11所述的数据缓冲存储器系统,其中所述包调度器被配置为使用调度算法来选择从哪个队列中将包移出队列。
14.根据权利要求12所述的数据缓冲存储器系统,其中所述队列管理器被配置为一旦有来自所述包调度器的调度器请求,就从所述数据缓冲存储器中一次读取一个包。
15.根据权利要求14所述的数据缓冲存储器系统,其中所述队列管理器被配置为对读取的包中所包括的所述分组的一个或多个报头进行解析,以将所述包分成多个分组,以及向所述排队设备的输出端口发送所述分组。
16.一种用于在数据缓冲存储器中存储数据的方法,所述方法包括:
在所述数据缓冲存储器的数据分段中存储多个存储器页;
在所述数据缓冲存储器的包描述符分段中存储多个包描述符;以及
在所述数据分段中存储至少一个分组队列作为包的有序集合,其中包是分组的有序集合,并且所述包具有大于最小分组尺寸的最小尺寸,
其中除非包是所述至少一个队列中的最后一个包,否则每个所述包的包描述符包括指向下一个包的字段。
17.根据权利要求16所述的方法,其中在包中所包括的所述分组的长度之和超过所述包的阈值。
18.根据权利要求16所述的方法,进一步包括在所述数据分段中存储所述包的有序集合作为多个存储器页。
19.根据权利要求16所述的方法,进一步包括:针对每个包,在所述包描述符分段中存储包描述符。
20.根据权利要求19所述的方法,其中所述包描述符包括关于所述包的附加信息。
21.根据权利要求20所述的方法,其中所述关于所述包的附加信息包括等于分组长度的累加和的包长度,以及在所述包中包括的所述分组的分组长度偏移量。
22.根据权利要求16所述的方法,进一步包括:针对每个分组,在所述数据分段中存储分组描述符。
23.根据权利要求16所述的方法,进一步包括:针对每个分组队列,在所述数据缓冲存储器中存储包描述符的有序集合。
24.根据权利要求16所述的方法,进一步包括:针对每个分组队列,在所述数据缓冲存储器中存储包描述符的链接列表。
25.根据权利要求16所述的方法,其中所述数据缓冲存储器是动态随机访问存储器。
26.根据权利要求16所述的方法,其中排队设备连接到所述数据缓冲存储器,所述排队设备包括连接到数据缓冲存储器控制器以及包调度器的队列管理器,所述方法还包括:
使用所述队列管理器在所述数据缓冲存储器中分配每个队列的物理存储器页的有序集合,
其中每个队列的物理存储器页的有序集合形成每个队列的逻辑的、连续的存储器。
27.根据权利要求26所述的方法,进一步包括:
在所述队列管理器中包括的队列参数存储器中存储多个分组队列的队列参数。
28.根据权利要求26所述的方法,进一步包括:
使用分组调度器、利用调度算法来选择从哪个队列中将包移出队列。
29.根据权利要求28所述的方法,进一步包括:
一旦接收到来自所述分组调度器的调度器请求,就使用所述队列管理器来从所述数据缓冲存储器中一次读取一个包。
30.根据权利要求29所述的方法,进一步包括使用所述队列管理器:
对读取包中所包括的所述分组的一个或多个报头进行解析;
将所述包分成多个分组;以及
向所述排队设备的输出端口发送所述分组。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29579210P | 2010-01-18 | 2010-01-18 | |
SE1050043 | 2010-01-18 | ||
US61/295,792 | 2010-01-18 | ||
SE1050043-7 | 2010-01-18 | ||
PCT/EP2010/070545 WO2011085934A1 (en) | 2010-01-18 | 2010-12-22 | A packet buffer comprising a data section and a data description section |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102971997A CN102971997A (zh) | 2013-03-13 |
CN102971997B true CN102971997B (zh) | 2016-11-09 |
Family
ID=44303847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080065571.3A Expired - Fee Related CN102971997B (zh) | 2010-01-18 | 2010-12-22 | 包括数据分段和数据描述分段的分组缓冲器 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP2526478B1 (zh) |
CN (1) | CN102971997B (zh) |
TW (1) | TWI526927B (zh) |
WO (1) | WO2011085934A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9106574B2 (en) * | 2012-12-27 | 2015-08-11 | Cisco Technology, Inc. | Supporting quality of service differentiation using a single shared buffer |
US9620181B2 (en) | 2013-01-31 | 2017-04-11 | Hewlett Packard Enterprise Development Lp | Adaptive granularity row-buffer cache |
US9652804B2 (en) * | 2013-12-19 | 2017-05-16 | Chicago Mercantile Exchange Inc. | Deterministic and efficient message packet management |
US20170017420A1 (en) | 2015-07-15 | 2017-01-19 | Innovium, Inc. | System And Method For Enabling High Read Rates To Data Element Lists |
US20170017419A1 (en) * | 2015-07-15 | 2017-01-19 | Innovium, Inc. | System And Method For Enabling High Read Rates To Data Element Lists |
WO2017208182A1 (en) * | 2016-06-02 | 2017-12-07 | Marvell Israel (M.I.S.L) Ltd. | Packet descriptor storage in packet memory with cache |
US10795836B2 (en) * | 2017-04-17 | 2020-10-06 | Microsoft Technology Licensing, Llc | Data processing performance enhancement for neural networks using a virtualized data iterator |
CN109802897B (zh) | 2017-11-17 | 2020-12-01 | 华为技术有限公司 | 一种数据传输方法及通信设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000052879A2 (en) * | 1999-03-01 | 2000-09-08 | Sun Microsystems, Inc. | Method and apparatus for data re-assembly with a high performance network interface |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6470415B1 (en) | 1999-10-13 | 2002-10-22 | Alacritech, Inc. | Queue system involving SRAM head, SRAM tail and DRAM body |
US20060268913A1 (en) * | 2005-05-27 | 2006-11-30 | Utstarcom, Inc. | Streaming buffer system for variable sized data packets |
US7773630B2 (en) * | 2005-11-12 | 2010-08-10 | Liquid Computing Corportation | High performance memory based communications interface |
US20080170571A1 (en) * | 2007-01-12 | 2008-07-17 | Utstarcom, Inc. | Method and System for Synchronous Page Addressing in a Data Packet Switch |
-
2010
- 2010-12-22 WO PCT/EP2010/070545 patent/WO2011085934A1/en active Application Filing
- 2010-12-22 CN CN201080065571.3A patent/CN102971997B/zh not_active Expired - Fee Related
- 2010-12-22 EP EP10801162.8A patent/EP2526478B1/en not_active Not-in-force
-
2011
- 2011-01-17 TW TW100101672A patent/TWI526927B/zh not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000052879A2 (en) * | 1999-03-01 | 2000-09-08 | Sun Microsystems, Inc. | Method and apparatus for data re-assembly with a high performance network interface |
Also Published As
Publication number | Publication date |
---|---|
TW201203099A (en) | 2012-01-16 |
TWI526927B (zh) | 2016-03-21 |
EP2526478A1 (en) | 2012-11-28 |
EP2526478B1 (en) | 2016-03-30 |
CN102971997A (zh) | 2013-03-13 |
WO2011085934A1 (en) | 2011-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102971997B (zh) | 包括数据分段和数据描述分段的分组缓冲器 | |
CN103946803B (zh) | 具有高效工作排队的处理器 | |
CN1770734B (zh) | 网络装置的通信量控制方法 | |
CN101136854B (zh) | 一种实现数据包线速处理的方法和装置 | |
CN1736068B (zh) | 流量管理结构体系 | |
EP1774714B1 (en) | Hierarchal scheduler with multiple scheduling lanes | |
US8259738B2 (en) | Channel service manager with priority queuing | |
US9769092B2 (en) | Packet buffer comprising a data section and a data description section | |
US20040015599A1 (en) | Network processor architecture | |
US8891517B2 (en) | Switching device | |
JP2000261506A (ja) | レート制御されるマルチクラスの大容量パケットスイッチ | |
KR20140046052A (ko) | 패킷 재조립 및 재배열 방법, 장치 및 시스템 | |
CN100508502C (zh) | 基于cam的宽带网络业务流按每流排队的可扩展的装置 | |
CN106209679A (zh) | 用于使用多个链接的存储器列表的方法及装置 | |
CN100420241C (zh) | 实现信息交换的系统及方法和调度算法 | |
US20050018601A1 (en) | Traffic management | |
CA2351656A1 (en) | Ampic dram | |
US20070297330A1 (en) | Scalable Link-Level Flow-Control For A Switching Device | |
EP2187580B1 (en) | Method for scheduling packets of a plurality of flows and system for carrying out the method | |
US20030095558A1 (en) | High efficiency data buffering in a computer network device | |
CN109861931B (zh) | 一种高速以太网交换芯片的存储冗余系统 | |
JP2000349789A (ja) | メモリー幅の非常に広いtdmスイッチシステム | |
JP2004536515A (ja) | デュアルポートメモリエミュレーション方式によるスイッチファブリック | |
CN101695051A (zh) | 一种用于缓冲Crossbar的队列长度均衡调度方法 | |
US7675930B2 (en) | Chip circuit for combined and data compressed FIFO arbitration for a non-blocking switch |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20161109 Termination date: 20191222 |
|
CF01 | Termination of patent right due to non-payment of annual fee |