Tiesioginė prieiga prie atminties (DMA) yra metodas, leidžiantis kompiuteriams efektyviau perduoti duomenis. Vietoj to, kad procesorius tvarkytų kiekvieną perkėlimą, DMA valdiklis siunčia duomenis tiesiai tarp atminties ir įrenginių. Tai taupo laiką, sumažina energijos sąnaudas ir leidžia procesoriui sutelkti dėmesį į kitas užduotis.

Tiesioginės atminties prieigos apžvalga
Tiesioginė prieiga prie atminties arba DMA yra metodas, kurį kompiuteriai naudoja efektyvesniam duomenims perkelti. Procesorius prižiūri informacijos siuntimą iš vienos vietos į kitą kompiuterio viduje. Tai užima laiko ir užima procesorių mažomis užduotimis.
Naudojant DMA, specialią sistemos dalį, vadinamą DMA valdikliu, perima šį darbą. Tai leidžia įrenginiams siųsti arba gauti duomenis tiesiai iš kompiuterio atminties, nepriverčiant procesoriaus atlikti kiekvieną veiksmą. Kol vyksta perkėlimas, procesorius gali laisvai dirbti su kitomis užduotimis.
Dėl šios sąrankos sistema veikia sklandžiau, nes procesoriaus nesulėtina nuolatinis duomenų judėjimas. Tai taip pat padeda taupyti energiją ir pagerina bendrą kompiuterio našumą.
Tiesioginės prieigos prie atminties funkcijos
Greitas duomenų perdavimas
DMA leidžia greitai perkelti didelius duomenų blokus be procesoriaus įsikišimo, pagerinant pralaidumą.
Procesoriaus iškrovimas
CPU atleidžiamas nuo pasikartojančių duomenų perkėlimo užduočių, todėl jį galima apskaičiuoti.
Sumažintas pertraukimas virš galvos
DMA sumažina pertraukimų skaičių, palyginti su užprogramuotu I/O, sumažindamas sistemos pridėtines išlaidas.
Tiesioginė atmintis
Periferiniai įrenginiai gali tiesiogiai skaityti iš atminties arba rašyti į ją, išvengdami papildomų procesoriaus tarpininkaujamų kopijų.
Daugiakanalis palaikymas
Šiuolaikiniai DMA valdikliai palaiko kelis nepriklausomus kanalus, leidžiančius vienu metu perduoti duomenis.
Serijos perdavimo galimybė
DMA palaiko serijos režimą, perduodant duomenų blokus vienu nepertraukiamu srautu, kad būtų efektyvu.
Prioritetas ir arbitražas
DMA valdikliai naudoja prioriteto lygius, kad nuspręstų, kuris kanalas gauna prieigą prie atminties magistralės.
Perdavimo režimai
Palaiko įvairius režimus, tokius kaip vienkartinis, blokinis, serijinis ir paklausa pagrįstas perdavimas, priklausomai nuo sistemos poreikių.
Suderinamumas su keliais autobusais
Veikia su įvairiomis sisteminėmis magistralėmis, kad būtų galima lanksčiai integruoti.
Klaidų aptikimas ir tvarkymas
Daugelis DMA sistemų apima pariteto patikrinimus arba klaidų taisymą, kad būtų užtikrintas duomenų vientisumas.
Perkėlimas iš atminties į atmintį
Kai kurie DMA valdikliai leidžia tiesiogiai kopijuoti duomenis iš vienos atminties vietos į kitą, nereikalaujant procesoriaus įsikišimo.
Žingsnis po žingsnio DMA operacija
| Žingsnis | Kas atsitiks? | Signalas / veiksmas |
|---|---|---|
| 1 | Įrenginys prašo DMA paslaugos. | DRQ (DMA užklausos) linija aktyvuota |
| 2 | DMA valdiklis prašo valdyti sistemos magistralę. | BR (autobusų užklausa) |
| 3 | Procesorius laikinai išleidžia magistralę į DMA valdiklį. | BG (autobusų dotacija) |
| 4 | DMA valdiklis nustato atminties adresą ir perduodamų žodžių (duomenų vienetų) skaičių. | Adresų ir skaičiavimo registrai |
| 5 | Duomenys perduodami tiesiogiai tarp įvesties / išvesties įrenginio ir RAM, apeinant procesorių. | Tiesioginis pervedimas |
| 6 | Baigęs DMA valdiklis informuoja procesorių. | INTR (pertraukti) |
DMA valdiklis ir jo jungtys

Pagrindinės dalys yra procesorius, atmintis, DMA valdiklis ir įvesties / išvesties (I/O) įrenginiai. DMA valdiklis prižiūri duomenų perkėlimą tarp atminties ir įvesties / išvesties įrenginių, nereikalaujant procesoriaus atlikti visą darbą.
Kai įvesties / išvesties įrenginiui reikia siųsti arba gauti duomenis, jis siunčia užklausą DMA valdikliui. Tada valdiklis prašo procesoriaus leidimo naudoti sistemos magistralę, kuri yra pagrindinis duomenų kelias kompiuteryje. Kai procesorius leidžia, DMA valdiklis perima valdymą ir perduoda duomenis tiesiai tarp atminties ir įvesties / išvesties įrenginio. Baigus perkėlimą, jis praneša procesoriui, kad užduotis baigta.
Diagramoje taip pat parodytos skirtingos linijos, kuriose pateikiama informacija. Adresų eilutės (pilka) nusprendžia, kur turi būti siunčiami duomenys, duomenų eilutės (žalia) perduoda tikrąją informaciją, o valdymo linijos (oranžinė) valdo procesą. DMA magistralė sujungia kelis įvesties / išvesties įrenginius su valdikliu. Ši sąranka padeda sistemai sklandžiau tvarkyti duomenis ir išlaiko procesorių laisvą kitoms užduotims atlikti.
DMA perdavimo būdai ir jų skirtumai
| Režimas | Kaip tai veikia | Greitis | Procesoriaus poveikis |
|---|---|---|---|
| Serijos režimas | Perkelia visą duomenų bloką viena nepertraukiama seka | Labai didelis | CPU sustabdytas iki perkėlimo pabaigos |
| Ciklo vagystė | Perkelia vieną žodį per magistralės ciklą, persikeliant su procesoriaus ciklais | Vidutinis | Procesorius šiek tiek sulėtėjo, bet nesustojo |
| Skaidrus režimas | Perkeliama tik tada, kai procesorius neveikia arba nesinaudoja magistrale | Apatinis | Procesorius veikia be pertraukų |
DMA pagrindiniai stiliai
Magistralės valdymas (pirmosios šalies DMA)
Magistralės įsisavinimo metu pats įrenginys laikinai prisiima sistemos magistralės valdiklio vaidmenį. Tai reiškia, kad jis gali tiesiogiai skaityti iš atminties arba rašyti į ją be nuolatinės procesoriaus priežiūros. Kadangi įrenginys valdo savo pervedimus, procesas yra labai greitas ir efektyvus. Šiuolaikiniai didelio našumo komponentai, tokie kaip PCIe GPU, NVMe diskai ir tinklo plokštės, dažnai naudoja šį metodą. Šių perkėlimų metu procesorius dažniausiai yra nemokamas, o tai pagerina bendrą sistemos našumą.
Trečiųjų šalių DMA (pagrįsta valdikliu)
Šiame modelyje centrinis DMA valdiklis yra atsakingas už duomenų perdavimą kelių įrenginių vardu. Kiekvienas įrenginys siunčia savo užklausą valdikliui, kuris perima magistralės valdymą duomenims perkelti. Šis metodas buvo standartinis ankstesnėse kompiuterinėse sistemose ir vis dar paplitęs įterptuosiuose mikrovaldikliuose, kur aparatinė įranga turi išlikti paprasta ir ekonomiška. Tai lėčiau nei magistralės valdymas, nes visi įrenginiai turi tą patį valdiklį, o tai lemia laukimo laiką ir pridėtines išlaidas.
Išsklaidykite-surinkite DMA
Daugeliu atvejų atmintyje esantys duomenys nėra saugomi vienoje tiesioje linijoje. Jį galima padalyti į skirtingas vietas. "Scatter-Gather DMA" leidžia perkelti visus šiuos duomenis vienu metu, net jei jie yra išsklaidyti.
DMA kontrolierius saugo sąrašą, kuriame nurodoma, kur yra kiekvienas duomenų vienetas. Tada seka šis sąrašas, kad surinktų gabalus ir perkeltų juos kaip vieną bloką.
"Scatter-Gather DMA" privalumai
• Perkelia išsklaidytus duomenis be papildomų veiksmų.
• Reikia mažiau signalų į procesorių.
• Užtikrina greitesnį ir sklandesnį duomenų perdavimą.
• Taupo vietą atmintyje, nes išvengiama papildomų kopijų.
DMA ir talpyklos sinchronizavimas
DMA perkelia duomenis tiesiai tarp įrenginio ir atminties, o procesorius dažnai veikia su savo talpykla. Dėl šios priežasties procesorius ir DMA kartais gali matyti skirtingas tų pačių duomenų versijas. Tai problema, nes jei procesoriaus talpykloje vis dar yra senų duomenų, įrenginio atliktų pakeitimų galima nepaisyti. Jei procesoriaus talpykloje yra naujų duomenų, įrenginys gali nuskaityti pasenusias reikšmes iš atminties. Tai nustatoma:
• Procesorius gali išvalyti talpyklą prieš prietaisui nuskaitant, todėl atmintyje yra naujausi duomenys.
• Procesorius gali anuliuoti talpyklą po to, kai įrenginys įrašo, todėl įkelti atnaujintus duomenis iš atminties.
• Šiuolaikiniai procesoriai naudoja talpyklą atitinkančią DMA, kuri tai tvarko automatiškai.
TMO vaidmuo užtikrinant DMA saugą
| Funkcija | Funkcija | Nauda |
|---|---|---|
| Adresų atvaizdavimas | Įrenginio DMA užklausas paverčia galiojančiais atminties adresais | Apsaugo nuo atsitiktinio ar žalingo duomenų sugadinimo |
| Izoliacija | Apriboja kiekvieno įrenginio priskirtas atminties zonas | Apsaugo sistemą nuo sugedusių ar kenkėjiškų įrenginių |
| 64 bitų palaikymas | Išplečia adresavimą virš 32 bitų ribų | Palaiko šiuolaikinius įrenginius, kuriems reikia daug atminties |
Saugumo problemos: DMA atakos ir apsauga
Saugumo rizika
• Duomenų vagystė per neteisėtą DMA prieigą.
• Kenkėjiškų programų injekcija į sistemos atmintį.
• Perkūno piktosios tarnaitės išpuoliai prieš nešiojamuosius kompiuterius.
2 Apsaugos priemonės
• Įgalinkite IOMMU / VT-d / AMD-Vi.
• Naudokite branduolio DMA apsaugą ("Windows").
• Išjunkite nenaudojamus išorinius prievadus.
• Naudokite apsaugotus kompiuterius ir BIOS/UEFI apribojimus.
Įvairūs DMA taikymai
Disko ir saugyklos perkėlimas
DMA leidžia kietiesiems diskams, SSD ir optiniams diskams perkelti didelius duomenų blokus tiesiai į atmintį, neapkraunant procesoriaus.
Tinklo sąsajos
Tinklo plokštės naudoja DMA, kad greitai perkeltų gaunamus ir siunčiamus paketus, todėl užtikrinamas greitas ryšys nesulėtinant procesoriaus.
Garso ir vaizdo apdorojimas
Garso plokštės, grafikos procesoriai ir vaizdo įrašymo įrenginiai remiasi DMA, kad apdorotų nuolatinius duomenų srautus su minimalia delsa.
Įterptosios sistemos
Mikrovaldikliai naudoja DMA, kad iškrautų pasikartojančius duomenų judesius (pvz., ADC rodmenis ar UART buferius), atlaisvindami procesoriaus ciklus valdymo užduotims atlikti.
Grafikos atvaizdavimas
GPU taiko DMA tekstūros įkėlimui ir kadrų buferio atnaujinimams, palaikydami sklandų atvaizdavimą žaidimuose ir vaizdinėse programose.
Išvada
Tiesioginė prieiga prie atminties (DMA) pagerina kompiuterio efektyvumą, nes perkelia duomenis tiesiai iš atminties į įrenginius, nepasikliaujant procesoriumi. Tai sumažina vėlavimą, sumažina energijos sąnaudas ir leidžia sklandžiau atlikti tokias užduotis kaip saugojimas, tinklas ir grafika. Su integruotu klaidų tvarkymu ir saugos funkcijomis DMA išlieka patikimu greito ir efektyvaus duomenų perdavimo būdu.
Dažnai užduodami klausimai [DUK]
Kuo DMA skiriasi nuo užprogramuoto I/O?
DMA perduoda duomenis naudodamasis valdikliu, o užprogramuotas I/O kiekvieno perdavimo metu priklauso nuo procesoriaus.
Kaip DMA taupo energiją?
Tai išlaisvina procesorių nuo nuolatinių perdavimų, todėl jis gali dažniau pereiti į mažos galios būsenas.
Kokią atmintį gali pasiekti DMA?
DMA gali pasiekti sistemos RAM, vaizdo atmintį, buferinę atmintį ir kartais kopijuoti duomenis tarp atminties regionų.
Ar DMA gali valdyti kelis įrenginius vienu metu?
Taip, DMA valdikliai naudoja prioritetą ir arbitražą, kad nuspręstų, kuris įrenginys perduodamas pirmas.
Kokios yra pagrindinės DMA ribos?
Jis neefektyvus mažiems perdavimams ir gali sukelti talpyklos neatitikimus be tinkamo sinchronizavimo.
Kodėl DMA yra svarbus tikrosiose sistemose?
Jis užtikrina greitą, mažos delsos duomenų perdavimą, todėl procesorius gali sutelkti dėmesį į svarbias užduotis.