Top Banner
Branch Prediction Πρόβλεψη Εντολών Διακλάδωσης Ξενοφών Δημαράς M564 Γεράσιμος Πολλάτος Μ490
48

Branch Prediction

Feb 02, 2016

Download

Documents

mercury

Branch Prediction. Πρόβλεψη Εντολών Διακλάδωσης. Ξενοφών Δημαράς M564 Γεράσιμος Πολλάτος Μ490. Δομή της Παρουσίασης. Η τεχνική της πρόβλεψης εντολών διακλάδωσης ( branch prediction ) Branch prediction σε multi-threaded επεξεργαστές - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Branch Prediction

Branch Prediction

Πρόβλεψη Εντολών Διακλάδωσης

Ξενοφών Δημαράς M564

Γεράσιμος Πολλάτος Μ490

Page 2: Branch Prediction

Δομή της Παρουσίασης Η τεχνική της πρόβλεψης εντολών

διακλάδωσης (branch prediction) Branch prediction σε multi-

threaded επεξεργαστές Συσχέτιση εντολών διακλάδωσης

και προβλεψιμότητα (correlation and predictability)

Page 3: Branch Prediction

Αναγκαιότητα Πρόβλεψης των Εντολών Διακλάδωσης

Μία στις πέντε εντολές είναι εντολή διακλάδωσης

Οι δυνατότητες παραλληλισμού σε μικρά block εντολών είναι περιορισμένες

Πολλοί κύκλοι ρολογιού (clock cycles) για μία εντολή διακλάδωσης

Page 4: Branch Prediction

Βασικό Σχήμα της Τεχνικής (1)

1. Πρόβλεψη της κατεύθυνσης μίας εντολής διακλάδωσης

2. Πρόβλεψη της εντολής-στόχου (αν κριθεί αναγκαίο)

3. Εκτέλεση της εντολής-στόχου4. Επιβεβαίωση της πρόβλεψης

Page 5: Branch Prediction

Βασικό Σχήμα της Τεχνικής (2) Στο Βήμα 3 δεν είναι απαραίτητο να

γνωρίζουμε ότι η πρόβλεψη ήταν σωστή

Στο Βήμα 4 αν η πρόβλεψη ήταν λανθασμένη αναιρούνται τα αποτελέσματα των εντολών που εκτελέστηκαν μετά από αυτήν και επαναπροσδιορίζεται η κατεύθυνση της εκτέλεσης

Page 6: Branch Prediction

Βασικές Έννοιες Πρόβλεψη (Predict)

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

Εκτίμηση Πρόβλεψης (Resolve)Σε αυτό το στάδιο αποφασίζουμε αν θα κρατήσουμε τα αποτελέσματα των εντολών-στόχων μίας πρόβλεψης ή αν θα τα αναιρέσουμε (squash).

Page 7: Branch Prediction

Εκτίμηση Πρόβλεψης Σε αυτό το στάδιο

δεν αποφασίζουμε αν θα εκτελεστεί η εντολή-στόχος απαραίτητα

Τα αποτελέσματα της εκτίμησης μίας πρόβλεψης μπορούν να αναιρεθούν σε επόμενο βήμα

Pr1

Pr2

Pr3

Pr4

Pr5

|| resolve(Pr1 && Pr2)=True

|| resolve(Pr3 && Pr4)=FalseCommand Execution

Page 8: Branch Prediction

Βήματα της Τεχνικής Εκκίνηση από την εντολή που

δείχνει ο PC (πρώτο στάδιο σωλήνωσης)

Απάντηση στα παρακάτω ερωτήματα Ερώτημα 1ο : Ποια κατεύθυνση

ακολουθούμε (Taken – Not Taken); Ερώτημα 2ο : Σε ποια εντολή-στόχο;

Page 9: Branch Prediction

Ένα Αναλυτικό Παράδειγμα (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.

Page 10: Branch Prediction

Ένα Αναλυτικό Παράδειγμα (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 εντολής.

Page 11: Branch Prediction

Ένα Αναλυτικό Παράδειγμα (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

• Αν η πρόβλεψη εντολών διακλάδωσης ήταν επιτυχής, θα είχαμε το παραπάνω σχήμα.

Page 12: Branch Prediction

Κατηγορίες Τεχνικών Πρόβλεψης Εντολών Διακλάδωσης

Στατική

Δυναμική

Υβριδική

Page 13: Branch Prediction

Στατική Πρόβλεψη Εντολών Διακλάδωσης Οι αποφάσεις δεν εξαρτώνται από το

ιστορικό των προηγουμένων προβλέψεων Υπάρχει μία στατική συνθήκη πρόβλεψης που

μπορεί να αλλάξει στην πορεία, όχι όμως εξαιτίας του ιστορικού (adaptive). Παραδείγματα συνθηκών: Πάντα T Πάντα N Προς τα εμπρός Ν, προς τα πίσω Τ If X then T but if Y then N but if Z then T

Υψηλή μεν, όχι ικανοποιητική ακρίβεια

Page 14: Branch Prediction

Δυναμική Πρόβλεψη Εντολών Διακλάδωσης Βασική Ιδέα : Το υλικό μαντεύει την

κατεύθυνση και την εντολή-στόχο μίας εντολής διακλάδωσης

Εξάρτηση από το ιστορικό των προηγούμενων προβλέψεων Η προηγούμενη συμπεριφορά αποτελεί

ισχυρή ένδειξη για την επιτυχία των μελλοντικών προβλέψεων

Οι εντολές διακλάδωσης συνήθως χαρακτηρίζονται από συμπεριφορά υψηλής κανονικότητας

Page 15: Branch Prediction

Υβριδική Πρόβλεψη Εντολών Διακλάδωσης Συνδυασμός στατικής και δυναμικής

πρόβλεψης Κατηγοριοποίηση των εντολών

διακλάδωσης ενός προγράμματος σε Στατικής συμπεριφοράς (strongly

biased). Χρήση στατικής πρόβλεψης Δυναμικής συμπεριφοράς (weakly

biased). Χρήση δυναμικής πρόβλεψης

Page 16: Branch Prediction

Δυναμική Πρόβλεψη Εντολών Διακλάδωσης

Βασικό σχήμα τεχνικής Κατηγοριοποίηση Θέματα που προκύπτουν

στην πράξη

Page 17: Branch Prediction

Βασικό Σχήμα

Fetch

Resolve

f(PC, x)

Προβλεπόμενη ΡοήΕκτέλεσηςPC, T ή NT

Πραγματική ΡοήΕκτέλεσηςf(PC, x) = T ή NT

Ποια είναι η f(PC, x);

Page 18: Branch Prediction

Χρόνος Εκμάθησης Πλήθος εκτελέσεων μίας εντολής

διακλάδωσης ώστε να μπορούμε να μαντέψουμε με ικανοποιητική ακρίβεια τη συμπεριφορά της στο μέλλον

Ακόμα καλύτερα: Αρχικοποίηση του ιστορικού σε Τ Στην πλειοψηφία των εκτελέσεων εντολών

διακλάδωσης το αποτέλεσμα είναι Τ, επομένως ο χρόνος εκμάθησης είναι 0

Page 19: Branch Prediction

Κατηγοριοποίηση Τεχνικών

Δυναμικές Τεχνικές Πρόβλεψης

Pattern BasedPredictors

Saturating CounterPredictor

Per AddressHistory

GlobalHistory

Page 20: Branch Prediction

Έστω η παρακάτω ακολουθία εκτελέσεων μίας εντολής διακλάδωσηςTTTTTTTTNTTTTTTTTNTTTT

Η last-outcome θα κάνει δύο αποτυχημένες προβλέψεις για κάθε εκτέλεση που αποκλίνει από την κανονική συμπεριφοράTTTTTTTTNTTTTTTTTNTTTT

Βασική ιδέα : Θυμόμαστε την πιο συχνή περίπτωση

00 01 10 11

Pred. TakenPred. Not-TakenT T T

T

NNN

N

Κορεσμένος Μετρητής ΠρόβλεψηςSaturating Counter Predictor

Page 21: Branch Prediction

Πρόβλεψη Βασισμένη σε Πρότυπα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

Page 22: Branch Prediction

Pattern-Based Predictors (1)

Global BHR

PC

fPrediction

Gshare Predictor

Global BHR Prediction

GAg Predictor

Page 23: Branch Prediction

Pattern-Based Predictors (2)

PAg Predictor

Prediction

BHRBHRBHR

BHR

PC

PAp Predictor

PredictionBHRBHRBHR

BHR

PC

Page 24: Branch Prediction

Θέματα που Προκύπτουν

Multi-Method predictors Χρήση πολλαπλών predictors και ενός ο οποίος

αποφασίζει ποιος από όλους θα χρησιμοποιηθεί.

Ενημέρωση Ιστορικού Επιλογή μεταξύ branch complete (υποθετικό) και

branch resolve (μη υποθετικό). Συνήθως επιλέγεται το υποθετικό.

Χρήση ενδιάμεσης μνήμης (buffer) Υλοποίηση συνήθως με cache μνήμη Αποθήκευση των εντολών-στόχων

Page 25: Branch Prediction

Σύνοψη Δυναμικής Πρόβλεψης Εντολών Διακλάδωσης Δεν υπάρχουν θέματα ορθότητας

Τα αποτελέσματα είναι πάντα σωστά Γρήγορη σε σωστές προβλέψεις Όχι πολύ αργή σε λανθασμένες

προβλέψεις Υψηλή ακρίβεια στις προβλέψεις που

γίνονται Πιθανό πρόβλημα στους multi-threaded

επεξεργαστές (συνέχεια)

Page 26: Branch Prediction

Πρόβλεψη Εντολών Διακλάδωσης σε πολυνηματικούς επεξεργαστές

Προβλήματα που προκύπτουνΕπιπτώσεις λόγω μικροαρχιτεκτονικήςΤεχνικές πρόβλεψης εντολών διακλάδωσης

Page 27: Branch Prediction

Προβλήματα Που Προκύπτουν Gshare

Οι λανθασμένες προβλέψεις από 6.5% σε single-threaded αυξάνουν σε 41.0% σε multi-threaded επεξεργαστές.

PagΠαρόμοια αύξηση και εδώ, από 6.7% σε 11.5%.

Ανάγκη χρήσης νέων τεχνικών

Page 28: Branch Prediction

Συνέπειες multi-threading στην πρόβλεψη εντολών διακλάδωσης Αν όλα τα ενεργά νήματα μοιράζονται κοινό

branch predictor τότε το νεότερο ιστορικό προβλέψεων είναι δυνατόν να μην είναι διαθέσιμο στα branches του κάθε νήματος.

Αν κάθε ενεργό νήμα έχει «ιδιωτικό» branch predictor τότε το ιστορικό το οποίο φυλάσσεται είναι περιορισμένης εμβέλειας με αποτέλεσμα μείωση του ποσοστού επιτυχημένων προβλέψεων (εξαίρεση μόνο τα μεγάλου μήκους νήματα).

Page 29: Branch Prediction

Ιστορικό Εντολών Διακλάδωσης

Λόγω της αρχιτεκτονικής των SPMT επεξεργαστώνμπορούν να προκύψουν τα εξής προβλήματα με τοιστορικό:

Ανεπαρκές Ιστορικό : Το ιστορικό ανανεώνεται σπάνια Ασυνεχές Ιστορικό : Το ιστορικό δεν περιλαμβάνει όλες

τις ενημερώσεις Παρωχημένο Ιστορικό : Το ιστορικό δεν περιλαμβάνει

τις νεότερες ενημερώσεις Αδόμητο (scrambled) Ιστορικό : Οι ανανεώσεις

γίνονται με λανθασμένη σειρά Ανακριβές Ιστορικό : Γίνονται λανθασμένες ανανεώσεις

Page 30: Branch Prediction

Θέματα Μικροαρχιτεκτονικής Αριθμός predictors στο υλικό:

Ιδιωτικοί predictors (τόσοι όσος και ο μέγιστος αριθμός επιτρεπτών ενεργών νημάτων)

Κοινοί predictors (ένας για όλα τα ενεργά νήματα) Χρόνος ανανέωσης ιστορικού

At FETCH time (branch predict) At RESOLUTION time (branch resolve) At COMMIT time (branch commit)

Μήκος νημάτων «Κοντά» νήματα (όχι καλή συνεργασία με ιδιωτικούς

predictors) «Μακριά» νήματα (καλή συνεργασία με ιδιωτικούς

predictors) Έλεγχος ροής μέσα στο νήμα και τρόπος

εκτέλεσης νημάτων

Page 31: Branch Prediction

Αξιολόγηση predictors

Page 32: Branch Prediction

Τεχνικές Πρόβλεψης σε SPMT (1)

Τεχνική συμπερασματικής εξαγωγής(extrapolation technique)

Γίνεται προσπάθεια ανακατασκευής του ιστορικού το οποίο θα ήταν διαθέσιμο αν γινόταν ενημέρωση του ιστορικού με program order.

Branch HistorySpeculatedUpdates

Branch PC

SaturatingCounters

MUX

Final Prediction

Extrapolation Distance

Branch History TablePattern History

Table

Page 33: Branch Prediction

Τεχνικές Πρόβλεψης σε SPMT (2)

Συσχέτιση με πληροφορίες επιπέδου thread (Correlation-based Predictor)

Δεν γίνεται καθολική ανακατασκευή του ιστορικού

Predictor 1

Predictor 2

Predictor n

Branch PCMUX

Final Prediction

Thread-Level Prediction

Page 34: Branch Prediction

Τεχνικές Πρόβλεψης σε SPMT (3)

Υβριδική πρόβλεψη Συνδυασμός extrapolation και correlation

ExtrapolationPredictor 1

ExtrapolationPredictor 2

ExtrapolationPredictor n

Branch PCMUX

Final Prediction

Thread-Level Prediction

Page 35: Branch Prediction

Συμπεράσματα Η υβριδική τεχνική μειώνει τα ποσοστά

λανθασμένων προβλέψεων σε εκείνα για single-thread επεξεργαστές

Υπάρχει ισχυρή εξάρτηση από το είδος των νημάτων

Αν οι περισσότερες εντολές διακλάδωσης φθάνουν σε program order η extrapolation τεχνική αποδίδει καλύτερα

Η ανανέωση του ιστορικού πρέπει να γίνεται στο στάδιο επικύρωσης (commit time)

Page 36: Branch Prediction

Συσχέτιση Εντολών Διακλάδωσης και Πρoβλεψιμότητα(Correlation and Predictability)

Τί κάνει τις εντολές διακλάδωσης προβλέψιμες;

Κατηγορίες: Συσχέτιση Κατεύθυνσης

Directional Correlation Συσχέτιση Μονοπατιού

In-Path Correlation

Page 37: Branch Prediction

Συσχέτιση ΚατεύθυνσηςDirectional Correlation

Οι συνθήκες δύο εντολών διακλάδωσης βασίζονται στην ίδια ή σε σχετιζόμενη πληροφορίαY: if (cond1)X: if (cond1 AND cond2)

Η εντολή διακλάδωσης X βασίζεται σε πληροφορία που παράγεται από την εντολή-στόχο της YY: if (cond1) a = 2;X: if (a == 0)

Page 38: Branch Prediction

Συσχέτιση Μονοπατιού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)

Page 39: Branch Prediction

Συσχέτιση στην Πρόβλεψη 2-ΕπιπέδωνCorrelation in 2-Level Prediction

Μερικές μόνο από τις εντολές διακλάδωσης που εμφανίζονται στη ροή εκτέλεσης του προγράμματος (in-path) σχετίζονται με την τρέχουσα

Μη συσχετιζόμενες εντολές διακλάδωσης με την τρέχουσα, προσθέτουν «θόρυβο» και αυξάνουν το χρόνο εκμάθησης

Στόχος : εκμετάλλευση μόνο των συσχετιζόμενων

Page 40: Branch Prediction

Επιλεκτικό ΙστορικόSelective History

Σχήμα Πρόβλεψης: Καταχωρεί τα αποτελέσματα των 1,2 ή 3 πιο

«σημαντικών» εντολών διακλάδωσης σε ξεχωριστό καταχωρητή για κάθε εντολή διακλάδωσης (per branch BHR)

Ολικό ιστορικό συγκεκριμένου μήκους εντολών διακλάδωσης

Μηχανισμός επιλογής των «σημαντικότερων» εντολών διακλάδωσης (oracle)

Τα αποτελέσματα μπορούν να είναι “Taken”, “Not Taken” ή “Not In Path”.

Για 3 εντολές διακλάδωσης – 33 δυνατά πρότυπα

Page 41: Branch Prediction

Πείραμα•Εύρεση της ακρίβειας πρόβλεψης με χρήση επιλεκτικού ιστορικού

•Ολικό ιστορικό 16 εντολών διακλάδωσης

•Σύγκριση με IF gshare (Interference Free gshare)

Στόχοι:

•Να δειχθεί ότι χρειάζονται μόνο μερικές προσεκτικά επιλεγμένες εντολές διακλάδωσης από το ιστορικό

•Να δειχθεί ότι αυτές δεν απέχουν πολύ από την τρέχουσα

Page 42: Branch Prediction

Πειραματικά Αποτελέσματα

Το γράφημα δείχνει την ακρίβεια πρόβλεψης με χρήση IF επιλεκτικού ιστορικού 1, 2 ή 3 «σημαντικότερων» εντολών διακλάδωσης. Σε όλες τις περιπτώσεις συγκρίνεται με τον IF gshare μηχανισμό πρόβλεψης. Επίσης εμφανίζεται η ακρίβεια πρόβλεψης του κλασσικού gshare.

Page 43: Branch Prediction

Συμπέρασμα

Τα αποτελέσματα μικρού αριθμού προηγουμένων εντολών διακλάδωσης αρκούν για να κάνουμε ακριβή πρόβλεψη, αρκεί να μπορούμε να εντοπίσουμε τις «σημαντικότερες» από αυτές

Page 44: Branch Prediction

Απόσταση Συσχετιζόμενων Εντολών Διακλάδωσης

Το γράφημα δείχνει την ακρίβεια πρόβλεψης με χρήση IF 3-επιλεκτικού ιστορικού σε συνάρτηση με το μήκος του ολικού ιστορικού (8 εως 32).

Page 45: Branch Prediction

Κατηγορίες Εντολών Διακλάδωσης

Κατηγοριοποίηση εντολών διακλάδωσης με βάση τα πρότυπα που παρουσιάζουν στις ακολουθίες αποτελεσμάτων:• Βρόχοι (loop-type branches)• Επαναλαμβανόμενων προτύπων• Μη επαναλαμβανόμενων προτύπων• Στατικής ή απρόβλεπτης συμπεριφοράς

Η τελευταία κατηγορία αντιμετωπίζεται καλύτερα με στατική πρόβλεψη

Page 46: Branch Prediction

Κατανομή Εντολών Διακλάδωσης

Page 47: Branch Prediction

Συμπεράσματα Για τις μισές περίπου εντολές διακλάδωσης

είναι καλύτερη η χρήση στατικής πρόβλεψης. 88% από αυτές παρουσιάζουν στατική συμπεριφορά (99% Τ ή Ν), και 12% παρουσιάζουν ιδιαίτερη δυσκολία στην πρόβλεψη

Το ένα τρίτο ανήκει στην κατηγορία των μη επαναλαμβανόμενων προτύπων. Χρήση Pag ή PAp

Περίπου το ένα έκτο είναι βρόχοι Η κατηγορία των επαναλαμβανόμενων

προτύπων είναι σπάνια

Page 48: Branch Prediction

Αναφορές

[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”