1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα Μνήμης – Απόδοση Cache Μέρος: Τέταρτο Καθηγητής: Α. Βαφειάδης 2007
2 Α. Βαφειάδης Αλγόριθμοι αντικατάστασης Άμεσης απεικόνισης: Δεν απαιτείται Πλήρως συσχετική και τμηματικά συσχετική: Τυχαία LRU ( block που έχει πολύ χρόνο να χρησιμοποιηθεί -Last Recently Used) FIFO ( Βlock που έχει τον περισσότερο χρόνο στην Cache)
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 μνήμη) ? Υπάρχουν δύο τεχνικές No write allocate : H εγγραφή γίνεται μόνο στην K.M Write allocate : Γίνεται εγγραφή τόσο στην cache όσο και στην Κ.Μ
5 Α. Βαφειάδης Παράδειγμα στην περίπτωση write back Παράδειγμα: Βρείτε τα miss και hit σε μια άδεια cache σε μια πλήρως συσχετική write back cache (Υποτίθεται ότι έχουμε μια άδεια cache) Write-AllocateNo-Write-Allocate misshitmiss hit Writemem(10) Readmem(20)++ Writemem(20) ++ Writemem(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 / s w = 2 s = 2 19 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 αναμένει να ολοκληρωθούν οι αναφορές στη κύρια μνήμη Οι παραπάνω ορισμοί αφορούν ένα πρόγραμμα
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 Α. Βαφειάδης Τεχνικές βελτίωσης της απόδοσης Ελάττωση του miss penalty Multilevel cache, victim cache k.a Ελάττωση του miss rate Μεγάλα block Μεγαλύτερες cache Μεγαλύτερη τμηματική συσχετικότητα (περισσότερα block/set) Ελάττωση του hit time Απλές και μικρές cache Ελάττωση του miss penalty και του miss rate με παραλληλισμό
16 Α. Βαφειάδης Πολλαπλά επίπεδα cache Aver. memory access time = Hit time L1 + + miss rate L1 * miss penalty L1 = = Hit time L1 + miss rate L1 *(Hit time L2 + miss rate L2 * miss penalty L2 ) 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 Global miss rate L1 = miss rate L1 Global miss rate L2 = miss rate L1 * miss rate L2
17 Α. Βαφειάδης Pentium IV cache system
18 Α. Βαφειάδης Τρεις είναι καλύτερα από δύο