Che cos'è l'accesso diretto alla memoria (DMA) e come funziona? [MiniTool Wiki]
What Is Direct Memory Access
Navigazione rapida:
Puoi adottare il RDMA tecnologia per consentire ai computer di una rete di scambiare dati nella memoria principale senza coinvolgere il processore, la cache o il sistema operativo di entrambi i computer. Ma puoi anche utilizzare la funzione DMA per inviare direttamente i dati da un dispositivo collegato alla memoria sulla scheda madre del computer. Questo post di MiniTool parla principalmente di DMA.
La definizione di accesso diretto alla memoria
Prima di tutto, cos'è l'accesso diretto alla memoria? Direct Memory Access può essere abbreviato in DMA, che è una caratteristica dei sistemi informatici. Consente ai dispositivi di input / output (I / O) di accedere alla memoria di sistema principale ( memoria ad accesso casuale ), indipendente dall'unità di elaborazione centrale (CPU), che accelera le operazioni di memoria.
Mancia: Potresti essere interessato a questo post - 8 soluzioni utili per riparare la CPU al 100% in Windows 10 .
Senza Direct Memory Access, quando la CPU utilizza ingressi / uscite programmati, di solito è completamente occupata durante l'intera operazione di lettura o scrittura, quindi non può eseguire altre attività. Con DMA, la CPU inizia prima il trasferimento, quindi esegue altre operazioni mentre il trasferimento è in corso e infine riceve un interrupt dal controller DMA (DMAC) quando l'operazione è completa.
L'accesso diretto alla memoria è utile ogni volta che la CPU non riesce a tenere il passo con la velocità di trasferimento dei dati o quando la CPU deve eseguire il lavoro in attesa di trasferimenti di dati I / O relativamente lenti.
Più sistemi hardware adottano l'accesso diretto alla memoria, come controller di unità disco, schede grafiche, schede di rete e schede audio. DMA viene utilizzato anche per il trasferimento di dati su chip nei processori multi-core. Rispetto ai computer senza canali di accesso diretto alla memoria, i computer con canali DMA possono trasferire dati tra dispositivi con un sovraccarico della CPU molto inferiore.
L'accesso diretto alla memoria può essere utilizzato anche per 'da memoria a memoria' per copiare o spostare i dati nella memoria. Può trasferire costose operazioni di memoria (come copie di grandi dimensioni o operazioni di raccolta differenziata) dalla CPU a un motore DMA dedicato. DMA è importante nelle architetture network-on-chip e memory computing.
Come funziona l'accesso diretto alla memoria?
Allora come funziona Direct Memory Access? L'accesso diretto alla memoria standard (chiamato anche DMA di terze parti) adotta un controller DMA. Il controller DMA può produrre indirizzi di memoria e avviare cicli di lettura o scrittura della memoria. Copre più registri hardware che possono essere letti e scritti dalla CPU.
Questi registri sono costituiti da un registro degli indirizzi di memoria, un registro di conteggio dei byte e uno o più registri di controllo. A seconda delle funzionalità fornite dal controller di accesso diretto alla memoria, questi registri di controllo possono nominare una combinazione di sorgente, destinazione, direzione di trasferimento (lettura da o scrittura su dispositivo I / O), dimensione dell'unità di trasferimento e / o numero di byte da trasferire in una raffica.
Per eseguire operazioni di input, output o da memoria a memoria, il processore host inizializza il controller DMA con il numero di parole da trasferire e l'indirizzo di memoria da utilizzare. Quindi la CPU comanda alla periferica di iniziare il trasferimento dei dati.
Quindi il controller di accesso diretto alla memoria offre indirizzi e linee di controllo di lettura / scrittura alla memoria di sistema. Ogni volta che un byte di dati viene preparato per essere trasferito tra il dispositivo periferico e la memoria, il controller DMA incrementa il proprio registro degli indirizzi interni fino a quando non viene trasferito un blocco dati completo.
Modalità di funzionamento
L'accesso diretto alla memoria funziona in modo diverso nelle diverse modalità di funzionamento.
Modalità burst
In modalità burst, l'intero blocco di dati viene trasmesso in una sequenza continua. Una volta che la CPU consente al controller DMA di accedere al bus di sistema, il controller DMA trasferirà tutti i byte di dati nel blocco dati prima di rilasciare il controllo dei bus di sistema alla CPU, ma renderà la CPU inattiva per un tempo considerevole. Questa modalità è anche chiamata 'Block Transfer Mode'.
Modalità furto del ciclo
La modalità di furto del ciclo viene utilizzata in un sistema in cui la CPU non può essere disabilitata per il periodo di tempo richiesto per la modalità di trasferimento burst. Nella modalità di furto del ciclo, il controller DMA ottiene l'accesso al bus di sistema utilizzando i segnali BR (richiesta bus) e BG (concessione bus), che sono gli stessi della modalità burst. Questi due segnali controllano l'interfaccia tra la CPU e il controller DMA.
Da un lato, nella modalità di furto del ciclo, la velocità di trasmissione del blocco dati non è veloce come nella modalità burst, ma d'altra parte, il tempo di inattività della CPU non è così lungo come nella modalità burst.
Modalità trasparente
La modalità trasparente impiega il tempo più lungo per trasferire i blocchi di dati, ma è anche la modalità più efficiente in termini di prestazioni complessive del sistema. In modalità trasparente, il controller di accesso diretto alla memoria trasferisce i dati solo quando la CPU esegue operazioni che non utilizzano i bus di sistema.
Il vantaggio principale della modalità trasparente è che la CPU non smette mai di eseguire i suoi programmi e i trasferimenti di accesso diretto alla memoria sono gratuiti in termini di tempo, mentre lo svantaggio è che l'hardware deve determinare quando la CPU non sta utilizzando i bus di sistema, il che può essere complicato. Questa è anche chiamata 'modalità di trasferimento dati DMA nascosta'.