[Advcomparch] Λειτουργία local history predictor
Konstantinos Nikas
knikas at cslab.ece.ntua.gr
Fri May 29 11:10:23 EEST 2009
Καλημέρα,
αυτό που βασικά χρειαζόμαστε είναι ένα τρόπο να βρίσκουμε γρήγορα το τι
έχει γίνει τις τελευταίες n φορές. To pattern αυτό το χρησιμοποιούμε για
την προσπέλαση του PHT πίνακα. Δηλαδή συσχετίζουμε κάθε δυνατό pattern
εκτέλεσης με έναν counter ώστε κάθε φορά που παρατηρούμε ένα
συγκεκριμένο pattern να κάνουμε πρόβλεψη με βάση το δικό του counter.
Ο πιο γρήγορος τρόπος είναι να αντιπροσωπεύεις στο pattern αυτό τα Τ με
1 και τα ΝΤ με 0.
π.χ. ΤΝΤΤΤΝΤΝΝΝ --> 1011101000
Για να το κάνεις αυτό κάνεις shift left και το καινούριο bit που μπαίνει
σαν LSB είναι 1 ή 0 αναλόγως με το αποτέλεσμα.
Έστω ότι στην αρχή ήταν όλα ΝΤ οπότε το ΒΗΤ θα είχε
000000....000000 (n bits)
Aν το επόμενο αποτέλεσμα είναι Τ τότε το ΒΗΤ θα αλλάξει σε
000000...000001 (στο οποίο καταλήγεις και με shift και με πρόσθεση). Αν
το επόμενο αποτέλεσμα είναι όμως Τ πάλι τότε το pattern θα πρέπει να
γίνει 000000...000011 στο οποίο δεν μπορείς να καταλήξεις προσθέτοντας 1.
Γενικά, θα μπορούσες να χρησιμοποιήσεις έναν counter για να κρατάς την
πληροφορία που κρατά ο ΒΗΤ, απλά θα ήταν πιο πολύπλοκο να κάνεις extract
το index για το PHT από τον counter αυτό.
Κ.
> Βασικά αυτό που δεν μπορώ να καταλάβω είναι ο λόγος για τον οποίο
> κάνουμε shift left το history και προσθέτουμε στο τέλος 1 ή 0.
> Το history δεν κρατάει το πόσες φορές έχει εκτελεστεί η συγκεκριμένη
> εντολή?Άρα δε θα έπρεπε να του προσθέτουμε 1 είτε είναι taken είτε
> not-taken το branch?
> Μάλλον κάτι χάνω σχετικά με τη λειτουργία του BHT.
>
> 2009/5/28 Konstantinos Nikas <knikas at cslab.ece.ntua.gr
> <mailto:knikas at cslab.ece.ntua.gr>>
>
> Καλημέρα,
>
> στον BHT αποθηκεύεται το history ενώ στο PHT οι counters. Επομένως
> στο update αυξάνετε/μειώνετε τους counters και κάνετε shift left
> το history προσθέτοντας σαν τελευταίο bit 1 ή 0 αναλόγως με το
> αποτέλεσμα του branch.
>
> Ο gshare που σας έχουμε δώσει αποτελεί καλό παράδειγμα, καθώς η
> διαφορά του από τον local-history είναι ότι έχει μόνο ένα entry
> για history αντί για ένα ολόκληρο table (--- η 2η διαφορά είναι το
> XOR που κάνει για να υπολογίσει το index). Επομένως μπορείτε να
> τον χρησιμοποιήσετε σαν βάση για να κατασκευάσετε τον predictor σας.
>
> Όπου χρειάζεστε αρχικοποίηση θεωρείστε ότι ξεκινάτε από το 0.
>
> Κ.
>
>
> Μπορεί κάποιος να εξηγήσει πώς λειτουργεί ο local history
> predictor?
> Βασικά δε μπορώ να καταλάβω τι πρέπει να κάνω μετά την
> πρόβλεψη.Αυξάνω την entry στον bht κατά 1 και την αντίστοιχη
> entry στον pht σύμφωνα με τις καταστάσεις του 2-bit predictor
> και ανάλογα αν το branch είναι taken η not-taken.Σωστά??Επίσης
> αρχικά όλα τα entries στους 2 πίνακες είναι 0 ή χρειάζεται
> κάποια άλλη αρχικοποίηση?
> ------------------------------------------------------------------------
>
> _______________________________________________
> Advcomparch mailing list
> Advcomparch at lists.cslab.ece.ntua.gr
> <mailto:Advcomparch at lists.cslab.ece.ntua.gr>
> http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
>
>
>
>
More information about the Advcomparch
mailing list