Prefetch Optimization of the Communication of Data Using Descriptor Lists
AssigneeCisco Technology, Inc., a corporation of California
InventorMichael B. Galles
Life of this patent
Estimating the term…
Abstract
The size and location of an envelope of a data block are included in the posting to a second device of a descriptor list entry for the data block, thus allowing the second device to read the data block without having to first read the descriptor list entry. This envelope may be the same size and location of the data block, or this envelope may be larger than the data block. For example, as the size of the posted register may not be large enough to also store all of the bits required to specify the exact size and position of the data block, a larger data block envelope is defined without specifying the exact low order bits of the size and/or location of the data block envelope.
Claims20
An apparatus, comprising:
- one or more storage elements;
- one or more processing elements configured to store an ordered descriptor list and a plurality of data blocks in said one or more storage elements, the ordered descriptor list including a plurality of entries, each of the plurality of entries including a size value and a reference value for identifying the location of a corresponding data block of the plurality of data blocks;
- and
- a device communicatively coupled to said one or more storage elements and said one or more processing elements;
- wherein the device includes a storage device interface configured for retrieving one or more data blocks of the plurality of data blocks based on a value stored in posted index storage;
- wherein the storage device interface is configured to store an identification of only a single entry of the ordered descriptor list at a time, with this single entry identifying the last of one or more descriptors identifying data blocks of the plurality of data blocks that are ready for the device to retrieve;
- wherein said posted index storage is configured to store the identification of the single entry of the ordered descriptor list, a particular size, and a particular reference value;
- wherein the particular size and the particular reference value identify a particular data block envelope including said data block corresponding to the single entry of the ordered descriptor list;
- and wherein the device is configured to perform operations, including:
- reading the particular data block envelope without accessing the ordered descriptor list said stored in said one or more storage elements, reading the single entry of the ordered descriptor list, and extracting data of said data block corresponding to the single entry of the ordered descriptor list from the particular data block envelope based on said read single entry of the ordered descriptor list;
- wherein said one or more processing elements are configured to update said posted index storage.
A device configured for retrieving data from memory in a different device communicatively coupled to the device, said memory configured for storing an ordered descriptor list and a plurality of data blocks, the ordered descriptor list including a plurality of entries, each of the plurality of entries including a size value and a reference value for identifying the location of a corresponding data block of the plurality of data blocks;
- wherein the device comprises:
- posted index storage configured to store an identification of only a single entry of the ordered descriptor list at a time corresponding to a particular data block, with this single entry identifying the last of one or more descriptors identifying data blocks of the plurality of data blocks that are ready for the device to retrieve;
- wherein said posted index storage is configured to store the identification of the single entry of the ordered descriptor list, a particular size, and a particular reference value;
- wherein the particular size and the particular reference value identify a particular data block envelope including said data block corresponding to the single entry of the ordered descriptor list;
- and
- one or more processing elements configured to perform operations including:
- reading the particular data block envelope without accessing the ordered descriptor list said stored in said memory;
- reading the single entry of the ordered descriptor list;
- and extracting data of the particular data block from the particular data block envelope based on said read single entry of the ordered descriptor list.
A method for communicating data from a host device to a communications device, wherein the method comprises:
- storing, by one or more processing elements of the host device, an ordered descriptor list and a plurality of data blocks in memory external to the communications device, the ordered descriptor list including a plurality of entries, each of the plurality of entries including a size value and a reference value for identifying the location of a corresponding data block of the plurality of data blocks;
- updating, by one or more processing elements of the host device, a posted index storage in the communications device with an identification of an entry of the ordered descriptor list corresponding to a particular data block, a particular size, and a particular reference value;
- wherein the particular size and the particular reference value identify a particular data block envelope including the particular data block;
- wherein the communications device includes the posted index storage configured for storing an identification of only a single entry of the ordered descriptor list at a time along with a respective particular size and a respective particular reference value;
- wherein said single entry identifies the last of one or more descriptors identifying data blocks of the plurality of data blocks that are ready for the communications device to retrieve;
- retrieving, by the communications device, the particular data block envelope without accessing the ordered descriptor list in said memory;
- retrieving the entry of the ordered descriptor list;
- and
- sending one or more packets by the communications device;
- wherein at least one of said one or more packets includes data of the particular data block extracted from the particular data block envelope based on said retrieved entry of the ordered descriptor list.
Dependencies are inferred from the claim text.