Direct Memory Access (DMA) allows data to be transferred directly between peripheral devices and memory without processor intervention. The DMA controller acts as a bus master that can access memory independently of the CPU. It is configured by the processor which provides the starting addresses and transfer length. This frees up the processor to perform other tasks while the DMA controller handles large data transfers faster than possible through traditional programmed input/output. Proper bus arbitration is required since both the CPU and DMA controller require access to shared system resources.