DMA nell'architettura 80x86
Il DMA è un meccanismo in grado di minimizzare i tempi di trasferimento tra un periferico e un'interfaccia, senza passare per la CPU. Esso presenta dei cicli di BUS specifici, in modo da gestire priorità e arbitraggio del BUS. Il protocollo di comunicazione prevede il trasferimento e anche l'ACK hardware.
Il ciclo di BUS DMA si struttura in fasi a seconda della funzione. Senza DMA nel caso di trasferimento di un dato tra memoria e periferico:
-La memoria viene letta mettendo sull'Address BUS l'indirizzo e con il segnale di MEMR.
-Un periferico è scritto mettendo sull'Address BUS l'indirizzo e con il segnale di IOW.
Con il DMA vengono condensate le operazioni. Infatti la memoria è selezionata mediante l'ABUS e MEMR, mentre il periferico è selezionato mediante IOW nello stesso istante. Ogni canale DMA contiene :
-registro indirizzi da 16bit, i restanti bit dell'Address BUS (parte alta degli indirizzi) sono contenuti nei Page registers.
-contatore di cicli da 16bit
-registro di modo
8237A
Il DMA della famiglia Intel è l'8237A, in cui HOLD e HLDA costituiscono l'interfaccia verso il DMA. Quando un dispositivo desidera acquisire il controllo del BUS porta a 1 il segnale di HOLD. A questo punto il processore, quanto ha completato il corrente ciclo di BUS, pone in alta impedenza i segnali dell'Address BUS e i segnali di controllo. Quando il dispositivo ha terminato di utilizzare il BUS, riporta a 0 il segnale di HOLD. Ogni canale dell'8237 è programmato secondo:
-indirizzo di partenza
-contatore
-tipo di trasferimento e di ciclo (single/block, read/write).
Nei PC esistono 7 canali DMA gestiti da due chipset 8237.
Il modo single prevede che venga inviata una richiesta per ogni byte trasferito (poi il DMA viene rilasciato), mentre nel modo block viene portato a termine tutto il trasferimento, senza che il BUS venga rilasciato. Ovviamente il tempo di trasferimento del trasferimento a blocco è inferiore.
Normalmente un controllore DMA non gestisce tutti i segnali dell'ABUS, in quanto esso gestisce solo 16b (una pagina). Il page register contiene tutti i bit, che non vengono gestiti direttamente dal DMA controller.
| < Prec. | Succ. > |
|---|






