Direct Memory Access

Article on other languages:

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire

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ù frammentato;
  • 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

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.


Giant Panda

Mercedes Car
James Bond Guide
This site monitored by SitePinger.net