ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Υποσύστημα μνήμης Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.
ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Εικονική μνήμη Αρης Ευθυμίου
Το σημερινό μάθημα!!!!!! Κίνητρα για μηχανισμό εικονικής μνήμης Τμηματοποίηση Σελιδοποίηση Μετάφραση διευθύνσεων Πίνακες σελίδων TranslaIon Look- aside Buffer 2
Κύρια μνήμη ως $ του δίσκου! Αν ένα πρόγραμμα χρειάζεται πάρα πολλή μνήμη,...! κύρια μνήμη ως «κρυφή μνήμη» της δευτερεύουσας (σκληρός δίσκος ή flash); Σίγουρα υπάρχει τοπικότητα αναφορών! Σημαντικό πρόβλημα στο παρελθόν ο κύριος λόγος επινόησης της μεθόδου που θα δούμε σήμερα! Προγραμματιστές χώριζαν το πρόγραμμα σε τμήματα ονομάζονταν overlays και περιείχαν εντολές και δεδομένα που δεν χρειάζονταν ταυτόχρονα διαχείριση με ευθύνη του προγραμματιστή! Ζητούμενο: Αυτόματος μηχανισμός, όπως στις κρυφές μνήμες 3
Πολυπρογραμματισμός! Λίγοι υπολογιστές τρέχουν 1 πρόγραμμα ενσωματωμμένοι! Οι περισσότεροι είναι πολυπρογραμματιζόμενοι τρέχουν πολλά προγράμματα «ταυτόχρονα» με γρήγορη εναλλαγή για μονοπύρηνους υπολογιστές! Ζητούμενο: Προστασία προγραμμάτων Συνηθισμένος όρος: program isolaion δεν θέλουμε το ένα να «πειράζει» τη μνήμη του άλλου επίτηδες ή κατά- λάθος 4
Χώρος διευθύνσεων! Θυμηθείτε linker, loader, απαιτούνται «απόλυτες διευθύνσεις» για εντολές όπως άλματα, κλήσεις υπορουτινών! Αλλά σε ένα πολυπρογραμματιζόμενο σύστημα, σέ ποια διεύθυνση μνήμης θα φορτωθεί το πρόγραμμα; δεν μπορεί να είναι στην ίδια κάθε φορά!! Παρόμοια προβλήματα: πώς το ίδιο πρόγραμμα (κώδικα μηχανής) τρέχει σε υπολογιστές με διαφορετικά μεγέθη μνήμης;! Ιδανικά το πρόγραμμα έχει το δικό του χώρο διευθύνσεων (address space) MIPS/Mars: κώδικας: 0x00400000, δεδομένα: 0x10010000, στοίβα 0x7fffefe0, 5
Εικονική μνήμη! Διαχωρισμός του χώρου διευθύνσεων που «βλέπει»/έχει κάθε πρόγραμμα από την αληθινή μνήμη του υπολογιστή Η αληθινή μνήμη ονομάζεται φυσική μνήμη (physical memory) Ολες οι διευθύνσεις των προγραμμάτων είναι εικονικές (virtual)! pc, load, store, κατ επέκταση η φανταστική μνήμη που νομίζουν ότι έχουν διαθέσιμη, ονομάζεται εικονική μνήμη! Μηχανισμός μετάφρασης διευθύνσεων (address translaion) με συνεργασία υλικού και λογισμικού (Λ.Σ.) virtual address μετάφραση διευθύνσεων physical address Physical memory (incl. caches) 6
Πώς λύνονται τα προβλήματα;! Προστασία Ο μηχανισμός μετάφρασης διευθύνσεων εξασφαλίζει ότι δύο διεργασίες έχουν εντελώς χωριστά τμήματα φυσικής μνήμης! Σε ποιά θέση μνήμης φορτώνεται ένα πρόγραμμα; Δεν έχει σημασία. Το πρόγραμμα χρησιμοποιεί παντού εικονικές διευθύνσεις εσωτερικά Το πρόγραμμα θεωρεί ότι όλη η (εικονική) μνήμη είναι δική του! Κύρια μνήμη ως $ της δευτερεύουσας Συνδιασμός του μηχανισμού μετάφρασης διευθύνσεων με μεταφορά δεδομένων από κύρια μνήμη προς δευτερεύουσα (και αντίστροφα) Μηχ. μετάφρασης υπό τον έλεγχο του Λ.Σ. 7
Είδη μηχανισμών μετάφρασης! SegmentaIon (τμηματοποίηση;) Χωρισμός μνήμης σε τμήματα μνήμης ορισμένα από την αρχή/ βάση και το μέγεθος ή το πάνω όριο σχετικά εύκολη υλοποίηση πρόβλημα κατακερματισμού μνήμης! Paging (σελιδοποίηση) Χωρισμός μνήμης σε «σελίδες» σταθερού μεγέθους πιο πολύπλοκη υλοποίηση 8
Υλοποίηση segmentaion! Καταχωρητές: Βάση (αρχή τμήματος) Bounds όριο τμήματος Bound Register lw X Program Address Space Logical Address Bounds Violation? + Physical Address Base Register current segment Physical Memory! Μόνο το Λ.Σ. μπορεί να αλλάξει τις τιμές τους Base Physical Address 9
Κατακερματισμός μνήμης OS Space + users 4 & 5 OS Space user 1 16K user 1 16K user 2 24K user 2 user 4 24K 32K user 3 16K 8K 32K 24K user 5 24K 24K user 3 users 2 & 5 user 1 OS Space 16K 24K user 4 16K 8K user 3 32K 24K! Κατακερματισμός (fragmentaion): υπάρχει συνολικά αρκετή μνήμη, αλλά όχι σε ένα συνεχόμενο τμήμα! Λύση: Είτε άρνηση ΛΣ να παραχωρήσει μνήμη ή μετακίνηση ολόκληρων διεργασιών 10
Σελιδοποίηση! Διαχωρισμός της μνήμης σε σελίδες (pages) σταθερού μεγέθους παρόμοια με τις γραμμές της κρυφής μνήμης page number offset! Οι σελίδες είναι αρκετά μεγάλες π.χ. 4ΚΒ (συχνά υπάρχουν και μεγάλες σελίδες αρκετών ΜΒ) μεταφορές από/πρός δευτερεύσα μνήμη γίνονται σε μεγάλες ποσότητες: μεγάλος χρόνος αναζήτησης σε σχέση με το χρόνο μετάδοσης Κόστος αστοχίας είναι τεράστιο 105-106 κύκλοι 11
Απεικόνιση/μετάφραση Εικονική μνήμη 232 Οι σελίδες του προγράμματος δεν είναι απαραίτητα σε συνεχόμενες σελίδες της κύριας μνήμης Stack Φυσική μνήμη 64 MB Heap Heap Static 0 0 Code 0 12
Μετάφραση διευθύνσεων! Μεγάλο κόστος αστοχίας, ονομάζεται σφάλμα σελίδας (page fault)! Επιλογή θέσεων, αλγόριθμος αντικατάστασης, κλπ σε λογισμικό από το λειτουργικό σύστημα Υπάρχει πολύς χρόνος διαθέσιμος Καλύτεροι, ευέλικτοι αλγόριθμοι σε λογισμικό! Πολιτικές εγγραφής write- back, write- allocate μόνο write- through δεν έχει νόημα! Ευέλικτη τοποθέτηση σελίδων στη φυσική μνήμη fully associaive 13
Μετάφραση διευθύνσεων! Fully- associaive οργάνωση! Πώς γίνεται η αναζήτηση σελίδας στη φυσική μνήμη; τεράστιος αριθμός από σελίδες αναζήτηση όπως σε μια κρυφή μνήμη, δεν είναι πρακτική VPN PPN 14
Πίνακας μετάφρασης Virtual Address: page no. offset Page Table... V index into page table A.R. PPN Val Access Physical -id Rights Page Number... + Physical Memory Address 15
Page Table Entry (PTE) Πληροφορία καταχώρησης πίνακα σελίδων:! Αριθμός φυσικής σελίδας (PPN) ή κάποια διεύθυνση δευτερεύουσας μνήμης αν η σελίδα δεν βρίσκεται στην κύρια μνήμη! Κάποια bit πληροφορίας όπως valid, dirty,! Πληροφορίες σχετικές με δικαιώματα πρόσβασης στόχος εικονικής μνήνης: process isolaion δικαίωμα εγγραφής, εκτέλεσης προγράμματος,... υπάρχουν τρόποι που επιτρέπουν διεργασίες να μοιράζονται σελίδες (ανάγνωση μόνο ή και εγγραφή) 16
Ξεχωριστοί πίνακες/πρόγραμμα User 1 VA1 User 2 Physical Memory Page Table VA1 Page Table User 3 VA1 Page Table free! Κάθε διεργασία έχει το δικό της χώρο διευθύνσεων πρέπει να έχει το δικό της πίνακα σελίδων 17
Αποθήκευση πινάκων σελίδων! Μέγεθος πινάκων σελίδων: ανάλογος του χώρου διευθύνσεων! π.χ. 32- bit εικονικές διευθύνσεις, σελίδες 4ΚΒ: 232 / 212 = 220 θέσεις ανάλογος του αριθμού διεργασιών ανάλογος του μεγέθους του PTE! Απαιτείται πολύ μεγάλος χώρος αποθήκευσης! δεν χωράει σε καταχωρητές, κάποιου είδους κρυφή μνήμη,...! Οι πίνακες σελίδων αποθηκεύονται στη κύρια μνήμη σε χώρο που μόνο το Λ.Σ. μπορεί να γράψει! Κατάλληλες δομές οργάνωσης για εξοικονόμιση χώρου 18
Καταχωρητής πίνακα σελίδων! Ειδικός καταχωρητής που δείχνει την αρχή/βάση του πίνακα μετάφρασης του τρέχοντος προγράμματος 19
Κατάσταση διεργασίας! «Δεδομένα» διεργασίας ώστε να μπορεί να διακοπεί και να ξαναξεκινήσει αργότερα Αγγλικό όρος: process state! Μέχρι τώρα PC τιμές καταχωρητών! Επιπλέον: πίνακας μετάφρασης. πολύ μεγάλος! αρκεί ο καταχωρητής βάσης 20
Οργάνωση πινάκων σελίδων! Χρησιμοποιούνται λίγες από τις θέσεις του πίνακα σελίδων αραιός πίνακας (sparse table) p1 12 11 p2 0 page 22 21 offset 10-bit 10-bit L1 index L2 index Page Table Register p2 p1 Level 1 Page Table Physical Memory 31 offset Virtual Address Level 2 Page Tables 21
Σφάλμα σελίδας! Ορος μηχανισμού εικονικής μνήμης για αστοχία δεν υπάρχει η σελίδα στη φυσική μνήμη! Χειρισμός από το λειτουργικό σύστημα το πρόγραμμα που ζήτησε τη σελίδα διακόπτεται το ΛΣ ξεκινάει την προσπέλαση στη δευτερεύουσα μνήμη! η «διεύθυνση» βρίσκεται στον πίνακα σελίδων! Αντικατάσταση μιας άλλης σελίδας επιλογή θύματος με αλγόριθμο τύπου LRU 22
Αποθήκευση σελίδων στο δίσκο! Το Λ.Σ. κρατάει χώρο στο δίσκο για όλες τις σελίδες κάθε διεργασίας! Ο χώρος αυτός ονομάζεται swap space στο Unix ξεχωριστό pariion του δίσκου 23
Γρήγορη μετάφραση διευθύνσεων! Τουλάχιστον 2 προσπελάσεις μνήμης για κάθε πραγματική προσπέλαση μία για τη μετάφραση αριθμού εικονικής σελίδας σε αριθμό φυσικής σελίδας! περισσότερες για πίνακες πολλαπλών επιπέδων άλλη μία για την κανονική προσπέλαση! Πολύ αργό!! Οι προσπελάσεις του πίνακα σελίδων έχουν μεγάλη τοπικότητα αναφορών η ίδια σελίδα μεταφράζεται πολλές φορές συνεχόμενα! Ιδέα: μία «κρυφή μνήμη» του πίνακα σελίδων 24
TranslaIon Look- aside Buffer VA Processor hit TLB Lookup miss Translation PA Cache miss hit Main Memory data! Μικρή κρυφή μνήμη 32 128 θέσεις (PTEs)! Συνήθως μεγάλο associaivity 25
Προσπέλαση μνήμης VPN TLB Tag TLB Index Page Offset Virtual Address TLB TLB Tag V PPN PA split two different ways! PTE PPN Page Offset Physical Address Cache V Tag block data Tag Index Offset 26
Μετάφραση διεύθυνσης 27
Επόμενο μάθημα ExcepIons/Interupts 28
Τέλος Ενότητας
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
Σημειώματα
Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 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/.