ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Υποσύστημα μνήμης Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.
ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Κρυφή μνήμη, μέρος 2 Αρης Ευθυμίου πηγή διαφανειών: CS61C UCB
Το σημερινό μάθημα! Οργάνωση κρυφής μνήμης associajvity σχέση associajvity, αριθμού σετ, μεγέθους tag!!!! Αντικατάσταση γραμμών Χειρισμός εγγραφών Είδη αστοχιών Αξιολόγηση επιδόσεων κρυφών μνημών Επίδοση υπολογιστή με κρυφή μνήμη Μέσος χρόνος προσπέλασης! Πολλαπλά επίπεδα κρυφής μνήμης 2
Βασικές παράμετροι $! Μέγεθος γραμμής (Block / line size) Αριθμός bytes δεδομένων κάθε «θέσης» (γραμμής) της $! Αριθμός ways (associadvity) Αριθμός «θέσεων» σε κάθε σετ Direct- mapped => AssociaJvity = 1 Set- associajve => 1 < AssociaJvity < συνολικός αριθμός θέσεων $ Fully associajve => AssociaJvity = συνολικός αριθμός θέσεων $! Χωρητικότητα(bytes) = συνολικός αριθμ. γραμμών * μέγεθος γραμμής! συν. αριθμ. γραμμών = αριθμ. σετ * AssociaJvity 3
Οργάνωση set- associajve! Συχνά ονομάζονται Ν- way associajve N αριθμός θέσεων ενός σετ της κρυφής μνήμης Το Ν είναι η associadvity (συσχετιστικότητα) της κρυφής μνήμης 1 way! Συνολικός αριθμός των γραμμών της κρυφής μνήμης = αριθμός ways x αριθμός των σετ! μη μπερδεύετε ways με sets!! ο αριθμός των ways δεν είναι απαραίτητα δύναμη του 2 4
Τρόποι οργάνωσης $, 8 γραμμών! Στο παράδειγμα, 8- ways = fully associajve 5
AssociaJvity αριθμός σετ - tag! Για κρυφή μνήμη με σταθερό μέγεθος, διπλασιασμός στην associajvity διπλασιάζει τον αριθμό των γραμμών κάθε σετ (δλδ., τον αριθμό των ways) και διαιρεί τον αριθμό των σετ κατά 2 Μικραίνει το index κατά 1 bit και αυξάνει το tag κατά 1 bit Για σύγκριση με αποθηκευμένα for tag Tag επιλέγει το set Index Επιλέγει τη λέξη μέσα στη γραμμή Word offset Byte offset Αύξηση associajvity Μείωση associajvity Direct mapped (μόνο ένα way) Μικρότερα tags, μόνο ένας συγκριτής Fully associajve (μόνο ένα set) Το tag είναι όλα τα bits εκτός από το block and byte offset 6
Κόστος set- associajve $! Σύγκριση N- way set- associajve cache με direct mapped! Απαιτούνται Ν συγκριτές πρέπει τα Ν αποθηκευμένα tags να συγκριθούν με το αντίστοιχο τμήμα της διεύθυνσης! Καθυστέρηση πολυπλέκτης επιλογής γραμμής από τις Ν του σετ πιο πολύπλοκη δομή από πίνακες/μνήμες! Δεν μπορεί να υλοποιηθεί το εξής τέχνασμα της dm $: Τα δεδομένα είναι διαθέσιμα λίγο πρίν γίνει γνωστό αν έχουμε hit ή miss Μπορεί ο επεξεργαστής να τα χρησιμοποιήσει και αν τελικά έχουμε miss, να ακυρώσει την εντολή και να την «ξανατρέξει» αργότερα Αυτό δεν γίνεται με set- associajve: δεν γνωρίζουμε ποιο way έχει τα δεδομένα, πρίν γίνει η σύγκριση των tag 7
Αντικατάσταση γραμμών! Μετά από μία αστοχία, μια γραμμή τοποθετείται (refill) στην κρυφή μνήμη αλλά επειδή ο χώρος είναι περιορισμένος, αντικαθιστά μια άλλη γραμμή, που ονομάζεται θύμα (vicdm block)! Σε direct mapped $, δεν υπάρχει επιλογή! Σε N- way set- associajve, υπάρχουν Ν πιθανά θύματα ποιό επιλέγεται;! Ιδανικά το θύμα είναι η γραμμή που θα χρειαστεί αργότερα στο χρόνο ή που δεν χρειάζεται πλέον καθόλου ή μια γραμμή που είναι άκυρη (valid = 0)! Πρέπει να μαντέψουμε! 8
Αλγόριθμοι αντικατάστασης! Πρόβλεψη με οδηγό την προηγούμενη «συμπεριφορά»! Τυπικός αλγόριθμος: Least Recently Used (LRU) η γραμμή (του σετ) που προσπελάσθηκε παλιότερα, μάλλον δεν θα προσπελασθεί ξανά Πρέπει να κρατιέται πληροφορία κατάταξης των γραμμών κάθε σετ Γίνεται δύσκολο/ακριβό από 4- ways και πάνω! Πολλοί άλλοι αλγόριθμοι τυχαία επιλογή θύματος επιλογή με τη σειρά προσκόμισης (FIFO) ψεύτο- LRU, π.χ. not- most- recently- used 9
Εγγραφές δεδομένων! Μέχρι τώρα ασχοληθήκαμε μόνο με αναγνώσεις (loads)! Αν η διευθυνση στην οποία γίνεται μια εγγραφή είναι στην κρυφή μνήμη, η εγγραφή σταματάει εκεί ή συνεχίζει για να ενημερώσει και τη κύρια μνήμη;! Δύο επιλογές:! write- through γράφει και στις δύο! write- back γράφει στη μνήμη μόνο όταν χρειάζεται όταν η γραμμή εκδιωχθεί (evict) από την κρυφή μνήμη 10
Write through! Για να μην περιμένει ο επεξεργαστής την αργή κύρια 32-bit Address μνήμη σε κάθε εγγραφή,! προσθέτουμε Write- buffer κρατάει την πληροφορία και κάνει την εγγραφή ελευθερώνει τον επεξεργαστή να προχωρήσει την εκτέλεση μπορεί να έχει πολλές θέσεις! Αν η store αστοχήσει στη cache, πρέπει να γίνει αναζήτηση και στον write buffer 32-bit Data Cache 12 252 1022 131 2041 32-bit Address Write Buffer Addr Data 99 7 20 32-bit Data 11
write- back! Εγγραφές γίνονται όλες «μαζεμένα» στην κρυφή μνήμη! Κάθε γραμμή που εκδιώχνεται πρέπει να γραφτεί στη μνήμη ακόμη και αν δεν έχει γίνει εγγραφή σε αυτήν!! Λύση: dirty bit 1 bit ανά γραμμή Κανονικά είναι 0 Γίνεται 1 σε κάθε προσπέλαση εγγραφής Κατά την εκδίωξη μιας γραμμής, αν έχει dirty bit, γράφεται στη μνήμη, αλλιώς δεν χρείαζεται να γίνει τίποτα 12
write- back vs write- through Write- Through: Write- Back Απλούστερη λογική ελέγχου Αξιοπιστία: υπάρχει αντίγραφο και στη κύρια μνήμη και στη κρυφή Μεταβλητός χρονισμός (0,1,2 προσπελάσεις μνήμης για κάθε προσπέλαση στη κρυφή μνήμη) Μειώνει την «κίνηση» της κύριας μνήμης 13
Αστοχίες εγγραφών! Αν μια εγγραφή (εντολή store) αστοχίσει στην $! no write allocate: εγγραφή μόνο στην κύρια μνήμη! write allocate: προσκόμιση της γραμμής και μετά εγγραφή! Συνηθισμένοι συνδιασμοι: write through και no write allocate write back και write allocate! Ονομάζονται write policies 14
Μέτρα αξιολόγησης $! Hit rate: ποσοστό (κλάσμα) προσπελάσεων που ευστοχούν στη κρυφή μνήμη! Miss rate: 1 Hit rate! Miss penalty: Χρόνος τοποθέτησης μιας γραμμής από κατώτερο επίπεδο της ιεραρχίας μνήμης Jme! Hit Jme: χρόνος προσπέλασης της κρυφής μνήμης περιλαμβάνει το χρόνο σύγκρισης tag 15
Είδη αστοχιών $ - τρία C! Compulsory (Υποχρεωτικές, cold start): Πρώτη πρόσπέλαση σε μια γραμμή Πιθανές λύσεις: αύξηση μεγέθους γραμμής, pre- fetching! Capacity (Χωρητικότητας): Η cache δεν χωράει όλες τις γραμμές που χρειάζεται το πρόγραμμα (ονομάζεται working set) Πιθανή λύση: αύξηση χωρητικότητας! Conflict (Σύγκρουση, collision): Πολλές MulJple memory locajons mapped to the same cache locajon Πιθανές λύσεις:αύξηση χωρητικότητας, associajvity 16
Διαχωρισμός αστοχιών με προσομοίωση! Compulsory: αστοχίες σε fully associajve κρυφή μνήμη και με άπειρη χωρητικότητα! Capacity: Μεταβολή χωρητικότητας και μέτρηση αστοχιών 16 MB, 8 MB, 4 MB, 128 KB, 64 KB, 16 KB! Conflict: Μεταβολή από fully associajve σε n- way set associajve και μέτρηση αστοχιών Fully associajve, 16- way, 8- way, 4- way, 2- way, 1- way 17
Αποτελέσματα 3C, SPEC2000! Compulsory misses 0.006% 18
AssociaJvity και miss rate! Nόμος της φθίνουσας απόδοσης (law of diminishing returns) 20% βελτίωση από DM σε 2- way 19
Επίδοση υπολογιστή και $!! CPU Jme = IC CPI CC Το CPI, όπως το ξέραμε μέχρι τώρα περιλαμβάνει το hit Jme στη κρυφή μνήμη -!! θεωρούμε ότι hit Jme = 1 κύκλος Οι αστοχίες μνήμης προκαλούν αύξηση στο ιδανικό CPI CPU Jme = IC (CPIcore + memory stall cycles) CC Memory stall cycles Memory accesses = Miss rate Miss penalty Program Instructions Misses = Miss penalty Program Instruction 20
Παράδειγμα!!!!! Ι$ miss rate = 2% D$ miss rate = 4% CPI με ιδανική μνήμη = 2 Ποινή αστοχίας κρυφής μνήμης = 100 κύκλοι 36% των εντολών είναι load ή store 21
Απάντηση!!!!! InstrucJon miss cycles = I 2% 100 = 2.00 I Data miss cycles = I 36% 4% 100 = 1.44 I Συνολικά miss cycles = 3.44 I CPI με mem stalls = 2 + 3.44 = 5.44 «χαμένη» επίδοση 5.44/2 = 2.72 φορές πιο αργός από υπολογιστή με ιδανική μνήμη ποσοστό χρόνου για μνήμη = 3.44/5.44 = 63% Αν δεν είχαμε κρυφή μνήμη: Instr miss cycles = 100, data miss cycles = 36, CPI = 2+ 100+36 = 138 22
Μέσος χρόνος προσπέλασης! Average memory access Jme (AMAT)! Μέσος χρόνος προσπέλασης μνήμης περιλαμβάνει και χρόνο ευστοχίας και χρόνο αστοχίας! AMAT = Hit Jme + Miss rate Miss penalty! Καλύτερο μέτρο επίδοσης σε σχέση με hit/miss rate μέρος μόνο της εξίσωσης του AMAT 23
Μείωση ποινής αστοχίας! Διαφορά ταχύτητας επεξεργαστή κύριας μνήμης ήδη μεγάλη και μεγαλώνει περισσότερο με τον χρόνο 100s κύκλοι! 2ο επίπεδο κρυφής μνήμης (L2 $) για μείωση της ποινής αστοχίας αν οι αστοχίες της L1$ «απαντηθούν» από την L2, η ποινή αστοχίας θα είναι ο χρόνος προσπέλασης της L2! AMAT = Hit JmeL1 + Miss ratel1 * Miss penaltyl1! Miss penaltyl1 = Hit JmeL2 + Miss ratel2 * Miss penaltyl2 24
Global, local misses! Πώς ορίζονται τα miss rate για κάθε επίπεδο?! Local miss rate ο αριθμός αστοχιών μιας cache διαιρεμένος με τον αριθμό προσπελάσεων της ίδιας cache Ο προηγούμενος τύπος χρησιμοποιεί local miss rates! Global miss rate - ο αριθμός αστοχιών μιας cache διαιρεμένος με τον αριθμό προσπελάσεων που προκαλεί ο επεξεργαστής! Το local miss rate είναι σχετικά μεγάλο για το 2ο επίπεδο το 1ο επίπεδο εκμεταλεύτηκε το μεγαλύτερο μέρος της τοπικότητας αναφορών μνήμης 25
Πολλαπλά επίπεδα cache! Η ταχύτητα του 1ου επιπέδου επηρεάζει το ρυθμό ρολογιού του επεξεργαστή! Η ταχύτητα του 2ου επιπέδου επηρεάζει το miss penalty του 1ου επιπέδου! Υπάρχει μεγαλύτερη ευελιξία επιλογής οργάνωσης στο 2ο επίπεδο! Μεγάλη σημασία έχει το κόστος και πόσο μειώνει το μέσο χρόνο προσπέλασης (ΑΜΑΤ) 26
Μεγάλες γραμμές! Εκμετάλευση της spajal locality! Μείωση των compulsory misses! Αύξηση του Miss penalty περισσότερος χρόνος μεταφοράς! Αύξηση conflict misses περισσότερες γραμμές αντιστοιχούν στα, λιγότερα πλέον, set Miss rate 10% 4K 5% 16K 0% 64K 256K 16 32 64 Block size 128 256 27
Cache design space! Πολλαπλοι παράμετροι Cache Size Cache size Block size AssociaJvity Replacement policy Write- through vs. write- back Write allocajon! Η βέλτιστη επιλογή είναι ένας συμβιβασμός εξαρτάται από (μέτρο)προγράμμα αλλάζει με τεχνολογία, σχετικά κόστη υλοποιησης Associativity Block Size Bad Good Factor A Less Factor B More 28
Επόμενο μάθημα Εικονική μνήμη 29
Τέλος Ενότητας
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
Σημειώματα
Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. Έχουν προηγηθεί οι κάτωθι εκδόσεις: Έκδοση 1.0 διαθέσιμη εδώ. http://ecourse.uoi.gr/course/view.php?id=1307.
Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Ιωαννίνων, Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου. «Αρχιτεκτονική Υπολογιστών. Υποσύστημα μνήμης». Έκδοση: 1.0. Ιωάννινα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://ecourse.uoi.gr/course/view.php?id=1307.
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Παρόμοια Διανομή, Διεθνής Έκδοση 4.0 [1] ή μεταγενέστερη. [1] https://creativecommons.org/licenses/by-sa/4.0/.