Ce este accesul direct la memorie (DMA) și cum funcționează? [MiniTool Wiki]
What Is Direct Memory Access
Navigare rapidă:
Puteți adopta RDMA tehnologie pentru a permite computerelor dintr-o rețea să facă schimb de date în memoria principală fără a implica procesorul, memoria cache sau sistemul de operare al oricărui computer. Dar puteți utiliza și funcția DMA pentru a trimite direct date de pe un dispozitiv atașat în memoria de pe placa de bază a computerului. Această postare de la MiniTool vorbește în principal despre DMA.
Definiția accesului direct la memorie
În primul rând, ce este accesul direct la memorie? Accesul direct la memorie poate fi abreviat în DMA, care este o caracteristică a sistemelor informatice. Permite dispozitivelor de intrare / ieșire (I / O) să acceseze memoria principală a sistemului ( memorie cu acces aleator ), independent de unitatea centrală de procesare (CPU), care accelerează operațiunile de memorie.
Bacsis: S-ar putea să vă intereseze această postare - 8 soluții utile pentru a vă repara procesorul 100% în Windows 10 .
Fără acces direct la memorie, atunci când CPU utilizează intrări / ieșiri programate, acesta este de obicei complet ocupat pe parcursul întregii operații de citire sau scriere, deci nu poate îndeplini alte sarcini. Cu DMA, CPU inițiază mai întâi transferul, apoi efectuează alte operații în timp ce transferul este în desfășurare și, în cele din urmă, primește o întrerupere de la controlerul DMA (DMAC) când operațiunea este finalizată.
Accesul direct la memorie este util ori de câte ori CPU nu poate ține pasul cu rata de transfer a datelor sau când CPU trebuie să efectueze lucrări în timp ce așteaptă transferuri de date I / O relativ lente.
Mai multe sisteme hardware adoptă accesul direct la memorie, cum ar fi controlerele unității de disc, plăcile grafice, plăcile de rețea și plăcile de sunet. DMA este, de asemenea, utilizat pentru transferul de date on-chip în procesoare multi-core. În comparație cu computerele fără canale de acces direct la memorie, computerele cu canale DMA pot transfera date între dispozitive cu o supraîncărcare a procesorului mult mai redusă.
Accesul direct la memorie poate fi utilizat și pentru „memorie în memorie” pentru a copia sau muta date în memorie. Poate transfera operațiuni de memorie scumpe (cum ar fi copii mari sau operații de împrăștiere) de la procesor la un motor DMA dedicat. DMA este important în arhitecturile de rețea pe cip și de memorie.
Cum funcționează accesul direct la memorie?
Atunci cum funcționează Accesul direct la memorie? Accesul direct la memorie standard (numit și DMA terță parte) adoptă un controler DMA. Controlerul DMA poate produce adrese de memorie și poate lansa cicluri de citire sau scriere a memoriei. Acoperă mai multe registre hardware care pot fi citite și scrise de CPU.
Aceste registre constau dintr-un registru de adrese de memorie, un registru de numărare de octeți și unul sau mai multe registre de control. În funcție de caracteristicile furnizate de controlerul Direct Memory Access, aceste registre de control pot desemna o combinație de sursă, destinație, direcția de transfer (citire sau scriere pe dispozitivul I / O), dimensiunea unității de transfer și / sau numărul de octeți de transferat într-o singură explozie.
Pentru a efectua operații de intrare, ieșire sau memorie în memorie, procesorul gazdă inițializează controlerul DMA cu numărul de cuvinte de transferat și adresa de memorie de utilizat. Apoi CPU comandă dispozitivului periferic să înceapă transferul de date.
Apoi, controlerul Direct Memory Access oferă adrese și linii de control pentru citire / scriere în memoria sistemului. De fiecare dată când un octet de date este pregătit pentru a fi transferat între dispozitivul periferic și memorie, controlerul DMA își mărește registrul de adrese interne până când este transferat un bloc de date complet.
Moduri de funcționare
Accesul direct la memorie funcționează diferit în diferite moduri de operare.
Foc continuu
În modul rafală, blocul de date complet este transmis într-o succesiune continuă. Odată ce CPU permite controlerului DMA să acceseze magistrala de sistem, controlerul DMA va transfera toate octeții de date în blocul de date înainte de a elibera controlul magistralelor de sistem înapoi la CPU, dar va face ca CPU să fie inactiv pentru o mult timp considerabil. Acest mod se mai numește „Block Transfer Mode”.
Modul furt furt
Modul de furare a ciclului este utilizat într-un sistem în care CPU nu poate fi dezactivat pentru perioada de timp necesară pentru modul de transfer rafală. În modul de furare a ciclului, controlerul DMA obține accesul la magistrala de sistem utilizând semnalele BR (Bus Request) și BG (Bus Grant), care sunt identice cu modul de rafală. Aceste două semnale controlează interfața dintre CPU și controlerul DMA.
Pe de o parte, în modul de furare a ciclului, viteza de transmisie a blocului de date nu este la fel de rapidă ca în modul de rafală, dar pe de altă parte, timpul de inactivitate al procesorului nu este atât de lung ca în modul de rafală.
Mod transparent
Modul transparent durează cel mai mult timp pentru a transfera blocuri de date, dar este și cel mai eficient mod în ceea ce privește performanța generală a sistemului. În modul transparent, controlerul Direct Memory Access transferă date numai atunci când CPU efectuează operațiuni care nu utilizează magistralele de sistem.
Principalul avantaj al modului transparent este că CPU nu încetează niciodată să-și execute programele, iar transferurile de acces direct la memorie sunt gratuite din punct de vedere al timpului, în timp ce dezavantajul este că hardware-ul trebuie să determine când CPU nu folosește magistralele de sistem, care pot fii complicat. Aceasta se mai numește „modul de transfer de date DMA ascuns”.