IP Library Granted Patent US 7,620,749
Granted Patent B2
US 7,620,749 · App. 11/621,789 · Granted Nov 17, 2009

Descriptor prefetch mechanism for high latency and out of order DMA device

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 7,620,749
App. No.
11/621,789
Granted
Nov 17, 2009
Kind
B2
Abstract

A DMA device prefetches descriptors into a descriptor prefetch buffer. The size of descriptor prefetch buffer holds an appropriate number of descriptors for a given latency environment. To support a linked list of descriptors, the DMA engine prefetches descriptors based on the assumption that they are sequential in memory and discards any descriptors that are found to violate this assumption. The DMA engine seeks to keep the descriptor prefetch buffer full by requesting multiple descriptors per transaction whenever possible. The bus engine fetches these descriptors from system memory and writes them to the prefetch buffer. The DMA engine may also use an aggressive prefetch where the bus engine requests the maximum number of descriptors that the buffer will support whenever there is any space in the descriptor prefetch buffer. The DMA device discards any remaining descriptors that cannot be stored.

Claims (37)

1. A method for performing a direct memory access block move with descriptor prefetch in a direct memory access device, the method comprising:

responsive to space being available in a descriptor prefetch buffer within the direct memory access device, fetching, using one read/write transaction, a block of sequential physical memory into the descriptor prefetch buffer to speculatively prefetch a plurality of direct memory access descriptors, stored in a linked list architecture;

checking validity of the speculatively prefetched plurality of direct memory access descriptors in the descriptor prefetch buffer;

responsive to a given direct memory access descriptor being non-sequential with respect to a previous direct memory access descriptor within the speculatively prefetched plurality of direct memory access descriptors or being an invalid direct memory access descriptor, marking the given direct memory access descriptor invalid; and

processing descriptors from the descriptor prefetch buffer to perform direct memory access block moves according to the descriptors.

2. The method of claim 1 , further comprising: marking each descriptor after the given direct memory access descriptor invalid.

3. The method of claim 1 , further comprising:

responsive to the given direct memory access descriptor being sequential with respect to a previous direct memory access descriptor within the plurality of direct memory access descriptors and being a valid direct memory access descriptor, marking the given direct memory access descriptor valid.

4. A method for performing a direct memory access block move with descriptor prefetch in a direct memory access device, the method comprising:

responsive to space being available in a descriptor prefetch buffer within the direct memory access device, fetching, using one read/write transaction, a block of sequential physical memory into the descriptor prefetch buffer to speculatively prefetch a plurality of direct memory access descriptors, stored in a linked list architecture; and

processing descriptors from the descriptor prefetch buffer to perform direct memory access block moves according to the descriptors,

wherein speculatively prefetching a plurality of direct memory access descriptors comprises:

determining a number of available slots in the descriptor prefetch buffer; and

fetching the block of sequential physical memory, using one read/write transaction, having a number of speculatively prefetched direct memory access descriptors corresponding to the number of available slots;

checking validity of the plurality of speculatively prefetched direct memory access descriptors in the descriptor prefetch buffer; and

responsive to a given direct memory access descriptor being non-sequential with respect to a previous direct memory access descriptor within the plurality of speculatively prefetched direct memory access descriptors or being an invalid direct memory access descriptor, marking the given direct memory access descriptor invalid.

5. A method for performing a direct memory access block move with descriptor prefetch in a direct memory access device, the method comprising:

responsive to space being available in a descriptor prefetch buffer within the direct memory access device, fetching, using one read/write transaction, a block of sequential physical memory into the descriptor prefetch buffer to speculatively prefetch a plurality of direct memory access descriptors, stored in a linked list architecture; and

processing descriptors from the descriptor prefetch buffer to perform direct memory access block moves according to the descriptors,

wherein speculatively prefetching a plurality of direct memory access descriptors comprises:

fetching the block of sequential physical memory, using one read/write transaction, having a number of speculatively prefetched direct memory access descriptors corresponding to a maximum number of slots in the descriptor prefetch buffer;

attempting to store the number of speculatively prefetched direct memory access descriptors in the descriptor prefetch buffer; and

responsive to the descriptor prefetch buffer being full, discarding remaining direct memory access descriptors from the number of speculatively prefetched direct memory access descriptors that could not be stored in the descriptor prefetch buffer.

6. The method of claim 5 , further comprising:

responsive to space being available in the descriptor prefetch buffer, storing a given direct memory access descriptor within the number of direct memory access descriptors in the descriptor prefetch buffer.

7. The method of claim 6 , further comprising:

checking validity of the given direct memory access descriptor; and

responsive to the given direct memory access descriptor being non-sequential with respect to a previous direct memory access descriptor within the number of direct memory access descriptors or being an invalid direct memory access descriptor, marking the given direct memory access descriptor invalid.

8. The method of claim 7 , further comprising:

discarding each descriptor after the given direct memory access descriptor invalid.

9. The method of claim 6 , further comprising:

checking validity of the given direct memory access descriptor; and

responsive to the given direct memory access descriptor being sequential with respect to a previous direct memory access descriptor within the number of direct memory access descriptors and being a valid direct memory access descriptor, marking the given direct memory access descriptor valid.

10. The method of claim 4 , further comprising:

marking each descriptor after the given direct memory access descriptor invalid.

11. The method of claim 4 , further comprising:

responsive to the given direct memory access descriptor being sequential with respect to a previous direct memory access descriptor within the plurality of direct memory access descriptors and being a valid direct memory access descriptor, marking the given direct memory access descriptor valid.

Assignments (4)
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 37900/0720 Recorded Jul 13, 2018
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 046542/0792 →
PATENT SECURITY AGREEMENT Recorded Feb 24, 2016
From: MELLANOX TECHNOLOGIES, LTD.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 037900/0720 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 2, 2013
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 030128/0885 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2007
From: BIRAN, GIORA; DE LA TORRE, LUIS E.; DRERUP, BERNARD C.; GUPTA, JYOTI; NICHOLAS, RICHARD
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 018740/0413 →