DMA is used for efficiency. It makes it so the cpu only needs to set up and put down the connection between memory and an I/O. A drawback to it is that an error in the transfer between i/O to or from memory will only be detected at the end of the transfer when the cpu finishes the transfer.