Remove ads
Van Wikipedia, de vrije encyclopedie
Direct memory access (DMA) maakt het mogelijk om data over te brengen van een niveau in de geheugenhiërarchie met een minimale tussenkomst van de centrale verwerkingseenheid (processor, CPU). Aangezien dit parallel gebeurt met de bewerkingen die op dat moment op de CPU lopen, vormt DMA een belangrijk onderdeel in de aanspreking van de hardware en de basis van efficiënte en goed presterende drivers en applicaties.
In veel toepassingen staat DMA tegenover cache-operaties. Simpel gezegd laat DMA toe efficiënter te werken dan de cache controller kan toelaten, maar vereist een duidelijk inzicht van de programmeur in het algoritme of code.
Sommige processoren zoals digitale signaalprocessors bezitten bovendien ook geen cache controller (of cache) of wordt de cache-operatie afgezet voor expliciete prestatiedoeleinden; cache-operaties zijn namelijk altijd onderhevig aan een inschatting van de cache controller over welke data nodig zal zijn in een volgende stap.
Op een eenvoudige microcontroller wordt niet met DMA gewerkt. Dat betekent dat de CPU steeds de besturing van de bus heeft. Wil de CPU gegevens van een schijf lezen, dan gaat dat als volgt:
Bij DMA is dit de werkwijze:
Een probleem met DMA is dat twee processors tegelijk aanspraak maken op het geheugen. Om een busconflict te vermijden worden er besturingsignalen tussen de processors, of met een bus arbitrator uitgewisseld. De ene processor krijgt toegang tot de bus als de andere processor even met een interne verwerking bezig is. Ook is het mogelijk dat de bus tijdens het verloop van de verwerking in twee delen wordt gedeeld, zodat de twee processors onafhankelijk van elkaar kunnen werken.
Een klassiek voorbeeld van DMA komt voor bij video. Een deel van het computergeheugen is aangewezen als videogeheugen. De inhoud van dit geheugen wordt op het scherm afgebeeld. Daarvoor is het nodig dat de videoprocessor het geheugen continu uitleest. Maar natuurlijk wil de CPU soms ook toegang hebben tot het videogeheugen.
Ook hier is het mogelijk dat een processor toegang krijgt tot het videogeheugen tijdens de korte momenten dat de andere processor het geheugen niet nodig heeft. De videoprocessor heeft tijdens de terugslagtijd het geheugen niet nodig. Een andere, minder fraaie, oplossing is dat de CPU op elk moment het videogeheugen mag benaderen, waarbij de videoprocessor even niets kan lezen. Deze oplossing leidt tot vlekken op het scherm op het moment dat de CPU het videogeheugen benadert. De fraaiste oplossing bestaat uit videogeheugen dat tegelijk van twee kanten benaderd kan worden.
Met de toename van snellere ATA-harde schijven werd het gebruik van geprogrammeerde I/O (PIO) steeds meer een belemmering. De PIO-modus werd daarom vervangen door DMA (word DMA) en later ultra DMA (ultra direct memory access, UDMA).
De ontwikkeling werd door Quantum in samenwerking met Intel tot stand gebracht. De introductie vond plaats in 1998 met de ATA-4- of ATA/ATAPI-4-standaard.
UDMA was de snelste methode die werd gebruikt om gegevens tussen de computer (via de ATA-controller) en een ATA-apparaat over te dragen totdat serial ATA (SATA) verscheen.
Er zijn een aantal specifieke eisen voor het uitvoeren van ultra DMA met harde schijven:
Er zijn acht verschillende UDMA-modi van 0 tot 6 voor ATA, 0 tot 7 voor CompactFlash, elk met een eigen timing.
UDMA-modus | aanwijzing | overdrachtssnelheid in MB/s |
---|---|---|
Mode 0 | UDMA16 | 16,7 |
Mode 1 | UDMA25 | 25,0 |
Mode 2 | UDMA33 | 33,3 |
Mode 3 | UDMA44 | 44,4 |
Mode 4 | UDMA66 | 66,7 |
Mode 5 | UDMA100 | 100,0 |
Mode 6 | UDMA133 | 133,3 |
Mode 7 | UDMA166 | 166,0 (*CompactFlash) |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.