Dynamic logical data channel assignment using channel bitmap
First Claim
1. A method for allocating DMA channel identifiers in a data processing system, comprising:
- receiving a request for a first DMA transfer during operation of said data processing system;
allocating a first DMA channel identifier for use in performing the first DMA transfer by searching a channel bitmap to select and set a bit position in the channel bitmap corresponding to the first DMA channel identifier that is available from a plurality of candidate DMA channel identifiers in response to receiving said request for the first DMA transfer, where each bit position in the channel bitmap represents a logical channel and has a value to indicate whether the logical channel is available or allocated;
mapping the request for the first DMA transfer to the first DMA channel identifier;
using the first DMA channel identifier to perform the first DMA transfer; and
deallocating the first DMA channel identifier upon completion of the first DMA transfer.
1 Assignment
0 Petitions
Accused Products
Abstract
A method, system and program are provided for dynamically allocating DMA channel identifiers by virtualizing DMA transfer requests into available DMA channel identifiers using a channel bitmap listing of available DMA channels to select and set an allocated DMA channel identifier. Once an input value associated with the DMA transfer request is mapped to the selected DMA channel identifier, the DMA transfer is performed using the selected DMA channel identifier, which is then deallocated in the channel bitmap upon completion of the DMA transfer. When there is a request to wait for completion of the data transfer, the same input value is used with the mapping to wait on the appropriate logical channel. With this method, all available logical channels can be utilized with reduced instances of false-sharing.
25 Citations
20 Claims
-
1. A method for allocating DMA channel identifiers in a data processing system, comprising:
-
receiving a request for a first DMA transfer during operation of said data processing system; allocating a first DMA channel identifier for use in performing the first DMA transfer by searching a channel bitmap to select and set a bit position in the channel bitmap corresponding to the first DMA channel identifier that is available from a plurality of candidate DMA channel identifiers in response to receiving said request for the first DMA transfer, where each bit position in the channel bitmap represents a logical channel and has a value to indicate whether the logical channel is available or allocated; mapping the request for the first DMA transfer to the first DMA channel identifier; using the first DMA channel identifier to perform the first DMA transfer; and deallocating the first DMA channel identifier upon completion of the first DMA transfer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computer-usable storage medium embodying computer program code, the computer program code comprising computer executable instructions configured for dynamically allocating DMA channel identifiers in a data processing system by:
-
receiving a request for a first DMA transfer during operation of said data processing system; allocating a first DMA channel identifier for use in performing the first DMA transfer by searching a channel bitmap to select and set a bit position in the channel bitmap corresponding to the first DMA channel identifier that is available from a plurality of candidate DMA channel identifiers in response to receiving said request for the first DMA transfer, where each bit position in the channel bitmap represents a logical channel and has a value to indicate whether the logical channel is available or allocated; mapping the request for the first DMA transfer to the first DMA channel identifier; using the first DMA channel identifier to perform the first DMA transfer; and deallocating the first DMA channel identifier upon completion of the first DMA transfer. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A data processing system comprising:
-
a processor; a DMA controller coupled to the processor; a local store memory coupled to the processor and to the DMA controller, said local store memory embodying computer program code for use by the DMA controller in performing DMA transfers to and from the local store memory, the computer program code comprising instructions executable by the DMA controller and configured for allocating DMA channel identifiers in the data processing system by; receiving a request for a first DMA transfer during operation of said data processing system; allocating a first DMA channel identifier for use in performing the first DMA transfer by searching a channel bitmap to select and set a bit position in the channel bitmap corresponding to the first DMA channel identifier that is available from a plurality of candidate DMA channel identifiers in response to receiving said request for the first DMA transfer, where each bit position in the channel bitmap represents a logical channel and has a value to indicate whether the logical channel is available or allocated; mapping the request for the first DMA transfer to the first DMA channel identifier; using the first DMA channel identifier to perform the first DMA transfer; and deallocating the first DMA channel identifier upon completion of the first DMA transfer. - View Dependent Claims (20)
-
Specification