Managing out of order buffers
AssigneeMarvell Asia Pte Ltd
InventorAbdul W. Mohammed
Life of this patent
Estimating the term…
Abstract
A method and corresponding computer device for a shared buffer able to consecutively store received data packets without wasted storage space and enabling first-in first-out processing order. The shared buffer is divided into segments, each segment having a complete count that tracks both number of data packet stored into the segment and the number of data packets read out of the segment. The complete counts of the segments provide a way to determine if segments contain unprocessed data packets and when the segments become free to store newly received data packets. Managing the shared buffer on a segment level, instead of a data packet level reduces the amount of memory needed to be dedicated to buffer management and streamlines the packet tracking and release procedures.
Claims20
A computing device comprising:
- a first storage area configured to temporarily store data packets consecutively, the first storage area divided into at least two segments;
- a second storage area configured to store, for each of the at least two segments of the first storage area, a segment complete count, the segment complete count indicating if a corresponding segment contains unprocessed data packets;
- a write controller configured to generate a write message when a data packet is stored in the first storage area and update segment complete counts of a first subset of the at least two segments, the first subset of the at least two segments selected based on where the data packet is stored in the first storage area;
- and
- a buffer controller configured to:
- receive a read message when a data packet is processed from the first storage area and update segment complete counts of a second subset of the at least two segments, the second subset of at least two segments selected based upon where the data packet is processed from the first storage area;
- and
- update an address of a packet start read pointer located in a current segment to a subsequent segment when the segment complete count of the current section indicates that it does not contain unprocessed data packets.
A method for temporarily storing data packets, the method comprising:
- consecutively storing, in a first storage area divided into at least two segments, received data packets;
- storing, in a second storage area, for each of the at least two segments of the first storage area, a segment complete count, the segment complete count indicating if a corresponding segment contains unprocessed data packets;
- generating, by a write controller, a write message when a data packet is stored in the first storage area;
- updating, by the write controller, segment complete counts of a first subset of the at least two segments, the first subset of the at least two segments selected based on where the data packet is stored in the first storage area;
- receiving, by a buffer controller, a read message when a data packet is processed from the first storage area;
- updating, by the buffer controller, segment complete counts of a second subset of the at least two segments, the second subset of at least two segments selected based upon where the data packet is processed from the first storage area;
- and
- updating, by the buffer controller, an address of a packet start read pointer located in a current segment to a subsequent segment when the segment complete count of the current section indicates that it does not contain unprocessed data packets.
A computing device comprising:
- means for temporarily storing packets consecutively in a first storage area divided into at least two segments;
- means for storing, in a second storage area, for each of the at least two segments of the first storage area, a segment complete count, the segment complete count indicating if a corresponding segment contains unprocessed data packets;
- means for generating a write message when a data packet is stored in the first storage area and updating segment complete counts of a first subset of the at least two segments, the first subset of the at least two segments selected based where the data packet is stored in the first storage area;
- means for receiving a read message when a data packet is processed from the first storage area and updating segment complete counts of a second subset of the at least two segments, the second subset of at least two segments selected based upon where the data packet is processed from the first storage area;
- and
- means for updating an address of a packet start read pointer located in a current segment to a subsequent segment when the segment complete count of the current section indicates that it does not contain unprocessed data packets.
Dependencies are inferred from the claim text.