Λειτουργία απ'ευθείας προσπέλασης μνήμης
Απευθείας προσπέλαση μνήμης (DMA)
Αν ο ρυθμός μεταφοράς δεδομένων από και προς μια περιφερειακή συσκευή είναι σχετικά χαμηλός, τότε η επικοινωνία μπορεί να εκτελεστεί με είσοδο-έξοδο ελεγχόμενη με πρόγραμμα είτε με χρήση διακοπών. Όπως είδαμε όμως, η εκτέλεση εντολών και η διαδικασία των διακοπών απαιτεί περισσότερο χρόνο, λόγω της αποθήκευσης και ανάκτησης της κατάστασης του μικροεπεξεργαστή. Ορισμένες συσκευές απαιτούν υψηλούς ρυθμούς μεταφοράς δεδομένων. Έτσι, είναι ασύμφορο να εξυπηρετούνται μεταφέροντας ένα byte ή μια λέξη κάθε φορά. Συχνά, ο ρυθμός μεταφοράς δεδομένων από περιφερειακές συσκευές καθορίζεται από τις ίδιες τις συσκευές και όχι από τον μικροεπεξεργαστή. Έτσι, το υπολογιστικό σύστημα πρέπει να εκτελεί την είσοδο-έξοδο σύμφωνα με τη μέγιστη
ταχύτητα της συσκευής. Σε περιπτώσεις στις οποίες απαιτούνται υψηλοί ρυθμοί μεταφοράς δεδομένων, χρησιμοποιείται απευθείας προσπέλαση της μνήμης (direct memory access, DMA).
Η μεταφορά ενός byte ή μιας λέξης μέσω των διαδρόμων του συστήματος ονομάζεται κύκλος μηχανής. Σε ένα κύκλο μηχανής κάποια από τις μονάδες του συστήματος που συνδέεται στο διάδρομο του συστήματος ελέγχει το διάδρομο.
Η μονάδα αυτή ονομάζεται διαχειριστής (master) του διαδρόμου κατά τη διάρκεια αυτού του κύκλου, και το στοιχείο με το οποίο επικοινωνεί ονομάζεται υποτελής (slave). Κανονικά, ο διαχειριστής του διαδρόμου είναι ο μικροεπεξεργαστής. Υπάρχει όμως η δυνατότητα μια ειδικά σχεδιασμένη μονάδα του συστήματος, να αποκτήσει τον έλεγχο του διαδρόμου στέλνοντας στο μικροεπεξεργαστή μια αίτηση απόκτησης του διαδρόμου (bus request). Μετά την ολοκλήρωση του κύκλου μηχανής ο μικροεπεξεργαστής επιστρέφει ένα σήμα απόδοσης διαδρόμου και η μονάδα
που έστειλε την αίτηση γίνεται διαχειριστής. Ο διαχειριστής τοποθετεί διευθύνσεις στο διάδρομο διευθύνσεων και συντονίζει τη δραστηριότητα του διαδρόμου κατά τη διάρκεια ενός κύκλου μηχανής, όπως ακριβώς ο μικροεπεξεργαστής. Μια μονάδα που μπορεί να γίνει διαχειριστής είναι ο ελεγκτής DMA.
.png)
Ο ελεγκτής περιλαμβάνει (εκτός από τους καταχωρητές κατάστασης και ελέγχου) δύο επιπλέον καταχωρητές, ένα για να κρατά τη διεύθυνση της επόμενης θέσης μνήμης και ένα στον οποίο θα αποθηκεύεται ο αριθμός των δεδομένων
που πρέπει ακόμη να μεταφερθούν. Οι καταχωρητές αυτοί είναι θύρες εισόδου-εξόδου. Αμέσως μετά τη μεταφορά ενός δεδομένου, ο καταχωρητής διεύθυνσης αυξάνεται, ενώ ο απαριθμητής δεδομένων μειώνεται.
.png)
Για τη μεταφορά κάποιων δεδομένων από ένα περιφερειακό προς τη μνήμη μέσω DMA, εκτελούνται τα ακόλουθα βήματα:
• η διασύνδεση της περιφερειακής συσκευής στέλνει στον ελεγκτή μια αίτηση για εξυπηρέτηση DMA.
• ο ελεγκτής ενεργοποιεί το σήμα αίτησης για απόκτηση του διαδρόμου (HOLD). Ο μικροεπεξεργαστής αποκρίνεται με ένα σήμα αποδοχής αίτησης απόκτησης (HLDA) και ελευθερώνει το διάδρομο δεδομένων, το διάδρομο διευθύνσεων
και το διάδρομο ελέγχου. Ο ελεγκτής DMA αποκτά τον έλεγχο των διαδρόμων.
• Ο ελεγκτής στέλνει στη διασύνδεση ένα σήμα αποδοχής DMA με το οποίο ζητά από αυτή να τοποθετήσει τα δεδομένα στο διάδρομο δεδομένων (για λειτουργία εισόδου), ή να πάρει τα επόμενα δεδομένα που είναι τοποθετημένα πάνω στο διάδρομο (για λειτουργία εξόδου).
• Το προς μεταφορά δεδομένο μεταφέρεται από ή προς τη θέση μνήμης που δηλώνεται μέσω του διαδρόμου διευθύνσεων που ελέγχεται από τον καταχωρητή διεύθυνσης DMA.
• στη συνέχεια αυξάνει ο καταχωρητής διευθύνσεων και ο απαριθμητής δεδομένων μειώνεται κατά 1 μέχρι να μεταφερθούν όλα τα δεδομένα.
Πρέπει να σημειωθεί ότι αν ζητήσουν ταυτόχρονα εξυπηρέτηση δύο ή περισσότερα περιφερειακά, η σειρά με την οποία θα εξυπηρετηθούν εξαρτάται από τον τρόπο με τον οποίο έχει καθοριστεί η προτεραιότητα στο σύστημα. Υπάρχουν πολλές τεχνικές για την απόδοση της προτεραιότητας αυτής, εκ των οποίων άλλες βασίζονται στο υλικό, άλλες σε λογισμικό και άλλες σε συνδυασμό των δύο.
.png)
Κατά τη διάρκεια της μεταφοράς DMA ο μικροεπεξεργαστής αδρανοποιείται μέχρι να μεταφερθούν όλα τα δεδομένα. Με αυτόν τον τρόπο επιτυγχάνεται ο μέγιστος ρυθμός μεταφοράς. Ο τρόπος αυτός χρησιμοποιείται στην περίπτωση που πρέπει να μεταφερθεί μεγάλη ποσότητα δεδομένων σε μικρό χρονικό διάστημα. Υπάρχουν όμως περιπτώσεις στις οποίες δεν απαιτείται ο μέγιστος ρυθμός μεταφοράς. Για τις περιπτώσεις αυτές οι ελεγκτές DMA παρέχουν και ένα άλλο τρόπο λειτουργίας στον οποίο η μεταφορά DMA γίνεται παράλληλα με τη λειτουργία του μικροεπεξεργαστή. Για να γίνει αυτό, κάθε φορά που μεταφέρεται ένα byte, ο ελεγκτής DMA παραχωρεί τον έλεγχο του διαδρόμου στο μικροεπεξεργαστή και στη συνέχεια υποβάλλει καινούρια αίτηση για μεταφορά DMA. Έτσι ο ελεγκτής κλέβει κύκλους μηχανής από το μικροεπεξεργαστή για να μεταφέρει τα δεδομένα. Στην περίπτωση αυτή λέμε ότι η μεταφορά DMA γίνεται με τη μέθοδο κλοπής κύκλου (cycle stealing).
.png)
Άσκηση
Άσκηση
Τι είναι ο ελεγκτής DMA;
Άσκηση
Περιγράψτε τη διαδικασία μεταφοράς δεδομένων μεταξύ μιας περιφερειακής συσκευής και της μνήμης με τη μέθοδο της απευθείας προσπέλασης μνήμης.
Άσκηση
Ποιοι τρόποι μεταφοράς DMA υπάρχουν;
(c) Αμπατζόγλου Γιάννης, MSc Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ84
Αδειοδοτημένο υπό τους όρους Creative Commons Αναφορά Δημιουργού 4.0