Barrier and Interrupt Mechanism for High Latency and Out of Order DMA Device
First Claim
1. A method for performing a direct memory access block move in a direct memory access device, the method comprising:
- receiving a direct memory access block move descriptor, wherein the direct memory access block move descriptor indicates a source and a target and wherein the direct memory access block move descriptor is identified as a barrier descriptor;
converting the direct memory access block move descriptor into one or more direct memory access requests for the direct memory access block move descriptor;
identifying a last direct memory access request within the one or more direct memory access requests; and
processing the one or more direct memory access requests to satisfy the direct memory access block move request such that the direct memory access device does not process the last direct memory access request before all other direct memory access requests within the one or more direct memory access requests are processed.
1 Assignment
0 Petitions
Accused Products
Abstract
A direct memory access (DMA) device includes a barrier and interrupt mechanism that allows interrupt and mailbox operations to occur in such a way that ensures correct operation, but still allows for high performance out-of-order data moves to occur whenever possible. Certain descriptors are defined to be “barrier descriptors.” When the DMA device encounters a barrier descriptor, it ensures that all of the previous descriptors complete before the barrier descriptor completes. The DMA device further ensures that any interrupt generated by a barrier descriptor will not assert until the data move associated with the barrier descriptor completes. The DMA controller only permits interrupts to be generated by barrier descriptors. The barrier descriptor concept also allows software to embed mailbox completion messages into the scatter/gather linked list of descriptors.
-
Citations
20 Claims
-
1. A method for performing a direct memory access block move in a direct memory access device, the method comprising:
-
receiving a direct memory access block move descriptor, wherein the direct memory access block move descriptor indicates a source and a target and wherein the direct memory access block move descriptor is identified as a barrier descriptor; converting the direct memory access block move descriptor into one or more direct memory access requests for the direct memory access block move descriptor; identifying a last direct memory access request within the one or more direct memory access requests; and processing the one or more direct memory access requests to satisfy the direct memory access block move request such that the direct memory access device does not process the last direct memory access request before all other direct memory access requests within the one or more direct memory access requests are processed. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method in a direct memory access engine in a direct memory access device for performing a direct memory access block move, the method comprising:
-
receiving a direct memory access block move descriptor, wherein the direct memory access block move descriptor indicates a source and a target and wherein the direct memory access block move request is identified as a barrier descriptor; converting the direct memory access block move descriptor into one or more direct memory access requests for the direct memory access block move descriptor; identifying a last direct memory access request within the one or more direct memory access requests; setting a barrier attribute associated with the last direct memory access request; and for each given direct memory access request in the one or more direct memory access requests; determining whether the barrier attribute is set for the given direct memory access request; if the barrier attribute is set, determining whether a barrier is pending for a channel associated with the given direct memory access request; and if a barrier is not pending for the channel associated with the given direct memory access request, issuing the given direct memory access request to a bus engine in the direct memory access device. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A method in a bus engine in a direct memory access device for performing a direct memory access block move, the method comprising:
-
receiving a direct memory access request from a direct memory access queue; determining whether the direct memory access request has a barrier attribute set; if the direct memory access request has a barrier attribute set, determining whether all direct memory access requests before the barrier have completed; and if all direct memory access requests before the barrier have not completed, holding the direct memory access request from completing. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A direct memory access device, comprising:
-
a direct memory access engine, wherein the direct memory access engine is configured to; receive a direct memory access block move descriptor, wherein the direct memory access block move descriptor indicates a source and a target and wherein the direct memory access block move request is identified as a barrier descriptor; convert the direct memory access block move descriptor into one or more direct memory access requests for the direct memory access block move descriptor; identify a last direct memory access request within the one or more direct memory access requests; set a barrier attribute associated with the last direct memory access request; and issue the one or more direct memory access requests to a direct memory access queue; and a bus engine, wherein the bus engine is configured to; receive a direct memory access request from a direct memory access queue; determine whether the direct memory access request has a barrier attribute set; if the direct memory access request has a barrier attribute set, determine whether all direct memory access requests before the barrier have completed; and if all direct memory access requests before the barrier have not completed, hold the direct memory access request from completing. - View Dependent Claims (17, 18, 19, 20)
-
Specification