CN1612569A - 用于分组接口的动态存储器分配 - Google Patents
用于分组接口的动态存储器分配 Download PDFInfo
- Publication number
- CN1612569A CN1612569A CNA2003101198030A CN200310119803A CN1612569A CN 1612569 A CN1612569 A CN 1612569A CN A2003101198030 A CNA2003101198030 A CN A2003101198030A CN 200310119803 A CN200310119803 A CN 200310119803A CN 1612569 A CN1612569 A CN 1612569A
- Authority
- CN
- China
- Prior art keywords
- subregion
- port
- data
- assigned
- memory
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一个存储器被划分为多个分区。这些分区被分为第一组分区和第二组分区。当一个端口需要时,将一个分区从一个未分配分区的存储区中分配给此端口。未分配分区的存储区包括第一组分区中的未分配分区和第二组分区中的未分配分区。将第一组分区中的未分配分区分配给此端口,直到达到第一门限值。在达到第一门限值之后,将第二组分区中的未分配分区分配给此端口。第二门限值被用于限制分配给此端口的分区的总数。
Description
技术领域
本发明涉及通信网络领域,特别涉及数据缓冲。
背景技术
一种网络可以包括多个互连的系统或者节点,并且可以包括例如(但不限于)计算机、机顶盒、外设、服务器和/或利用通信线路或者其他通信信道耦合的终端。一个网络可以在局域(例如一个校园)或者广域(例如多个校园)上连接或者耦合多个系统。
高速分组交换网(诸如异步传输模式(ATM)、互联网协议(IP)和吉比特以太网)支持大量的到不同话路(session)的连接。典型地,分组交换系统被用于发送称为分组的数据块。这些分组可以具有固定大小或者它们可以具有可变大小。每个分组可以在报头中包括控制信息。控制信息可以包括路由选择信息,用于通过网络为分组选择路由到目的地,并且控制信息还包括用于指示分组开始和分组末尾的信息。控制信息也可以包括用于指示一个分组是否是一个最后分组(或者尾部分组)的信息。
许多系统(例如,成帧器,网络处理机,等等)实施基于分组的接口。例如,接口可以是ATM论坛提出的用于ATM的通用测试&操作物理接口(UTOPIA)或者光互联论坛(OIF)提出的系统分组接口(SPI-3和SPI-4)。
图1A是一个方块图,示出接口的一个实例。接口110例如可以是一个UTOPIA接口。接口110例如也可以是一个SPI接口。在物理层105和ATM层115之间可以通过接口110交换ATM数据。接口110可以包括用于与物理层105接口的组成部分和用于与ATM层115接口的组成部分。这些组成部分可以包括FIFO(先进先出)控制器,这些控制器用于处理从存储器的FIFO缓冲器的读出和向存储器的FIFO缓冲器的写入。在物理层105中可以包括多个物理设备,并且在ATM层115中可以包括多个ATM设备。可以有一个FIFO控制器,用于每个物理与ATM设备。接口110还可以包括其他的组成部分。FIFO控制器典型地在两个时钟域上实施,其中一个时钟域是用于接口的时钟域,并且一个时钟域是用于相应设备的时钟域。
图1B是一个方块图,它示出了物理存储器的现有技术划分分区的一个实例。典型地,存储器100被划分为均等的固定大小的分区,每个分区用作一个FIFO缓冲器,并且每个分区被分配一个逻辑端口。每个逻辑端口可以与一个设备(例如,一个ATM设备)相关联。例如,存储器100的大小可以是16K字节,并且存储器100可以被划分为64个分区。64个分区的每一个分区都可以被静态地分配给一个逻辑端口(例如,分区1被分配给逻辑端口1,等),这样使每个逻辑端口与至多一个分区相关。这里没有空闲分区。在这个实例中,每个分区的长度为256字节。这种划分分组的技术被称为完全分割(CP)。当使用CP时,如果相关的、被分配的逻辑端口无效,则在一个分区中的存储空间可能会被浪费掉。所浪费的存储空间不能被另一个有效的逻辑端口使用。因而,虽然一个有效的逻辑端口会经历分组溢出,但是可能也有一个或者多个未充分利用其FIFO缓冲器的无效的逻辑端口。
在另一现有技术中,如果不考虑相关的逻辑端口正在使用多少存储空间而都有任何可用的存储空间,则到达分组就被接收到存储器中。例如,可能有多个FIFO缓冲器,每个缓冲器具有不同的大小。当没有可用存储空间时,到达的分组被丢弃。当一个逻辑端口正在使用存储空间并且存储在该存储空间中的数据未被读出时,此逻辑端口可以独占其正在使用的存储空间,而几乎不给其他的逻辑端口留下存储空间。这种技术被称为完全共享(CS)。当使用CS时,一个被大量使用的逻辑端口耗尽一个很少被使用的逻辑端口。
新建立(emerging)标准ANSI T1.105-2001(同步光纤网络(SONET))使得存储空间分配成FIFO缓冲器变得更糟,该标准描述虚拟带宽分配并允许每一个逻辑端口以一个动态变化的速率进行传送。
附图说明
在本说明书最后的部分特别指出并清楚要求保护了本发明的主旨。然而,通过查看附图并参考随后的详细描述,可以更好地理解本发明的主旨及其结构和操作方法以及其目的、特征和优点。在附图中:
图1A是一个示出接口的一个实例的方块图;
图1B是一个示出物理存储器的现有技术分割的一个实例的方块图;
图2A是一个示出依照本发明一个实施例的存储器的一个实例的方块图;
图2B是一个示出依照本发明一个实施例的存储器的另一个实例的方块图;
图2C是一个示出依照本发明一个实施例的一个分区的一个实例的方块图;
图2D是一个示出依照本发明一个实施例的包括一个以上分区的FIFO缓冲器的一个实例的方块图;
图3A是一个示出依照本发明一个实施例的用于向一个FIFO缓冲器分配一个或者多个分区的空闲存储区(pool)和空闲指针堆栈的一个实例的方块图;
图3B是一个示出依照本发明一个实施例的将分区从FIFO缓冲器返回到空闲存储区的一个实例的方块图;
图4是一个示出将数据写入FIFO缓冲器和从FIFO缓冲器读出数据的一个实例的方块图;
图5是一个示出添加一个分区到FIFO缓冲器的处理过程的一个实例的流程图;
图6是一个示出从FIFO缓冲器除去一个分区的处理过程的一个实例的流程图。
具体实施方式
依照本发明的一个实施例,在一个接口中的存储器被划分为多个分区。当需要存储空间时,可以从分区的空闲存储区中分配一个或者多个分区给一个逻辑端口。当不需要一个分区时,将该分区返回到空闲存储区。
图2A是一个方块图,示出一个存储器及其分区的实例。存储器200可以被分割为多个分区。分区的数量可以至少等于所支持的逻辑端口的数量。这些分区可以具有相同的大小。例如,存储器200的大小可以是16Kb,并且即使仅有64个逻辑端口,存储器200也可以被分割为256个大小相等的分区。
对于一个实施例,这些分区可以被分为两个虚拟或者逻辑组,即,一个专用组和一个共享组。例如,参考图2A示出的实例,在专用组201中有62个分区,并且在共享组202中有196个分区。对于一个实施例,这里所描述的分区的分组与每组中的分区数量有关,并且不受这些分区按它们的存储器地址所划分的物理分组的限制,即使这些分区的物理地址保持相同。例如,尽管在图2A中示出的分区1和分区2同样都属于专用组201,但分区1可以被物理定位在朝向存储器200开始的一个地址上,并且分区2可以被物理定位在朝向存储器200末端的一个地址上。这样,在当前实例中分区1-256不一定全部都在连续的地址上。
每个逻辑端口都与一个FIFO缓冲器相关。每个FIFO缓冲器可以跨越(span)分配给那个逻辑端口的多个分区。多个分区可以是连续的或可以是不连续的。FIFO缓冲器的大小可以是动态的。例如,当多个分区被分配给此逻辑端口时,FIFO缓冲器的大小可以增加。类似地,当此逻辑端口不再需要所分配的分区时,FIFO缓冲器的大小可以减少。
对于一个实施例,一个门限值被用于确定专用组201中可以被分配给一个逻辑端口的分区的数量。这个门限值可以被称为第一门限值。例如,一个逻辑端口可以从专用组201中得到最多两(2)个分区。对于另一个实施例,可以为每个逻辑端口预留来自专用组201的一个分区,即使该逻辑端口可能不是有效的。当具有从其相关的FIFO缓冲器读出的数据时,逻辑端口是有效的。
对于一个实施例,当一个逻辑端口需要比第一门限值所规定的分区更多的分区时,可以从共享分组202中分配额外的分区。例如,在图2A中示出的逻辑端口1被分配了来自专用组201的2个分区和来自共享组202的四个分区。尽管存储器200被示出为16K字节,并且所示出的分区的数量为256,但本领域的技术人员将认识到此实施例并不受这些尺寸的限制,并且也可以使用其他的存储器大小、分区大小和相应的分区的数量。
图2B是一个方块图,示出一个存储器及其分区的另一个实例。在这个实例中,有三个逻辑端口1,3和8,每个都已经被分配了专用组201中的至少一个分区。这些端口可以被认为是有效端口,这是因为在这里每个端口都已分配了分区,并且在这些分区中可能会有需要被读取的数据。相应地,还会有一个或者多个无效端口。没有分区被分配给无效端口。可选择地,在一个实施例中,一个分区可以被保留用于每个逻辑端口,无效端口可以有至多一个分区,其中不包括任何将被读取的数据。
参考图2B,并且使用上述的专用组门限值实例,分配给逻辑端口3的两个分区来自专用组201。然而,在被分配给逻辑端口8的四个分区之中,前两个分区从专用组201中进行分配,并且接下来的两个分区从共享组202中进行分配。对于一个实施例,另一个门限值(或者第二门限值)可以被用于限制分配给一个逻辑端口的分区的总数。有可能在某个时间上,在专用组201或者在共享组202中的所有分区都被分配给逻辑端口。
对于一个实施例,分配给一个逻辑端口(或者包含在相关的FIFO缓冲器中)的分区的总数可以被跟踪。当逻辑端口不需要一个分区时,所述分区被返回,并且分配给那个端口的分区的总数减一。所得到的分配给该逻辑端口的分区的数量随后与专用组门限值(或者第一门限值)进行比较。如果大于专用组门限值,则分区被返回到共享组202;否则,分区被返回到专用组201。对于一个实施例,与其他分区相比,一个分区由一个逻辑端口以与它被分配时相反的顺序返回。例如,在图2B中的分区61是分配给逻辑端口8的第一分区,并且也将是从该端口中解除分配的第一分区。
图2C是一个示出一个分区实例的方块图。对于一个实施例,一个分区可以包括一个用于存储用户数据的数据部分和一个用于存储控制信息的控制部分。例如,分区290可以包括一个包含用户数据的数据部分215。数据部分215可以被划分为多个数据单元(即,数据字),用于存储用户数据部分。例如,在分区290中的数据部分215可以被划分为16个数据单元,每个32比特长(一个字或者四个字节)。当使用一个具有8比特或者16比特数据总线宽度的接口时,32比特宽数据单元会很方便。另外,32比特宽的数据可以允许每个字节被单独地进行更新。
分区290也可以包括一个控制部分220。控制部分220也可以被划分为多个控制单元,这样每个数据单元都有一个控制单元。每个控制单元可以包含与相关数据单元中的数据有关的控制信息。例如,控制部分220的最后控制单元230(比特32-35)包括关于最后数据单元235(比特0-31)中的数据的控制信息。关于数据的控制信息可以包括例如分组开始、分组末尾、错误状态等。随后的表9(被称为表1)示出一个控制单元的四个比特(比特32-35)的可能值的一个实例。
比特 | 值=0 | 值=1 |
35 | 非分组的末尾 | 分组的末尾 |
34 | 分组的中间 | 分组的开始 |
32-33 | 保留 | 使用的字节数 |
在这个实例中,控制单元的比特35被用于指示包含在相关数据单元中的数据包括分组末尾指示符(值=1),还是不包括分组末尾指示符(值=0)。比特34被用于指示包含在相关数据单元中的数据包括分组开始指示符(值=1),还是包括一个分组中间指示符(值=0)。当比特35指示分组末尾指示符被包含在相关的数据单元中时,比特32和33被用于指示包含在相关数据单元中的数据量(例如,字节的数目)。这是因为最后数据单元不可以被完全使用。
对于一个实施例,每一个分区可以包括一个指针,它指向FIFO缓冲器中的下一个分区(被称为下一个分区指针)。例如,分区290的第一数据单元225可以包括一个下一个分区指针。当FIFO缓冲器包括多于一个分区时,下一个分区指针可以被用于连接一个分区到另一个分区。当一个分区是FIFO缓冲器中的最后一个或者唯一一个分区时,所述分区的下一个分区指针可以具有一个空值。对于一个实施例,下一个分区指针被存储在一个单独的存储器中,留下分区290中的更多的存储空间来存储数据。
图2D是一个方块图,示出依照本发明的实施例包括多于一个分区的一个FIFO缓冲器的实例。在这个实例中的FIFO缓冲器260包括三个分区,分区290、分区290+n和分区290+m。这些分区可以是连续的也可以是不连续的,并且可以是以任何一种物理顺序排序。分区290使用下一个分区指针225连接到分区290+n。分区290+n使用下一个分区指针245连接到分区290+m。分区290+m的下一个分区指针可以为空值,指示在FIFO缓冲器260中没有其它分区了。
FIFO缓冲器260可以与一个头指针250和一个尾部指针255相关。头指针250可以指向数据的开始,在这个实例中是FIFO缓冲器260的第一分区290。尾部指针255可以指向数据的末端,在这个实例中是FIFO缓冲器260的最后分区290+m。当数据从FIFO缓冲器260读出,头指针250可以相应地被更新。当数据从分区290完全读出时,头指针250随后可以被更新,指向分区290+n中的数据开始处。这可以使用下一个分区指针225完成,从而定位分区290+n。分区290随后可以被返回。
参考图2B,在专用组201和/或共享组202中会有分区,它们没有被分配到任何逻辑端口上。这些分区被认为是空闲或者可用分区,并且可以在逻辑上被一起归合成一个空闲存储区。例如,当一个逻辑端口将一个分区返回到共享组202或者专用组20时,可以在逻辑上视作被返回到空闲存储区。
图3A是一个方块图,示出从存储区中分配一个分区的实例。在这个实例中,存储器275包括已分配分区(非空闲)和未分配分区(空闲)。空闲分区包括分区325,330,335和其他没有划上阴影线的分区。非空闲分区(例如,划上阴影线的分区315和其他划上阴影线的分区)已经被分配并且包含在一个或者多个FIFO缓冲器中。这些划上阴影线的分区直到它们被适当的逻辑端口返回后,才能够被分配。
对于一个实施例,有关存储区中的分区的信息被保存,以便当一个逻辑端口需要一个额外的分区时,来自存储区的一个分区可以被定位。正像前面所描述的,在空闲存储区中的空闲分区的数量可以变化,并且在空闲存储区中的分区可以是物理连续的或可以是不连续的。一个空闲存储区开始指针和一个空闲存储区尾部指针可以被用来指示堆栈的输入/输出位置。对于一个实施例,在空闲存储区中的分区地址可以被存储在作为堆栈的另一个存储器中。例如,参考图3A,地址355是用于空闲分区325的开始的存储器地址。类似地,地址360是用于分区330的开始的存储器地址,并且地址365是空闲分区335开始的存储器地址,等等。这些地址被放在堆栈350中,并且空闲存储区指针390指向堆栈350顶部的地址。
参考图3A,FIFO缓冲器300包括三个分区305,310和315。当与FIFO缓冲器300相关的逻辑端口需要更多存储空间时,空闲存储区指针390被用于识别位于堆栈350顶部的地址355。地址355随后被用于定位空闲分区325。例如,地址355可以是分区325开始的地址。空闲分区325可以随后被分配给逻辑端口,并且作为结果被添加到FIFO缓冲器300。地址355可以随后从堆栈350的顶部被删除。这使地址360位于堆栈350的顶部。分区325也被从可用分区中删除,以使它不能被分配给其它逻辑端口。类似地,当与FIFO缓冲器300相关的逻辑端口需要甚至更多的存储空间时,地址360被从堆栈350的顶部删除。空闲分区330被定位并且添加到FIFO缓冲器300。这使地址365位于堆栈350的顶部。同样将分区330也从可用分区中删除。这样,这些地址基于后进先出(LIFO)原则被从堆栈350删除。当额外的数据被写入新添加的分区时,FIFO缓冲器300的尾部指针320可以随后被相应地更新。在任一时间被分配给一个逻辑端口的分区总数会受预确定门限值的限制。当一个分区被分配给一个逻辑端口时,与FIFO缓冲器中最后分区的最后数据单元相关的控制单元需要被更新,以指示例如用户数据的末尾,如表1所述。
当从FIFO缓冲器读取数据时,数据可以从FIFO缓冲器的第一分区读出。第一分区中数据的开始可以使用FIFO缓冲器的头指针来定位。数据可以从FIFO缓冲器读出,直到达到数据的预定数量。可选择地,数据可以被读出直到遇到数据末尾指示符。正像在表1中所述的,在适当的控制单元中描述了数据末尾指示符。当数据从FIFO缓冲器被读出时,头指针相应地被更新。当FIFO缓冲器仅包括一个分区时,头指针和尾部指针可以指向同一分区。
图3B是一个方块图,示出从FIFO缓冲器返回一个分区的实例。对于一个实施例,当在FIFO缓冲器的一个分区不再需要时(例如,此分区的数据已经被读出),那个分区可以变成一个空闲分区并且被放回到空闲存储区中。例如,这可以包括从逻辑端口将该分区解除分配。参考图3B,当不需要FIFO缓冲器300的分区305时,其相关的地址345可以被放到堆栈350的顶部。空闲分区指针390可以被更新,以指向地址345(或者堆栈350的顶部)。分区305随后变成一个空闲分区。在这个实例中,分区305在存储器275的顶部以没有划阴影线的分区被示出,用以指示它的状态为空闲并且可以被分配。同时,当地址345被放到堆栈350的顶部,它变成下一个可用地址。下一次逻辑端口需要空闲分区时,分区305被分配。
对于一个实施例,这里所描述的方法可以在两个时钟域上实现。参考图2D,只要有可能,尾部指针255所处的时钟域可以传送到其他的时钟域。可以在头指针250所处的时钟域中进行头指针250和尾部指针255之间的比较。
对于另一个实施例,一个速率适配FIFO可以在接口110(在图1A中示出)中实现,使得这里所描述的方法能够在一个时钟域中工作。速率适配FIFO在设备的内部系统时钟域中被实现。例如,该设备可以是一个ATM设备。这是一个仅有一个通道的FIFO。在一个方向,速率适配FIFO可以从使用上述方法实现的FIFO控制器中取得数据,并且以它们到达的顺序发送数据到设备的内部。在另一个方向,速率适配FIFO可以从设备的内部取得数据,并且以到达顺序将数据发送到使用上述方法实现的FIFO控制器。
图4是一个方块图,示出将数据写入一个FIFO缓冲器和从FIFO缓冲器读出数据的实例。正像前面所描述的,与逻辑端口相关的FIFO控制器将数据写入FIFO缓冲器,并且从FIFO缓冲器读出数据。在这个实例中的FIFO缓冲器400包括在一个链接列表中彼此链接的四个分区。例如,分区430(或者在FIFO缓冲器400中的第一分区)使用下一个分区指针405被连接到下一个分区。类似地,下一个分区指针415从前一分区指向分区435(或者在FIFO缓冲器400最后的分区)。对于一个实施例,可以在一个写指针(或者尾部指针)425所指向的位置,将数据写入到FIFO缓冲器400,并且可以在一个读指针(或者头指针)420所指向的位置,将数据从FIFO缓冲器400读出。例如,写指针425可以指向在FIFO缓冲器400中的下一个可用空间,以便写入数据。当写指针425移动到接近于分区435的末端时,一个来自空闲存储区的新分区可以被分配给与FIFO缓冲器400相关的逻辑端口。随后,在将数据写入分区最后的数据单元之后(如图2B所述),写指针425可以跳转到新分配的分区的开始位置。
读指针420以与写指针425相同的方式工作,但是改为指向分区430中还未读出的数据部分。在分区430的最后数据单元被读出之后,读指针420跳转到由下一个分区指针405所指向的、FIFO缓冲器400中的下一个分区。与FIFO缓冲器400相关的逻辑端口随后将分区430返回到空闲存储区。
图5是一个流程图,示出向一个FIFO缓冲器添加一个分区的处理过程实例。该过程可以被用于从空闲存储区分配一个空闲分区到需要额外空间的逻辑端口,以用作其FIFO缓冲器。在块505,逻辑端口指示需要额外的存储空间。在块510,一个地址从堆栈的顶部被删除。正像在块515示出的,基于这个地址,一个空闲分区在空闲存储区中被定位。在块520,FIFO缓冲器最后分区的下一个分区指针被调整,以指向新分配的分区,并且新分配的分区现在变成FIFO缓冲器的最后分区。在块525,尾部指针(或者写指针)可以被更新,以指向新分配的分区的开始位置。例如,尾部指针可以被更新,以指向新分配的分区的第一数据单元,其中数据可以被连续写入到FIFO缓冲器中。
图6是一个流程图,示出从一个FIFO缓冲器中删除一个分区的过程实例。该过程可以被用来从多于一个分区的FIFO缓冲器中删除一个分区。在分区中的数据已经被读出之后,FIFO缓冲器也许不再需要被删除的分区。该分区可以被放到空闲存储区中,以使分区可以被分配给其他的逻辑端口。在块605,数据被从FIFO缓冲器的第一分区中完全读出。在块610,FIFO缓冲器的头指针(或者读指针)被设置为指向FIFO缓冲器中下一个分区的开始位置。如上所述,可以使用与FIFO缓冲的当前第一分区相关的下一个分区指针来定位下一个分区的开始。FIFO缓冲器当前的第一分区变成空闲分区,并且下一个分区变成该FIFO缓冲器新的第一分区。在块615,与新的空闲分区相关的地址被放到堆栈的顶部(如图3B所示)。
可以利用计算机系统的处理器来实现各种方法的这些操作,该处理器执行存储在存储器中的计算机程序指令序列,所述存储器可被认为是一个机器可读存储介质。计算机系统可以是一个接口,诸如,在图1A中示出的UTOPIA接口110。存储器可以是随机存取存储器(RAM),只读存储器(ROM),诸如大容量存储器设备的永久存储存储器,或者这些设备的任意组合。指令序列的执行使得处理机依照本发明的一个实施例执行操作,例如,在图5和图6所示的操作。
在前面的描述中,已经描述了所要求的主旨的各个方面。为了说明的目的,阐明了特定的数字、系统和结构,以便能够彻底理解所要求的主旨。例如,尽管描述引用了UTOPIA接口,所描述的技术也可以被其他的接口使用,诸如,光网络论坛的系统分组接口(SPI)。显然本领域技术人员可以受益于所公开的内容,无需这些具体细节就能实现所要求的主旨。在其他的实例中,为了突出主题,众所周知的特征被省略或者简化。
Claims (28)
1.一种方法,包括:
将一个存储器划分为多个分区;以及
当一个端口需要时,将一个分区从一个未分配分区的存储区中分配给该端口,所述未分配分区的存储区包括来自第一组分区的未分配分区和来自第二组分区的未分配分区,
其中,将来自第一组分区的未分配分区分配给此端口,直至达到第一门限值,以及
在达到第一门限值之后,将来自第二组分区的未分配分区分配给此端口。
2.权利要求1的方法,进一步包括将这些分区分为第一组分区和第二组分区。
3.权利要求1的方法,其中,第二门限值被用于限制在达到第一门限值之后分配给此端口的分区的总数。
4.权利要求1的方法,其中,此存储器中分区的数量至少等于所支持的端口的数量。
5.权利要求1的方法,其中,当多于一个的分区被分配给此端口时,分配给此端口的分区在一个链接列表中彼此链接,以使此链接列表中的最后分区是一个最近分配的分区,以及此链接列表中的第一分区是最早分配的分区,该链接列表被用作一个先进先出(FIFO)缓冲器来写和读数据。
6.权利要求5的方法,其中,在最后分区中将此端口所接收的数据写入FIFO缓冲器,并且其中从第一分区开始将数据从FIFO缓冲器中读出。
7.权利要求6的方法,其中,当完成从第一分区中读数据时,该第一分区被从此端口中解除分配,并且被返回到未分配分区的存储区。
8.权利要求7的方法,其中,在完成从第一分区中读数据后,并且如果仍有数据要从FIFO缓冲器中读出,继续从第二分区中读数据,该第二分区是此链接列表中从第一分区开始的下一个分区。
9.权利要求8的方法,其中,继续从FIFO缓冲器中读数据,直至没有数据要从此链接列表的最后分区中读出。
10.权利要求7的方法,其中,在将第一分区返回到未分配分区的存储区之后,此第一分区变成此存储区中将被分配的下一个未分配分区。
11.权利要求1的方法,其中,当此端口接收到数据时,它需要一个分区。
12.权利要求1的方法,其中,当此端口未接收到数据时,没有分区被分配给此端口。
13.权利要求1的方法,其中,不管此端口是否接收到数据,将第一组分区中的最小数目的分区分配给此端口。
14.一种制造的物品,包括:
一个包括数据的机器可访问介质,所述数据在被一个机器访问时使得此机器执行包括以下的操作:
将一个存储器划分为多个分区;
将这些多个分区分为第一组分区和第二组分区;
分配第一组分区中的分区给此端口,直至达到第一门限值;并且
在达到第一门限值之后,在必要时,分配第二组分区中的分区给此端口。
15.权利要求14的制造的物品,其中,第一组分区和第二组分区中的未分配分区被放置在未分配分区的存储区中,并且其中从未分配分区的存储区向此端口分配分区。
16.权利要求14的制造的物品,其中第二门限值被用于限制在达到第一门限值之后分配给此端口的分区的总数。
17.权利要求14的制造的物品,其中,此存储器中的分区的数量至少等于所支持的端口的数量。
18.权利要求15的制造的物品,其中当多于一个的分区被分配给此端口时,分配给该端口的分区在一个链接列表中彼此链接,以使此链接列表中的最后分区是一个最近分配的分区,并且此链路列表中的第一分区是最早分配的分区,该链接列表被用作一个先进先出(FIFO)缓冲器来写与读数据。
19.权利要求18的制造的物品,其中将数据写入最后一个分区并从第一分区中读出数据,并且其中当完成从第一分区中读数据时,第一分区被从此端口中解除分配,并且被返回到未分配分区的存储区。
20.权利要求19的制造的物品,其中第一分区变成此存储区中将被分配的下一个未分配分区。
21.一种系统,包括:
一个存储器,所述存储器被划分成多个分区,这些分区被分为第一组分区和第二组分区;以及
耦合到该存储器的多个端口,所述多个端口之中的每一个端口接收数据,所述数据将被写入到每一个端口的被分配的一个或多个分区中,
其中,从第一组分区中分配分区,直到达到第一门限值,并且在达到第一门限值之后,进一步从第二组分区中分配分区。
22.权利要求21的系统,进一步包括多个控制器,每个控制器与每一个端口相关,其中,每一个控制器将由此端口接收的数据写入到分配给此端口的一个或多个分区中。
23.权利要求22的系统,其中,分配给此端口的一个或多个分区被用作先进先出(FIFO)缓冲器,并且其中所述控制器从最早分配的分区开始从FIFO缓冲器中读出数据,并且在最近分配的分区中将数据写入FIFO缓冲器。
24.权利要求23的系统,其中,当所述控制器完成从一个分区中读数据时,该分区被从所述端口中解除分配。
25.权利要求24的系统,其中,其数据已经被所述控制器完全读出的分区进一步地被返回到第一组和第二组之一。
26.权利要求24的系统,其中,从所述端口中解除分配的分区变成将被分配的下一个分区。
27.权利要求21的系统,其中,所述存储器被划分成比所述端口更多的分区。
28.权利要求21的系统,其中,除了第一门限值以外,第二门限值被用于限制在任何一个时间上分配给一个端口的分区的最大数目。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101198030A CN100502410C (zh) | 2003-10-27 | 2003-10-27 | 用于分组接口的动态存储器分配 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2003101198030A CN100502410C (zh) | 2003-10-27 | 2003-10-27 | 用于分组接口的动态存储器分配 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1612569A true CN1612569A (zh) | 2005-05-04 |
CN100502410C CN100502410C (zh) | 2009-06-17 |
Family
ID=34761426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003101198030A Expired - Fee Related CN100502410C (zh) | 2003-10-27 | 2003-10-27 | 用于分组接口的动态存储器分配 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100502410C (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7756991B2 (en) | 2007-01-29 | 2010-07-13 | Via Technologies, Inc. | Data-packet processing method in network system |
CN101364948B (zh) * | 2008-09-08 | 2011-01-19 | 中兴通讯股份有限公司 | 一种动态分配缓存的方法 |
CN101729186B (zh) * | 2009-12-04 | 2013-04-10 | 武汉光迅科技股份有限公司 | 抑制edfa中瞬态效应的控制方法 |
CN114072745A (zh) * | 2020-02-24 | 2022-02-18 | 青岛海尔智能技术研发有限公司 | 用于操作家用电器的方法和家用电器 |
-
2003
- 2003-10-27 CN CNB2003101198030A patent/CN100502410C/zh not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7756991B2 (en) | 2007-01-29 | 2010-07-13 | Via Technologies, Inc. | Data-packet processing method in network system |
CN101364948B (zh) * | 2008-09-08 | 2011-01-19 | 中兴通讯股份有限公司 | 一种动态分配缓存的方法 |
CN101729186B (zh) * | 2009-12-04 | 2013-04-10 | 武汉光迅科技股份有限公司 | 抑制edfa中瞬态效应的控制方法 |
CN114072745A (zh) * | 2020-02-24 | 2022-02-18 | 青岛海尔智能技术研发有限公司 | 用于操作家用电器的方法和家用电器 |
CN114072745B (zh) * | 2020-02-24 | 2024-01-16 | 青岛海尔智能技术研发有限公司 | 用于操作家用电器的方法和家用电器 |
Also Published As
Publication number | Publication date |
---|---|
CN100502410C (zh) | 2009-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2049182C (en) | Traffic shaping method and circuit | |
US6917620B1 (en) | Separation of data and control in a switching device | |
JP2618327B2 (ja) | 広帯域入力バッファatmスイッチ | |
EP0680173B1 (en) | Multicasting apparatus | |
EP0680179B1 (en) | Multicasting apparatus | |
US5796944A (en) | Apparatus and method for processing data frames in an internetworking device | |
US5600820A (en) | Method for partitioning memory in a high speed network based on the type of service | |
EP0502873B1 (en) | Basic element for the connection network of a fast packet switching node | |
CN1064500C (zh) | 临时存储数据包的方法和设备 | |
US7219184B2 (en) | Method and apparatus for longest prefix matching in processing a forwarding information database | |
JP4480845B2 (ja) | メモリー幅の非常に広いtdmスイッチシステム | |
US5418781A (en) | Architecture for maintaining the sequence of packet cells transmitted over a multicast, cell-switched network | |
CN101146029B (zh) | 一种分组重排序方法和系统 | |
US6892284B2 (en) | Dynamic memory allocation for assigning partitions to a logical port from two groups of un-assigned partitions based on two threshold values | |
US7991926B1 (en) | Scalable memory architecture for high speed crossbars using variable cell or packet length | |
US8312243B2 (en) | Memory management in network processors | |
US6463484B1 (en) | Egress port scheduling using memory efficient request storage | |
JPH06205478A (ja) | 交換接続の設立方法及び装置 | |
US6396838B1 (en) | Management of free space in an ATM virtual connection parameter table | |
US6601116B1 (en) | Network switch having descriptor cache and method thereof | |
CN100502410C (zh) | 用于分组接口的动态存储器分配 | |
WO2003055156A1 (en) | Adressing sequential data packets | |
US7733888B2 (en) | Pointer allocation by prime numbers | |
US7269158B2 (en) | Method of operating a crossbar switch | |
US20080181247A1 (en) | Method and apparatus for processing queue in network system |
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: 20090617 Termination date: 20201027 |
|
CF01 | Termination of patent right due to non-payment of annual fee |