A DMA (direct memory access) controller unit, containing multiple internal channels through which data can be transferred relative to multiple external devices, said internal channels having real time operational constraints associated with the devices, said unit controlling access to a bus and memory that are part of a data processing system which is not directly accessible to said external devices, said bus operating in a contention mode in which said DMA controller unit is required to arbitrate with other controller and device adapter units for assuming control of the bus, said bus having access time constraints associated with said contention mode operation that may potentially conflict with said real time constraints if said internal channels are served without time overlap by said DMA controller unit, said DMA controller unit comprising:
- a random access memory (RAM) buffer store, having space allocated to each said internal channel for storing control information of each channel;
- first means coupled to said RAM store, and containing internal registers, for transferring control information and data between said store and said internal registers, said first means being time shared by said internal channels for holding control information associated with one of said channels at a time and data in transit through the associated channel, between said RAM store and said data processing system memory via said bus;
- second means coupled between said first means and said bus, and containing internal registers usable in behalf of one said internal register at a time, for receiving portions of said control information from said first means and for operating in response to said portions to control said bus and to transfer data between said first means and said system memory, via said bus and the internal registers in said second means;
- said registers in said first and second means forming a pipeline in which, at any time, data transfer actions can be sustained simultaneously relative to more than one of said internal channels;
- and
- third means operating relative to said first and second means to cause said first and second means to swap control information and data at discrete instants of time, in order to enable said second means to continue an action begun by said first means relative to one of said internal channels, and simultaneously enable said first means to continue an action that was being performed by said second means relative to another one of said internal channels;
- whereby said first and second means can operate in time overlap, relative to respective parts of said pipeline, to perform actions in both said one and another internal channels for transferring data between said RAM store and said system memory, and thereby complete said actions relative to both said one and another internal channels in less time than would otherwise be required if the same actions had to be handled separately.