Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Ενότητα 3: Διασωλήνωση, Clusters, Στοιχεία Παράλληλου Προγραμματισμού Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών http://arch.icte.uowm.gr/mdasyg Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ψηφιακά Μαθήματα στο Πανεπιστήμιο Δυτικής Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Σκοπός της Ενότητας Η κατανόηση της διασωλήνωσης των επεξεργαστών. Η κατανόηση των τρόπων εκμετάλλευσης της παραλληλίας. 4
Κατηγοριοποίηση κατά Flynn Single instruction single data stream (SISD) Single instruction multiple data stream (SIMD) Multiple instruction single data stream (MISD) Multiple instruction multiple data stream (MIMD) Uniprocessors Vector processors Array processors Shared memory (tightly coupled Distributed memory (loosely coupled) Symmetric multiprocessor (SMP) No uniform memory access (NUMA) Clusters 5
Οι 4 κατηγορίες κατά Flynn: (A) SISD Παράδειγμα: Για μια πρόσθεση 2 αριθμών απαιτούνται οι εξής ενέργειες (απαιτούνται 5*n κύκλοι): Φόρτωση εντολής πρόσθεσης στο CPU. Φόρτωση δεδομένων πρόσθεσης αθροιστή Α σε ένα καταχωρητή CPU. Φόρτωση δεδομένων πρόσθεσης αθροιστή Β σε ένα καταχωρητή CPU. Εκτέλεση εντολής Μεταφορά αποτελέσματος στη μνήμη. 6
Βελτίωση του χρόνου εκτέλεσης με διασωλήνωση Όλες οι λειτουργικές μονάδες χρησιμοποιούνται ταυτόγχρονα ώστε σε κάθε κύκλο να παράγεται αποτέλεσμα. Η συνολικός χρόνος βελτιώνεται και γίνεται (n-1)+5. Χωρίς διασωλήνωση ο χρόνος n*5. 7
Διασωλήνωση (1/4) Διασωλήνωση είναι η σύνδεση σε σειρά επεξεργαστικών στοιχείων, έτσι ώστε η έξοδος ενός στοιχείου να είναι η είσοδος στο επόμενο. Η ονομασία έρχεται από το σωλήνα του νερού. Νερό εισέρχεται συνεχώς στο σωλήνα, χωρίς να χρειάζεται να περιμένουμε να βγει από την άλλη άκρη. Οδηγεί στη μείωση του κρίσιμου μονοπατιού Υπάρχουν στάδια επεξεργασίας. Κάθε στάδιο ολοκληρώνει ένα κομμάτι της εντολής του επεξεργαστή. 8
Διασωλήνωση (2/4) Η διασωλήνωση ΔΕΝ αυξάνει την ταχύτητα εκτέλεσης μιας εντολής. Η διασωλήνωση αυξάνει το ρυθμό απόδοσης (αριθμό εκτελούμενων εντολών στη μονάδα του χρόνου). 9
Ένας υπολογιστής χωρίς διασωλήνωση 10
Ένας υπολογιστής με διασωλήνωση 11
Διασωλήνωση (3/4) O Pentium IV είχε 20 επίπεδα διασωλήνωσης. O Prescott Pentium 30 επίπεδα διασωλήνωσης (hyper-pipelining). Πολύ καλή απόδοση, αλλά και πολλά προβλήματα. Intel Core i7 (Nehalem) 14 επίπεδα διασωλήνωσης, εκτέλεση έως 4 εντολές ανά κύκλο (IPC Instructions per clock). 12
Διασωλήνωση: Που βασίζεται Οι επεξεργαστές λειτουργούν συνεχώς ως εξής: Fetch Instruction (A). Store Instruction in Register. Decode Instruction (B). Increment the address on program counter. Execute the Instruction (C). Write the results (D). => 4 είναι τα πιο απλά στάδια της διασωλήνωσης. 13
Διασωλήνωση: Παράδειγμα στην αυτοκινητοβιομηχανία (1/3) Stage 1: build the chassis. Stage 2: drop the engine in the chassis. Stage 3: put doors, a hood, and coverings on the chassis. Stage 4: attach the wheels. Stage 5: paint the SUV. 14
Διασωλήνωση: Παράδειγμα στην αυτοκινητοβιομηχανία (2/3) Μπορούμε να δημιουργήσουμε και άλλα επίπεδα διασωλήνωσης: Stage 1: build the chassis: Crew 1a: Fit the parts of the chassis together and spotweld the joins. Crew 1b: Fully weld all the parts of the chassis. Stage 2: drop the engine in the chassis: Crew 2a: Place the engine in the chassis and mount it in place. Crew 2b: Connect the engine to the moving parts of the car. 15
Διασωλήνωση: Παράδειγμα στην αυτοκινητοβιομηχανία (3/3) Stage 3: put doors, a hood, and coverings on the chassis: Crew 3a: Put the doors and hood on the chassis. Crew 3b: Put the other coverings on the chassis. Stage 4: attach the wheels: Crew 4a: Attach the two front wheels. Crew 4b: Attach the two rear wheels. Stage 5: paint the SUV: Crew 5a: Paint the sides of the SUV. Crew 5b: Paint the top of the SUV. 16
Ένας υπολογιστής με διασωλήνωση (1/2) 17
Ένας υπολογιστής με διασωλήνωση (2/2) Έχει μειωθεί ο χρόνος κάθε σταδίου.. 18
Η διασωλήνωση ως προς την απόδοση 19
Η διασωλήνωση δεν είναι πανάκεια Προσθέτει αρκετή πολυπλοκότητα. Όλα θα πρέπει να είναι συγχρονισμένα Μερικές φορές ένα στάδιο stalls ( κολλάει ). Όλη η σειρά σταματάει μέχρι να συνεχίσει το στάδιο αυτό. 20
2 κύκλοι stall και μείωση της απόδοσης 21
100 κύκλοι stall και μείωση της απόδοσης 22
Διασωλήνωση & Πολυπλοκότητα Δεν είναι ίδιας πολυπλοκότητας όλα τα στάδια της διασωλήνωσης. Το πιο αργό στάδιο της διασωλήνωσης καθορίζει και το συνολικό throughput. Ο χρόνος εκτέλεσης του πιο αργού σταδίου ορίζεται από το κρίσιμο μονοπάτι της ψηφιακής λογικής αυτού του σταδίου. 23
Ταυτόχρονο pipeline (superscalar) 24
Simultaneous multithreading = hyperthreading (SMT) Υποστηρίζεται από τους σύγχρονους επεξεργαστές. Τα νήματα εκτελούνται παράλληλα. Υπάρχει δεύτερο pipeline queue. Καλύτερη εκμετάλλευση του hw σε stall. 25
2 Σημαντικά στοιχεία της διασωλήνωσης Pipeline stalls must be avoided. As we've seen earlier, pipeline stalls cause the processor's completion rate and performance to drop. Pipeline fills must be avoided at all costs. Filling up the processor's pipeline takes a serious toll on both completion rate and performance. This is especially true when a pipeline is very long but has a clock rate that's comparable to that of a processor with a shorter pipeline. 26
Οι κλασικές μηχανές RISC έχουν 5 στάδια (classic RISC pipeline) Basic five-stage pipeline in a RISC machine: (IF = Instruction Fetch, ID = Instruction Decode, EX = Execute, MEM = Memory access, WB = Register write back). The vertical axis is successive instructions; the horizontal axis is time. So in the green column, the earliest instruction is in WB stage, and the latest instruction is undergoing instruction fetch. 27
Ερώτηση (1/3) Να εξηγηθεί γιατί η ταχύτητα μιας μηχανής που χρησιμοποιεί διασωλήνωση προσδιορίζεται από την καθυστέρηση που προκαλείται στη βραδύτερη βαθμίδα της. 28
Ερώτηση (2/3) Μια αιτία για καθυστέρηση στους υπολογιστές διασωλήνωσης είναι οι εντολές άλματος υπό συνθήκη, επειδή η διεύθυνση της επόμενης εντολής προσδιορίζεται μετά την εκτέλεση της παραπάνω εντολής. Μια λύση είναι η χρήση διπλού διαύλου. Να εξηγηθεί ο μηχανισμός εκτέλεσης των εντολών άλματος υπό συνθήκη. Πλεονεκτήματα και μειονεκτήματα του διπλού αγωγού. 29
Ερώτηση (3/3) Ποια είναι τα συγκριτικά πλεονεκτήματα και μειονεκτήματα των χαλαρά συνδεδεμένων συστημάτων πολυεπεξεργασίας σε σχέση με τα στενά συνδεδεμένα συστήματα πολυεπεξεργασίας; 30
Κατηγοριοποίηση των πολύ-υπολογιστών Ομογενή συστήματα (homogenous systems): Το δίκτυο διασύνδεσης έχει παντού την ίδια τεχνολογία. Οι επεξεργαστές είναι ίδιοι και έχουν πρόσβαση στην ίδια ποσότητα μνήμης. Ετερογενή συστήματα (heterogenous systems): Το δίκτυο διασύνδεσης δεν έχει παντού την ίδια τεχνολογία. Οι επεξεργαστές δεν είναι ίδιοι και δεν έχουν πρόσβαση στην ίδια ποσότητα μνήμης. 31
Clusters Συστοιχίες Υπολογιστών (1/2) Είναι συστοιχίες από φτηνούς υπολογιστικούς κόμβους (πολυεπεξεργαστές, π.χ. (πολυεπεξεργαστές, π.χ. Dual Intel or AMD) που φτιάχνουν έναν πολύ- -υπολογιστή (Υβριδικό σύστημα). Συνδέονται μεταξύ τους με fast ethernet: Myrinet or Infiniband fast ethernet ή ακόμα και Gigabit ethernet (big latency). Αρκετά δημοφιλή λόγο μικρού κόστους/μεγάλης ονομαστικής ισχύος. Επεκτείνονται εύκολα με προσθήκη επιπλέον κόμβων. 32
Κατανεμημένοι πολύ-υπολογιστές (1/2) Κάθε επεξεργαστής έχει τη δική του τοπική μνήμη. Δεν υπάρχει κοινή μνήμη στην οποία να έχουν πρόσβαση οι επεξεργαστές. Επικοινωνούν μεταξύ τους (ανταλλαγή δεδομένων) με δίκτυο διασύνδεσης. Είναι εξαιρετικά επεκτάσιμα συστήματα μερικές χιλιάδες: MPP (Massively Parallel Processors). Λόγο (συνήθως) αργής επικοινωνίας μεταξύ των cpus, πρέπει να αποφεύγεται η συχνή ανταλλαγή μηνυμάτων. 33
Κατανεμημένοι πολύ-υπολογιστές (2/2) 34
Clusters Συστοιχίες Υπολογιστών (2/2) 35
6-core but a 12-core is planned in 1-2 years L1 64KB+64KB L2 1024KB L3 6MB Vcore 1.55V TDP 89W 45nm 2.3-2.9Ghz DD3 AMD Opteron 36
4 cpu. On chip Memory controller DDR3 (25GB/s with 3 modules). 64K L1. 1MB L2. 8MB L3 (shared). TDP 130W. QPI (Quick Path Interconnect) to connect with other CPU. Intel Core i7 (45nm) 37
Intel Core i7 38
Στοιχεία Παράλληλου Προγραμματισμού 39
Στοιχεία Παράλληλου Προγραμματισμού Προκειμένου να χρησιμοποιήσουμε την παράλληλη επεξεργασία, μπορούμε να χρησιμοποιήσουμε δυο προσεγγίσεις: Την ακολουθιακή. Την παράλληλη. 40
Η ακολουθιακή προσέγγιση Το πρόβλημα έχει έμφυτο παραλληλισμό. Η προγραμματιστική γλώσσα δεν μπορεί να εκφράσει τον παραλληλισμό. Οι προγραμματιστές κρύβουν τον παραλληλισμό σε ακολουθιακές δομές. Ο μεταγλωττιστής και/ή το υλικό πρέπει να βρουν τον κρυμμένο παραλληλισμό. Δυστυχώς, αυτό δεν λειτουργεί. 41
Η παράλληλη προσέγγιση Ο προγραμματιστής και ο μεταγλωττιστής συνεργάζονται. Το πρόβλημα έχει έμφυτο παραλληλισμό. Ο προγραμματιστής έχει τρόπο να εκφράσει τον παραλληλισμό. Ο μεταγλωττιστής μεταφράζει το πρόγραμμα σε πολλαπλούς πυρήνες. 42
Ο προγραμματιστής πρέπει να συνεργαστεί με το compiler Οι προγραμματιστές σύγχρονων επεξεργαστών πρέπει να λάβουν υπόψη την αρχιτεκτονική και τον μεταγλωττιστή έτσι ώστε να πάρουν την μέγιστη δυνατή απόδοση:...πρέπει να αναδιοργανώσεις τα δεδομένα και τους αλγορίθμους για να εκμεταλλευτείς τις αρχιτεκτονικές δυνατότητες... Από το Introduction to Microarchitectural Optimization for Itanium 2 Processors, p.3 Για τη βέλτιστη απόδοση πρέπει να γνωρίζει, ποια είναι η αρχιτεκτονική της cache, τι δίαυλοι χρησιμοποιούνται, πόσους καταχωρητές διαθέτει ο κάθε επεξεργαστής κ.τ.λ. 43
Μεθοδολογία Παράλληλου Προγραμματισμού Εξέταση του προβλήματος, ακολουθιακό πρόγραμμα ή τμήμα κώδικα. Εξέταση πιθανότητας για παραλληλισμό. Προσπάθεια να κρατήσεις όλους τους πυρήνες απασχολημένους κάνοντας χρήσιμο έργο. 44
Τρόποι Εκμετάλλευσης Παραλληλίας Αποσύνθεση εισόδων (Domain Decomposition). Αποσύνθεση εργασιών (Task Decomposition). Διασωλήνωση (Pipeline). 45
Αποσύνθεση εισόδων Πρώτον, αποφασίζουμε πως τα δεδομένα πρέπει να κατανεμηθούν στους πυρήνες. Δεύτερον, αποφασίζουμε ποιες εργασίες θα πρέπει να κάνει ο κάθε πυρήνας. Παράδειγμα: Διανυσματική πρόσθεση A[]=B[]+C[]. Στοιχείο κλειδί: Μπορούν να γίνουν πράξεις σε περιοχές εισόδων ανεξάρτητα από τις άλλες περιοχές. 46
Παράδειγμα αποσύνθεσης εισόδων (1/2) Βρες το μεγαλύτερο στοιχείο ενός πίνακα. 47
Παράδειγμα αποσύνθεσης εισόδων (2/2) Βρες το μεγαλύτερο στοιχείο ενός πίνακα. 48
Αποσύνθεση Εργασιών (1/3) Πρώτον, διαιρούμε το πρόβλημα σε ανεξάρτητες εργασίες. Δεύτερον, αποφασίζουμε ποια δεδομένα πρόκειται να έχουν πρόσβαση (διάβασμα και/ή γράψιμο) από ποια εργασία. Παράδειγμα: Χειριστήρια συμβάντος στο Γραφικό Περιβάλλον Χρήστη. 49
Αποσύνθεση Εργασιών (2/3) Έστω έχουμε το παρακάτω γράφημα των εξαρτήσεων... 50
Αποσύνθεση Εργασιών (3/3) Δεδομένου της επεξεργαστικής πολυπλοκότητας και της επικοινωνίας μπορούμε να κάνουμε την παρακάτω αποσύνθεση. 51
Διασωλήνωση (4/4) Ειδικό είδος εργασίας αποσύνθεσης. Παράλληλη εκτέλεση εντολών assembly. Παράδειγμα: 3D οπτικοποίηση σε γραφικά για υπολογιστές. 52
Διασωλήνωση με πολλαπλούς πυρήνες 53
Σύνοψη... Θα πρέπει τώρα να είστε σε θέση να: βρίσκετε ευκαιρίες για παραλληλισμό σε τμήμα κώδικα και εφαρμογών, περιγράφετε τρεις μεθόδους διαίρεσης ανεξάρτητων εργασιών. Χρησιμοποιήθηκε υλικό από Intro to Parallel Programming της Intel. 54
Τέλος Ενότητας 55
Σημείωμα Αναφοράς Copyright, Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών, Μηνάς Δασυγένης. «Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας». Έκδοση: 1.0. Κοζάνη 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.uowm.gr/courses/icte268/ 56
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Όχι Παράγωγα Έργα Μη Εμπορική Χρήση 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] h t t p ://creativecommons.org/licenses/by-nc-nd/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό 57
Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. 58