DMA
Direct Memory Access is a way of
streamlining transfers of large blocks of data between two sections
of memory or between memory and an I/O device. Let’s
say you want to read in 100 MB from disk and store it in memory. You
have two options.
The processor can read each byte at a time from the disk controller into a register, then store the contents of the register to the appropriate memory location. For each byte transferred, the processor must read an instruction, decode the instruction, read the data, read the next instruction, decode the instruction, and then store the data. Then the process starts over again for the next byte.
The second option in moving large amounts of data around the system
is DMA. A special device, called a DMA
controller
(DMAC),
performs high-speed transfers between memory and I/O devices. Using
DMA bypasses the processor by setting up a
channel between the I/O device and the memory.
Thus, data is read from the I/O device and written into memory
without the need to execute code to perform the transfer on a
byte-by-byte (or word-by-word) basis.
In order for a DMA transfer to occur, the DMAC must have use of the address and data buses. There are several ways in which this could be implemented by the system designer. The most common approach (and probably the simplest) is to suspend the operation of the processor and for the processor to release its buses (the buses are tristate). This allows the DMAC to take over the buses for the short period required ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access