7327674

Prefetching Techniques for Network Interfaces

PublishedFebruary 5, 2008
Assigneenot available in USPTO data we have
Technical Abstract

Patent Claims
25 claims

Legal claims defining the scope of protection, as filed with the USPTO.

1

1. A method comprising: receiving a plurality of data descriptors at a network interface, wherein each of the plurality of data descriptors notifies the network interface that data is available in a data storage, and wherein each of the plurality of data descriptors supplies a location of data in the data storage; selecting a send queue from a plurality of send queues in the network interface based on a fill of the send queue, wherein the send queue is associated with at least one destination on a network; searching the plurality of data descriptors in the network interface for a data descriptor identifying the send queue after selecting the send queue; and prefetching data into the send queue from the data storage based on the data descriptor, the prefetching being performed, at least some of the time, out of order from an order in which the data in the data storage became available for prefetching.

2

2. The method of claim 1 , wherein the send queue has been least frequently filled.

3

3. The method of claim 1 , wherein the send queue has had data prefetched for it least recently.

4

4. The method of claim 1 , wherein the fill of the send queue is below an average fill of the plurality of send queues.

5

5. The method of claims 1 , wherein the send queue is further selected using a round robin process.

6

6. The method of claim 1 , wherein the send queue is further selected based on a priority of the send queue.

7

7. A method for implementing out of order prefetching from a host by a sending network interface circuit, the method comprising: storing a plurality of packets in a send buffer storage on the host; writing a plurality of packet descriptors to the network interface circuit, wherein each of the plurality of packet descriptors is associated with one packet of the plurality of packets in the send buffer storage; selecting a send queue from a plurality of send queues in the network interface based on a fill of the send queue; searching the plurality of packet descriptors on the network interface circuit for a packet descriptor identifying the send queue after selecting the send queue; and the network interface circuit transferring a packet associated with the packet descriptor from a location in the send buffer storage supplied by the packet descriptor to the send queue, out of order with respect to an order in which the packet became available for transfer out of the send buffer storage.

8

8. The method of claim 7 , wherein the send queue is selected based on a priority of the send queue.

9

9. The method claim 7 further comprising enqueuing a data entity descriptor in a send complete queue on the host after the packet is transferred to at least one selected from a group consisting of the send queue and a destination associated with the send queue.

10

10. The method of claim 9 , wherein the data entry descriptor includes an identification of the packet a valid bit indicating whether the entry descriptor is valid, and an error bit indicating whether the transfer occurred without error.

11

11. The method of claim 10 , wherein the polarity used to indicate validity by the valid bit changes after a predetermined number of data entry descriptors have been enqueued.

12

12. The method as recited in claim 7 wherein the host is coupled to the network interface circuit via an interconnect.

13

13. The method of claim 7 , wherein the fill of the send queue is below an average fill of the plurality of send queues.

14

14. The method of claim 7 , wherein the send queue has been least frequently filled.

15

15. The method of claim 7 , wherein the send queue has had data preferteched for it least recently.

16

16. A computer system comprising: a network interface including a plurality of send queues, each of the send queues corresponding to a target on a network to which the network interface couples; data entity descriptor storage coupled to store a plurality of data entity descriptors; a host coupled to the network interface including a data storage; and a queue maintaining a list of completed data entity descriptors, a data entity descriptor being completed when an associated data entity is transferred to the network interface or transferred to its destination, the queue configured to be written by the network interface to enqueue a completed data entity descriptor and read by the host to dequeue a completed data entity descriptor; wherein the network interface is responsive to prefetch a data entity from the data storage in the host out of order from an order in which the data entity was available for prefetching, according to a state of the send queues and according to the stored data entity descriptors in the data entity descriptor storage, wherein a completed data entity descriptor in the queue includes a valid bit indicating whether an entry in the queue is a valid entry, thereby indicating that the associated data entry is completed, and wherein the polarity used to indicate validity by the bit changes after a predetermined number of entries have been enqueued.

17

17. A computer system comprising: a network interface including a plurality of send queues, each of the send queues corresponding to a target on a network to which the network interface couples; data entity descriptor storage coupled to store a plurality of data entity descriptors; a host coupled to the network interface including a data storage; and a queue maintaining a list of completed data entity descriptors, a data entity descriptor being completed when an associated data entity is transferred to the network interface or transferred to its destination, the queue configured to be written by the network interface to enqueue a completed data entity descriptor and read by the host to dequeue a completed data entity descriptor; wherein the network interface is responsive to prefetch a data entity from the data storage in the host out of order from an order in which the data entity was available for prefetching, according to a state of the send queues and according to the stored data entity descriptors in the data entity descriptor storage, wherein a completed data entity descriptor in the queue includes a valid bit indicating whether an entry in the queue is a valid entry, thereby indicating that the associated data entity is completed, and wherein the host assumes that the polarity used to indicate validity by the valid bit changes when a predetermined number of entries have been dequeued by the host.

18

18. An method comprising: receiving a plurality of packet descriptors, wherein each of the plurality of packet descriptors is associated with at least one packet stored in a send buffer; selecting a send queue of a plurality of send queues based on a fill of the send queue, wherein the send queue is associated with a network destination; searching the plurality of packet descriptors for a packet descriptor associated with the send queue after selecting the send queue; and prefetching a packet associated with the packet descriptor from the send buffer into the send queue, wherein the packet descriptor supplies a location of the packet in the send buffer.

19

19. The method of claim 18 , wherein the fill of the send queue is below an average fill of the plurality of send queues.

20

20. The method of claims 18 , wherein the send queue is further selected using a round robin process.

21

21. The method of claim 18 , wherein the send queue is further selected based on a priority of the send queue.

22

22. The method of claim 18 , further comprising: enqueuing an entry representing the packet into a send complete queue after prefetching the packet, wherein the entry comprises a valid bit indicating whether the entry in the queue is a valid entry.

23

23. The method of claim 22 , wherein the polarity used to indicate validity by the valid bit changes after a predetermined number of entries have been enqueued.

24

24. The method of claim 22 , wherein the entry further comprises the location of the packet in the send buffer.

25

25. The method of claim 22 , wherein the send complete queue and the send buffer are located on a host, and wherein the plurality of send queues are located on a network interface card.

Patent Metadata

Filing Date

Unknown

Publication Date

February 5, 2008

Inventors

Hans Eberle
Nils Gura
Marc Herbert

Want to explore more patents?

Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.

Citation & reuse

Analysis on this page is generated by Patentable — an AI-powered patent intelligence platform. AI-generated summaries, explanations, and analysis may be reused with attribution and a visible link back to the canonical URL below. Patent abstracts and claims are USPTO public domain.

Cite as: Patentable. “PREFETCHING TECHNIQUES FOR NETWORK INTERFACES” (7327674). https://patentable.app/patents/7327674

© 2026 Patentable. All rights reserved.

Patentable is a research and drafting-assistant tool, not a law firm, and does not provide legal advice. Documents we generate are drafts for review by a licensed patent attorney.