1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα Μνήμης – Απόδοση Cache Μέρος: Τέταρτο Καθηγητής: Α. Βαφειάδης 2008
2 Α. Βαφειάδης Αλγόριθμοι αντικατάστασης Άμεσης απεικόνισης: Δεν απαιτείται Πλήρως συσχετική και τμηματικά συσχετική: Τυχαία LRU ( block που έχει πολύ χρόνο να χρησιμοποιηθεί -Last Recently Used) FIFO ( Βlock που έχει τον περισσότερο χρόνο στην Cache) Τμηματικά Συσχετιστική cache 2 δρόμοι4 δρόμοι8 δρόμοι ΜέγεθοςLRUΤυχαίαLRUΤυχαίαLRUΤυχαία 16KB5.18%5.69%4.67%5.29%4.39%4.96% 64KB1.88%2.01%1.54%1.66%1.39%1.53% 256KB1.15%1.17%1.13% 1.12%
3 Α. Βαφειάδης Πολιτική εγγραφής Write through : Ταυτόχρονη εγγραφή στη μνήμη και στη cache. Εύκολη υλοποίηση Χρονική καθυστέρηση εξαιτίας της παράλληλης εγγραφής στη Κ.Μ Συμβατότητα μεταξύ Κ.Μ και cache Write back: Μόνο στην cache με την παράλληλη ενημέρωση του dirty-bit (=1). Η ενημέρωση της Κ.Μ γίνεται μόνο όταν ένα block πρέπει να αντικατασταθεί από την cache. Υλοποίηση με μεγάλο κόστος Με μικρότερες χρονικές καθυστερήσεις(αν στο ίδιο block γίνουν τρεις αλλαγές έχουμε μόνο μια εγγραφή στην Κ.Μ έναντι τριών στην περίπτωση του Write through. Ασυμβατότητα μεταξύ Κ.Μ και cache (coherent problem)
4 Α. Βαφειάδης Τεχνικές στην περίπτωση write back Μια ανεπιθύμητη παρενέργεια του πρωτοκόλλου write-back είναι το γεγονός ότι μπορεί να προκληθεί εγγραφή στη μνήμη ακόμα και όταν ο επεξεργαστής ζητήσει να διαβάσει κάτι. Για παράδειγμα αν γίνει μια αποτυχία ανάγνωσης (read-miss) και χρειαστεί να φέρουμε από την μνήμη κάποιο block το οποίο θα αντικαταστήσει ένα «βρώμικο» block τότε το βρώμικο block πρέπει να γραφτεί πρώτα στη μνήμη πριν γίνει η ανάγνωση. Τι γίνεται όταν έχουμε ένα write miss (η θέση μνήμης προς εγγραφή δεν βρίσκεται στη cache μνήμη) ? Υπάρχουν δύο τεχνικές Write allocate (ή fetch-on-write). Στο πρωτόκολλο αυτό φέρνουμε το block από τη μνήμη στην cache και γράφουμε πάνω σε αυτό. Χρησιμοποιείται συνήθως μαζί με το πρωτόκολλο write-back. No-write allocate (ή write-around). Στο πρωτόκολλο αυτό δεν φέρνουμε το block στην cache και γράφουμε κατευθείαν πάνω στη κεντρική μνήμη. Χρησιμοποιείται μαζί με το πρωτόκολλο write-through.
5 Α. Βαφειάδης Παράδειγμα στην περίπτωση write back Παράδειγμα: Βρείτε τα miss και hit σε μια άδεια cache σε μια πλήρως συσχετική write back cache (Υποτίθεται ότι έχουμε μια άδεια cache) Write-Allocate Memory to cache No-Write-Allocate M. Memory only misshitmiss hit Write_mem(10) Read_mem(20)++ Write_mem(20) ++ Write_mem(10) ++
6 Α. Βαφειάδης Η cache του DEC Alpha (AXP 21064)
7 Α. Βαφειάδης Η cache του DEC Alpha (AXP 21064) Address length = (s + w) bits =34 bits M. Memory bytes = 2 s+w = 2 34 Block size = line size = 2 5 bytes = 32 bytes Number of memory blocks = 2 s+w / 2 w = 2 s = 2 29 Number of lines in cache m = 2 r = 2 8 =256 blocks Size of tag = s-r bits =21 bits Tag Line or index Offset 21 r = 8 w = 5 S
8 Α. Βαφειάδης Εκτίμηση της επίδοσης μνήμης cache Ορισμοί CPU execution cycles = Το πλήθος των κύκλων της CPU που εκτελούνται χωρίς καμία αναφορά σε μνήμη. CPU hit cycles = Το πλήθος των κύκλων της CPU που απαιτούν αναφορά στη μνήμη Cache Memory stall cycles = Το πλήθος των κύκλων της CPU κατά τους οποίους η CPU αναμένει να ολοκληρωθούν οι αναφορές στη κύρια μνήμη Οι παραπάνω ορισμοί αφορούν ένα πρόγραμμα
9 Α. Βαφειάδης CPU cycles = CPU hit cycles + CPU execution Cycles + + Memory stall cycles (1) Για λόγους όμως απλότητας οι CPU execution cycles προσμετρώνται στους CPU hit cycles οπότε ο παραπάνω τύπος γίνεται CPU cycles= CPU hit cycles + Memory stall cycles CPU time = CPU cycles x Clock time = (2) = (CPU hit cycles + Memory stall cycles ) x Clock time Εκτίμηση της επίδοσης μνήμης cache Τύποι Οι παραπάνω τύποι αφορούν ένα πρόγραμμα
10 Α. Βαφειάδης Miss rate = τη συχνότητα αποτυχίας ένα δεδομένο ή μια εντολή να βρίσκεται στην cache Miss penalty cycles = Οι κύκλοι που απαιτούνται για να ολοκληρωθεί μια αναφορά στη κεντρική μνήμη η οποία όμως συνεπάγεται και την μεταφορά ενός ενός ολόκληρου block από τη κυρία μνήμη στην cache Hit time = Ο μέσος χρόνος προσπέλασης της cache Miss penalty time = Ο μέσος χρόνος προσπέλασης της κυρίας μνήμης Εκτίμηση της επίδοσης μνήμης cache Ορισμοί
11 Α. Βαφειάδης Miss penalty time = Miss penalty cycles x Clock time (3) Average memory access time = hit time + Miss penalty time Memory stall cycles = Πλήθος αποτυχιών x κόστος αποτυχίας (4) Πλήθος των αποτυχιών = IC x (πλήθος αποτυχιών /εντολή ) (5) Miss rate = πλήθος αποτυχιών / πλήθος αναφορών σε μνήμη (6) Memory stall cycles = IC x Miss rate (7) x πλήθος αναφορών σε μνήμη/εντολή x κόστος αποτυχίας Εκτίμηση της επίδοσης μνήμης cache Τύποι
12 Α. Βαφειάδης Κόστος αποτυχίας (miss penalty) Κόστος αποτυχίας ενός word = κόστος αποστολής μιας διεύθυνσης ενός word στη μνήμη + κόστος ανάγνωσης/εγγραφής + κόστος αποστολής του word στη cache Κόστος αποτυχίας = Block size σε words * κόστος αποτυχίας ενός word (10) Ένα word = μια θέση μνήμης
13 Α. Βαφειάδης CPU time CPU time = CPU cycles x Clock time = = (CPU hit cycles + Memory stall cycles ) x Clock time CPU time = (CPU hit cycles + ΙC x miss rate x πλήθος αναφορών σε μνήμη/εντολή x κόστος αποτυχίας ) x Clock time
14 Α. Βαφειάδης Υπολογισμός του CPI CPI = CPU cycles/instruction count (IC) CPI = CPU hit cycles/IC + + πλήθος αναφορών σε μνήμη/εντολή x miss rate x κόστος αποτυχίας (12)
15 Α. Βαφειάδης Μέθοδοι βελτίωσης της απόδοσης της cache Μείωση του χρόνου προσπέλασης Αύξηση της συχνότητας επιτυχίας Μείωση του κόστους αποτυχίας
16 Α. Βαφειάδης Μείωση του χρόνου προσπέλασης Μικρές cache άμεση απεικόνιση Παράλληλη σύγκριση tag και μετάδοσης δεδομένων
17 Α. Βαφειάδης Αύξηση της συχνότητας επιτυχίας Μεγάλα block Αύξηση των blocks ανά τμήμα ( περίπτωση τμηματικά συσχετικής ) Μια cache μεγέθους Ν με απ’ ευθείας απεικόνιση (1 block/τμήμα, αριθμός τμημάτων = αριθμός blocks) έχει περίπου την ίδια συχνότητα αποτυχίας με μια cache μεγέθους Ν /2 με 2 blocks/τμήμα (αριθμός τμημάτων = αριθμός blocks/2). Μέγεθος cache Μέγεθος block 1Κ4Κ16Κ64Κ256Κ %8.6%3.9%2.0%1.1% %7.2%2.9%1.4%0.7% %7.0%2.6%1.1%0.5% %7.8%2.8%1.0%0.5% %9.5%3.3%1.2%0.5%
18 Α. Βαφειάδης Μείωση του κόστους αποτυχίας [Μέσος χρόνος προσπέλασης μνήμης] = = [Χρόνος προσπέλασης cache] 1 + [Συχνότητα αποτυχίας] 1 [Κόστος αποτυχίας] 1 [Κόστος αποτυχίας] 1 = =[Χρόνος προσπέλασης cache] 2 + [Συχνότητα αποτυχίας] 2 [Κόστος αποτυχίας] 2 Local miss rate = number of misses /total number of memory access in this cache (αναφέρεται τόσο στην L1 όσο και στην L2) Global miss rate = number of misses/total number of memory access generated by the CPU
19 Α. Βαφειάδης Pentium IV cache system
20 Α. Βαφειάδης Τρεις είναι καλύτερα από δύο