[Advcomparch] themata iouliou 2010 4o Prefetching
Nikos Anastopoulos
anastop at cslab.ece.ntua.gr
Tue Jun 28 23:27:17 EEST 2011
Καλησπέρα,
On 06/28/2011 09:01 PM, George Chatzikonstantis wrote:
>
>
>
> Καλησπέρα,
>
> Έχω πολλές απορίες σχετικά με το hardware prefetching που εμφανίζεται
> στο ιουλιος 2010 4βiii συνεπώς ήλπιζα να εξηγήσετε λίγο καλύτερα την άσκηση.
> Στα loops όπου η στήλη είναι πολ\σιο του 8 και δεν εχουμε αλλάξει
> γραμμή, τελικά η σωστή απάντηση είναι mmh ή mmm? Διότι δε βλέπω πως
> έχουμε το block με το δεδομένο Α[1][8] εφόσον αυτό έχει γίνει prefetched
> πολλές επαναλήψεις πίσω. Αν έχουμε μόνο μία θέση για blocks στον
> prefetching buffer τότε δε θα πρεπε να μπορούμε να το βρούμε εκεί.
Με την υπόθεση ότι το hw prefetching δε λειτουργεί με χρήση buffer αλλά
τα φέρνει κατευθείαν στην cache, και με την υπόθεση ότι ο χρονισμός του
prefetcher είναι κοινός για όλες τις αναφορές και τηρεί τη σειρά με την
οποία αυτές έγιναν, θα έχεις κέρδος από τον prefetcher στην περίπτωση
των compulsory misses της A[i][j]. Στις αναφορές των A[i-1][j],
A[i+1][j] θα έχεις conflicts ακόμα και με τη λειτουργία του prefetcher,
όπως αναφέρθηκε από συνάδελφο σε χθεσινό mail.
Στην περίπτωση που γίνει η παραδοχή ότι υπάρχει κάποιος buffer, τότε το
αποτέλεσμα προφανώς θα διαφέρει ανάλογα με τα πόσα entries θα έχει ο
buffer αυτός.
> Όταν αλλάζει η γραμμή, γιατί έχουμε mhh? Ολη η γραμμή Α[1] βρίσκεται
> στην cache συνεπώς θα έπρεπε να έχουμε hit στο πρώτο. Το δεύτερο το
> έχουμε λόγω prefetching και το δεύτερο βρίσκεται στην cache, άρα hhh.
Ουσιαστικά το μπλοκ στο οποίο ανήκει το Α[1][0], εκτοπίστηκε λόγω της
λειτουργίας του prefetching στις τελευταίες προηγούμενες επαναλήψεις του
εσωτερικού loop. Π.χ. όταν γίνονταν οι αναφορές στα Α[0][248],Α[2][248],
μπορούμε να υποθέσουμε ότι άρχισε η προφόρτωση για τα επόμενα blocks,
δηλ. αυτά που περιέχουν τα Α[1][0], Α[3][0]. Αυτά όμως, όπως είπαμε, θα
καταλήξουν τελικά σε conflict misses.
Ν.
More information about the Advcomparch
mailing list