Direct memory access
Direct memmory access (usually shotened to DMA)is a technology used in Computers and microprocessors. With it, certain hardware components can use parts of the main memory for their applications, without the need to ask the CPU. Many hardware systems use DMA including disk drive controllers, graphics cards, network cards, sound cards and GPUs. DMA is also used for intra-chip data transfer in multi-core processors, especially in multiprocessor system-on-chips, where its processing element is equipped with a local memory (often called scratchpad memory) and DMA is used for transferring data between the local memory and the main memory. Computers that have DMA channels can transfer data to and from devices with much less CPU overhead than computers without a DMA channel. Similarly, a processing element inside a multi-core processor can transfer data to and from its local memory without occupying its processor time, overlapping computation and data transfer.
Without DMA, using programmed input/output (PIO) mode for communication with peripheral devices, or load/store instructions in the case of multicore chips, the CPU is typically fully occupied for the entire duration of the read or write operation, and can not do other work during this time. With DMA, the CPU would start the transfer, do other operations while the transfer is in progress, and receive an interrupt from the DMA controller when the operation has been done. This is especially useful in real-time computing applications where not stalling behind concurrent operations is critical. Another related application area is various forms of stream processing where it is essential to have data processing and transfer in parallel, in order to achieve sufficient throughput.