Buffer manager and methods for managing memory
First Claim
Patent Images
1. A system comprising:
- a network interface configured to receive data from a computer network;
a memory including a plurality of buffer locations, each buffer location of the plurality of buffer locations being identified by both a respective physical address and a respective virtual address, the virtual address of each buffer location being different from but corresponding to the respective physical address, each buffer location of the plurality of buffer locations being configured to store both (i) a respective buffered data from data received over the network interface and (ii) the respective virtual address that is used to identify the respective buffer location;
a processor unit configured to access buffered data stored in a respective buffer location using the respective virtual address that is used to identify the buffer location;
one or more client components, that are different from the processor unit, configured to access the buffered data stored in the respective buffer location using the respective physical address that is used to identify the buffer location, instead of using the respective virtual address that is used to identify the buffer location;
a buffer management unit comprising;
a first internal buffer pointer pool;
a second internal buffer pointer pool; and
a controller configured to;
monitor a number of unassigned buffer pointers in the internal buffer pointer pool,in response to the number of unassigned buffer pointers in the internal buffer pointer pool falling below a low threshold value, allocate a first one or more buffer pointers from a first external buffer pointer pool to the first internal buffer pointer pool, ones of the first one or more buffer pointers pointing to a corresponding buffer location of the plurality of buffer locations,monitor a number of unassigned buffer pointers in the second internal buffer pointer pool, andin response to the number of unassigned buffer pointers in the second internal buffer pointer pool falling below another low threshold value, allocate a second one or more buffer pointers from a second external buffer pointer pool to the second internal buffer pointer pool, ones of the second one or more buffer pointers pointing to a corresponding buffer location of the plurality of buffer locations.
3 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.
61 Citations
14 Claims
-
1. A system comprising:
-
a network interface configured to receive data from a computer network; a memory including a plurality of buffer locations, each buffer location of the plurality of buffer locations being identified by both a respective physical address and a respective virtual address, the virtual address of each buffer location being different from but corresponding to the respective physical address, each buffer location of the plurality of buffer locations being configured to store both (i) a respective buffered data from data received over the network interface and (ii) the respective virtual address that is used to identify the respective buffer location; a processor unit configured to access buffered data stored in a respective buffer location using the respective virtual address that is used to identify the buffer location; one or more client components, that are different from the processor unit, configured to access the buffered data stored in the respective buffer location using the respective physical address that is used to identify the buffer location, instead of using the respective virtual address that is used to identify the buffer location; a buffer management unit comprising; a first internal buffer pointer pool; a second internal buffer pointer pool; and a controller configured to; monitor a number of unassigned buffer pointers in the internal buffer pointer pool, in response to the number of unassigned buffer pointers in the internal buffer pointer pool falling below a low threshold value, allocate a first one or more buffer pointers from a first external buffer pointer pool to the first internal buffer pointer pool, ones of the first one or more buffer pointers pointing to a corresponding buffer location of the plurality of buffer locations, monitor a number of unassigned buffer pointers in the second internal buffer pointer pool, and in response to the number of unassigned buffer pointers in the second internal buffer pointer pool falling below another low threshold value, allocate a second one or more buffer pointers from a second external buffer pointer pool to the second internal buffer pointer pool, ones of the second one or more buffer pointers pointing to a corresponding buffer location of the plurality of buffer locations. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method comprising:
-
storing, in ones of a plurality of buffer locations, both (i) a respective buffered data and (ii) a respective virtual address, the virtual address being different from but corresponding to the physical address that is associated with the respective buffer location, wherein the buffered data is received over a network interface; identifying ones of the plurality of buffer locations using both (i) a respective physical address associated with the buffer location and (ii) the respective virtual address associated with the buffer location; accessing, by a processor unit, buffered data stored in a respective buffer location using the respective virtual address associated with the buffer location; accessing, by a client component that is different from the processor unit, buffered data stored in the respective buffer location using the respective physical address associated with the buffer location, instead of using the respective virtual address associated with the buffer location; and managing first and second internal buffer pointer pools, wherein managing the first and second internal buffer pointer pools comprises; monitoring a number of unassigned buffer pointers in the first internal buffer pointer pool; in response to the number of unassigned buffer pointers in the first internal buffer pointer pool falling below a low threshold value, allocating a first one or more buffer pointers from a first external buffer pointer pool to the first internal buffer pointer pool, ones of the first one or more buffer pointers pointing to a corresponding buffer location of the plurality of buffer locations; monitoring a number of unassigned buffer pointers in the second internal buffer pointer pool; and in response to the number of unassigned buffer pointers in the second internal buffer pointer pool falling below another low threshold value, allocating a second one or more buffer pointers from a second external buffer pointer pool to the second internal buffer pointer pool, ones of the second one or more buffer pointers pointing to a corresponding buffer location of the plurality of buffer locations. - View Dependent Claims (11, 12, 13, 14)
-
Specification