Direct Memory Access (DMA) i datorarkitektur

Prova Vårt Instrument För Att Eliminera Problem





För körning av ett datorprogram kräver det synkron bearbetning av mer än en komponent i en dator. Till exempel, Processorer - tillhandahålla nödvändig kontrollinformation, adresser ... etc, bussar - för att överföra information och data till och från minne till I / O-enheter ... etc. Den intressanta faktorn i systemet skulle vara sättet att hantera överföringen av information mellan processorer, minne och I / O-enheter. Vanligtvis kontrollerar processorer all process för överföring av data, direkt från initiering av överföringen till lagring av data vid destinationen. Detta ökar belastningen på processorn och för det mesta förblir den i perfekt läge, vilket minskar systemets effektivitet. För att påskynda överföringen av data mellan I / O-enheter och minne fungerar DMA-styrenhet som stationsmästare. DMA-kontrollen överför data med minimalt ingripande från processorn.

Vad är en DMA-kontroller?

Termen DMA står för direktminnesåtkomst. Maskinvaruenheten som används för direkt minnesåtkomst kallas DMA-styrenheten. DMA styrenhet är en styrenhet , en del av I / O-enhetens gränssnittskrets , som kan överföra datablock mellan I / O-enheter och huvudminne med minimalt ingripande från processorn.




DMA-kontrolldiagram i datorarkitektur

DMA-styrenhet ger ett gränssnitt mellan bussen och ingångsutgångsenheterna. Även om den överför data utan ingrepp från processorn kontrolleras den av processorn. Processorn initierar DMA-styrenheten genom att skicka startadressen, Antal ord i datablocket och riktning för överföring av data, dvs. från I / O-enheter till minnet eller från huvudminnet till I / O-enheter. Mer än en extern enhet kan anslutas till DMA-styrenheten.

DMA i datorarkitektur

DMA i datorarkitektur



DMA-styrenhet innehåller en adressenhet för att generera adresser och välja I / O-enhet för överföring. Den innehåller också styrenheten och dataräkningen för att hålla räkningar av antalet överförda block och indikera riktningen för överföring av data. När överföringen är klar informerar DMA processorn genom att höja ett avbrott. Det typiska blockdiagrammet för DMA-styrenheten visas i figuren nedan.

Typiskt blockdiagram för DMA-styrenhet

Typiskt blockdiagram för DMA-styrenhet

Arbeta med DMA Controller

DMA-styrenheten måste dela bussen med processorn för att göra dataöverföringen. Enheten som håller bussen vid en viss tid kallas bus master. När en överföring från I / O-enhet till minnet eller vice versen måste göras stoppar processorn körningen av det aktuella programmet, stegvis programmet räknaren, flyttar data över stacken och skickar sedan en DMA-valsignal till DMA-styrenheten över adressbussen.

Om DMA-styrenheten är ledig, begär den styrning av buss från processorn genom att höja bussförfrågningssignalen. Processorn beviljar bussen till styrenheten genom att höja busstilldelningssignalen, nu är DMA-styrenheten bussmastern. Processorn initierar DMA-styrenheten genom att skicka minnesadresserna, antalet datablock som ska överföras och riktning för dataöverföring. Efter att ha tilldelat dataöverföringsuppgiften till DMA-styrenheten, i stället för att vänta idealt tills dataöverföringen är klar, fortsätter processorn körningen av programmet efter att ha hämtat instruktioner från stacken.


Överföring av data med DMA i dator av DMA

Överföring av data i datorn av DMA-kontrollenhet

DMA-styrenheten har nu full kontroll över bussar och kan interagera direkt med minne och I / O-enheter oberoende av CPU. Det gör dataöverföringen enligt de kontrollinstruktioner som mottagits av processorn. Efter avslutad dataöverföring inaktiverar den bussbegäranssignalen och CPU inaktiverar busstilldelningssignalen, varigenom styrning av bussar flyttas till CPU: n.

När en I / O-enhet vill initiera överföringen skickar den en DMA-förfrågningssignal till DMA-styrenheten, för vilken styrenheten bekräftar om den är gratis. Därefter begär styrenheten processorn för bussen och höjer busförfrågningssignalen. Efter att ha mottagit busstilldelningssignalen överför den data från enheten. För n-kanaliserad DMA-styrenhet kan antalet externa enheter anslutas.

DMA överför data i tre lägen som inkluderar följande.

till) Burst-läge : I detta läge överlämnar DMA bussarna till CPU först efter full dataöverföring. Under tiden, om processorn behöver bussen, måste den förbli idealisk och vänta på dataöverföring.

b) Cykel stjälningsläge : I detta läge ger DMA kontroll över bussar till CPU efter överföring av varje byte. Den utfärdar kontinuerligt en begäran om busskontroll, överför en byte och returnerar bussen. Med den här processorn behöver inte vänta länge om den behöver en buss för högre prioritetsuppgift.

c) Transparent Mode: Här överför DMA data endast när CPU kör instruktionen som inte kräver användning av bussar.

8237 DMA-styrenhet

  • 8237 har 4 I / O-kanaler tillsammans med flexibiliteten att öka antalet kanaler.
  • Varje kanal kan programmeras individuellt och har en 64k-adress och datafunktion.
  • Timing-kontrollblocket, Program-kommandokontrollblocket, Priority Encoder Block är de tre huvudblocken i 8237A.
  • De interna timing- och externa styrsignalerna drivs av timing-blocket.
  • Olika kommandon som ges av mikroprocessorn till DMA avkodas av programkommandokontrollblocket.
  • Vilken kanal som måste ges högsta prioritet bestäms av prioriteten kodarblock .
    8237A har 27 interna register.

8237A fungerar i två cykler - Ideal cykel och aktiv cykel, där varje cykel innehåller 7 separata tillstånd som består av en klockperiod vardera.

S0- Det första tillståndet, där styrenheten har begärt bussen och väntar på bekräftelse från processorn.

S1, S2, S3, S4 kallas arbetstillstånden för 8237A där den faktiska överföringen av data sker. Om mer tid behövs för överföringsväntelägen läggs SW till mellan dessa tillstånd.

För minne – till- minnesöverföring måste läs-från-minne och skriv-till-minne-överföringar göras. Åtta stater krävs för enstaka överföring. De första fyra tillstånden med prenumerationer S11, S12, S13, S14 gör läs-från-minnesöverföring och de nästa fyra S21, S22, S23, S24 är för skriv-till-minnesöverföring.

DMA går in i det ideala tillståndet när ingen kanal begär service och utför SI-tillstånd. SI är ett inaktivt tillstånd där DMA är inaktiv tills den får en begäran. I detta tillstånd är DMA i programtillstånd där processorn kan programmera DMA.

När DMA är i det ideala tillståndet och inte får några fler kanalförfrågningar, matar den ut en HRQ-signal till processorn och går in i aktivt tillstånd där den kan starta överföringen av data antingen genom burst-läge, cykel stjälningsläge eller transparent läge.

8237 PinDiagram

8237 stiftdiagram

8257 DMA-styrenhet

När den är ihopkopplad med en enda Intel 8212 I / O-portenhet, bildar 8257 DMA-styrenheten en komplett fyrkanal DMA-styrenhet . Efter att ha mottagit en överföringsbegäran kontrollerar 8257

  • Hämtar kontrollen över systembussen från processorn.
  • Den kringutrustning som är ansluten till den högsta prioriterade kanalen kvitteras.
  • De minst signifikanta bitarna i minnesadressen flyttas över adressbussarna A0-A7 i systembussen.
  • Det mest betydelsefulla 8 bitar av minnesadressen drivs till 8212 I / O-port via datalinjer.
  • Skapar lämpliga styrsignaler för överföring av data mellan kringutrustning och adresserade minnesplatser.
  • När det angivna antalet byte överförs informerar styrenheten CPU-slutet av överföringen genom att aktivera terminalantalet (TC) -utgången.

För varje kanal innehåller 8257 två 16-bitarsregister - 1) DMA-adressregister och 2) Terminalräkningsregister, som bör initieras innan en kanal aktiveras. Adressen till den första minnesplatsen som ska nås laddas i DMA-adressregistret. Den nedre ordningen 14 bitar av det värde som laddas i terminalräknaregistret anger antalet DMA-cykler minus en före aktivering av terminalräkningsutgången. Typ av operation för en kanal indikeras av de viktigaste två bitarna i terminalräknaregistret.

8257 stiftdiagram

8257 stiftdiagram

Fördelar och nackdelar med DMA Controller

Fördelarna och nackdelarna med DMA-styrenhet inkluderar följande.

Fördelar

  • DMA påskyndar minnesoperationerna genom att kringgå CPU: s involvering.
  • Arbetsöverbelastningen på processorn minskar.
  • För varje överföring krävs endast ett fåtal antal klockcykler

Nackdelar

  • Cache-koherensproblem kan ses när DMA används för dataöverföring.
  • Ökar systemets pris.

DMA ( Direkt minnesåtkomst ) styrenhet används i grafikkort, nätverkskort, ljudkort etc ... DMA används också för överföring av chip i flerkärniga processorer. DMA kan arbeta i ett av de tre lägena och kan avsevärt minska processorns belastning. I vilket av DMA-lägena har du arbetat med? Vilket av det läge du anser är mer effektivt?