Wat is DMA (direct memory access)?
Mechanisme dat gegevens rechtstreeks tussen randapparatuur en geheugen overdraagt zonder tussenkomst van de CPU. De CPU kan tijdens grote gegevensoverdrachten andere taken uitvoeren.
Japanse benaming: DMA(ダイレクトメモリアクセス)
“DMA (direct memory access)” komt voor in 10 oefenvragen uit 6 onderwerpen, bijv. Besturingssysteem en hardware, CPU en architectuur, Embedded systemen en firmware.
Vakgebied: CPU en architectuur
Hoe een DMA-overdracht werkt
Bij programmed I/O verplaatst de CPU elk woord zelf met load- en store-instructies. Bij direct memory access (DMA) programmeert de CPU in plaats daarvan een DMA-controller, of de eigen DMA-engine van het device, met een bron, een bestemming, een lengte en een trigger, en gaat dan verder met ander werk. De controller neemt de bus over, verplaatst de data en geeft een interrupt als hij klaar is. In een microcontroller kan bijvoorbeeld een timer met vaste intervallen een ADC-conversie starten en kan DMA elk resultaat in een array opslaan, zodat de CPU pas wordt gewekt als de buffer vol is.
Veelgestelde vragen
Waar staat DMA voor?
DMA staat voor direct memory access, een mechanisme waarmee randapparatuur data van en naar het hoofdgeheugen kan overdragen zonder dat de CPU elk woord kopieert, zodat de CPU tijdens de overdracht ander werk kan doen.
Wat is het verschil tussen DMA en programmed I/O?
Bij programmed I/O leest of schrijft de CPU zelf elk datawoord naar het device. Bij DMA zet de CPU alleen de overdracht klaar en krijgt hij een melding als die klaar is, wat bij grote of frequente overdrachten CPU-tijd bespaart.
Waarom moet de cache na een DMA-overdracht naar het geheugen worden geïnvalideerd?
Op systemen zonder hardwarematige cachecoherentie kan de cache van de CPU nog oude kopieën van dat geheugenbereik bevatten. Invalideren dwingt de CPU de nieuwe data te lezen die het device heeft geschreven.