Wat is directe geheugentoegang (DMA) en hoe werkt het? [MiniTool Wiki]
What Is Direct Memory Access
Snelle navigatie :
U kunt het RDMA technologie om computers in een netwerk in staat te stellen gegevens in het hoofdgeheugen uit te wisselen zonder tussenkomst van de processor, het cachegeheugen of het besturingssysteem van een van beide computers. Maar u kunt de DMA-functie ook gebruiken om rechtstreeks gegevens van een aangesloten apparaat naar het geheugen op het moederbord van de computer te sturen. Dit bericht van MiniTool heeft het vooral over DMA.
De definitie van directe geheugentoegang
Allereerst, wat is directe geheugentoegang? Directe geheugentoegang kan worden afgekort tot DMA, een kenmerk van computersystemen. Hiermee hebben input / output (I / O) -apparaten toegang tot het hoofdsysteemgeheugen ( werkgeheugen ), onafhankelijk van de centrale verwerkingseenheid (CPU), die geheugenbewerkingen versnelt.
Tip: Je bent mogelijk geïnteresseerd in dit bericht - 8 Handige oplossingen om uw CPU 100% te herstellen in Windows 10 .
Als de CPU zonder directe geheugentoegang gebruikmaakt van geprogrammeerde in- / uitgangen, is deze meestal volledig bezet tijdens de gehele lees- of schrijfbewerking, zodat hij geen andere taken kan uitvoeren. Met DMA initieert de CPU eerst de overdracht, voert vervolgens andere bewerkingen uit terwijl de overdracht wordt uitgevoerd, en ontvangt ten slotte een interrupt van de DMA-controller (DMAC) wanneer de bewerking is voltooid.
Directe geheugentoegang is handig wanneer de CPU de gegevensoverdrachtsnelheid niet bij kan houden, of wanneer de CPU werk moet doen tijdens het wachten op relatief langzame I / O-gegevensoverdrachten.
Meerdere hardwaresystemen maken gebruik van directe geheugentoegang, zoals diskdrive-controllers, grafische kaarten, netwerkkaarten en geluidskaarten. DMA wordt ook gebruikt voor gegevensoverdracht op de chip in multi-coreprocessors. In vergelijking met computers zonder Direct Memory Access-kanalen, kunnen computers met DMA-kanalen gegevens tussen apparaten uitwisselen met veel minder CPU-overhead.
Directe geheugentoegang kan ook worden gebruikt voor 'geheugen naar geheugen' om gegevens in het geheugen te kopiëren of te verplaatsen. Het kan dure geheugenbewerkingen (zoals grote kopieën of verstrooiingsbewerkingen) van de CPU naar een speciale DMA-engine overbrengen. DMA is belangrijk in architecturen voor netwerk-op-chip en geheugencomputing.
Hoe werkt directe geheugentoegang?
Hoe werkt Direct Memory Access dan? Standard Direct Memory Access (ook wel DMA van derden genoemd) gebruikt een DMA-controller. De DMA-controller kan geheugenadressen produceren en geheugenlees- of schrijfcycli starten. Het omvat meerdere hardwareregisters die kunnen worden gelezen en geschreven door de CPU.
Deze registers bestaan uit een geheugenadresregister, een byte-telregister en een of meer stuurregisters. Afhankelijk van de functies die door de Direct Memory Access-controller worden geboden, kunnen deze controleregisters een combinatie van bron, bestemming, overdrachtsrichting (lezen van of schrijven naar I / O-apparaat), grootte van de overdrachteenheid en / of het aantal bytes om in één burst over te dragen.
Om invoer-, uitvoer- of geheugen-naar-geheugenbewerkingen uit te voeren, initialiseert de hostprocessor de DMA-controller met het aantal over te dragen woorden en het te gebruiken geheugenadres. Vervolgens geeft de CPU het randapparaat opdracht om de gegevensoverdracht te starten.
Vervolgens biedt de Direct Memory Access-controller adressen en lees- / schrijfcontrolelijnen aan het systeemgeheugen. Elke keer dat een byte aan gegevens wordt voorbereid om te worden overgedragen tussen het randapparaat en het geheugen, verhoogt de DMA-controller zijn interne adresregister totdat een volledig gegevensblok is overgedragen.
Werkingsmodi
Directe geheugentoegang werkt anders in verschillende werkingsmodi.
Burst-modus
In burst-modus wordt het volledige gegevensblok in een continue reeks verzonden. Zodra de CPU de DMA-controller toegang geeft tot de systeembus, zal de DMA-controller alle bytes aan gegevens in het datablok overdragen alvorens de besturing van de systeembussen weer vrij te geven aan de CPU, maar het zal ervoor zorgen dat de CPU een tijdje inactief is. aanzienlijke lange tijd. Deze modus wordt ook wel 'Block Transfer Mode' genoemd.
Cycle Stealing Mode
De cyclus-stelen-modus wordt gebruikt in een systeem waar de CPU niet kan worden uitgeschakeld gedurende de tijd die nodig is voor de burst-overdrachtsmodus. In de cyclussteelmodus verkrijgt de DMA-controller toegang tot de systeembus door de BR (Bus Request) en BG (Bus Grant) signalen te gebruiken, die hetzelfde zijn als de burst-modus. Deze twee signalen besturen de interface tussen de CPU en de DMA-controller.
Enerzijds is in de cyclussteelmodus de transmissiesnelheid van het datablok niet zo hoog als in de burst-modus, maar aan de andere kant is de niet-actieve CPU-tijd niet zo lang als in de burst-modus.
Transparante modus
De transparante modus duurt het langst om datablokken over te dragen, maar het is ook de meest efficiënte modus in termen van algehele systeemprestaties. In de transparante modus draagt de Direct Memory Access-controller alleen gegevens over als de CPU bewerkingen uitvoert die geen gebruik maken van de systeembussen.
Het belangrijkste voordeel van de transparante modus is dat de CPU nooit stopt met het uitvoeren van zijn programma's, en overdrachten via Direct Memory Access zijn gratis in termen van tijd, terwijl het nadeel is dat de hardware moet bepalen wanneer de CPU de systeembussen niet gebruikt. ingewikkeld zijn. Dit wordt ook wel de 'verborgen DMA-gegevensoverdrachtsmodus' genoemd.