Directe geheugentoegang (DMA) in computerarchitectuur

Probeer Ons Instrument Voor Het Oplossen Van Problemen





Voor de uitvoering van een computerprogramma is de synchrone werking van meer dan één onderdeel van een computer vereist. Bijvoorbeeld, Processoren - het verstrekken van noodzakelijke stuurinformatie, adressen… etc, bussen - om informatie en data van en naar geheugen over te dragen naar I / O-apparaten… etc. De interessante factor van het systeem zou de manier zijn waarop het de overdracht van informatie tussen processor, geheugen en I / O-apparaten afhandelt. Gewoonlijk regelen processors het hele proces van gegevensoverdracht, vanaf het begin van de overdracht tot de opslag van gegevens op de bestemming. Dit verhoogt de belasting van de processor en blijft meestal in de ideale staat, waardoor de efficiëntie van het systeem afneemt. Om de gegevensoverdracht tussen I / O-apparaten en geheugen te versnellen, fungeert de DMA-controller als stationmaster. DMA-controller draagt ​​gegevens over met minimale tussenkomst van de processor.

Wat is een DMA-controller?

De term DMA staat voor directe geheugentoegang. Het hardwareapparaat dat wordt gebruikt voor directe geheugentoegang wordt de DMA-controller genoemd. DMA controller is een besturingseenheid , onderdeel van I / O-apparaten interface circuit , dat gegevensblokken kan overdragen tussen I / O-apparaten en het hoofdgeheugen met minimale tussenkomst van de processor.




DMA-controllerdiagram in computerarchitectuur

De DMA-controller biedt een interface tussen de bus en de invoer-uitvoerapparaten. Hoewel het gegevens overdraagt ​​zonder tussenkomst van de processor, wordt het gecontroleerd door de processor. De processor initieert de DMA-controller door het startadres, het aantal woorden in het datablok en de richting van de gegevensoverdracht te verzenden, d.w.z.. van I / O-apparaten naar het geheugen of van het hoofdgeheugen naar I / O-apparaten. Er kan meer dan één extern apparaat worden aangesloten op de DMA-controller.

DMA in computerarchitectuur

DMA in computerarchitectuur



DMA-controller bevat een adreseenheid voor het genereren van adressen en het selecteren van I / O-apparaten voor overdracht. Het bevat ook de besturingseenheid en het aantal gegevens voor het bijhouden van het aantal overgedragen blokken en het aangeven van de richting van de overdracht van gegevens. Wanneer de overdracht is voltooid, informeert DMA de processor door een onderbreking op te heffen. Het typische blokschema van de DMA-controller wordt weergegeven in de onderstaande afbeelding.

Typisch blokschema van DMA-controller

Typisch blokschema van DMA-controller

Werking van DMA Controller

De DMA-controller moet de bus delen met de processor om de gegevensoverdracht uit te voeren. Het apparaat dat de bus op een bepaald moment vasthoudt, wordt busmaster genoemd. Wanneer een overdracht van het I / O-apparaat naar het geheugen of vice versa moet worden gemaakt, stopt de processor de uitvoering van het huidige programma, het programma teller, verplaatst gegevens over de stapel en stuurt vervolgens een DMA-selectiesignaal naar de DMA-controller via de adresbus.

Als de DMA-controller vrij is, vraagt ​​hij de besturing van de bus van de processor door het busverzoeksignaal te verhogen. Processor kent de bus toe aan de controller door het bus-verleningssignaal te verhogen, nu is de DMA-controller de busmaster. De processor start de DMA-controller door de geheugenadressen, het aantal over te dragen gegevensblokken en de richting van de gegevensoverdracht te verzenden. Na het toewijzen van de gegevensoverdrachtstaak aan de DMA-controller, in plaats van idealiter te wachten tot de gegevensoverdracht is voltooid, hervat de processor de uitvoering van het programma na het ophalen van instructies uit de stapel.


Overdracht van gegevens door DMA In computer door DMA

Overdracht van gegevens op de computer door DMA-controller

De DMA-controller heeft nu de volledige controle over bussen en kan rechtstreeks communiceren met geheugen en I / O-apparaten, onafhankelijk van de CPU. Het voert de gegevensoverdracht uit volgens de besturingsinstructies die door de processor zijn ontvangen. Na voltooiing van de gegevensoverdracht, schakelt het het busverzoeksignaal uit en schakelt de CPU het bustoekenningssignaal uit, waardoor de besturing van bussen naar de CPU wordt verplaatst.

Wanneer een I / O-apparaat de overdracht wil starten, stuurt het een DMA-verzoeksignaal naar de DMA-controller, waarvoor de controller bevestigt of het vrij is. Vervolgens vraagt ​​de controller de processor om de bus, waardoor het busverzoeksignaal wordt verhoogd. Na ontvangst van het bussignaal worden de gegevens van het apparaat overgedragen. Voor een DMA-controller met n kanaal kan n aantal externe apparaten worden aangesloten.

De DMA draagt ​​de gegevens over in drie modi, waaronder de volgende.

naar) Burst-modus : In deze modus draagt ​​DMA de bussen pas over aan de CPU nadat de volledige gegevensoverdracht is voltooid. Ondertussen, als de CPU de bus nodig heeft, moet deze ideaal blijven en wachten op gegevensoverdracht.

b) Cycle Stealing Mode : In deze modus geeft DMA de besturing van bussen aan de CPU na overdracht van elke byte. Het geeft continu een verzoek om busbesturing uit, voert de overdracht van één byte uit en stuurt de bus terug. Hierdoor hoeft de CPU niet lang te wachten als het een bus nodig heeft voor taken met een hogere prioriteit.

c) Transparante modus: Hier draagt ​​DMA alleen gegevens over wanneer de CPU de instructie uitvoert, waarvoor geen bussen nodig zijn.

8237 DMA-controller

  • 8237 heeft 4 I / O-kanalen en de flexibiliteit om het aantal kanalen te vergroten.
  • Elk kanaal kan afzonderlijk worden geprogrammeerd en heeft een 64k-adres- en gegevenscapaciteit.
  • Het timingbesturingsblok, het programmacommando-besturingsblok, het prioriteitscodeerblok zijn de drie hoofdblokken van 8237A.
  • De interne timing en externe controlesignalen worden aangestuurd door het timingcontroleblok.
  • Verschillende commando's die door de microprocessor aan de DMA worden gegeven, worden gedecodeerd door het besturingsblok voor programmacommando's.
  • Welk kanaal de hoogste prioriteit moet krijgen, wordt bepaald door de prioriteit encoder blok
    8237A heeft 27 interne registers.

8237A werkt in twee cycli - Ideale cyclus en actieve cyclus, waarbij elke cyclus 7 afzonderlijke toestanden bevat die elk uit een klokperiode bestaan.

S0- De eerste toestand, waarin de controller om de bus heeft gevraagd en wacht op de bevestiging van de processor.

S1, S2, S3, S4 worden de werktoestanden van de 8237A genoemd, waar de feitelijke overdracht van gegevens plaatsvindt. Als er meer tijd nodig is voor overdracht wachttoestanden SW worden toegevoegd tussen deze toestanden.

Voor overdracht van geheugen naar geheugen moeten er lees-uit-geheugen en schrijf-naar-geheugen-overdrachten worden uitgevoerd. Voor een enkele overdracht zijn acht staten vereist. De eerste vier toestanden met subscripts S11, S12, S13, S14 doen de lees-uit-geheugenoverdracht en de volgende vier S21, S22, S23, S24 zijn voor schrijven-naar-geheugenoverdracht.

DMA gaat in de ideale toestand wanneer geen enkel kanaal om service vraagt ​​en de SI-toestand uitvoert. SI is een inactieve toestand waarin de DMA inactief is totdat deze een verzoek ontvangt. In deze toestand bevindt DMA zich in de programmaconditie waarin de processor de DMA kan programmeren.

Wanneer DMA zich in de ideale toestand bevindt en geen verdere kanaalverzoeken ontvangt, voert het een HRQ-signaal uit naar de processor en gaat het in de actieve toestand waar het de overdracht van gegevens kan starten, hetzij in burst-modus, cyclus-stealing-modus of transparante modus.

8237 PinDiagram

8237 Pin-diagram

8257 DMA-controller

In combinatie met een enkel Intel 8212 I / O-poortapparaat vormt de 8257 DMA-controller een compleet 4-kanaals DMA-controller ​Na ontvangst van een overdrachtsverzoek, zal de 8257-controller

  • Verwerft de controle over de systeembus van de processor.
  • Het randapparaat dat is aangesloten op het kanaal met de hoogste prioriteit wordt bevestigd.
  • De minst significante bits van het geheugenadres worden over de adreslijnen A0-A7 van de systeembus verplaatst.
  • De belangrijkste 8 bits van het geheugenadres worden via datalijnen naar de 8212 I / O-poort gestuurd.
  • Genereert de juiste controlesignalen voor de gegevensoverdracht tussen randapparatuur en geadresseerde geheugenlocaties.
  • Wanneer het gespecificeerde aantal bytes is overgedragen, informeert de controller het CPU-einde van de overdracht door de output van de terminal count (TC) te activeren.

Voor elk kanaal bevat 8257 er twee 16-bits registers - 1) DMA-adresregister en 2) Terminal-telregister, dat moet worden geïnitialiseerd voordat een kanaal wordt ingeschakeld. Het adres van de eerste geheugenlocatie waartoe toegang moet worden verkregen, wordt geladen in het DMA-adresregister. De 14 bits van lagere orde van de waarde die is geladen in het terminal-telregister geeft het aantal DMA-cycli min één vóór de activering van de terminal-teluitvoer aan. Het type bewerking voor een kanaal wordt aangegeven door de twee meest significante bits van het Terminal-telregister.

8257 Pin-diagram

8257 Pin-diagram

Voordelen en nadelen van DMA-controller

De voor- en nadelen van een DMA-controller zijn onder meer de volgende.

Voordelen

  • DMA versnelt de geheugenbewerkingen door de betrokkenheid van de CPU te omzeilen.
  • De overbelasting van de CPU neemt af.
  • Voor elke overdracht zijn slechts een paar aantal klokcycli nodig

Nadelen

  • Cache-coherentieprobleem kan worden gezien wanneer DMA wordt gebruikt voor gegevensoverdracht.
  • Verhoogt de prijs van het systeem.

DMA ( Directe geheugentoegang ) controller wordt gebruikt in grafische kaarten, netwerkkaarten, geluidskaarten enz… DMA wordt ook gebruikt voor intra-chip overdracht in multi-core processors. DMA werkt in een van de drie modi en kan de belasting van de processor aanzienlijk verminderen. In welke van de modi van DMA heb je gewerkt? Welke van de modus die u overweegt is effectiever?