DMA Controller

The Basics
   This page mainly refers to the Type 3 DMA controller. There is a Type 1 and Type 2 DMA controller also. Early MCA DMA system implementations had a 24 bit address limit and cannot access more than 16MB of memory (Type 1 and Type 2 complexes). With Type 3 and above complexes (32 bit DMA), up to 4GB of memory can be addressed. 
   The Direct Memory Access (DMA) controller uses eight channels to manage the transfer of data between two addressable locations within the system. 
   DMA channels 0 and 4 are active in MCA systems and can be reprogrammed by an OS to respond to arbitration levels 8 thru 15. This dynamic reassignment ability allows up to 15 slave DMA devices to be supported on the 8 channel DMA controller. 
   Although 8 concurrent DMA data transfers may be active at the same time, the data does not move simultaneously. This is because only one DMA controller can take over the bus at a time. 

Arbitration and Virtual DMA
   Each DMA port is assigned an arbitration level to which it responds when that level recieves control of the bus. The arb level is set in a 4 bit POS register during setup. DMA levels 0-7 are assigned to arb levels 0-7 during boot. 
   In MCA systems, the channel assignments can be dynamically changed. DMA levels 0 and 4 are assigned as virtual DMA levels. Levels 1-3 and 5-7 are fixed in their arb levels (for compatibility with software for older systems) but the processing routines can sort through the available DMA channels when a request is made for a DMA operation 
   If a device requests a specific DMA channel, the DMA controller looks for any available channel and carries out the task. The controller then replies to the requesting device that the DMA function has been served on the DMA channel that the device demanded. 

Arb Level -2
   Used to perform memory refresh 

Arb Level -1
   Allows the system processor to gain control of the bus. If there is an active transfer occuring, the system processor will take over after it's finished. Any pending transfers are preempted until the system processor finishes. 

Arb Level 2
   Reserved for the floppy controller. 

Arb Level F
   Reserved for the system processor 

DMA Modes
   Supported DMA operations are data-transfer and memory-verify. Data-transfer moves data between an I/O device and memory, while the memory-verify performs a memory read cycle but no write cycle. 
   The DMA controller uses two interfaces to control DMA operations: programmed I/O (PIO) and subsystem control block (SCB). In PIO mode, the DMA controller supports a 24 bit memory address and an 8 or 16 bit data width. In the SCB mode, the DMA controller supports 32 bit addressing and 8, 16, and 32 bit data widths using control blocks. 

PIO Mode
   A set of programmable registers are used to setup each channel and to manage the transfer. Each channel has it's own 24 bit memory address register and 16 bit transfer counter to define each DMA operation. Data width for each transfer is either 8 or 16 bits and is determined by the width of the participating devices. 
   Each channel responds to an arbitration level equal to it's channel number. The arbitration levels for DMA channels 0 and 4 are programmable and can be modified to other arbitration values. 

SCB Mode
   Registers are used to setup each channel; control blocks are then used to manage the transfer operation. 
   The control block specifies the type of operation, the source and destination addresses of the data, and other parameters. The source or destination addresses can point to a data location or toan indirect list that points to several locations. The width of each transfer is either 8, 16, or 32 bits and is determined dynamically by signal protocols on the system channel. All channels support 32 bit memory addressing, 32 bit transfer counts, and data chaining. 
   Each DMA channel has a local arbiter that can be programmed independently to request the system channel and arbitrate for a device. 

Note: The Server 95 DMA controller supports a programming model and register set that is compatible with the DMA controller used in AT-bus systems. Although the DMA controller maintains some compatibility with this interface, new programs should use either the PIO or SCB interface. 
 
 

9595 Main Page