Direct Memory Access: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m →Funzionamento: Rimosso link |
→Collegamenti esterni: Aggiunto il template "FOLDOC" |
||
(6 versioni intermedie di 5 utenti non mostrate) | |||
Riga 1:
[[File:SistemaDMAC.jpg|thumb|upright=1.4|Funzionamento di un sistema con [http://www.ateneonline.it/bucci/ DMAC] ]]
In [[informatica]] il '''DMA''' ('''Direct Memory Access''', "''accesso diretto alla memoria''") di un [[computer]] è 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]] (CPU) 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 [[informatica]] il '''
==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 23:
== Funzionamento ==
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 dispositivo 4) la CPU scrive i numeri 100, 32 e 4 nei primi tre registri DMA, più il codice per la scrittura (in questo caso supponiamo essere 1) nel quarto registro. A questo punto
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}}
* [https://www.xml.com/ldd/chapter/book/ch13.html mmap() and DMA], da ''Linux Device Drivers, 2nd Edition'', Alessandro Rubini & Jonathan Corbet
* {{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ì }}
Riga 54:
{{Bus computer}}
{{Controllo di autorità}}
{{Portale|informatica}}
|