Κεφάλαιο 5 | Ενότητα 9 | Ερωτήσεις επισκόπησης | Επόμενο | Λεξικό όρων

  H λειτουργία της απευθείας πρόσβασης μνήμης

Το I/O οδηγούμενο από διακοπές απαλλάσσει τον επεξεργαστή από την αναμονή για κάθε λειτουργία I/O. Παρόλ’αυτά,  αν χρησιμοποιήσουμε αυτή τη μέθοδο για τη μεταφορά δεδομένων από ή προς ένα σκληρό δίσκο, η επιβάρυνση παραμένει τεράστια, αφού , στο χρονικό διάστημα που ο δίσκος  εκτελεί μεταφορές,  καταναλώνεται το 100% της επεξεργαστικής ισχύος. Για συσκευές υψηλού εύρους ζώνης, όπως οι σκληροί δίσκοι, οι μεταφορές συνίστανται κυρίως από σχετικά μεγάλα μπλοκ δεδομένων (εκατοντάδες ως χιλιάδες bytes). Για παράδειγμα, για τη μεταφορά ενός μπλοκ 2048 λέξεων θα απαιτούταν τουλάχιστον 2048 αποθηκεύσεις και 2048 φορτώσεις , ενώ θα είχαμε και την επιπρόσθετη επιβάρυνση λόγω των διακοπών.

Για να απαλλαγεί ο επεξεργαστής όσο το δυνατόν περισσότερο, οι σχεδιαστές υπολογιστών ανακάλυψαν ένα μηχανισμό όπου για τη μεταφορά των δεδομένων απευθείας προς ή από τη μνήμη υπεύθυνος είναι ο ελεγκτής της συσκευής,  και δεν εμπλέκεται ο επεξεργαστής. Αυτός ο μηχανισμός ονομάζεται άμεση προσπέλαση μνήμης (direct memory access – DMA).
Ο μηχανισμός διακοπών χρησιμοποιείται και τώρα από τη συσκευή για να επικοινωνεί με τον επεξεργαστή, αλλά μόνο όταν η μεταφορά I/O ολοκληρώνεται ή όταν προκύπτει κάποιο λάθος.
Η DMA λοιπόν υλοποιείται με έναν εξειδικευμένο επεξεργαστή – ελεγκτή- ο οποίος μεταφέρει δεδομένα μεταξύ της μνήμης και μιας συσκευής εισόδου/εξόδου, ενώ την ίδια στιγμή ο επεξεργαστής ασχολείται με άλλες διεργασίες. Γι’αυτό το λόγο βρίσκεται εκτός του επεξεργαστή και είναι κύριος (master) στην αρτηρία, κατευθύνοντας τις αναγνώσεις και τις εγγραφές ανάμεσα στη συσκευή και τη μνήμη.

Στο παρακάτω σχήμα βλέπουμε ένα υπολογιστικό σύστημα με δυο συσκευές εισόδου/εξόδου που χρησιμοποιούν ένα ελεγκτή DMA για να επικοινωνήσουν με τη μνήμη. Η οργάνωση αρτηρίας είναι απλοποιημένη.

ΣΧΗΜΑ 5.9.1. Ενας DMA ελεγκτής δύο καναλιών , δηλαδή ένας ελεγκτής που χρησιμοποιείται ταυτόχρονα για δύο συσκευές Ι/Ο , στο συγκεκριμένο παράδειγμα για μια μονάδα δίσκου και ένα εκτυπωτή υψηλής ταχύτητας.
 
 

Στάδια σε μία μεταφορά DMA

Υπάρχουν τρία στάδια σε μια μεταφορά DMA:

1. Ο επεξεργαστής προετοιμάζει τη DMA παρέχοντας την ταυτότητα της συσκευής, τη λειτουργία που θα επιτελέσει στη συσκευή, τη διεύθυνση μνήμης που αποτελεί την πηγή ή τον προορισμό των δεδομένων που πρόκειται να μεταφερθούν και το πλήθος των bytes.

2. Η DMA ξεκινά τη λειτουργία στη συσκευή και εμπλέκεται σε ένα σχήμα διαιτησίας για να γίνει κάτοχος της αρτηρίας. Οταν τα δεδομένα είναι διαθέσιμα (από τη συσκευή ή τη μνήμη) τα μεταφέρει. Η συσκευή DMA παρέχει τη διεύθυνση μνήμης για την ανάγνωση ή την εγγραφή. Αν η αίτηση απαιτεί περισσότερες από μία μεταφορές αρτηρίας, η μονάδα DMA παράγει την επόμενη διεύθυνση μνήμης και ξεκινά την επόμενη μεταφορά. Χρησιμοποιώντας αυτό το μηχανισμό, μία μονάδα DMA μπορεί να μεταφέρει έναν ολόκληρο τομέα δίσκου, που μπορεί να έχει μέγεθος χιλιάδες bytes, χωρίς να ενοχλήσει τον επεξεργαστή. Πολλοί ελεγκτές DMA περιλαμβάνουν κάποια ενδιάμεση αποθήκευση (buffering) για να μπορούν να αντιμετωπίσουν με ευελιξία τις όποιες καθυστερήσεις είτε κατά τη μεταφορά, είτε εκείνες που προκύπτουν όσο ο ελεγκτής περιμένει να γίνει κύριος της αρτηρίας.

3. Από τη στιγμή που η μεταφορά DMA έχει ολοκληρωθεί, ο ελεγκτής στέλνει ένα σήμα διακοπής στον επεξεργαστή, ο οποίος είναι σε θέση τότε να προσδιορίσει αν η όλη λειτουργία ολοκληρώθηκε με επιτυχία εξετάζοντας τη συσκευή DMA ή τη μνήμη.
 

Πολλαπλές συσκευές DMA

Μπορεί να υπάρχουν πολλαπλές συσκευές DMA σε ένα υπολογιστικό σύστημα. Για παράδειγμα, σε ένα σύστημα με μία μόνο αρτηρία επεξεργαστή-μνήμης και πολλές αρτηρίες I/O, κάθε ελεγκτής αρτηρίας I/O πολλές φορές περιέχει έναν επεξεργαστή DMA που διαχειρίζεται κάθε μεταφορά ανάμεσα σε μία συσκευή που βρίσκεται στην αρτηρία I/O και τη μνήμη.
Ας δούμε τι ποσοστό του επεξεργαστή καταναλώνεται χρησιμοποιώντας DMA για να αντιμετωπίσουμε το παράδειγμά μας με το σκληρό δίσκο.



Παράδειγμα.
Υποθέστε ότι έχουμε τον ίδιο επεξεργαστή και τον ίδιο σκληρό δίσκο όπως στο παράδειγμα της ενότητας 7. Υποθέστε πως η αρχική ρύθμιση (set-up) μίας μεταφοράς DMA απαιτεί 1000 κύκλους ρολογιού για τον επεξεργαστή και υποθέστε πως η διαχείριση της διακοπής κατά την ολοκλήρωση της DMA απαιτεί 500 κύκλους. Ο σκληρός δίσκος έχει ένα ρυθμό μεταφοράς δεδομένων των 2 MB/sec και χρησιμοποιεί DMA. Αν η μέση μεταφορά από το δίσκο είναι 4 KB, τι ποσοστό του επεξεργαστή των 50 MHz καταναλώνεται αν ο δίσκος εκτελεί μεταφορές για το 100% του χρόνου; Αγνοήστε οποιαδήποτε επίδραση από το συναγωνισμό αρτηρίας ανάμεσα στον επεξεργαστή και τον ελεγκτή DMA.
Απάντηση.
Κάθε μεταφορά DMA απαιτεί

Ετσι αν ο δίσκος εκτελεί συνεχώς μεταφορές, απαιτούνται:

Αφού ο επεξεργαστής λειτουργεί στα 50 MHz:


ΔΡΑΣΤΗΡΙΟΤΗΤΑ 1

Τι συμπεράσματα προκύπτουν από το προηγούμενο παράδειγμα όσον αφορά τη χρήση DMA για τη διασύνδεση του σκληρού δίσκου; Να συγκρίνετε την απάντησή σας με την παράγραφο που ακολουθεί.

 


Αντίθετα με το I/O εξέτασης ή το I/O οδηγούμενο από διακοπές, η DMA μπορεί να χρησιμοποιηθεί για τη διασύνδεση ενός σκληρού δίσκου χωρίς την κατανάλωση όλων των κύκλων του επεξεργαστή για μια απλή λειτουργία εισόδου/εξόδου. Επιπλέον, λογικά ο δίσκος δε θα μεταφέρει δεδομένα την περισσότερη ώρα και η τιμή που υπολογίστηκε στο παραπάνω παράδειγμα θα είναι σημαντικά χαμηλότερη. Φυσικά, αν ταυτόχρονα και ο επεξεργαστής συναγωνίζεται για να χρησιμοποιήσει τη μνήμη, η εξυπηρέτηση του θα καθυστερεί όταν η μνήμη είναι απασχολημένη εκτελώντας μία μεταφορά DMA, και υπάρχει και η πιθανότητα να συμβεί σύγκρουση (collision). Χρησιμοποιώντας κρυφές μνήμες (caches), ο επεξεργαστής μπορεί να αποφύγει την ανάγκη πρόσβασης στη μνήμη τον περισσότερο καιρό, αφήνοντας έτσι το περισσότερο εύρος ζώνης της μνήμης διαθέσιμο για χρήση από τις συσκευές I/O.

Επεξεργαστές Ι/Ο

 Για να ελαττώσουμε περαιτέρω την ανάγκη να διακόπτουμε τον επεξεργαστή και να τον απασχολούμε με τη διαχείριση μίας αίτησης I/O που μπορεί στην πραγματικότητα να συνεπάγεται την εκτέλεση αρκετών λειτουργιών, μπορούμε να κάνουμε τον ελεγκτή I/O  να λειτουργεί πιο έξυπνα. Οι έξυπνοι ελεγκτές ονομάζονται συχνά επεξεργαστές I/O (I/O processors, όπως επίσης και ελεγκτές I/O – I/O controllers ή ελεγκτές καναλιών – channel controllers).
Αυτοί οι εξειδικευμένοι επεξεργαστές εκτελούν βασικά μία σειρά από λειτουργίες I/O, που ονομάζεται πρόγραμμα I/O (I/O program). Το πρόγραμμα μπορεί να είναι αποθηκευμένο στον επεξεργαστή I/O ή μπορεί να είναι αποθηκευμένο στη μνήμη και να ανακτάται από τον επεξεργαστή I/O.
Πριν την ενεργοποίηση ενός επεξεργαστή I/O, το λειτουργικό σύστημα συνήθως προετοιμάζει ένα πρόγραμμα I/O που δηλώνει τις λειτουργίες I/O που πρέπει να γίνουν, όπως επίσης και το μέγεθος και τη διεύθυνση μεταφοράς για τυχόν αναγνώσεις ή εγγραφές. Στη συνέχεια ο επεξεργαστής I/O διαβάζει το πρόγραμμα Ι/Ο, εκτελεί τις λειτουργίες που περιγράφονται σε αυτό,  και διακόπτει τον επεξεργαστή, μόνο όταν όλο το πρόγραμμα έχει τελειώσει.
Οι επεξεργαστές DMA είναι βασικά επεξεργαστές ειδικού σκοπού (συνήθως αποτελούνται από ένα μόνο κύκλωμα και δεν είναι προγραμματιζόμενοι), ενώ οι επεξεργαστές I/O υλοποιούνται συχνά με μικροεπεξεργαστές γενικού σκοπού οι οποίοι εκτελούν ένα εξειδικευμένο πρόγραμμα I/O.

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 2

  • Να εξηγήσετε τι είναι η απευθείας πρόσβαση μνήμης (DMA) και πως αυτή υλοποιείται.
  • Να απαριθμήσετε τα στάδια στα οποία χωρίζεται μια μεταφορά DMA.
  • Να συγκρίνετε τις απαντήσεις σας με την υποενότητα που μόλις διαβάσατε: «Η λειτουργία της απευθείας πρόσβασης μνήμης».

     



    ΔΡΑΣΤΗΡΙΟΤΗΤΑ 3

    Να συγκρίνετε τους επεξεργαστές Ι/Ο με τους ελεγκτές DMA. Ποια είναι η βασική διαφορά ανάμεσα σε αυτούς τους δύο τύπους επεξεργαστών;

     

    ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 3