Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2011-12 Εικονική (και ο ρόλος της στην ιεραρχία μνήμης) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης
Ιεραρχία η νέα τάση: [2011] και το σύστημα γραφικών μέσα στον επεξεργαστή! οθόνη διασυνδετικός δίαυλος CPU core L1 L2... CPU core L1 L2 > 90GB/s κρυφή μνήμη (3 ου επιπέδου, L3) Δευτερεύουσα μνήμη : Το τελευταίο επίπεδο στην ιεραρχία εντός του υπολογιστικού συστήματος σύστημα γραφικών PCIe (x16) έως 8GB/s USB έως 5Gbit/s north bridge south bridge έως 500ΜB/s M-bus (mem bus) έως 21 GB/s (dual-channel) SATA 600ΜB/s DRAM δίσκοι δευτερεύουσα μνήμη οι ρυθμοί μεταφοράς που δίνονται είναι οι θεωρητικά μέγιστοι! Αρχιτεκτονική Υπολογιστών Εικονική 2
Επεκτείνοντας την Ιεραρχία Εννοιολογικά: Κάθε υψηλότερο επίπεδο δρα ως κρυφή μνήμη για το αμέσως χαμηλότερο Η κύρια μνήμη λειτουργεί ως κρυφή μνήμη των μαγνητικών δίσκων Τα περιεχόμενα στην κύρια μνήμη είναι υποσύνολο εκείνων στους δίσκους του συστήματος CPU Επέκταση ιεραρχίας εκτός του συστήματος: δικτυακές θέσεις αποθήκευσης 0,5-5ns $4.000-$10.000/GB 50-70ns $100-$200/GB 5.000.000-20.000.000 ns $0,5-$2/GB Κρυφή μνήμη (SRAM) Κύρια μνήμη (DRAM) Μαγνητικοί δίσκοι Αρχιτεκτονική Υπολογιστών Εικονική 3
Εικονική μνήμη (virtual memory) Το πρώτο σύστημα εικονικής μνήμης παρουσιάστηκε το 1962 (Atlas computer) Για ποιον λόγο εμφανίστηκε; Στους πρώτους υπολογιστές το μέγεθος της κύριας μνήμης ήταν περιορισμένο Ακόμα και στην περίπτωση του μονοπρογραμματισμού η κύρια μνήμη ήταν ανεπαρκής Εμφάνιση ΛΣ με υποστήριξη πολυπρογραμματισμού: αδυναμία ταυτόχρονης διατήρησης πολλών προγραμμάτων στην κύρια μνήμη Η λύση: εικονική μνήμη Μέρος των δεδομένων βρίσκεται στους δίσκους του συστήματος Μεταφορά στην κύρια μνήμη όταν χρειαστεί Πιθανότατα αντικαθιστώντας άλλα τμήματα δεδομένων Τα τελευταία μεταφέρονται πίσω στους δίσκους Αρχιτεκτονική Υπολογιστών Εικονική 4
Πριν την εικονική μνήμη: overlays Κύρια μνήμη main( ) { δίσκος swap-in(d) call D1 Α Β Η τεχνική των overlays απαιτούσε από τον προγραμματιστή να χειρίζεται τις λεπτομέρειες (π.χ διευθύνσεις!) φόρτωσης και κλήσης των υποπρογραμμάτων! swap-in(b) Call B2 Καταλληλότερο για στατικά δεδομένα υποπρογράμματα C D Αρχιτεκτονική Υπολογιστών Εικονική 5
Πριν την εικονική μνήμη: overlays Κύρια μνήμη main( ) { δίσκος swap-in(d) call D1 Α Β Η τεχνική των overlays απαιτούσε από τον προγραμματιστή να χειρίζεται τις λεπτομέρειες (π.χ διευθύνσεις!) φόρτωσης και κλήσης των υποπρογραμμάτων! swap-in(b) Call B2 D1( ) { } Καταλληλότερο για στατικά δεδομένα υποπρογράμματα C D Αρχιτεκτονική Υπολογιστών Εικονική 6
Πριν την εικονική μνήμη: overlays Κύρια μνήμη main( ) { δίσκος swap-in(d) call D1 Α Β Η τεχνική των overlays απαιτούσε από τον προγραμματιστή να χειρίζεται τις λεπτομέρειες (π.χ διευθύνσεις!) φόρτωσης και κλήσης των υποπρογραμμάτων! swap-in(b) Call B2 D1( B2( ) { } Καταλληλότερο για στατικά δεδομένα υποπρογράμματα C D Αρχιτεκτονική Υπολογιστών Εικονική 7
Χώρος διευθύνσεων προγράμματος Ποιες οι διευθύνσεις που δημιουργούσε ο μεταγλωττιστής; Τι συνέβαινε αν το πρόγραμμα δεν φορτωνόταν πάντοτε στον ίδιο χώρο μνήμης; Address Space Εκτελούμενο πρόγραμμα στη μνήμη: Διευθύνσεις κώδικα Εντολές διακλάδωσης Διευθύνσεις δεδομένων Εντολές load-store Πριν την εικονική μνήμη: Φυσικές διευθύνσεις Άμεση αντιστοιχία με διευθύνσεις κύριας μνήμης Κύρια μνήμη... call 0x12F0. 0x12F0: load R5, 0x8008.... 0x8008: 0x45, 0x34, 0xF3 Αρχιτεκτονική Υπολογιστών Εικονική 8
Πολυπρογραμματισμός πριν την εικονική μνήμη ΚΜΕ load R5, (0x8008) read mem[0x8008] κύρια μνήμη Χρήση καταχωρητών βάσης (χωρίς άλλη υποστήριξη) σε χαμηλού κόστους επεξεργαστές (π.χ. Intel 8086). Διευκόλυνση τοποθέτησης προγραμμάτων οπουδήποτε στη μνήμη. ΚΜΕ load R5, (0x8008) DS + 0x1FF0 read mem[0x9ff8] καταχωρητής βάσης τμήματος δεδομένων (data segment) κύρια μνήμη Καταχωρητές βάσης για κώδικα και δεδομένα Αλλαγή τιμής καταχωρητών βάσης ανά πρόγραμμα Αρχιτεκτονική Υπολογιστών Εικονική 9
Μεταβαίνοντας σε εικονικές διευθύνσεις Το προηγούμενο σχήμα Εισήγαγε την αποσύνδεση των λογικών διευθύνσεων των προγραμμάτων από τις φυσικές διευθύνσεις κύριας μνήμης Με απλή αντιστοιχία: φυσική διεύθυνση = λογική διεύθυνση + καταχωρητής βάσης Απαιτείται υποστήριξη από το υλικό (ΚΜΕ) Το πρόγραμμα μπορεί να φορτωθεί σε οποιαδήποτε θέση μνήμης (relocation) Δεν περιέχει αναφορές σε φυσικές διευθύνσεις Εισάγεται η έννοια των ξεχωριστών χώρων διευθύνσεων (κώδικα, δεδομένων...) ανά πρόγραμμα χωρίς περαιτέρω υποστήριξη όμως! Αρχιτεκτονική Υπολογιστών Εικονική 10
Εικονικές Διευθύνσεις ΚΜΕ load R5, 0x8008 Ο κύριος ρόλος της εικονικής μνήμης στα σημερινά υπολογιστικά συστήματα, με την άφθονη κύρια μνήμη, είναι η υποστήριξη και προστασία των εικονικών χώρων διευθύνσεων ανά πρόγραμμα μετάφραση read mem[0xc3e8] Μηχανισμός μετάφρασης εικονικών διευθύνσεων σε φυσικές διευθύνσεις κύρια μνήμη Μετάφραση εικονικών διευθύνσεων προγραμμάτων Προστασία χώρων διευθύνσεων Προνόμια προσπέλασης μνήμης Απαιτείται συνδυασμένη υποστήριξη από ΚΜΕ, κρυφή μνήμη και λειτουργικό σύστημα Αρχιτεκτονική Υπολογιστών Εικονική 11
Η εικονική μνήμη (ξανά) Η διαχείριση της εικονικής μνήμης έχει ομοιότητες με τη διαχείριση κρυφής-κύριας μνήμης. Τα δύο επίπεδα εδώ όμως (μνήμη-δίσκοι) έχουν σημαντικές διαφορές στα χαρακτηριστικά τους! Ποιος ο ρόλος της; 1. Η χρήση εικονικής μνήμης, πέρα από όση είναι πραγματικά διαθέσιμη 2. Η αντιστοίχιση εικονικών διευθύνσεων σε φυσικές και η διαχείριση των προνομίων προσπέλασης Σημαντικότερο σήμερα! Ποιος τη διαχειρίζεται; Διαχείριση από το λειτουργικό σύστημα Υποστήριξη από το υλικό (ΚΜΕ/κρυφή μνήμη) Πώς υλοποιείται; Μετακίνηση τμημάτων μνήμης από/προς τους δίσκους Εκμετάλλευση αρχής τοπικότητας Μερικά μέρη μόνο των προγραμμάτων είναι ενεργά κάθε στιγμή Αρχιτεκτονική Υπολογιστών Εικονική 12
Βασικό σχήμα Εικονικής σελίδα Χώρος διευθύνσεων προγράμματος Α Β Κύρια μνήμη D Β πλαίσιο C D Α Σελιδοποίηση (paging) paging): Το μέγεθος των σελίδων καθορίζεται από τους μηχανισμούς του υλικού. Συνήθη μεγέθη 4ΚΒ έως 16ΚΒ εικονικές διευθύνσεις Χώρος διευθύνσεων προγράμματος Σελίδες (pages)( Φυσική μνήμη Πλαίσια (page( frames) Ίδιο μέγεθος με σελίδες φυσικές διευθύνσεις C δίσκος Αρχιτεκτονική Υπολογιστών Εικονική 13
Σελίδες και εικονικές διευθύνσεις Ο επεξεργαστής παράγει εικονική διεύθυνση Ν-1 αριθμός σελίδας Μ (Μ-1) μετατόπιση (offset) (μέσα στη σελίδα) 0 μετάφραση ως έχει Η μετάφραση γίνεται στον επεξεργαστή, άρα εκεί (δηλ. στο υλικό) καθορίζεται το μέγεθος της σελίδας Κ-1 αριθμός φυσικής σελίδας (Μ-1) Στη μνήμη στέλνεται φυσική διεύθυνση μετατόπιση (offset) Ο επεξεργαστής μπορεί να παράγει έως και 2 Ν εικονικές διευθύνσεις Η φυσική μνήμη μπορεί να έχει έως 2 Κ διευθύνσεις Το μέγεθος σελίδας είναι 2 Μ bytes Μ 0 Αρχιτεκτονική Υπολογιστών Εικονική 14
Σελίδες και Τμήματα Σελίδες (pages)( Σταθερό μέγεθος (4KB-16KB) Μία λέξη εικονικής διεύθυνσης (page+offset) Ευκολία τοποθέτησης και αντικατάστασης σελίδων στην κύρια μνήμη Βέλτιστο μέγεθος για μεταφορά από-προς δίσκο Ενδεχομένως μέρος σελίδας μένει αχρησιμοποίητο Τμήματα (segments)( Μεταβλητό μέγεθος (από 1 byte(!) έως 2 32 bytes) Δύο λέξεις ανά διεύθυνση (segment, offset) Αναγκαίος ο έλεγχος ορίων ταιριάζει καλύτερα στα χαρακτηριστικά των εφαρμογών Σε ορισμένους επεξεργαστές χρησιμοποιείται ως πρώτο επίπεδο μετάφρασης (πριν τη μετάφραση των σελίδων) Αρχιτεκτονική Υπολογιστών Εικονική 15
Σελιδοποίηση κατ απαίτηση Η μεγάλη επιβάρυνση για τη μετακίνηση των σελίδων από και προς τον δίσκο είναι καθοριστική για την απόδοση ενός συστήματος Οι σελίδες των προγραμμάτων (κώδικας-δεδομένα) βρίσκονται αρχικά μόνο στον δίσκο Το ΛΣ τις σημειώνει ως απούσες από τη μνήμη Όταν προσπελαστεί μια απούσα σελίδα, δημιουργείται ένα σφάλμα σελιδοποίησης (page fault)......και το ΛΣ τη φορτώνει σε ένα πλαίσιο στη μνήμη Ενδεχομένως εκτοπίζοντας πίσω στον δίσκο μια άλλη σελίδα από τη μνήμη Η τελευταία σημειώνεται ως απούσα Page faults: μεγάλο κόστος σε κύκλους αναμονής 1-10Mκύκλοι Αρχιτεκτονική Υπολογιστών Εικονική 16
Κρίσιμα σημεία στη σχεδίαση εικονικής μνήμης Ακόμα και μικρή μείωση στην εμφάνιση page faults μπορεί να έχει σημαντικό όφελος για την απόδοση του συστήματος Οι σελίδες πρέπει να έχουν ικανό μέγεθος Για εξισορρόπηση του κόστους προσπέλασης του δίσκου Η μείωση των page faults είναι επιβεβλημένη Οι σελίδες τοποθετούνται οπουδήποτε μέσα στη μνήμη Σχήμα ανάλογο των fully-associative κρυφών μνημών Η διαχείριση της εικονικής μνήμης μπορεί να γίνεται από λογισμικό (ΛΣ) Μικρή επιβάρυνση συγκρινόμενη με χρόνο μετακίνησης σελίδων στους δίσκους Δυνατότητα χρήσης πολυπλοκότερων αλγορίθμων για τοποθέτηση-αντικατάσταση σελίδων στη μνήμη Δεν είναι δυνατή η ενημέρωση στον δίσκο με κάθε εγγραφή νέων δεδομένων στη σελίδα Αρχιτεκτονική Υπολογιστών Εικονική 17
Μετάφραση εικονικών διευθύνσεων εικονική διεύθυνση 0x000013F0 0 (1) 0x2000 1 (1) 0x6000 2 (0)?? φυσική διεύθυνση + 0x63F0 Κύρια μνήμη D Β Α 0x3000 0x4000 0x5000 0x6000 Presence bit: βρίσκεται η σελίδα στην κύρια μνήμη; 3 (1) 0x3000 πίνακας σελίδων (page table) C δίσκος Αρχιτεκτονική Υπολογιστών Εικονική 18
Πίνακας σελίδων Τι συμβαίνει στην περίπτωση πολλαπλών προγραμμάτων; Πού βρίσκεται; Στην κύρια μνήμη! Πόσες θέσεις διαθέτει; Θεωρητικά: ίσες με τον μέγιστο αριθμό σελίδων Για 2 20 σελίδες με 4 bytes ανά γραμμή, απαιτούνται 4ΜΒ Πρακτικά: πίνακες πολλαπλών επιπέδων Πιθανόν: σελιδοποίηση πινάκων (!) Αρκεί να υπάρχει πάντα στη μνήμη ένα μέρος του πίνακα Ποια πρόσθετη πληροφορία χρειάζεται; Βρίσκεται η σελίδα στη μνήμη; Έχει αλλάξει; Αν όχι, σε ποιο σημείο του δίσκου είναι; Συχνά η πληροφορία αυτή φυλάσσεται μέσα στον πίνακα σελίδων Ποια σελίδα βρίσκεται σε κάθε πλαίσιο μνήμης; Πόσο πρόσφατα χρησιμοποιήθηκε; Δομές του ΛΣ για αλγόριθμο αντικατάστασης σελίδων Αρχιτεκτονική Υπολογιστών Εικονική 19
Πίνακες σελίδων και πολλαπλά προγράμματα Κάθε διεργασία έχει τους δικούς του πίνακες σελίδων! Κατά την εναλλαγή διεργασιών αλλάζει και ο καταχωρητήςδείκτης στους πίνακες (0)?? (1) 0x3000 πίνακας σελίδων (διεργασία 1) (1) 0x6000 (1) 0x4000 (0)?? πίνακας σελίδων (διεργασία 2) Κύρια μνήμη 1Β 2Β 2Α 2C 1Α δίσκος Αρχιτεκτονική Υπολογιστών Εικονική 20
Translation-Lookaside Buffer Το πρόβλημα με τους πίνακες σελίδων Βρίσκονται στην κύρια μνήμη Για κάθε προσπέλαση μνήμης απαιτείται μια δεύτερη! Για τον πίνακα σελίδων Μη αποδεκτή χρονική επιβάρυνση! Translation-Lookaside Buffer (TLB) Μικρή κρυφή μνήμη για πρόσφατες μεταφράσεις εικονικών διευθύνσεων Μέσα στον επεξεργαστή 16-512 θέσεις, 1-2 γραμμές του πίνακα σελίδων ανά θέση Προσπέλαση < 1 κύκλο ρολογιού Παρατηρούμενο Miss rate: 0.01% - 1% Αρχιτεκτονική Υπολογιστών Εικονική 21
Προσπέλαση μνήμης: η συνολική εικόνα TLB φυσική διεύθυνση δεδομένα, cache hit Κρυφή μνήμη Στο σχήμα η κρυφή μνήμη δέχεται φυσικές διευθύνσεις. Υπάρχουν αρχιτεκτονικές με εικονική κρυφή μνήμη ή συνδυασμό εικονικής-φυσικής κρυφής μνήμης εικονική διεύθυνση ΚΜΕ μετάφραση, TLB miss πίνακας σελίδων (στην κύρια μνήμη) σελίδα, page fault δίσκος δεδομένα, cache miss Κύρια μνήμη Αρχιτεκτονική Υπολογιστών Εικονική 22
Εικονική και Προστασία Προσπέλασης Προστασία προσπέλασης σελίδων Με διαφορετικούς πίνακες σελίδων ανά διεργασία είναι αδύνατη η προσπέλαση ξένων σελίδων Δικαιώματα προσπέλασης ανά σελίδα User mode και Supervisor Mode Σε user mode δεν είναι δυνατή η προσπέλαση του TLB, του πίνακα σελίδων και των αντίστοιχων καταχωρητών συστήματος Υπάρχουν αρχιτεκτονικές με περισσότερα από 2 επίπεδα προνομίων Ελεγχόμενη προσπέλαση συναρτήσεων ΛΣ Call gates: ελεγχόμενη εκτέλεση συναρτήσεων ΛΣ από χρήστη, στο επίπεδο όμως των προνομίων του χρήστη δεν είναι δυνατή η προσπέλαση ξένων δεδομένων! Αρχιτεκτονική Υπολογιστών Εικονική 23