Buffer manager and methods for managing memory
First Claim
Patent Images
1. A method comprising:
- managing a first internal buffer pointer pool and a second internal buffer pointer pool of a system-on-chip (SOC); and
if a number of available buffer addresses in the first internal buffer pointer pool falls below a first low threshold value, obtaining one or more buffer addresses from a first external buffer pointer pool of a memory, which is external to the SOC, to the first internal buffer pointer pool;
if a number of available buffer addresses in the second internal buffer pointer pool falls below a second low threshold value, obtaining another one or more buffer addresses from a second external buffer pointer pool of the memory to the second internal buffer pointer pool;
associating the first internal buffer pointer pool with a first traffic flow such that available buffer addresses from the first internal buffer pointer pool are assigned to data packets of the first traffic flow, wherein the first traffic flow originates from a first client component; and
associating the second internal buffer pointer pool with a second traffic flow such that available buffer addresses from the second internal buffer pointer pool are assigned to data packets of the second traffic flow, wherein the second traffic flow originates from a second client component,wherein obtaining the one or more buffer addresses from the first external buffer pointer pool to the first internal buffer pointer pool further comprises;
receiving an allocation request for a buffer location from the first client component,in response to receiving the allocation request, assigning a first buffer address from the first internal buffer pointer pool to the first client component by assigning a first buffer pointer from the first internal buffer pointer pool to the first client component, wherein the first buffer pointer includes the first buffer address,in response to assigning the first buffer address to the first client component, marking the first buffer address as an unavailable buffer address in the first internal buffer pointer pool,in response to marking the first buffer address as an unavailable buffer address, if the number of available buffer addresses in the first internal buffer pointer pool falls below the low threshold value, obtaining the one or more buffer addresses from the first external buffer pointer pool to the first internal buffer pointer pool,wherein the method further comprises buffering, by the first client component, a data packet received by the first client component to a buffer location corresponding to the first buffer address, based at least in part on assigning the first buffer address to the first client component.
17 Assignments
0 Petitions
Accused Products
Abstract
Some of the embodiments of the present disclosure provide a method comprising managing a plurality of buffer addresses in a system-on-chip (SOC); and if a number of available buffer addresses in the SOC falls below a low threshold value, obtaining one or more buffer addresses from a memory, which is external to the SOC, to the SOC. Other embodiments are also described and claimed.
10 Citations
11 Claims
-
1. A method comprising:
-
managing a first internal buffer pointer pool and a second internal buffer pointer pool of a system-on-chip (SOC); and if a number of available buffer addresses in the first internal buffer pointer pool falls below a first low threshold value, obtaining one or more buffer addresses from a first external buffer pointer pool of a memory, which is external to the SOC, to the first internal buffer pointer pool; if a number of available buffer addresses in the second internal buffer pointer pool falls below a second low threshold value, obtaining another one or more buffer addresses from a second external buffer pointer pool of the memory to the second internal buffer pointer pool; associating the first internal buffer pointer pool with a first traffic flow such that available buffer addresses from the first internal buffer pointer pool are assigned to data packets of the first traffic flow, wherein the first traffic flow originates from a first client component; and associating the second internal buffer pointer pool with a second traffic flow such that available buffer addresses from the second internal buffer pointer pool are assigned to data packets of the second traffic flow, wherein the second traffic flow originates from a second client component, wherein obtaining the one or more buffer addresses from the first external buffer pointer pool to the first internal buffer pointer pool further comprises; receiving an allocation request for a buffer location from the first client component, in response to receiving the allocation request, assigning a first buffer address from the first internal buffer pointer pool to the first client component by assigning a first buffer pointer from the first internal buffer pointer pool to the first client component, wherein the first buffer pointer includes the first buffer address, in response to assigning the first buffer address to the first client component, marking the first buffer address as an unavailable buffer address in the first internal buffer pointer pool, in response to marking the first buffer address as an unavailable buffer address, if the number of available buffer addresses in the first internal buffer pointer pool falls below the low threshold value, obtaining the one or more buffer addresses from the first external buffer pointer pool to the first internal buffer pointer pool, wherein the method further comprises buffering, by the first client component, a data packet received by the first client component to a buffer location corresponding to the first buffer address, based at least in part on assigning the first buffer address to the first client component. - View Dependent Claims (2, 3, 5, 6, 11)
-
-
4. A method comprising:
-
managing a plurality of buffer addresses in a first internal buffer pointer pool of a system-on-chip (SOC); if a number of available buffer addresses in the first internal buffer pointer pool falls below a low threshold value, obtaining one or more buffer addresses from an external buffer pointer pool of memory, which is external to the SOC, to the first internal buffer pointer pool; receiving an allocation request for a buffer location from a client component to buffer a data packet received by the client component; selecting, in response to the allocation request, one of the first internal buffer pointer pool and a second internal buffer pointer pool for allocating a buffer address to the client component, based at least in part on (i) a size of the data packet, (ii) a size of a buffer location associated with the first internal buffer pointer pool, and (iii) a size of a buffer location associated with the second internal buffer pointer pool; and assigning a buffer address, associated with the selected internal buffer pointer pool, to the client component by assigning a corresponding buffer pointer to the client component.
-
-
7. A system-on-chip (SOC) comprising:
-
a client component; and a buffer management unit (BMU) comprising; a first internal buffer pointer pool (IBPP); a second IBPP; and a controller configured to; monitor (i) a number of unassigned buffer pointers in the first IBPP and (ii) a number of unassigned buffer pointers in the second IBPP, if the number of unassigned buffer pointers in the first IBPP falls below a first threshold value, allocate a first one or more buffer pointers from a first external buffer pointer pool (EBPP) to the first IBPP, wherein each of the first one or more buffer pointers in the first IBPP points to corresponding buffer locations of a memory that is external to the SOC, if the number of unassigned buffer pointers in the second IBPP falls below a second threshold value, allocate a second one or more buffer pointers from a second EBPP to the second IBPP, and if the number of unassigned buffer pointers in the first IBPP exceeds a high threshold value, allocate a third one or more buffer pointers from the first IBPP to the first EBPP. - View Dependent Claims (8, 9, 10)
-
Specification