CN106021121B - 用以优化分组缓冲器空间的分组处理系统、方法和设备 - Google Patents

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

Info

Publication number
CN106021121B
CN106021121B CN201610188963.8A CN201610188963A CN106021121B CN 106021121 B CN106021121 B CN 106021121B CN 201610188963 A CN201610188963 A CN 201610188963A CN 106021121 B CN106021121 B CN 106021121B
Authority
CN
China
Prior art keywords
packet
pages
page
packets
data
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
Application number
CN201610188963.8A
Other languages
English (en)
Other versions
CN106021121A (zh
Inventor
E·穆索尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kaiwei International Co
Marvell Asia Pte Ltd
Original Assignee
Marvell Asia Pte Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Marvell Asia Pte Ltd filed Critical Marvell Asia Pte Ltd
Priority to CN202111183014.8A priority Critical patent/CN113886282A/zh
Publication of CN106021121A publication Critical patent/CN106021121A/zh
Application granted granted Critical
Publication of CN106021121B publication Critical patent/CN106021121B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory
    • G06F5/12Means for monitoring the fill level; Means for resolving contention, i.e. conflicts between simultaneous enqueue and dequeue operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种分组处理设备的缓冲器逻辑单元,其被配置为如果页面上所存储的当前分组没有完全填满单个页面,则将单个的页面分配给两个或更多分组,以及存储并维持用于页面上所存储的分组数据中的每个分组数据的特定于页面分段的页面状态数据。

Description

用以优化分组缓冲器空间的分组处理系统、方法和设备
技术领域
本发明涉及一种分组处理系统。更特别地,本发明涉及优化分组处理系统中的分组缓冲器空间。
背景技术
分组处理设备(如交换机微芯片)经常需要在该设备处理分组时将它们缓冲到具有一个或多个库(bank)的分组存储器(PM)中。用以将分组存储在设备的分组存储器中的当前解决方案是向每个分组指配分组存储器的多个区块(chunk,称为页面),而不是单个大区块。利用这种方案,分组没有连续地被存储在分组存储器的库中,而是被分散在一个或多个页面中,该一个或多个页面一起形成页面的链表,该链表贯穿分组存储器的多个库进行映射。进一步地,多个这些库(和映射到它们的页面)能够逻辑地被归组到(库和相关联的页面的)池中。因此,特定分组在分组缓冲器中使用的所有页面的链表需要被维持在交换机中(在缓冲器管理器或BM中);这一链表在分组从分组缓冲器中被读取出以用于传输时被遍历。每个页面关联了状态,该状态包含与页面有关的一些信息。分组处理器设备中的所有页面的状态被维持在交换机中。分组关联了描述符或标记(token),该描述符或标记除了其他字段之外还包含指向第一页面的指针。利用这一起始指针,通过对利用不同页面状态的下一页面指针所构建的链表进行遍历,由分组所使用的所有页面能够按照它们被用来存储传入分组的相同顺序被取回。作为结果,特定分组使用的所有页面(并且因此,库)的链表被维持在交换机中,并且然后被遍历以从分组存储器定位和读取出分组来用于传输。
在这些基于页面的分组处理设备中,被浪费的分组存储器与缓冲器管理器上所施加的带宽需求之间存在折中。页面中的每个页面的大小越大,用以读取和写入分组数据所需要的访问就越少,并且因此缓冲器管理器的带宽上的压力越小。然而,页面的大小越大意味着分组存储器的更大的部分可能被浪费或者未使用,因为没有填满整个页面的分组将导致该页面的剩余部分未使用。另一方面,页面大小越小,平均被浪费或未使用的分组存储器就越少,但是归因于用以读取每个分组和将每个分组写入较小页面所要求的访问的数目上的增加,应用到缓冲器管理器的压力更大。
另外,在一些分组处理设备中,如果两个或更多分组的一部分具有分组数据的匹配(matching)部分(例如,头部部分或者主体部分),则这些分组能够共享存储有分组数据的匹配部分的一个页面或多个页面,从而匹配数据没有在不同的位置(例如,不同的页面)被存储两次。为了保持跟踪需要使用页面的分组的数目,缓冲器管理器维持用于页面中的每个页面的参考计数值,其指示共享该页面并且还没有从该页面读取出分组数据的页面的数目。例如,在设备确定更多分组需要使用页面时(例如,更多分组具有与该页面上所存储的数据的部分相匹配的部分),该设备能够使参考计数值递增以说明(account for)需要使用该页面的所添加分组。类似地,在数据从这些页面被读取以用于分组中的一个或多个分组时(从而该页面不再需要被使用用于这些分组),该设备能够使参考计数值递减以说明需要使用该页面的分组的较少数量。因此,当参考计数被减少到零时,该设备能够回收该页面用于与其他数据一起重新使用,因为不再有分组需要使用该页面上存储的数据。
发明内容
一种分组处理设备的缓冲器逻辑单元被配置为,如果页面上所存储的当前分组没有完全填满页面,则将单个的页面分配给两个或更多分组。作为结果,该缓冲器逻辑单元能够通过减少页面中的每个页面上的未使用空间的量,来减少被浪费的分组存储器空间的量。
第一方面针对一种在分组处理设备上的分组处理系统。该系统包括:包括多个物理存储器单元的非瞬态计算机可读分组存储器,该多个物理存储器单元逻辑地被划分为多个页面,从而页面中的每个页面定义物理存储器单元的分离部分;以及至少部分地被存储在非瞬态计算机可读缓冲器存储器上的缓冲器逻辑,其中该缓冲器逻辑被配置为:分配页面中的一个页面来存储多个分组中的第一分组的分组数据;以及如果页面中的该页面被确定为未充分被第一分组的分组数据占用,则分配页面中的该页面的未占用的剩余部分的至少一分部分来存储该多个分组中的一个或多个另外分组的分组数据,以使得页面中的该页面被分配给该多个分组中的两个或更多分组。在一些实施例中,页面中的每个页面包括多个分段,并且如果未占用的剩余部分包括页面中的该页面的分段中的至少一个分段,则缓冲器存储器逻辑确定页面中的该页面未充分被占用。在一些实施例中,缓冲器存储器包括用于页面中的每个页面的参考计数值,该参考计数值指示该多个分组中的多少分组使用该页面,并且另外其中缓冲器逻辑被配置为,一旦页面中的该页面已经被分配来存储第一分组的分组数据,如果页面中的该页面在存储第一分组的分组数据之后被确定为未充分被占用,就将页面中的该页面的参考计数值设置为大于一的整数。在一些实施例中,大于一的该整数是二。在一些实施例中,针对该多个分组中的其分组数据被分配给页面中的该页面的每个分组,缓冲器逻辑被配置为,如果页面中的该页面在存储该分组的分组数据之后被确定为未充分被占用,则使页面中的该页面的参考计数值递增一。在一些实施例中,针对该多个分组中的其分组数据被分配给页面中的该页面的每个分组,缓冲器逻辑被配置为,如果页面中的该页面在存储该分组的分组数据之后被确定为不再是未充分被占用,则避免使页面中的该页面的参考计数值递增一。在一些实施例中,缓冲器存储器存储用于页面中的每个页面的状态数据,其中页面中的每个页面的状态数据包括用于该页面的分段中的每个分段的单独状态值。在一些实施例中,用于分段中的每个分段的状态值包括如下组中的一项或多项,该组包括:所使用数据计数值,指示该分段的多少当前正存储有数据;分组起始值,指示分组中的一个分组的起始是否被存储在该分段中;以及分组末尾值,指示分组中的一个分组的末尾是否被存储在该分段中。在一些实施例中,缓冲器逻辑被配置为生成用于页面中的一个或多个页面上所存储的分组中的每个分组的描述符,其中描述符包括页面指示符和分段指示符,页面指示符指示该分组的起始被存储在页面中的哪个页面上,分段指示符指示该分组的起始被存储在所指示的页面的分段中的哪个分段上。在一些实施例中,针对分组中的每个分组,在将分组的末尾(例如,头部的末尾或者整个分组的末尾)存储在这些页面中的页面的分段中的一个分段上之后,缓冲器逻辑保留页面的邻近后续分段中的一个或多个分段作为保留分段,保留分段仅能够在该分组的数据的大小增加时存储来自该分组的数据。在一些实施例中,在确定页面中的该页面是否未充分被占用时,缓冲器逻辑将保留分段考虑为被占用,以使得保留分段不是未占用的剩余部分的一部分。
第二方面针对一种被存储在非瞬态计算机可读缓冲器存储器上的缓冲器逻辑单元,其中该缓冲器逻辑被配置为:分配多个页面中的一个页面来存储多个分组中的第一分组的分组数据;以及如果页面中的该页面被确定为未充分被第一分组的分组数据占用,则分配页面中的该页面的未占用的剩余部分的至少一分部分来存储该多个分组中的一个或多个另外分组的分组数据,以使得页面中的该页面被分配给该多个分组中的两个或更多分组,其中该多个页面中的每个页面包括多个分段并且定义多个物理存储器单元的分离部分。在一些实施例中,页面中的每个页面包括多个分段,并且如果未占用的剩余部分包括页面中的该页面的分段中的至少一个分段,则缓冲器存储器逻辑确定页面中的该页面未充分被占用。在一些实施例中,缓冲器存储器包括用于页面中的每个页面的参考计数值,该参考计数值指示该多个分组中的多少分组使用该页面,并且另外其中缓冲器逻辑被配置为,一旦页面中的该页面已经被分配来存储第一分组的分组数据,如果页面中的该页面在存储第一分组的分组数据之后被确定为未充分被占用,就将页面中的该页面的参考计数值设置为大于一的整数。在一些实施例中,大于一的该整数是二。在一些实施例中,针对该多个分组中的其分组数据被分配给页面中的该页面的每个分组,缓冲器逻辑被配置为,如果页面中的该页面在存储该分组的分组数据之后被确定为未充分被占用,则使页面中的该页面的参考计数值递增一。在一些实施例中,针对该多个分组中的其分组数据被分配给页面中的该页面的每个分组,缓冲器逻辑被配置为,如果页面中的该页面在存储该分组的分组数据之后被确定为不再是未充分被占用,则避免使页面中的该页面的参考计数值递增一。在一些实施例中,缓冲器存储器存储用于页面中的每个页面的状态数据,其中页面中的每个页面的状态数据包括用于该页面的分段中的每个分段的单独状态值。在一些实施例中,用于分段中的每个分段的状态值包括如下组中的一项或多项,该组包括:所使用数据计数值,指示该分段的多少当前正存储有数据;分组起始值,指示分组中的一个分组的起始是否被存储在该分段中;以及分组末尾值,指示分组中的一个分组的末尾是否被存储在该分段中。在一些实施例中,缓冲器逻辑被配置为生成用于页面中的一个或多个页面上所存储的分组中的每个分组的描述符,其中描述符包括页面指示符和分段指示符,页面指示符指示该分组的起始被存储在页面中的哪个页面上,分段指示符指示该分组的起始被存储在所指示的页面的分段中的哪个分段上。在一些实施例中,针对分组中的每个分组,在将分组的末尾存储在这些页面中的页面的分段中的一个分段上之后,缓冲器逻辑保留页面的邻近后续分段中的一个或多个分段作为保留分段,保留分段仅能够在该分组的数据的大小增加时存储来自该分组的数据。在一些实施例中,在确定页面中的该页面是否未充分被占用时,缓冲器逻辑将保留分段考虑为被占用,以使得保留分段不是未占用的剩余部分的一部分。
第三方面针对一种优化分组处理系统内的分组存储器空间的方法,该分组处理系统包括非瞬态计算机可读分组存储器,该非瞬态计算机可读分组存储器包括多个物理存储器单元,该多个物理存储器单元逻辑地被划分为多个页面,从而页面中的每个页面定义物理存储器单元的分离部分。该方法包括:利用缓冲器逻辑来分配页面中的一个页面以存储多个分组中的第一分组的分组数据,其中该缓冲器逻辑至少部分地被存储在非瞬态计算机可读缓冲器存储器上;利用缓冲器逻辑来确定页面中的该页面是否未充分被第一分组的分组数据占用;以及如果页面中的该页面被缓冲器逻辑确定为未充分被第一分组的分组数据占用,则利用缓冲器逻辑来分配页面中的该页面的未占用的剩余部分的至少一分部分以存储该多个分组中的一个或多个另外分组的分组数据,以使得页面中的该页面被分配给该多个分组中的两个或更多分组。在一些实施例中,页面中的每个页面包括多个分段,并且如果未占用的剩余部分包括页面中的该页面的分段中的至少一个分段,则缓冲器存储器逻辑确定页面中的该页面未充分被占用。在一些实施例中,缓冲器存储器包括用于页面中的每个页面的参考计数值,该参考计数值指示该多个分组中的多少分组使用该页面,并且该方法进一步包括:一旦页面中的该页面已经被分配来存储第一分组的分组数据,如果页面中的该页面在存储第一分组的分组数据之后被确定为未充分被占用,就将页面中的该页面的参考计数值设置为大于一的整数。在一些实施例中,大于一的该整数是二。在一些实施例中,该方法进一步包括:针对该多个分组中的其分组数据被分配给页面中的该页面的每个分组,如果页面中的该页面在存储该分组的分组数据之后被确定为未充分被占用,则利用缓冲器逻辑来使页面中的该页面的参考计数值递增一。在一些实施例中,该方法进一步包括:针对该多个分组中的其分组数据被分配给页面中的该页面的每个分组,如果页面中的该页面在存储该分组的分组数据之后被确定为不再是未充分被占用,则利用缓冲器逻辑来避免使页面中的该页面的参考计数值递增一。在一些实施例中,该方法进一步包括:利用缓冲器逻辑将用于页面中的每个页面的状态数据存储在缓冲器存储器内,其中页面中的每个页面的状态数据包括用于该页面的分段中的每个分段的单独状态值。在一些实施例中,用于分段中的每个分段的状态值包括如下组中的一项或多项,该组包括:所使用数据计数值,指示该分段的多少当前正存储有数据;分组起始值,指示分组中的一个分组的起始是否被存储在该分段中;以及分组末尾值,指示分组中的一个分组的末尾是否被存储在该分段中。在一些实施例中,该方法进一步包括:利用缓冲器逻辑来生成用于页面中的一个或多个页面上所存储的分组中的每个分组的描述符,其中描述符包括页面指示符和分段指示符,页面指示符指示该分组的起始被存储在页面中的哪个页面上,分段指示符指示该分组的起始被存储在所指示的页面的分段中的哪个分段上。在一些实施例中,该方法进一步包括:针对分组中的每个分组,在将分组的末尾存储在这些页面中的页面的分段中的一个分段上之后,利用缓冲器逻辑来保留页面的邻近后续分段中的一个或多个分段作为保留分段,保留分段仅能够在该分组的数据的大小增加时存储来自该分组的数据。在一些实施例中,该方法进一步包括:在确定页面中的该页面是否未充分被占用时,利用缓冲器逻辑来将保留分段考虑为被占用,以使得保留分段不是未占用的剩余部分的一部分。
附图说明
图1图示了根据一些实施例的分组处理设备上的分组处理系统。
图2图示了根据一些实施例的缓冲器管理器。
图3图示了根据一些实施例的示例性页面和页面状态数据。
图4图示了根据一些实施例的示例性页面描述符。
图5图示了根据一些实施例的用于两个所接收的分组的示例性页面状态数据和描述符值。
图6图示了根据一些实施例的优化分组处理系统的分组存储器空间的方法。
具体实施方式
在以下描述中,为了解释的目的阐述了许多细节。然而,本领域的技术人员将认识到,本发明能够无需使用这些具体细节而被实行。因此,本发明不意图为被限制于所示出的实施例,而是将符合于与本文所描述的原理和特征相一致的最宽范围。
实施例针对一种分组处理设备的缓冲器逻辑单元,其被配置为如果页面上存储的当前分组没有完全填满该页面,则将单个的页面分配给两个或更多分组。作为结果,该缓冲器逻辑单元能够通过减少页面中的每个页面上未使用空间的量,来减少被浪费的分组存储器空间的量。进一步地,该系统通过在每个分组之后自动地实施保留的分段(reservedslot)而提供了如下的优点:在处理期间负责(account for)分组数据扩充。此外,该系统提供了如下的优点:存储并更新特定于分段的页面状态数据以使得来自不同分组的分组数据能够在相同页面上被区分。最后,该系统提供了如下的优点:设置并更新用于每个页面的参考计数值以确保该页面在它能够完全被分配之前不被回收以免浪费未使用空间(例如,分段)。
图1图示了根据一些实施例的分组处理设备99上的分组处理系统100。如图1中所示出的,分组处理系统100包括分组存储器102、缓冲器存储器104、读取页面客户端108、以及写入页面客户端110,它们都经由网络可操作地耦合在一起。分组处理设备99能够是分组处理电路和/或微芯片。例如,设备99能够是用于数据中心的(例如,机架交换机的顶部的)交换机微芯片、或者其他类型的分组处理电路或专用集成电路。在一些实施例中,设备99是软件定义的网络可编程的微芯片,其能够被编程或者被定制为调整分组被处理的方式。替换地,设备99能够是本领域中已知的其他类型的分组处理设备。分组存储器102包括多个非瞬态计算机可读物理存储器单元,每个都具有一个或多个读取端口和一个或多个写入端口。当传入分组的分组数据被存储在分组存储器102上时,它被存储在一个或多个页面上,该一个或多个页面映射到分组存储器102的存储器单元中的一个或多个存储器单元。作为结果,当分组数据被存储在页面中而不是全部依次地被存储在分组存储器102中的相同位置时,该分组数据跨分组存储器的由该页面所映射到的多个物理存储器单元而被分布。在一些实施例中,分组存储器102包括内容可寻址存储器(CAM)。替换地,分组存储器102能够包括CAM、三态内容可寻址存储器(TCAM)、随机访问存储器(RAM)、静态随机接入存储器(SRAM)、本领域中已知的其他类型的存储器、或者它们的组合。
图2图示了根据一些实施例的缓冲器管理器104。如图2中所示出的,缓冲器管理器104包括缓冲器逻辑202、多个缓冲器存储器单元204、一个或多个页面状态表格206、具有一个或多个页面212的一个或多个页面缓冲器208、以及一个或多个页面计数器210。替换地,页面计数器210能够被省略。缓冲器逻辑202实施缓冲器管理器104的动作,包括向写入客户端110分配页面212以及从读取客户端108回收页面212,以及实施对状态表格206、页面缓冲器208和页面计数器210的对应管理/更新。缓冲器逻辑202能够包括被配置为执行本文所描述的缓冲器管理器104功能的硬件、软件、或者硬件和软件的组合,其中该软件被存储在设备99的非瞬态计算机可读介质(例如,缓冲器存储器)上。
页面缓冲器208中的每个页面缓冲器在页面212(或者它们的表示)未被分配时存储这些页面的子集。当由于写入页面客户端110进行请求,页面需要被分配用以存储传入分组的分组数据时,缓冲器管理器104经由缓冲器逻辑202从缓冲器208中的一个缓冲器选择页面212中的一个页面(因为它们是未被分配的页面212),将它从缓冲器208中移除并且将该页面212分配给写入页面客户端110,以用于存储该传入分组的分组数据的至少一部分。如图3A中所示出的,页面212中的每个页面包括多个分段302(例如,分段0-分段n),每个分段构成页面212的一部分。如果在将该传入分组的分组数据存储在页面212上之后,不是所有的分段302都已经至少部分地被填充,则缓冲器管理器104能够确定页面212不是充分地满。因此,缓冲器管理器104能够将页面212的剩余部分(包括页面212的未使用分段302中的一个或多个分段)分配给后续传入分组的分组数据,并且重复这一模式直到页面212被确定为充分填满。稍后,当需要读取该页面上所存储的一个或多个分组的分组数据的所有读取页面客户端108都指示页面212上所存储的数据不再被需要从而该页面准备好被回收时,缓冲器管理器104将页面212添加回到相同的页面缓冲器208中。因此,页面缓冲器208能够向缓冲器管理器104动态地指示每当需要页面时就能够被选择的所有的当前未被分配的页面(或者它们的部分)。以这种方式,当分组数据被缓冲器管理器104与写入和读取客户端108、110协作地进行输入、存储、处理、以及从设备99输出时,页面212能够连续地被分配和回收。
缓冲器存储器单元204每个都是具有一个或多个读取端口和一个或多个写入端口(未示出)的非瞬态计算机可读物理存储器。作为结果,缓冲器存储器单元204每个都能够在每个周期独立地使数据被写入到它们中和/或从它们中被读取出。页面状态表格206每个都被存储在缓冲器存储器单元204中的一个或多个缓冲器存储器单元上并且包括多个条目,该多个条目用于存储页面212中的每个页面在它们被分配给分组的分组数据时的页面状态数据304。如图3B中所示出的,用于页面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被读取以便回收。
下一页面标识符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中的不同的一个缓冲器成对。
在操作中,每次写入页面客户端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上。
另外,如果分组数据不是(自从页面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内的错误以及可能的分组数据丢失。
在一些实施例中,如果页面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使得分组数据能够扩充而不覆写任何后续分组数据。
对于分组中的每个分组,缓冲器管理器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中作为在需要时能够被重新分配的当前未使用的页面。
另外,应当注意,当一个或多个分组具有被存储在页面212上的一部分匹配分组数据时,页面212的参考计数值316也能够被递增。例如,这能够针对多播或广播分组而发生,其中替代将分组数据的匹配部分存储两次,参考计数值316能够被缓冲器管理器104增加以使得页面212不被回收,直到具有匹配数据和页面212上的任何其他数据的所有分组已经被处理并且不再需要该数据。进一步地,应当注意,当存储来自多个分组的分组数据的页面212的状态针对该多个分组的后续分组而被写入时,不需要部分地写入对于由该多个分组的先前分组的分组数据占用的先前分段而言的所使用数据计数308、分组起始指示符310、和/或分组末尾指示符312的值。这是因为表格206内的这一页面状态数据302的所有写入都由相同源(例如,写入页面客户端110)来执行,以使得后续写入能够包含先前写入中包括用于新分组数据的任何附加内容而被写入的相同值。因此,系统100不要求对存储相关联的状态表格206的缓冲器存储器单元204的端口的多种访问(读取-修改-写入)类型,而是单个写入访问。换句话说,系统100不要求对状态表格的额外读取。
图5图示了根据一些实施例的用于两个所接收的分组的示例性页面状态数据和描述符值。如图5中所示出的,分组A首先被接收并且存储在页面P的第一分段0中,并且接下来的两个分段302是用于可能的分组数据增长的保留分段。作为结果,用于分组A的描述符具有指向页面P的页面标识符404、以及指向存储有分组A的分组数据的开端的分段0的页面分段值。进一步地,在页面P的状态数据304内,分段0的所使用数据计数被设置为60字节,并且分段1和2被设置为0字节以反映分段0、1和2的多少被分组A填充,并且分段0的分组起始指示符和分组末尾指示符两者都被设置为1以指示分组A开始和结束于页面P的分段0中。然后,因为分段3未被分组A使用,所以缓冲器管理器104能够确定页面P未充分被填满并且将参考计数值316设置为大于一的整数(例如,二)以反映对于将被存储在页面P上的进一步分组数据的需求。然后,当分组B请求页面212时,缓冲器管理器104能够通过将页面P的未使用的分段3分配给分组B来开始。作为结果,用于分组B的描述符具有指向页面P的页面标识符404、以及指向存储有分组B的分组数据的开端的分段3的页面分段值。进一步地,在页面P的状态数据304内,分段3的所使用数据计数被设置为64字节以反映分段3的多少被分组B填充,并且分段3的分组起始指示符被设置为1以指示分组B开始于页面P的分段3中。页面P然后能够被确定为充分被填满,从而缓冲器管理器104不把用于页面P的参考计数值316递增(因为没有更多的分组数据能够被存储在页面P上)。此外,因为分组B的更多分组数据仍然需要被存储,所以缓冲器管理器104能够分配新的页面Q以存储分组B的更多数据,并且同时设置页面P的下一页面标识符306以将页面Q识别为所选择的下一页面212。然后,类似于在页面P中,分组B的分组数据的剩余部分被存储在页面Q中,相关联的页面状态数据304被添加到相关联的状态表格206内的页面Q条目,并且参考计数值316仅被递增到1以反映页面Q(包括保留分段)被分组B的剩余分组数据充分填满。因此,系统100能够既利用保留分段来负责分组数据扩充,并且又将单个的页面分配给来自多个不同分组的不同/非匹配的分组数据。
图6图示了根据一些实施例的优化分组处理系统100内的分组存储器空间的方法。如图6中所示出的,在步骤602处,缓冲器管理器104(经由缓冲器逻辑202)分配页面212中的一个页面来存储第一分组的分组数据。在步骤604处,缓冲器管理器104确定页面212中的该页面是否未充分被第一分组的分组数据占用。在一些实施例中,如果未占用的剩余部分包括页面212中的该页面的分段302中的至少一个分段,则缓冲器管理器104确定页面212中的该页面未充分被占用。在步骤606处,如果页面212被缓冲器管理器104确定为未充分被分组数据占用,则缓冲器管理器104分配页面212的未占用的剩余部分(例如,分段302)的至少一部分来存储一个或多个另外分组的分组数据。因此,该方法提供了如下的优点:使得单个页面能够被分配给多个不同分组的不同分组数据。
在一些实施例中,该方法进一步包括:一旦页面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不是未占用的剩余部分的一部分。替换地,在一些实施例中,上述步骤中的一个或多个步骤能够被省略。
本文所描述的分组处理系统具有许多优点。特别地,该系统提供了如下的优点:通过将单个的页面分配给来自多个不同分组的不同/非匹配的分组数据,由此不浪费每个页面的未使用部分,来优化分组存储器空间。进一步地,该系统提供了如下的优点:通过在每个分组之后自动地实施保留分段,来负责在处理期间的分组数据扩充。此外,该系统提供了如下的优点:存储并更新特定于分段的页面状态数据,从而来自不同分组的分组数据能够在相同页面上被区分。最后,该系统提供了如下的优点:设置并更新用于每个页面的参考计数值,以确保该页面在它能够完全被分配之前不被回收以便不浪费未使用的空间(例如,分段)。
虽然已经参考许多具体细节描述了本发明,但是本领域的技术人员将认识到,不偏离本发明的精神,本发明能够以其他的具体形式来具体化。例如,尽管本文所描述的不同方法和操作描述了特定顺序的步骤,但是也设想到其他顺序、以及省略步骤中的一个或多个步骤和/或添加一个或多个新的步骤。此外,尽管上述方法和操作在本文中分离地被描述,但是方法和操作中的一个或多个方法和操作能够(以整体或部分地)被组合。因此,本领域的技术人员将理解,本发明将不被前述说明性的细节所限制,而是将由所附权利要求来限定。

Claims (30)

1.一种在分组处理设备上的分组处理系统,所述系统包括:
包括多个物理存储器单元的非瞬态计算机可读分组存储器,所述多个物理存储器单元逻辑地被划分为多个页面,从而所述页面中的每个页面定义所述物理存储器单元的分离部分;以及
至少部分地被存储在非瞬态计算机可读缓冲器存储器上的缓冲器逻辑,其中所述缓冲器逻辑被配置为:
分配所述页面中的一个页面来存储多个分组中的分组的分组数据,其中所述缓冲器存储器包括用于所述页面中的每个页面的参考计数值,所述参考计数值指示所述页面是否在使用中;
如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为未充分被占用,并且所述分组是向所述页面中的所述一个页面当前分配的所述分组中的仅有的一个分组,则以第一数量调整所述页面中的所述一个页面的参考计数值;
如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为未充分被占用,并且所述分组不是向所述页面中的所述一个页面当前分配的所述分组中的仅有的一个分组,则以第二数量调整所述页面中的所述一个页面的参考计数值,其中所述第一数量是大于1的整数,并且所述第一数量大于所述第二数量;以及
如果所述页面中的所述一个页面被确定为未充分被所述分组的分组数据占用,则分配所述页面中的所述一个页面的未占用的剩余部分的至少一分部分来存储所述多个分组中的一个或多个另外分组的分组数据,以使得所述页面中的所述一个页面被分配给所述多个分组中的两个或更多分组。
2.根据权利要求1所述的系统,其中所述页面中的每个页面包括多个分段,并且如果所述未占用的剩余部分包括所述页面中的所述一个页面的分段中的至少一个分段,则缓冲器存储器逻辑确定所述页面中的所述一个页面未充分被占用。
3.根据权利要求1所述的系统,其中所述第一数量是二。
4.根据权利要求3所述的系统,其中针对所述多个分组中的其分组数据被分配给所述页面中的所述一个页面的每个分组,所述缓冲器逻辑被配置为,如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为未充分被占用,则使所述页面中的所述一个页面的所述参考计数值递增一。
5.根据权利要求4所述的系统,其中针对所述多个分组中的其分组数据被分配给所述页面中的所述一个页面的每个分组,所述缓冲器逻辑被配置为,如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为不再是未充分被占用,则避免使所述页面中的所述一个页面的所述参考计数值递增一。
6.根据权利要求5所述的系统,其中所述缓冲器存储器存储用于所述页面中的每个页面的状态数据,其中所述页面中的每个页面的所述状态数据包括用于所述页面的分段中的每个分段的单独状态值。
7.根据权利要求6所述的系统,其中用于分段中的每个分段的所述状态值包括如下组中的一项或多项,所述组包括:所使用数据计数值,指示所述分段的多少当前正存储有数据;分组起始值,指示所述分组中的一个分组的起始是否被存储在所述分段中;以及分组末尾值,指示所述分组中的一个分组的末尾是否被存储在所述分段中。
8.根据权利要求7所述的系统,其中所述缓冲器逻辑被配置为生成用于所述页面中的一个或多个页面上所存储的所述分组中的每个分组的描述符,其中所述描述符包括页面指示符和分段指示符,所述页面指示符指示所述分组的起始被存储在所述页面中的哪个页面上,所述分段指示符指示所述分组的起始被存储在所指示的页面的分段中的哪个分段上。
9.根据权利要求1所述的系统,其中针对所述分组中的每个分组,在将所述分组的末尾存储在所述页面中的页面的分段中的一个分段上之后,所述缓冲器逻辑保留所述页面的邻近后续分段中的一个或多个分段作为保留分段,所述保留分段仅能够在所述分组的数据的大小增加时存储来自所述分组的数据。
10.根据权利要求9所述的系统,其中在确定所述页面中的所述一个页面是否未充分被占用时,所述缓冲器逻辑将所述保留分段考虑为被占用,以使得所述保留分段不是所述未占用的剩余部分的一部分。
11.一种非瞬态计算机可读缓冲器存储器,具有存储在其上的缓冲器逻辑单元,其中所述缓冲器逻辑被配置为:
分配多个页面中的一个页面来存储多个分组中的分组的分组数据,其中所述缓冲器存储器包括用于所述页面中的每个页面的参考计数值,所述参考计数值指示所述页面是否在使用中;
如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为未充分被占用,并且所述分组是向所述页面中的所述一个页面当前分配的所述分组中的仅有的一个分组,则以第一数量调整所述页面中的所述一个页面的参考计数值;
如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为未充分被占用,并且所述分组不是向所述页面中的所述一个页面当前分配的所述分组中的仅有的一个分组,则以第二数量调整所述页面中的所述一个页面的参考计数值,其中所述第一数量是大于1的整数,并且所述第一数量大于所述第二数量;以及
如果所述页面中的所述一个页面被确定为未充分被所述分组的分组数据占用,则分配所述页面中的所述一个页面的未占用的剩余部分的至少一分部分来存储所述多个分组中的一个或多个另外分组的分组数据,以使得所述页面中的所述一个页面被分配给所述多个分组中的两个或更多分组,其中所述多个页面中的每个页面包括多个分段并且定义多个物理存储器单元的分离部分。
12.根据权利要求11所述的非瞬态计算机可读缓冲器存储器,其中所述页面中的每个页面包括多个分段,并且如果所述未占用的剩余部分包括所述页面中的所述一个页面的分段中的至少一个分段,则所述缓冲器存储器逻辑确定所述页面中的所述一个页面未充分被占用。
13.根据权利要求11所述的非瞬态计算机可读缓冲器存储器,其中所述第一数量是二。
14.根据权利要求13所述的非瞬态计算机可读缓冲器存储器,其中针对所述多个分组中的其分组数据被分配给所述页面中的所述一个页面的每个分组,所述缓冲器逻辑被配置为,如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为未充分被占用,则使所述页面中的所述一个页面的所述参考计数值递增一。
15.根据权利要求14所述的非瞬态计算机可读缓冲器存储器,其中针对所述多个分组中的其分组数据被分配给所述页面中的所述一个页面的每个分组,所述缓冲器逻辑被配置为,如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为不再是未充分被占用,则避免使所述页面中的所述一个页面的所述参考计数值递增一。
16.根据权利要求15所述的非瞬态计算机可读缓冲器存储器,其中所述缓冲器存储器存储用于所述页面中的每个页面的状态数据,其中所述页面中的每个页面的所述状态数据包括用于所述页面的分段中的每个分段的单独状态值。
17.根据权利要求16所述的非瞬态计算机可读缓冲器存储器,其中用于分段中的每个分段的所述状态值包括如下组中的一项或多项,所述组包括:所使用数据计数值,指示所述分段的多少当前正存储有数据;分组起始值,指示所述分组中的一个分组的起始是否被存储在所述分段中;以及分组末尾值,指示所述分组中的一个分组的末尾是否被存储在所述分段中。
18.根据权利要求17所述的非瞬态计算机可读缓冲器存储器,其中所述缓冲器逻辑被配置为生成用于所述页面中的一个或多个页面上所存储的所述分组中的每个分组的描述符,其中所述描述符包括页面指示符和分段指示符,所述页面指示符指示所述分组的起始被存储在所述页面中的哪个页面上,所述分段指示符指示所述分组的起始被存储在所指示的页面的分段中的哪个分段上。
19.根据权利要求11所述的非瞬态计算机可读缓冲器存储器,其中针对所述分组中的每个分组,在将所述分组的末尾存储在所述页面中的页面的分段中的一个分段上之后,所述缓冲器逻辑保留所述页面的邻近后续分段中的一个或多个分段作为保留分段,所述保留分段仅能够在所述分组的数据的大小增加时存储来自所述分组的数据。
20.根据权利要求19所述的非瞬态计算机可读缓冲器存储器,其中在确定所述页面中的所述一个页面是否未充分被占用时,所述缓冲器逻辑将所述保留分段考虑为被占用,以使得所述保留分段不是所述未占用的剩余部分的一部分。
21.一种优化分组处理系统内的分组存储器空间的方法,所述分组处理系统包括非瞬态计算机可读分组存储器,所述非瞬态计算机可读分组存储器包括多个物理存储器单元,所述多个物理存储器单元逻辑地被划分为多个页面,从而所述页面中的每个页面定义所述物理存储器单元的分离部分,所述方法包括:
利用缓冲器逻辑来分配所述页面中的一个页面以存储多个分组中的分组的分组数据,其中所述缓冲器逻辑至少部分地被存储在非瞬态计算机可读缓冲器存储器上;
利用所述缓冲器逻辑来确定所述页面中的所述一个页面是否未充分被所述分组的分组数据占用,其中所述缓冲器存储器包括用于所述页面中的每个页面的参考计数值,所述参考计数值指示所述页面是否在使用中;
如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为未充分被占用,并且所述分组是向所述页面中的所述一个页面当前分配的所述分组中的仅有的一个分组,则以第一数量调整所述页面中的所述一个页面的参考计数值;
如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为未充分被占用,并且所述分组不是向所述页面中的所述一个页面当前分配的所述分组中的仅有的一个分组,则以第二数量调整所述页面中的所述一个页面的参考计数值,其中所述第一数量是大于1的整数,并且所述第一数量大于所述第二数量;以及
如果所述页面中的所述一个页面被所述缓冲器逻辑确定为未充分被所述分组的分组数据占用,则利用所述缓冲器逻辑来分配所述页面中的所述一个页面的未占用的剩余部分的至少一分部分以存储所述多个分组中的一个或多个另外分组的分组数据,以使得所述页面中的所述一个页面被分配给所述多个分组中的两个或更多分组。
22.根据权利要求21所述的方法,其中所述页面中的每个页面包括多个分段,并且如果所述未占用的剩余部分包括所述页面中的所述一个页面的分段中的至少一个分段,则缓冲器存储器逻辑确定所述页面中的所述一个页面未充分被占用。
23.根据权利要求21所述的方法,其中所述第一数量是二。
24.根据权利要求23所述的方法,进一步包括:针对所述多个分组中的其分组数据被分配给所述页面中的所述一个页面的每个分组,如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为未充分被占用,则利用所述缓冲器逻辑来使所述页面中的所述一个页面的所述参考计数值递增一。
25.根据权利要求24所述的方法,进一步包括:针对所述多个分组中的其分组数据被分配给所述页面中的所述一个页面的每个分组,如果所述页面中的所述一个页面在存储所述分组的分组数据之后被确定为不再是未充分被占用,则利用所述缓冲器逻辑来避免使所述页面中的所述一个页面的所述参考计数值递增一。
26.根据权利要求25所述的方法,进一步包括:利用所述缓冲器逻辑将用于所述页面中的每个页面的状态数据存储在所述缓冲器存储器内,其中所述页面中的每个页面的所述状态数据包括用于所述页面的分段中的每个分段的单独状态值。
27.根据权利要求26所述的方法,其中用于分段中的每个分段的所述状态值包括如下组中的一项或多项,所述组包括:所使用数据计数值,指示所述分段的多少当前正存储有数据;分组起始值,指示所述分组中的一个分组的起始是否被存储在所述分段中;以及分组末尾值,指示所述分组中的一个分组的末尾是否被存储在所述分段中。
28.根据权利要求27所述的方法,进一步包括:利用所述缓冲器逻辑来生成用于所述页面中的一个或多个页面上所存储的所述分组中的每个分组的描述符,其中所述描述符包括页面指示符和分段指示符,所述页面指示符指示所述分组的起始被存储在所述页面中的哪个页面上,所述分段指示符指示所述分组的起始被存储在所指示的页面的分段中的哪个分段上。
29.根据权利要求21所述的方法,进一步包括:针对所述分组中的每个分组,在将所述分组的末尾存储在所述页面中的页面的分段中的一个分段上之后,保留所述页面的邻近后续分段中的一个或多个分段作为保留分段,所述保留分段仅能够在所述分组的数据的大小增加时利用所述缓冲器逻辑来存储来自所述分组的数据。
30.根据权利要求29所述的方法,进一步包括:在确定所述页面中的所述一个页面是否未充分被占用时,利用所述缓冲器逻辑来将所述保留分段考虑为被占用,以使得所述保留分段不是所述未占用的剩余部分的一部分。
CN201610188963.8A 2015-03-30 2016-03-29 用以优化分组缓冲器空间的分组处理系统、方法和设备 Active CN106021121B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111183014.8A CN113886282A (zh) 2015-03-30 2016-03-29 用以优化分组缓冲器空间的分组处理系统、方法和设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/673,813 2015-03-30
US14/673,813 US9747226B2 (en) 2015-03-30 2015-03-30 Packet processing system, method and device to optimize packet buffer space

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202111183014.8A Division CN113886282A (zh) 2015-03-30 2016-03-29 用以优化分组缓冲器空间的分组处理系统、方法和设备

Publications (2)

Publication Number Publication Date
CN106021121A CN106021121A (zh) 2016-10-12
CN106021121B true CN106021121B (zh) 2021-10-22

Family

ID=57017226

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202111183014.8A Pending CN113886282A (zh) 2015-03-30 2016-03-29 用以优化分组缓冲器空间的分组处理系统、方法和设备
CN201610188963.8A Active CN106021121B (zh) 2015-03-30 2016-03-29 用以优化分组缓冲器空间的分组处理系统、方法和设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202111183014.8A Pending CN113886282A (zh) 2015-03-30 2016-03-29 用以优化分组缓冲器空间的分组处理系统、方法和设备

Country Status (3)

Country Link
US (1) US9747226B2 (zh)
CN (2) CN113886282A (zh)
TW (1) TW201706849A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106681937A (zh) * 2016-12-12 2017-05-17 中国航空工业集团公司西安航空计算技术研究所 一种流命令格式的显示列表管理方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040236897A1 (en) * 2003-05-19 2004-11-25 Chi-Chih Cheng System and method for optimized access to memory devices requiring block writing
CN1795437A (zh) * 2002-10-28 2006-06-28 桑迪士克股份有限公司 用于块内页面分组的方法及设备
US20100259536A1 (en) * 2009-04-08 2010-10-14 Nvidia Corporation System and method for deadlock-free pipelining
CN103064796A (zh) * 2011-10-18 2013-04-24 财团法人工业技术研究院 虚拟机内存的共享方法与计算机系统
CN103177772A (zh) * 2011-12-20 2013-06-26 绿智慧流科技公司 闪存测试方法
CN103268267A (zh) * 2013-05-24 2013-08-28 北京航天自动控制研究所 一种基于块的nandflash坏区动态标记处理方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930525A (en) * 1997-04-30 1999-07-27 Adaptec, Inc. Method and apparatus for network interface fetching initial and data burst blocks and segmenting blocks and scheduling blocks compatible for transmission over multiple virtual circuits
EP1158525A1 (en) * 2000-05-18 2001-11-28 STMicroelectronics S.r.l. Voice message managing method, in particular for voice data recording/playing/editing electronic devices
US6636879B1 (en) * 2000-08-18 2003-10-21 Network Appliance, Inc. Space allocation in a write anywhere file system
US6782462B2 (en) * 2002-02-25 2004-08-24 International Business Machines Corporation System and method for tracking memory leaks
US7685436B2 (en) 2003-10-02 2010-03-23 Itt Manufacturing Enterprises, Inc. System and method for a secure I/O interface
US7685396B2 (en) * 2007-03-05 2010-03-23 Research In Motion Limited System and method for dynamic memory allocation
US7797489B1 (en) * 2007-06-01 2010-09-14 Netapp, Inc. System and method for providing space availability notification in a distributed striped volume set
US8054744B1 (en) 2007-10-25 2011-11-08 Marvell International Ltd. Methods and apparatus for flow classification and flow measurement
US8711860B2 (en) 2011-12-22 2014-04-29 Telefonaktiebolaget L M Ericsson (Publ) Controller for flexible and extensible flow processing in software-defined networks
US20140153443A1 (en) 2012-11-30 2014-06-05 International Business Machines Corporation Per-Address Spanning Tree Networks
KR101607773B1 (ko) * 2014-10-27 2016-04-11 삼성에스디에스 주식회사 데이터 송신 장치 및 이를 이용하는 데이터 통신 방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1795437A (zh) * 2002-10-28 2006-06-28 桑迪士克股份有限公司 用于块内页面分组的方法及设备
US20040236897A1 (en) * 2003-05-19 2004-11-25 Chi-Chih Cheng System and method for optimized access to memory devices requiring block writing
US20100259536A1 (en) * 2009-04-08 2010-10-14 Nvidia Corporation System and method for deadlock-free pipelining
CN103064796A (zh) * 2011-10-18 2013-04-24 财团法人工业技术研究院 虚拟机内存的共享方法与计算机系统
CN103177772A (zh) * 2011-12-20 2013-06-26 绿智慧流科技公司 闪存测试方法
CN103268267A (zh) * 2013-05-24 2013-08-28 北京航天自动控制研究所 一种基于块的nandflash坏区动态标记处理方法

Also Published As

Publication number Publication date
CN106021121A (zh) 2016-10-12
TW201706849A (zh) 2017-02-16
US9747226B2 (en) 2017-08-29
US20160292096A1 (en) 2016-10-06
CN113886282A (zh) 2022-01-04

Similar Documents

Publication Publication Date Title
US6757802B2 (en) Method for memory heap and buddy system management for service aware networks
US11652760B2 (en) Packet processing system, method and device having reduced static power consumption
CN107066498B (zh) 键值kv存储方法和装置
JP2019185596A (ja) メモリシステムおよび制御方法
KR100528967B1 (ko) 가변 길이의 패킷 저장을 위한 메모리 관리 장치 및 방법
US9086950B2 (en) Method for heap management
US20020016883A1 (en) Method and apparatus for allocating and de-allocating consecutive blocks of memory in background memory management
CN108845877B (zh) 管理内存的方法、装置和系统
CN114710467B (zh) Ip地址存储方法、装置和硬件网关
CN103389945B (zh) 一种内存管理的方法及装置
CN108399175A (zh) 一种数据存储、查询方法及其装置
US20130061009A1 (en) High Performance Free Buffer Allocation and Deallocation
CN117033002B (zh) 一种内存管理方法、装置、设备及存储介质
CN106294191B (zh) 处理表的方法、访问表的方法和装置
US10061513B2 (en) Packet processing system, method and device utilizing memory sharing
CN106021121B (zh) 用以优化分组缓冲器空间的分组处理系统、方法和设备
US8407444B2 (en) Hardware off-load garbage collection acceleration for languages with finalizers
CN109726144B (zh) 一种数据报文的处理方法和装置
CN115794417A (zh) 内存管理方法及装置
US20060153185A1 (en) Method and apparatus for dynamically changing ring size in network processing
US11003578B2 (en) Method and system for parallel mark processing
US9438539B1 (en) Apparatus and method for optimizing the number of accesses to page-reference count storage in page link list based switches
US9612950B2 (en) Control path subsystem, method and device utilizing memory sharing
WO2016069036A1 (en) Dynamically updating metadata
US20160291895A1 (en) Packet processing system, method and device utilizing memory sharing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1230303

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: California, USA

Applicant after: Cavium, Inc.

Address before: California

Applicant before: Cavium, Inc.

CB02 Change of applicant information
TA01 Transfer of patent application right

Effective date of registration: 20200426

Address after: Singapore City

Applicant after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Applicant before: Kaiwei international Co.

Effective date of registration: 20200426

Address after: Ford street, Grand Cayman, Cayman Islands

Applicant after: Kaiwei international Co.

Address before: California, USA

Applicant before: Cavium, Inc.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant