DMA: Direct Memory Access

The main memory in the IBM 701 and 704 was attached only to the CPU. To move data between memory and some IO device the CPU had to move each word with a copy instruction. Here is how. The IO devices were all connected to the CPU. That design was quite general but many important programs spent half their time with this tedious task. The IBM 709 introduced what IBM called the ‘channel’ which allowed IO (Input-Output) to proceed while the CPU was computing. Simple new hardware (the ‘channel’) would move words to or from consecutive memory locations while the CPU tended to more important things. Other manufacturers did very similar things but used different terminology. The channel accessed memory directly on a path that did not involve the CPU, but it did compete with the CPU for access to memory (Core memory then). A channel would include a counter to remember where in core it was moving words to or from. It would include a mechanism to let the CPU know when the operation was finished. Soon thereafter it was modified to interrupt the CPU for quicker response to get new IO operations started.

Soon thereafter some computers included Direct Memory Access (DMA) which was a part of the channel except with no counter. The external device that was providing or consuming the data would also provide the address in core memory. Sometimes extra precautions were taken so that the program could prevent these external devices from using addresses that they should not. Here is such a precaution.

Today some graphics processors have DMA so that they can move data to and from the memory of the higher level program that called for the graphics operation.