IP Library Granted Patent US 6,857,030
Granted Patent B2
US 6,857,030 · App. 09/949,928 · Granted Feb 15, 2005

Methods, system and article of manufacture for pre-fetching descriptors

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 6,857,030
App. No.
09/949,928
Granted
Feb 15, 2005
Kind
B2
Abstract

A system and method for reducing the number of memory accesses by a hardware device to a descriptor memory is disclosed. Methods, systems and articles of manufacture consistent with the present invention enable software to embed a subsequent descriptor it is posting in the descriptor memory into a current descriptor listed in the descriptor memory. Additionally, hardware is configured to transmit a data packet associated with the current descriptor to a recipient device. When hardware receives an acknowledgment message from the recipient device associated with the transmitted data packet, it fetches the current descriptor to update a completion code within the current descriptor using a Read-Modify-Write (RMW) transfer sequence. As part of the RMW memory operation, hardware may use the embedded copy of the subsequent descriptor within the current descriptor to transmit the next data packet associated with the subsequent descriptor. This process avoids hardware from having to fetch the embedded descriptor from the descriptor memory before transmitting the next data packet.

Claims (81)

1. A method for processing descriptors, comprising:

reserving a location in a memory for a set of descriptors, wherein each descriptor is associated with a respective packet of data;

separating the location into sections;

assigning a single descriptor to each section, wherein each assigned descriptor may vary in size and may include a reserved portion available for an embedded descriptor; and

for each of one or more new descriptors:

determining the size of the new descriptor; and

embedding the new descriptor within the reserved portion of another descriptor in the set when the size of the new descriptor is determined to be equal to or less than the size of the reserved portion.

2. The method of claim 1 , wherein embedding the new descriptor is replaced with:

providing the new descriptor to a new section associated with the set when the size of the new descriptor is determined to be larger than the reserved portion.

3. A method for performing data transfers, comprising:

providing an ordered list of descriptors;

providing a first descriptor;

determining the size of the first descriptor; and

embedding the first descriptor into a second descriptor included in the list of descriptors based on the determination.

4. The method of claim 3 , wherein the first descriptor is a new descriptor and wherein the second descriptor is a last descriptor included in the list of descriptors.

5. The method of claim 4 , further comprising:

placing the first descriptor in the list following the second descriptor.

6. The method of claim 3 , wherein embedding the first descriptor into a second descriptor comprises:

providing a location reserved for a next sequential descriptor in the list;

placing the first descriptor into the location reserved for a next sequential descriptor in the list; and

embedding the first descriptor into a first reserved location associated with the second descriptor when the size of the first descriptor is determined to be less than or equal to the size of the first reserved location.

7. The method of claim 3 , further comprising:

transmitting a first data packed associated with the second descriptor;

receiving a response message associated with the first data packet;

updating information within the second descriptor based on the response message;

determining the presence of an embedded descriptor within the second descriptor; and

transmitting a second data packet associated with the embedded descriptor based on the determination.

8. The method of claim 7 ,

wherein updating information within the second descriptor comprises; setting a flag in a location within the second descriptor that reflects

whether the first data packed was acknowledged; and setting a flag in a location within the second descriptor that reflects

whether a descriptor is embedded within the second descriptor; and

wherein determining the presence of an embedded descriptor within the second descriptor comprises:

determining whether a flag is set within the second descriptor that reflects whether a descriptor is embedded within the second descriptor.

9. A system for performing data transfers, comprising:

means for providing an ordered list of descriptors;

means for providing a first descriptor;

means for determining the size of the first descriptor; and

means for embedding the first descriptor into a second descriptor included in the list of descriptors based on the determination.

10. The system of claim 9 , wherein the first descriptor is a new descriptor and wherein the second descriptor is a last descriptor included in the list of descriptors.

11. The system of claim 10 , further comprising:

means for placing the first descriptor in the list following the second descriptor.

12. The system of claim 9 , wherein the means for embedding the first descriptor into a second descriptor comprises:

means for providing a location reserved for a next sequential descriptor in the list;

means for placing the first descriptor into the location reserved for a next sequential descriptor in the list; and

means for embedding the first descriptor into a first reserved location associated with the second descriptor when the size of the first descriptor is determined to be less than or equal to the size of the first reserved location.

13. The system of claim 9 , further comprising:

means for transmitting a first data packed associated with the second descriptor;

means for receiving a response message associated with the first data packet;

means for updating information within the second descriptor based on the response message;

means for determining the presence of an embedded descriptor within the second descriptor; and

means for transmitting a second data packet associated with the embedded descriptor based on the determination.

14. The method of claim 13 ,

wherein the means for updating information within the second descriptor comprises;

means for setting a flag in a location within the second descriptor that reflects whether the first data packed was acknowledged; and

means for setting a flag in a location within the second descriptor that reflects whether a descriptor is embedded within the second descriptor; and

wherein the means for determining the presence of an embedded descriptor within the second descriptor comprises:

means for determining whether a flag is set within the second descriptor that reflects whether a descriptor is embedded within the second descriptor.

15. A computer-readable medium including instructions for performing a method, when executed by a processor, for performing data transfers, the method comprising:

providing an ordered list of descriptors;

providing a first descriptor;

determining the size of the first descriptor; and

embedding the first descriptor into a second descriptor included in the list of descriptors based on the determination.

16. The computer-readable medium of claim 15 , wherein the first descriptor is a new descriptor and wherein the second descriptor is a last descriptor included in the list of descriptors.

17. The computer-readable medium of claim 16 , wherein the method further comprises:

placing the first descriptor in the list following the second descriptor.

18. The computer-readable medium of claim 15 , wherein embedding the first descriptor into a second descriptor comprises:

providing a location reserved for a next sequential descriptor in the list;

placing the first descriptor into the location reserved for a next sequential descriptor in the list; and

embedding the first descriptor into a first reserved location associated with the second descriptor when the size of the first descriptor is determined to be less than or equal to the size of the first reserved location.

19. The computer-readable medium of claim 15 , wherein the method further comprises:

transmitting a first data packed associated with the second descriptor;

receiving a response message associated with the first data packet;

updating information within the second descriptor based on the response message;

determining the presence of an embedded descriptor within the second descriptor; and

transmitting a second data packet associated with the embedded descriptor based on the determination.

20. The computer-readable medium of claim 19 ,

wherein updating information within the second descriptor comprises; setting a flag in a location within the second descriptor that reflects

whether the first data packed was acknowledged; and setting a flag in a location within the second descriptor that reflects

whether a descriptor is embedded within the second descriptor; and

wherein determining the presence of an embedded descriptor within the second descriptor comprises:

determining whether a flag is set within the second descriptor that reflects whether a descriptor is embedded within the second descriptor.

Assignments (1)
MERGER AND CHANGE OF NAME Recorded Dec 12, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037278/0790 →