Direkt minnesåtkomst

Vad betyder direkt minnesåtkomst?

Direkt minnesåtkomst (DMA) är en metod som gör det möjligt för en I/O-enhet (input/output) att skicka eller ta emot data direkt till eller från huvudminnet, och därmed kringgå processorn för att snabba upp minnesoperationerna.

Processen hanteras av ett chip som kallas DMA-controller (DMAC).

Techopedia förklarar direkt minnesåtkomst

En definierad del av minnet används för att skicka data direkt från en kringutrustning till moderkortet utan att involvera mikroprocessorn, så att processen inte stör den övergripande datoroperationen.

I äldre datorer var de fyra DMA-kanalerna numrerade 0, 1, 2 och 3. När 16-bitars ISA-expansionsbussen (Industry Standard Architecture) introducerades lades kanalerna 5, 6 och 7 till.

ISA var en buss-standard för IBM-kompatibla datorer som gjorde det möjligt för en enhet att initiera transaktioner (bus mastering) med högre hastighet. ISA DMA-styrenheten har 8 DMA-kanaler, som var och en är associerad med en 16-bitars adress och räkningsregister.

ISA har sedan dess ersatts av accelerated graphics port (AGP) och peripheral component interconnect (PCI) expansionskort, som är mycket snabbare. Varje DMA överför ca 2 MB data per sekund.

En dators systemresursverktyg används för kommunikation mellan hårdvara och mjukvara. De fyra typerna av systemresurser är

  • I/O-adresser.
  • Minnesadresser.
  • Nummer för avbrottsförfrågningar (IRQ).
  • DMA-kanaler (direkt minnesåtkomst).

DMA-kanaler används för att kommunicera data mellan kringutrustningen och systemminnet. Alla fyra systemresurserna är beroende av vissa linjer på en buss. Vissa linjer på bussen används för IRQ, vissa för adresser (I/O-adresserna och minnesadressen) och vissa för DMA-kanaler.

En DMA-kanal gör det möjligt för en enhet att överföra data utan att CPU:n utsätts för överbelastning. Utan DMA-kanaler kopierar CPU:n varje datapost från I/O-enheten via en periferibuss. Att använda en periferibuss upptar CPU:n under läs/skriv-processen och tillåter inte att annat arbete utförs förrän operationen är slutförd.

Med DMA kan CPU:n utföra andra uppgifter medan dataöverföringen pågår. Dataöverföringen initieras först av CPU. Datablocket kan överföras till och från minnet av DMAC på tre sätt.

I burst mode frigörs systembussen först när dataöverföringen är slutförd. I cycle stealing-läge, under överföringen av data mellan DMA-kanalen och I/O-enheten, släpps systembussen under några klockcykler så att CPU:n kan utföra andra uppgifter. När dataöverföringen är klar får CPU en avbrottsbegäran från DMA-styrenheten. I transparent läge kan DMAC ta hand om systembussen endast när processorn inte behöver den.

Användning av en DMA-styrenhet kan dock orsaka problem med cache-coherency. De data som lagras i RAM-minnet och som nås av DMA-styrenheten kanske inte uppdateras med korrekta cachedata om processorn använder externt minne.

Lösningar inkluderar att spola cachelinjer innan utgående DMA-överföringar påbörjas, eller att utföra en cacheinvalidering på inkommande DMA-överföringar när externa skrivningar signaleras till cachekontrollern.

Relaterade termer

Margaret Rouse

Margaret Rouse är en prisbelönt teknisk skribent och lärare som är känd för sin förmåga att förklara komplexa tekniska ämnen för en icke-teknisk affärspublik. Under de senaste tjugo åren har hennes förklaringar publicerats på TechTargets webbplatser och hon har citerats som en auktoritet i artiklar av New York Times, Time Magazine, USA Today, ZDNet, PC Magazine och Discovery Magazine.Margarets idé om en rolig dag är att hjälpa IT- och affärsproffs att lära sig tala varandras högt specialiserade språk. Om du har ett förslag på en ny definition eller hur man kan förbättra en teknisk förklaring, vänligen maila Margaret eller kontakta…