Αυτό που λέτε είναι κατανοητό όσον αφορά τις παραμέτρους που περνάμε και τον υπολογισμό από το target και το PC.
Το πρόβλημα που αντιμετωπίζουμε είναι ότι το target (trace.target) *δεν*είναι διαθέσιμο για χρήση από την συνάρτηση predict που υλοποιούμε. Η μόνη λύση που μπορώ να σκεφτώ είναι να προσθέσουμε άλλο ένα πεδίο στο branch_info (π.χ. isForward) το οποίο θα το υπολογίζουμε προτού καλέσουμε την predict
Είναι αποδεκτό κάτι τέτοιο; Εναλλακτική πρόταση
Ευχαριστώ
2009/5/23 Konstantinos Nikas knikas@cslab.ece.ntua.gr
Όπως μπορείτε να δείτε στη main, κάθε διάβσμα του trace file δημιουργεί
μια δομή trace η οποία περιέχει τη δομή branch_info, το αποτέλεσμα και τον προορισμό του κάθε branch (όπως όρίζεται στο trace.h). Η δομή branch_info είναι αυτή που δίνεται μετά σαν όρισμα στον predictor για να κάνει την πρόβλεψη.
Το αν το branch είναι forward ή backward μπορείτε να το υπολογίσετε από το target και το PC του και να χρησιμοποιήσετε την πληροφορία αυτή μετά στον predictor.
K. Herc wrote:
Tο BΤFNT προβλέπει taken αν το άλμα είναι προς τα πίσω, και not taken αν το άλμα είναι προς τα εμπρός. Όμως σε εμάς μας δίνεται στο branch_info μόνο το branch_address (PC), το opcode και το br_flags, χωρίς πληροφορία για το offset. Πως θα βρούμε αν το άλμα είναι προς τα εμπρός ή προς τα πίσω?
Advcomparch mailing list Advcomparch@lists.cslab.ece.ntua.gr http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch