Acces direct la memorie

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Funcționarea unui sistem cu DMAC

În informatică, DMA ( Direct Memory Access , „ acces direct la memorie ”) al unui computer este mecanismul care permite altor subsisteme, precum perifericele , să acceseze direct memoria internă pentru a face schimb de date , în citire și / sau scriere. , fără a implica unitatea de control (CPU) pentru fiecare octet transferat prin mecanismul obișnuit de întrerupere și cererea ulterioară pentru operația dorită, dar prin generarea unei întreruperi unice pe blocul transferat. [1] [2]

Descriere

DMA, prin regulatorul de acces direct (DMAC), prin urmare , are sarcina de gestionare a datelor care trec prin BUS permițând periferice care lucrează la viteze diferite pentru a comunica fără a supune CPU la o enormă întrerupere de sarcină , care ar fi în mod continuu de întrerupere cea respectivă. Procesare ciclu .

DMA este utilizat de multe sisteme hardware, cum ar fi controlerele unităților de disc , plăcile grafice , plăcile de rețea și plăcile de sunet .

În esență, într-un transfer DMA, un bloc de memorie este copiat de la un dispozitiv la altul. Desprinderea magistralei de date de procesor pentru al atribui controlului DMA, pe care acesta din urmă îl folosește pentru transferul de date între cele două periferice, are loc prin intermediul comutatoarelor de magistrală la cererea DMAC. CPU pur și simplu inițiază transferul prin eliberarea magistralei de date, în timp ce transferul efectiv se face de către controlerul DMA (DMAC). Un caz tipic este mutarea unui bloc de memorie de pe unitatea de memorie externă în memoria principală . Dacă această operație, ca și în cazul DMA, nu blochează procesorul, poate continua să efectueze alte operații.

DMA operează transferuri între CPU și periferice prin utilizarea diferitelor linii (Confirmare, control cerere) și a celor două registre DC (Data Counter) și Ioar (Input / Output Address Register). Când CPU-ul are nevoie de date prezente în memorie, acesta încarcă adresa de la care să înceapă operația în IOAR și numărul de date consecutive care urmează să fie procesate în DC, informând DMA pe un bit suplimentar dacă este o operație de citire sau scriere. În acest moment, DMA trimite solicitarea către periferic și când primește semnalul de confirmare începe transferul. La fiecare pas IOAR crește și DC scade până când DC este egal cu 0.

Transferul între DMA și I / O poate avea loc în mai multe moduri:

  • Burst Transfer : Odată ce transferul a început, DMA menține controlul BUS-ului în detrimentul procesorului, până când acesta este terminat: accesul la bus de către CPU rămâne refuzat pe parcursul întregului transfer. Aceasta presupune că dispozitivul și memoria permit un transfer la fel de rapid și durabil de cât are nevoie controlerul DMA;
  • Furt de ciclu : DMA efectuează transferul de cuvinte doar un ciclu complet la un moment dat (adică pentru fiecare ciclu se interfață cu perifericul și efectuează transferul numai dacă este gata, cu alte cuvinte efectuând o strângere de mână). Ca rezultat, timpul în care procesorului i se refuză accesul la magistrala de date este mai fragmentat;
  • Transparent / Ascuns : DMA ocupă BUS-ul numai atunci când CPU-ul nu are nevoie de el. Pentru a face acest lucru, DMA monitorizează CPU și pornește un ciclu de magistrală numai dacă instrucțiunea executată în CPU este suficient de lungă pentru a permite acest lucru și dacă această instrucțiune nu se referă la transferuri pe BUS.

Tehnica DMA scatter-collect permite transferul de date în mai multe regiuni de memorie în timpul unei singure tranzacții DMA. Rezultatul este echivalent cu un lanț de cereri DMA normale, dar aceasta scutește în continuare procesorul de întreruperi și operații de copiere a datelor.

Acronimul DMREQ înseamnă DMA REQuest . DMACK reprezintă confirmarea DMA .

Operațiune

Cipul DMA are în interior cel puțin patru registre accesibile de către software-ul care rulează în CPU:

  1. Prima conține adresa de memorie de pornire pentru citire sau scriere
  2. Al doilea numără numărul de octeți (sau cuvinte) de transferat
  3. Al treilea specifică numărul dispozitivului sau spațiul de adresă I / O de utilizat, care determină dispozitivul I / O dorit
  4. Al patrulea determină dacă datele trebuie citite de pe dispozitivul I / O sau dacă ar trebui să fie scrise pe acesta

Prin urmare, pentru a transfera un bloc de 32 de octeți de la adresa de memorie 100 la terminal (acesta este dispozitivul 4) CPU scrie numerele 100, 32 și 4 în primele trei registre DMA, plus codul pentru scriere (în acest caz să fie 1) în al patrulea registru. În acest moment, DMA face o cerere de magistrală pentru a citi octetul 100 din memorie, similar cu modul în care ar face procesorul. Odată ce octetul este obținut, controlerul DMA ar face o cerere de I / O către dispozitivul 4 menită să scrie octetul. La finalizarea acestor operațiuni, controlerul DMA își mărește registrul de adrese cu 1 și își micșorează registrul contor cu 1. Dacă registrul contorului este încă pozitiv, acesta continuă cu citirea memoriei unui alt octet și scrierea acestuia în dispozitiv.

În cele din urmă, când contorul se elimină, controlerul DMA încetează să mai transfere date și trimite un impuls pe linia de întrerupere conectată la cipul CPU. În prezența DMA, CPU trebuie doar să inițializeze câteva registre, după care este liber să efectueze alte sarcini până când transferul este finalizat, semnalat printr-o întrerupere de la controlerul DMA. Unele controlere DMA au două, trei sau mai multe seturi de registre pentru a controla transferurile simultane.

În timp ce DMA scutește CPU de sarcina mare de I / O, procesul nu este complet gratuit. Dacă un dispozitiv de mare viteză, cum ar fi un disc, este transferat de DMA, va dura multe cicluri de magistrală pentru a accesa memoria și dispozitivul. În timpul acestor cicluri CPU trebuie să aștepte (DMA are întotdeauna o prioritate a magistralei mai mare decât cea a procesorului, deoarece dispozitivele I / O tolerează cu greu întârzierile). Fenomenul care apare atunci când controlerul DMA scade ciclurile magistralei către CPU este numit însușirea ciclurilor (furtul ciclului, furtul ciclurilor "de"). Nici câștigul în a nu fi nevoit să gestioneze o întrerupere pe octet (sau pe cuvânt) rambursează în mare măsură daunele cauzate de însușirea buclelor.

Notă

  1. ^ Tanenbaum , pp. 374-375 .
  2. ^ Bucci 137-143

Bibliografie

Elemente conexe

Alte proiecte

linkuri externe

Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT