5. Παράλληλα Συστήματα: Εισαγωγή



Σχετικά έγγραφα
ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

Εισαγωγή Θέματα H/W. Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης. Κατανεμημένα Συστήματα (Ε) Εισαγωγή: Θέματα H/W 1

Πολυπύρηνοι επεξεργαστές Multicore processors

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Λιβανός Γιώργος Εξάμηνο 2017Β

Διαφορές single-processor αρχιτεκτονικών και SoCs

Συνάφεια Κρυφής Μνήµης σε Επεκτάσιµα Μηχανήµατα

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση)

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

Ερώτηση 1 η μεταγωγής κυκλώματος? : Ποια είναι τα κύρια χαρακτηριστικά της. Ερώτηση 2 η : Ποια είναι τα κύρια χαρακτηριστικά της μεταγωγής μηνύματος?

Ethernet Ethernet ΙΕΕΕ CSMA/CD

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy)

Το υλικό του υπολογιστή

Εικονική Μνήμη (Virtual Μemory)

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών

SNMP ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Κεφάλαιο 5: Τοπικά ίκτυα

EM 361: Παράλληλοι Υπολογισμοί

STORAGE AREA NETWORK. Σπουδαστές: Δόση Νικολέτα Καρακούση Πελαγία 30/5/2014 1

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

Παράλληλη Επεξεργασία Κεφάλαιο 7 ο Αρχιτεκτονική Συστημάτων Κατανεμημένης Μνήμης

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

Οργάνωση Υπολογιστών (IΙI)

Δομή Ηλεκτρονικού υπολογιστή

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι. Σημειώσεις Θεωρίας

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

SGA Διαχείριση Πρωτόκολλου

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Ηλεκτρονικό Εμπόριο

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

Δίκτυα Υπολογιστών I

Τεχνολογίες Κύριας Μνήμης

Διασύνδεση τοπικών δικτύων

Εισαγωγή. Χάρης Μανιφάβας Τμήμα Εφ. Πληροφορικής & Πολυμέσων ΤΕΙ Κρήτης. Κατανεμημένα Συστήματα (Ε) Εισαγωγή 1

Σύστημα διασύνδεσης και. διαδικασία εισόδου-εξόδου

Εφαρµογές Πληροφορικής Υπολογιστών. Κεφάλαιο 3 Το υλικό του υπολογιστή

Διάρθρωση. Δίκτυα Υπολογιστών I Βασικές Αρχές Δικτύωσης. Διάρθρωση. Δίκτυο Υπολογιστών: ένας απλός ορισμός. Ευάγγελος Παπαπέτρου

Βασικές συσκευές Ε/Ε. Είσοδος Έξοδος στον υπολογιστή. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (IΙI) Μ.

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 1 ο ΚΕΦΑΛΑΙΟ

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Διάλεξη 1: Εισαγωγή στον Κατανεμημένο Υπολογισμό. ΕΠΛ 432: Κατανεμημένοι Αλγόριθμοι

ίκτυα ίκτυο υπολογιστών: Ένα σύνολο από υπολογιστικές συσκευές που συνδέονται µεταξύ τους για σκοπούς επικοινωνίας και χρήσης πόρων. Συνήθως, οι συσκε

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα

ΗΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT)

Οργάνωση και Αρχιτεκτονική Υπολογιστών. Κεφάλαιο 7.4

Λειτουργικά Συστήματα Η/Υ

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ 5ο ΚΕΦΑΛΑΙΟ

Κεντρική Μονάδα Επεξεργασίας

Βασίλειος Κοντογιάννης ΠΕ19

Αρχιτεκτονική Υπολογιστών

ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ (INTERNETWORKING)

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών

Διασυνδετικοί Δίαυλοι. Τι διασυνδέει ένας δίαυλος; Μεταφορά δεδομένων. Διασύνδεση Εισόδου-Εξόδου. Μ.Στεφανιδάκης

Στόχοι. Υπολογιστικά συστήματα: Στρώματα. Βασικές έννοιες [7]

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

ΜΑΘΗΜΑ 1- MULTIPLE CHOICE

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η

2 η Σειρά Ασκήσεων Data Link Layer

Μάθημα 4.1 Βασικές μονάδες προσωπικού υπολογιστή

Εισαγωγή στην Πληροφορική

Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 7: Τοπικά δίκτυα

Εκτέλεση προγράμματος

Τεχνολογία Δικτύων Επικοινωνιών (Ενότητα Πρωτόκολλα και Αρχιτεκτονική Δικτύου)

Βασικές έννοιες. Κατανεμημένα Συστήματα 1

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

Κατανεμημένα Συστήματα Ι

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

Αναδρομή. Τι γνωρίζετε για τη δυνατότητα «κλήσης» αλγορίθμων; Τι νόημα έχει;

Αρχιτεκτονική Η/Υ Το chipset ενός υπολογιστικού συστήματος. Δρ. Μηνάς Δασυγένης

Κεφάλαιο 3 Λειτουργικά Συστήματα Β ΕΠΑΛ

ΠΛΕ- 027 Μικροεπεξεργαστές 9ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Κρυφές μνήμες εισαγωγή

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

ΚΕΦΑΛΑΙΟ 6 ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. 03/01/09 Χαράλαμπος Τζόκας 1

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

Οργάνωση Υπολογιστών (ΙI)

Η ιεραρχία της μνήμης

Transcript:

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 116 5. Παράλληλα Συστήματα: Εισαγωγή Τα τελευταία χρόνια υπάρχει όλο και αυξανόμενη ζήτηση για αύξηση της απόδοσης των υπολογιστικών συστημάτων. Ταυτόχρονα υπάρχει και μια ραγδαία εξέλιξη στον τομέα των τηλεπικοινωνιών η οποία έκανε δυνατή την πρόσβαση σε απομακρυσμένα υπολογιστικά συστήματα με στόχο την ανταλλαγή δεδομένων. Στην περίπτωση όπου το ζητούμενο είναι η αύξηση της απόδοσης ενός υπολογιστή τότε το πρόβλημα είναι θέμα υπολογιστικής αρχιτεκτονικής. Στην περίπτωση που το ζητούμενο είναι η επικοινωνία μεταξύ απομακρυσμένων υπολογιστικών σταθμών για την ανταλλαγή δεδομένων και την συνεργασία για την αντιμετώπιση κάποιας εφαρμογής τότε το πρόβλημα είναι περισσότερο θέμα κατανεμημένης επεξεργασίας. Η παράλληλη επεξεργασία είναι ένα ανερχόμενο αντικείμενο στην αρχιτεκτονική των υπολογιστών και έχει στόχο τη βελτίωση της ταχύτητας επεξεργασίας χωρίς να βασίζεται στην βελτίωση της τεχνολογίας του υλικού. Μιλώντας γενικά ένας υπολογιστής θεωρείται παράλληλος αν αποτελείται από πολλές επεξεργαστικές μονάδες οι οποίες συνεργάζονται στενά για την λύση του ίδιου προβλήματος σε χρόνο μικρότερο από το χρόνο που θα χρειαζόταν ένας επεξεργαστής μόνος του για να λύσει το ίδιο πρόβλημα. Οι επεξεργαστές αυτοί λέγονται σφιχτά συνδεδεμένοι (tightly coupled). Την τελευταία δεκαετία η θεωρία της παράλληλης επεξεργασίας άρχισε να αποδίδει καρπούς. Εμφανίστηκαν τα πρώτα εμπορικά παράλληλα συστήματα υπολογιστών με διπλούς ή τετραπλούς επεξεργαστές Pentium και με κόστος τόσο μικρό ώστε να μπορούν να χρησιμοποιηθούν από μια όχι ιδιαίτερα μεγάλη επιχείρηση ή ακόμα κι από έναν ιδιώτη στο σπίτι. Η παράλληλη επεξεργασία μπήκε πλέον στο χώρο του λεγόμενου desktop computing, δηλαδή στους υπολογιστές γραφείου. Μια άλλη καινοτομία των τελευταίων ετών είναι η ραγδαία ανάπτυξη των δικτύων και η σχετικά φθηνή δημιουργία υπερ-ταχέων τυποποιημένων δικτύων τοπικής εμβέλειας ή ακόμη και ευρείας περιοχής. Τέτοια παραδείγματα είναι το GigaBit Ethernet, το ATM, και το WDM. Η διάδοση τέτοιων δικτύων έδωσε τη δυνατότητα ανάπτυξης ενός νέου υπολογιστικού μοντέλου όπου πολλοί, απλοί υπολογιστές γραφείου συνδεόμενοι μέσα από το ταχύ δίκτυο μπορούν να λειτουργούν ως μια μεγάλη, εικονική παράλληλη μηχανή. Αυτή η τεχνολογία είναι γνωστή ως grid-computing ενώ οι ομάδες τέτοιων υπολογιστών καλούνται clusters. Η τεχνολογία αυτή αποτελεί μια γέφυρα μεταξύ παράλληλης και κατανεμημένης τεχνολογίας. 5.1 Παράλληλη Επεξεργασία Συνοπτικά, τα βασικά προβλήματα που αντιμετωπίζει η καθαρή παράλληλη επεξεργασία είναι τα εξής: 1. Η επικοινωνία μεταξύ των επεξεργαστών

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 117 2. Η διαχείριση της μνήμης 3. Η τοπολογία του δικτύου διασύνδεσης μεταξύ των επεξεργαστών 4. Θέματα ανοχής στα σφάλματα 5. Θέματα παράλληλου λογισμικού, όπως η κατάτμηση των αλγορίθμων σε κομμάτια που μπορούν να εκτελεστούν παράλληλα, ο σχεδιασμός παράλληλων λειτουργικών συστημάτων, η ανάπτυξη παράλληλων μεταφραστών, κλπ. Η παράλληλη επεξεργασία μπορεί να γίνει καλύτερα κατανοητή με ένα παράδειγμα: Έστω ότι ο στόχος μας (η εφαρμογή) είναι να μεταφερθούν κάποιο σάκοι με άμμο στις όχθες ενός ποταμού για προστασία από τις πλημμύρες. Έστω ότι οι σάκοι βρίσκονται σε μια μεγάλη αποθήκη και ότι για να γίνει το φράγμα χρειάζονται να μεταφερθούν 100000 σάκοι άμμου. Έστω επίσης ότι ένας άνθρωπος μόνος του (δηλ. ένας επεξεργαστής) εργαζόμενος οχτώ ώρες τη μέρα μπορεί να μεταφέρει 500 σάκους τη μέρα. Μ' αυτό το ρυθμό ένας άνθρωπος μόνος του θα ολοκληρώσει το έργο σε 200 μέρες δηλαδή περίπου 6.5 μήνες. Η δουλειά προφανώς θα επιταχυνθεί αν στο έργο δουλέψουν π.χ 100 άνθρωποι ταυτόχρονα. Τότε θεωρητικά το έργο θα τελειώσει στο 1/100 του χρόνου δηλαδή σε 2 μέρες. Για να γίνει όμως αυτό οι άνθρωποι (επεξεργαστές) πρέπει να συνεργαστούν μεταξύ τους πράγμα που προϋποθέτει ότι επικοινωνούν μεταξύ τους με κάποιο αποδοτικό τρόπο. Πρέπει για παράδειγμα να αποφύγουν να στοιβάζουν όλοι τους σάκους στο ίδιο σημείο αλλά να απλώνουν το φράγμα κατά μήκος όλου του ποταμού. Πρέπει για παράδειγμα να συμφωνήσουν εκ των προτέρων ποιο κομμάτι του ποταμού θα επιχωματώσει ο καθένας (κατάτμηση του αλγορίθμου σε κομμάτια που θα εκτελεστούν παράλληλα). Επίσης θα πρέπει να υπάρχει κάποιος αποδοτικός τρόπος να διανέμονται οι σάκοι στον καθένα γιατί διαφορετικά αν προσπαθήσουν και οι 100 ταυτόχρονα να πάνε στην αποθήκη και να πάρουν ένα σάκο θα δημιουργηθεί συνωστισμός και αδιαχώρητο και τελικά πιθανώς δεν θα εξυπηρετηθεί κανείς. Ενδεχομένως θα ήταν πιο αποδοτικό να δημιουργηθεί μια αλυσίδα όπου ο ένας θα δίνει στον άλλο από ένα σάκο και ο τελευταίος θα τον αποθέτει στον ποταμό. Αυτό απαιτεί κάποια συνεννόηση μεταξύ των ανθρώπων η οποία επιτυγχάνεται στην περίπτωσή μας με την απλή οπτική επαφή αλλά στην περίπτωση των υπολογιστών επιτυγχάνεται με ανταλλαγή μηνυμάτων μεταξύ των επεξεργαστών. Τέλος θα πρέπει να ενημερώνει ο ένας τον άλλο ότι πιάνει δουλειά ή ότι σταματάει είτε διότι σταμάτησε η βάρδια του είτε για άλλο λόγο (πχ. ατύχημα). Από το παράδειγμα γίνεται σαφές ότι η παράλληλη επεξεργασία απαιτεί στενή συνεργασία μεταξύ των επεξεργαστών και ότι χαρακτηριστικό τους είναι ότι λύνουν κάποιο κοινό πρόβλημα. Ο στόχος της συνεργασίας είναι η επιτάχυνση της δουλειάς και η μεγαλύτερη απόδοση. Για τους λόγους αυτούς οι παράλληλοι υπολογιστές αποτελούνται από

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 118 επεξεργαστές που βρίσκονται πολύ κοντά ο ένας με τον άλλο, όχι απλώς στο ίδιο δωμάτιο ή στο ίδιο κουτί αλλά συχνά πάνω στην ίδια κάρτα. Στόχος είναι η ελαχιστοποίηση του χρόνου επικοινωνίας μεταξύ τους και επομένως το δίκτυο διασύνδεσης έχει τυπικά πολύ μεγάλη ταχύτητα. Σε ορισμένες μάλιστα περιπτώσεις οι επεξεργαστές σχεδιάζονται ειδικά για τη λύση ενός συγκεκριμένου προβλήματος ή μιας κατηγορίας ομοειδών προβλημάτων (πχ. πολλαπλασιασμός πινάκων, βασικοί αλγόριθμοι επεξεργασίας εικόνας). Αυτοί οι υπολογιστές λέγονται ειδικού σκοπού και βρίσκονται σε αντίθεση με τους υπολογιστές γενικού σκοπού που, όπως λέει και το όνομά τους, έχουν σχεδιαστεί να εκτελούν οποιαδήποτε εφαρμογή. Πίνακας 21. Τυπικοί χρόνοι πρόσβασης στη μνήμη για διάφορες εμπορικές παράλληλες μηχανές κοινής μνήμης χωρίς δίκτυο bus. Οι χρόνοι αυτοί είναι πολύ μεγαλύτεροι από τον τυπικο χρόνο προσπέλασης μιας απλής μνήμης (~10ns). Μηχανή Επικοινωνία Τοπολογία Δικτύου Μέγιστο Πλήθος Επεξεργαστών Τυπικός χρόνος προσπέλασης απομακρυσμένης μνήμης (ns) Sun Starfire servers UMA Πολλαπλά 64 500 Bus SGI Origin 3000 NUMA Fat 512 500 Hypercube Cray T3E NUMA Διπλή 3-Δ 2048 300 σπείρα HP V series UMA 8x8 crossbar 32 1000 Compaq AlphaServer UMA Switched 32 400 GS buses 5.1.1.1 Κριτήρια απόδοσης μηχανισμών επικοινωνίας 1. Εύρος ζώνης επικοινωνίας (Communication bandwidth). Πως η επικοινωνία επηρεάζει την απόδοση μιας παράλληλης υπολογιστικής μηχανής; Η επικοινωνία δεσμεύει πόρους του επεξεργαστή και δεν του επιτρέπει να χειρίζεται άλλα εισερχόμενα ή εξερχόμενα μηνύματα ταυτόχρονα. Αυτό θέτει ένα ανώτατο όριο στο εύρος ζώνης της επικοινωνίας το οποίο είναι συχνά χαμηλότερο από το εύρος ζώνης της μνήμης και άρα καταντάει να είναι ο κύριος περιοριστικός παράγοντας στην ταχύτητα της επεξεργασίας. 2. Καθυστέρηση επικοινωνίας (Communication latency). Είναι το παρακάτω άθροισμα: όπου [ΧρΑπ] + [ΧρΤαξ] + [ΧρΜετ] + [ΧρΠαρ] [ΧρΑπ] = Χρόνος προετοιμασίας του μηνύματος από τον αποστολέα,

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 119 [ΧρΤαξ] = Χρόνος ταξιδιού, δηλαδή ο χρόνος που χρειάζεται ο παλμός να διασχίζει τη δεδομένη απόσταση από τον αποστολέα στον παραλήπτη, [ΧρΜετ] = Χρόνος μεταγωγής, δηλαδή ο χρόνος που ξοδεύεται σε ενδιάμεσους σταθμούς (switching time), [ΧρΠαρ] = χρόνος που ξοδεύεται στην παραλαβή του μηνύματος 3. Απόκρυψη καθυστέρησης επικοινωνίας (Communication latency hiding). Είναι δυνατόν να καλύψουμε την καθυστέρηση στην επικοινωνία απασχολώντας τον επεξεργαστή σε χρήσιμους υπολογισμούς (ή σε άλλη επικοινωνία) όση ώρα περιμένει ένα μήνυμα από ένα απομακρυσμένο επεξεργαστή; Θα δούμε διάφορες τέτοιες τεχνικές στις επόμενες ενότητες. 5.1.1.2 Πλεονεκτήματα διαφόρων μηχανισμών επικοινωνίας Τα βασικά πλεονεκτήματα της κοινής μνήμης (shared memory) είναι τα παρακάτω Συμβατότητα με το γνωστό και κατανοητό μοντέλο του απλού επεξεργαστή Ευκολία προγραμματισμού ιδίως όταν η επικοινωνία μεταξύ των επεξεργαστών είναι πολύπλοκη ή μεταβάλλεται δυναμικά κατά την εκτέλεση του προγράμματος Μικρότερο επί πλέον κόστος επικοινωνίας (overhead) όταν κυριαρχούν τα μικρά πακέτα μηνυμάτων, κι αυτό γιατί η κοινή μνήμη είναι ένας καλός τόπος επικοινωνίας ιδίως αφού υπάρχει συνήθως προστασία προσπέλασης (protection) υλοποιημένη με καλωδιωμένη λογική (hardware). Η χρήση cache για όλα τα δεδομένα μειώνει τη συχνότητα επικοινωνίας, την καθυστέρηση επικοινωνίας, και τις συγκρούσεις μεταξύ των επεξεργαστών για την πρόσβαση σε κοινά δεδομένα. Τα βασικότερα πλεονεκτήματα της αρχιτεκτονικής με ανταλλαγή μηνυμάτων είναι τα εξής Η καλωδιωμένη λογική είναι απλούστερη, ιδίως αν συγκριθεί με την σημαντική πολυπλοκότητα που επιβάλλεται από την ανάγκη των συστημάτων με κοινή μνήμη να υπάρχει συνέπεια μεταξύ cache και κύριας μνήμης (cache coherency problem) Μεγαλύτερη ευκολία επέκτασης της αρχιτεκτονικής με πρόσθεση περισσότερων επεξεργαστών, αφού κάθε επεξεργαστής είναι σχετικά ανεξάρτητος ως προς τους υπόλοιπους. Αν και στην αγορά τώρα κυριαρχούν οι μηχανές με κύρια κεντρική μνήμη και μάλιστα με χρήση του δικτύου bus, η τάση που διαφαίνεται είναι η μετακίνηση προς τα συστήματα με κατανεμημένη μνήμη.

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 120 5.2 Διαχείριση κοινής μνήμης Η τυπική αρχιτεκτονική ενός πολυεπεξεργαστή με κοινή μνήμη και δίκτυο bus φαίνεται στο Σχήμα 6 (σελ. 11). Για κάθε επεξεργαστή υπάρχει μια τοπική cache η οποία παίζει διπλό ρόλο: (α) μειώνει το χρόνο πρόσβασης στα δεδομένα και (β) μειώνει τον αριθμό των προσβάσεων στην κύρια μνήμη. Το δεύτερο είναι πολύ σημαντικό αφού την κύρια μνήμη τη μοιράζονται N επεξεργαστές (πχ. N=8, 16, κλπ) μέσω ενός και μόνο καναλιού. Όσο οι επεξεργαστές εξυπηρετούνται από την τοπική τους cache και δεν χρησιμοποιούν το κοινό bus για την πρόσβαση στη μνήμη τόσο μειώνεται η πιθανότητα σύγκρουσης (contention) μεταξύ τους και επομένως μειώνονται οι άσκοπες καθυστερήσεις. Το μοντέλο αυτό πολυεπεξεργασίας άρχισε να γίνεται δημοφιλές τη δεκαετία του 80 και παραμένει δημοφιλές ακόμα και σήμερα. Στα πρώτα συστήματα αυτού του τύπου ο επεξεργαστής μαζί με την τοπική cache τοποθετούνταν σε μια κάρτα (board) και οι κάρτες επικοινωνούσαν στο πίσω μέρος του κουτιού μέσω του bus (backplane bus). Αργότερα κατέστη δυνατό να τοποθετούνται περισσότεροι του ενός επεξεργαστές στην ίδια κάρτα (πχ. 4, 8, κλπ) ενώ σήμερα εμφανίζονται περιπτώσεις όπου πολλοί επεξεργαστές βρίσκονται μέσα στο ίδιο chip συνδεδεμένοι μεταξύ τους σαν ένας πολυεπεξεργαστής. 5.2.1 Διατήρηση συνέπειας μεταξύ cache και κύριας μνήμης Σε έναν πολυεπεξεργαστή το βασικό πρόβλημα στην ύπαρξη πολλών τοπικών cache (μια για κάθε επεξεργαστή) είναι η συνέπεια μεταξύ των περιεχομένων της cache και του κομματιού της μνήμης στην οποία αντιστοιχεί η cache. Το πρόβλημα γίνεται εμφανές στον Πίνακα 22: ο επεξεργαστής διαβάζει το δεδομένο στη θέση μνήμης X της κύριας μνήμης και αυτόματα η τοπική του cache ενημερώνεται με μια καταχώρηση που λέει ότι στην θέση X υπάρχει η τιμή 1. Ομοίως ενημερώνεται και η τοπική cache του επεξεργαστή B σε μια αντίστοιχη ανάγνωση. Μέχρι στιγμής δεν υπάρχει κανένα πρόβλημα ασυμφωνίας. Το πρόβλημα προκύπτει αν ένας επεξεργαστής από τους δύο γράψει κάποια άλλη τιμή στη θέση μνήμης X, πχ. ο επεξεργαστής Α την τιμή 0. Αν χρησιμοποιηθεί το πρωτόκολλο write-though τόσο η τοπική cache του Α όσο και η κύρια μνήμη θα περιέχουν την τιμή 0, όμως η cache του B θα περιέχει την παλιά λανθασμένη τιμή 1. Αν δεν υπάρξει μέριμνα για το πρόβλημα αυτό όταν θα διαβάσει ο επεξεργαστής B το περιεχόμενο της μνήμης X θα την βρει στην τοπική του cache και δεν θα συμβουλευτεί την κύρια μνήμη (αυτός είναι και ο ρόλος της cache άλλωστε) διαβάζοντας μια λάθος τιμή. Αν πάλι o A χρησιμοποιεί το πρωτόκολλο write-back τότε η τοπική του cache θα έχει την τιμή 0 και το dirty-bit θα είναι 1 αλλά η cache του Β θα έχει την λάθος τιμή 1 χωρίς να γνωρίζει ότι αυτή είναι λάθος. Ο κάθε επεξεργαστής σε ένα παράλληλο σύστημα πολυεπεξεργασίας βλέπει ένα ενιαίο χώρο μνήμης και δεν ενδιαφέρεται αν μια αίτηση του για ανάγνωση ή εγγραφή δεδομένων εξυπηρετείται από την τοπική cache, από μια απομακρυσμένη cache, ή από την κύρια μνήμη. Το μόνο που τον ενδιαφέρει είναι η τιμή που θα πάρει από την ανάγνωση να είναι «σωστή» δηλαδή να λάβει την πιο πρόσφατη τιμή που γράφτηκε στη συγκεκριμένη θέση μνήμης.

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 121 Πίνακας 22. Το πρόβλημα της ασυνέπειας μεταξύ τοπικών cache και κύριας μνήμης. Χρόνος Συμβάν Περιεχόμενο της cache του επεξ. Α Περιεχόμενο της cache του επεξ. Β Περιεχόμενο της κύριας μνήμης στη θέση X 0 1 1 A read X 1 1 2 B read X 1 1 1 3 A store 0 to X (με write-through) 0 1 0 A store 0 to X (με write-back) 0 dirty-bit=1 1 1 Πιο συγκεκριμένα θα λέμε ότι ένα σύστημα μνήμης (και σ αυτό περιλαμβάνεται όλη η ιεραρχία της μνήμης) είναι συνεπές όταν συμβαίνουν τα εξής 1. Το σύστημα μνήμης διατηρεί την σειρά των εντολών του προγράμματος. Αυτό σημαίνει ότι αν ένας επεξεργαστής ζητήσει να διαβάσει ένα δεδομένο X το οποίο ο ίδιος προηγουμένως είχε γράψει πρέπει να πάρει την τιμή που έγραψε, αν ενδιάμεσα κανένας άλλος επεξεργαστής δεν έχει πειράξει τη θέση μνήμης X. 2. Οι επεξεργαστές επικοινωνούν γράφοντας σε θέσεις μνήμης οι οποίες διαβάζονται κατόπιν από άλλους επεξεργαστές. Αυτό σημαίνει ότι αν ένας επεξεργαστής Ε1 γράψει στη θέση μνήμης X, και ο επεξεργαστής Ε2 διαβάσει αργότερα από την ίδια θέση μνήμης θα λάβει την τιμή που έγραψε ο Ε1, αν φυσικά δεν έχει μεσολαβήσει άλλη εγγραφή στο X. 3. Διαφορετικές εγγραφές στην ίδια θέση μνήμης εκτελούνται σειριακά και αυτή η σειρά φαίνεται η ίδια από όλους τους επεξεργαστές. Για παράδειγμα, έστω ότι ο επεξεργαστής Ε1 γράφει την τιμή 1 στη θέση μνήμης X και κατόπιν ο επεξεργαστής Ε2 γράφει την τιμή 2 στην ίδια θέση μνήμης. Τότε όλοι οι επεξεργαστές του συστήματος θα διαβάσουν την τελευταία τιμή (δηλαδή το 2) και δεν πρόκειται άλλοι επεξεργαστές να διαβάσουν το 2 και άλλοι το 1. 5.2.2 Πρωτόκολλα διατήρησης της συνέπειας μεταξύ cache και κοινής κύριας μνήμης (cache coherence protocols). Τα πρωτόκολλα διαχείρισης των πολλαπλών cache και της κοινής μνήμης σε έναν πολυεπεξεργαστή λέγονται cache coherence protocols. Υπάρχουν δύο βασικές φιλοσοφίες για την αντιμετώπιση του προβλήματος 1. Πρωτόκολλα βασισμένα στο κρυφοκοίταγμα (snooping protocols), 2. Πρωτόκολλα βασισμένα σε κατάλογο (directory-based protocols).

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 122 5.2.2.1 Η μέθοδος του κρυφοκοιτάγματος (snooping) Στην τεχνική αυτή κάθε cache που φυλάσσει ένα block δεδομένων της κύριας μνήμης φυλάσσει και την κατάσταση του block αυτού όσον αφορά την κοινοκτησία του και από άλλες cache. Οι ελεγκτές όλων των cache αφουγκράζονται (snoop) το κοινό bus της μνήμης για να δουν αν κάποιος άλλος ζητάει δοσοληψία με κάποιο block μνήμης που βρίσκεται τοπικά στην cache. Διαχείριση εγγραφής δεδομένων (write) Το λεγόμενο πρωτόκολλο write-invalidate είναι το πιο συχνά χρησιμοποιούμενο όταν γίνεται εγγραφή από κάποιον επεξεργαστή στη μνήμη (κύρια ή τοπική cache). Το πρωτόκολλο αυτό εφαρμόζεται τόσο στη μέθοδο του κρυφοκοιτάγματος όσο και στην μέθοδο του καταλόγου. Η ιδέα είναι απλή: όταν γράφεται κάποιο block στη μνήμη ακυρώνονται όλα τα αντίγραφα αυτού του block που πιθανώς βρίσκονται σε κάποιες άλλες τοπικές cache. Έτσι, για να γυρίσουμε στο παράδειγμα του Πίνακα 2-3, όταν ο επεξεργαστής Α γράφει το block X στη μνήμη ενημερώνεται μεν σωστά η δική του cache αλλά ακυρώνεται το block που υπάρχει στην cache του επεξεργαστή Β (και όσων άλλων επεξεργαστών τυχαίνει να έχουν στην cache τους το block X). Έτσι όταν αργότερα ο επεξεργαστής Β ζητήσει το block X η τοπική του cache θα δηλώσει αποτυχία (cache miss) και ο επεξεργαστής θα αναγκαστεί να φέρει τα δεδομένα από την κεντρική μνήμη. Μια εναλλακτική τεχνική ως προς το πρωτόκολλο write-invalidate είναι η μέθοδος writeupdate ή write-broadcast. Σύμφωνα με αυτή τη μέθοδο δεν ενημερώνεται απλώς ένα bit field στις cache που έχουν το "βρώμικο" block αλλά οι cache αυτές ενημερώνονται με τα νέα δεδομένα, δηλαδή αλλάζει το περιεχόμενο των δεδομένων της κάθε cache. Η μέθοδος write-invalidate έχει κυριαρχήσει στην τεχνολογία των πολυεπεξεργαστών. Παρακάτω παρουσιάζονται τα συγκριτικά πλεονεκτήματα και μειονεκτήματα των δύο μεθόδων 1. Όταν γίνονται πολλαπλά write στην ίδια λέξη (word) η μέθοδος write-invalidate θα ακυρώσει τις άλλες cache μόνο μια φορά ενώ η μέθοδος write-update θα κάνει ενημέρωση των cache κάθε φορά ξοδεύοντας περισσότερο εύρος ζώνης (bandwidth). 2. Συνήθως κάθε block στην cache αποτελείται από πολλές λέξεις (words). Όταν γράφονται διαφορετικές λέξεις στο ίδιο block η μέθοδος write-invalidate θα ακυρώσει το block των άλλων cache μόνο μια φορά ενώ η μέθοδος write-update θα κάνει ενημέρωση των cache για κάθε word. 3. Η καθυστέρηση στην ανάγνωση ενός block από ένα επεξεργαστή Β μετά από το γράψιμό του από ένα άλλο επεξεργαστή Α είναι μικρότερη στο πρωτόκολλο writeupdate αφού η cache του Β είναι ήδη ενημερωμένη και έτοιμη. Αντίθετα, στο πρωτόκολλο write-invalidate η cache πρέπει πρώτα να ενημερωθεί και μετά να γίνει ανάγνωση.

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 123 Παρ' όλο το τελευταίο αυτό πλεονέκτημα της μεθόδου write-update το εύρος ζώνης της μνήμης είναι συνήθως η πιο κρίσιμη παράμετρος σχεδίασης ενός πολυεπεξεργαστή και σ' αυτόν τον τομέα υπερτερεί σαφώς το πρωτόκολλο write-invalidate. Στο πρωτόκολλο του κρυφοκοιτάγματος όλες οι cache παρακολουθούν συνέχεια τη δραστηριότητα στο bus κοιτάζοντας τις διευθύνσεις μνήμης που ζητούνται. Αν η διεύθυνση που υπάρχει τώρα στο bus υπάρχει και στην τοπική cache τότε όλο το αντίστοιχο block ακυρώνεται. Στην περίπτωση που υπάρχει ταυτόχρονη επιθυμία πρόσβασης στη μνήμη από δύο επεξεργαστές το bus δίνει αποκλειστική πρόσβαση μόνο στον ένα από τους δύο. Έτσι ένας επεξεργαστής δεν μπορεί να γράψει στην κοινή μνήμη αν δεν έχει την αποκλειστικότητα του bus. Αυτό σειριοποιεί τις παράλληλες εντολές write με αποτέλεσμα οι επεξεργαστές να ανταγωνίζονται ο ένας τον άλλον για το ποιος θα γράψει πρώτος. Ο επεξεργαστής που χάνει ακυρώνει την cache του αν ο επεξεργαστής που κερδίζει γράψει σε κάποιο κοινό block μνήμης. Διαχείριση δεδομένων σε αποτυχία ανάγνωσης (read-miss) Εκτός από την ακύρωση των δεδομένων των άλλων cache όταν γίνεται εγγραφή από ένα επεξεργαστή χρειάζεται και εύρεση των σωστών δεδομένων όταν υπάρχει αποτυχία ανάγνωσης της τοπικής cache. Όταν υπάρχει αποτυχία ανάγνωσης για κάποιο block της τοπικής cache τα δεδομένα αυτά πρέπει να έρθουν στην cache είτε αυτά βρίσκονται στην κύρια μνήμη είτε βρίσκονται σε κάποια άλλη cache. Αν χρησιμοποιείται το πρωτόκολλο write-through για όλες τις cache τότε τα πράγματα είναι απλά: τα σωστά δεδομένα βρίσκονται στην κύρια μνήμη και η cache δεν έχει παρά να διαβάσει το κατάλληλο block της κύριας μνήμης. Τα πράγματα γίνονται πιο πολύπλοκα αν χρησιμοποιείται το πρωτόκολλο write-back. Κατά το πρωτόκολλο αυτό τα σωστά δεδομένα ενδεχομένως να μη βρίσκονται στην κύρια μνήμη αλλά σε κάποια άλλη cache. Η λύση δίνεται πάλι από το κρυφοκοίταγμα: όλες οι cache κοιτάνε τη διεύθυνση που κυκλοφορεί στο bus είτε αυτή πρόκειται για διεύθυνση εγγραφής είτε πρόκειται για διεύθυνση ανάγνωσης. Αν για παράδειγμα, η cache C1 κάνει μια αποτυχία ανάγνωσης (read-miss) τότε θα τοποθετήσει στο bus μια διεύθυνση ανάγνωσης ζητώντας τα δεδομένα από την κύρια μνήμη (το αντίστοιχο flag Read/Write του bus θα έχει την τιμή 1 δηλ. Read). Μόλις μια cache C2 δει τη διεύθυνση ανάγνωσης στο bus ψάχνει αν αυτή υπάρχει τοπικά. Αν όχι, τότε δεν κάνει τίποτα. Αν ναι, τότε σταματάει την προσπάθεια της C1 κάνοντας το σήμα Abort=1 και σταματώντας την ανάγνωση από την κύρια μνήμη. Κατόπιν, η C2 προσφέρει το ζητούμενο block στην C1 πάλι μέσω του bus. Τα πρωτόκολλα συνέπειας πολλαπλών cache υλοποιούνται σε κύκλωμα συνήθως με χρήση μηχανών πεπερασμένων καταστάσεων. Για παράδειγμα στα Σχήμα 30, Σχήμα 31 φαίνεται η μηχανή καταστάσεων που υλοποιεί το συνδυασμό των πρωτοκόλλων κρυφοκοιτάγματος, με write-invalidate και write-back. Κάθε block στην cache βρίσκεται σε μια από τρεις καταστάσεις: (α) Άκυρο / Δεν υπάρχει, (β) Κοινό με άλλες cache, ή (γ) Αποκλειστικό στην τοπική cache. Για να γίνουν κατανοητά

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 124 τα Σχήμα 30, Σχήμα 31 πρέπει να παρατηρήσουμε πρώτ απ όλα ότι η κατάσταση ενός block μεταβάλλεται ανάλογα με τις εντολές εγγραφής ή ανάγνωσης που παράγει η τοπική CPU αλλά και από τη δραστηριότητα του bus. Κρυφοκοίταγμα θα πει ακριβώς ότι η cache παρακολουθεί τις διευθύνσεις που κυκλοφορούν στο bus και κάνει τις κατάλληλες ενέργειες ανάλογα με το αν πρόκειται για εγγραφή ή ανάγνωση. Άκυρο / Δεν υπάρχει CPU read-miss Βάλε στο bus αίτηση ανάγνωσης. Φέρε το block από τη μνήμη στην cache Κοινό (Shared) CPU read-hit CPU CPU write-miss Βάλε στο bus αίτηση εγγραφής. Φέρε το block από τη μνήμη στην cache CPU write-hit Βάλε στο bus αίτηση εγγραφής Αποκλειστικό (Exclusive) CPU read-miss CPU write-hit Σχήμα 30. Το διάγραμμα καταστάσεων μιας μηχανής που υλοποιεί το συνδυασμό των πρωτοκόλλων κρυφοκοιτάγματος με write-invalidate και write-back. Φαίνονται οι μεταβολές των καταστάσεων ενός block οι οποίες προκαλούνται από τις εντολές της CPU.

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 125 BUS Άκυρο / Δεν υπάρχει Write-miss Κοινό (Shared) Write-miss Γράψε το block στην κύρια μνήμη (write-back) και ακύρωση την memory access Αποκλειστικό (Exclusive) Read-miss Γράψε το block στην κύρια μνήμη (write-back) και ακύρωση την memory access Σχήμα 31. Το αντίστοιχο διάγραμμα καταστάσεων όπου φαίνονται οι μεταβολές των καταστάσεων ενός block οι οποίες προκαλούνται από τη δραστηριότητα του BUS (λόγω κρυφοκοιτάγματος). Ας δούμε με λεπτομέρεια πως λειτουργεί η μηχανή πεπερασμένων καταστάσεων των Σχήμα 30, Σχήμα 31 ανάλογα με την κατάσταση που βρίσκεται το block της τοπικής cache (α) Το block δεν υπάρχει ή είναι άκυρο: (α1) Αν η CPU ζητήσει ανάγνωση από αυτό το block (βλ. Σχήμα 30) τότε θα έχουμε read-miss και η CPU θα βάλει την διεύθυνση στο bus με αίτηση ανάγνωσης (R/W flag = 1). Το block θα μεταφερθεί από την κύρια μνήμη στην cache και επειδή το block αυτό ενδεχομένως να υπάρχει και σε άλλες απομακρυσμένες cache καλούκακού αλλάζουμε την κατάστασή του από Άκυρο/Δεν-υπάρχει σε Κοινό. Επειδή πρόκειται για ανάγνωση και όχι για εγγραφή οι άλλες cache δεν χρειάζεται να ακυρώσουν τις δικές τους κόπιες του block. (α2) Αν η CPU ζητήσει να γράψει σ αυτό το block (βλ. Σχήμα 30) τότε θα έχουμε write-miss και θα τοποθετήσει η CPU στο bus την αντίστοιχη διεύθυνση με αίτηση εγγραφής (R/W flag = 0). Το block θα μεταφερθεί από την κύρια μνήμη στην cache και θα γίνει εγγραφή στην cache μόνο και όχι στην κύρια μνήμη (write-allocate με write-back). Ταυτόχρονα η κατάσταση του block από Άκυρο/Δεν-υπάρχει θα αλλάξει σε Αποκλειστικό αφού όλες οι άλλες cache κρυφοκοιτάζοντας το bus θα δουν ότι έγινε εγγραφή σ αυτό το block και θα ακυρώσουν τη δική τους κόπια (αν έχουν).

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 126 (α3) Ότι και να συμβεί στο bus (δηλαδή αν κάποιος άλλος κάνει είτε εγγραφή είτε ανάγνωση) δε γίνεται καμιά ενέργεια αφού το block δεν υπάρχει τοπικά (βλ. Σχήμα 31 όπου κανένα βέλος δεν ξεκινάει από τον κόμβο Άκυρο/Δεν-υπάρχει). (β) Το block είναι κοινό: (β1) Αν η CPU ζητήσει ανάγνωση από αυτό το block (βλ. Σχήμα 30) τότε έχουμε readhit και η CPU διαβάζει τα δεδομένα από την cache. Δε χρειάζεται να γίνει καμιά άλλη ενέργεια αφού το block δεν αλλοιώθηκε και επομένως οι άλλες cache δεν ενδιαφέρονται. Η κατάσταση του block παραμένει στο Κοινό. (β2) Αν η CPU ζητήσει να γράψει σ αυτό το block (βλ. Σχήμα 30) τότε έχουμε writehit και η CPU γράφει τα δεδομένα στην τοπική cache. Επειδή το πρωτόκολλο είναι write-back δεν γίνεται εγγραφή στη μνήμη, αλλά ενημερώνεται το dirty-bit σε 1 και η διεύθυνση τοποθετείται στο bus απλά και μόνο για να το δουν οι άλλες cache και να ακυρώσουν τις δικές τους κόπιες. Η κατάσταση του block αλλάζει σε Αποκλειστικό αφού μόνο η τοπική cache έχει τη σωστή κόπια. (β3) Αν κάποιος άλλος επεξεργαστής βάλει τη διεύθυνση αυτού του block στο bus με αίτηση εγγραφής (R/W flag = 0) αυτό σημαίνει ότι η τοπική κόπια πρέπει να ακυρωθεί. Έτσι έχουμε μετατροπή της κατάστασης του τοπικού block από Κοινό σε Άκυρο (βλ. Σχήμα 31). (γ) Το block είναι αποκλειστικό: (γ1) Αν η CPU ζητήσει ανάγνωση από αυτό το block (βλ. Σχήμα 30) τότε έχουμε readhit και η CPU διαβάζει τα δεδομένα από την cache. Δε χρειάζεται να γίνει καμιά άλλη ενέργεια αφού το block δεν αλλοιώθηκε και επομένως οι άλλες cache δεν ενδιαφέρονται. Η κατάσταση του block παραμένει στο Αποκλειστικό. (γ2) Αν η CPU ζητήσει να γράψει σ αυτό το block (βλ. Σχήμα 30) τότε έχουμε writehit και η CPU γράφει τα δεδομένα στην τοπική cache. Δε χρειάζεται να γίνει καμιά άλλη ενέργεια αφού μόνο αυτή η cache έχει έγκυρη κόπια του block αυτού. Η κατάσταση του block παραμένει στο Αποκλειστικό. (γ3) Αν κάποιος άλλος επεξεργαστής βάλει τη διεύθυνση αυτού του block στο bus με αίτηση εγγραφής (R/W flag = 0) αυτό σημαίνει ότι η τοπική κόπια πρέπει να ακυρωθεί. Έτσι έχουμε μετατροπή της κατάστασης του τοπικού block από Αποκλειστικό σε Άκυρο (βλ. Σχήμα 31). (γ4) Αν κάποιος άλλος επεξεργαστής βάλει τη διεύθυνση αυτού του block στο bus με αίτηση ανάγνωσης (R/W flag = 1) τότε η τοπική cache επεμβαίνει και σταματάει την ανάγνωση από την κύρια μνήμη. Ο λόγος είναι ότι λόγω του write-back η κύρια μνήμη δεν έχει τα σωστά δεδομένα και μόνο η τοπική cache έχει τα σωστά αφού άλλωστε αυτή έχει και την αποκλειστικότητα του block. Αυτό που γίνεται σ

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 127 αυτήν την περίπτωση είναι ότι η τοπική cache γράφει το block πίσω στην κύρια μνήμη (write-back) και ταυτόχρονα ο άλλος επεξεργαστής που είχε ζητήσει τα δεδομένα μπορεί ταυτόχρονα να τα διαβάσει από το bus. Επίσης έχουμε μετατροπή της κατάστασης του τοπικού block από Αποκλειστικό σε Κοινό (βλ. Σχήμα 31). 5.2.2.2 Η μέθοδος του καταλόγου (directory-based protocol) Το πρωτόκολλο snooping δεν μπορεί να εφαρμοστεί αν δεν υπάρχει δίκτυο bus ώστε να μπορούν όλες οι cache να το «αφουγκράζονται». Σε περίπτωση πολυ-υπολογιστών με κοινή κατανεμημένη μνήμη (NUMA) το δίκτυο είναι συνήθως διαφορετικό από το bus. Κάθε επεξεργαστής έχει δική του χωρικά μνήμη αλλά όλες μαζί οι τοπικές μνήμες αποτελούν ένα ενιαίο χώρο λογικών διευθύνσεων. Στην περίπτωση αυτή μπορεί να χρησιμοποιηθεί η μέθοδος του καταλόγου. Στο πρωτόκολλο αυτό η κύρια μνήμη διαθέτει έναν κατάλογο ο οποίος περιγράφει την κατάσταση κάθε block. Για κάθε block B της κύριας μνήμης φυλάσσεται ένα διάνυσμα D = [d 0, d 1, d 2,, d N ] από N+1 bits, όπου N είναι το πλήθος των επεξεργαστών. Τα bits d 1, d 2,, d N μας δείχνουν σε ποιες cache βρίσκεται το B. Αν d i = 1 τότε το B βρίσκεται στην cache του επεξεργαστή E i. Αν d 1 =d 2 = =d N =0 τότε το block βρίσκεται μόνο στην κύρια μνήμη. To bit d 0 δηλώνει ότι το block είναι clean (d 0 =0) ή dirty (d 0 =1). Αν το B είναι dirty τότε βρίσκεται αποκλειστικά σε μια cache. Όλες οι άλλες έχουν ακυρώσει το αντίγραφό τους (αν είχαν). Κάθε επεξεργαστής Ε i φυλάει τοπικά το τμήμα του καταλόγου που αφορά την (χωρικά) τοπική του μνήμη. Αν υπάρξει αποτυχία της cache για κάποιο block B που βρίσκεται σε ένα απομακρυσμένο επεξεργαστή Ε j τότε ο Ε i θα ζητήσει μέσω δικτύου το διάνυσμα του B από τον κατάλογο του κόμβου Ε j. Ο πλήρης αλγόριθμος καταλόγου περιγράφεται παρακάτω: Αλγόριθμος καταλόγου: Θεωρούμε ότι ο επεξεργαστής E i ζητάει ανάγνωση ή εγγραφή ενός block Β το οποίο βρίσκεται στη μνήμη του επεξεργαστή E j. Μπορεί το B να είναι τοπικό στον E i οπότε E j = E i ή να βρίσκεται σε κάποιο απομακρυσμένο κόμβο, οπότε E j E i. Γενικά, για οποιοδήποτε k, θα ονομάσουμε C k, M k, αντίστοιχα, την cache και την κύρια μνήμη του επεξεργαστή E k. Ανάλογα με το αν η C i έχει επιτυχία ή αποτυχία θα συμβούν τα εξής: Σε περίπτωση read-hit η C i δίνει το δεδομένο στον Ε i

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 128 Σε περίπτωση read-miss γίνεται αίτηση στον κατάλογο του κόμβου Ε j : o Αν ο κατάλογος δείξει ότι το B είτε δεν υπάρχει σε καμία cache είτε βρίσκεται στην cache κάποιου κόμβου E k, τότε το Β στέλνεται στον E i. και θέτουμε d i =1 o Αν ο κατάλογος δείξει ότι το B βρίσκεται στην cache C j του κόμβου E j (d j =1) και είναι dirty (d 0 =1) τότε το B γράφεται από την C j στη μνήμη M j του κόμβου E j, θέτουμε d 0 =0 και το B στέλνεται στον E i. o Αν ο κατάλογος δείξει ότι το B βρίσκεται στην cache C k του κόμβου E k E j (d k =1) και είναι dirty (d 0 =1) τότε θέτουμε d 0 =0, η C k ενημερώνει την μνήμη M j και το B προωθείται στον E i. Σε περίπτωση write-miss γίνεται αίτηση στον κατάλογο του κόμβου Ε j : o Αν ο κατάλογος δείξει ότι το B δεν υπάρχει σε καμία cache τότε η M j στέλνει το B στον E i θέτοντας d 0 =1 και d i =1. o Αν ο κατάλογος δείξει ότι το B είναι clean (d 0 =0) και υπάρχει σε κάποιες cache τότε ο E j στέλνει μηνύματα σε όλες αυτές τις cache να ακυρώσουν τις κόπιες τους. Μόλις πάρει απάντηση επιβεβαίωσης από όλες, τότε στέλνει το B στον E i και θέτει d 0 =1 και d i =1. o Αν ο κατάλογος δείξει ότι το B είναι dirty (d 0 =1) και βρίσκεται στην C j τότε ενημερώνεται η M j (write-back), ακυρώνεται το αντίγραφο του B στην C j, το B στέλνεται στον E i και θέτουμε d 0 =1, d j =0 και d i =1. o Αν ο κατάλογος δείξει ότι το B είναι dirty (d 0 =1) και βρίσκεται στην C k (k j) τότε η C k ενημερώνει την μνήμη M j, το B προωθείται στον E i και θέτουμε d 0 =1, d k =0 και d i =1. Σε περίπτωση write-hit γίνεται αίτηση στον κατάλογο του κόμβου Ε j : o Αν ο κατάλογος δείξει ότι το B είναι dirty (d 0 =1) τότε αυτό σημαίνει ότι υπάρχει μόνο στην C i. Ο επεξεργαστής E i προχωράει στην εγγραφή χωρίς να ενημερώσει κανέναν άλλο κόμβο. o Αν ο κατάλογος δείξει ότι το B είναι clean (d 0 =0) και υπάρχει σε κάποιες cache τότε ο E j στέλνει μηνύματα σε όλες αυτές τις cache (πλήν της C i ) να ακυρώσουν τις κόπιες τους και θέτει d 0 =1 και d i =1. 5.2.2.3 Σύγκριση μεταξύ των μεθόδων διατήρησης συνέπειας της μνήμης Πρέπει να σημειώσουμε ότι το πρωτόκολλο snoop μπορεί να χρησιμοποιηθεί μόνο εφόσον υπάρχει ένα κοινό μέσον το οποίο μπορούν να αφουγκράζονται όλοι οι επεξεργαστές, δηλαδή ένα bus. Με άλλα λόγια το πρωτόκολλο αυτό μπορεί να εφαρμοστεί μόνο σε πολυεπεξεργαστές με Κεντρική Κοινή Μνήμη (Centralized Shared Memory). Είναι προφανές ότι σε παράλληλες μηχανές όπου οι επεξεργαστές συνδέονται μεταξύ τους με ένα οποιοδήποτε άλλο δίκτυο δεν μπορεί να εφαρμοστεί το snooping. Αντίθετα, η μέθοδος του καταλόγου μπορεί να εφαρμοστεί σε οποιαδήποτε περίπτωση, είτε δηλαδή οι επεξεργαστές συνδέονται μεταξύ τους με bus είτε επικοινωνούν μεταξύ τους με δίκτυο άλλης τοπολογίας. Βέβαια η μέθοδος του καταλόγου είναι η μόνη επιλογή αν το δίκτυο δεν είναι τύπου bus. Για παράδειγμα, το πρωτόκολλο καταλόγου χρησιμοποιείται σε μηχανές με Κατανεμημένη Κοινή Μνήμη (Distributed Shared Memory).

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 129 5.3 Clusters Cluster ονομάζεται μια ομάδα υπολογιστών διασυνδεδεμένων μέσα από ένα τυποποιημένο δίκτυο πολύ υψηλής ταχύτητας με σκοπό τη συνεργασία μεταξύ τους για την επίλυση ενός συγκεκριμένου προβλήματος. Συχνά τα δομικά υλικά ενός cluster είναι απλοί υπολογιστές γραφείου σαν αυτούς που μπορεί κανείς να βρεί στο εμπόριο σε φθηνή τιμή και χωρίς ιδιαίτερα χαρακτηριστικά. Αυτό που δίνει αξία στο cluster είναι η επικοινωνία μεταξύ αυτών των υπολογιστικών κόμβων μέσα από ένα υπερταχύ δίκτυο τοπικής ή ευρείας περιοχής. Τα τελευταία χρόνια η ανάπτυξη πολύ γρήγορων δικτύων, όπως πχ το GB Ethernet, το ΑΤΜ, και το WDM, διευκόλυνε την ανάπτυξη των clusters και έτσι οδήγησε στη δημιουργία μιας γκρίζας ζώνης μεταξύ παράλληλης και κατανεμημένης επεξεργασίας. Πράγματι, η κύρια διαφορά μεταξύ παράλληλης και κατανεμημένης επεξεργασίας είναι η συχνότητα και η ποσότητα επικοινωνίας μεταξύ των κόμβων. Στην παράλληλη επεξεργασία έχουμε στενή συνεργασία μέσα από πυκνή επικοινωνία, ενώ στην κατανεμημένη επεξεργασία η συνεργασία είναι χαλαρή και η επικοινωνία αραιότερη. Με την τεχνολογία αυτή μπορούμε να χρησιμοποιήσουμε ένα τυποποιημένο δίκτυο, σχεδιασμένο κατ αρχήν για κατανεμημένη επεξεργασία, έτσι ώστε να επιτύχουμε στενή συνεργασία μεταξύ των κόμβων μέσα από το δεδομένο μεγάλο εύρος ζώνης επικοινωνίας, εξομοιώνοντας στην ουσία τη λειτουργία ενός μεγάλου παράλληλου υπολογιστή. Το πρώτο προφανές πλεονέκτημα σχετίζεται με το κόστος. Αντί να αγοράσει κανείς ένα πολύ ακριβό παράλληλο σύστημα αγοράζει πολλούς φθηνούς υπολογιστές και τους συνδέει με ένα επίσης προσιτό σε κόστος δίκτυο. Συνολικά το κόστος είναι μικρότερο και επί πλέον το σύστημα είναι εύκολα επεκτάσιμο. Ένα άλλο πλεονέκτημα των clusters είναι η ευκολία απομόνωσης σφαλμάτων και διόρθωσης βλαβών. Αν κάποιος υπολογιστής χαλάσει επισκευάζεται ή αντικαθίσταται με την αγορά ενός κανούργιου από το εμπόριο. Συνήθως, ένας κλασικός παράλληλος υπολογιστής προσφέρεται με κλειστή αρχιτεκτονική ενώ το λογισμικό του εξαρτάται από τη συγκεκριμένη εταιρεία και τη συγκεκριμένη αρχιτεκτονική. Στην περίπτωση των clusters, έχει αναπτυχθεί ανοιχτό λογισμικό το οποίο προσφέρει τη δυνατότητα επικοινωνίας σχεδόν απεριόριστου αριθμού κόμβων ενώ ο χρήστης μπορεί να επέμβη στη δημιουργία του παράλληλου κώδικα με χρήση εργαλείων όπως το MPI (Message Passing Interface). Το βασικό μοντέλο προγραμματισμού εδώ είναι το Ένα Πρόγραμμα Πολλά Δεδομένα (Single Program Multiple Data SPMD) κατ αντιστοιχία του SIMD, όπου το ίδιο πρόγραμμα εκτελείται από όλους τους κόμβους αλλά με διαφορετικά δεδομένα για κάθε κόμβο. Ένα μειονέκτημα της τεχνολογίας των clusters είναι το γεγονός ότι η επικοινωνία γίνεται μέσα από το I/O bus το οποίο είναι βραδύτερο από το memory bus που χρησιμοποιείται στους καθαρόαιμους παράλληλους υπολογιστές. Επίσης στο cluster η επικοινωνία γίνεται με software σε αντίθεση με τους πολυεπεξεργαστές που χρησιμοποιούν hardware.

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 130 Γενικά τα clusters είναι κατάλληλα για μια πληθώρα εφαρμογών που απαιτούν μεγάλο πλήθος επεξεργαστικών κόμβων και συχνή επικοινωνία μεταξύ τους αλλά δεν έχουν υπερβολικές απαιτήσεις στο εύρος ζώνης επικοινωνίας ώστε να χρειάζεται να καταφύγουμε στη λύση του πολυεπεξεργαστή. Τέτοιες εφαρμογές είναι για παράδειγμα οι βάσεις δεδομένων, οι file servers, οι Web servers, οι εξομοιώσεις πολύπλοκων συστημάτων, κα. 5.3.1 Σχεδιασμός ενός cluster Τα βασικά κριτήρια για το σχεδιασμό ενός cluster είναι το κόστος απόκτησης και συντήρησης του υλικού και του λογισμικού λαμβάνοντας υπ όψη τη συγκεκριμένη εφαρμογή (ή τις εφαρμογές) που σκοπεύουμε να το χρησιμοποιήσουμε. Τυπικά, οι επιστημονικές εφαρμογές έχουν περισσότερες απαιτήσεις σε υπολογιστική ισχύ ενώ οι εφαρμογές βάσεων δεδομένων και επεξεργασίας συνδιαλλαγών έχουν μεγάλες απαιτήσεις σε αποθηκευτικό χώρο. Στη συνέχεια δίνουμε τρεις σχεδιαστικές επιλογές με βάση τα παραπάνω κριτήρια. Αρχιτεκτονική 1: Χρήση τοπικών δίσκων. Το βασικότερο κριτήριο εδώ είναι το χαμηλό κόστος κτήσης. Σύμφωνα με την αρχιτεκτονική αυτή κάθε υπολογιστικός κόμβος είναι ένας πλήρης υπολογιστής αποτελούμενος από επεξεργαστή, τοπική μνήμη, και σκληρό δίσκο. Μια εναλλακτική επιλογή είναι η χρήση πολυεπεξεργαστών του εμπορίου (πχ. διπλά ή τετραπλά Pentium) καθώς το κόστος δεν είναι υπερβολικά μεγάλο, αν διαιρεθεί δια του πλήθους των επεξεργαστών, ενώ μπορούμε να εκμεταλλευτούμε το γρήγορο εσωτερικό bus του κάθε πολυεπεξεργαστή. Λόγω χαμηλού κόστους κτήσης και υψηλής ταχύτητας το πιο συνηθισμένο δίκτυο είναι το GB Ethernet (Σχήμα 32).

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 131 1 Gbit Ethernet switch 1 Gbit Ethernet switch internet P P P M είτε M D D Σχήμα 32. Σχεδιασμός cluster με χρήση τοπικών δίσκων. Αρχιτεκτονική 2: Χρήση δικτυακού αποθηκευτικού χώρου (Storage Area Network SAN) Η επιλογή αυτής της λύσης γίνεται όταν είναι κρίσιμη η διατήρηση της συνέπειας των δεδομένων μετά από μια βλάβη σε κάποιο δίσκο. Για το λόγο αυτό όλοι οι δίσκοι συγκεντρώνονται πίσω από ένα RAID controller οποίος προσφέρει ανοχή σε σφάλματα. Η σύνδεση κάθε υπολογιστή με το RAID Box γίνεται με μια κάρτα FC- AL Host adapter (Σχήμα 33).

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 132 1 Gbit Ethernet switch 1 Gbit Ethernet switch internet P RAID Box M D D.... D D D D FC-AL Προς RAID Box Σχήμα 33. Σχεδιασμός cluster με χρήση Storage Area Network. Αρχιτεκτονική 3: Σχεδιασμός για επεξεργασία συνδιαλλαγών Όταν κάνουμε αναζήτηση σε εξαιρετικά μεγάλες βάσεις δεδομένων χρειαζόμαστε μεγάλο αποθηκευτικό χώρο και ισχυρή επεξεργαστική ισχύ. Μια κατάλληλη αρχιτεκτονική προς το σκοπό αυτό είναι η χρήση πολυεπεξεργαστών για τους υπολογιστικούς κόμβους με δικό τους τοπικό δίσκο αλλά και με κεντρικό αποθηκευτικό χώρο τύπου Storage enclosures τα οποία προσπελαύνονται μέσα από ένα RAID controller.

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 133 1 Gbit Ethernet switch internet P P P P Storage Enclosure D D.... D D D D D D D D D D RAID-C M Προς Storage D Σχήμα 34. Σχεδιασμός cluster για Transaction Processing. 5.3.1.1 Παράδειγμα: το cluster της Google Το site της Google φιλοξενεί μια από τις πιο δημοφιλείς μηχανές αναζήτησης του παγκόσμιου ιστού (Web). Κάθε ερώτημα στον Google server πυροδοτεί μια διαδικασία αναζήτησης μέσα σε ένα τεράστιο όγκο πληροφορίας μεγέθους πολλών δεκάδων TeraBytes (1 TeraByte = 1000 GigaBytes). Μόνο τα indexes είναι μεγέθους αρκετών Terabytes. Ευτυχώς η αναζήτηση μπορεί να παραλληλιστεί τεμαχίζοντας το index σε κομμάτια που καλούνται index shards. Την αναζήτηση στα shards κάνουν οι λεγόμενοι index servers. Αφού ψαχτούν τα shards δημιουργείται μια ταξινομημένη λίστα από document ids (docids) τα οποία κατόπιν χρησιμοποιούνται για να ανακτήσουν σχετική πληροφορία από τα documents που φυλάσσονται στη βάση του Google. Οι λεγόμενοι document servers αναλαμβάνουν αυτή τη δουλειά και εξάγουν πληροφορία από τα κείμενα όπως: τίτλο, URL, και περίληψη κειμένου. Τη λύση δίνει ένα cluster που αποτελείται από δύο ειδών κόμβους: index servers και document servers. Συνολικά το cluster περιέχει περισσότερους από 15.000 κόμβους μοιρασμένους σε 3 κτήρια (2 στην Καλιφόρνια και 1 στη Βιρτζίνια των ΗΠΑ). Κάθε κόμβος είναι ένας υπολογιστής Pentium. Υπάρχουν διάφορες γενιές Pentium από 533 MHz μέχρι dual Xeon servers. Κάθε υπολογιστής περιέχει επίσης 1 ή 2 δίσκους IDE

Κεφάλαιο 5: Παράλληλα Συστήματα: Εισαγωγή 134 χωρητικότητας 80 GB έκαστος. Οι υπολογιστές (ουσιαστικά οι μητρικές κάρτες με το δίσκους) απογυμνωμένοι από κάθε τι περιττό, όπως οθόνες, πληκτρολόγια, κλπ, τοποθετούνται συρταρωτά σε ειδικά κουτιά, που λέγονται ικριώματα (racks). Κάθε ικρίωμα περιέχει 80 υπολογιστές. Τα βασικά προβλήματα που αντιμετωπίζει η αρχιτεκτονική του cluster της Google είναι τα παρακάτω: (α) η διαχείριση της ενέργειας και η απαγωγή της θερμότητας από τα racks (β) η κατά το δυνατόν ίση κατανομή φόρτου εργασίας στους υπολογιστές με δεδομένες τις διαφορετικές γενιές Pentium που υπάρχουν και τις διαφορετικές δυνατότητες κάθε υπολογιστή (γ) η ανοχή στα σφάλματα, η διαχείριση των κόμβων και η αντικατάστασή τους Οι απαιτήσεις του συστήματος είναι εξαιρετικά υψηλές. Μπορεί να χειριστεί περισσότερες από 1000 αιτήσεις αναζήτησης ανά δευτερόλεπτο Η υπηρεσία είναι συνεχώς διαθέσιμη και η λειτουργία της αδιάλειπτη Η καθυστέρηση απάντησης στο χρήστη είναι μικρότερη από 0,5 δευτερόλεπτα Η υπηρεσία ψάχνει πάνω από 1,5 δισεκατομμύρια διευθύνσεις URL. Είναι προφανές ότι καμία κλασική παράλληλη μηχανή δε θα μπορούσε να ανταπεξέλθει στις παραπάνω απαιτήσεις. Μόνη λύση είναι το cluster και μάλιστα με τόσο μεγάλο μέγεθος ώστε το πρόβλημα να μπορεί να αντιμετωπιστεί ρεαλιστικά και χωρίς απαγορευτικά υψηλό κόστος.