Post on 02-Feb-2016
description
transcript
Branch Prediction
Πρόβλεψη Εντολών Διακλάδωσης
Ξενοφών Δημαράς M564
Γεράσιμος Πολλάτος Μ490
Δομή της Παρουσίασης Η τεχνική της πρόβλεψης εντολών
διακλάδωσης (branch prediction) Branch prediction σε multi-
threaded επεξεργαστές Συσχέτιση εντολών διακλάδωσης
και προβλεψιμότητα (correlation and predictability)
Αναγκαιότητα Πρόβλεψης των Εντολών Διακλάδωσης
Μία στις πέντε εντολές είναι εντολή διακλάδωσης
Οι δυνατότητες παραλληλισμού σε μικρά block εντολών είναι περιορισμένες
Πολλοί κύκλοι ρολογιού (clock cycles) για μία εντολή διακλάδωσης
Βασικό Σχήμα της Τεχνικής (1)
1. Πρόβλεψη της κατεύθυνσης μίας εντολής διακλάδωσης
2. Πρόβλεψη της εντολής-στόχου (αν κριθεί αναγκαίο)
3. Εκτέλεση της εντολής-στόχου4. Επιβεβαίωση της πρόβλεψης
Βασικό Σχήμα της Τεχνικής (2) Στο Βήμα 3 δεν είναι απαραίτητο να
γνωρίζουμε ότι η πρόβλεψη ήταν σωστή
Στο Βήμα 4 αν η πρόβλεψη ήταν λανθασμένη αναιρούνται τα αποτελέσματα των εντολών που εκτελέστηκαν μετά από αυτήν και επαναπροσδιορίζεται η κατεύθυνση της εκτέλεσης
Βασικές Έννοιες Πρόβλεψη (Predict)
Σε αυτό το στάδιο ξεκινάει η εκτέλεση της εντολής στόχου χωρίς να γνωρίζουμε αν ακολουθούμε τη σωστή κατεύθυνση εκτέλεσης του προγράμματος
Εκτίμηση Πρόβλεψης (Resolve)Σε αυτό το στάδιο αποφασίζουμε αν θα κρατήσουμε τα αποτελέσματα των εντολών-στόχων μίας πρόβλεψης ή αν θα τα αναιρέσουμε (squash).
Εκτίμηση Πρόβλεψης Σε αυτό το στάδιο
δεν αποφασίζουμε αν θα εκτελεστεί η εντολή-στόχος απαραίτητα
Τα αποτελέσματα της εκτίμησης μίας πρόβλεψης μπορούν να αναιρεθούν σε επόμενο βήμα
Pr1
Pr2
Pr3
Pr4
Pr5
|| resolve(Pr1 && Pr2)=True
|| resolve(Pr3 && Pr4)=FalseCommand Execution
Βήματα της Τεχνικής Εκκίνηση από την εντολή που
δείχνει ο PC (πρώτο στάδιο σωλήνωσης)
Απάντηση στα παρακάτω ερωτήματα Ερώτημα 1ο : Ποια κατεύθυνση
ακολουθούμε (Taken – Not Taken); Ερώτημα 2ο : Σε ποια εντολή-στόχο;
Ένα Αναλυτικό Παράδειγμα (1)
if (x > 0) {
a=0; b=1; c=2;
} d=3;
Cycle Fetch Decode Execute Save
1 if (x>0)
2 a=0 if (x>0)
3 b=1 a=0 if (x>0)
4 c=2 b=1 a=0 if (x>0)
5 c=2 b=1 a=0
6 c=2 b=1
7 c=2
• Ισχύει x>0 και οι εντολές στη σωλήνωση είναι σωστές αφού θα εκτελεσθεί το σώμα της if.
Ένα Αναλυτικό Παράδειγμα (2)
if (x > 0) {
a=0; b=1; c=2;
} d=3;
Cycle Fetch Decode Execute Save
1 if (x>0)
2 a=0 if (x>0)
3 b=1 a=0 if (x>0)
4 d=3 squash b=1 squash a=0 if (x>0)
5 d=3 squash b=1 squash a=0
6 d=3 squash b=1
7 d=3
• Ισχύει x<0 και γίνεται squash των εντολών του σώματος της if εντολής.
Ένα Αναλυτικό Παράδειγμα (3)
if (x > 0) {
a=0; b=1; c=2;
} d=3;
Cycle Fetch Decode Execute Save
1 if (x>0)
2 d=3 if (x>0)
3 d=3 if (x>0)
4 d=3 if (x>0)
5 d=3
• Αν η πρόβλεψη εντολών διακλάδωσης ήταν επιτυχής, θα είχαμε το παραπάνω σχήμα.
Κατηγορίες Τεχνικών Πρόβλεψης Εντολών Διακλάδωσης
Στατική
Δυναμική
Υβριδική
Στατική Πρόβλεψη Εντολών Διακλάδωσης Οι αποφάσεις δεν εξαρτώνται από το
ιστορικό των προηγουμένων προβλέψεων Υπάρχει μία στατική συνθήκη πρόβλεψης που
μπορεί να αλλάξει στην πορεία, όχι όμως εξαιτίας του ιστορικού (adaptive). Παραδείγματα συνθηκών: Πάντα T Πάντα N Προς τα εμπρός Ν, προς τα πίσω Τ If X then T but if Y then N but if Z then T
Υψηλή μεν, όχι ικανοποιητική ακρίβεια
Δυναμική Πρόβλεψη Εντολών Διακλάδωσης Βασική Ιδέα : Το υλικό μαντεύει την
κατεύθυνση και την εντολή-στόχο μίας εντολής διακλάδωσης
Εξάρτηση από το ιστορικό των προηγούμενων προβλέψεων Η προηγούμενη συμπεριφορά αποτελεί
ισχυρή ένδειξη για την επιτυχία των μελλοντικών προβλέψεων
Οι εντολές διακλάδωσης συνήθως χαρακτηρίζονται από συμπεριφορά υψηλής κανονικότητας
Υβριδική Πρόβλεψη Εντολών Διακλάδωσης Συνδυασμός στατικής και δυναμικής
πρόβλεψης Κατηγοριοποίηση των εντολών
διακλάδωσης ενός προγράμματος σε Στατικής συμπεριφοράς (strongly
biased). Χρήση στατικής πρόβλεψης Δυναμικής συμπεριφοράς (weakly
biased). Χρήση δυναμικής πρόβλεψης
Δυναμική Πρόβλεψη Εντολών Διακλάδωσης
Βασικό σχήμα τεχνικής Κατηγοριοποίηση Θέματα που προκύπτουν
στην πράξη
Βασικό Σχήμα
Fetch
Resolve
f(PC, x)
Προβλεπόμενη ΡοήΕκτέλεσηςPC, T ή NT
Πραγματική ΡοήΕκτέλεσηςf(PC, x) = T ή NT
Ποια είναι η f(PC, x);
Χρόνος Εκμάθησης Πλήθος εκτελέσεων μίας εντολής
διακλάδωσης ώστε να μπορούμε να μαντέψουμε με ικανοποιητική ακρίβεια τη συμπεριφορά της στο μέλλον
Ακόμα καλύτερα: Αρχικοποίηση του ιστορικού σε Τ Στην πλειοψηφία των εκτελέσεων εντολών
διακλάδωσης το αποτέλεσμα είναι Τ, επομένως ο χρόνος εκμάθησης είναι 0
Κατηγοριοποίηση Τεχνικών
Δυναμικές Τεχνικές Πρόβλεψης
Pattern BasedPredictors
Saturating CounterPredictor
Per AddressHistory
GlobalHistory
Έστω η παρακάτω ακολουθία εκτελέσεων μίας εντολής διακλάδωσηςTTTTTTTTNTTTTTTTTNTTTT
Η last-outcome θα κάνει δύο αποτυχημένες προβλέψεις για κάθε εκτέλεση που αποκλίνει από την κανονική συμπεριφοράTTTTTTTTNTTTTTTTTNTTTT
Βασική ιδέα : Θυμόμαστε την πιο συχνή περίπτωση
00 01 10 11
Pred. TakenPred. Not-TakenT T T
T
NNN
N
Κορεσμένος Μετρητής ΠρόβλεψηςSaturating Counter Predictor
Πρόβλεψη Βασισμένη σε ΠρότυπαPattern-Based Prediction Ύπαρξη συσχέτισης
μεταξύ διαφορετικών εντολών διακλάδωσης
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 Predictors (1)
Global BHR
PC
fPrediction
Gshare Predictor
Global BHR Prediction
GAg Predictor
Pattern-Based Predictors (2)
PAg Predictor
Prediction
BHRBHRBHR
BHR
PC
PAp Predictor
PredictionBHRBHRBHR
BHR
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 (branch predict) At RESOLUTION time (branch resolve) At COMMIT time (branch commit)
Μήκος νημάτων «Κοντά» νήματα (όχι καλή συνεργασία με ιδιωτικούς
predictors) «Μακριά» νήματα (καλή συνεργασία με ιδιωτικούς
predictors) Έλεγχος ροής μέσα στο νήμα και τρόπος
εκτέλεσης νημάτων
Αξιολόγηση predictors
Τεχνικές Πρόβλεψης σε SPMT (1)
Τεχνική συμπερασματικής εξαγωγής(extrapolation technique)
Γίνεται προσπάθεια ανακατασκευής του ιστορικού το οποίο θα ήταν διαθέσιμο αν γινόταν ενημέρωση του ιστορικού με program order.
Branch HistorySpeculatedUpdates
Branch PC
SaturatingCounters
MUX
Final Prediction
Extrapolation Distance
Branch History TablePattern History
Table
Τεχνικές Πρόβλεψης σε SPMT (2)
Συσχέτιση με πληροφορίες επιπέδου thread (Correlation-based Predictor)
Δεν γίνεται καθολική ανακατασκευή του ιστορικού
Predictor 1
Predictor 2
Predictor n
Branch PCMUX
Final Prediction
Thread-Level Prediction
Τεχνικές Πρόβλεψης σε SPMT (3)
Υβριδική πρόβλεψη Συνδυασμός extrapolation και correlation
ExtrapolationPredictor 1
ExtrapolationPredictor 2
ExtrapolationPredictor n
Branch PCMUX
Final Prediction
Thread-Level 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”