Direct memory access, sometimes called DMA, is a method of transferring data from the random access memory to another part of a computer without occupying the central processing unit. This capability is built into most modern computer systems. It allows the computer to perform multiple tasks at once, ultimately making the computer faster.
Just as the owner of a small business deals with all of the reports and information going into or out of his or her office, the central processing unit of a computer must process all the input or output of the computer. Before direct memory access, downloading or uploading data took up all of the central processor's attention. It could only do one task at a time.
A computer with direct memory access enabled is like a small business owner with a couple of assistants. Instead of dealing with all the information directly, the central processing unit is able to delegate the task to the direct memory access controller. This is a device built into the motherboard that oversees direct memory access operations. The central processing unit is then free to perform other tasks while the upload or download is taking place. When the delegated task is complete, the DMA controller tells the central processing unit.
Each port on a computer has at least one direct memory access channel that can be assigned to devices connected through that port. To work properly, each device must be assigned a different channel. Most cards that can be installed in a computer, such as sound, network, or video cards, can use direct memory access to perform their tasks.
Multi-core processors are also able to use direct memory access. They generally have a type of temporary memory called local or scratchpad memory. When the action they are working on is completed, they can transfer the data from local memory to the main memory using a direct access memory channel.
The drawback to depending on DMA is that it can cause what is called a loss of cache coherency. Basically this means that data is moving all the time and may be stored in multiple temporary locations. The problem with this is that when the computer is asked to access information, it may not access the most recent information. Computer makers can deal with this using special hardware or by programing the operating system to guard against loss of cache coherency.