IP Library Granted Patent US 8,041,847
Granted Patent B1
US 8,041,847 · App. 12/118,566 · Granted Oct 18, 2011

Periodic and conditional execution of DMA operations

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 8,041,847
App. No.
12/118,566
Granted
Oct 18, 2011
Kind
B1
Abstract

Scheduling Direct Memory Access (DMA) operations. Blocks are provided in a first DMA chain, with each block in the first DMA chain corresponding to an operation and comprising a pair of pointers, a first pointer pointing to a command structure to be executed or a data structure to be moved, and a second pointer pointing to a next block in the first DMA chain. A DMA engine processes successive operations in the first DMA chain. Time remaining in an interval for processing the first DMA chain is tracked. A second DMA chain of conditional blocks are maintained, with each conditional block corresponding to a conditional operation and containing an estimate of time needed to complete the conditional operation. A conditional operation is executed from the second DMA chain if the remaining time in the interval is greater than the estimated time to complete processing of the conditional operation.

Claims (26)

1. A method of scheduling Direct Memory Access (DMA) operations in a NAND memory environment, the method comprising:

providing blocks in a first DMA chain, each block in the first DMA chain corresponding to an operation and comprising a pair of pointers, a first pointer of the pair of pointers pointing to a command structure to be executed or a data structure to be moved, a second pointer of the pair of pointers pointing to a next block in the first DMA chain;

using a DMA engine to process successive operations in the first DMA chain, wherein the DMA engine tracks whether a conditional operation has already been executed by checking a consumption semaphore included in the corresponding conditional block;

tracking time remaining in an interval for processing the first DMA chain;

maintaining a second DMA chain of conditional blocks, each conditional block corresponding to a conditional operation and containing an estimate of time needed to complete processing the conditional operation; and

executing a given conditional operation from the second DMA chain if the remaining time in the interval for processing the first DMA chain is greater than the estimated time to complete processing of the given conditional operation.

2. The method according to claim 1 , wherein a last block in the first DMA chain points to the second DMA chain.

3. The method according to claim 1 , wherein each block in the first DMA chain and the second DMA chain includes an exclusion semaphore for preventing the DMA engine from executing an operation associated with the block.

4. The method according to claim 3 , wherein if the DMA engine is prevented from executing an operation associated with a given block, the DMA engine repeatedly attempts to fetch the given block until the given block is reset.

5. The method according to claim 3 , wherein if the DMA engine is prevented from executing an operation associated with a given block, the DMA monitors a bus for any write to a location of the given block, and attempts to refetch the given block if such a write is detected.

6. The method according to claim 1 , wherein a length of the interval is set based on an application being executed.

7. The method according to claim 1 , wherein upon expiration of the interval, the DMA engine begins processing a next scheduled DMA chain.

8. The method according to claim 1 , wherein a system processor monitors the second DMA chain and reclaims executed blocks of the second DMA chain in order to supply conditional pointers to new conditional blocks.

9. An apparatus for scheduling Direct Memory Access (DMA) operations in a NAND memory environment, the apparatus comprising:

a block providing unit configured to provide blocks in a first DMA chain, each block in the first DMA chain corresponding to an operation and comprising a pair of pointers, a first pointer of the pair of pointers pointing to a command structure to be executed or a data structure to be moved, a second of the pair of pointers pointing to a next block in the first DMA chain;

a DMA engine configured to process successive operations in the first DMA chain, wherein the DMA engine tracks whether a conditional operation has already been executed by checking a consumption semaphore included in the corresponding conditional block;

a period counter configured to track time remaining in an interval for processing the first DMA chain,

wherein conditional operations are maintained in a second DMA chain of conditional blocks, each conditional block corresponding to a conditional operation and containing an estimate of the time needed to complete processing the conditional operation; and

wherein the DMA engine executes a given conditional operation from the second DMA chain if the remaining time in the interval for processing the first DMA chain is greater than the estimated time to complete processing of the given conditional operation.

10. The apparatus according to claim 9 , wherein a last block in the first DMA chain points to the second DMA chain.

11. The apparatus according to claim 9 , wherein each block in the first DMA chain and the second DMA chain includes an exclusion semaphore for preventing the DMA engine from executing an operation associated with the block.

12. The apparatus according to claim 11 , wherein if the DMA engine is prevented from executing an operation associated with a given block, the DMA engine repeatedly attempts to fetch the given block until the given block is reset.

13. The apparatus according to claim 11 , wherein if the DMA engine is prevented from executing an operation associated with a given block, the DMA monitors a bus for any write to a location of the given block, and attempts to refetch the given block if such a write is detected.

14. The apparatus according to claim 9 , wherein the period counter sets the length of the interval based on an application being executed.

15. The apparatus according to claim 9 , wherein upon the expiration of the interval, the DMA engine begins processing a next scheduled DMA chain.

16. The apparatus according to claim 9 , wherein a system processor monitors the second DMA chain and reclaims executed command blocks of the second DMA chain in order to supply conditional pointers to new conditional blocks.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 16, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053475/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: MARVELL INTERNATIONAL LTD.
To: CAVIUM INTERNATIONAL
Reel/Frame 052918/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2008
From: MARVELL SEMICONDUCTOR, INC.
To: MARVELL INTERNATIONAL LTD.
Reel/Frame 021971/0011 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2008
From: SMITH, RONALD D.
To: MARVELL SEMICONDUCTOR INC.
Reel/Frame 020929/0997 →