ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 10ο μάθημα: Ορια παραλληλίας επιπέδου εντολής και πολυνηματικοί επεξεργαστές Αρης Ευθυμίου Πηγές διαφανειών: συνοδευτικές διαφάνειες αγγλικης εκδοσης του βιβλιου
Ορια παραλληλίας επ. εντολής! Επιστροφή στην αρχιτεκτονική του πυρήνα...! Τεχνικές δυναμικού χρονοπρογραμματισμού, εκτέλεση με εικασία, παράλληλη εκκίνηση πολλών εντολών στόχος εκμετάλευση παραλληλίας επιπέδου εντολής (ILP) εύρεση και ταυτόχρονη εκτέλεση ανεξάρτητων εντολών σε ένα σειριακό πρόγραμμα! Ποιά είναι τα όρια του ILP?! Αρχικά: Ιδανικός επεξεργαστής, πραγματικά προγράμματα! Αργότερα: Ρεαλιστικές τιμές σε διάφορα χαρακτηριστικά πυρήνα 2
Ιδανικός πυρήνας! Register renaming απεριόριστος αριθμός (μετονομασμένων) καταχωρητών Δεν υπάρχουν εξαρτήσεις WAW, WAR Δεν υπάρχει όριο στον αριθμό εντολών που μπορούν να ξεκινήσουν εκτέλεση ταυτόχρονα! Branch/Jump predicfon τέλεια πρόβλεψη και για κατεύθυνση και για στόχο Εικασίες είναι πάντα σωστές! Memory address alias όλες οι διευθύνσεις είναι γνωστές Μια load μπορεί να γίνει πρίν από store (εκτός αν έχουν την ίδια διεύθυνση)! Perfect caches όλες οι προσπελασεις γίνονται σε ένα κύκλο 3
Εκκίνηση εντολών! Δεν υπάρχει όριο στον αριθμό εντολών που εκκινούν ταυτόχρονα ακόμα και για εντολές προσπέλασης μνήμης! gcc 55 SPEC benchmarks espresso li fpppp doduc tomcatv 18 63 75 119 150 0 20 40 60 80 100 120 Instruction issues per cycle 140 160 4
Πρακτικές δυσκολίες εκκίνησης! Εξέταση εξαρτήσεων μεταξύ εντολών που εκκινούν ταυτόχρονα (issue packet) μετονομασία καταχωρητών Για n εντολές στο issue packet με 2 καταχωρητές πηγής: 2(n- 1) + 2(n- 2) + +2 = n 2 - n συγκρίσεις n=50, 2450 συγκρίσεις! Πρακτικά: εκκίνηση με τη σειρά προγράμματος, πεπερασμένος αριθμός καταχωρητών,... 5
Αρχή εκτέλεσης window size! Το σύνολο εντολών που εξετάζονται για να ξεκινήσουν εκτέλεση ονομάζεται παράθυρο (window) κατανεμημένο (Tomasulo) ή όχι! Για κάθε παραγόμενο αποτέλεσμα κάθε εντολή του παράθυρου κάθε τελεστέο πηγής (2) σύγκριση του αριθμού καταχωρητή! Εξαρτήσεις/περιορισμοί μεγέθους παράθυρου χώρος αποθήκευσης αριθμός συκρίσεων αριθμός εντολών που εκκινούν (εισέρχονται στο παράθυρο) 6
Effect of window size 7
! Στα επόμενα «πειράματα» κρατάμε το μέγεθος window στο 2Κ και αριθμό εντολών εκκίνησης 64 αρκετά μεγαλύτερα από ρεαλιστικές υλοποιήσεις! Εξετάζουμε: πρόβλεψη διακλάδωσης πεπερασμένος αριθμός καταχωρητών memory alias 8
Πρόβλεψη διακλάδωσης! Εξετάζονται 5 δυνατότητες: τέλεια πρόβλεψη Tournament predictor 8K * 3 * 2bits. 2* 2K jump predictor Κλασσικός 2bit 512 * 2bits. RAS 16 θέσεων Profile based Στατική πρόβλεψη καθόλου πρόβλεψη! Η ποινή λάθους πρόβλεψης είναι 0 το μόνο πρόβλημα που εξετάζεται είναι ο αριθμός των εντολών που μπορεί να αξιοποιηθεί μετά από μία διακλάδωση/άλμα 9
Πρόβλεψη διακλάδωσης 10
Πρόβλεψη διακλάδωσης! Ακόμα και η απλούστερη μέθοδος πρόβλεψης δίνει μεγάλο κέρδος 3 x στα integer και doduc! Τα tomcatv fpppp έχουν απλούστερη συμπεριφορά γιατί έχουν πολύ λιγότερες και προβλέψιμες διακλαδώσεις μεγάλο κέρδος από πρόβλεψη διακλάδωσης! Στα υπόλοιπα: η διαφορά του τέλειου predictor από τον καλύτερο ρεαλιστικό είναι μεγάλη 11
Αριθμός καταχωρητών! Ξεκινάμε από ένα branch predictor καλύτερο από τον tournament των προηγούμενων προσομοιώσεων tournament 150Kbits, 2- level,! Εξετάζουμε την επίδραση του αριθμού καταχωρητών (μετονομασμένων - φυσικών) 12
Αριθμός καταχωρητών 13
Αριθμός καταχωρητών! Οι επιπλέον καταχωρητές είναι απαραίτητοι για να κρατούν τα ενδιάμεσα αποτελέσματα των εντολών που εκτελούνται ύπο εικασία! Αν υπάρχει αρκετός παραλληλισμός, ο αριθμός καταχωρητών είναι σημαντικός 14
Memory alias analysis! Ξεκινάμε με 256 επιπλέον καταχωρητές (για κάθε είδος Int, FP)! Δεν είναι πρακτικό να γνωρίζουμε όλες τις διευθύνσεις μνήμης και άρα τις εξαρτήσεις! Τέλειο memory alias analysis και 3 πιο ρεαλιστικά μοντέλα: Τέλεια ανάλυση για προσπελάσεις σε stack και global μνήμη Inspecfon απλή ανάλυση, π.χ. R10+10 δεν μπορεί να είναι η ίδια διεύθυνση με R10+100, αν δεν έχει αλλάξει ο R10 Καμία ανάλυση κάθε διεύθυνση μπορεί να συγκρούεται με οποιαδήποτε άλλη 15
Memory alias analysis 16
Dynamic disambiguafon! Υλοποιείται στους περισσότερους επεξεργαστές με δυναμικό χρονοπρογραμματισμό! Κάθε load εξετάζει τις διευθύνσεις των προηγούμενων store που δεν έχουν κάνει commit 17
ILP σε ρεαλιστικούς πυρήνες! Μέχρι 64 εντολές εκκινούν ανά κύκλο χωρίς περιορισμούς ως προς το είδος! Πρόβλεψη διακλάδωσης 1K tournament predictor, 16- entry RAS! Τέλειο memory disambiguafon dynamic disambiguafon! Μετονομασία καταχωρητων: επιπλέον 64 για κάθε είδος! Μεταβάλουμε το μέγεθος παραθύρου 18
Αποτελέσματα gcc espresso 10 10 10 9 8 15 15 13 10 8 Window size Infinite 256 128 64 32 Benchmarks li fpppp 12 12 11 11 9 14 22 35 47 52 doduc 9 17 16 15 12 tomcatv 14 22 34 45 56 0 10 20 30 40 50 60 Instruction issues per cycle 19
Παράδειγμα! Πώς μπορεί να αξιοποιηθεί καλύτερα ο διαθέσιμος χώρος του Ο.Κ.: 1. Απλή 2- issue στατική διοχέτευση με ρολόι 4GHz, CPI 0.8, cache miss rate 0.005 misses/instrucfon 2. Deep pipelined, 2- issue, ρολόι 5GHz, ελαφρά μικρότερη cache. CPI=1, miss rate 0.0055 misses/instrucfon 3. Superscalar 64- θέσεις window, πετυχαίνει το μισό από το ιδανικό μέσο issue rate (4.5). Εχει μικρότερη cache 0.01 misses/instrucfon αλλά κρύβει 25% του miss penalty εκτελώντας χρήσιμες εντολές. Ρολόι 2.5Ghz! Memory access fme 50ns 20
Λύση! Πρώτα υπολογίζουμε πόσο συνεισφέρει στο CPI το σύστημα μνήμης Cache CPI = misses per instrucfon * miss penalty miss penalty = memory access fme / clock cycle MissPenalty 1 = 50ns/250ps = 200 κύκλοι MP 2 = 250 MP 3 = 0.75*50/400ps = 94 $CPI 1 = 1, $CPI 2 = 1.4, $CPI 3 = 0.94! Instrucfon CPI 3 = 1/issue rate = 1/4.5 = 0.22! CPI = Instrucfon CPI + cache CPI CPI 1 = 1.8, CPI 2 = 2.4, CPI 3 =1.16! Ιδιος αριθμός εντολών, σύγκριση με ρυθμό εκτέλεσης (MIPS) = clock rate / CPI ER 1 = 2222, ER 2 =2083, ER 3 =2155 21
Σύγκριση πραγματικών επεξεργαστών 22
SPECInt2000 23
SPECfp300 24
Αποδοτικότητα 25
Παραλληλισμός νημάτων! Από τα προηγούμενα φαίνεται ότι η εκμετάλευση της παραλληλίας επιπέδου εντολής έχει φτάσει στα όριά της το κόστος για επιπλέον επιδόσεις είναι τεράστιο! Για καλύτερες επιδόσεις πρέπει να βρούμε και να εκμεταλευτούμε παραλληλία σε άλλα επίπεδα! Η πιο γενική μορφή παραλληλισμού είναι σε επίπεδο νήματος (thread- level parallelism TLP) ξεχωριστά νήματα εκτέλεσης που συνολικά αποτελούν μια εφαρμογή! Μπορεί να είναι αποδοτικότερη από ILP εφαρμογές με «φυσική» παραλληλία, π.χ. εξυπηρετητές σημαντική δυσκολία για υπάρχουσες σειριακές εφαρμογές 26
Νήμα! Μια ξεχωριστή διεργασία! Εχει τις δικές του εντολές και δεδομένα! Μπορεί να είναι μέρος μιας ομάδας νημάτων ενός παράλληλου προγράμματος ή ένα αυτόνομο πρόγραμμα! Τα Λ.Σ. συχνά διαχωρίζουν τα νήματα από τις διεργασίες τα νήματα είναι «ελαφρότερα»: γρηγορότερες εναλλαγές εκτέλεσης και περιορισμοί στις ιδιότητες 27
Πολυνημάτωση - mulfthreading! Δυνατότητα διαμερισμού των λειτουργικών μονάδων ενός πυρήνα από πολλά νήματα με επικάληψη! Ο πυρήνας πρέπει να έχει άμμεσα διαθέσιμες όλες τις πληροφορίες κατάστασης των νημάτων τιμές καταχωρητών PC Page tables Η μνήμη μοιράζεται μέσω του μηχανισμού της εικονικής μνήμης! Υπάρχουν πολλαπλά αρχεία καταχωρητών, PC,! Η εναλλαγή νημάτων πρέπει να γίνεται γρήγορα σε αντίθεση με εναλλαγή διεργασιών που χρειάζεται 100άδες κύκλους 28
ILP and mulfthreading! Ενας πυρήνας σχεδιασμένος για ILP μπορεί να εκμεταλευτεί παραλληλισμό επιπέδου νήματος με λίγο επιπλέον κόστος! Πολλές μονάδες είναι συχνά σε αδράνεια εξαρτήσεις, πάγωμα διοχέτευσης (π.χ. αστοχία κρυφής μνήμης) μικρός παραλληλισμός επ. εντολής στο εκτελέσιμο πρόγραμμα! Μπορούν εντολές από άλλα νήματα να χρησιμοποιηθούν ως ανεξάρτητες εντολές για να αξιοποιήσουν τις αδρανείς μονάδες; 29
Είδη πολυνημάτωσης! Fine- grain εναλλαγή νήματος σε κάθε κύκλο/εντολή! Long- grain εναλλαγή νήματος μόνο σε μεγάλες καθυστερήσεις, π.χ. αστοχία κρυφής μνήμης! Simultaneous mulf- threading (SMT) ταυτόχρονη εκμετάλευση ILP, TLP εκμετάλευση αδρανών μονάδων από άλλα νήματα με μετονομασία καταχωρητών δεν είναι τόσο δύσκολο να αναμιγνύονται εντολές απο διαφορετικά νήματα ξεχωριστοί πίνακες μετονομασίας δυνατότητα ταυτόχρονου commit εντολών από διαφορετικά νήματα 30
Είδη πολυνημάτωσης Execution slots Superscalar Coarse MT Fine MT SMT Time 31
Πλεο/μειω- νεκτήματα! Fine grain εκμετάλευση ακόμα και μικρών καθυστερήσεων ο χρόνος εκτέλεσης ενός νήματος αυξάνει σημαντικά αφού παρεμβάλονται εντολές άλλων νημάτων επειδή μόνο ένα νήμα εκκινεί εντολές σε ένα κύκλο, μπορεί να μη μπορεί να εκμεταλευτεί πάντα όλο το «πλάτος» του πυρήνα ακριβό υλικό: κάθε νήμα πρέπει να είναι έτοιμο να εκτελεστεί σε κάθε κύκλο! Coarse grain αν ένα νήμα δεν έχει καθυστερήσεις τρέχει όσο γρήγορα γίνεται μικρές καθυστερήσεις δεν μπορούν να καλυφθούν από εκτέλεση άλλων νημάτων 32
Design challenges in SMT! Είναι παραλλαγή της fine- grain πολυνημάτωσης πρέπει να λυθεί το πρόβλημα της καθυστέρησης ενός νήματος Μπορεί να υπάρχουν προτιμώμενα νήματα! Ταυτόχρονη προσκόμιση εντολών για πολλά νήματα πολλαπλοί, ξεχωριστοί buffers τοπικότητα αναφορών χειροτερεύει! Αλλα προβλήματα πίεση για αύξηση κύκλου ρολογιού μεγάλα/πολλαπλά αρχεία καταχωρητών χειρότερη τοπικότητα αναφορών, συγκρούσεις μεταξύ των νημάτων για θέσειςστις κρυφές μνήμες και στο TLB 33
Αλλαγές που χρειάζονται! Ο IBM Power5 πρόσθεσε SMT σε σχέση με τον Power4! Οι αλλαγές που έγιναν είναι: Αύξηση της associafvity της L1 I$ και του ITLB Προσθήκη ξεχωριστών ανά νήμα ουρών load- store Αύξηση του μεγέθους κρυφών μνημών επιπέδων 2, 3 Προσθήκη ξεχωριστών buffers και λογικής προσκόμισης εντολών Αύξηση του αριθμού των καταχωρητών από 152 σε 240 Αύξηση του μεγέθους διαφόρων ουρών εκκίνησης 34
Απόδοση SMT Από τον Power5, SPECRate2000 35