Next                  Up                     Back                    Contents

Επόμενο:1.4 Παράλληλα Συστήματα Κατανεμημένης Μνήμης Πάνω:Κεφάλαιο 1ο: Γιατί Παράλληλος Προγραμματισμός ; Πίσω:1.2 Παράλληλα Υπολογιστικά Συστήματα


 

1.3 Αρχιτεκτονική Παράλληλων Συστημάτων Διαμοιραζόμενης Μνήμης.

 

Η βασική ιδέα πίσω από ένα παράλληλο σύστημα είναι απλά να υπάρχει πάνω από ένας επεξεργαστής στον ίδιο υπολογιστή. Τα παράλληλα συστήματα μπορεί να έχουν πολύ λίγους επεξεργαστές για παράδειγμα 10 ή πάρα πολλούς π.χ. 50000. Το κλειδί για να χαρακτηριστεί ένα σύστημα σαν παράλληλο, είναι ότι όλοι οι επεξεργαστές του είναι ικανοί να λειτουργούν ταυτόχρονα. Αν ο κάθε επεξεργαστής μπορεί να εκτελέσει 1 εκατομμύριο λειτουργίες ανά δευτερόλεπτο, τότε 10 επεξεργαστές μπορούν να εκτελέσουν 10 εκατομμύρια λειτουργίες ανά δευτερόλεπτο, οι 100 επεξεργαστές μπορούν να εκτελέσουν 100 εκατομμύρια λειτουργίες ανά δευτερόλεπτο κ.λ.π.

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

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

 

sharedMemory

ΣXHMA 1.1 Οργάνωση Συστήματος Διαμοιραζόμενης Μνήμης με Κοινό Δίαυλο

 

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

Μια μεγάλη ποικιλία τεχνικών χρησιμοποιείται για να βοηθήσει τη μείωση του ανταγωνισμού πρόσβασης στη μνήμη και να κάνει το σύστημα πιο αποδοτικό. Μια τέτοια τεχνική είναι να επιτρέπεται σε κάθε επεξεργαστή να έχει μία τοπική κρυφή μνήμη, η οποία χρησιμοποιείται για να κρατάει αντίγραφα από τα πιο πρόσφατα χρησιμοποιημένα τμήματα μνήμης. Από τη στιγμή που ο κάθε επεξεργαστής έχει τη δική του τοπική κρυφή μνήμη, τα δεδομένα της μπορούν να προσπελαστούν πολύ γρήγορα χωρίς πιθανότητα ανταγωνισμού. Όμως έτσι εισάγεται το πρόβλημα της συνοχής των τμημάτων κρυφής μνήμης: είναι δυνατό να υπάρχουν πολλαπλά αντίγραφα της ίδιας μεταβλητής σε διαφορετικές τοπικές κρυφές μνήμες, γεγονός που οδηγεί στην πιθανότητα ύπαρξης μη ενημερωμένων τιμών μετά από κάποια ενημέρωση. Μια ποικιλία εξεζητημένων τεχνικών για τη συνοχή της κρυφής μνήμης έχει αναπτυχθεί σε διάφορα συστήματα για να λύσει αυτό το πρόβλημα. Μια τέτοια τεχνική είναι ο κάθε επεξεργαστής να έχει μια κρυφή μνήμη με έλεγχο (snooping cache) η οποία να παρακολουθεί αδιάκοπα το κοινό δίαυλο και να καθιστά άκυρες τις τιμές μνήμης που έχουν ενημερωθεί (τροποποιηθεί) από άλλους επεξεργαστές. Το θέμα των συστημάτων πολυεπεξεργαστών με κρυφή μνήμη αναλύεται με λεπτομέρεια στο κεφάλαιο 3.

Μια άλλη τεχνική για τη μείωση του ανταγωνισμού των τμημάτων μνήμης στα συστήματα διαμοιραζόμενης μνήμης είναι η διαίρεση της κοινής μνήμης σε χωριστά τμήματα, τα οποία μπορούν να προσπελαστούν παράλληλα από διαφορετικούς επεξεργαστές. Τα διαμοιραζόμενα δεδομένα κατανέμονται σε πολλά χωριστά τμήματα μνήμης, έτσι ώστε να μειώνεται η πιθανότητα της ταυτόχρονης ζήτησης του ίδιου τμήματος μνήμης από διαφορετικούς επεξεργαστές. Το σχήμα 1.2 επεξηγεί την γενική οργάνωση ενός συστήματος με πολλαπλά τμήματα διαμοιραζόμενης μνήμης. Καθένας από τους n επεξεργαστές μπορεί να προσπελάσει οποιοδήποτε τα m τμήματα μνήμης, μέσω ενός δικτύου επικοινωνίας μνήμης. Αυτό το δίκτυο επικοινωνίας είναι ικανό ως ένα βαθμό για εσωτερικό παραλληλισμό, έτσι ώστε πολλοί επεξεργαστές να μπορούν να προσπελάσουν διαφορετικά τμήματα μνήμης ταυτόχρονα. Το κόστος και η εκτέλεση αυτού του μοντέλου εξαρτάται από τον εσωτερικό σχεδιασμό του δικτύου επικοινωνίας. Κάποια συνηθισμένα μοντέλα σχεδιασμού δικτύων όπως της πεταλούδας (butterfly), της διαπλοκής - εναλλαγής (shuffle-exchange), το ραβδεπαφικό (crossbar) και του omega εξετάζονται με λεπτομέρεια σε επόμενο κεφάλαιο.

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

 

connectionNetwork

ΣΧHMA 1.2 Σύστημα Κατανεμημένης Μνήμης με Πολλαπλά Τμήματα

 

Είναι σημαντικό να θυμόμαστε γι΄ αυτό το μοντέλο διαμοιραζόμενης μνήμης, ότι τα πολλαπλά τμήματα μνήμης μαζί σχηματίζουν μια απλή διαμοιραζόμενη μνήμη, η οποία είναι προσπελάσιμη απ’ όλους τους επεξεργαστές. Τη λειτουργία του δικτύου επικοινωνίας χειρίζεται εξ’ ολοκλήρου το υλικό προσπέλασης μνήμης, και δεν είναι ορατό στον προγραμματιστή, ο οποίος απλά βλέπει μια ενιαία κεντρική διαμοιραζόμενη μνήμη. Έτσι το προγραμματιστικό μοντέλο είναι ίδιο για τα σχήματα 1.1 και 1.2. Υπάρχει ένας μοναδικός χώρος διεύθυνσης μνήμης που είναι ορατός πανομοιότυπα απ’ όλους τους επεξεργαστές. Αυτές οι διευθύνσεις μνήμης στην πραγματικότητα κατανέμονται στα πολλαπλά τμήματα μνήμης, αλλά αυτό δεν είναι ορατό στους επεξεργαστές. Όταν ο επεξεργαστής διαβάζει ή γράφει μία συγκεκριμένη διεύθυνση μνήμης, η δραστηριότητα του δικτύου επικοινωνίας και η επιλογή του κατάλληλου τμήματος μνήμης ρυθμίζεται αυτόματα από το υλικό προσπέλασης μνήμης. Έτσι όταν κάποιος γράφει ένα πρόγραμμα για σύστημα διαμοιραζόμενης μνήμης, το απλό αρχιτεκτονικό μοντέλο του σχήματος 1.1 είναι επαρκές: απλά φανταστείτε μία μοναδική διαμοιραζόμενη μνήμη άμεσα προσπελάσιμη απ’όλους τους επεξεργαστές.

 


     Next                   Up                    Back                   Contents

Επόμενο:1.4 Παράλληλα Συστήματα Κατανεμημένης Μνήμης Πάνω:Κεφάλαιο 1ο: Γιατί Παράλληλος Προγραμματισμός ; Πίσω:1.2 Παράλληλα Υπολογιστικά Συστήματα