<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt">Καλημέρα,<br>έχοντας ολοκληρώσει τις προσομοιώσεις των predictors, παρατήρησα κάτι που με μπέρδεψε και αφορά πρώτα στην θεωρητική κατανόηση και δευτερευόντως στην υλοποίηση.<br>Για παράδειγμα, στον n-bit predictor, στο διάγραμμα μεταβάσεων (διαφάνεια 22) φαίνεται πως ουσιαστικά σε κάθε εξεταζόμενο branch, η πρόβλεψη διαμορφώνεται ως η προηγούμενη πρόβλεψη ολισθημένη κατά 1 bit προς τα αριστερά με το νέο τελευταίο ψηφίο να είναι 0 αν το branch ήταν ΝΤ και 1 αν ήταν
 Τ. π.χ. με 3 bits από 100 με επιτυχή διακλάδωση θα γίνει 001 και όχι 101. Δεν είναι δηλαδή ένας "μετρητής". Αν όντως είναι έτσι και δεν έχω μπερδευτεί, τότε γιατί στον nbit_predicotr.h το update γίνεται ως εξής:<br><br>&nbsp;&nbsp;&nbsp; unsigned char *c = &amp;tab[((nbit_update*)u)-&gt;index];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (taken) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (*c &lt; counter_limit) (*c)++;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (*c &gt; 0) (*c)--;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br><br>Μήπως παρανοώ κάτι;<br><br>Στην ίδια λογική, στον local predictor (και κατ'
 επέκταση στον global predictor, αφού είναι ειδική περίπτωσή του) τα περιεχόμενα του bht διαμορφώνονται με τον ίδιο τρόπο (με shift κτλ) ;<br><br>Ευχαριστώ πολύ<br>Αλέξανδρος Δαγκλής<br>
</div></body></html>