6DMA and Interrupt Breakpoints During an Instruction Cycle
7DMA is for high-speed data transfer from/to mass storage peripherals, e.g. harddisk drive, magnetic tape, CD-ROM, and sometimes video controllers.For example, a hard disk may boasts a transfer rate of 5 M bytes per second, i.e. 1 byte transmission every 200 ns. To make such data transfer via the CPU is both undesirable and unnecessary.The basic idea of DMA is to transfer blocks of data directly between memory and peripherals. The data don’t go through the microprocessor but the data bus is occupied.“Normal” transfer of one data byte takes up to 29 clock cycles. The DMA transfer requires only 5 clock cycles.Nowadays, DMA can transfer data as fast as 60 M byte per second. The transfer rate is limited by the speed of memory and peripheral devices.
9Basic process of DMA In maximum mode: In minimum mode: Handshaking Pins: RQ/GT1 and RQ/GT0 DMA request and acknowledgeSequences:1) Peripheral asserts one of the request pins, e.g. RQ/GT1 or RQ/GT0 (RQ/GT0 has higher priority)2) CPU completes its current bus cycle and enters into a HOLD state3) CPU grants the right of bus control by asserting a grant signal via the same pin as the request signal.4) DMA operation starts5) Upon completion of the DMA operation, the peripheral asserts the request/grant pin again to relinquish bus control.In minimum mode:The HOLD and HLDA pins are used for handshaking
10DMA ControllerA DMA controller interfaces with several peripherals that may request DMA. The controller decides the priority of simultaneous DMA requests communicates with the peripheral and the CPU, and provides memory addresses for data transfer. DMA controller commonly used with 8086 is the 8237 programmable device. The 8237 is in fact a special-purpose microprocessor. Normally it appears as part of the system controller chip-sets. The 8237 is a 4-channel device. Each channel is dedicated to a specific peripheral device and capable of addressing 64 K bytes section of memory.
18DMA Transfer Cycle Stealing DMA controller takes over bus for a cycleTransfer of one word of dataNot an interruptCPU does not switch contextCPU suspended just before it accesses busi.e. before an operand or data fetch or a data writeSlows down CPU but not as much as CPU doing transfer
19Intel 8237A DMA Controller Interfaces to 80x86 family and DRAM When DMA module needs buses it sends HOLD signal to processorCPU responds HLDA (hold acknowledge)DMA module can use busesE.g. transfer data from memory to diskDevice requests service of DMA by pulling DREQ (DMA request) highDMA puts high on HRQ (hold request),CPU finishes present bus cycle (not necessarily present instruction) and puts high on HDLA (hold acknowledge). HOLD remains active for duration of DMADMA activates DACK (DMA acknowledge), telling device to start transferDMA starts transfer by putting address of first byte on address bus and activating MEMR; it then activates IOW to write to peripheral. DMA decrements counter and increments address pointer. Repeat until count reaches zeroDMA deactivates HRQ, giving bus back to CPU
20Some important signal pins: InterruptDMASome important signal pins:• DREQ3 – DREQ0 (DMA request): Used to request a DMA transfer for a particular DMA channel.• DACK3 – DACK0 (DMA channel acknowledge): Acknowledges a channel DMA request from a device.• HRQ (Hold request): Requests a DMA transfer.• HLDA (Hold acknowledge) signals the 8237 that the microprocessor has relinquished control of the address, data and control buses.
21Some important signal pins: InterruptDMASome important signal pins:• AEN (Address enable): Enables the DMA address latch connected to the 8237 and disable any buffers in the system connected to the microprocessor. (Use to take the control of the address bus from the microprocessor)ADSTB (Address strobe): Functions as ALE to latch address during the DMA transfer.• EOP (End of process): bi direction, Signals the end of the DMA process.• IOR (I/O read): bi-dir, Used as an input strobe to read data from the 8237 during programming and used as an output strobe to read data from the port during a DMA write cycle.
22Some important signal pins: InterruptDMASome important signal pins:IOW (I/O write): bi-dir Used as an input strobe to write data to the 8237 during programming and used as an output strobe to write data to the port during a DMA read cycle.MEMW (Memory write): Used as an output to cause memory to write data during a DMA write cycle.MEMR (Memory read): Used as an output to cause memory to read data during a DMA read cycleA3 – A0 : address pins select an internal register during programming and provide part of the DMA transfer address during DMA operation.
23Some important signal pins: InterruptDMASome important signal pins:A7 – A4 : address pins are outputs that provide part of the DMA transfer address during a DMA operation.DB0 – DB7 : data bus, connected to microprocessor and are used during the programming DMA controller.
24Internal registers:Interrupt• CAR : The current address register, is used to hold the 16-bitmemory address used for the DMA transfer.• CWCR : The current word count register, programs a channel for the number of bytes (up to 64K) transferred during a DMA action.• BA & BWC : The base address and base word count , registersare used when auto-initialization is selected for a channel. In this mode, their contents will be reloaded to the CAR and CWCR after the DMA action is completed.• The command register (CR) programs the operation of the8237 DMA controller• Each channel has its own CAR, CWCR, BA and BWC.
25• MR : The mode register, programs the mode of operation for a Interrupt• MR : The mode register, programs the mode of operation for achannel. Each channels has its own mode register (RD/WR-INC/DEC..)• RR : The request register, is used to request a DMA transfervia software, which is very useful in memory-to-memoryTransfers where external signals is not available for DMA transfer• MRSR : The mask register set/reset, sets or clears the channelmask to disable or enable particular DMA channels. If the mask is set,The channel is disabled• MSR : The mask register, clears or sets all of the masks withone command instead of individual channels as with theMRSR.• SR : The status register, shows the status of each DMA channel. TCBits indicate, terminal count
26Addresses 0000 = Base and Current Address (Ch0) 0001 = Base and Current Word (Ch0)0010 = Base and Current Address (Ch1)0011 = Base and Current Word (Ch1)0100 = Base and Current Address (Ch2)0101 = Base and Current Word (Ch2)0110 = Base and Current Address (Ch3)0111 = Base and Current Word (Ch3)
27Addresses 1000 = RD Status / WR Command 1001 = Request Register 1010 = RD Command / WR single Mask bit1011 = Mode Register1100 = Set/ Clear Last F/F1101 = Read Temp Register / Master clear1110 = CLR mode , counter / clear mask1111 = All Masks bit
30Data Transfer modes: Single Transfer Mode InterruptData Transfer modes:Single Transfer ModeIn Single Transfer mode the device is programmed to make one transfer only.The word count will be decremented and the address decremented or incremented following each transfer.When the word count ``rolls over'' from zero to FFFFH, a Terminal Count (TC) will cause an Auto initialize if the channel has been programmed to do so.
31if the channel has been programmed for it. InterruptBlock Transfer ModeIn Block Transfer mode the device is activated by DREQ to continue making transfers during the service until a TC, caused by word count going to FFFFH, or an external End of Process (EOP) is encountered.DREQ need only be held active until DACK becomes active. Again, an Autoinitialization will occur at the end of the serviceif the channel has been programmed for it.
32InterruptDemand Transfer Mode:In Demand Transfer mode the device is programmed to continue making transfers until a TC or external EOP is encountered or until DREQ goes inactive.Transfers may continue until the I/O device has exhausted its data capacity. the DMA service can be re-established by means of a DREQ.During the time between services when the microprocessor is allowed to operate, the intermediate values of address and word count are stored in the 8237A Current Address and Current Word Count registers.EOP can cause an Autoinitialize at the end of the service. EOP is generated either by TC or by an external signal.
33Advanced Microprocessor InterruptDMACascade Mode:more than one 8237A together for simple systemexpansion.The HRQ and HLDA signals from the additional 8237A are connected to the DREQ andDACK signals of a channel of the initial 8237A.This allows the DMA requests of the additional device topropagate through the priority network circuitry of the preceding device.Advanced Microprocessor