<html><body><div>Καλησπέρα,<br><br>Θα ήθελα να ρωτήσω πώς πρέπει να χειρίζεται τις περιπτώσεις aliasing o local history predictor.<br>Έστω ότι στη θέση x του BHT αντιστοιχούν τα branch με διευθύνσεις pc1 και&nbsp; pc2. Αρχικά μόνο η pc1 κάνει branch, οπότε η θέση x γεμίζει με το ιστορικό της, και στη συνέχεια ο predictor καλείται να χειριστεί το branch με pc2. Όταν θα πρέπει να καταγράψουμε το πραγματικό αποτέλεσμα του branch, κατάλαβα ότι θα μετατοπίσουμε απλώς το ιστορικό στη θέση x για να καταγράψουμε το αποτέλεσμα. Μία τέτοια υλοποίηση όμως θα σήμαινε ότι το ιστορικό του pc1 θα συνεχίσει να επηρεάζει τις αποφάσεις για το pc2 μέχρι να γίνουν κάμποσες προβλέψεις και να καθαρίσει πλήρως το ιστορικό από τις καταχωρήσεις του pc1. Είναι όντως αυτό ένα μειονέκτημα του local history predictor, ή είναι λάθος η υλοποίηση και θα πρέπει να κρατάμε στη θέση x και το πλήρες pc ώστε να μηδενίσουμε το περιεχόμενο της x μόλις αυτή κληθεί από διαφορετικό pc;<br><br>Και δύο πιο ειδικές, διευκρινιστικές ερωτήσεις:<br>Η παράμετρος target που εμφανίζεται  για τον κώδικα  που μας δόθηκε στις predict και update συναρτήσεις είναι ο προορισμός του branch σε περίπτωση που αυτό είναι taken;<br>Για τους predictors που θα συνθέσουμε, αρκεί να φτιάξουμε ένα .h αρχείο, να το συμπεριλάβουμε ως include στο branch_predictor.cc, να το βάλουμε στο φάκελο του .cc (αυτόν που αναφέρει και η εκφώνηση) και να κάνουμε ένα συνολικό make στο sniper;<br><br>Ευχαριστώ πολύ,<br>Μίχας Χρήστος<br data-mce-bogus="1"></div></body></html>