Υ- 01 Αρχιτεκτονική Υπολογιστών Ιεραρχία μνήμης: προχωρημένα θέματα Αρης Ευθυμίου
Το σημερινό μάθημα Εικονική μνήμη και κρυφές μνήμες Physical/Virtual indexing Σκοπός: μείωση hit Ome Τεχνικές σχετικές με associaovity pseudo- associaovity, way- predicoon, vicom cache Αλγόριθμοι αντικατάστασης Lockup- free caches 2
Εικονική μνήμη και cache Απαραίτητη σε ένα σύγχρονο σύστημα Απαιτείται υποστήριξη από υλικό TLB για γρήγορη μετάφραση Πώς συνδιάζεται η μετάφραση με προσπέλαση κρυφής μνήμης; Physically Indexed, Physically Tagged πρώτα μετάφραση, μετά προσπέλαση κρυφής μνήμης Virtually Indexed, Virtually Tagged μετάφραση μόνο για αστοχίες κρυφής μνήμης Virtually Indexed, Physically Tagged ταυτόχρονη μετάφραση, προσπέλαση κρυφής μνήμης Physically Indexed, Virtually Tagged 3
Virtually Indexed, Virtually Tagged Μετάφραση μόνο για αστοχίες κρυφής μνήμης Το TLB δε θα είναι ενημερωμένο για εγγραφές, πληροφορία LRU Ομώνυμες διευθύνσεις (homonyms) Ιδιες εικονικές διευθύνσεις (διαφορετικών διεργασιών) αντιστοιχούν σε διαφορετικές φυσικές διευθύνσεις Λύση: προσθήκη του Process ID (PID) στην εικονική διεύθυνση, ή άδειασμα (flush) της κρυφής μνήμης σε κάθε αλλαγή διεργασίας (context switch) Συνώνυμες διευθύνσεις (synonyms) Διαφορετικές εικονικές διευθύνσεις (διαφορετικών διεργασιών) αντιστοιχούν στην ίδια φυσική διεύθυνση 4
Virtually Indexed, Physically Tagged TLB PA Processor Core VA VIPT Cache miss Main Memory cache line return hit Παράλληλη προσπέλαση TLB, cache η σύγκριση των tag της cache θα γίνει μετά τη μετάφραση διευθ. Δεν υπάρχουν ομώνυμες διευθύνσεις το TLB πρέπει να περιέχει PID ή να αδειάζει σε αλλαγή διεργασίας Συνώνυμες διευθύνσεις μπορούν να υπάρχουν 5
Αποφυγή συνωνύμων εικονική διεύθυνση VPN a Page Offset Cache Tag Set Index Line Offset Αν το a είναι 0 bits, ή το Set index βρίσκεται δεξιότερα του page offset, δεν μπορούν να υπάρχουν συνώνυμα τυχόν συνώνυμες γραμμές θα είναι στο ίδιο set Το μέγεθος page καθορίζει τη μέγιστη χωρητικότητα της κρυφής μνήμης (για direct mapped) ή τον μέγιστο αριθμό των set Max number of sets = page size / cache line size 6
Ανίχνευση συνωνύμων, a > 0 Μεταβολή του συστήματος μετάφρασης ώστε οι μοιραζόμενες σελίδες να έχουν ίδια τα a bits διευθύνσεων ονομάζεται page colouring Κάθε cache miss εξετάζει όλες τις πιθανές θέσεις/set για συνώνυμα π.χ. για a=2, τα συνώνυμα μπορούν να βρισκονται σε 4 μόνο set Ελεγχος συνωνύμων στη L2 cache L2 direct mapped, δυσκολότερο αν είναι associaove L2 physically indexed, physically tagged L2 inclusive 7
Συνώνυμα στο MIPS R10000 (L2) VPN 12 bit 10 bit 4- bit Αποθήκευση του VPN[1:0] (που αντιστοιχεί στο a) στα tags της L2, επιπλέον του κανονικού tag Εστω 2 συνώνυμες διευθύνσεις VA1, VA2 που διαφέρουν στο VPN[1:0], αλλά απεικονίζονται στην ίδια φυσική διεύθυνση PA Υποθ. VA1, υπάρχει ήδη στις L1, L2 Προσπέλαση VA2 αστοχεί στην L1 Στην L2 θα υπάρχει ήδη η γραμμή, με το επιπλέον PPN (VA1)[1:0], που θα πρέπει να αντικατασταθεί 8
Way- associaove caches Βελτιώνουν το miss rate, μειώνουν conflict misses law of diminishing returns Αυξάνουν το hit Ome και την κατανάλωση ενέργειας προσπέλαση πολλαπλών ways και επιλογή του way που ευστοχεί τα δεδομένα όλων των υπόλοιπων δεν χρησιμοποιούνται Ενδιαφέρουσες τεχνικές: Way- predicoon πρόβλεψη του way που θα ευστοχήσει Faking- associaovity Μικρές αλλαγές σε direct- mapped ώστε να έχει όφελος παρόμοιο με way associaove VicOm cache μειώνει conflict misses χωρίς associaovity 9
Column- associaove cache Βασική ιδέα: Κοινή direct- mapped cache Δεύτερη ευκαιρία αν υπάρχει αστοχία: re- hash τη διεύθυνση (αντιστοίχιση σε άλλη γραμμή της cache) Το hashing πρέπει να είναι απλό, π.χ. αντιστροφή του msb του index το tag πρέπει να επεκταθεί ώστε να περιέχει το επιπλέον bit Η διαπίστωση αστοχίας παίρνει λίγο παραπάνω χρόνο 10
Column- associaove cache Δύο είδη ευστοχίας (hit): με διαφορετικούς χρόνους Η MRU γραμμή θα πρέπει να έχει γρήγορο hit Ανταλλαγή των 2 γραμμών του ψεύτο- set Προσπέλαση: a,b,c,b,c,b,c, a, b έχουν ίδιο index, c διαφέρει στο msb του index από τις a,b Σε μία κανονική 2- way με LRU οι πρώτες, a,b,c είναι miss, μετά πάντα hit Στη Column AssociaOve Cache: a b a b a c a 11
Skewed associaove cache Η χρήση απλής αντιστοίχισης διεύθυνσης σε cache index προκαλεί συχνά συγκρούσεις ακόμη και σε set- associaove caches Μια λύση είναι η χρήση διαφορετικής αντιστοίχισης (hash) σε κάθε way Η χρήση αλγόριθμου αντικατάστασης LRU είναι δύσκολη 12
Way predicoon Πρόβλεψη του way που έχει τη γραμμή δεν γίνεται προσπέλαση στα άλλα ways Χρησιμοποιείται για περιορισμό κατανάλωσης ενέργειας Αν η πρόβλεψη αποτύχει: προσπέλαση σε άλλα ways Μεταβλητός χρόνος hit Διάφορες τεχνικές πρόβλεψης: Most recently used way (στον R10K μαζί με pseudo- associaove) Σε συνδιασμό με τον branch predictor στον Alpha 21264 Εχει μεγαλύτερα ποσοστά επιτυχούς πρόβλεψης σε I$ 13
VicOm cache Μικρός buffer με μεγάλη associaovity 4 64 γραμμές «Πίσω» από την κρυφή μνήμη Περιέχει γραμμές που πρόσφατα εκδιώχθηκαν (evicted) από τη L1 Κάθε miss της L1 εξετάζει τη vicom cache πρίν προσπελάσει το επόμενο επίπεδο ιεραρχίας αν hit, ξαναφέρνει τη γραμμή στη L1 Μειώνει τα conflict misses αυξάνει λίγο το miss penalty 14
Αλγόριθμοι αντικατάστασης Σε associaove caches υπάρχουν αρκετές επιλογές για κάθε αντικατάσταση η επιλεγόμενη γραμμή λέγεται θύμα (vicom) Ο πιο γνωστός αλγόριθμος αντικατάστασης είναι ο least recently used (LRU) στηρίζεται στην αρχή τοπικότητας αναφορών Ακριβή υλοποίηση σε υλικό για associaovity >= 8 για m- ways, υπάρχουν m! δυνατές κατατάξεις άρα απαιτούνται τουλάχιστον log 2 (m!) bits Προσεγγιστικοί αλγόριθμοι LRU Αλγόριθμος NMRU (not most recently used) 15
Αλγόριθμος LRU (matrix) Κάθε θέση γραμμής κρατάει πληροφορίες για το χρόνο τελευταίας προσπέλασης επιπλέον του tag, dirty, valid πρέπει να ανανεώνεται (ανάγνωση, εγγραφή) σε κάθε προσπέλαση χωρίς να επηρεάσει το κύκλο ρολογιού 0 1 2 3 0 1 2 3 16
Tree PLRU Η σειρά των προσπελάσεων καταγράφεται σε ένα δυαδικό δέντρο τα φύλλα αντιστοιχούν στα ways και δεν αποθηκεύουν τίποτα Χρειάζονται m- 1 bit για m ways (για m δύναμη του 2) Το θύμα επιλέγεται ακολουθώντας το δέντρο Αν ο κόμβος είναι 0, πήγαινε αριστερά, αν 1, δεξιά Κάθε προσπέλαση αλλάζει τις τιμές των κόμβων που διάσχισε έτσι ώστε να δείχνουν προς την αντίθετη μεριά από το φύλλο που αντιστοιχεί στο MRU 17
Tree PLRU operaoon Path shows the vicom 18
Tree PLRU operaoon Previous allocaoon changes tree nodes to point away from last way (0) Path for next vicom 19
Tree PLRU operaoon 20
Tree PLRU operaoon Now we have a hit in way 4. Not a new allocaoon as in previous steps 21
Tree PLRU operaoon Nodes 202, 205 were poinong away from way 4 already, so they don t change! 22
Αλγόριθμος NMRU 1 bit για κάθε way Σε κάθε hit, το bit παίρνει τη τιμή 1 Περιοδικά, όλα τα bits μηδενίζονται ή/και όταν όλα γίνουν 1 Για αντικατάσταση επιλέγεται η «πρώτη» way που έχει τιμή 0 η θέση που ξεκινάμε την αναζήτηση αλλάζει με round- robin 23
Sector cache Τα tags μιας κρυφής μνήμης καταλαμβάνουν σημαντικό ποσοστό του συνολικού χώρου της Χρησιμοποιώντας (πολύ) μεγάλες γραμμές, μειώνεται ο αριθμός των απαιτούμενων bit για tags αλλά αυξάνεται ο χρόνος μεταφοράς ολόκληρων γραμμών μεταξύ cache, κύριας μνήμης επιπλέον, σε πολυεπεξεργαστές, αυξάνεται η πιθανότητα false sharing Sector cache: χωρίζει γραμμές σε υπο- τμήματα (sector) και μεταφέρει μόνο sectors μεταξύ επιπέδων της ιεραρχίας μνήμης καθε sector χρειάζεται ξεχωριστό valid bit
Lockup- free (non- blocking) caches Επιτρέπουν προσπελάσεις μετά από 1 ή περισσότερες αστοχίες hit- under- miss hit under mulople miss, miss under miss Δεν έχουν νόημα χωρίς εκτέλεση εκτός σειράς ιεραρχία μνήμης που δεν επιτρέπει πολλαπλές προσπελάσεις σε εξέλιξη Εξετάζουμε μόνο αναγνώσεις Εγγραφές: βλ. write- buffer 25
Miss Status Holding Registers MSHR αποθηκεύει πληροφορία σχετική με την αστοχία: αν η καταχώρηση είναι έγγυρη διεύθυνση της γραμμής που αστόχησε με δυνατότητα παράλληλης (associaove) αναζήτησης για κάθε load/store σχετική με τη γραμμή: είδος, μέγεθος προσπέλασης block offset ο αριθμός φυσικού καταχωρητή που θα φορτώσει την τιμή ή store buffer 26
MSHR λειτουργία Κάθε νέο miss ελέγχει όλους τους MSHRs αν η γραμμή υπάρχει, προσθέτει πληροφορία αλλιώς, χρησιμοποίησε ελεύθερο MHSR αλλιώς, stall Κάθε cache refill ή μέρος του, ελέγχει όλους τους MSHRs αν η γραμμή υπάρχει, ψάχνει αν μια load/store περιμένει τη λέξη και τη γράφει στον αντίστοιχο καταχωρητή γράφει στην κρυφή μνήμη Οταν το refill ολοκληρωθεί ο αντίστοιχος MSHR ενημερώνεται ως μη έγγυρος 27
Non- uniform cache access Μεγάλες μνήμες δεν υλοποιούνται ως ένα ενιαίο ορθογώνιο από κελιά μνήμης οργανώνονται ως μικρότερα arrays (mats) κάποια bit της διεύθυνσης επιλέγουν ένα από τα arrays Σε αρκετά μεγάλες μνήμες (μερικά Mbytes) η διαφορά καθυστέρησης δεν είναι ομοιομορφη κοντινά arrays έχουν μικρότερη καθυστέρηση από μακρινά Οι NUCAs δεν κρύβουν τις διαφορές καθυστέρησης Θέματα τοποθέτησης δεδομένων στατική ή δυναμική