Accesso diretto alla memoria (DMA) nell'architettura del computer

Accesso diretto alla memoria (DMA) nell'architettura del computer

Per l'esecuzione di un programma per computer, richiede il funzionamento sincrono di più componenti di un computer. Per esempio, Processori - fornire le informazioni di controllo necessarie, gli indirizzi ... ecc., I bus - per trasferire informazioni e dati da e verso la memoria ai dispositivi I / O ... ecc. Il fattore interessante del sistema sarebbe il modo in cui gestisce il trasferimento di informazioni tra processore, memoria e dispositivi I / O. Di solito, i processori controllano tutto il processo di trasferimento dei dati, dall'inizio del trasferimento all'archiviazione dei dati a destinazione. Questo aggiunge carico al processore e il più delle volte rimane nello stato ideale, diminuendo così l'efficienza del sistema. Per accelerare il trasferimento dei dati tra i dispositivi I / O e la memoria, il controller DMA funge da master della stazione. Il controller DMA trasferisce i dati con un intervento minimo del processore.



Cos'è un controller DMA?

Il termine DMA sta per accesso diretto alla memoria. Il dispositivo hardware utilizzato per l'accesso diretto alla memoria è denominato controller DMA. DMA controller è un'unità di controllo , parte del dispositivo I / O circuito di interfaccia , che può trasferire blocchi di dati tra i dispositivi I / O e la memoria principale con un intervento minimo da parte del processore.


Diagramma del controller DMA nell'architettura del computer

Il controller DMA fornisce un'interfaccia tra il bus e i dispositivi di input-output. Sebbene trasferisca i dati senza l'intervento del processore, è controllato dal processore. Il processore avvia il controller DMA inviando l'indirizzo iniziale, il numero di parole nel blocco dati e la direzione del trasferimento dei dati, ad esempio. dai dispositivi I / O alla memoria o dalla memoria principale ai dispositivi I / O. È possibile collegare più di un dispositivo esterno al controller DMA.





DMA in Computer Architecture

DMA in Computer Architecture

Il controller DMA contiene un'unità di indirizzi, per la generazione degli indirizzi e la selezione del dispositivo I / O per il trasferimento. Contiene anche l'unità di controllo e il conteggio dei dati per tenere il conteggio del numero di blocchi trasferiti e indicare la direzione del trasferimento dei dati. Quando il trasferimento è completato, DMA informa il processore generando un interrupt. Il tipico schema a blocchi del controller DMA è mostrato nella figura seguente.



Schema a blocchi tipico del controller DMA

Schema a blocchi tipico del controller DMA

Funzionamento del controller DMA

Il controller DMA deve condividere il bus con il processore per effettuare il trasferimento dei dati. Il dispositivo che tiene il bus in un dato momento è chiamato bus master. Quando deve essere effettuato un trasferimento dal dispositivo I / O alla memoria o viceversa, il processore interrompe l'esecuzione del programma corrente, incrementa il programma counter, sposta i dati sullo stack, quindi invia un segnale di selezione DMA al controller DMA tramite il bus degli indirizzi.

Se il controller DMA è libero, richiede il controllo del bus dal processore alzando il segnale di richiesta del bus. Il processore concede il bus al controller aumentando il segnale di concessione del bus, ora il controller DMA è il bus master. Il processore avvia il controller DMA inviando gli indirizzi di memoria, il numero di blocchi di dati da trasferire e la direzione del trasferimento dei dati. Dopo aver assegnato il compito di trasferimento dati al controller DMA, invece di attendere idealmente fino al completamento del trasferimento dati, il processore riprende l'esecuzione del programma dopo aver recuperato le istruzioni dallo stack.


Trasferimento di dati tramite DMA nel computer tramite DMA

Trasferimento di dati nel computer da parte del controller DMA

Il controller DMA ora ha il pieno controllo dei bus e può interagire direttamente con i dispositivi di memoria e I / O indipendentemente dalla CPU. Effettua il trasferimento dei dati secondo le istruzioni di controllo ricevute dal processore. Dopo il completamento del trasferimento dei dati, disabilita il segnale di richiesta del bus e la CPU disabilita il segnale di concessione del bus spostando così il controllo dei bus alla CPU.

Quando un dispositivo I / O desidera avviare il trasferimento, invia un segnale di richiesta DMA al controller DMA, per il quale il controller riconosce se è libero. Quindi il controller richiede al processore il bus, aumentando il segnale di richiesta del bus. Dopo aver ricevuto il segnale di concessione del bus trasferisce i dati dal dispositivo. Per n controller DMA canalizzato n numero di dispositivi esterni possono essere collegati.

Il DMA trasferisce i dati in tre modalità che includono quanto segue.

per) Modalità burst : In questa modalità DMA passa i bus alla CPU solo dopo il completamento dell'intero trasferimento dei dati. Nel frattempo, se la CPU richiede il bus, deve rimanere ideale e attendere il trasferimento dei dati.

b) Modalità furto del ciclo : In questa modalità, DMA fornisce il controllo dei bus alla CPU dopo il trasferimento di ogni byte. Emette continuamente una richiesta di controllo del bus, effettua il trasferimento di un byte e restituisce il bus. Con questa CPU non è necessario attendere molto tempo se ha bisogno di un bus per attività con priorità più alta.

c) Modalità trasparente: In questo caso, DMA trasferisce i dati solo quando la CPU sta eseguendo l'istruzione che non richiede l'uso di bus.

8237 DMA Controller

  • 8237 ha 4 canali I / O insieme alla flessibilità di aumentare il numero di canali.
  • Ogni canale può essere programmato individualmente e ha un indirizzo di 64k e capacità di dati.
  • Il blocco di controllo della temporizzazione, il blocco di controllo del comando di programma, il blocco dell'encoder prioritario sono i tre blocchi principali di 8237A.
  • La temporizzazione interna e i segnali di controllo esterno sono guidati dal blocco di controllo della temporizzazione.
  • Vari comandi dati dal microprocessore al DMA vengono decodificati dal blocco di controllo dei comandi di programma.
  • A quale canale deve essere assegnata la massima priorità viene deciso dalla priorità blocco encoder .
    8237A dispone di 27 registri interni.

8237A opera in due cicli: ciclo ideale e ciclo attivo, in cui ogni ciclo contiene 7 stati separati composti da un periodo di clock ciascuno.

S0- Il primo stato, in cui il controller ha richiesto il bus e in attesa del riconoscimento dal processore.

S1, S2, S3, S4 sono chiamati gli stati di lavoro dell'8237A in cui avviene l'effettivo trasferimento dei dati. Se è necessario più tempo per il trasferimento, gli stati di attesa vengono aggiunti SW tra questi stati.

Per il trasferimento da memoria a memoria è necessario eseguire trasferimenti di lettura dalla memoria e scrittura su memoria. Otto stati sono necessari per il trasferimento singolo. I primi quattro stati con pedici S11, S12, S13, S14 eseguono il trasferimento di lettura dalla memoria e i successivi quattro S21, S22, S23, S24 sono per il trasferimento di scrittura su memoria.

DMA entra nello stato ideale quando nessun canale richiede il servizio ed esegue lo stato SI. SI è uno stato inattivo in cui il DMA è inattivo fino a quando non riceve una richiesta. In questo stato, DMA è in condizione di programma in cui il processore può programmare il DMA.

Quando DMA è nello stato ideale e non riceve ulteriori richieste di canale, invia un segnale HRQ al processore ed entra in stato Attivo dove può avviare il trasferimento dei dati in modalità burst, modalità di furto del ciclo o modalità trasparente.

8237 PinDiagram

Schema pin 8237

8257 DMA Controller

Quando accoppiato con una singola porta I / O Intel 8212, il controller DMA 8257 forma un completo 4 canali Controller DMA . Dopo aver ricevuto una richiesta di trasferimento, il controller 8257-

  • Acquisisce il controllo sul bus di sistema dal processore.
  • La periferica collegata al canale con la priorità più alta viene riconosciuta.
  • I bit meno significativi dell'indirizzo di memoria vengono spostati sulle linee di indirizzo A0-A7 del bus di sistema.
  • Il più significativo 8 bit dell'indirizzo di memoria sono guidati alla porta 8212 I / O attraverso linee di dati.
  • Genera i segnali di controllo appropriati per il trasferimento di dati tra periferiche e locazioni di memoria indirizzate.
  • Quando il numero di byte specificato viene trasferito, il controllore informa la CPU della fine del trasferimento attivando l'uscita del conteggio dei terminali (TC).

Per ogni canale 8257 ne contiene due Registri a 16 bit - 1) Registro indirizzo DMA e 2) Registro conteggio terminale, che dovrebbe essere inizializzato prima che un canale venga abilitato. L'indirizzo della prima locazione di memoria a cui accedere viene caricato nel registro degli indirizzi DMA. I 14 bit di ordine inferiore del valore caricato nel registro di conteggio del terminale indicano il numero di cicli DMA meno uno prima dell'attivazione dell'uscita di conteggio del terminale. Il tipo di operazione per un canale è indicato dai due bit più significativi del registro di conteggio terminale.

8257 Diagramma pin

8257 Diagramma pin

Vantaggi e svantaggi del controller DMA

I vantaggi e gli svantaggi del controller DMA includono quanto segue.

Vantaggi

  • DMA velocizza le operazioni di memoria bypassando il coinvolgimento della CPU.
  • Il sovraccarico di lavoro sulla CPU diminuisce.
  • Per ogni trasferimento sono necessari solo pochi cicli di clock

Svantaggi

  • Il problema di coerenza della cache può essere visto quando DMA viene utilizzato per il trasferimento dei dati.
  • Aumenta il prezzo del sistema.

DMA ( Accesso diretto alla memoria ) viene utilizzato in schede grafiche, schede di rete, schede audio, ecc ... DMA viene utilizzato anche per il trasferimento intra-chip nei processori multi-core. Operando in una delle sue tre modalità, DMA può ridurre notevolmente il carico del processore. In quale delle modalità di DMA hai lavorato? Quale delle modalità consideri più efficace?