Αρχιτεκτονική Υπολογιστών Παραλληλισμός Βασικές Πηγές: Αρχιτεκτονική Υπολογιστών: μια Δομημένη Προσέγγιση, Α. Tanenbaum, Vrije Universiteit, Amsterdam. Computer Architecture and Engineering, K. Asanovic, CS1/2-52, University of Berkeley. Αρχιτεκτονική Υπολογιστών, Ν. Κοζύρης, Εθνικό Μετσόβιο Πολυτεχνείο. Compaq: Simultaneous Multi-Threading (Alpha EV8) Silicon Graphics: Multiprocessor Architecture Σύνθεση: Κ.Γ. Μαργαρίτης, Πανεπιστήμιο Μακεδονίας, Τμήμα Εφαρμοσμένης Πληροφορικής.
Αρχιτεκτονική Υπολογιστών Παραλληλισμός
(Πολύ) Σύντομη Ιστορία Παραλληλισμού 1960-70 : Ταξινόμηση του Flynn, Concurrency (Ταυτοχρονισμός) 1970-80: Ανυσματικοί Υπολογιστές (Vector Computers), Υπολογιστές Μητρώου (Array Computers) 1980-90: VLSI, Μεγάλοι ΜultiProcessors, ILP (και Τransputer) 1990-2000: Δίκτυα, Συστοιχίες (Clusters), Μεγάλοι MultiComputers, Κατανεμημενα Συστηματα (Distributed Systems) 2000-10: Πολλαπλοι Πυρηνες (Multicores), Grids, GPUs 2010+ : Συνύπαρξη πολλών παραπάνω χαρακτηριστικών ακόμη και σε φορητούς υπολογιστές, Υβριδικοί / Ετερογενείς Υπολογισμοί, Data Centers, Εικονικοποίηση και Cloud
Ταξινόμηση Flynn (1)
Ταξινόμηση Flynn (2)
Επίπεδα Παράλληλισμού (1) Network Local Network (a) On-chip (b) coprocessor : Επίπεδο Επεξεργαστή. (c) multiprocessor (d) multicomputer : Επίπεδο Υπολογιστή. (e) Κατανεμημένο Σύστημα, Grid, Cloud.
Επίπεδα Παραλληλισμού (2) Επίπεδο Δεδομένων (Data Level Parallelism, DLP): ταυτόχρονη εκτέλεση πράξεων σε ομοειδή δεδομένα, σε ALU, κυλώματα ή και συνεπεξεργαστές ειδικού σκοπού, (32/64/128 bits, Vectror/Array Processors). Επίπεδο Εντολής (Instruction Level Parallelism, ILP): ταυτόχρονη εκτέλεση διαφορετικών εντολών ενός προγράμματος (Διοχέτευση, Υπερβαθμωτή εκτέλεση). Επίπέδο Νήματος (Thread Level Parallelism, Multithreading): ταυτόχρονη εκτέλεση πολλαπλών νημάτων (ελαφρών διεργασιών). Επίπεδο Πυρήνα/Εργασίας (Multicore/Task Parallelism): ταυτόχρονη εκτέλεση πολλαπλών νημάτων αλλά πλήρων διεργασιών (process ή task) σε πολλαπλούς πυρήνες (οσυσιαστικά ανεξάρτητους επεξεργαστές) Επίπέδο Λειτουργίας (Functional Parallelism): ταυτόχρονη εκτέλεση λειτουργιών (συνεπεξεργαστές GPU, DMA, I/O..) Επίπέδο Υπολογιστή/Υπολογισμού (Multiprocessors, Multicomputers): ταυτόχρονη εκτέλεση ενός ή διαφορετικών προγραμμάτων σε πολλαπλούς επεξεργαστές.
Παραλληλισμός Επιπέδου Δεδομένων (1) Vector / Array ή Massively Paralllel Processor (SIMD). Στη πράξη αντ 8x8=64 Επεξεργαστικα Στοιχεία (Processing Elements, PE's), έχουμε 2^16 ++ PE's. Το Δικτυο Διασύνδεσης είναι μορφής 1-d, 2-d ή 3-d Πλέγματος ή άλλης ειδικής μορφής..
Παραλληλισμός Επιπέδου Δεδομένων (2) SIMD συν-επεξεργαστής: Graphics Processing Unit (GPU) γενικού σκοπού) τύπου NVIDIA Fermi. 2^8 ++ PE σε 2-d πλέγμα.
Παραλληλισμός Επιπέδου Εντολής (ILP) Pipelining (Διοχέτευση, Σωλήνωση) (α) Μια διοχέτευση πέντε σταδίων (β) Η κατάσταση κάθε σταδίου σε εννέα κύκλους ρολογιού.
Παραλληλισμός Επιπέδου Εντολής (ILP) Υπερβαθμωτή (Superscalar) Αρχιτεκτονική Υπερβαθμωτός επεξεργαστής με πέντε λειτουργικές μονάδες, τοποθετημένος σε διοχέτευση πέντε σταδίων (Pentim II).
Παραλληλισμός Επιπέδου Νήματος (1) Διπλή διοχέτευση 5 σταδίων σε ένα επεξεργαστή. Κάθε διοχέτευση μπορεί να εκτελεί μια ανεξάρτητη ροή (μικρο)εντολών (Νήμα).
Παραλληλισμός Επιπέδου Νήματος (2) Fork/Join σε επίπεδο γλώσσας μηχανής 13
Παραλληλισμός Επιπέδου Νήματος (3) Βήμα 1: Σε κάθε εντολή κόμβο του γράφου δώσε μια πινακίδα (Label) Βήμα 2: Για κάθε κόμβο που διακλαδίζεται σε n παιδιά γράψε n 1 fork και 1 goto μετά από την εντολή που εκτελεί ο κόμβος. Πχ. αν ο κόμβος έχει τρια παιδιά με πινακίδες L4, L5, και L7, γράψε fork(l4); fork(l5); goto L7; Βήμα 3: Για κάθε κόμβο στον οποίο συγκλίνουν n ακμές γράψε join(count) αμέσως μετά την πινακίδα αλλά πριν από την εντολή που αντιστοιχεί σε αυτήν. Το count αρχικοποιείται στο n. Βήμα 4 (προαιρετικό): σβήσε τα μη απαραίτητα goto. 14
Παραλληλισμός Επιπέδου Νήματος (4) Πολυ-νηματική εκτέλεση με απλή διοχέτευση και εκτός σειράς εκτέλεση. (a) (c) Τρία νήματα. Τα άδεια πλαίσια σημβολίζουν stalls. (d) Fine-grained multithreading (1 cycle). (e) Coarse-grained multithreading (max 3 cycles).
Παραλληλισμός Επιπέδου Νήματος (5) Πολυνηματική εκτέλεση με διπλή διοχέτευση και υπερβαθμωτή εκτέλεση. (a) Fine-grained multithreading (1 cycle, 2 stages). (b) Coarse-grained multithreading (max 2 cycles, 2 stages). (c) Simultaneous multithreading (any cycle, any stage).
Παραλληλισμός Επιπέδου Πυρήνα (a) Επεξεργαστής με 1 πυρήνα και 2 διοχετεύσεις σε 1 chip. (b) Επεξεργαστής με 2 πυρήνες της μιας διοχέτευσης σε 1 chip. Στις σύγχρονες εκδόσεις έχουμε 4 ++ πυρήνες διπλής διοχέτευσης σε 1 chip.
Σύστημα πολλαπλών πυρήνων ειδικού σκοπού. Κάθε πυρήνας ασχολείται με άλλη εργασία. Πχ media player, παιχνιδομηχανές κλπ.
Παραλληλισμός Επιπέδου Υπολογιστή Computer / board Switch Network (α) Σύστημα μοιραζόμενης μνήμης (Multicores, ΜultiProcessors). (β) Σύστημα κατανεμημένης μνήμης (Multicomputers, Clusters). Tα δίκτυα διασύνδεσης εμφανίζονται ως απλοί δίαυλοι, αλλά στη πραγματικότητα μπορεί να είναι πολύ πιο σύνθετα.
Σύγχρονα Υβριδικά Clusters Τυπικό υβριδικό cluster, multiprocessor/multicomputer. Μεταβίβαση μηνυμάτων (Message Passing) μεταξύ των Κόμβων (Nodes) και χρήση Νημάτων (Multithreading) εντός κάθε κόμβου. Ο κάθε Κόμβος μπορεί επί πλέον να περιέχει και GPU's.
Google (1) Επεξεργασία ερωτήματος στο Google.
Google (2) Τυπικό Google cluster.
Προβλήματα και προκλήσεις Αλλαγή προγραμματιστικού μοντέλου Αλγόριθμοι, Γλώσσες, Μεταγλωττιστές, Λειτουργικά Συστήματα, Αρχιτεκτονικές, Βιβλιοθήκες.. δεν είναι έτοιμα για Παραλληλισμό σε τόσο ευρεία κλίμακα και χρήση (από το μέσο προγραμματιστή). Σε αντίθεση με το Παραλληλισμό σε Επίπεδο Ετολής (ILP) το πρόβλημα μάλλον δεν μπορεί να λυθεί από τους 'αρχιτέκτονες' και τους 'μηχανικούς συστημάτων' χωρίς συνεργασία των προγραμματιστών εφαρμογών. Πιθανώς να χρειαστεί ανασχεδιασμός των επιπέδων αφαίρεσης (εικονικών μηχανών) στα σύγχρονα υπολογιστικά συστήματα, και, πιθανότατα νέα μοντέλα προγραμματισμού. 26/09/12 23