cerca
Architettura degli elaboratori - DMA
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Architettura degli elaboratori - DMA

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:

  • PA (PERIPHERAL ADDRESS): contiene l’identificativo dell’interfaccia a periferica con cui interagire per scambiare i dati;
  • MDA (MEMORY DATA ADDRESS): contiene l’indirizzo della prossima cella di memoria in cui inserire o prelevare il dato;
  • DC (DATA COUNTER): contiene il numero dei dati ancora da trasferire;
  • TD (TRANSFER DIRECTION): indica se l’operazione è lettura (in) o scrittura (out).

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:

  • nel PA l’identificativo dell’interfaccia;
  • nel MDA l’indirizzo della prossima cella di memoria;
  • nel DC il numero totale di dati da trasferire;
  • nel TD che si tratta di lettura.

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:

  • l’interfaccia segnala dato pronto al DMAC (ponendo il 1° bit meno significativo a 1 di status);
  • il DMAC chiede i bus alla CPU mediante la lina HOLDREQ (del bus di controllo);
  • la CPU rilascia i bus mediante la linea HOLDACK (del control bus).

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.


Torna alla pagina di Architettura degli elaboratori