[Advcomparch] Υλοποίηση Συνάρτησης SplitAddress στο cache.h

Babis Kardaris bkardaris at hotmail.com
Tue Apr 4 19:26:55 EEST 2017


Καλησπέρα,

Η συνάρτηση SplitAddress στο cache.h ορίζεται ως εξής:

VOID SplitAddress(const ADDRINT addr, UINT32 lineShift, UINT32 
setIndexMask, CACHE_TAG & tag, UINT32 & setIndex) const {
     tag = addr >> lineShift;
     setIndex = tag & setIndexMask;
     tag = tag >> FloorLog2(L1NumSets());
}

Από ό,τι έχω καταλάβει, η παραπάνω συνάρτηση αντιστοιχίζει την διεύθυνση 
που περνάμε σαν όρισμα στο κατάλληλο block line της L1, με βάση τις 
παραμέτρους lineshift και setIndexMask, δίνοντας κατάλληλες τιμές στα 
tag και setIndex.
Η συνάρτηση καλείται σε δυο περιπτώσεις για διεύθυνσεις που θέλουμε να 
αντιστοιχιστούν στην L1, αλλά και σε μια περίπτωση για διεύθυνση που 
θέλουμε να αντιστοιχιστεί στην L2.
Δεδομένου ότι στον ορισμό της υπάρχει αναφορά μόνο στο L1NumSets() και 
όχι στο L2NumSets() (ανάλογα με την περίπτωση), δεν υπάρχει πρόβλημα 
όταν την καλούμε για αντιστοίχιση στην L2?

Μου φάνηκε παράξενο και είπα να το ρωτήσω. Αν δεν υπάρχει κάποιο θέμα 
και δεν έχω καταλάβει αρκετά τον κώδικα, ζητώ συγγνώμη για την ταλαιπωρία.


More information about the Advcomparch mailing list