200 likes | 309 Views
Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης. Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα Μνήμης – Απόδοση Cache Μέρος: Τέταρτο Καθηγητής: Α. Βαφειάδης 200 8. Αλγόριθμοι αντικατάστασης. Άμεσης απεικόνισης: Δεν απαιτείται
E N D
Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα Μνήμης – Απόδοση Cache Μέρος: Τέταρτο Καθηγητής: Α. Βαφειάδης 2008
Αλγόριθμοι αντικατάστασης • Άμεσης απεικόνισης: Δεν απαιτείται • Πλήρως συσχετική και τμηματικά συσχετική: • Τυχαία • LRU (block που έχει πολύ χρόνο να χρησιμοποιηθεί -Last Recently Used) • FIFO ( Βlock που έχει τον περισσότερο χρόνο στην Cache)
Πολιτική εγγραφής • Write through : Ταυτόχρονη εγγραφή στη μνήμη και στη cache. • Εύκολη υλοποίηση • Χρονική καθυστέρηση εξαιτίας της παράλληλης εγγραφής στη Κ.Μ • Συμβατότητα μεταξύ Κ.Μ και cache • Write back: Μόνο στην cache με την παράλληλη ενημέρωση του dirty-bit (=1). Η ενημέρωση της Κ.Μ γίνεται μόνο όταν ένα block πρέπει να αντικατασταθεί από την cache. • Υλοποίηση με μεγάλο κόστος • Με μικρότερες χρονικές καθυστερήσεις(αν στο ίδιο block γίνουν τρεις αλλαγές έχουμε μόνο μια εγγραφή στην Κ.Μέναντι τριών στην περίπτωση του Write through. • Ασυμβατότητα μεταξύ Κ.Μ και cache (coherent problem)
Τεχνικές στην περίπτωση 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.
Παράδειγμα στην περίπτωση write back Παράδειγμα:Βρείτε τα miss και hit σε μια άδεια cache σε μια πλήρως συσχετική write back cache (Υποτίθεται ότι έχουμε μια άδεια cache)
Η cache του DEC Alpha (AXP 21064) Address length = (s + w) bits =34 bits M. Memory bytes = 2 s+w = 234 Block size = line size = 2 5 bytes = 32bytes Number of memory blocks = 2 s+w / 2w = 2 s = 2 29 Number of lines in cache m = 2r = 2 8 =256 blocks Size of tag = s-r bits =21 bits 21 r = 8 w = 5 Lineor index Tag Offset S
Εκτίμηση της επίδοσης μνήμης cacheΟρισμοί CPU execution cycles = Το πλήθος των κύκλων της CPU που εκτελούνται χωρίς καμία αναφορά σε μνήμη. CPU hit cycles = Το πλήθος των κύκλων της CPU που απαιτούν αναφορά στη μνήμη Cache Memory stall cycles = Το πλήθος των κύκλων της CPU κατά τους οποίους η CPU αναμένει να ολοκληρωθούν οι αναφορές στη κύρια μνήμη Οι παραπάνω ορισμοί αφορούν ένα πρόγραμμα
Εκτίμηση της επίδοσης μνήμης cacheΤύποι 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Ορισμοί Miss rate = τη συχνότητα αποτυχίας ένα δεδομένο ή μια εντολή να βρίσκεται στην cache Miss penalty cycles = Οι κύκλοι που απαιτούνται για να ολοκληρωθεί μια αναφορά στη κεντρική μνήμη η οποία όμως συνεπάγεται και την μεταφορά ενός ενός ολόκληρου block από τη κυρία μνήμη στην cache Hit time = Ο μέσος χρόνος προσπέλασης της cache Miss penalty time = Ο μέσος χρόνος προσπέλασης της κυρίας μνήμης
Εκτίμηση της επίδοσης μνήμης cacheΤύποι Miss penalty time = Miss penalty cycles x Clock time (3) Average memory access time = hit time + Miss penalty time Memory stall cycles = Πλήθος αποτυχιών x κόστος αποτυχίας (4) Πλήθος των αποτυχιών = ICx (πλήθος αποτυχιών /εντολή ) (5) Miss rate = πλήθος αποτυχιών / πλήθος αναφορών σε μνήμη (6) Memory stall cycles = ICx Miss rate (7) x πλήθος αναφορών σε μνήμη/εντολή x κόστος αποτυχίας
Κόστος αποτυχίας (miss penalty) Κόστος αποτυχίαςενός word = κόστος αποστολής μιας διεύθυνσης ενός word στη μνήμη + κόστος ανάγνωσης/εγγραφής + κόστος αποστολής του word στη cache Κόστος αποτυχίας = Block size σε words * κόστος αποτυχίας ενός word (10) Ένα word = μια θέση μνήμης
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
Υπολογισμός του CPI CPI = CPU cycles/instruction count (IC) CPI = CPU hit cycles/IC+ + πλήθος αναφορών σε μνήμη/εντολή xmiss rate x κόστος αποτυχίας(12)
Μέθοδοι βελτίωσης της απόδοσης της cache • Μείωση του χρόνου προσπέλασης • Αύξηση της συχνότητας επιτυχίας • Μείωση του κόστους αποτυχίας
Μείωση του χρόνου προσπέλασης Μικρές cache άμεση απεικόνιση Παράλληλη σύγκριση tag και μετάδοσης δεδομένων
Αύξηση της συχνότητας επιτυχίας Μεγάλα block Αύξηση των blocks ανά τμήμα (περίπτωση τμηματικά συσχετικής) Μια cache μεγέθους Νμε απ’ ευθείας απεικόνιση (1 block/τμήμα, αριθμός τμημάτων = αριθμός blocks) έχει περίπου την ίδια συχνότητα αποτυχίας με μια cache μεγέθους Ν/2 με 2 blocks/τμήμα (αριθμός τμημάτων = αριθμός blocks/2).
Μείωση του κόστους αποτυχίας [Μέσος χρόνος προσπέλασης μνήμης] = = [Χρόνος προσπέλασης 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