Direct Memory Access

Versione del 15 lug 2008 alle 09:34 di TXiKiBoT (discussione | contributi) (Bot: Aggiungo: hu:Dma)

Il DMA (Direct Memory Access, «accesso diretto alla memoria») permette ad alcuni sottosistemi hardware di un computer di accedere alla memoria di sistema in lettura e/o scrittura indipendentemente dalla CPU. Il DMA è usato da molti sistemi hardware come controller di unità a disco, schede grafiche e schede audio. Il DMA ha quindi il compito di gestire i dati passanti nel BUS, permettendo a periferiche che lavorano a velocità diverse di comunicare senza assoggettare la CPU a un enorme carico di interrupt.

Essenzialmente, in un trasferimento DMA un blocco di memoria viene copiato da una periferica a un'altra. La CPU si limita a dare avvio al trasferimento, mentre il trasferimento vero e proprio è svolto dal controller DMA. Un caso tipico è lo spostamento di un blocco di memoria da unità di memoria esterna alla memoria principale. Se questa operazione, come avviene grazie al DMA, non blocca il processore, esso può continuare a svolgere altre operazioni.

Il DMA gestisce i trasferimenti tra CPU e periferiche tramite l'utilizzo di diverse linee (Acknowledge, richiesta, controllo) e di due registri (DC e IOAR). Nel momento in cui la CPU necessita di dati presenti in memoria carica in IOAR l'indirizzo dal quale iniziare l’operazione e in DC il numero di dati consecutivi da trattare, informando il DMA su un ulteriore bit se si tratta di un’operazione di lettura o scrittura. A questo punto il DMA invia la richiesta alla periferica e nel momento in cui riceve il segnale di acknowledge inizia il trasferimento. Ad ogni passo viene incrementato IOAR e decrementato DC finchè DC non è uguale a 0.

Il trasferimento tra DMA e I/O può avvenire in diversi modi:

  • A blocchi (burst transfer): Prevede che una volta che inizia il trasferimento il DMA non lascia il controllo del BUS alla CPU, finchè esso non è terminato: La CPU rimane bloccata per tutto il trasferimento;
  • Cycle stealing: I blocchi sono di piccole dimensioni, in questo modo il tempo nel quale la CPU è bloccata è più fremmentato;
  • Transparent DMA: Il DMA occupa il BUS solo quando la CPU non ne ha bisogno.

La tecnica del DMA "scatter-gather" permette il trasferimento di dati verso più regioni di memoria nel corso di una singola transazione DMA. Il risultato è equivalente a quello che si avrebbe con una catena di normali richieste DMA, ma in questo modo si alleggerisce ulteriormente la CPU da interrupt e operazioni di copia di dati.

La sigla DRQ sta per DMA Request (richiesta di DMA); la duale DACK sta per DMA Acknowledge (accettazione di DMA).

Voci correlate

Collegamenti esterni