Direct Memory Access
Il DMA (Direct Memory Access, accesso diretto alla memoria) permette ad alcuni sottosistemi hardware di un computer di accedere alla memoria di sistema in lettura e/o scrittura indipendentemente dalla CPU. Il DMA è usato da molti sistemi hardware come controller di unità a disco, schede grafiche e schede audio.
DMA is an essential feature of all modern computers, as it allows devices of different speeds to communicate without subjecting the CPU to a massive interrupt load.
A DMA transfer essentially copies a block of memory from one device to another. While the CPU initiates the transfer, the transfer itself is performed by the DMA Controller. A typical example is moving a block of memory from external memory to faster, internal (on-chip) memory. Such an operation does not stall the processor and as a result it can be scheduled to perform other tasks. DMA transfers are essential to high performance embedded algorithms and skillfully created applications can outperform cache.
"Scatter-gather" DMA allows the transfer of data to multiple memory areas in a single DMA transaction. It is equivalent to the chaining together of multiple simple DMA requests. Again, the motivation is to off-load multiple I/O interrupt and data copy tasks from the CPU.
DRQ stands for DMA request; DACK for DMA acknowledge.
See also
External links
- mmap() and DMA, from Linux Device Drivers, 2nd Edition, Alessandro Rubini & Jonathan Corbet
- DMA and Interrupt Handling