Direct Memory Access: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Collegamenti esterni: Aggiunto il template "FOLDOC" |
|||
(15 versioni intermedie di 12 utenti non mostrate) | |||
Riga 1:
[[File:SistemaDMAC.jpg|thumb|upright=1.4|Funzionamento di un sistema con [http://www.ateneonline.it/bucci/ DMAC] ]]
In [[elettronica]] il '''DMA''' ('''Direct Memory Access''', "''accesso diretto alla memoria''") di una [[CPU]] è quel meccanismo che permette ad altri sottosistemi, quali ad esempio le [[periferica|periferiche]], di accedere direttamente alla [[memoria (informatica)|memoria]] interna per scambiare [[dati]], in lettura e/o scrittura, senza coinvolgere l'[[Unità di controllo (informatica)|unità di controllo]] per ogni [[byte]] trasferito tramite l'usuale meccanismo dell'[[interrupt]] e la successiva richiesta dell'operazione desiderata, ma generando un singolo interrupt per blocco trasferito.<ref>{{Cita|Tanenbaum|pp. 374-375|adc}}</ref><ref>Bucci 137-143</ref>▼
▲In [[
==Descrizione==▼
▲== Descrizione ==
Il DMA, tramite il controllore di accesso diretto (DMAC), ha quindi il compito di gestire i dati passanti nel [[Bus (informatica)|BUS]] permettendo a periferiche che lavorano a velocità diverse di comunicare senza assoggettare la CPU a un enorme carico di [[interrupt]] che ne interromperebbero continuamente il rispettivo [[ciclo del processore|ciclo di elaborazione]].
Riga 10:
Essenzialmente, in un trasferimento DMA un blocco di memoria viene copiato da una periferica a un'altra. Il distacco del [[bus (informatica)|bus dati]] dal [[processore]] per assegnarlo al controllo del DMA, che questi utilizza per il trasferimento dei dati tra le due periferiche, avviene tramite dei ''bus switches'' su richiesta del DMAC. La CPU si limita a dare avvio al trasferimento rilasciando il bus dati, mentre il trasferimento vero e proprio è svolto dal ''controller DMA'' (DMAC). Un caso tipico è lo spostamento di un blocco di memoria da unità di memoria esterna alla [[memoria primaria|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
Il trasferimento tra DMA e I/O può avvenire in diversi modi:
* ''Burst Transfer'': Prevede che, una volta iniziato il trasferimento, il DMA
* ''Cycle Stealing'': Il DMA esegue il trasferimento di parole un solo ciclo completo alla volta (cioè per ogni ciclo si interfaccia con la periferica ed esegue il trasferimento solo se è pronta, in altre parole effettuando un handshaking). Come risultato, il tempo
* ''Transparent/Hidden'': Il DMA occupa il BUS solo quando la CPU non ne ha bisogno. Per far sì che ciò avvenga il DMA sorveglia la CPU e inizia un ciclo di bus solo se l'istruzione in esecuzione nella CPU è abbastanza lunga da consentirlo
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
==
Il chip DMA ha al suo interno almeno quattro registri accessibili dal software in esecuzione nella CPU:
# Il primo contiene l'indirizzo di memoria di partenza per la lettura o la scrittura
# Il secondo conta il numero di byte (o parole) da trasferire
Riga 29 ⟶ 28:
# Il quarto determina se i dati vanno letti dal dispositivo di I/O oppure se devono essere scritti su di esso
Quindi per trasferire un blocco di 32 byte dall'indirizzo di memoria 100 al terminale (sia questo il
Infine quando il contatore si azzera, il controllore DMA smette di trasferire dati e manda un impulso sulla linea di interrupt collegata al chip della CPU. In presenza di DMA, la CPU deve solo inizializzare pochi registri, dopo di che è libera di svolgere altri compiti fino al completamento del trasferimento, segnalato da un interrupt proveniente dal controllore DMA. Alcuni controllori DMA dispongono di due, tre o più insiemi di registri per controllare trasferimenti simultanei.
Riga 46 ⟶ 45:
== Altri progetti ==
{{interprogetto|preposizione=sul}}
== Collegamenti esterni ==
* {{FOLDOC}}
* [
* {{cita web | 1 = http://www.eventhelix.com/RealtimeMantra/FaultHandling/dma_interrupt_handling.htm | 2 = DMA and Interrupt Handling | accesso = 28 aprile 2005 | urlarchivio = https://web.archive.org/web/20140525063518/http://www.eventhelix.com/RealtimeMantra/FaultHandling/dma_interrupt_handling.htm | dataarchivio = 25 maggio 2014 | urlmorto = sì }}
*[https://web.archive.org/web/20141222123532/http://www.uniroma2.it/didattica/MSM-S/deposito/Lucidi_11_-_DMA.pdf Direct Memory Access]
{{Bus computer}}
{{Controllo di autorità}}
{{Portale|informatica}}
|