IP Library Granted Patent US 8,417,842
Granted Patent B2
US 8,417,842 · App. 12/122,340 · Granted Apr 9, 2013

Virtual direct memory access (DMA) channel technique with multiple engines for DMA controller

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,417,842
App. No.
12/122,340
Granted
Apr 9, 2013
Kind
B2
Abstract

A virtual DMA channel technique in which a generally larger number of DMA channels are mapped to a generally smaller number of DMA engines can provide a configuration in which switches amongst DMA engines (and therefore amongst a current working set of DMA channels currently mapped thereto) can be accomplished without context switch latency. Accordingly, as long as contents of the current working set can be appropriately managed, many changes (whether or nor priority based) between a current active DMA channel and a next runnable DMA channel can be accomplished without incurring a context switch latency such as normally associated with loading/restoring and/or saving DMA context information. In some embodiments, a working set or replacement strategy that seeks to cache a most frequently (or most recently) used subset of virtual DMA channels is employed. In some embodiments, a set- or frame-oriented variants of such strategies may be employed.

Claims (53)

1. A method of managing direct memory access (DMA) resources in a system that provides plural DMA engines, the method comprising:

associating context information, including DMA parameters, with each of plural virtual DMA channels, the virtual DMA channels more numerous than the plural DMA engines;

for at least a current subset of less than all the virtual DMA channels, caching the associated context information with respective ones of the plural DMA engines;

and switching amongst the plural DMA engines, and therefore amongst respective ones of the current subset of virtual DMA channels, without latency associated with saving or restoring context information.

2. The method of claim 1 , further comprising:

saving and restoring context information for respective ones of the virtual DMA channels to and from a DMA channel buffer, thereby updating the current subset of virtual DMA channels for which context information is cached with a respective DMA engine.

3. The method of claim 1 , further comprising:

performing the saving and restoring if a next runnable one of the virtual DMA channels is not a member of the current subset.

4. The method of claim 1 , further comprising:

performing the saving and restoring while a prior runnable one of the virtual DMA channels is active, such that context information for a next runnable virtual DMA channel is cached with a respective DMA engine and available for activation without context switch latency.

5. The method of claim 1 , further comprising maintaining the current subset of virtual DMA channels so that respective DMA engines cache context information for one of:

a most frequently used subset of the virtual DMA channels;

a most recently used subset of the virtual DMA channels;

a subset of the virtual DMA channels selected based on a set- or frame-oriented implementation of a frequency of use policy; and

a subset of the virtual DMA channels selected based on a set- or frame-oriented implementation of a recency of use policy.

6. The method of claim 1 ,

wherein, at any given time, each of the virtual DMA channels is mapped to a respective DMA engine, either as a member of the current subset for which context information is cached or as an uncached entry in a DMA channel buffer.

7. The method of claim 1 ,

wherein a single one of the DMA engines and an associated single one of the virtual DMA channels is active at any given time.

8. The method of claim 1 ,

wherein the switching amongst the DMA engines occurs in about one DMA clock cycle, and

wherein the saving and restoring, if necessary, has a multi-cycle latency.

9. An apparatus comprising:

a Direct Memory Access (DMA) controller suitable for coupling to a DMA channel buffer that stores context information, including DMA parameters, for each of plural virtual DMA channels;

the DMA controller including plural DMA engines each configured to cache context information for a respective one of the virtual DMA channels that together constitute a current subset thereof, the virtual DMA channels more numerous than the plural DMA engines;

and the DMA controller including a context switching controller configured to switch amongst the plural DMA engines without substantial context switch latency as long as a next runnable one of the virtual DMA channels is within the current subset for which context information is cached with a respective one of the plural DMA engines.

10. The apparatus of claim 9 ,

wherein, if the next runnable one of the virtual DMA channels is not within the current subset, the context switching controller is configured to load a selected one of the DMA engines with context information retrieved from the DMA channel buffer.

11. The apparatus of claim 10 ,

the load has a multi-cycle latency.

12. The apparatus of claim 10 ,

wherein, coincident with the load, the context switching controller saves to the DMA channel buffer context information for at least one of the virtual DMA channels of a previously current subset thereof.

13. The apparatus of claim 10 ,

wherein the context switching controller initiates the load while a prior runnable one of the virtual DMA channels remains active, such that context information for a next runnable virtual DMA channel is cached with a respective DMA engine and available for activation without context switch latency.

14. The apparatus of claim 9 ,

wherein the context switching controller is configured to save and restore context information for respective ones of the virtual DMA channels to and from a DMA channel buffer, thereby updating the current subset of virtual DMA channels for which context information is cached with a respective DMA engine.

15. The apparatus of claim 9 ,

wherein the context switching controller implements a replacement policy that caches in respective ones of the DMA engines context information for one of:

a most frequently used subset of the virtual DMA channels;

a most recently used subset of the virtual DMA channels;

a subset of the virtual DMA channels selected based on a set- or frame-oriented implementation of a frequency of use policy; and

a subset of the virtual DMA channels selected based on a set- or frame-oriented implementation of a recency of use policy.

16. The apparatus of claim 9 ,

wherein a single one of the DMA engines and an associated single one of the virtual DMA channels is active at any given time.

17. The apparatus of claim 9 , further comprising:

a processor; memory; and a data transfer pathway between memory and plural peripherals, each operatively coupled to the DMA controller.

18. The apparatus of claim 17 ,

wherein the DMA channel buffer resides in the memory.

19. The apparatus of claim 17 , embodied as a system on a chip.

20. An electronic device comprising:

a processor and memory accessible thereto;

a DMA interconnect coupling the memory and plural devices;

and a DMA controller that interfaces with the DMA interconnect and coordinates plural DMA engines to support plural virtual DMA channels, the virtual DMA channels more numerous than the plural DMA engines, the DMA controller caching associated context information, including DMA parameters, for at least a current subset of less than all the virtual DMA channels, the DMA controller including logic to switch amongst the plural DMA engines, and therefore amongst respective ones of the current subset of virtual DMA channels, without latency associated with saving or restoring context information.

Assignments (32)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 11, 2026
From: NXP USA, INC.
To: NEX-X SILICON LLC
Reel/Frame 075615/0773 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051030/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042985 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 042762 FRAME 0145. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051145/0184 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12298143 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Oct 22, 2019
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 051029/0387 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050745/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 039361 FRAME 0212. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042762/0145 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12681366 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded May 9, 2017
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 042985/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE LISTED CHANGE OF NAME SHOULD BE MERGER AND CHANGE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0180. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 12, 2017
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 041354/0148 →
CHANGE OF NAME Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040652/0180 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 12092129 PREVIOUSLY RECORDED ON REEL 038017 FRAME 0058. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY AGREEMENT SUPPLEMENT. Recorded Jul 14, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039361/0212 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
SECURITY AGREEMENT SUPPLEMENT Recorded Mar 7, 2016
From: NXP B.V.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 038017/0058 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037354/0719 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0553 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0143 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
SECURITY AGREEMENT Recorded Jun 18, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030633/0424 →
SECURITY AGREEMENT Recorded May 13, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 024397/0001 →
SECURITY AGREEMENT Recorded Mar 15, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A.
Reel/Frame 024085/0001 →
SECURITY AGREEMENT Recorded Sep 24, 2008
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A.
Reel/Frame 021570/0449 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 21, 2008
From: VU, MIEU
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 020975/0876 →