Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Κρυφές μνήμες Αρης Ευθυμίου
Το σημερινό μάθημα Κρυφές μνήμες (cache memory) Βασική οργάνωση, παράμετροι: γραμμές, συσχετιστικότητα, συνολική χωρητικότητα Επίδοση: hit/miss rate, average memory access Tme Είδη αστοχιών Πολλαπλά επίπεδα $ Εικονική μνήμη εισαγωγή βοηθήματα υλικού για γρήγορη μετάφραση διευθύνσεων 2
Σύστημα μνήμης Η μνήμη είναι σημαντικό κομμάτι ενός υπολογιστή Επηρεάζει κόστος, ταχύτητα, κατανάλωση ισχύος Διάφορες τεχνολογίες μνήμης Παλιά: π.χ. μαγνητική μνήμη πυρήνα Σκληροί δίσκοι (μαγνητικοί) Δίσκοι CD, DVD, Blue- Ray (οπτικοί) Δυναμική RAM (ηλεκτρονική) Στατική RAM (ηλεκτρονική) Μνήμη Flash (ηλεκτρονική) Μόνιμη ή προσωρινή (volatle); 3
Ταχύτητα μνήμης Καθυστέρηση (latency) για μία προσπέλαση σε πόση ώρα θα έρθει η τιμή μιας μεταβλητής λέγεται και χρόνος προσπέλασης Ρυθμός μεταφοράς (bandwidth) Αριθμός bytes ανα δευτερόλεπτο Προσπέλαση γίνεται πάνω από μία φορά ανά εντολή μία για την προσκόμιση της εντολής άλλη μία αν η εντολή είναι load, store Η καθυστέρηση δεν μπορεί να «κρύβεται» από μεγάλο ρυθμό μεταφοράς για πολύ εντολές: ποινή διακλάδωσης δεδομένα: εξαρτήσεις 4
Ιεραρχία μνήμης Σε όλες τις τεχνολογίες μνήμης, η χωρητικότητα (και το χαμηλό κόστος) «συναγωνίζονται» την ταχύτητα όσο πιο μεγάλη (και φτηνή ανά bit), τόσο πιο αργή Αλλά, ιδανικά, θέλουμε και τα δύο! Λύση: ιεραρχία μνήμης Γρήγορη μνήμη κοντά στον επεξεργαστή και μικρή γιατί το κόστος είναι μεγάλο Μεγάλη μνήμη πιο μακριά και αργή για να μην είναι απαγορευτικά ακριβή 5
Αρχή της τοπικότητας αναφορών Τα προγράμματα προσπελαύνουν μόνο μικρά τμήματα της μνήμης κάθε στιγμή Διευθύνσεις επαναλήψεις Εντολές Στοίβα κλήση υπορουτίνας παράμετροι επιστροφή υπορουτίνας Δεδομένα μεταβλητές Χρόνος 6
Είδη τοπικότητας αναφορών Στο χρόνο: μια διεύθυνση που προσπελαύνεται τη χρονική στιγμή t έχει μεγάλη πιθανότητα να ξαναπροσπελαστεί σε χρόνο t+δ temporal locality Στο χώρο: όταν μια διεύθυνση α προσπελαστεί τη χρονική στιγμή t, με μεγάλη πιθανότητα, μια διεύθυνση α±θ θα προσπελαστεί σε χρόνο t+δ spatal locality 7
Εκμετάλευση της ιδιότητας Οταν μια διεύθυνση μνήμης προσπελαύνεται Το υλικό τοποθετεί σε υψηλότερες (κοντά στον πυρήνα) θέσεις της ιεραρχίας μνήμης τα δεδομένα,εντολές που αντιστοιχούν στη διεύθυνση και άλλα/άλλες που αντιστοιχούν σε γειτονικές διευθύνσεις το σύνολο των δεδομένων που μεταφέρεται μεταξύ κρυφής και κύριας μνήμης λέγεται γραμμή κρυφής μνήμης (line ή block) Address Address Core Data CACHE Data Main Memory 8
Οι 4 ερωτήσεις Ερώτηση 0: πότε φέρνουμε μια γραμμή στη κρυφή μνήμη; Block placement: Πού θα τοποθετηθεί η γραμμή; Block identficaton: Πώς θα βρούμε μια γραμμή; Block replacement: Ποιά γραμμή θα αντικατασταθεί; Write strategy: Τί γίνεται με τις εγγραφές; 9
Τοποθέτηση γραμμών Block Number Memory 0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 2 2 2 2 2 2 2 2 2 2 0 1 2 3 4 5 6 7 8 9 3 3 0 1 Set Number 0 1 2 3 0 1 2 3 4 5 6 7 Cache τοποθέτηση γραµµής 12 Fully (2-way) Set Direct Associative Associative Mapped οπουδήποτε οπουδήποτε µόνο στη στο set 0 θέση 4 (12 mod 4) (12 mod 8) 10
Πώς βρίσκουμε μια γραμμή; Πολλές γραμμές της μνήμης μπορούν να τοποθετηθούν σε κάθε θέση της κρυφής μνήμης Για να τις ξεχωρίσουμε χρειάζεται μια ετικέτα διεύθυνσης (address tag) ώστε να μπορούμε να ελέγξουμε αν τα δεδομένα που ζητάει ο πυρήνας βρίσκονται στην κρυφή μνήμη (ευστοχία hit) ή όχι (αστοχία miss) αποθηκεύεται μαζί με τα δεδομένα Η διεύθυνση της πρώτης λέξης είναι η ετικέτα όλης της γραμμής Χρειάζεται 1 valid bit για να ξεχωρίζουν οι «άδειες» γραμμές Αν χρησιμοποιήσουμε μέρος της διεύθυνσης για να βρούμε τη θέση της γραμμής, τότε το tag είναι μικρότερο direct mapped, k- way associatve 11
Τμήματα διεύθυνσης Block address Tag Index Block offset Block offset (displacement) διεύθυνση byte μέσα στη γραμμή Index διεύθυνση του set Tag τμήμα της διεύθυνσης που δεν χρησιμοποιείται, άρα αποθηκεύεται και συγκρίνεται 12
Αντικατάσταση γραμμής Γενικά η κρυφή μνήμη είναι πάντα «γεμάτη» Κάθε αστοχία πρέπει να αντικαταστήσει μια υπάρχουσα γραμμή Ιδανικά θα πρέπει να αντικαταστήσουμε τη γραμμή που θα χρειαστούμε πιο μακριά στο μέλλον χρειάζεται πρόβλεψη η γραμμή ονομάζεται θύμα (victm) και η διαδικασία έξωση (evicton) Συνηθισμένες στρατηγικές αντικατάστασης (replacement): τυχαία (random) Least Recently Used (LRU): καλές επιδόσεις, δύσκολη υλοποίηση για μεγάλα set First in, first out (FIFO): μοιάζει με LRU, ευκολότερη υλοποίηση 13
Οργάνωση direct mapped Tag Index Block Offset byte offset t V Tag k Data Block b 2 k lines = t HIT Data Word 14
Εγγραφές Η προσπέλαση και σύγκριση των tags δεν μπορεί να γίνει παράλληλα με τη πρόσβαση στα δεδομένα Οι εγγραφές αφορούν μέρος της γραμμής Πολιτικές εγγραφής: Write- through εγγραφή και στη κρυφή μνήμη και στο επόμενο επίπεδο Write- back εγγραφή μόνο στη κρυφή μνήμη. Εγγραφές στο επόμενο επίπεδο μόνο όταν αντικατασταθεί η γραμμή 15
Write- back Μία αστοχία ανάγνωσης μπορεί να προκαλέσει μια εγγραφή σε κατώτερο επίπεδο Dirty- bit περιορίζει τις εγγραφές στο επόμενο επίπεδο μόνο στις απαραίτητες Δυσκολίες συνοχής μνήμης: διαφορετικές τιμές σε διαφορετικά επίπεδα μνήμης Λιγότερη «κίνηση» στην έξοδο της κρυφής μνήμης Write- buffer: (συνήθως για write- though) προσωρινή αποθήκευση για εγγραφές μέχρι να αποθηκευθούν στο επόμενο επίπεδο διαφορετικοί από store- buffer (μέσα στον πυρήνα) 16
Write allocaton Συχνά τα δεδομένα που γράφονται δεν χρειάζονται άμμεσα π.χ. αρχικοποίηση πινάκων Δύο επιλογές: Write- allocate η γραμμή τοποθετείται στη κρυφή μνήμη όπως στις αναγνώσεις χρήσιμο αν αργότερα γίνει και ανάγνωση no- write allocate η εγγραφή προσπερνάει τη κρυφή μνήμη 17
Περιγραφή κρυφής μνήμης Συνολική χωρητικότητα δεδομένων ή συνολικός αριθμός γραμμών, C δεν μετράμε τα tags στη χωρητικότητα Μέγεθος γραμμής (line/block size) L = 2 l, δύναμη του 2 Συσχετιστικότητα (associatvity), Α δεν είναι απαραίτητα δύναμη του 2 C/A γραμμές ανά bank, πρέπει να είναι δύναμη του 2 Διευθυνσιοδοτείται από το index Αν το A δεν είναι δύναμη του 2, ορίζουμε A τη μικρότερη δύναμη του 2 > Α Οι γραμμές ανά bank είναι C/A 18
Ξεχωριστές κρυφές μνήμες Οι κρυφές μνήμες μπορεί να είναι κοινές για εντολές και δεδομένα ή ξεχωριστές Κοινές κρυφές μνήμες αποτελούν δομικό κίνδυνο σε κάθε κύκλο προσκομίζεται 1 εντολή και πολλές φορές χρειάζεται και προσπέλαση δεδομένων Στο πρώτο επίπεδο κρυφή μνήμης είναι ξεχωριστές για εντολές και δεδομένα Το πλεονέκτημα των κοινών κρυφών μνημών είναι ότι μοιράζεται η χωρητικότητα δυναμικά 19
Μέτρα απόδοσης Hit rate: κλάσμα των προσπελάσεων που ευστοχούν στη κρυφή μνήμη Miss rate: 1 Hit rate Miss penalty: χρόνος τοποθέτησης μιας γραμμής από κατώτερο επίπεδο ιεραρχίας μνήμης στη κρυφή μνήμη Hit Tme: χρόνος προσπέλασης κρυφής μνήμης (περιλαμβάνει τη σύγκριση tag) 20
Απόδοση επεξεργαστή CPU Tme = IC CPI CC Το CPI, όπως το ξέραμε μέχρι τώρα περιλαμβάνει το hit Tme στη κρυφή μνήμη θεωρούσαμε ότι hit Tme = 1 Οι αστοχίες μνήμης προκαλούν αύξηση στο ιδανικό CPI CPU Tme = IC (CPI core + memory stall cycles) CC Memory stall cycles = Memory accesses Program = Instructions Program Misses Instruction Miss rate Miss penalty Miss penalty 21
Μέτρα απόδοσης (2) Ισοδύναμο μέτρο: misses/instructon Memory accesses Program Miss rate = Instructions Program Misses Instruction Misses Instruction = Miss rate Memory accesses Instruction 22
Παράδειγμα I- cache miss rate = 2% D- cache miss rate = 4% Miss penalty = 100 cycles Base CPI (ideal cache) = 2 Load & stores αποτελούν το 36% των εντολών Miss cycles ανά εντολή: miss rate miss penalty I- cache: 1 0.02 100 = 2 D- cache: 0.36 0.04 100 = 1.44 Πραγματικό CPI = 2 + 2 + 1.44 = 5.44 Ιδανικό CPI=2 άρα στη πραγματικότητα το σύστημα είναι 5.44/2 =2.72 φορές πιο αργό από το ιδανικό 23
Μέσος χρόνος προσπέλασης Περιλαμβάνει και το χρόνο ευστοχίας κατάλληλο μέτρο για όλο το σύστημα μνήμης Average Memory Access Time (AMAT) AMAT = Hit Tme + Miss rate Miss penalty %InstrucTons * (Hit Tme + Instr miss rate * Miss penalty) + %Data * (Hit Tme + Data miss rate * Miss penalty) Δεν είναι πάντα ακέραιος αριθμός κύκλων, γιατί είναι μέσος όρος 24
Απόδοση επεξεργαστή και ΑΜΑΤ Υπάρχουν και άλλοι λόγοι που προκαλούν memory stalls π.χ. ένα περιφερειακό προσπελαύνει τη μνήμη Εξαρτάται και από το είδος επεξεργαστή εκτέλεση εκτός σειράς κρύβει μέρος των memory stalls 25
Βελτιστοποίηση υποσυστ. μνήμης AMAT = Hit Tme + Miss rate * Miss penalty Μείωση του miss rate μεγαλύτερο μέγεθος γραμμής μεγαλύτερη χωρητικότητα κρυφής μνήμης μεγαλύτερη associatvity Μείωση του miss penalty πολλαπλά επίπεδα κρυφών μνημών προτεραιότητα στις αναγνώσεις Μείωση του hit Tme αποσύνδεση μετάφρασης διεύθυνσης από την προσπέλαση της κρυφής μνήμης 26
Είδη αστοχιών τα τρία C Compulsory (cold start) η πρώτη προσπέλαση σε μια γραμμή Capacity Δεν χωράει ολόκληρο το working set ενός προγράμματος Κάποιες γραμμές αντικαθίστανται και επαναπροσκομίζονται Conflict (collision) Για όλες τις οργανώσεις εκτός fully- associatve Αντικαταστάσεις εξαιτίας της μεθόδου τοποθέτησης: πολλές γραμμές αντιστοιχούν στο ίδιο set 27
Τα τρία C 28
Τα τρία C 29
Μεγάλες γραμμές Εκμετάλευση της spatal locality Μείωση των compulsory misses Αύξηση του Miss penalty περισσότερος χρόνος μεταφοράς: T mem = T access + L/w * T bus Αύξηση conflict misses περισσότερες γραμμές αντιστοιχούν στα, λιγότερα πλέον, set 30
Μεγάλες γραμμές 10% 4K Miss rate 5% 16K 64K 0% 256K 16 32 64 128 256 Block size 31
Μεγάλες γραμμές Δεν υπάρχει λόγος αύξησης μεγέθους γραμμής όταν αυξάνει το miss rate ή το ΑΜΑΤ Το βέλτιστο μέγεθος γραμμής είναι συχνά συνάρτηση της χωρητικότητας της κρυφής μνήμης, της καθυστέρησης και του ρυθμού μεταφοράς του υπόλοιπου συστήματος μνήμης Μεγάλη καθυστέρη και μεγάλος ρυθμός μεταφοράς ευνοούν μεγάλες γραμμές για μικρή αύξηση miss penalty η cache παίρνει πιο πολλά bytes 32
Μεγαλύτερη associatvity Rules of thumb: 8- way has as good a miss rate as fully associatve 2:1 cache rule of thumb direct mapped μεγέθους Ν έχει ίδιο miss rate με 2- way set- associatve μεγέθους Ν/2 Γενικά αυξάνοντας την associatvity αυξάνει ο κύκλος ρολογιού Σε ένα γρήγορο επεξεργαστή η παραπάνω πολυπλοκότητα μειώνει το ρυθμό ρολογιού αλλά το αυξημένο miss penalty (σε αριθμό κύκλων) ευνοεί το καλύτερο miss rate της μεγαλύτερης associatvity 33
Πολλαπλά επίπεδα cache Η τεχνολογία DRAM δεν βελτιώνει τη ταχύτητα προσπέλασης με τόσο γρήγορο ρυθμό όσο η τεχνολογία επεξεργαστών το miss penalty σε αριθμό κύκλων ρολογιού μεγαλώνει Πολλαπλά επίπεδα cache βελτιώνουν το miss penalty Level 2, level 3 κρυφές μνήμες τοποθετούνται στο ολοκληρωμένο του επεξεργαστή/πυρήνα AMAT = Hit Tme L1 + Miss rate L1 * Miss penalty L1 Miss penalty L1 = Hit Tme L2 + Miss rate L2 * Miss penalty L2 34
Global, local misses Πώς ορίζονται τα miss rate για κάθε επίπεδο? Local miss rate ο αριθμός αστοχιών μιας cache διαιρεμένος με τον αριθμό προσπελάσεων της ίδιας cache Ο προηγούμενος τύπος χρησιμοποιεί local miss rates Global miss rate - ο αριθμός αστοχιών μιας cache διαιρεμένος με τον αριθμό προσπελάσεων που προκαλεί ο επεξεργαστής Το local miss rate είναι σχετικά μικρό για το 2ο επίπεδο το 1 ο επίπεδο εκμεταλεύτηκε το μεγαλύτερο μέρος της τοπικότητας αναφορών μνήμης 35
Παράδειγμα Σε 1000 προσπελάσεις, 40 αστοχίες στο 1 ο επίπεδο, 20 στο 2 ο επίπεδο 1.5 προσπελάσεις μνήμης ανά εντολή Hit Tme L1 είναι 1 κύκλος Hit Tme L2 είναι 10 κύκλοι Miss penalty από L2 είναι 200 κύκλοι Υπολογίστε τα Miss rates και AMAT 36
Λύση Miss rate L1 (ίδιο για global, local) = 40/1000 = 0.04 (4%) Global miss rate L2 = 20/1000 = 2% Local miss rate L2 = 20/40 = 50% ΑΜΑΤ = HitL1 + MissL1 * (HitL2 + local Miss L2 * Penalty L2) = 1+0.04*(10+0.5*200)=5.4 κύκλοι 37
Πολλαπλά επίπεδα cache Miss rate 100% 90% 80% 70% 60% 50% 40% 30% 99% 99% 98% 96% 88% 67% 55% 51% Local miss rate Global miss rate Single cache miss rate 46% 39% 34% 20% 10% 0% 6% 5% 4% 4% 4% 3% 2% 2% 2% 1% 1% 4% 4% 3% 3% 4 8 16 32 64 128 256 512 1024 2048 4096 Cache size (KB) L1: 2 ξεχωριστές caches 64KB 38
Πολλαπλά επίπεδα cache Η ταχύτητα του 1 ου επιπέδου επηρεάζει το ρυθμό ρολογιού του επεξεργαστή Η ταχύτητα του 2 ου επιπέδου επηρεάζει το miss penalty του 1 ου επιπέδου Υπάρχει μεγαλύτερη ευελιξία επιλογής οργάνωσης στο 2 ο επίπεδο Μεγάλη σημασία έχει το κόστος και πόσο μειώνει το μέσο χρόνο προσπέλασης (ΑΜΑΤ) 39
Cache inclusion Πρέπει όλες οι γραμμές της L1 να βρίσκονται και στην L2; inclusion property Χρήσιμο σε πολυεπεξεργαστές: είναι εύκολο να ξέρει το κατώτερο επίπεδο κρυφής μνήμης αν υπάρχει αντίγραφο μιας γραμμής στην ιεραρχία μνήμης ενός πυρήνα αλλά ξοδεύουν χώρο στην L2, αυξάνοντας το miss rate Οταν εκδιώχνεται μια γραμμή από την L1, θα πρέπει να γράφεται στην L2, ενώ αλλιώς θα ήταν ήδη εκεί 40
Εικονική μνήμη Τεχνική που λύνει πολλά προβλήματα Code relocaton Προστασία διαφορετικών προγραμμάτων (πολυπρογραμματισμός) Δυναμική διάθεση επιπλέον μνήμης για προγράμματα... Στηρίζεται στη μετάφραση (εικονικών) διευθύνσεων που παράγει το πρόγραμμα σε φυσικές/πραγματικές διευθύνσεις 41
Εικονική μνήμη ως cache Η κύρια μνήμη (DRAM) μπορεί να θεωρηθεί ως «κρυφή μνήμη» της δευτερεύουσας μνήμης (δίσκος) ο χειρισμός γίνεται και με υλικό και με λογισμικό (Λ.Σ.) Τα προγράμματα μοιράζονται τη κύρια μνήμη κάθε διεργασία έχει ξεχωριστό ένα χώρο διευθύνσεων μνήμης, εικονική μνήμη (virtual memory) προστατεύεται από άλλες διεργασίες που τρέχουν ταυτόχρονα Το Λ.Σ. και ο επεξεργαστής μεταφράζουν τις εικονικές διευθύνσεις σε φυσικές (physical) μια «γραμμή» εικονικής μνήμης λέγεται σελίδα (page) αστοχία στη κύρια μνήμη λέγεται σφάλμα σελίδας (page fault) 42
Μετάφραση διευθύνσεων Σελίδες σταθερού μεγέθους (π.χ. 4ΚΒ) λιγότερα bits για αριθμό σελίδας (οικονομία στην αποθήκευση) εκμετάλευση του σχετικά μεγάλου ρυθμού μεταφοράς από το δίσκο σε σχέση με τον αργό χρόνο προσπέλασης Δεν χρειάζεται οι σελίδες να είναι σε συνεχόμενο χώρο στη (φυσική) μνήμη 43
Πίνακας (μετάφρασης) σελίδων Αποθηκεύει πληροφορίες για τη μετάφραση πίνακας καταχωρήσεων σελίδων (page table entry PTE), διευθυνσιοδοτημένoς με τον εικονικό αριθμό σελίδας Αν μια σελίδα είναι στην μνήμη η καταχώριση περιλαμβάνει τον αριθμό φυσικής σελίδας και διάφορα bit κατάστασης, χρήσιμα για αλγόριθμο αντικατάστασης, χειρισμό εγγραφών Αν η σελίδα δεν είναι στη μνήμη η καταχώριση δείχνει τη θέση της σελίδας στο δίσκο Ταυτόχρονα μπορεί να ελεγχθεί αν επιτρέπεται πρόσβαση στη σελίδα από τη διεργασία π.χ. πρόσβαση σε διεύθυνση που δεν έχει κατανεμηθεί στη διεργασία 44
Ξεχωριστοί πίνακες ανά διεργασία Ο χώρος που απαιτείται είναι μεγάλος μόνο η κύρια μνήμη μπορεί να αποθηκεύσει τον πίνακα σελίδων Οργάνωση σε 2 (ή περισσότερα) επίπεδα για οικονομία χώρου 45
Πίνακες στη μνήμη Κάθε προσπέλαση στην εικονική μνήμη από το πρόγραμμα στην πραγματικότητα προκαλεί 2 προσπελάσεις μνήμης 46
Γρήγορη μετάφραση Οι προσπελάσεις στο πίνακα σελίδων έχουν μεγάλη τοπικότητα αναφορών Μπορει να εκμεταλευτεί από μια κρυφή μνήμη για καταχωρήσεις πίνακα μετάφρασης (PTE) ευστοχία: άμεση μετάφραση σε ένα κύκλο (ή και μισό) αστοχία: page table walk από υλικό ή λογισμικό Ονομάζεται TranslaTon Look- aside Buffer (TLB) Περιέχει 16-512 PTEs, 0.5 1 cycle for hit, 10 100 cycles for miss, 0.01% 1% miss rate Πρόσφατοι επεξεργαστές έχουν 2 επίπεδα TLB ακριβώς όπως οι κρυφές μνήμες: μειώνουν τη ποινή αστοχίας 47
Μετάφραση διεύθυνσης 48