Next              Up                Back               Contents

Επόμενο:Αναφορές Πάνω: Κεφάλαιο 3ο : Αρχιτεκτονική συστημάτων διαμοιραζόμενης μνήμης.


 

3.7 Περίληψη

 

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

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

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

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

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

Υπάρχει μια μεγάλη ποικιλία τεχνικών για την σύνδεση των επεξεργαστών σε πολλαπλά τμήματα μνήμης, κάθε μια με τα δικά της χαρακτηριστικά απόδοσης και κόστους. Η καλύτερη απόδοση επιτυγχάνεται με το ραβδεπαφικό δίκτυο. Όμως, το κόστος του O(n2) είναι συνήθως απαγορευτικό. Υπάρχουν πολλά γνωστά O(n log n) δίκτυα διασύνδεσης όπως αυτό της πεταλούδας και της διαπλοκής-εναλλαγής που περιγράφονται σε αυτό το κεφάλαιο. Αυτά τα δίκτυα μπορούν να υποστηρίξουν πολλές παράλληλες αιτήσεις μνήμης από διαφορετικούς επεξεργαστές, εξασφαλίζοντας ότι κάθε μια από αυτές απευθύνεται σε διαφορετικό τμήμα μνήμης.

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

 


     Next              Up                Back               Contents

Επόμενο:Αναφορές Πάνω: Κεφάλαιο 3ο : Αρχιτεκτονική συστημάτων διαμοιραζόμενης μνήμης. Πίσω:3.6 Θερμά Σημεία Μνήμης (Memory Hot Spots)