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

   DMA και το σύστημα μνήμης

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

Τα συστήματα που θα γνωρίσουμε είναι:

  • DMA και ιδεατή μνήμη
  • DMA και κρυφές μνήμες

     

    Η DMA και η Ιδεατή μνήμη

    Σε ένα σύστημα με ιδεατή μνήμη, η DMA πρέπει να εργάζεται με ιδεατές ή με φυσικές διευθύνσεις; Το προφανές πρόβλημα με τις ιδεατές διευθύνσεις είναι ότι η μονάδα DMA θα χρειάζεται να μεταφράζει τις ιδεατές διευθύνσεις σε φυσικές. Αυτό επιτυγχάνεται αν συμπεριλάβουμε στο μηχανισμό DMA κατάλληλους καταχωρητές-μεταφραστές διευθύνσεων, στους οποίους απεικονίζονται οι ιδεατές διευθύνσεις σε φυσικές. Το Σχήμα 5.9.2 απεικονίζει ένα τέτοιο σχήμα.
    Το κύριο πρόβλημα με τις φυσικές διευθύνσεις είναι πως το μέγεθος των δεδομένων που μεταφέρονται δε μπορεί εύκολα να υπερβεί τα όρια μιας σελίδας μνήμης. Αν μία αίτηση Ι/Ο ξεπερνούσε το όριο μιας σελίδας, τότε οι θέσεις μνήμης στις οποίες θα μεταφερόταν τα δεδομένα από τη συσκευή δε θα ήταν συνεχόμενες στη φυσική μνήμη. Αυτό συμβαίνει επειδή οι θέσεις μνήμης θα αντιστοιχούσαν σε περισσότερες από μια ιδεατές σελίδες, καθεμιά από τις οποίες θα μπορούσε να απεικονιστεί σε οποιαδήποτε φυσική σελίδα, και φυσικές αυτές το πιθανότερο είναι να μην είναι γειτονικές μεταξύ τους. Κατά συνέπεια, αν χρησιμοποιούμε φυσικές διευθύνσεις, θα πρέπει να περιορίσουμε όλες τις μεταφορές DMA να παραμείνουν μέσα σε μία σελίδα.

    ΣΧΗΜΑ 5.9.2 - Η Ιδεατή DMA απαιτεί έναν καταχωρητή για κάθε σελίδα που θα μεταφερθεί στον ελεγκτή DMA, δείχνοντας τα bits προστασίας και την φυσική σελίδα που αντιστοιχεί σε κάθε ιδεατή σελίδα.
     

    Μέθοδοι για να ξεπεράσουμε το όριο σελίδας

    Μία μέθοδος για να επιτρέψουμε στο σύστημα να εκκινεί μεταφορές DMA που διαπερνούν τα όρια σελίδων είναι να κάνουμε τη DMA να λειτουργεί με ιδεατές διευθύνσεις. Σε ένα τέτοιο σύστημα, η μονάδα DMA έχει ένα μικρό πλήθος εισόδων απεικόνισης (map entries) που παρέχουν ιδεατή προς φυσική απεικόνιση (virtual-to-physical mapping) για μία μεταφορά (σχήμα 9.2). Το λειτουργικό σύστημα παρέχει την απεικόνιση όταν ξεκινά το Ι/Ο. Χρησιμοποιώντας αυτή την απεικόνιση, η μονάδα DMA δε χρειάζεται να ανησυχεί για τη θέση των ιδεατών σελίδων που εμπλέκονται στη μεταφορά.
    Μία άλλη τεχνική είναι το λειτουργικό σύστημα να σπάσει τη μεταφορά DMA σε μία σειρά μεταφορών, καθεμιά από τις οποίες να περιορίζεται σε μία μόνο φυσική σελίδα. Οι μεταφορές τότε συναρμολογούνται και οδηγούνται σε έναν επεξεργαστή I/O ή μία έξυπνη μονάδα DMA που εκτελεί την όλη ακολουθία μεταφορών· εναλλακτικά, το λειτουργικό σύστημα μπορεί να ζητήσει τις μεταφορές ξεχωριστά.

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

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

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

     

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


     

    Η DMA και οι κρυφές μνήμες
     

    Οι δυσκολίες της ύπαρξης DMA σε συστήματα με κρυφές μνήμες προκύπτουν επειδή μπορεί να υπάρχουν δύο αντίγραφα ενός στοιχείου δεδομένων: ένα στην κρυφή μνήμη και ένα στην κύρια μνήμη. Επειδή ο επεξεργαστής DMA προωθεί τις αιτήσεις μνήμης απευθείας σε αυτή και όχι μέσω της κρυφής μνήμης, η τιμή μίας θέσης μνήμης που βλέπει η μονάδα DMA και αυτή που βλέπει ο επεξεργαστής μπορεί να διαφέρουν.
    Θεωρήστε μία ανάγνωση από το δίσκο που η μονάδα DMA τοποθετεί απευθείας στη μνήμη. Αν μερικές από τις θέσεις μνήμης στις οποίες γράφει η DMA βρίσκονται στην κρυφή μνήμη, ο επεξεργαστής θα λάβει την παλιά τιμή όταν εκτελέσει μία ανάγνωση. Παρόμοια, αν η κρυφή μνήμη είναι τύπου υστεροεγγραφής (write-back), η DMA μπορεί να διαβάσει μία τιμή απευθείας από την κύρια μνήμη, ενώ μια νεότερη τιμή βρίσκεται ήδη στην κρυφή μνήμη και δεν έχει γραφτεί πίσω στη μνήμη. Αυτό το πρόβλημα ονομάζεται πρόβλημα χαλασμένων δεδομένων (stale data problem) ή πρόβλημα συμφωνίας (coherency problem).
     
     

    Αντιμετώπιση του προβλήματος

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

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

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

    Αυτές οι μέθοδοι έχουν το πλεονέκτημα της αποδέσμευσης κύκλων επεξεργαστή. Τα μειονεκτήματά τους είναι ότι αυξάνουν το κόστος του συστήματος I/O. Λόγω των παραπάνω, ένα δεδομένο υπολογιστικό σύστημα μπορεί να επιλέξει ποιο σημείο μέσα σε αυτό το φάσμα είναι κατάλληλο για το σύστημα εισόδου/εξόδου που διαθέτει.

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

    Να απαριθμήσετε τις τεχνικές που χρησιμοποιούνται για να αντιμετωπίσουμε το πρόβλημα των χαλασμένων δεδομένων. Να συγκρίνετε την απάντησή σας με την παράγραφο: «Αντιμετώπιση του προβλήματος».