Branch Prediction

Post on 02-Feb-2016

50 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Branch Prediction. Πρόβλεψη Εντολών Διακλάδωσης. Ξενοφών Δημαράς M564 Γεράσιμος Πολλάτος Μ490. Δομή της Παρουσίασης. Η τεχνική της πρόβλεψης εντολών διακλάδωσης ( branch prediction ) Branch prediction σε multi-threaded επεξεργαστές - PowerPoint PPT Presentation

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”

top related