Τι σημαίνει DMA;
Άμεση πρόσβαση μνήμης (DMA) είναι μια μέθοδος που επιτρέπει σε μια συσκευή εισόδου/εξόδου (I/O) να στέλνει ή να λαμβάνει δεδομένα απευθείας προς ή από την κύρια μνήμη, παρακάμπτοντας την CPU (Central Processing Unit – Κεντρική Μονάδα Επεξεργασίας) για να επιταχύνει τις λειτουργίες της μνήμης.
Η διαχείριση της διαδικασίας γίνεται από ένα τσιπ γνωστό ως ελεγκτής DMA (Direct Memory Access controller – DMAC).
Η Techopedia εξηγεί τι είναι Άμεση Πρόσβαση Μνήμης
Ένα καθορισμένο τμήμα της μνήμης χρησιμοποιείται για την αποστολή δεδομένων απευθείας από μια περιφερειακή συσκευή στη μητρική πλακέτα χωρίς τη συμμετοχή του μικροεπεξεργαστή, έτσι ώστε η διαδικασία να μην παρεμβαίνει στη συνολική λειτουργία του υπολογιστή.
Σε παλαιότερους υπολογιστές υπήρχαν τέσσερα κανάλια για άμεση πρόσβαση μνήμης που αριθμήθηκαν ως 0, 1, 2 και 3. Όταν εισήχθη δίαυλος επέκτασης αρχιτεκτονικής βιομηχανικού προτύπου (industry standard architecture – ISA) 16-bit, προστέθηκαν τα κανάλια 5, 6 και 7.
Η ISA ήταν ένα πρότυπο διαύλου υπολογιστή για υπολογιστές συμβατούς με IBM. Αυτό επιτρέπει σε μια συσκευή να πραγματοποιεί συναλλαγές (bus mastering) με μεγαλύτερη ταχύτητα. Ο ελεγκτής ISA DMA έχει 8 κανάλια για άμεση πρόσβαση μνήμης. Καθένα από τα κανάλια σχετίζεται με μια διεύθυνση 16-bit και μετρητές καταχωρήσεων.
Έκτοτε, το ISA έχει αντικατασταθεί από θύρα επέκτασης γραφικών (accelerated graphics port – AGP) και διασύνδεση περιφερειακών στοιχείων (peripheral component interconnect – PCI), οι οποίες είναι πολύ πιο γρήγορες. Κάθε DMA μεταφέρει περίπου 2 MB δεδομένων ανά δευτερόλεπτο.
Είδη Πηγών Συστήματος
Τα εργαλεία πηγών του συστήματος ενός υπολογιστή χρησιμοποιούνται για την επικοινωνία μεταξύ hardware και λογισμικού. Τα τέσσερις είδη πηγών του συστήματος είναι:
- Διευθύνσεις I/O.
- Διευθύνσεις μνήμης.
- Αριθμοί αιτήσεων διακοπής (IRQ).
- Κανάλια άμεσης πρόσβασης μνήμης (DMA).
Τα κανάλια για άμεση πρόσβαση μνήμης χρησιμοποιούνται για την επικοινωνία δεδομένων μεταξύ της περιφερειακής συσκευής και της μνήμης του συστήματος. Και οι τέσσερις πηγές του συστήματος βασίζονται σε συγκεκριμένες γραμμές σε ένα δίαυλο. Ορισμένες γραμμές στο δίαυλο χρησιμοποιούνται ως IRQs, άλλες ως διευθύνσεις (διευθύνσεις I/O και διεύθυνση μνήμης) και κάποιες ως κανάλια DMA.
Ένα κανάλι DMA επιτρέπει σε μια συσκευή να μεταφέρει δεδομένα χωρίς να εκθέτει την CPU σε υπερφόρτωση εργασίας. Χωρίς τα κανάλια DMA, η CPU αντιγράφει κάθε κομμάτι δεδομένων χρησιμοποιώντας έναν περιφερειακό δίαυλο από τη συσκευή I/O. Η χρήση περιφερειακού διαύλου καταλαμβάνει τη CPU κατά τη διαδικασία ανάγνωσης/εγγραφής και δεν επιτρέπει την εκτέλεση άλλων εργασιών μέχρι να ολοκληρωθεί η λειτουργία.
Με το DMA, η CPU μπορεί να επεξεργαστεί άλλες εργασίες ενώ εκτελείται η μεταφορά δεδομένων. Η μεταφορά δεδομένων ξεκινά πρώτα από την CPU. Το μπλοκ δεδομένων μπορεί να μεταφερθεί από και προς τη μνήμη από το DMAC με τρεις τρόπους.
Στη λειτουργία ριπής, ο δίαυλος συστήματος απελευθερώνεται μόνο αφού ολοκληρωθεί η μεταφορά δεδομένων. Στη λειτουργία κλοπής κύκλου, κατά τη μεταφορά δεδομένων μεταξύ του καναλιού DMA και της συσκευής I/O, ο δίαυλος συστήματος εγκαταλείπεται για μερικούς κύκλους ρολογιού, έτσι ώστε η CPU να μπορεί να εκτελέσει άλλες εργασίες. Όταν ολοκληρωθεί η μεταφορά δεδομένων, η CPU λαμβάνει ένα αίτημα διακοπής από τον ελεγκτή DMA. Σε διαφανή λειτουργία, το DMAC μπορεί να αναλάβει τον δίαυλο συστήματος μόνο όταν δεν απαιτείται από τον επεξεργαστή.
Ωστόσο, η χρήση ενός ελεγκτή άμεσης πρόσβαση μνήμης μπορεί να προκαλέσει προβλήματα συνοχής της κρυφής μνήμης (cache). Τα δεδομένα που είναι αποθηκευμένα στη μνήμη RAM στα οποία έχει πρόσβαση ο ελεγκτής DMA ενδέχεται να μην ενημερωθούν με τα σωστά δεδομένα κρυφής μνήμης εάν η CPU χρησιμοποιεί εξωτερική μνήμη.
Οι λύσεις περιλαμβάνουν τον καθαρισμό των γραμμών προσωρινής μνήμης πριν από την έναρξη των εξερχόμενων μεταφορών DMA ή την εκτέλεση ακύρωσης της προσωρινής μνήμης στις εισερχόμενες μεταφορές DMA όταν οι εξωτερικές εγγραφές σηματοδοτούνται στον ελεγκτή κρυφής μνήμης.