Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Σχετικά έγγραφα
Αρχιτεκτονική Υπολογιστών

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 4 η : Παράλληλος Προγραμματισμός. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

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

ΠΕΡΙΕΧΟΜΕΝΑ Υλικό και Λογισμικό Αρχιτεκτονική Υπολογιστών Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6

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

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

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

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

Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN!!! 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ!!!! Χατζηνικόλας Κώστας

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

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

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας

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

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Εισαγωγή στην Επιστήμη των Υπολογιστών

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

Θέματα Μεταγλωττιστών

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

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

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

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

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

Κεντρική Μονάδα Επεξεργασίας. Επανάληψη: Απόδοση ΚΜΕ. ΚΜΕ ενός κύκλου (single-cycle) Παραλληλισμός σε επίπεδο εντολών. Υπολογιστικό σύστημα

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

Παραλληλισμός σε επίπεδο εντολών

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ << ΜΕΛΕΤΗ ΤΗΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ CUDA ΚΑΙ ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΡΤΩΝ GPU ΤΗΣ NVIDIA >> Αρ. Μητρώου: 04/2519

ΑΠΟΤΕΛΕΣΜΑΤΑ ΔΙΑΒΟΥΛΕΥΣΗΣ. Προκήρυξη Διαγωνισμού για την «Προμήθεια Εξοπλισμού Κόμβου Μηχανικής Μάθησης» /

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

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 2 η : Στοιχεία Αρχιτεκτονικής Υπολογιστών. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

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

Προγραμματισμός GPUs μέσω του περιβάλλοντος CUDA

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

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

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ II. χειμερινό εξάμηνο & εαρινό εξάμηνο (σε κίτρινο υπόβαθρο)

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

Σειρά Ασκήσεων 13: Συνοχή (Coherence) Κρυφών Μνημών, Προχωρημένοι Επεξεργαστές (Out-of-Order, Superscalar, Multithreading, Multicores)

Οργάνωση Η/Υ. Γιώργος Δημητρίου. Μάθημα 8 ο Μερική Επικάλυψη. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Υ- 01 Αρχιτεκτονική Υπολογιστών Πολυεπεξεργαστές, 2ο μέρος

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΔΕΥΤΕΡΗ ΠΡΟΟΔΟΣ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232)

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

13.2 Παράλληλος Προγραµµατισµός Γλωσσάρι, Σελ. 1

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

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

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

2. Στοιχεία Αρχιτεκτονικής Παράλληλων Υπολογιστών... 45

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 6 : Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Δρ.

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

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

All rights reserved

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

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

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

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ

Περίληψη. Υπερυπολογιστές. Υπολογιστικά προβλήµατα. TOP 500 (Ιούνιος 2007) TOP 500 (Ιούνιος 2009) Ε-85: Ειδικά Θέµατα Λογισµικού

Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

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

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

ΠΛΕ- 027 Μικροεπεξεργαστές 6ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση με διοχέτευση

Συστήµατα Παράλληλης Επεξεργασίας

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Άσκηση 5: Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών

Συστήματα σε Ολοκληρωμένα Κυκλώματα

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

Θέματα Μεταγλωττιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

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

Παράλληλος προγραμματισμός: παράλληλες λ υπολογιστικές πλατφόρμες και ανάλυση προγραμμάτων

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Παραλληλισμός Αλγορίθμων σε Κάρτες Γραφικών για Σχεδιασμό Κίνησης

Μετρικές & Επιδόσεις. Κεφάλαιο V

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

Συγκριτική μελέτη διεπιφανειών παράλληλου προγραμματισμού σε εφαρμογές εύρεσης κωδικού κρυπτογραφημένου με αλγόριθμο MD5

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

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχανικών Υπολογιστών. Εισαγωγή. Συστήματα Παράλληλης Επεξεργασίας 9 ο Εξάμηνο

Παραλληλισµός Εντολών (Pipelining)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ

Διονύσιος Σαλονικίδης. Μεταπτυχιακός Φοιτητής. Διπλωματική Εργασία. Επιβλέπων: Κωνσταντίνος Μαργαρίτης, Καθηγητής. Τμήμα Εφαρμοσμένης Πληροφορικής

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

Παράλληλοι αλγόριθμοι και εφαρμογές σε πολυπύρηνες μονάδες επεξεργασίας γραφικών

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ

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

Προγραμματισμός συστημάτων UNIX/POSIX. Θέμα επιλεγμένο από τους φοιτητές: Προγραμματιστικές τεχνικές που στοχεύουν σε επιδόσεις

Πολυνηματικές Αρχιτεκτονικές

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων.

***Computer Organization & Design the Hardware/Software Interface, David Patterson & John Hennessy, Morgan Kaufmann Publishers, 4thed

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

Transcript:

Γιώργος Δημητρίου Ενότητα 3 η : Παράλληλη Επεξεργασία

Παράλληλες Αρχιτεκτονικές Παράλληλο σύστημα είναι ένα σύνολο από επεξεργαστικά στοιχεία (processing elements) τα οποία: συνεργάζονται για γρήγορη επίλυση προβλημάτων Άρα το βασικό αντικείμενο μελέτης για την παράλληλη επεξεργασία είναι η ταχύτητα Και η επίλυσή του είναι η χρήση πολλαπλών συνεργαζόμενων στοιχείων

Ταξινόμηση Flynn SISD (Single Instruction - Single Data) Οι μονοεπεξεργαστές SIMD (Single Instruction - Multiple Data) Οι διανυσματικοί επεξεργαστές MISD (Multiple Instruction - Single Data) Μηχανές ροής δεδομένων MIMD (Multiple Instruction - Multiple Data) Οι συνηθισμένοι παράλληλοι επεξεργαστές (πχ. πολυνηματικοί, πολυπύρηνοι)

Επιτάχυνση (Speedup) Χρησιμοποιούμε παράλληλα συστήματα για να επιτύχουμε επιτάχυνση στην εκτέλεση μιας εφαρμογής: Speedup p επεξεργαστές = Χρόνος εκτέλεσης σε 1 επεξεργαστή Χρόνος εκτέλεσης σεp επεξεργαστές

Μη Γραμμική Επιτάχυνση Αρκετοί παράγοντες εμποδίζουν την επιτάχυνση χρήσης p επεξεργαστών να είναι ίση με p: Η επικοινωνία των επεξεργαστών με τη μνήμη Η επικοινωνία των επεξεργαστών μεταξύ τους Η κατανομή φορτίου εργασίας στους επεξεργαστές Μπορεί ποτέ η επιτάχυνση να είναι μεγαλύτερη από p;

Παράλληλη Επεξεργασία (SW) Για επίτευξη παράλληλης επεξεργασίας πρέπει να γράψουμε παράλληλο κώδικα! Σκεφτόμαστε παράλληλα και: Διαιρούμε μια εργασία σε τμήματα που μπορούν να εκτελεστούν παράλληλα Κατανέμουμε τα τμήματα σε επεξεργαστές Ορίζουμε επικοινωνία και συγχρονισμό ώστε να μην περιορίζεται η επιτάχυνση Γράφουμε κώδικα σε δημοφιλείς γλώσσες παράλληλου προγραμματισμού!

Παράλληλη Επεξεργασία (HW) Πώς λειτουργούν τα παράλληλα συστήματα, ώστε Να υποστηρίζουν αποτελεσματικά τις γλώσσες παράλληλου προγραμματισμού Να έχουν υψηλή απόδοση, αλλά να έχουν ευκολία προγραμματισμού και χαμηλό κόστος Τελικά η γνώση της αρχιτεκτονικής είναι πολύ σημαντική για την επίτευξη των πιο πάνω στόχων!

Sun Enterprise 10000 (~1997) 64 UltraSPARC-II processors Προηγούμενες Δεκαετίες Στόχος η βελτίωση της απόδοσης του μονοεπεξεργαστικού συστήματος Thinking Machines CM2 (1987) 65,536 1-bit + 2,048 32 bit FP processors SGI Origin 2000 128 CPUs (1996) Blue Mountain (Los Alamos) (48 Origin 2000 s)

Παραλληλισμός σε Επίπεδο Εντολής Κορεσμός απόδοσης υπερβαθμωτών επεξεργαστών:

Πορεία προς Multicore Κορεσμός και στο ρολόι, και στην ισχύ!

Πορεία προς Multicore

Σημερινή Εποχή Τα παράλληλα συστήματα είναι πια αναγκαιότητα! Intel SkyLake (2015) Intel Xeon Phi 7290 (2016)

Σημερινή Εποχή (GPUs) Nvidia Maxwell GTX 1080 (2016)

Σημερινή Εποχή (Mobile)

Σημερινή Εποχή (Supercomputers) Από top500.org (11/2016): Rank Country System Cores Rmax (TFlop/s) Rpeak (TFlop/s) Power (kw) 1 China Sunway TaihuLight 10,649,600 93,014.6 125,435.9 15,371 2 China Tianhe-2 (MilkyWay-2) 3,120,000 33,862.7 54,902.4 17,808 3 USA Titan 560,640 17,590.0 27,112.5 8,209 4 USA Sequoia - BlueGene/Q 1,572,864 17,173.2 20,132.7 7,890 5 USA Cori 622,336 14,014.7 27,880.7 3,939 6 Japan Oakforest-PACS 556,104 13,554.6 24,913.5 2,719 7 Japan K computer 705,024 10,510.0 11,280.4 12,660 8 Switzerland Piz Daint 206,720 9,779.0 15,988.0 1,312 9 USA Mira - BlueGene/Q 786,432 8,586.6 10,066.3 3,945 10 USA Trinity 301,056 8,100.9 11,078.9 4,233

Παράλληλη Εκτέλεση Κώδικα Πολλαπλοί πυρήνες και νήματα στη CPU Κλασική παράλληλη επεξεργασία Παραδοσιακός παράλληλος προγραμματισμός Διανυσματική εκτέλεση SIMD στη CPU Παλαιότεροι supercomputers, τώρα απλές επεκτάσεις στη CPU Παραλληλισμός δεδομένων στη GPU Χρησιμοποιώντας κατάλληλη γλώσσα επεξεργασίας γραφικών (ActiveX, OpenGL) Ή και γενικού σκοπού (Cuda C, OpenCL)

Παράδειγμα Κώδικα Υπολογισμός ημιτόνου με τον τύπο Taylor για Ν FPs: void sinx(int N, int terms, float* x, float* result) { for (int i=0; i<n; i++) { float value = x[i]; float numer = x[i] * x[i] * x[i]; int denom = 6; // 3! int sign = -1; for (int j=1; j<=terms; j++) { value += sign * numer / denom; numer *= x[i] * x[i]; denom *= (2*j+2) * (2*j+3); sign *= -1; } result[i] = value; } }

Σειριακή Εκτέλεση

Βαθμωτός Επεξεργαστής

Βαθμωτός Επεξεργαστής

Βαθμωτός Επεξεργαστής

Υπερβαθμωτός Επεξεργαστής ILP???

Πολυεπεξεργαστής 2 Πυρήνων Κάθε πυρήνας είναι απλούστερος από κάποιον πολύπλοκο μονοεπεξεργαστή αλλά συνολικά η απόδοση βελτιώνεται!

Πολυεπεξεργαστής 4 Πυρήνων

Παράλληλος Κώδικας Σε κάποια υποθετική παράλληλη γλώσσα: Ο εξωτερικός βρόχος είναι παράλληλος!

Παραλληλισμός με pthreads Κώδικας 2 νημάτων, άρα για επεξεργαστή 2 πυρήνων!

Διανυσματική Εκτέλεση Στην ουσία προσθέτουμε νέες μονάδες εκτέλεσης στον μονοεπεξεργαστή, και τις χρησιμοποιούμε μέσα από κατάλληλη επέκταση του συνόλου εντολών του!

Διανυσματικός Κώδικας (AVX) Διανυσματικές επεκτάσεις της C, ώστε ο κώδικας να υπολογίζει 8 ημίτονα ταυτόχρονα (πράξεις σε μία λέξη των 8x32=256 bits!) AVX εντολές:

Κώδικας με Διακλαδώσεις Κώδικας για διανυσματική (???) εκτέλεση:

Κώδικας με Διακλαδώσεις

Κώδικας με Διακλαδώσεις Κάποιες ALU παραμένουν άεργες, στη χειρότερη περίπτωση η απόδοση πέφτει στο 1/8 της μέγιστης!

Κώδικας με Διακλαδώσεις

Συνεκτική Εκτέλεση Συνεκτική (ή ομοιόμορφη) εκτέλεση εντολών (coherent execution) Η ίδια ακολουθία εντολών για όλα τα στοιχεία του πίνακα που επεξεργαζόμαστε Η συνεκτικότητα απαραίτητη για αποδοτική διανυσματική εκτέλεση (SIMD) Η συνεκτικότητα δεν είναι απαραίτητη για αποδοτική εκτέλεση σε πολυπύρηνα συστήματα, εφόσον κάθε πυρήνας εκτελεί άλλη ακολουθία εντολών (MIMD)

Εκτέλεση στην GPU Εκτέλεση τύπου SPMD και όχι SIMD, μια που ο διανυσματικός παραλληλισμός αναφέρεται σε ολόκληρες ακολουθίες κώδικα και όχι σε εντολές Στην ουσία γράφουμε ένα υποπρόγραμμα, το οποίο ζητάμε να εκτελεστεί σε Ν αντίγραφα, σε Ν παράλληλα νήματα της GPU Πιο αναλυτικά σε επόμενο μάθημα

Προσπέλαση Μνήμης Χρόνος καθυστέρησης (memory latency) Είναι ο χρόνος εξυπηρέτησης μιας αίτησης (ανάγνωσης ή εγγραφής) στο σύστημα μνήμης Παράδειγμα: 100 cycles, 100 nsec Εύρος ζώνης μνήμης (memory bandwidth) Είναι ο ρυθμός με τον οποίο το σύστημα μνήμης τροφοδοτεί τον επεξεργαστή με δεδομένα Παράδειγμα: 20 GB/s

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

Κρυφές Μνήμες Η ιεραρχία μνήμης μειώνει το χρόνο παγώματος

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

Νήματα και Παγώματα Η πολυνηματική εκτέλεση (multithreading) είναι τυπική μέθοδος απόκρυψης των καθυστερήσεων (latency hiding) από φορτώσεις μνήμης Αυτό επιτυγχάνεται μέσω της διαφύλλωσης νημάτων Τα παγώματα δεν εξαλείφονται ούτε μειώνονται, όμως εξαλείφεται η επίδρασή τους στο χρόνο εκτέλεσης ενός κώδικα

Απόκρυψη Καθυστέρησης

Απόκρυψη Καθυστέρησης

Απόκρυψη Καθυστέρησης

Απόκρυψη Καθυστέρησης

Βελτίωση Ρυθμού Εκτέλεσης Εν τέλει, αυτό που βελτιώνεται δραματικά είναι ο ρυθμός εκτέλεσης των επιμέρους νημάτων και όχι ο χρόνος ολοκλήρωσης του κώδικα ενός νήματος, ο οποίος μπορεί να αυξηθεί! Εδώ το νήμα είναι έτοιμο, αλλά δεν εκτελείται ακόμα!

Κατανομή Μνήμης Νημάτων

Πολυνηματικές Αρχιτεκτονικές Κάθε πυρήνας: Εκτελεί εντολές από έτοιμα νήματα, με κάποιο δικό του μηχανισμό επιλογής νήματος Χρησιμοποιεί τις μονάδες εκτέλεσής του, ώστε να αποκρύβει τις καθυστερήσεις Διαφυλλωμένη πολυνημάτωση (interleaved multithreading) Εναλλαγή νημάτων ανά κύκλο μηχανής Πολυνημάτωση ανά μπλοκ εντολών (blocked multithreading) Αλλαγή νήματος μόνο σε κάποια καθυστέρηση

Ταυτόχρονη Πολυνημάτωση SMT: simultaneous multithreading (~1995) Συνδυασμός υπερβαθμωτής εκτέλεσης με διαφυλλωμένη πολυνημάτωση Πολύπλεξη εντολών από πολλαπλά νήματα Παράδειγμα: Intel Hyper-threading (2 νήματα ανά πυρήνα) Τελικά αυτή η τεχνική έχει καθιερωθεί σήμερα ως πολυνημάτωση

Αναπαράσταση Διαφυλλωμένη πολυνημάτωση μεταξύ δύο νημάτων που εναλλάσσονται ανά κύκλο μηχανής:

Αναπαράσταση Πολυνημάτωση ανά μπλοκ εντολών μεταξύ δύο νημάτων:

Αναπαράσταση Ταυτόχρονη πολυνημάτωση 5 νημάτων σε υπερβαθμωτό επεξεργαστή βαθμού 4:

Κίνητρο SMT

Πολυνημάτωση (Σύνοψη) + αποδοτική χρήση μονάδων εκτέλεσης + απόκρυψη καθυστερήσεων + πλήρωση θέσεων έκδοσης εντολών σε υπερβαθμωτό επεξεργαστή (για SMT) - απαίτηση μνήμης για πολλαπλά νήματα - αύξηση χρόνου εκτέλεσης μεμονωμένων νημάτων - αυξημένες ανάγκες εύρους ζώνης μνήμης