Mis on otsemälupääs (DMA) ja kuidas see töötab? [MiniTooli Wiki]
What Is Direct Memory Access
Kiire navigeerimine:
Saate selle vastu võtta RDMA tehnoloogia, mis võimaldab võrgus asuvatel arvutitel vahetada andmeid põhimälus, ilma et see hõlmaks kummagi arvuti protsessorit, vahemälu või operatsioonisüsteemi. Kuid ka DMA-funktsiooni abil saate andmeid otse manustatud seadmest arvuti emaplaadi mällu saata. See postitus kasutajalt MiniTool räägib peamiselt DMA-st.
Otsemälu juurdepääsu mõiste
Esiteks, mis on otsene mälupääs? Otsemälujuurdepääsu saab lühendada DMA-ks, mis on arvutisüsteemide omadus. See võimaldab sisend- / väljundseadmetel (I / O) pääseda põhisüsteemi mällu ( muutmälu ), mis on sõltumatu keskseadmest (CPU), mis kiirendab mälutoiminguid.
Näpunäide: See postitus võib teile huvi pakkuda - 8 kasulikku lahendust protsessori 100% parandamiseks Windows 10-s .
Ilma otsese mälupääsuta on CPU programmeeritud sisendeid / väljundeid kasutades tavaliselt kogu lugemis- või kirjutamistoimingu ajal täielikult hõivatud, seega ei saa see muid ülesandeid täita. DMA-ga algatab protsessor esmalt ülekande, seejärel teostab ülekande ajal muid toiminguid ja saab lõpuks katkestuse DMA-kontrollerilt (DMAC), kui operatsioon on lõppenud.
Otsene mälupääs on kasulik alati, kui protsessor ei suuda andmeedastuskiirusega sammu pidada või kui protsessor peab tööd tegema, oodates suhteliselt aeglasi sisend- / väljundandmeid.
Mitu riistvarasüsteemi kasutab otsest mälupääsu, näiteks kettaseadme kontrollerid, graafikakaardid, võrgukaardid ja helikaardid. DMA-d kasutatakse ka kiibisiseseks andmeedastuseks mitmetuumalistes protsessorites. Võrreldes otsese mälupääsukanalita arvutitega saavad DMA kanalitega arvutid andmeid seadmete vahel edastada, millel on palju vähem protsessori üldkulusid.
Otsemälujuurdepääsu saab kasutada ka „mälust mällu” andmete kopeerimiseks või teisaldamiseks mälus. See võib kallisid mälutoiminguid (nagu suured koopiad või hajutamise-kogumise toimingud) CPU-st spetsiaalsele DMA-mootorile üle kanda. DMA on oluline võrgus kiibil ja mäluarvutuste arhitektuurides.
Kuidas töötab otsene juurdepääs mälule?
Kuidas siis otsemälupääs töötab? Standardne otsemälu juurdepääs (nimetatakse ka kolmanda osapoole DMA-ks) võtab kasutusele DMA-kontrolleri. DMA-kontroller suudab toota mäluaadresse ja käivitada mälu lugemis- või kirjutamistsükleid. See hõlmab mitut riistvararegistrit, mida protsessor saab lugeda ja kirjutada.
Need registrid koosnevad mäluaadresside registrist, baitide loendiregistrist ja ühest või mitmest juhtimisregistrist. Sõltuvalt otsemälu juurdepääsukontrolleri pakutavatest omadustest saavad need juhtimisregistrid määrata kombinatsiooni allikast, sihtkohast, edastussuunast (loe I / O-seadmest või kirjuta sellele), edastusüksuse suurusest ja / või ühes sarjas edastatavad baidid.
Sisend-, väljund- või mälu-mälu toimingute tegemiseks lähtestab hostprotsessor DMA-kontrolleri edastatavate sõnade arvu ja kasutatava mäluaadressiga. Seejärel käsib protsessor välisseadmel andmeedastuse alustamist.
Seejärel pakub otsemälupääsukontroller aadresse ja kontrollmälude lugemist / kirjutamist süsteemimällu. Iga kord, kui välisseadme ja mälu vahel on ette nähtud andmete bait edastamiseks, suurendab DMA kontroller oma sisemist aadressiregistrit kuni täieliku andmeploki edastamiseni.
Töörežiimid
Otsene juurdepääs mälule töötab erinevates töörežiimides erinevalt.
Sarivõte
Sarivõtte režiimis edastatakse täielik andmeplokk pideva järjestusena. Kui CPU lubab DMA-kontrolleril pääseda juurde siinibussile, kannab DMA-kontroller kõik andmekogus olevad andmebaidid enne süsteemibusside juhtimise vabastamist tagasi protsessorile, kuid see põhjustab CPU-d märkimisväärselt pikka aega. Seda režiimi nimetatakse ka plokiülekanderežiimiks.
Tsükli varastamise režiim
Tsükli varastamise režiimi kasutatakse süsteemis, kus protsessorit ei saa sarivõtte režiimi jaoks vajaliku aja jooksul keelata. Tsüklivarguse režiimis saab DMA kontroller juurdepääsu süsteemibussile, kasutades signaale BR (siinitaotlus) ja BG (siini andmine), mis on samad kui sarivõtterežiim. Need kaks signaali juhivad CPU ja DMA kontrolleri vahelist liidest.
Ühelt poolt ei ole tsüklivargamisrežiimis andmebloki edastuskiirus nii kiire kui sarivõtte režiimis, kuid teisest küljest pole protsessori tühikäigu aeg nii pikk kui purskerežiimis.
Läbipaistev režiim
Läbipaistev režiim võtab andmeplokkide edastamiseks kõige kauem aega, kuid see on ka süsteemi üldise jõudluse osas kõige tõhusam. Läbipaistvas režiimis edastab otsemälu juurdepääsu kontroller andmeid ainult siis, kui protsessor teostab toiminguid, mis ei kasuta süsteemibusse.
Läbipaistva režiimi peamine eelis on see, et keskseade ei peatu kunagi oma programme käivitamast ja otsemälujuurdepääs on aja mõttes tasuta, puuduseks on see, et riistvara peab määrama, millal protsessor ei kasuta süsteemibusse, mis võib olla keeruline. Seda nimetatakse ka „peidetud DMA andmeedastusrežiimiks“.