Kas yra tiesioginė atminties prieiga (DMA) ir kaip ji veikia? [„MiniTool Wiki“]
What Is Direct Memory Access
Greita navigacija:
Galite priimti RDMA technologija, leidžianti tinklo kompiuteriams keistis duomenimis pagrindinėje atmintyje, neįtraukiant nė vieno kompiuterio procesoriaus, talpyklos ar operacinės sistemos. Bet jūs taip pat galite naudoti DMA funkciją, jei norite tiesiogiai siųsti duomenis iš prijungto įrenginio į kompiuterio pagrindinės plokštės atmintį. Šis įrašas iš „MiniTool“ daugiausia kalba apie DMA.
Tiesioginės atminties prieigos apibrėžimas
Visų pirma, kas yra tiesioginė prieiga prie atminties? Tiesioginę atminties prieigą galima sutrumpinti kaip DMA, kuri yra kompiuterinių sistemų bruožas. Tai leidžia įvesties / išvesties (įvesties / išvesties) įrenginiams pasiekti pagrindinę sistemos atmintį ( laisvosios kreipties atmintis ), nepriklausomai nuo centrinio procesoriaus (procesoriaus), kuris pagreitina atminties operacijas.
Patarimas: Galbūt jus domina šis įrašas - 8 naudingi sprendimai, kaip 100% sutvarkyti procesorių sistemoje „Windows 10“ .
Neturint tiesioginės atminties prieigos, kai procesorius naudoja užprogramuotus įvestis / išvestis, jis paprastai būna visiškai užimtas per visą skaitymo ar rašymo operaciją, todėl negali atlikti kitų užduočių. Naudodamas DMA, procesorius pirmiausia inicijuoja perdavimą, tada vykdo kitas operacijas, kol vyksta perkėlimas, ir galiausiai gauna DMA valdiklio (DMAC) pertraukimą, kai operacija bus baigta.
Tiesioginė prieiga prie atminties yra naudinga, kai centrinis procesorius negali atsilikti nuo duomenų perdavimo greičio arba kai procesoriui reikia atlikti darbą laukiant santykinai lėtų įvesties / išvesties duomenų perdavimo.
Kelios aparatinės sistemos priima tiesioginę atminties prieigą, pvz., Disko valdiklių valdiklius, grafikos plokštes, tinklo plokštes ir garso plokštes. DMA taip pat naudojamas duomenų perdavimui lustuose daugelio branduolių procesoriuose. Palyginti su kompiuteriais, neturinčiais tiesioginės atminties prieigos kanalų, kompiuteriai su DMA kanalais gali perduoti duomenis tarp įrenginių, kuriuose yra daug mažiau procesoriaus pridėtinių išlaidų.
Tiesioginė prieiga prie atminties taip pat gali būti naudojama „atminties į atmintį“ duomenims kopijuoti ar perkelti į atmintį. Tai gali perkelti brangias atminties operacijas (pvz., Dideles kopijas arba išsklaidymo rinkimo operacijas) iš centrinio procesoriaus į tam skirtą DMA variklį. DMA yra svarbus tinklo-lusto ir atminties skaičiavimo architektūrose.
Kaip veikia tiesioginė prieiga prie atminties?
Tada kaip veikia tiesioginė prieiga prie atminties? Standartinė tiesioginė atminties prieiga (dar vadinama trečiosios šalies DMA) priima DMA valdiklį. DMA valdiklis gali sukurti atminties adresus ir paleisti atminties skaitymo ar rašymo ciklus. Ji apima kelis aparatūros registrus, kuriuos gali skaityti ir rašyti procesorius.
Šie registrai susideda iš atminties adresų registro, baitų skaičiaus registro ir vieno ar daugiau valdymo registrų. Priklausomai nuo tiesioginės atminties prieigos valdiklio teikiamų funkcijų, šie valdymo registrai gali nustatyti tam tikrą šaltinio, paskirties vietos, perdavimo krypties (skaityti iš I / O įrenginio arba rašyti į jį įvesties / išvesties įrenginį), perdavimo įrenginio dydžio ir (arba) baitų, kuriuos reikia perduoti per vieną seriją.
Norėdami atlikti įvesties, išvesties arba atminties į atmintį operacijas, pagrindinio kompiuterio procesorius inicializuoja DMA valdiklį perduodamų žodžių skaičiumi ir naudojamu atminties adresu. Tada procesorius liepia periferiniam įrenginiui pradėti duomenų perdavimą.
Tada „Direct Memory Access“ valdiklis siūlo adresus ir skaitymo / rašymo valdymo eilutes į sistemos atmintį. Kiekvieną kartą, kai ruošiamasi perduoti duomenų baitą tarp periferinio įrenginio ir atminties, DMA valdiklis didina savo vidinį adresų registrą, kol bus perduotas visas duomenų blokas.
Veikimo režimai
Tiesioginė prieiga prie atminties skirtingais veikimo režimais veikia skirtingai.
„Burst“ režimas
Burst režimu visas duomenų blokas perduodamas ištisine seka. Kai CPU leis DMA valdikliui pasiekti sistemos magistralę, DMA valdiklis perduos visus duomenų baitus duomenų bloke, prieš atleisdamas sistemos magistralių valdymą atgal į procesorių, tačiau dėl to procesorius bus neaktyvus ilgą laiką. Šis režimas taip pat vadinamas „Bloko perdavimo režimu“.
Ciklo vagystės režimas
Ciklo vagystės režimas naudojamas sistemoje, kur procesoriaus negalima išjungti tiek laiko, kiek reikia serijos perdavimo režimui. Ciklo vagystės režimu DMA valdiklis gauna prieigą prie sistemos magistralės naudodamas signalus BR (magistralės užklausa) ir BG (magistralės suteikimas), kurie yra tokie patys kaip serijos režimo. Šie du signalai valdo sąsają tarp procesoriaus ir DMA valdiklio.
Viena vertus, ciklo vagystės režime duomenų bloko perdavimo greitis nėra toks greitas kaip serijos režimu, tačiau, kita vertus, procesoriaus tuščiosios eigos laikas nėra toks ilgas kaip serijos režimo.
Skaidrus režimas
Skaidrus režimas trunka ilgiausiai duomenų blokams perduoti, tačiau tai yra ir efektyviausias režimas, kalbant apie bendrą sistemos našumą. Skaidriame režime tiesioginės atminties prieigos valdiklis perduoda duomenis tik tada, kai procesorius atlieka operacijas, nenaudojančias sistemos magistralių.
Pagrindinis skaidraus režimo pranašumas yra tas, kad procesorius niekada nenustoja vykdyti savo programų, o tiesioginės atminties perkėlimas laiko požiūriu yra nemokamas, o trūkumas yra tas, kad aparatinė įranga turi nustatyti, kada procesorius nenaudoja sistemos magistralių, o tai gali būti sudėtinga. Tai dar vadinama „paslėptu DMA duomenų perdavimo režimu“.