480 likes | 676 Views
Branch Prediction. Πρόβλεψη Εντολών Διακλάδωσης. Ξενοφών Δημαράς M564 Γεράσιμος Πολλάτος Μ490. Δομή της Παρουσίασης. Η τεχνική της πρόβλεψης εντολών διακλάδωσης ( branch prediction ) Branch prediction σε multi-threaded επεξεργαστές
E N D
Branch Prediction Πρόβλεψη Εντολών Διακλάδωσης Ξενοφών Δημαράς M564 Γεράσιμος Πολλάτος Μ490
Δομή της Παρουσίασης • Η τεχνική της πρόβλεψης εντολών διακλάδωσης (branch prediction) • Branch prediction σε multi-threaded επεξεργαστές • Συσχέτιση εντολών διακλάδωσης και προβλεψιμότητα (correlation and predictability)
Αναγκαιότητα Πρόβλεψης των Εντολών Διακλάδωσης • Μία στις πέντε εντολές είναι εντολή διακλάδωσης • Οι δυνατότητες παραλληλισμού σε μικρά block εντολών είναι περιορισμένες • Πολλοί κύκλοι ρολογιού (clock cycles)για μία εντολή διακλάδωσης
Βασικό Σχήμα της Τεχνικής (1) • Πρόβλεψη της κατεύθυνσης μίας εντολής διακλάδωσης • Πρόβλεψη της εντολής-στόχου (αν κριθεί αναγκαίο) • Εκτέλεση της εντολής-στόχου • Επιβεβαίωση της πρόβλεψης
Βασικό Σχήμα της Τεχνικής (2) • Στο Βήμα 3 δεν είναι απαραίτητο να γνωρίζουμε ότι η πρόβλεψη ήταν σωστή • Στο Βήμα 4 αν η πρόβλεψη ήταν λανθασμένη αναιρούνται τα αποτελέσματα των εντολών που εκτελέστηκαν μετά από αυτήν και επαναπροσδιορίζεται η κατεύθυνση της εκτέλεσης
Βασικές Έννοιες • Πρόβλεψη (Predict)Σε αυτό το στάδιο ξεκινάει η εκτέλεση της εντολής στόχου χωρίς να γνωρίζουμε αν ακολουθούμε τη σωστή κατεύθυνση εκτέλεσης του προγράμματος • Εκτίμηση Πρόβλεψης (Resolve)Σε αυτό το στάδιο αποφασίζουμε αν θα κρατήσουμε τα αποτελέσματα των εντολών-στόχων μίας πρόβλεψης ή αν θα τα αναιρέσουμε (squash).
Εκτίμηση Πρόβλεψης • Σε αυτό το στάδιο δεν αποφασίζουμε αν θα εκτελεστεί η εντολή-στόχος απαραίτητα • Τα αποτελέσματα της εκτίμησης μίας πρόβλεψης μπορούν να αναιρεθούν σε επόμενο βήμα Pr1 Pr2 Pr3 || resolve(Pr1 && Pr2)=True Pr4 Command Execution Pr5 || resolve(Pr3 && Pr4)=False
Βήματα της Τεχνικής • Εκκίνηση από την εντολή που δείχνει ο PC (πρώτο στάδιο σωλήνωσης) • Απάντηση στα παρακάτω ερωτήματα • Ερώτημα 1ο : Ποια κατεύθυνση ακολουθούμε (Taken – Not Taken); • Ερώτημα 2ο : Σε ποια εντολή-στόχο;
Ένα Αναλυτικό Παράδειγμα (1) if (x > 0) { a=0; b=1; c=2; } d=3; • Ισχύει x>0 και οι εντολές στη σωλήνωση είναι σωστές αφού θα εκτελεσθεί το σώμα της if.
Ένα Αναλυτικό Παράδειγμα (2) if (x > 0) { a=0; b=1; c=2; } d=3; • Ισχύει x<0 και γίνεται squash των εντολών του σώματος της if εντολής.
Ένα Αναλυτικό Παράδειγμα (3) if (x > 0) { a=0; b=1; c=2; } d=3; • Αν η πρόβλεψη εντολών διακλάδωσης ήταν επιτυχής, θα • είχαμε το παραπάνω σχήμα.
Κατηγορίες Τεχνικών Πρόβλεψης Εντολών Διακλάδωσης • Στατική • Δυναμική • Υβριδική
Στατική Πρόβλεψη Εντολών Διακλάδωσης • Οι αποφάσεις δεν εξαρτώνται από το ιστορικό των προηγουμένων προβλέψεων • Υπάρχει μία στατική συνθήκη πρόβλεψης που μπορεί να αλλάξει στην πορεία, όχι όμως εξαιτίας του ιστορικού (adaptive). Παραδείγματα συνθηκών: • Πάντα T • Πάντα N • Προς τα εμπρός Ν, προς τα πίσω Τ • If X then T but if Y then N but if Z then T • Υψηλή μεν, όχι ικανοποιητική ακρίβεια
Δυναμική Πρόβλεψη Εντολών Διακλάδωσης • Βασική Ιδέα : Το υλικό μαντεύει την κατεύθυνση και την εντολή-στόχο μίας εντολής διακλάδωσης • Εξάρτηση από το ιστορικό των προηγούμενων προβλέψεων • Η προηγούμενη συμπεριφορά αποτελεί ισχυρή ένδειξη για την επιτυχία των μελλοντικών προβλέψεων • Οι εντολές διακλάδωσης συνήθως χαρακτηρίζονται από συμπεριφορά υψηλής κανονικότητας
Υβριδική Πρόβλεψη Εντολών Διακλάδωσης • Συνδυασμός στατικής και δυναμικής πρόβλεψης • Κατηγοριοποίηση των εντολών διακλάδωσης ενός προγράμματος σε • Στατικής συμπεριφοράς (strongly biased). Χρήση στατικής πρόβλεψης • Δυναμικής συμπεριφοράς (weakly biased). Χρήση δυναμικής πρόβλεψης
Δυναμική Πρόβλεψη Εντολών Διακλάδωσης • Βασικό σχήμα τεχνικής • Κατηγοριοποίηση • Θέματα που προκύπτουν στην πράξη
Βασικό Σχήμα Προβλεπόμενη Ροή Εκτέλεσης PC, T ή NT Fetch f(PC, x) Resolve Πραγματική Ροή Εκτέλεσης f(PC, x) = T ή NT • Ποια είναι η f(PC, x);
Χρόνος Εκμάθησης • Πλήθος εκτελέσεων μίας εντολής διακλάδωσης ώστε να μπορούμε να μαντέψουμε με ικανοποιητική ακρίβεια τη συμπεριφορά της στο μέλλον • Ακόμα καλύτερα: • Αρχικοποίηση του ιστορικού σε Τ • Στην πλειοψηφία των εκτελέσεων εντολών διακλάδωσης το αποτέλεσμα είναι Τ, επομένως ο χρόνος εκμάθησης είναι 0
Κατηγοριοποίηση Τεχνικών Δυναμικές Τεχνικές Πρόβλεψης Saturating Counter Predictor Pattern Based Predictors Global History Per Address History
Κορεσμένος Μετρητής ΠρόβλεψηςSaturating Counter Predictor • Έστω η παρακάτω ακολουθία εκτελέσεων μίας εντολής διακλάδωσηςTTTTTTTTNTTTTTTTTNTTTT • Η last-outcome θα κάνει δύο αποτυχημένες προβλέψεις για κάθε εκτέλεση που αποκλίνει από την κανονική συμπεριφοράTTTTTTTTNTTTTTTTTNTTTT • Βασική ιδέα : Θυμόμαστε την πιο συχνή περίπτωση Pred. Not-Taken Pred. Taken T T T N T 00 01 10 11 N N N
Ύπαρξη συσχέτισης μεταξύ διαφορετικών εντολών διακλάδωσης If (aa==2) then aa=0 If (bb==2) then bb=0 If (aa!=bb) then … Αντί για να θυμόμαστε συχνότητα Τ και Ν, θυμόμαστε ακριβείς ακολουθίες Τ και Ν (patterns) Nested loops:for i=0 to N for j=0 to 3 … Ιστορικό εκτέλεσης για τη j-for εντολή1110111011101110... Πρότυπα (patterns) 111 0 110 1 101 1 011 1 Χρόνος εκμάθησης 4 Πρόβλεψη Βασισμένη σε ΠρότυπαPattern-Based Prediction
Pattern-Based Predictors (1) Gshare Predictor GAg Predictor Global BHR Global BHR Prediction Prediction f PC
BHR BHR BHR BHR BHR BHR BHR BHR Pattern-Based Predictors (2) PAg Predictor PAp Predictor Prediction Prediction PC PC
Θέματα που Προκύπτουν • Multi-Method predictors • Χρήση πολλαπλών predictors και ενός ο οποίος αποφασίζει ποιος από όλους θα χρησιμοποιηθεί. • Ενημέρωση Ιστορικού • Επιλογή μεταξύ branch complete (υποθετικό) και branch resolve (μη υποθετικό). Συνήθως επιλέγεται το υποθετικό. • Χρήση ενδιάμεσης μνήμης (buffer) • Υλοποίηση συνήθως με cache μνήμη • Αποθήκευση των εντολών-στόχων
Σύνοψη Δυναμικής Πρόβλεψης Εντολών Διακλάδωσης • Δεν υπάρχουν θέματα ορθότητας • Τα αποτελέσματα είναι πάντα σωστά • Γρήγορη σε σωστές προβλέψεις • Όχι πολύ αργή σε λανθασμένες προβλέψεις • Υψηλή ακρίβεια στις προβλέψεις που γίνονται • Πιθανό πρόβλημα στους multi-threaded επεξεργαστές (συνέχεια)
Πρόβλεψη Εντολών Διακλάδωσης σε πολυνηματικούς επεξεργαστές • Προβλήματα που προκύπτουν • Επιπτώσεις λόγω μικροαρχιτεκτονικής • Τεχνικές πρόβλεψης εντολών διακλάδωσης
Προβλήματα Που Προκύπτουν • GshareΟι λανθασμένες προβλέψεις από 6.5% σε single-threaded αυξάνουν σε 41.0% σε multi-threaded επεξεργαστές. • PagΠαρόμοια αύξηση και εδώ, από 6.7% σε 11.5%. • Ανάγκη χρήσης νέων τεχνικών
Συνέπειες multi-threading στην πρόβλεψη εντολών διακλάδωσης • Αν όλα τα ενεργά νήματα μοιράζονται κοινό branch predictor τότε το νεότερο ιστορικό προβλέψεων είναι δυνατόν να μην είναι διαθέσιμο στα branches του κάθε νήματος. • Αν κάθε ενεργό νήμα έχει «ιδιωτικό» branch predictor τότε το ιστορικό το οποίο φυλάσσεται είναι περιορισμένης εμβέλειας με αποτέλεσμα μείωση του ποσοστού επιτυχημένων προβλέψεων (εξαίρεση μόνο τα μεγάλου μήκους νήματα).
Ιστορικό Εντολών Διακλάδωσης Λόγω της αρχιτεκτονικής των SPMT επεξεργαστών μπορούν να προκύψουν τα εξής προβλήματα με το ιστορικό: • Ανεπαρκές Ιστορικό : Το ιστορικό ανανεώνεται σπάνια • Ασυνεχές Ιστορικό : Το ιστορικό δεν περιλαμβάνει όλες τις ενημερώσεις • Παρωχημένο Ιστορικό : Το ιστορικό δεν περιλαμβάνει τις νεότερες ενημερώσεις • Αδόμητο (scrambled) Ιστορικό : Οι ανανεώσεις γίνονται με λανθασμένη σειρά • Ανακριβές Ιστορικό : Γίνονται λανθασμένες ανανεώσεις
Θέματα Μικροαρχιτεκτονικής • Αριθμός predictors στο υλικό: • Ιδιωτικοί predictors (τόσοι όσος και ο μέγιστος αριθμός επιτρεπτών ενεργών νημάτων) • Κοινοί predictors (ένας για όλα τα ενεργά νήματα) • Χρόνος ανανέωσης ιστορικού • At FETCH time (branchpredict) • At RESOLUTION time (branchresolve) • At COMMIT time (branch commit) • Μήκος νημάτων • «Κοντά» νήματα (όχι καλή συνεργασία με ιδιωτικούς predictors) • «Μακριά» νήματα (καλή συνεργασία με ιδιωτικούς predictors) • Έλεγχος ροής μέσα στο νήμα και τρόπος εκτέλεσης νημάτων
Τεχνικές Πρόβλεψης σε SPMT (1) • Τεχνική συμπερασματικής εξαγωγής(extrapolation technique) • Γίνεται προσπάθεια ανακατασκευής του ιστορικού το οποίο θα ήταν διαθέσιμο αν γινόταν ενημέρωση του ιστορικού με program order. Pattern History Table Branch History Table SpeculatedUpdates SaturatingCounters Branch History Branch PC Extrapolation Distance MUX Final Prediction
Τεχνικές Πρόβλεψης σε SPMT (2) • Συσχέτιση με πληροφορίες επιπέδου thread (Correlation-based Predictor) • Δεν γίνεται καθολική ανακατασκευή του ιστορικού Predictor n Predictor 2 Predictor 1 Branch PC Thread-Level Prediction MUX Final Prediction
Τεχνικές Πρόβλεψης σε SPMT (3) • Υβριδική πρόβλεψη • Συνδυασμός extrapolation και correlation Extrapolation Predictor n Extrapolation Predictor 2 Extrapolation Predictor 1 Branch PC Thread-Level Prediction MUX Final Prediction
Συμπεράσματα • Η υβριδική τεχνική μειώνει τα ποσοστά λανθασμένων προβλέψεων σε εκείνα για single-thread επεξεργαστές • Υπάρχει ισχυρή εξάρτηση από το είδος των νημάτων • Αν οι περισσότερες εντολές διακλάδωσης φθάνουν σε program order η extrapolation τεχνική αποδίδει καλύτερα • Η ανανέωση του ιστορικού πρέπει να γίνεται στο στάδιο επικύρωσης (commit time)
Συσχέτιση Εντολών Διακλάδωσης και Πρoβλεψιμότητα(Correlation and Predictability) • Τί κάνει τις εντολές διακλάδωσης προβλέψιμες; • Κατηγορίες: • Συσχέτιση ΚατεύθυνσηςDirectional Correlation • Συσχέτιση ΜονοπατιούIn-Path Correlation
Συσχέτιση ΚατεύθυνσηςDirectional Correlation • Οι συνθήκες δύο εντολών διακλάδωσης βασίζονται στην ίδια ή σε σχετιζόμενη πληροφορίαY: if (cond1)X: if (cond1 AND cond2) • Η εντολή διακλάδωσηςXβασίζεται σε πληροφορία που παράγεται από την εντολή-στόχο της YY: if (cond1) a = 2;X: if (a ==0)
Συσχέτιση ΜονοπατιούIn-Path Correlation • Η τρέχουσα εντολή διακλάδωσηςΧ εξαρτάται από το αν οι προηγούμενες Ζ και V εμφανίζονται στη ροή εκτέλεσης του προγράμματοςY: if (NOT cond1)Z: else if (NOT cond2)V: else if (cond3) //reached if (cond1 AND cond2)X: if (cond1 AND cond2)
Συσχέτιση στην Πρόβλεψη 2-ΕπιπέδωνCorrelation in 2-Level Prediction • Μερικές μόνο από τις εντολές διακλάδωσης που εμφανίζονται στη ροή εκτέλεσης του προγράμματος (in-path) σχετίζονται με την τρέχουσα • Μη συσχετιζόμενες εντολές διακλάδωσης με την τρέχουσα, προσθέτουν «θόρυβο»και αυξάνουν το χρόνο εκμάθησης • Στόχος : εκμετάλλευση μόνο των συσχετιζόμενων
Επιλεκτικό ΙστορικόSelective History Σχήμα Πρόβλεψης: • Καταχωρεί τα αποτελέσματα των 1,2 ή 3 πιο «σημαντικών» εντολών διακλάδωσης σε ξεχωριστό καταχωρητή για κάθε εντολή διακλάδωσης (per branch BHR) • Ολικό ιστορικό συγκεκριμένου μήκους εντολών διακλάδωσης • Μηχανισμός επιλογής των «σημαντικότερων» εντολών διακλάδωσης (oracle) • Τα αποτελέσματα μπορούν να είναι “Taken”, “Not Taken” ή “Not In Path”. • Για 3 εντολές διακλάδωσης – 33δυνατά πρότυπα
Πείραμα • Εύρεση της ακρίβειας πρόβλεψης με χρήση επιλεκτικού ιστορικού • Ολικό ιστορικό 16 εντολών διακλάδωσης • Σύγκριση με IF gshare (Interference Free gshare) Στόχοι: • Να δειχθεί ότι χρειάζονται μόνο μερικές προσεκτικά επιλεγμένες εντολές διακλάδωσης από το ιστορικό • Να δειχθεί ότι αυτές δεν απέχουν πολύ από την τρέχουσα
Πειραματικά Αποτελέσματα Το γράφημα δείχνει την ακρίβεια πρόβλεψης με χρήση IF επιλεκτικού ιστορικού 1, 2 ή 3 «σημαντικότερων»εντολών διακλάδωσης. Σε όλες τις περιπτώσεις συγκρίνεται με τον IF gshare μηχανισμό πρόβλεψης. Επίσης εμφανίζεται η ακρίβεια πρόβλεψης του κλασσικού gshare.
Συμπέρασμα • Τα αποτελέσματα μικρού αριθμού προηγουμένων εντολών διακλάδωσης αρκούν για να κάνουμε ακριβή πρόβλεψη, αρκεί να μπορούμε να εντοπίσουμε τις «σημαντικότερες» από αυτές
Απόσταση Συσχετιζόμενων Εντολών Διακλάδωσης Το γράφημα δείχνει την ακρίβεια πρόβλεψης με χρήση IF 3-επιλεκτικού ιστορικούσε συνάρτηση με το μήκος του ολικού ιστορικού (8 εως 32).
Κατηγορίες Εντολών Διακλάδωσης • Κατηγοριοποίηση εντολών διακλάδωσης με βάση τα πρότυπα που παρουσιάζουν στις ακολουθίες αποτελεσμάτων: • Βρόχοι (loop-type branches) • Επαναλαμβανόμενων προτύπων • Μη επαναλαμβανόμενων προτύπων • Στατικής ή απρόβλεπτης συμπεριφοράςΗ τελευταία κατηγορία αντιμετωπίζεται καλύτερα με στατική πρόβλεψη
Συμπεράσματα • Για τις μισές περίπου εντολές διακλάδωσης είναι καλύτερη η χρήση στατικής πρόβλεψης. 88% από αυτές παρουσιάζουν στατική συμπεριφορά(99% Τ ή Ν), και 12% παρουσιάζουν ιδιαίτερη δυσκολία στην πρόβλεψη • Το ένα τρίτο ανήκει στην κατηγορία των μη επαναλαμβανόμενων προτύπων.Χρήση Pag ή PAp • Περίπου το ένα έκτο είναι βρόχοι • Η κατηγορία των επαναλαμβανόμενων προτύπων είναι σπάνια
Αναφορές [1] A.Moschovos, Branch Prediction Presentation, 2002 [2] Jayanth Gummaraju, Manoj Franklin, “Branch Prediction in Multi-Threaded Processors” [3] Evers, Patel, Chappell, Patt, “An Analysis of Correlation and Predictability: What Makes Two-Level Branch Predictors Work” [4] Chang, Hao, Yeh, Patt, “Branch Classification: a New Mechanism fro Improving Branch Predictor Performance”