DMA is direct memory access
its intent is to reduce the cpu interference to data transfer. you can download some information documents and code file about it at opencore
DMA operation:
--------1.CPU tells DMA controller: Read/Write,Device address,Starting address of memory block for data,Amount of data to be transferred
--------2.CPU carries on with other work
--------3.DMA controller deals with transfer and takes over bus for a cycle
--------4.DMA controller sends interrupt when finished
DMA helps in directly accessing memory without burdening the processor. DMA will take care of all read/write transfers to/from memory.
The communication between processor and DMA can be based on any protocol like request-grant technique. DMA controllers usually have multiple output banks/ports which support many no of memory. if u r new to DMA the data sheet of INTEL 8237 DMA controller shall be a good starting point.