Hva er direkte minnetilgang (DMA) og hvordan fungerer det? [MiniTool Wiki]
What Is Direct Memory Access
Rask navigering:
Du kan adoptere RDMA teknologi som gjør det mulig for datamaskiner i et nettverk å utveksle data i hovedminnet uten å involvere prosessoren, hurtigbufferen eller operativsystemet til noen av datamaskinene. Men du kan også bruke DMA-funksjonen til å sende data direkte fra en tilkoblet enhet til minnet på datamaskinens hovedkort. Dette innlegget fra Miniverktøy snakker hovedsakelig om DMA.
Definisjonen av direkte minnetilgang
Først av alt, hva er direkte minnetilgang? Direkte minnetilgang kan forkortes til DMA, som er en funksjon i datasystemer. Det gir input / output (I / O) -enheter tilgang til hovedminnet i systemet ( tilfeldig tilgangsminne ), uavhengig av sentralbehandlingsenheten (CPU), som gir raskere minneoperasjoner.
Tips: Du kan være interessert i dette innlegget - 8 nyttige løsninger for å fikse CPUen din 100% i Windows 10 .
Uten direkte minnetilgang, når CPU bruker programmerte innganger / utganger, er den vanligvis fullt opptatt under hele lese- eller skriveoperasjonen, slik at den ikke kan utføre andre oppgaver. Med DMA starter CPU først overføringen, utfører deretter andre operasjoner mens overføringen pågår, og mottar til slutt et avbrudd fra DMA-kontrolleren (DMAC) når operasjonen er fullført.
Direkte minnetilgang er nyttig når prosessoren ikke kan følge med på dataoverføringshastigheten, eller når prosessoren trenger å utføre arbeid mens den venter på relativt langsom I / O-dataoverføring.
Flere maskinvaresystemer vedtar direkte minnetilgang, for eksempel diskstasjonskontrollere, grafikkort, nettverkskort og lydkort. DMA brukes også til dataoverføring på brikke i flerkjerneprosessorer. Sammenlignet med datamaskiner uten Direct Memory Access-kanaler, kan datamaskiner med DMA-kanaler overføre data mellom enheter med mye mindre CPU-overhead.
Direkte minnetilgang kan også brukes til 'minne til minne' for å kopiere eller flytte data i minnet. Det kan overføre dyre minneoperasjoner (for eksempel store kopier eller scatter-samleoperasjoner) fra CPU til en dedikert DMA-motor. DMA er viktig i arkitekturen for nettverks-på-brikke og minne.
Hvordan fungerer direkte minnetilgang?
Så hvordan fungerer direkte minnetilgang? Standard direkte minnetilgang (også kalt tredjeparts DMA) vedtar en DMA-kontroller. DMA-kontrolleren kan produsere minneadresser og starte minne lese- eller skrivesykluser. Den dekker flere maskinvareregistre som kan leses og skrives av CPUen.
Disse registerene består av et minneadresseregister, et byte-telleregister og ett eller flere kontrollregistre. Avhengig av funksjonene som tilbys av Direct Memory Access-kontrolleren, kan disse kontrollregistrene angi en kombinasjon av kilde, destinasjon, overføringsretning (les fra eller skriv til I / O-enhet), størrelse på overføringsenheten og / eller antall byte å overføre i en serie.
For å utføre inngangs-, utdata- eller minne-til-minne-operasjoner initialiserer vertsprosessoren DMA-kontrolleren med antall ord som skal overføres og minneadressen som skal brukes. Deretter kommandoer CPUen den eksterne enheten for å starte dataoverføring.
Deretter tilbyr Direct Memory Access-kontrolleren adresser og lese / skrive kontrollinjer til systemminnet. Hver gang en byte med data forberedes for å bli overført mellom den perifere enheten og minnet, øker DMA-kontrolleren sitt interne adresseregister til en fullstendig datablokk overføres.
Driftsmåter
Direct Memory Access fungerer annerledes i forskjellige driftsmåter.
Burst-modus
I burst-modus overføres hele datablokken i en kontinuerlig sekvens. Når CPU-en gir DMA-kontrolleren tilgang til systembussen, vil DMA-kontrolleren overføre alle byte med data i datablokken før den slipper kontrollen over systembussene tilbake til CPU, men det vil føre til at CPU-en er inaktiv i en lang tid. Denne modusen kalles også 'Block Transfer Mode'.
Syklus stjelmodus
Syklus stjelmodus brukes i et system der CPU ikke kan deaktiveres for den tid det tar for burst-overføringsmodus. I syklus stjelmodus får DMA-kontrolleren tilgang til systembussen ved å bruke BR (Bus Request) og BG (Bus Grant) signalene, som er de samme som burst-modusen. Disse to signalene styrer grensesnittet mellom CPU og DMA-kontrolleren.
På den ene siden, i syklus stjelmodus, er datablokkens overføringshastighet ikke så rask som i burst-modus, men på den andre siden er ikke CPU-inaktiviteten så lang som i burst-modus.
Gjennomsiktig modus
Den gjennomsiktige modusen tar lengst tid å overføre datablokker, men det er også den mest effektive modusen når det gjelder systemytelsen. I gjennomsiktig modus overfører Direct Memory Access-kontrolleren bare data når CPU-en utfører operasjoner som ikke bruker systembussene.
Den viktigste fordelen med gjennomsiktig modus er at CPUen aldri slutter å utføre programmene, og overføringer av direkte minnetilgang er gratis når det gjelder tid, mens ulempen er at maskinvaren trenger å bestemme når CPU ikke bruker systembussene, som kan være komplisert. Dette kalles også “skjult DMA-dataoverføringsmodus”.