Uni.ADE-DMA History
Show minor edits - Show changes to output
Deleted line 10:
!!Struttura e funzioni del DMAC
Added lines 1-35:
(:title Architettura degli elaboratori - DMA:) [[Torna alla pagina di Architettura degli elaboratori->Uni.Architettura degli elaboratori]] ----
>>evvai<< Questa pagina è stata aggiornata GRAZIE agli appunti che AVETE INVIATO nel periodo di chiusura della sezione UniCrema!! '''''È SERVITA A QUALCOSA, NO?!''''' [++;)++] >><<
%titolo%''':: Architettura degli elaboratori - DMA ::'''
!!Struttura e funzioni del DMAC 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->Uni.Architettura degli elaboratori]]
|