用以优化分组缓冲器空间的分组处理系统、方法和设备的制造方法

文档序号:10654478阅读:326来源:国知局
用以优化分组缓冲器空间的分组处理系统、方法和设备的制造方法
【专利摘要】一种分组处理设备的缓冲器逻辑单元,其被配置为如果页面上所存储的当前分组没有完全填满单个页面,则将单个的页面分配给两个或更多分组,以及存储并维持用于页面上所存储的分组数据中的每个分组数据的特定于页面分段的页面状态数据。
【专利说明】
用以优化分组缓冲器空间的分组处理系统、方法和设备
技术领域
[0001]本发明涉及一种分组处理系统。更特别地,本发明涉及优化分组处理系统中的分组缓冲器空间。
【背景技术】
[0002]分组处理设备(如交换机微芯片)经常需要在该设备处理分组时将它们缓冲到具有一个或多个库(bank)的分组存储器(PM)中。用以将分组存储在设备的分组存储器中的当前解决方案是向每个分组指配分组存储器的多个区块(chunk,称为页面),而不是单个大区块。利用这种方案,分组没有连续地被存储在分组存储器的库中,而是被分散在一个或多个页面中,该一个或多个页面一起形成页面的链表,该链表贯穿分组存储器的多个库进行映射。进一步地,多个这些库(和映射到它们的页面)能够逻辑地被归组到(库和相关联的页面的)池中。因此,特定分组在分组缓冲器中使用的所有页面的链表需要被维持在交换机中(在缓冲器管理器或BM中);这一链表在分组从分组缓冲器中被读取出以用于传输时被遍历。每个页面关联了状态,该状态包含与页面有关的一些信息。分组处理器设备中的所有页面的状态被维持在交换机中。分组关联了描述符或标记(token),该描述符或标记除了其他字段之外还包含指向第一页面的指针。利用这一起始指针,通过对利用不同页面状态的下一页面指针所构建的链表进行遍历,由分组所使用的所有页面能够按照它们被用来存储传入分组的相同顺序被取回。作为结果,特定分组使用的所有页面(并且因此,库)的链表被维持在交换机中,并且然后被遍历以从分组存储器定位和读取出分组来用于传输。
[0003]在这些基于页面的分组处理设备中,被浪费的分组存储器与缓冲器管理器上所施加的带宽需求之间存在折中。页面中的每个页面的大小越大,用以读取和写入分组数据所需要的访问就越少,并且因此缓冲器管理器的带宽上的压力越小。然而,页面的大小越大意味着分组存储器的更大的部分可能被浪费或者未使用,因为没有填满整个页面的分组将导致该页面的剩余部分未使用。另一方面,页面大小越小,平均被浪费或未使用的分组存储器就越少,但是归因于用以读取每个分组和将每个分组写入较小页面所要求的访问的数目上的增加,应用到缓冲器管理器的压力更大。
[0004]另外,在一些分组处理设备中,如果两个或更多分组的一部分具有分组数据的匹配(matching)部分(例如,头部部分或者主体部分),则这些分组能够共享存储有分组数据的匹配部分的一个页面或多个页面,从而匹配数据没有在不同的位置(例如,不同的页面)被存储两次。为了保持跟踪需要使用页面的分组的数目,缓冲器管理器维持用于页面中的每个页面的参考计数值,其指示共享该页面并且还没有从该页面读取出分组数据的页面的数目。例如,在设备确定更多分组需要使用页面时(例如,更多分组具有与该页面上所存储的数据的部分相匹配的部分),该设备能够使参考计数值递增以说明(account for)需要使用该页面的所添加分组。类似地,在数据从这些页面被读取以用于分组中的一个或多个分组时(从而该页面不再需要被使用用于这些分组),该设备能够使参考计数值递减以说明需要使用该页面的分组的较少数量。因此,当参考计数被减少到零时,该设备能够回收该页面用于与其他数据一起重新使用,因为不再有分组需要使用该页面上存储的数据。

【发明内容】

[0005]—种分组处理设备的缓冲器逻辑单元被配置为,如果页面上所存储的当前分组没有完全填满页面,则将单个的页面分配给两个或更多分组。作为结果,该缓冲器逻辑单元能够通过减少页面中的每个页面上的未使用空间的量,来减少被浪费的分组存储器空间的量。
[0006]第一方面针对一种在分组处理设备上的分组处理系统。该系统包括:包括多个物理存储器单元的非瞬态计算机可读分组存储器,该多个物理存储器单元逻辑地被划分为多个页面,从而页面中的每个页面定义物理存储器单元的分离部分;以及至少部分地被存储在非瞬态计算机可读缓冲器存储器上的缓冲器逻辑,其中该缓冲器逻辑被配置为:分配页面中的一个页面来存储多个分组中的第一分组的分组数据;以及如果页面中的该页面被确定为未充分被第一分组的分组数据占用,则分配页面中的该页面的未占用的剩余部分的至少一分部分来存储该多个分组中的一个或多个另外分组的分组数据,以使得页面中的该页面被分配给该多个分组中的两个或更多分组。在一些实施例中,页面中的每个页面包括多个分段,并且如果未占用的剩余部分包括页面中的该页面的分段中的至少一个分段,则缓冲器存储器逻辑确定页面中的该页面未充分被占用。在一些实施例中,缓冲器存储器包括用于页面中的每个页面的参考计数值,该参考计数值指示该多个分组中的多少分组使用该页面,并且另外其中缓冲器逻辑被配置为,一旦页面中的该页面已经被分配来存储第一分组的分组数据,如果页面中的该页面在存储第一分组的分组数据之后被确定为未充分被占用,就将页面中的该页面的参考计数值设置为大于一的整数。在一些实施例中,大于一的该整数是二。在一些实施例中,针对该多个分组中的其分组数据被分配给页面中的该页面的每个分组,缓冲器逻辑被配置为,如果页面中的该页面在存储该分组的分组数据之后被确定为未充分被占用,则使页面中的该页面的参考计数值递增一。在一些实施例中,针对该多个分组中的其分组数据被分配给页面中的该页面的每个分组,缓冲器逻辑被配置为,如果页面中的该页面在存储该分组的分组数据之后被确定为不再是未充分被占用,则避免使页面中的该页面的参考计数值递增一。在一些实施例中,缓冲器存储器存储用于页面中的每个页面的状态数据,其中页面中的每个页面的状态数据包括用于该页面的分段中的每个分段的单独状态值。在一些实施例中,用于分段中的每个分段的状态值包括如下组中的一项或多项,该组包括:所使用数据计数值,指示该分段的多少当前正存储有数据;分组起始值,指示分组中的一个分组的起始是否被存储在该分段中;以及分组末尾值,指示分组中的一个分组的末尾是否被存储在该分段中。在一些实施例中,缓冲器逻辑被配置为生成用于页面中的一个或多个页面上所存储的分组中的每个分组的描述符,其中描述符包括页面指示符和分段指示符,页面指示符指示该分组的起始被存储在页面中的哪个页面上,分段指示符指示该分组的起始被存储在所指示的页面的分段中的哪个分段上。在一些实施例中,针对分组中的每个分组,在将分组的末尾(例如,头部的末尾或者整个分组的末尾)存储在这些页面中的页面的分段中的一个分段上之后,缓冲器逻辑保留页面的邻近后续分段中的一个或多个分段作为保留分段,保留分段仅能够在该分组的数据的大小增加时存储来自该分组的数据。在一些实施例中,在确定页面中的该页面是否未充分被占用时,缓冲器逻辑将保留分段考虑为被占用,以使得保留分段不是未占用的剩余部分的一部分。
[0007]第二方面针对一种被存储在非瞬态计算机可读缓冲器存储器上的缓冲器逻辑单元,其中该缓冲器逻辑被配置为:分配多个页面中的一个页面来存储多个分组中的第一分组的分组数据;以及如果页面中的该页面被确定为未充分被第一分组的分组数据占用,则分配页面中的该页面的未占用的剩余部分的至少一分部分来存储该多个分组中的一个或多个另外分组的分组数据,以使得页面中的该页面被分配给该多个分组中的两个或更多分组,其中该多个页面中的每个页面包括多个分段并且定义多个物理存储器单元的分离部分。在一些实施例中,页面中的每个页面包括多个分段,并且如果未占用的剩余部分包括页面中的该页面的分段中的至少一个分段,则缓冲器存储器逻辑确定页面中的该页面未充分被占用。在一些实施例中,缓冲器存储器包括用于页面中的每个页面的参考计数值,该参考计数值指示该多个分组中的多少分组使用该页面,并且另外其中缓冲器逻辑被配置为,一旦页面中的该页面已经被分配来存储第一分组的分组数据,如果页面中的该页面在存储第一分组的分组数据之后被确定为未充分被占用,就将页面中的该页面的参考计数值设置为大于一的整数。在一些实施例中,大于一的该整数是二。在一些实施例中,针对该多个分组中的其分组数据被分配给页面中的该页面的每个分组,缓冲器逻辑被配置为,如果页面中的该页面在存储该分组的分组数据之后被确定为未充分被占用,则使页面中的该页面的参考计数值递增一。在一些实施例中,针对该多个分组中的其分组数据被分配给页面中的该页面的每个分组,缓冲器逻辑被配置为,如果页面中的该页面在存储该分组的分组数据之后被确定为不再是未充分被占用,则避免使页面中的该页面的参考计数值递增一。在一些实施例中,缓冲器存储器存储用于页面中的每个页面的状态数据,其中页面中的每个页面的状态数据包括用于该页面的分段中的每个分段的单独状态值。在一些实施例中,用于分段中的每个分段的状态值包括如下组中的一项或多项,该组包括:所使用数据计数值,指示该分段的多少当前正存储有数据;分组起始值,指示分组中的一个分组的起始是否被存储在该分段中;以及分组末尾值,指示分组中的一个分组的末尾是否被存储在该分段中。在一些实施例中,缓冲器逻辑被配置为生成用于页面中的一个或多个页面上所存储的分组中的每个分组的描述符,其中描述符包括页面指示符和分段指示符,页面指示符指示该分组的起始被存储在页面中的哪个页面上,分段指示符指示该分组的起始被存储在所指示的页面的分段中的哪个分段上。在一些实施例中,针对分组中的每个分组,在将分组的末尾存储在这些页面中的页面的分段中的一个分段上之后,缓冲器逻辑保留页面的邻近后续分段中的一个或多个分段作为保留分段,保留分段仅能够在该分组的数据的大小增加时存储来自该分组的数据。在一些实施例中,在确定页面中的该页面是否未充分被占用时,缓冲器逻辑将保留分段考虑为被占用,以使得保留分段不是未占用的剩余部分的一部分。
[0008]第三方面针对一种优化分组处理系统内的分组存储器空间的方法,该分组处理系统包括非瞬态计算机可读分组存储器,该非瞬态计算机可读分组存储器包括多个物理存储器单元,该多个物理存储器单元逻辑地被划分为多个页面,从而页面中的每个页面定义物理存储器单元的分离部分。该方法包括:利用缓冲器逻辑来分配页面中的一个页面以存储多个分组中的第一分组的分组数据,其中该缓冲器逻辑至少部分地被存储在非瞬态计算机可读缓冲器存储器上;利用缓冲器逻辑来确定页面中的该页面是否未充分被第一分组的分组数据占用;以及如果页面中的该页面被缓冲器逻辑确定为未充分被第一分组的分组数据占用,则利用缓冲器逻辑来分配页面中的该页面的未占用的剩余部分的至少一分部分以存储该多个分组中的一个或多个另外分组的分组数据,以使得页面中的该页面被分配给该多个分组中的两个或更多分组。在一些实施例中,页面中的每个页面包括多个分段,并且如果未占用的剩余部分包括页面中的该页面的分段中的至少一个分段,则缓冲器存储器逻辑确定页面中的该页面未充分被占用。在一些实施例中,缓冲器存储器包括用于页面中的每个页面的参考计数值,该参考计数值指示该多个分组中的多少分组使用该页面,并且该方法进一步包括:一旦页面中的该页面已经被分配来存储第一分组的分组数据,如果页面中的该页面在存储第一分组的分组数据之后被确定为未充分被占用,就将页面中的该页面的参考计数值设置为大于一的整数。在一些实施例中,大于一的该整数是二。在一些实施例中,该方法进一步包括:针对该多个分组中的其分组数据被分配给页面中的该页面的每个分组,如果页面中的该页面在存储该分组的分组数据之后被确定为未充分被占用,则利用缓冲器逻辑来使页面中的该页面的参考计数值递增一。在一些实施例中,该方法进一步包括:针对该多个分组中的其分组数据被分配给页面中的该页面的每个分组,如果页面中的该页面在存储该分组的分组数据之后被确定为不再是未充分被占用,则利用缓冲器逻辑来避免使页面中的该页面的参考计数值递增一。在一些实施例中,该方法进一步包括:利用缓冲器逻辑将用于页面中的每个页面的状态数据存储在缓冲器存储器内,其中页面中的每个页面的状态数据包括用于该页面的分段中的每个分段的单独状态值。在一些实施例中,用于分段中的每个分段的状态值包括如下组中的一项或多项,该组包括:所使用数据计数值,指示该分段的多少当前正存储有数据;分组起始值,指示分组中的一个分组的起始是否被存储在该分段中;以及分组末尾值,指示分组中的一个分组的末尾是否被存储在该分段中。在一些实施例中,该方法进一步包括:利用缓冲器逻辑来生成用于页面中的一个或多个页面上所存储的分组中的每个分组的描述符,其中描述符包括页面指示符和分段指示符,页面指示符指示该分组的起始被存储在页面中的哪个页面上,分段指示符指示该分组的起始被存储在所指示的页面的分段中的哪个分段上。在一些实施例中,该方法进一步包括:针对分组中的每个分组,在将分组的末尾存储在这些页面中的页面的分段中的一个分段上之后,利用缓冲器逻辑来保留页面的邻近后续分段中的一个或多个分段作为保留分段,保留分段仅能够在该分组的数据的大小增加时存储来自该分组的数据。在一些实施例中,该方法进一步包括:在确定页面中的该页面是否未充分被占用时,利用缓冲器逻辑来将保留分段考虑为被占用,以使得保留分段不是未占用的剩余部分的一部分。
【附图说明】
[0009]图1图示了根据一些实施例的分组处理设备上的分组处理系统。
[0010]图2图示了根据一些实施例的缓冲器管理器。
[0011]图3图示了根据一些实施例的示例性页面和页面状态数据。
[0012]图4图示了根据一些实施例的示例性页面描述符。
[0013]图5图示了根据一些实施例的用于两个所接收的分组的示例性页面状态数据和描述符值。
[0014]图6图示了根据一些实施例的优化分组处理系统的分组存储器空间的方法。
【具体实施方式】
[0015]在以下描述中,为了解释的目的阐述了许多细节。然而,本领域的技术人员将认识至IJ,本发明能够无需使用这些具体细节而被实行。因此,本发明不意图为被限制于所示出的实施例,而是将符合于与本文所描述的原理和特征相一致的最宽范围。
[0016]实施例针对一种分组处理设备的缓冲器逻辑单元,其被配置为如果页面上存储的当前分组没有完全填满该页面,则将单个的页面分配给两个或更多分组。作为结果,该缓冲器逻辑单元能够通过减少页面中的每个页面上未使用空间的量,来减少被浪费的分组存储器空间的量。进一步地,该系统通过在每个分组之后自动地实施保留的分段(reservedslot)而提供了如下的优点:在处理期间负责(account for)分组数据扩充。此外,该系统提供了如下的优点:存储并更新特定于分段的页面状态数据以使得来自不同分组的分组数据能够在相同页面上被区分。最后,该系统提供了如下的优点:设置并更新用于每个页面的参考计数值以确保该页面在它能够完全被分配之前不被回收以免浪费未使用空间(例如,分段)O
[0017]图1图示了根据一些实施例的分组处理设备99上的分组处理系统100。如图1中所示出的,分组处理系统100包括分组存储器102、缓冲器存储器104、读取页面客户端108、以及写入页面客户端110,它们都经由网络可操作地耦合在一起。分组处理设备99能够是分组处理电路和/或微芯片。例如,设备99能够是用于数据中心的(例如,机架交换机的顶部的)交换机微芯片、或者其他类型的分组处理电路或专用集成电路。在一些实施例中,设备99是软件定义的网络可编程的微芯片,其能够被编程或者被定制为调整分组被处理的方式。替换地,设备99能够是本领域中已知的其他类型的分组处理设备。分组存储器102包括多个非瞬态计算机可读物理存储器单元,每个都具有一个或多个读取端口和一个或多个写入端口。当传入分组的分组数据被存储在分组存储器102上时,它被存储在一个或多个页面上,该一个或多个页面映射到分组存储器102的存储器单元中的一个或多个存储器单元。作为结果,当分组数据被存储在页面中而不是全部依次地被存储在分组存储器102中的相同位置时,该分组数据跨分组存储器的由该页面所映射到的多个物理存储器单元而被分布。在一些实施例中,分组存储器102包括内容可寻址存储器(CAM) ο替换地,分组存储器102能够包括CAM、三态内容可寻址存储器(TCAM)、随机访问存储器(RAM)、静态随机接入存储器(SRAM)、本领域中已知的其他类型的存储器、或者它们的组合。
[0018]图2图示了根据一些实施例的缓冲器管理器104。如图2中所示出的,缓冲器管理器104包括缓冲器逻辑202、多个缓冲器存储器单元204、一个或多个页面状态表格206、具有一个或多个页面212的一个或多个页面缓冲器208、以及一个或多个页面计数器210。替换地,页面计数器210能够被省略。缓冲器逻辑202实施缓冲器管理器104的动作,包括向写入客户端110分配页面212以及从读取客户端108回收页面212,以及实施对状态表格206、页面缓冲器208和页面计数器210的对应管理/更新。缓冲器逻辑202能够包括被配置为执行本文所描述的缓冲器管理器104功能的硬件、软件、或者硬件和软件的组合,其中该软件被存储在设备99的非瞬态计算机可读介质(例如,缓冲器存储器)上。
[0019]页面缓冲器208中的每个页面缓冲器在页面212(或者它们的表示)未被分配时存储这些页面的子集。当由于写入页面客户端110进行请求,页面需要被分配用以存储传入分组的分组数据时,缓冲器管理器104经由缓冲器逻辑202从缓冲器208中的一个缓冲器选择页面212中的一个页面(因为它们是未被分配的页面212),将它从缓冲器208中移除并且将该页面212分配给写入页面客户端110,以用于存储该传入分组的分组数据的至少一部分。如图3A中所示出的,页面212中的每个页面包括多个分段302(例如,分段O-分段η),每个分段构成页面212的一部分。如果在将该传入分组的分组数据存储在页面212上之后,不是所有的分段302都已经至少部分地被填充,则缓冲器管理器104能够确定页面212不是充分地满。因此,缓冲器管理器104能够将页面212的剩余部分(包括页面212的未使用分段302中的一个或多个分段)分配给后续传入分组的分组数据,并且重复这一模式直到页面212被确定为充分填满。稍后,当需要读取该页面上所存储的一个或多个分组的分组数据的所有读取页面客户端108都指示页面212上所存储的数据不再被需要从而该页面准备好被回收时,缓冲器管理器104将页面212添加回到相同的页面缓冲器208中。因此,页面缓冲器208能够向缓冲器管理器104动态地指示每当需要页面时就能够被选择的所有的当前未被分配的页面(或者它们的部分)。以这种方式,当分组数据被缓冲器管理器104与写入和读取客户端108、110协作地进行输入、存储、处理、以及从设备99输出时,页面212能够连续地被分配和回收。
[0020]缓冲器存储器单元204每个都是具有一个或多个读取端口和一个或多个写入端口(未示出)的非瞬态计算机可读物理存储器。作为结果,缓冲器存储器单元204每个都能够在每个周期独立地使数据被写入到它们中和/或从它们中被读取出。页面状态表格206每个都被存储在缓冲器存储器单元204中的一个或多个缓冲器存储器单元上并且包括多个条目,该多个条目用于存储页面212中的每个页面在它们被分配给分组的分组数据时的页面状态数据304。如图3Β中所示出的,用于页面212中的每个页面的状态数据能够包括页面标识符314、参考计数值316、以及下一页面标识符306。进一步地,对于相关联的页面212的分段302中的每个分段,状态数据302能够包括所使用的数据计数308、分组起始指示符310、以及分组末尾指示符312。页面标识符314唯一地识别与页面状态数据304相关联的页面212,以便将页面212与所存储的状态数据304相关。参考计数值316指示先前分配的页面212何时不再处于使用中并且因此可以被回收。具体地,在页面212已经被缓冲器管理器104完全分配之后,参考计数值316指示具有页面212上所存储的不同分组数据的分组的数目,从而当参考计数值316为零时,缓冲器管理器104能够将页面212回收回到相关联的缓冲器208中。例如,如果第一分组的分组数据被存储在页面212的前两个分段302上,并且第二分组的分组数据被存储在页面212的分段302的剩余部分上,则用于该页面212的参考计数值316将等于二(对于每个分组是一)。因此,仅当这两个分组都不再是正在使用页面212时,值306才将被递减两次而等于零并且页面212被读取以便回收。
[0021]下一页面标识符306指示下一页面(如果有的话),该下一页面存储不完全适合于在当前页面上的分组的剩余分组数据的至少一部分。换句话说,如果页面212的最后分段302被填满,但是将最后分段302填满的分组仍然有剩余分组数据要被存储,则下一页面标识符306指示该分组的剩余分组数据至少部分地被存储在其中的下一页面212。因此,下一页面标识符306的序列能够匹配于与大分组相对应的页面212的链表。在一些实施例中,下一页面标识符306能够是与下一页面标识符306正在识别的页面标识符314相同的值。替换地,能够使用不同的识别值。所使用的数据计数308指示分段302的多少被分组数据占用。在一些实施例中,所使用的数据计数308能够是当前被存储在页面212的分段302上的字节的数目。替换地,所使用的数据计数308能够是指示分段302的多少被分组数据占用的其他单位(例如,千字节)或者值(例如,百分比、数字)。分组起始指示符310指示是否分组的分组数据开始于页面212的该分段302内。类似地,分组末尾指示符312指示是否分组的分组数据结束于页面212的该分段302内。因此,特定于分段的状态数据308、310、312—起指示了页面212的分段302中的哪些分段和每个分段的多少被分组的分组数据占用,从而相同页面212上的来自不同分组的分组数据能够被区分。在一些实施例中,页面状态数据304还能够包括分组数据内所引发的错误和/或本领域中已知的其他类型的分组/页面数据。在一些实施例中,缓冲器管理器104包括用于页面缓冲器208中的每个页面缓冲器的单独的状态表格206,从而每个表格206与缓冲器208中的不同的一个缓冲器成对。
[0022]在操作中,每次写入页面客户端110接收到传入分组时,它从缓冲器管理器104请求页面212来存储该分组的分组数据。响应于该请求,缓冲器管理器104从缓冲器208中的一个缓冲器选择页面212并且分配给写入页面客户端110以用于该分组的分组数据。一经接收到所分配的页面212,写入页面客户端110就将分组数据写入在分组存储器102的所分配的页面212上,并且利用缓冲器管理器104(基于所分配的页面212和该分组)将页面状态数据302写入到对应的状态表格206用于存储。如果分组数据是(自从页面212上次被回收以来)分配给页面212的第一分组数据,并且缓冲器管理器104确定页面212在存储这个第一分组的分组数据之后未充分被填满,则缓冲器管理器104将页面212的状态数据304的参考计数316设置为大于一的整数。例如,缓冲器管理器104将参考计数316设置为二。具体地,因为页面212被确定为未充分被填满,所以缓冲器管理器104知道它将需要把页面212的未使用的分段302中的一个或多个分段进一步分配给一个或多个后续分组,直到页面212充分被填满。因此,预期到来自至少一个后续分组的分组数据被存储在页面212上而使得来自至少两个不同分组的总分组数据被存储在页面212上,缓冲器管理器104能够将参考计数316设置为大于一的数字。对参考计数值306的这种“预期的”递增提供了如下的益处:帮助确保页面212在全部所存储的分组数据已经被取回之前(例如,在第一分组在页面212的剩余部分已经被指配给后续分组之前就被处理的情况中)不被回收。然而,如果这是(自从页面212上次被回收以来)分配给页面212的第一分组数据,但是缓冲器管理器104确定页面212在存储这个分组的分组数据之后充分被填满,则缓冲器管理器104将第一页面212的状态数据304的参考计数316设置为一,因为没有进一步的分组数据将被存储在页面212上。
[0023]另外,如果分组数据不是(自从页面212上次被回收以来)分配给页面212的第一分组数据,并且缓冲器管理器104确定页面212在存储这一后续分组的分组数据之后未充分被填满,则缓冲器管理器104使页面212的状态数据304的参考计数316递增一(例如,从2到3)。具体地,缓冲器管理器104已经确保了在使用于第一分组的参考计数316递增时页面212不被回收,因此对于仍然没有充分填满页面212的后续分组而言仅递增一是必要的。最后,如果分组数据不是(自从页面212上次被回收以来)分配给页面212的第一分组数据,但是缓冲器管理器104确定页面212在存储这个分组的分组数据之后充分被填满,则缓冲器管理器104不改变第一页面212的状态数据304的参考计数316。这是因为这个分组数据将是存储在页面212上的最后的分组数据,如上文所描述的,当参考计数值306在第一分组数据被分配了页面212时被递增到大于一的整数时,这已经在参考计数值306中被说明(account for)。因此,系统100提供了如下的益处:使得每个页面212能够存储来自多个分组的分组数据,由此增加了分组存储器102中的分组数据存储的效率。另外,系统100提供了如下的益处:确保页面212在它已经充分被填满之前不被回收,否则将会导致系统100内的错误以及可能的分组数据丢失。
[0024]在一些实施例中,如果页面212的预定数目的(例如,一个)分段302在存储分组数据之后没有被使用,则缓冲器管理器104确定页面212未充分被填满。因此,在一个或多个分段302被分配给每个分组的分组数据之后,如果该预定数目的分段302仍然没有正在被使用,则缓冲器管理器104确定页面212未充分被填满并且将剩余的未使用的分段302中的一个或多个分段分配给后续分组。进一步地,在一些实施例中,当确定分段302是否被使用用于确定页面212是否充分被填满的目的时,缓冲器管理器104能够把在存储有页面212上所存储的最后分组数据的末尾的分段302之后的预定数目的分段302考虑为被使用。具体地,因为在设备99内的处理期间,分组数据有时变得更大,在存储每个分组的末尾的分段302之后的该预定数目的分段302能够被保留,假如分组数据在处理之后需要扩充到这些保留分段302中的话。因此,当确定页面212是否充分被填满时,缓冲器管理器104将保留分段302考虑为是满的或者被使用,并且如果页面212仍然未充分被填满,则保留分段302不被分配给来自下一分组的分组数据。作为结果,系统100能够有利地以保留分段302的形式来提供存储器102内的缓冲器,这些保留分段302使得分组数据能够扩充而不覆写任何后续分组数据。
[0025]对于分组中的每个分组,缓冲器管理器104还生成如图4中所示出的页面描述符400 ο页面描述符400包括分组标识符402、页面标识符404、以及分段标识符406。分组标识符402识别分组,页面标识符404识别存储分组的起始的页面212,并且分段标识符406识别所识别页面212的存储有分组的分组数据的起始的分段302(例如,如由分组指示符312的起始所指示)。这一页面描述符400能够被发送给设备99的处理引擎和/或读取页面客户端108以用于按照需要地在处理和/或读取出来自分组存储器102的分组数据时使用。在一些实施例中,页面标识符404能够与状态数据304的页面标识符314是相同的。替换地,能够使用不同的标识符。同时,当读取页面客户端108准备好输出传出分组时,它们读取与这些传出分组相关联的页面状态数据302,如分组的描述符400所指示的,其被存储在缓冲器管理器104上。基于这一页面状态数据302,读取页面客户端108能够定位并且读取来自分组数据被存储的分组存储器102的页面或多个页面212的分组数据中的一些或全部。作为结果,读取页面客户端108然后能够输出传出分组的分组数据。每次读取页面客户端108指示页面上所存储的分组数据已经被读取从而它不再需要被存储用于该分组时,缓冲器管理器104把用于缓冲器存储器内的页面212的参考计数值316递减。作为结果,当参考计数值316达到零时,缓冲器管理器104能够将页面212回收回到相关联的页面缓冲器208中作为在需要时能够被重新分配的当前未使用的页面。
[0026]另外,应当注意,当一个或多个分组具有被存储在页面212上的一部分匹配分组数据时,页面212的参考计数值316也能够被递增。例如,这能够针对多播或广播分组而发生,其中替代将分组数据的匹配部分存储两次,参考计数值316能够被缓冲器管理器104增加以使得页面212不被回收,直到具有匹配数据和页面212上的任何其他数据的所有分组已经被处理并且不再需要该数据。进一步地,应当注意,当存储来自多个分组的分组数据的页面212的状态针对该多个分组的后续分组而被写入时,不需要部分地写入对于由该多个分组的先前分组的分组数据占用的先前分段而言的所使用数据计数308、分组起始指示符310、和/或分组末尾指示符312的值。这是因为表格206内的这一页面状态数据302的所有写入都由相同源(例如,写入页面客户端110)来执行,以使得后续写入能够包含先前写入中包括用于新分组数据的任何附加内容而被写入的相同值。因此,系统100不要求对存储相关联的状态表格206的缓冲器存储器单元204的端口的多种访问(读取-修改-写入)类型,而是单个写入访问。换句话说,系统100不要求对状态表格的额外读取。
[0027]图5图示了根据一些实施例的用于两个所接收的分组的示例性页面状态数据和描述符值。如图5中所示出的,分组A首先被接收并且存储在页面P的第一分段O中,并且接下来的两个分段302是用于可能的分组数据增长的保留分段。作为结果,用于分组A的描述符具有指向页面P的页面标识符404、以及指向存储有分组A的分组数据的开端的分段O的页面分段值。进一步地,在页面P的状态数据304内,分段O的所使用数据计数被设置为60字节,并且分段I和2被设置为O字节以反映分段0、1和2的多少被分组A填充,并且分段O的分组起始指示符和分组末尾指示符两者都被设置为I以指示分组A开始和结束于页面P的分段O中。然后,因为分段3未被分组A使用,所以缓冲器管理器104能够确定页面P未充分被填满并且将参考计数值316设置为大于一的整数(例如,二)以反映对于将被存储在页面P上的进一步分组数据的需求。然后,当分组B请求页面212时,缓冲器管理器104能够通过将页面P的未使用的分段3分配给分组B来开始。作为结果,用于分组B的描述符具有指向页面P的页面标识符404、以及指向存储有分组B的分组数据的开端的分段3的页面分段值。进一步地,在页面P的状态数据304内,分段3的所使用数据计数被设置为64字节以反映分段3的多少被分组B填充,并且分段3的分组起始指示符被设置为I以指示分组B开始于页面P的分段3中。页面P然后能够被确定为充分被填满,从而缓冲器管理器104不把用于页面P的参考计数值316递增(因为没有更多的分组数据能够被存储在页面P上)。此外,因为分组B的更多分组数据仍然需要被存储,所以缓冲器管理器104能够分配新的页面Q以存储分组B的更多数据,并且同时设置页面P的下一页面标识符306以将页面Q识别为所选择的下一页面212。然后,类似于在页面P中,分组B的分组数据的剩余部分被存储在页面Q中,相关联的页面状态数据304被添加到相关联的状态表格206内的页面Q条目,并且参考计数值316仅被递增到I以反映页面Q(包括保留分段)被分组B的剩余分组数据充分填满。因此,系统100能够既利用保留分段来负责分组数据扩充,并且又将单个的页面分配给来自多个不同分组的不同/非匹配的分组数据。
[0028]图6图示了根据一些实施例的优化分组处理系统100内的分组存储器空间的方法。如图6中所示出的,在步骤602处,缓冲器管理器104(经由缓冲器逻辑202)分配页面212中的一个页面来存储第一分组的分组数据。在步骤604处,缓冲器管理器104确定页面212中的该页面是否未充分被第一分组的分组数据占用。在一些实施例中,如果未占用的剩余部分包括页面212中的该页面的分段302中的至少一个分段,则缓冲器管理器104确定页面212中的该页面未充分被占用。在步骤606处,如果页面212被缓冲器管理器104确定为未充分被分组数据占用,则缓冲器管理器104分配页面212的未占用的剩余部分(例如,分段302)的至少一部分来存储一个或多个另外分组的分组数据。因此,该方法提供了如下的优点:使得单个页面能够被分配给多个不同分组的不同分组数据。
[0029]在一些实施例中,该方法进一步包括:一旦页面212中的该页面已经被分配来存储第一分组的分组数据,如果页面中的该页面在存储第一分组的分组数据之后被确定为未充分被占用,就利用缓冲器管理器104将页面中的该页面的参考计数值316设置为大于一的整数(例如,二)。在一些实施例中,该方法进一步包括:针对该多个分组中的其分组数据被分配给页面212中的该页面的每个分组,如果页面212在存储该分组的分组数据之后被确定为未充分被占用,则使页面212中的该页面的参考计数值316递增一。在一些实施例中,该方法进一步包括:针对该多个分组中的其分组数据被分配给页面212中的该页面的每个分组,如果页面212在存储该分组的分组数据之后被确定为不再是未充分被占用,则避免使页面中的该页面的参考计数值316递增一。在一些实施例中,该方法进一步包括:将用于页面212中的每个页面的状态数据304存储在缓冲器存储器204内。在一些实施例中,该方法进一步包括:生成用于分组中的每个分组的描述符400,其中描述符400包括页面指示符404和分段指示符406。在一些实施例中,该方法进一步包括:针对每个分组,在将分组的末尾存储在页面212的分段302中的一个分段上之后,保留页面212的邻近后续分段302中的一个或多个分段作为保留分段302,保留分段302用于如果该分组的数据的大小增加则存储来自该分组的数据。在一些实施例中,该方法进一步包括:在确定页面212中的该页面是否未充分被占用时,将保留分段302考虑为被占用,以使得保留分段302不是未占用的剩余部分的一部分。替换地,在一些实施例中,上述步骤中的一个或多个步骤能够被省略。
[0030]本文所描述的分组处理系统具有许多优点。特别地,该系统提供了如下的优点:通过将单个的页面分配给来自多个不同分组的不同/非匹配的分组数据,由此不浪费每个页面的未使用部分,来优化分组存储器空间。进一步地,该系统提供了如下的优点:通过在每个分组之后自动地实施保留分段,来负责在处理期间的分组数据扩充。此外,该系统提供了如下的优点:存储并更新特定于分段的页面状态数据,从而来自不同分组的分组数据能够在相同页面上被区分。最后,该系统提供了如下的优点:设置并更新用于每个页面的参考计数值,以确保该页面在它能够完全被分配之前不被回收以便不浪费未使用的空间(例如,分段)O
[0031]虽然已经参考许多具体细节描述了本发明,但是本领域的技术人员将认识到,不偏离本发明的精神,本发明能够以其他的具体形式来具体化。例如,尽管本文所描述的不同方法和操作描述了特定顺序的步骤,但是也设想到其他顺序、以及省略步骤中的一个或多个步骤和/或添加一个或多个新的步骤。此外,尽管上述方法和操作在本文中分离地被描述,但是方法和操作中的一个或多个方法和操作能够(以整体或部分地)被组合。因此,本领域的技术人员将理解,本发明将不被前述说明性的细节所限制,而是将由所附权利要求来限定。
【主权项】
1.一种在分组处理设备上的分组处理系统,所述系统包括: 包括多个物理存储器单元的非瞬态计算机可读分组存储器,所述多个物理存储器单元逻辑地被划分为多个页面,从而所述页面中的每个页面定义所述物理存储器单元的分离部分;以及 至少部分地被存储在非瞬态计算机可读缓冲器存储器上的缓冲器逻辑,其中所述缓冲器逻辑被配置为: 分配所述页面中的一个页面来存储多个分组中的第一分组的分组数据;以及 如果所述页面中的所述一个页面被确定为未充分被所述第一分组的分组数据占用,则分配所述页面中的所述一个页面的未占用的剩余部分的至少一分部分来存储所述多个分组中的一个或多个另外分组的分组数据,以使得所述页面中的所述一个页面被分配给所述多个分组中的两个或更多分组。2.根据权利要求1所述的系统,其中所述页面中的每个页面包括多个分段,并且如果所述未占用的剩余部分包括所述页面中的所述一个页面的分段中的至少一个分段,则缓冲器存储器逻辑确定所述页面中的所述一个页面未充分被占用。3.根据权利要求2所述的系统,其中所述缓冲器存储器包括用于所述页面中的每个页面的参考计数值,所述参考计数值指示所述多个分组中的多少分组使用所述页面,并且另外其中所述缓冲器逻辑被配置为,一旦所述页面中的所述一个页面已经被分配来存储所述第一分组的分组数据,如果所述页面中的所述一个页面在存储所述第一分组的分组数据之后被确定为未充分被占用,就将所述页面中的所述一个页面的所述参考计数值设置为大于一的整数。4.根据权利要求3所述的系统,其中大于一的所述整数是二。5.根据权利要求4所述的系统,其中针对所述多个分组中的其分组数据被分配给所述页面中的所述一个页面的每个分组,所述缓冲器逻辑被配置为,如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为未充分被占用,则使所述页面中的所述一个页面的所述参考计数值递增一。6.根据权利要求5所述的系统,其中针对所述多个分组中的其分组数据被分配给所述页面中的所述一个页面的每个分组,所述缓冲器逻辑被配置为,如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为不再是未充分被占用,则避免使所述页面中的所述一个页面的所述参考计数值递增一。7.根据权利要求6所述的系统,其中所述缓冲器存储器存储用于所述页面中的每个页面的状态数据,其中所述页面中的每个页面的所述状态数据包括用于所述页面的分段中的每个分段的单独状态值。8.根据权利要求7所述的系统,其中用于分段中的每个分段的所述状态值包括如下组中的一项或多项,所述组包括:所使用数据计数值,指示所述分段的多少当前正存储有数据;分组起始值,指示所述分组中的一个分组的起始是否被存储在所述分段中;以及分组末尾值,指示所述分组中的一个分组的末尾是否被存储在所述分段中。9.根据权利要求8所述的系统,其中所述缓冲器逻辑被配置为生成用于所述页面中的一个或多个页面上所存储的所述分组中的每个分组的描述符,其中所述描述符包括页面指示符和分段指示符,所述页面指示符指示所述分组的起始被存储在所述页面中的哪个页面上,所述分段指示符指示所述分组的起始被存储在所指示的页面的分段中的哪个分段上。10.根据权利要求9所述的系统,其中针对所述分组中的每个分组,在将所述分组的末尾存储在所述页面中的页面的分段中的一个分段上之后,所述缓冲器逻辑保留所述页面的邻近后续分段中的一个或多个分段作为保留分段,所述保留分段仅能够在所述分组的数据的大小增加时存储来自所述分组的数据。11.根据权利要求10所述的系统,其中在确定所述页面中的所述一个页面是否未充分被占用时,所述缓冲器逻辑将所述保留分段考虑为被占用,以使得所述保留分段不是所述未占用的剩余部分的一部分。12.—种被存储在非瞬态计算机可读缓冲器存储器上的缓冲器逻辑单元,其中所述缓冲器逻辑被配置为:分配多个页面中的一个页面来存储多个分组中的第一分组的分组数据;以及如果所述页面中的所述一个页面被确定为未充分被所述第一分组的分组数据占用,则分配所述页面中的所述一个页面的未占用的剩余部分的至少一分部分来存储所述多个分组中的一个或多个另外分组的分组数据,以使得所述页面中的所述一个页面被分配给所述多个分组中的两个或更多分组,其中所述多个页面中的每个页面包括多个分段并且定义多个物理存储器单元的分离部分。13.根据权利要求12所述的缓冲器逻辑单元,其中所述页面中的每个页面包括多个分段,并且如果所述未占用的剩余部分包括所述页面中的所述一个页面的分段中的至少一个分段,则所述缓冲器存储器逻辑确定所述页面中的所述一个页面未充分被占用。14.根据权利要求13所述的缓冲器逻辑单元,其中所述缓冲器存储器包括用于所述页面中的每个页面的参考计数值,所述参考计数值指示所述多个分组中的多少分组使用所述页面,并且另外其中所述缓冲器逻辑被配置为,一旦所述页面中的所述一个页面已经被分配来存储所述第一分组的分组数据,如果所述页面中的所述一个页面在存储所述第一分组的分组数据之后被确定为未充分被占用,就将所述页面中的所述一个页面的所述参考计数值设置为大于一的整数。15.根据权利要求14所述的缓冲器逻辑单元,其中大于一的所述整数是二。16.根据权利要求15所述的缓冲器逻辑单元,其中针对所述多个分组中的其分组数据被分配给所述页面中的所述一个页面的每个分组,所述缓冲器逻辑被配置为,如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为未充分被占用,则使所述页面中的所述一个页面的所述参考计数值递增一。17.根据权利要求16所述的缓冲器逻辑单元,其中针对所述多个分组中的其分组数据被分配给所述页面中的所述一个页面的每个分组,所述缓冲器逻辑被配置为,如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为不再是未充分被占用,则避免使所述页面中的所述一个页面的所述参考计数值递增一。18.根据权利要求17所述的缓冲器逻辑单元,其中所述缓冲器存储器存储用于所述页面中的每个页面的状态数据,其中所述页面中的每个页面的所述状态数据包括用于所述页面的分段中的每个分段的单独状态值。19.根据权利要求18所述的缓冲器逻辑单元,其中用于分段中的每个分段的所述状态值包括如下组中的一项或多项,所述组包括:所使用数据计数值,指示所述分段的多少当前正存储有数据;分组起始值,指示所述分组中的一个分组的起始是否被存储在所述分段中;以及分组末尾值,指示所述分组中的一个分组的末尾是否被存储在所述分段中。20.根据权利要求19所述的缓冲器逻辑单元,其中所述缓冲器逻辑被配置为生成用于所述页面中的一个或多个页面上所存储的所述分组中的每个分组的描述符,其中所述描述符包括页面指示符和分段指示符,所述页面指示符指示所述分组的起始被存储在所述页面中的哪个页面上,所述分段指示符指示所述分组的起始被存储在所指示的页面的分段中的哪个分段上。21.根据权利要求20所述的缓冲器逻辑单元,其中针对所述分组中的每个分组,在将所述分组的末尾存储在所述页面中的页面的分段中的一个分段上之后,所述缓冲器逻辑保留所述页面的邻近后续分段中的一个或多个分段作为保留分段,所述保留分段仅能够在所述分组的数据的大小增加时存储来自所述分组的数据。22.根据权利要求21所述的缓冲器逻辑单元,其中在确定所述页面中的所述一个页面是否未充分被占用时,所述缓冲器逻辑将所述保留分段考虑为被占用,以使得所述保留分段不是所述未占用的剩余部分的一部分。23.—种优化分组处理系统内的分组存储器空间的方法,所述分组处理系统包括非瞬态计算机可读分组存储器,所述非瞬态计算机可读分组存储器包括多个物理存储器单元,所述多个物理存储器单元逻辑地被划分为多个页面,从而所述页面中的每个页面定义所述物理存储器单元的分离部分,所述方法包括: 利用缓冲器逻辑来分配所述页面中的一个页面以存储多个分组中的第一分组的分组数据,其中所述缓冲器逻辑至少部分地被存储在非瞬态计算机可读缓冲器存储器上; 利用所述缓冲器逻辑来确定所述页面中的所述一个页面是否未充分被所述第一分组的分组数据占用;以及 如果所述页面中的所述一个页面被所述缓冲器逻辑确定为未充分被所述第一分组的分组数据占用,则利用所述缓冲器逻辑来分配所述页面中的所述一个页面的未占用的剩余部分的至少一分部分以存储所述多个分组中的一个或多个另外分组的分组数据,以使得所述页面中的所述一个页面被分配给所述多个分组中的两个或更多分组。24.根据权利要求23所述的方法,其中所述页面中的每个页面包括多个分段,并且如果所述未占用的剩余部分包括所述页面中的所述一个页面的分段中的至少一个分段,则缓冲器存储器逻辑确定所述页面中的所述一个页面未充分被占用。25.根据权利要求24所述的方法,其中所述缓冲器存储器包括用于所述页面中的每个页面的参考计数值,所述参考计数值指示所述多个分组中的多少分组使用所述页面,所述方法进一步包括:一旦所述页面中的所述一个页面已经被分配来存储所述第一分组的分组数据,如果所述页面中的所述一个页面在存储所述第一分组的分组数据之后被确定为未充分被占用,则利用所述缓冲器逻辑将所述页面中的所述一个页面的所述参考计数值设置为大于一的整数。26.根据权利要求25所述的方法,其中大于一的所述整数是二。27.根据权利要求26所述的方法,进一步包括:针对所述多个分组中的其分组数据被分配给所述页面中的所述一个页面的每个分组,如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为未充分被占用,则利用所述缓冲器逻辑来使所述页面中的所述一个页面的所述参考计数值递增一。28.根据权利要求27所述的方法,进一步包括:针对所述多个分组中的其分组数据被分配给所述页面中的所述一个页面的每个分组,如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为不再是未充分被占用,则利用所述缓冲器逻辑来避免使所述页面中的所述一个页面的所述参考计数值递增一。29.根据权利要求28所述的方法,进一步包括:利用所述缓冲器逻辑将用于所述页面中的每个页面的状态数据存储在所述缓冲器存储器内,其中所述页面中的每个页面的所述状态数据包括用于所述页面的分段中的每个分段的单独状态值。30.根据权利要求29所述的方法,其中用于分段中的每个分段的所述状态值包括如下组中的一项或多项,所述组包括:所使用数据计数值,指示所述分段的多少当前正存储有数据;分组起始值,指示所述分组中的一个分组的起始是否被存储在所述分段中;以及分组末尾值,指示所述分组中的一个分组的末尾是否被存储在所述分段中。31.根据权利要求30所述的方法,进一步包括:利用所述缓冲器逻辑来生成用于所述页面中的一个或多个页面上所存储的所述分组中的每个分组的描述符,其中所述描述符包括页面指示符和分段指示符,所述页面指示符指示所述分组的起始被存储在所述页面中的哪个页面上,所述分段指示符指示所述分组的起始被存储在所指示的页面的分段中的哪个分段上。32.根据权利要求31所述的方法,进一步包括:针对所述分组中的每个分组,在将所述分组的末尾存储在所述页面中的页面的分段中的一个分段上之后,保留所述页面的邻近后续分段中的一个或多个分段作为保留分段,所述保留分段仅能够在所述分组的数据的大小增加时利用所述缓冲器逻辑来存储来自所述分组的数据。33.根据权利要求32所述的方法,进一步包括:在确定所述页面中的所述一个页面是否未充分被占用时,利用所述缓冲器逻辑来将所述保留分段考虑为被占用,以使得所述保留分段不是所述未占用的剩余部分的一部分。
【文档编号】G06F12/02GK106021121SQ201610188963
【公开日】2016年10月12日
【申请日】2016年3月29日
【发明人】E·穆索尔
【申请人】凯为公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1