Direct Memory Access (DMA)
Direct memory access is a process in which an external device takes over the control of system bus from the cpu. It is used to transfer large volume of data. The DMA function can be performed by a separate module on the system bus or it can be incorporated into an I/O module. In either case, the technique works as follows. When the processor wishes to read or write a block of data, it issues a command to the DMA module by sending to the DMA module the following information:
- whether a read or write is requested
- the address of the I/O device involved
- the starting location in memory to read from or write to
- the number of words to be read or written
DMA module transfers one word at a time directly to and from memory without going through processor. The processor is involved only at the beginning and end of the transfer.It is used for high-speed data transfer from/to mass storage peripherals. Eg; hard-disk drive, magnetic tapes, CD-ROM and sometimes video controller. It is useful for communication with interactive terminal systems having CRT screens or with TV screens used for video games. The potential application for DMA is in multiprocessor system forming a network of two or more processors.
Fig: Typical block diagram of DMA
Advantage:
- computer system performance is improved
- cpu utilization is maximum
Disadvantage:
- In case of burst mode data transfer, the cpu is rendered inactive for relatively long period of time.
The DMA module needs to to take control of the bus to transfer data to and from memory. Because of this competition for bus usage, there may be times when the processor needs the bus and must wait for the DMA module. The overall effect is to cause the processor to execute more slowly during a DMA transfer when processor access to the bus is required.