Logical output queues linking buffers allocated using free lists of pointer groups of multiple contiguous address space
AssigneeXylan Corporation
InventorsDrew Bertagna, Anees Narsinh
Life of this patent
Estimating the term…
Abstract
A data transfer system efficiently allocates contiguous address spaces in a destination storage area to packets by maintaining a plurality of lists from which different amounts of contiguous address spaces are allocated. List selection is made based on known or presumed packet characteristics. By arranging different lists to supply contiguous address spaces in different amounts based on packet-specific characteristics, over-allocation of address space may be reduced considerably while contiguous address space is guaranteed on a continuous basis.
Claims22
A data transfer system, comprising:
- a source storage area for receiving data units;
- a destination storage area;
- a plurality of lists, the lists identifying blocks of contiguous address space in the destination storage area of different sizes;
- means for allocating each data unit a block of contiguous address space from one of the lists;
- means for transferring the data unit from the source storage area to the allocated block of contiguous address space;
- means for transferring the data unit from the allocated blocks of contiguous address space to an output port, the means for transferring comprising:
- means for creating a plurality of logical output queues, each logical output queue being associated with an output port, each logical output queue acting as a temporary storage for the data unit stored in the blocks of contiguous address space intended for the output port;
- means for linking the blocks of contiguous address space in the logical output queue;
- and
- means for transferring the data unit from the linked blocks of contiguous address space in the logical output queue;
- and
- means for returning the allocated block of contiguous address space to the list from which the address space was allocated.
A data transfer system, comprising:
- a source storage area for receiving data units;
- a destination storage area having a plurality of buffers;
- a plurality of free lists, each free list including a plurality of pointer groups, each pointer group in a first free list addressing a first multiple of contiguous buffers in the destination storage area, each pointer group in a second free list addressing a second multiple of contiguous buffers in the destination storage area, wherein the first and second multiples are different;
- means for allocating each data unit a pointer group from one of the free lists;
- and
- means for transferring the data unit from the source storage area to the contiguous buffers addressed by the allocated pointer group;
- means for transferring the data unit from the buffers addressed by allocated pointer group to an output port, the means for transferring comprising:
- means for creating a plurality of logical output queues, each logical output queue being associated with an output port, each logical output queue acting as a temporary storage for the data unit stored in the buffers addressed by the allocated pointer group intended for the output port;
- and
- means for linking the buffers in the logical output queue;
- means for transferring the data unit from the linked buffers in the logical output queue;
- and
- means for returning the pointers in the allocated pointer group to the free list from which the pointer group was allocated.
In a data transfer system having a source storage area for receiving data units, a destination storage area having a plurality of buffers, a plurality of free lists, wherein each free list includes a plurality of pointer groups, each pointer group in a first free list addressing a first multiple of contiguous buffers in the destination storage area, each buffer group in a second free buffer list addressing a second multiple of contiguous buffers in the destination storage area, wherein the first and second multiples are different, a method for transferring data units from the source storage area to the destination storage area, comprising:
- allocating each data unit a pointer group from one of the free lists;
- transferring the data unit from the source storage area to the contiguous buffers addressed by the allocated pointer group;
- creating a plurality of logical output queues, each logical output queue being associated with an output port, each logical output queue acting as a temporary storage for the data unit stored in the contiguous buffers associated with the output port;
- linking the contiguous buffers in the logical output queue;
- transferring the data unit from the linked buffers in the logical output queue to the output port;
- and
- returning the pointers in the allocated pointer group to the free list from which the pointer group was allocated.
A data transfer system comprising:
- a source storage area for receiving data units intended for a plurality of output ports;
- a destination storage area having a plurality of buffers for storing the data units intended for the plurality of output ports;
- a plurality of free lists, each free list including a plurality of pointer groups, each pointer group in a first free list addressing a first multiple of contiguous buffers in the destination storage area, each pointer group in a second free list addressing a second multiple of contiguous buffers in the destination storage area, wherein the first and second multiples are different;
- means for allocating each data unit a pointer group from one of the free lists;
- means for transferring the data unit from the source storage area to the contiguous buffers addressed by the allocated pointer group;
- means for creating a first logical output queue, the first logical output queue acting as a temporary storage space for the data unit stored in the contiguous buffers intended for a first output port;
- means for creating a second logical output queue, the second logical output queue acting as a temporary storage space for the data unit stored in the contiguous buffers intended for a second output port;
- means for linking the contiguous buffers in the first logical output queue;
- means for linking the contiguous buffers in the second logical output queue;
- means for transferring the data unit from the linked buffers in the first and second logical output queues to the corresponding output ports;
- and
- means for returning the pointers in the allocated pointer group to the free list from which the pointer group was allocated.
Dependencies are inferred from the claim text.