Buffer management architecture
AssigneeMarvell Israel (M.I.S.L) Ltd.
InventorsYosef Solt, Sorel Horovitz
Life of this patent
Estimating the term…
Abstract
A network switch may include a buffer management module to manage buffers in a buffer memory. The buffer management module may include an Allocation SRAM and a Reclaim SRAM. Each buffer in the buffer memory may be associated with a corresponding bit in the Allocation SRAM and Reclaim SRAM. A line including bits indicating available buffers in the Allocation SRAM may be written to the allocation register, and the buffer management module may allocate buffers from the allocation register. A reclaim module may age bits in the Reclaim SRAM. The reclaim module may reclaim buffers by searching corresponding lines in the Allocation SRAM and Reclaim SRAM and comparing the values of bits in the two lines.
Claims44
A method comprising:
- writing one of a plurality of sets in an allocation memory into an allocation register, wherein the allocation memory includes a plurality of data elements arranged in the plurality of sets, each of said data elements being associated with a corresponding plurality of buffers in a buffer memory;
- in response to an allocation request:
- identifying a data element in the allocation register having a value corresponding to an available buffer,
- changing the value of said data element to a value corresponding to an allocated buffer, and
- allocating the buffer associated with said data element;
- monitoring the values of each of the data elements in the allocation register;
- and
- in response to each of the data elements having the value corresponding to an allocated buffer:
- writing the data elements in the allocation register back to the allocation memory,
- identifying a set including at least one data element having the value corresponding to an available buffer, and
- writing the set to the allocation register.
An apparatus comprising:
- an allocation memory including a plurality of data elements arranged in a plurality of sets, each of said data elements being associated with a corresponding plurality of buffers in a buffer memory;
- an allocation register;
- and
- a buffer manager to:
- write one of said plurality of sets into the allocation register;
- in response to an allocation request:
- identify a data element in the allocation register having a value corresponding to an available buffer,
- change the value of said data element to a value corresponding to an allocated buffer, and
- allocate the buffer associated with said data element;
- monitor the values of each of the data elements in the allocation register;
- and
- in response to each of the data elements having the value corresponding to an allocated buffer:
- write the data elements in the allocation register back to the allocation memory,
- identify a set including at least one data element having the value corresponding to an available buffer, and
- write the set to the allocation register.
A system comprising:
- a switching module to receive and switch packets;
- a buffer memory including a plurality of buffers to store received packets;
- and
- a buffer management module including:
- an allocation memory including a plurality of data elements arranged in a plurality of sets, each of said data elements being associated with a corresponding one of the plurality of buffers in the buffer memory;
- an allocation register;
- and
- a buffer manager to:
- write one of said plurality of sets into the allocation register;
- in response to an allocation request:
- identify a data element in the allocation register having a value corresponding to an available buffer,
- change the value of said data element to a value corresponding to an allocated buffer, and
- allocate the buffer associated with said data element;
- monitor the values of each of the data elements in the allocation register;
- and
- in response to each of the data elements having the value corresponding to an allocated buffer:
- write the data elements in the allocation register back to the allocation memory,
- identify a set including at least one data element having the value corresponding to an available buffer, and
- write the set to the allocation register.
A system comprising:
- a switching module including means for receiving and switching packets;
- a buffer memory including a plurality of buffers for storing received packets;
- and
- a buffer management module including:
- an allocation memory including a plurality of data elements arranged in a plurality of sets, each of said data elements being associated with a corresponding plurality of buffers in a buffer memory;
- an allocation register;
- and
- a buffer manager including:
- means for writing one of said plurality of sets into the allocation register;
- means for, in response to an allocation request:
- identifying a data element in the allocation register having a value corresponding to an available buffer,
- changing the value of said data element to a value corresponding to an allocated buffer, and
- allocating the buffer associated with said data element;
- means for monitoring the values of each of the data elements in the allocation register;
- means for, in response to each of said data elements having the value corresponding to an allocated buffer:
- writing the data elements in the allocation register back to the allocation memory,
- identifying a set including at least one data element having the value corresponding to an available buffer, and
- writing the set to the allocation register.
A computer-readable medium having instructions stored thereon, which, when executed by a processor, causes the processor to perform operations comprising:
- writing one of a plurality of sets in an allocation memory into an allocation register, wherein the allocation memory includes a plurality of data elements arranged in the plurality of sets, each of said data elements being associated with a corresponding plurality of buffers in a buffer memory;
- in response to an allocation request:
- identifying a data element in the allocation register having a value corresponding to an available buffer,
- changing the value of said data element to a value corresponding to an allocated buffer, and
- allocating the buffer associated with said data element;
- monitoring the values of each of the data elements in the allocation register;
- and
- in response to each of the data elements having the value corresponding to an allocated buffer:
- writing the data elements in the allocation register back to the allocation memory,
- identifying a set including at least one data element having the value corresponding to an available buffer, and
- writing the set to the allocation register.
A method comprising:
- writing one of a plurality of sets in an allocation memory into an allocation register, wherein the allocation memory includes a plurality of data elements arranged in the plurality of sets, each of the data elements being associated with a corresponding plurality of buffers in a buffer memory;
- in response to an allocation request:
- identifying a data element in the allocation register having a value corresponding to an available buffer,
- changing the value of the data element to a value corresponding to an allocated buffer, and
- allocating the buffer associated with the data element;
- and
- in response to a clear request for one of the plurality of buffers:
- identifying a data element associated with the buffer in one of the allocation memory and the allocation register, and
- changing a value of the data element to a value corresponding to an available buffer,
- in response to identifying the data element associated with said buffer in the allocation memory:
- writing the set including said data element to a clear register, and
- after changing the value of said data element in the clear register, writing the set in the clear register to the allocation memory.
An apparatus comprising:
- an allocation memory including a plurality of data elements arranged in a plurality of sets, each of the data elements being associated with a corresponding plurality of buffers in a buffer memory;
- an allocation register;
- and
- a buffer manager to:
- write one of the plurality of sets into the allocation register;
- in response to an allocation request:
- identify a data element in the allocation register having a value corresponding to an available buffer,
- change the value of the data element to a value corresponding to an allocated buffer, and
- allocate the buffer associated with the data element;
- in response to a clear request for one of the plurality of buffers:
- identify a data element associated with the buffer in one of the allocation memory and the allocation register, and
- change a value of the data element to a value corresponding to an available buffer;
- and
- in response to identifying the data element associated with the buffer in the allocation memory:
- write the set including the data element to a clear register, and
- after changing the value of the data element in the clear register, write the set in the clear register to the allocation memory.
A system comprising:
- a switching module to receive and switch packets;
- a buffer memory including a plurality of buffers to store received packets;
- and
- a buffer management module including:
- an allocation memory including a plurality of data elements arranged in a plurality of sets, each of the data elements being associated with a corresponding one of the plurality of buffers in the buffer memory;
- an allocation register;
- and
- a buffer manager to:
- write one of the plurality of sets into the allocation register;
- in response to an allocation request:
- identify a data element in the allocation register having a value corresponding to an available buffer,
- change the value of the data element to a value corresponding to an allocated buffer, and
- allocate the buffer associated with the data element;
- in response to a clear request for one of the plurality of buffers:
- identify a data element associated with the buffer in one of the allocation memory and the allocation register, and
- change a value of the data element to a value corresponding to an available buffer, and
- in response to identifying the data element associated with the buffer in the allocation memory:
- write the set including the data element to a clear register, and
- after changing the value of the data element in the clear register, write the set in the clear register to the allocation memory.
A system comprising:
- a switching module including means for receiving and switching packets;
- a buffer memory including a plurality of buffers for storing received packets;
- and
- a buffer management module including:
- an allocation memory including a plurality of data elements arranged in a plurality of sets, each of the data elements being associated with a corresponding plurality of buffers in a buffer memory;
- an allocation register;
- and
- a buffer manager including:
- means for writing one of the plurality of sets into the allocation register;
- means for, in response to an allocation request:
- identifying a data element in the allocation register having a value corresponding to an available buffer,
- changing the value of the data element to a value corresponding to an allocated buffer,
- allocating the buffer associated with the data element;
- means for, in response to a clear request for one of the plurality of buffers:
- identifying a data element associated with the buffer in one of the allocation memory and the allocation register;
- and
- changing a value of the data element to a value corresponding to an available buffer;
- means for writing the set including the data element to a clear register in response to identifying the data element associated with the buffer in the allocation memory;
- and
- means for writing the set in the clear register to the allocation memory after changing the value of the data element in the clear register.
A computer-readable medium having instructions stored thereon, which, when executed by a processor, causes the processor to perform operations comprising:
- writing one of a plurality of sets in an allocation memory into an allocation register, wherein the allocation memory includes a plurality of data elements arranged in the plurality of sets, each of the data elements being associated with a corresponding plurality of buffers in a buffer memory;
- in response to an allocation request:
- identifying a data element in the allocation register having a value corresponding to an available buffer,
- changing the value of the data element to a value corresponding to an allocated buffer, and
- allocating the buffer associated with the data element;
- in response to a clear request for one of the plurality of buffers:
- identifying a data element associated with the buffer in one of the allocation memory and the allocation register, and
- changing a value of the data element to a value corresponding to the available buffer;
- and
- in response to identifying the data element associated with the buffer in the allocation memory:
- writing the set including the data element to a clear register, and
- after changing the value of the data element in the clear register, writing the set in the clear register to the allocation memory.
Dependencies are inferred from the claim text.