ΠΛΕ- 027 Μικροεπεξεργαστές 10ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Εικονική μνήμη, σχεδίαση αποδοτικής κρυφής μνήμης, προγραμματισμός για κρυφή μνήμη Αρης Ευθυμίου
Εικονική μνήμη ως cache Η κύρια μνήμη (DRAM) μπορεί να θεωρηθεί ως «κρυφή μνήμη» της δευτερεύουσας μνήμης (δίσκος) ο χειρισμός γίνεται και με υλικό και με λογισμικό (Λ.Σ.) Τα προγράμματα μοιράζονται τη κύρια μνήμη κάθε διεργασία έχει ξεχωριστό ένα χώρο διευθύνσεων μνήμης, εικονική μνήμη (virtual memory) προστατεύεται από άλλες διεργασίες που τρέχουν ταυτόχρονα Το Λ.Σ. και ο επεξεργαστής μεταφράζουν τις εικονικές διευθύνσεις σε φυσικές (physical) μια «γραμμή» εικονικής μνήμης λέγεται σελίδα (page) αστοχία στη κύρια μνήμη λέγεται σφάλμα σελίδας (page fault) ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 2
Μετάφραση διευθύνσεων Σελίδες σταθερού μεγέθους (π.χ. 4ΚΒ) λιγότερα bits για αριθμό σελίδας (οικονομία στην αποθήκευση) εκμετάλευση του σχετικά μεγάλου ρυθμού μεταφοράς από το δίσκο σε σχέση με τον αργό χρόνο προσπέλασης Δεν χρειάζεται οι σελίδες να είναι σε συνεχόμενο χώρο στη (φυσική) μνήμη ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 3
Πίνακας (μετάφρασης)σελίδων Αποθηκεύει πληροφορίες για τη μετάφραση πίνακας καταχωρήσεων σελίδων (page table entry PTE), διευθυνσιοδοτημένoς με τον εικονικό αριθμό σελίδας Αν μια σελίδα είναι στην μνήμη η καταχώριση περιλαμβάνει τον αριθμό φυσικής σελίδας και διάφορα bit κατάστασης, χρήσιμα για αλγόριθμο αντικατάστασης, χειρισμό εγγραφών Αν η σελίδα δεν είναι στη μνήμη η καταχώριση δείχνει τη θέση της σελίδας στο δίσκο Ταυτόχρονα μπορεί να ελεγχθεί αν επιτρέπεται πρόσβαση στη σελίδα από τη διεργασία π.χ. πρόσβαση σε διεύθυνση που δεν έχει κατανεμηθεί στη διεργασία ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 4
Ξεχωριστοί πίνακες ανά διεργασία User 1 VA1 Page Table OS pages User 2 User 3 VA1 VA1 Page Table Physical Memory Page Table free Ο χώρος που απαιτείται είναι μεγάλος μόνο η κύρια μνήμη μπορεί να αποθηκεύσει τον πίνακα σελίδων Οργάνωση σε 2 (ή περισσότερα) επίπεδα για οικονομία χώρου ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 5
Πίνακες στη μνήμη PT User 1 VA1 User 1 Virtual Address Space PT User 2 VA1 User 2 Virtual Address Space Κάθε προσπέλαση στην εικονική μνήμη από το πρόγραμμα στην πραγματικότητα προκαλεί 2 προσπελάσεις μνήμης ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 6
Γρήγορη μετάφραση Οι προσπελάσεις στο πίνακα σελίδων έχουν μεγάλη τοπικότητα αναφορών Μπορει να εκμεταλευτεί από μια κρυφή μνήμη για καταχωρήσεις πίνακα μετάφρασης (PTE) ευστοχία: άμεση μετάφραση σε ένα κύκλο (ή και μισό) αστοχία: page table walk από υλικό ή λογισμικό Ονομάζεται Transla{on 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 ακριβώς όπως οι κρυφές μνήμες: μειώνουν τη ποινή αστοχίας ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 7
Μετάφραση διεύθυνσης Restart instruction Virtual Address TLB Lookup hardware hardware or software software miss hit Page Table Walk Protection Check the page is memory memory denied permitted Page Fault (OS loads page) Update TLB Protection Fault SEGFAULT Physical Address (to cache) ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 8
Μετάφραση και διοχέτευση PC Inst TLB Inst. Cache D Decode E M + Data TLB Data Cache W Η μετάφραση διεύθυνσης προσθέτει χρόνο. Επιλογές: αύξηση περιόδου ρολογιού όχι! χωριστά στάδια διοχέτευσης για TLB και κρυφή μνήμη δεν είναι καταστροφικό αλλά αυξάνει χρόνο προσπέλασης κρυφές μνήμες με εικονικές διευθύνσεις παράλληλη προσπέλαση σε TLB και κρυφή μνήμη ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 9
Κρυφές μνήμες με εικονικές διευθύνσεις VA CPU Virtual Cache TLB PA Primary Memory Δεν χρειάζεται μετάφραση αν ευστοχεί στην κρυφή μνήμη Τα tags πρέπει να επεκτείνονται με αριθμό/κωδικό διεργασίας Πρόβλημα ψευδόνυμων (aliasing) αν δύο εικονικές σελίδες αντιστοιχούν στην ίδια πραγματική, δύο αντίγραφα της ίδιας γραμμής μπορεί να βρίσκονται στην κρυφή μνήμη ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 10
Παράλληλη προσπέλαση VA VPN L b Virtual Index PA TLB PPN k Page Offset Direct-map Cache 2 L blocks 2 b -byte block Tag hit? = Physical Tag Data Λέγεται και virtually indexed, physically tagged Το index της κρυφής μνήμης δεν χρειάζεται μετάφραση αν «πεφτει» στο τμήμα της διεύθυνσεις που αντιστοιχεί στο page offset Η σύγκριση των tags γίνεται μετά από και τις δύο προσπελάσεις ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 11
Ορια παράλληλης προσπέλασης VA VPN a L = k-b b 2 a Virtual Index TLB k Direct-map 2 L blocks Direct-map 2 L blocks PA PPN Page Offset Phy. Tag Tag = hit? 2 a = Αν L + b > k, μπορεί να έχουμε aliasing Τίθεται όριο στον αριθμό set της κρυφής μνήμης! L = k- b Data Η κρυφή μνήμη μπορεί να αυξηθεί, χρησιμοποιώντας περισσότερα ways ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 12
Αστοχίες κρυφής μνήμης Τα τρία C Υποχρωτικές Compulsory (cold) Λόγω πρώτης προσπέλασης σε μια γραμμή Συμβαίνουν ακόμα και σε κρυφές μνήμες άπειρης χωρητικότητας Χωρητικότητας Capacity Λόγω πεπερασμένου μεγέθους κρυφής μνήμης Μια γραμμή που αντικαταστάθηκε, ξαναπροσπελαύνεται Συμβαίνουν ακόμα και με τέλειο αλγόριθμο αντικατάστασης Σύγκρουσης Conflict (collision) Λογω ανταγωνισμού για μια θέση σε ένα set Συμβαίνουν σε όλα τα είδη εκτός από τις fully associa{ve ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 13
Παράμετροι κρυφής μνήμης Μέγεθος (χωρητικότητα) μειώνει αστοχίες χωρητικότητας και σύγκρουσης αυξάνει χρόνο ευστοχίας Associa{vity μειώνει αστοχίες σύγκρουσης αυξάνει (λίγο) χρόνο ευστοχίας Μέγεθος γραμμής μειώνει υποχρεωτικές αστοχίες αυξάνει αστοχίες σύγκρουσης και ποινή αστοχίας ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 14
Ρυθμός αστοχίας Από μετροπρόγραμμα SPEC CPU2000 Υπενθύμιση: αυτό που τελικά μετράει είναι ο μέσος χρόνος προσπέλασης όχι μόνο ο ρυθμός αστοχίας ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 15
Κρυφές μνήμες και προγραμματισμός Συχνά τα προγράμματα χρησιμοποιούν μεγάλους πίνακες Η ταχύτητα εξαρτάται από τη ταχύτητα του συστήματος μνήμης (το AMAT) Στόχος: μείωση των αστοχιών της κρυφής μνήμης αλλάζοντας τη σειρά προσπελάσεων μνήμης η σειρά μπορεί να αλλάξει αρκεί το αποτέλεσμα να είναι σωστό! Μέθοδος cache blocking «σμίκρυνση» του προβλήματος ώστε να χωράει στη κρυφή μνήμη και εκτέλεση περισσότερων επαναλλήψεων ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 16
Παράδειγμα πολ/σμός πινάκων * = c ij a i* b *j ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 17
Απλή υλοποίηση for (i=0;i<n;i++) for (j=0;j<n;j++) for (k=0;k<n;k++) c[i][j] += a[i][k] * b[k][j]; ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 18
Πίνακες στη μνήμη Ο πίνακας είναι 2 διαστάσεων αλλά στη μνήμη υπάρχει μόνο 1 διάσταση column major A(i,j) at A+i+j*n row major A(i,j) at A+i*n+j Column major πίνακας Column major Row major 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 4 8 12 16 1 5 9 13 17 2 6 10 14 18 3 7 11 15 19 γραμμές cache Σειρά πίνακα περιέχεται στις κόκκινες γραμμές ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 19
Γραμμική άλγεβρα Μπορούμε να σπάσουμε τον πίνακα σε μικρότερους ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 20
Πολλαπλασιασμός σε block C 11 C 12 C 13 C 14 A 11 A 12 A 13 A 14 B 11 B 12 B 13 B 14 C 21 C 22 C 23 C 24 A 21 A 22 A 23 A 24 B 21 B 22 B 23 B 24 C 31 C 32 C 43 C 34 A 31 A 32 A 33 A 34 B 32 B 32 B 33 B 34 C 41 C 42 C 43 C 44 A 41 A 42 A 43 A 144 B 41 B 42 B 43 B 44 C 22 = A 21 B 12 + A 22 B 22 + A 23 B 32 + A 24 B 42 = k A 2k *B k2 κάθε πολλαπλασιασμός γίνεται σε μικρούς πίνακες με μέγεθος κατάλληλο ώστε να χωράνε στη κρυφή μνήμη N = 4 *r ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 21
Υλοποίηση for(jj=0; jj < N; jj=jj+b) for(kk=0; kk < N; kk=kk+b) for(i=0; i < N; i++) for(j=jj; j < min(jj+b,n); j++) { r = 0; for(k=kk; k < min(kk+b,n); k++) r = r + y[i][k] * z[k][j]; x[i][j] = x[i][j] + r; } ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 22
Προτεραιότητα σε αναγνώσεις Μια εγγραφή σπάνια καθυστερεί τις επόμενες εντολές του προγράμματος Αντίθετα μια ανάγνωση έχει εξαρτημενες εντολές που ακολουθούν «Καθυστέρηση εγγραφών» με write buffer Π.χ. κατά την αντικατάσταση μιας γραμμής, αυτή μεταφέρεται στο write buffer ώστε η (ανάγνωση) που την προκάλεσε να γίνει πρώτη Προσοχή σε αναγνώσεις αμέσως μετά από εγγραφές! ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 23
Πρόβλεψη κατεύθυνσης Τεχνική για μείωση χρόνου επιτυχίας και μείωση ενέργειας Σε μια κρυφή μνήμη με πολλαπλές κατευθύνσεις (ways), τυπικά διαβάζεται όλο το set και ελέγχονται όλα τα tags μόνο μία γραμμή στο set μπορεί να είναι αυτή που χρειαζόμαστε σημαντική μείωση σε κατανάλωση ενέργειας Κρατάμε πληροφορία για να κάνουμε τη πρόβλεψη Αν γίνει λάθος πρόβλεψη, γίνεται έλεγχος στις άλλες κατευθύνσεις μεταβλητός χρόνος ευστοχίας μπορεί να αυξήσει την ποινή αστοχίας ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 24
Non- blocking κρυφές μνήμες Οταν εξυπηρετούν μια αστοχία, επιτρέπουν άλλες προσπελάσεις εύστοχες hit under miss άστοχες (μέχρι ένα όριο) miss under miss Αύξηση ρυθμού εργασίας κρυφής μνήμης Το AMAT δεν είναι καλό μέτρο απόδοσης σε τέτοιες κρυφές μνήμες επικάλυψη χρόνου αστοχίας ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 25