Torna alla pagina di Architettura degli elaboratori
Questa pagina è stata aggiornata GRAZIE agli appunti che AVETE INVIATO nel periodo di chiusura della sezione UniCrema!! È SERVITA A QUALCOSA, NO?! ;)
:: Architettura degli elaboratori - DMA ::
Il DMA (Direct Memory Access) è un meccanismo che permette ad alcune periferiche di accedere direttamente alla memoria di sistema per scambiarsi dati, oppure leggere o scrivere, senza chiamare in causa la CPU per ogni byte trasferito tramite il meccanismo usuale dell'interrupt e la successiva richiesta di operazione desiderata, ma generando un singolo interrupt per blocco trasferito.
Il DMAC è il DMA-Controller, ed è formato da quattro registri a cui la CPU può accedere:
Gli elementi coinvolti nel funzionamento del meccanismo DMA sono tre: CPU, DMAC e interfaccia a disco. Il comportamento della CPU a livello software è che inizializza il DMAC e l’interfaccia mediante la routine readisk
del sistema operativo. Il programma in esecuzione della CPU richiede lettura da memoria di massa a disco chiamando la routine readisk. Questa routine inizializza il DMAC inserendo:
Inizializza quindi l’interfaccia comunicandole il numero della traccia e del settore da leggere da disco, e che si tratta di lettura.
Il comportamento a livello hardware dei tre elementi è il seguente:
Il DMAC pone sull’address bus il contenuto dell’MDA e attiva in all’interfaccia e memwrite
alla memoria. Viene così trasferito il dato direttamente da interfaccia a memoria mediante il databus. Viene disattivata sia la linea di HOLDREQ che HOLDACK; viene incrementato l’MDA e decrementato il DC. Se il DC > 0 continua il trasferimento, se DC = 0 finisce. A questo punto il DMAC invia un segnale di interruzione alla CPU; la CPU attiva la routine di risposta all’interrupt, che segnala al readisk che è terminata l’operazione. Infine il sistema operativo riattiva il programma che aveva richiesto lettura da disco.