ΗΜΥ 32 -- ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΑΛΕΞΗ 8: ΕΙΚΟΝΙΚΗ (Virtual) ΜΝΗΜΗ Διδάσκων: Χάρης Θεοχαρίδης, ΗΜΜΥ ttheocharides@ucy.ac.cy [Προσαρμογή από Computer Architecture, Hennessy & Patterson, 2005, UCB]
(ΕΠ) ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΙΕΡΑΡΧΙΑΣ ΜΝΗΜΗΣ Στόχος: Ο χρήστης βλέπει όσο το δυνατό περισσότερη μνήμη, στην ταχύτητα που προσφέρει η πιο γρήγορη τεχνολογία και στο κόστος της πιο φθηνής τεχνολογίας Πως; Χρήση πλεονεκτήματος τοπικότητας (locality) Processor Αυξανόμενη απόσταση από επεξεργαστή σε χρόνο προσπέλασης L$ L2$ Main Memory 4-8 bytes (word) 8-32 bytes (block) to 4 blocks Secondary Memory,024+ bytes (disk sector = page) Inclusive ότι περιέχει το L$ είναι υποσύνολο του L2$ που είναι υποσύνολο της MM που είναι υποσύνολο της SM Σχετικό (relative) μέγεθος μνήμης σε κάθε επίπεδο ΗΜΥ32 Δ8.Εικονική Μνήμη.2
Η ιεραρχία στο υλικό CPU regs C 8 B a 32 B Memory 4 KB c h e disk Register Cache Memory Disk Memory size: speed: 4B x 32 ns 32 KB-8MB 2 ns 2-3 GB 30 ns 00-500 GB 8 ms $/Mbyte: line size: 4 B $25/MB 32 B $0.20/MB 4 KB $0.00/MB Larger slower cheaper ΗΜΥ32 Δ8.Εικονική Μνήμη.3
Τα κίνητρα για την Εικονική Μνήμη Ø Χρήση της φυσικής DRAM σαν Cache για το Hard Disk Ø Address space of a process can exceed physical memory size Ø Sum of address spaces of multiple processes can exceed physical memory Ø Απλοποίηση της διαχείρησης μνήμης Ø Multiple processes resident in main memory ØEach process with its own address space Ø Only active code and data is actually in memory ØAllocate more memory to process as needed Ø Προστασία δεδομένων Ø One process can t interfere with another Øbecause they operate in different address spaces Ø User process cannot access privileged information Ødifferent sections of address spaces have different permissions ΗΜΥ32 Δ8.Εικονική Μνήμη.4
Κίνητρο #: DRAM a Cache for Disk Ø Το μέγεθος του address space είναι ΠΟΛΥ μεγάλο: Ø 32-bit addresses: ~4,000,000,000 (4 billion) bytes Ø 64-bit addresses: ~6,000,000,000,000,000,000 (6 quintillion) bytes Ø Η αποθήκευση στον σκληρό δίσκο είναι ~300X φθηνότερη από την DRAM Ø 80 GB of DRAM: ~ $33,000 Ø 80 GB of disk: ~ $0 Ø Αρα, για αποτελεσματική σε σχέση με το κόστος αποθήκευση, χρειαζόμαστε ΜΕΓΑΛΟΥΣ δίσκους! 4 MB: ~$500 GB: ~$200 80 GB: ~$0 SRAM DRAM Disk ΗΜΥ32 Δ8.Εικονική Μνήμη.5
Επίπεδα στην Ιεραρχία Μνήμης cache virtual memory CPU regs C 8 B a 32 B Memory 4 KB c h e disk Register Cache Memory Disk Memory size: speed: 4B x 32 ns 32 KB-8MB 2 ns 2-3 GB 30 ns 00-500 GB 8 ms $/Mbyte: line size: 4 B $25/MB 32 B $0.20/MB 4 KB $0.00/MB Larger slower cheaper ΗΜΥ32 Δ8.Εικονική Μνήμη.6
DRAM vs. SRAM ως μνήμη Cache Ø DRAM vs. disk : Ακόμη χειρότερα από την σύγκριση SRAM vs. DRAM Ø Access latencies: ØDRAM ~0X slower than SRAM ØDisk ~00,000X slower than DRAM Ø Importance of exploiting spatial locality: ØFirst byte is ~00,000X slower than successive bytes on disk vs. ~4X improvement for page-mode vs. regular accesses to DRAM Ø Συμπέρασμα: ØΟι σχεδιαστικές αποφάσεις για τα DRAM caches καθορίζονται από τον χρόνο προσπέλασης του δίσκου! SRAM DRAM Disk ΗΜΥ32 Δ8.Εικονική Μνήμη.7
Virtual Memory ( ΕΙΚΟΝΙΚΗ ΜΝΗΜΗ) Ø Χρήση της κυρίως μνήμης σαν cache για δευτερεύουσα μνήμη ΗΜΥ32 Δ8.Εικονική Μνήμη.8 Ø Αποτελεσματική και ασφαλής χρήση μνήμης από πολλαπλά προγράμματα Ø Ικανότητα εκτέλεσης προγραμμάτων μεγαλύτερων από την κύρια μνήμη Ø Απλοποιεί την φόρτωση ενός προγράμματος για εκτέλεση παραχωρώντας εύκολη κατανομή του κώδικα στην μνήμη (i.e., the code can be loaded anywhere in main memory) Ø Πως δουλεύει? Τοπικότητα (Principle of Locality)!!! Ø Ένα πρόγραμμα πιθανό να προσπελάσει μικρό κομμάτι του κώδικα του κατά μια μικρή χρονική διάρκεια. Ø Το κάθε πρόγραμμα συμβολομεταφράζεται (compiled) στο δικό του address space ένα virtual address space Ø Κατά την εκτέλεση, το κάθε virtual address πρέπει να αντιστοιχεί σε ένα physical address (an address in main memory)
Κίνητρο #2: Διαχείρηση Μνήμης Ø Πολλαπλά προγράμματα (processes) μπορούν να έχουν δεδομένα τους στην φυσική μνήμη Ø Πώς επιλύουμε λοιπόν τις συγκρούσεις; Ø Τι συμβαίνει αν 2 processes έχουν πρόσβαση στην ίδια φυσική διεύθυνση; %esp kernel virtual memory stack memory invisible to user code Linux/x86 process memory image Memory mapped region for shared libraries runtime heap (via malloc) the brk ptr 0 uninitialized data (.bss) initialized data (.data) program text (.text) forbidden ΗΜΥ32 Δ8.Εικονική Μνήμη.9
Η λύση: Διαφορετικά Virtual Address Spaces Ø Τα Virtual and physical address spaces διερούνται σε blocks ιδίου μεγέθους (τις ονομάζουμε «σελίδες»). Ø blocks are called pages (both virtual and physical) Ø also, physical page == frame Ø Το κάθε process έχει το δικό του virtual address space Øoperating system controls how virtual pages as assigned to physical memory Virtual Address Space for Process : 0 N- VP VP 2... Address Translation 0 PP 2 Physical Address Space (DRAM) Virtual Address Space for Process 2: 0 Κ- VP VP 2... M- PP 7 PP 0 (e.g., read/only library code) ΗΜΥ32 Δ8.Εικονική Μνήμη.0
Πως Δύο Προγράμματα μοιράζονται το Physical Memory Ø Το address space ενός προγράμματος χωρίζεται σε pages/σελίδες (σταθερό μέγεθος) ή segments (μεταβλητό μέγεθος) Ø Η έναρξη της κάθε σελίδας (είτε στην κυρίως μνήμη είτε στη δευτερεύουσα μνήμη) δίνεται στο page table κάθε προγράμματος Program virtual address space main memory Program 2 virtual address space ΗΜΥ32 Δ8.Εικονική Μνήμη.
Σε υλικό Each process has its own page table Each page table entry contains the frame number of the corresponding page in main memory or the disk address Memory Page Table 0 CPU Virtual Addresses 0: : Physical Addresses P-: N- Disk ΗΜΥ32 Δ8.Εικονική Μνήμη.2
Κίνητρο #3: Προστασία δεδομένων Ø Το page table entry περιέχει πληροφορίες για access rights Ø Το υλικό επιβάλει την προστασία (trap into OS if violation occurs) Process i: VP 0: VP : Read? Yes Yes Page Tables Write? No Yes Physical Addr PP 9 PP 4 0: : Memory VP 2: No No XXXXXXX Process j: VP 0: VP : VP 2: Read? Yes Yes No Write? Yes No No Physical Addr PP 6 PP 9 XXXXXXX N-: ΗΜΥ32 Δ8.Εικονική Μνήμη.3
Μετάφραση Διευθύνσεων Εικονικής Μνήμης Ø Virtual Address Space Ø VA = {0,,, N } Ø Physical Address Space Ø PA = {0,,, M } Ø M << N Ø Address Translation Ø MAP: VA PA U {Æ} Ø For virtual address a: ØMAP(a) = a if data at virtual address a are at physical address a ØMAP(a) = Æ if data at virtual address a are not in physical memory Either invalid or stored on disk ΗΜΥ32 Δ8.Εικονική Μνήμη.4
Address Translation / Μετάφραση Διευθύνσεως Ø Μια virtual address μεταφράζεται σε μια physical address με συνδυασμό hardware και software Virtual Address (VA) 3 30... 2... 0 Virtual page number Page offset Translation ΗΜΥ32 Δ8.Εικονική Μνήμη.5 Physical page number Ø Άρα κάθε αίτημα μνήμης πρώτα απαιτεί μετάφραση διεύθυνσης από το virtual space στο physical space Page offset 29... 2 0 Ø Ένα virtual memory miss (δηλ., όταν το page δεν είναι στη φυσική μνήμη) ονομάζεται page fault Physical Address (PA) Parameters P = 2 p = page size (bytes) N = 2 n = Virtual address limit M = 2 m = Physical address limit
Μηχανισμοί Μεταφράσεως Διευθύνσεως Virtual page # Offset Physical page # How do we find the page table in main memory for some process? è Use page table REGISTER! ΗΜΥ32 Δ8.Εικονική Μνήμη.6 V 0 0 0 Physical page base addr Page Table (in main memory) Offset Main memory Disk storage
Page Fault ØPage table entry μας δείχνει ότι το virtual address δεν αντιστοιχεί στην κύρια μνήμη ØΤο λειτουργικό σύστημα (O/S exception handler) ενεργοποιείται για να μεταφέρει τα δεδομένα από τον δίσκο στην κύρια μνήμη Ø current process suspends, others can resume Ø OS has full control over placement, etc. Before fault After fault Memory Memory Page Table Page Table CPU Virtual Address Physical Address CPU Disk Disk ΗΜΥ32 Δ8.Εικονική Μνήμη.7
Εξυπηρετώντας ένα Page Fault ØProcessor Signals Controller Ø Read block of length P starting at disk address X and store starting at memory address Y Processor Reg () Initiate Block Read (3) Read Done ØRead Occurs Ø Direct Memory Access (DMA) under control of I/O controller ØI/O Controller Signals Completion Ø Interrupt processor Ø OS resumes suspended process Cache Memory Memory-I/O bus (2) DMA Transfer I/O controller disk Disk Disk disk ΗΜΥ32 Δ8.Εικονική Μνήμη.8
Virtual Addressing στην παρουσία Cache Ø Άρα παίρνει ένα extra memory access για να μεταφράσει το VA (virtual address) σε PA (physical address) CPU VA PA miss Translation Cache data hit Main Memory Ø Αυτό κάνει την προσπέλαση μνήμης (cache) πολύ ακριβή (όταν κάθε προσπέλαση έχει στην ουσία 2 προσπελάσεις) Ø Το hardware γίνεται με την χρήση ενός Translation Lookaside Buffer (TLB) ένα μικρό cache που κρατάει πρόσφατα χρησιμοποιημένες αντιστοιχίες διευθύνσεων για να μην χρειάζεται να ψάχνει στον πίνακα σελίδων (page table) ΗΜΥ32 Δ8.Εικονική Μνήμη.9
ΒΕΛΤΙΩΝΟΝΤΑΣ ΤΗΝ ΜΕΤΑΦΡΑΣΗ ΔΙΕΥΘΥΝΣΗΣ ΜΝΗΜΗΣ Virtual page # ΗΜΥ32 Δ8.Εικονική Μνήμη.20 V 0 0 0 V 0 Physical page base addr Page Table (in physical memory) Tag TLB Physical page base addr Main memory Disk storage
Translation Lookaside Buffers (TLBs) Ø Όπως κάθε cache, το TLB μπορεί να οργανωθεί σαν fully associative, set associative, ή direct mapped V Virtual Page # Physical Page # Dirty Ref Access Ø Ο χρόνος προσπέλασης του TLB (access time) είναι πολύ πιο μικρός από το χρόνο προσπέλασης του cache (επειδή τα TLBs είναι πολύ πιο μικρά από τα caches) Ø Τα TLBs συνήθως δεν είναι μεγαλύτερα από 28 -- 256 entries ακόμα και σε high-end υπολογιστές ΗΜΥ32 Δ8.Εικονική Μνήμη.2
Το TLB στην Ιεραρχία της Μνήμης CPU ¼ t hit ¾ t VA PA miss TLB Cache Lookup Main Memory miss hit Ø Ένα TLB miss είναι page fault ή απλά ένα TLB miss? ΗΜΥ32 Δ8.Εικονική Μνήμη.22 Translation data Ø Αν δηλαδή υπάρχει η σελίδα στην κύριως μνήμη, τότε το TLB miss μπορεί να επιλυθεί φορτώνοντας το translation information (physical address) από το page table στο TLB ØΠαίρνει 0 s κύκλων για να βρεθεί και να φορτωθεί η μετάφραση (translation) στο TLB Ø Αν η σελίδα δεν βρίσκεται στην μνήμη, τότε είναι πραγματικό page fault ØΠαίρνει,000,000 s κύκλων για εξυπηρέτηση ενός page fault Ø Τα TLB misses είναι πολύ πιο συχνά από τα true page faults
ΗΜΥ32 Δ8.Εικονική Μνήμη.23 TLB (Translation Lookaside Buffer)
Η λειτουργία του TLB ΗΜΥ32 Δ8.Εικονική Μνήμη.24
Multi-level Page Tables ØGiven: Ø 4KB (2 2 ) page size Ø 32-bit address space Ø 4-byte page table entry ØProblem: Ø Would need a 4 MB page table! 2 20 *4 bytes Level Root Table (4 KB) Level 2 Tables (4 MB) ØCommon solution Ø multi-level page tables e.g., 2-level table Ø Level table: 024 entries, each of which points to a Level 2 page table. Ø Level 2 table: 024 entries, each of which points to a page Ø Page tables are stored in VM... ΗΜΥ32 Δ8.Εικονική Μνήμη.25
Παράμετροι για σχεδιασμό Εικονικής Μνήμης Total size Total size (KB) Paged VM 6,000 to 250,000 words 250,000 to,000,000,000 TLBs 6 to 52 entries 0.25 to 6 Block size (B) 4000 to 64,000 4 to 32 Miss penalty (clocks) Miss rates 0,000,000 to 00,000,000 0.0000% to 0.000% 0 to 000 0.0% to 2% ΗΜΥ32 Δ8.Εικονική Μνήμη.26
Δύο Επεξεργαστές: Παράμετροι Cache TLB organization Intel P4 TLB για εντολές και TLB για δεδομένα Και τα 2 4-way set associative Και τα 2 αλλάζουν με ~LRU AMD Opteron 2 TLBs για εντολές και 2 TLBs για δεδομένα Και τα 2 L TLBs fully associative με αλλαγή ~LRU Και τα 2 L2 TLBs είναι 4-way set associative με round-robin LRU Και τα 2 έχουν 28 entries TLB misses αντιμετωπίζονται με hardware Και τα 2 L TLBs έχουν 40 entries Και τα 2 L2 TLBs έχουν 52 entries TBL misses αντιμετωπίζονται με hardware ΗΜΥ32 Δ8.Εικονική Μνήμη.27
Συνδυασμός Γεγονότων TLB TLB Page Table Cache Πιθανόν? Κάτω από ποιες περιπτώσεις? Hit Hit Hit Hit Hit Miss Miss Hit Hit Miss Hit Miss Miss Miss Miss Hit Miss Miss/ Hit Miss Miss Hit Ναι! Αυτό θέλουμε. Ναι παρόλο που το page table δεν ελέγχεται αν το TLB έχει hits Ναι TLB miss, PA στο page table Ναι TLB miss, PA στο page table, αλλά τα δεδομένα δεν είναι στο cache Ναι page fault Αδύνατον Η μετάφραση του TLB είναι αδύνατη αν η σελίδα δεν είναι στην μνήμη. Αδύνατο τα δεδομένα δεν μπαίνουν στο cache αν η σελίδα δεν βρίσκεται στην μνήμη ΗΜΥ32 Δ8.Εικονική Μνήμη.28
Μειώνοντας το Translation Time Ø Μπορούμε να παραλληλίσουμε (overlap) την προσπέλαση του cache με την προσπέλαση του TLB Ø Δουλεύει όταν τα high order bits του VA χρησιμοποιούνται για προσπέλαση του TLB ενώ τα low order bits χρησιμοποιούνται για index στο cache VA Tag PA Tag Block offset Index 2-way Associative Cache Tag Data Tag Data PA Tag TLB Hit = = ΗΜΥ32 Δ8.Εικονική Μνήμη.29 Cache Hit Desired word
Γιατί Όχι Ένα Virtually Addressed Cache? Ø Ένα virtually addressed cache θα ήθελε μόνο address translation για cache misses CPU VA Translation PA Main Memory αλλά ΗΜΥ32 Δ8.Εικονική Μνήμη.30 hit Cache data ØΔύο διαφορετικά virtual addresses αντιστοιχούν στο ίδιο physical address (όταν τα processes μοιράζονται δεδομένα), δηλ., δυο διαφορετικά cache entries κρατούν δεδομένα για το ίδιο physical address synonyms ØMust update all cache entries with the same physical address or the memory becomes inconsistent
Τα σύνορα μεταξύ Hardware/Software (Boundary) Ø Ποια μέρη της μετάφρασης virtual σε physical address εκτελούνται (ή υποβοηθάτε η εκτέλεση τους) με hardware? Ø Το Translation Lookaside Buffer (TLB) που κρατά τις πιο πρόσφατες διευθύνσεις ØΤο TLB access time είναι μέρος του cache hit time ØΜπορούμε να έχουμε ένα επιπρόσθετο στάδιο στο pipeline για πρόσβαση στο TLB Ø Page table storage, fault detection και updating ØΤα Page faults προκαλούν interrupts τα οποία τα χειρίζεται το OS ØΤο hardware πρέπει να υποστηρίζει (i.e., update appropriately) Dirty και Reference bits (e.g., ~LRU) στα Page Tables Ø Τοποθέτηση στο δίσκο (Disk placement) ØBootstrap (e.g., out of disk sector 0) ώστε το σύστημα να μπορεί να χειριστεί ένα περιορισμένο αριθμό page faults πριν το λειτουργικό σύστημα (OS) να φορτωθεί ΗΜΥ32 Δ8.Εικονική Μνήμη.3
Περίληψη Ø The Principle of Locality - Τοπικότητα: Ø Program likely to access a relatively small portion of the address space at any instant of time. Ø Temporal Locality: Locality in Time Χρονική Τοπικότητα Ø Spatial Locality: Locality in Space Χωρική Τοπικότητα Ø Caches, TLBs, Virtual Memory μπορούν να κατανοηθούν απαντώντας στις εξής 4 ερωτήσεις:. Where can block/page be placed? -- Τοποθέτηση 2. How is block/page found? Εύρεση 3. What block/page is replaced on miss? - Αναπλήρωση 4. How are writes handled? -- Εγγραφές Ø Page tables map virtual address to physical address Ø TLBs are important for fast translation ΗΜΥ32 Δ8.Εικονική Μνήμη.32
ΕΠΟΜΕΝΗ ΔΙΑΛΕΞΗ ΚΑΙ ΚΑΤ ΟΙΚΟΝ ΜΕΛΕΤΗ Ø ΕΠΟΜΕΝΗ ΕΝΟΤΗΤΑ Είσοδος, Έξοδος και Αποθήκευση Δεδομένων (RAIDs) Ø Υπενθύμιση Ø Πρώτη Ενδιάμεση Εξέταση, Πέμπτη, 9 Οκτωβρίου (στο μάθημα?)! Ø Περιλαμβάνει όλη την ύλη ΜΕΧΡΙ το I/O (Διάλεξη 9-0). ØΕισαγωγή/Τεχνολογία, Ιστορική Αναδρομή, Κύρια Μνήμη, Κρυφή Μνήμη, Εικονική Μνήμη Ø ΚΑΤ ΟΙΚΟΝ ΜΕΛΕΤΗ Ø Κεφάλαιο 5 Ø Κεφάλαιο 7 (7.4) Patterson&Hennessy (από το βιβλίο του ΗΜΥ22) Ø Σημειώσεις στην ιστοσελίδα (memory.pdf) ΗΜΥ32 Δ8.Εικονική Μνήμη.33