2/9/5 ΗΜΥ 32 -- ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΑΛΕΞΗ 8: ΕΙΚΟΝΙΚΗ (Virtual) ΜΝΗΜΗ Διδάσκουσα: ΜΑΡΙΑ Κ. ΜΙΧΑΗΛ Επίκουρη Καθηγήτρια, ΗΜΜΥ (mmichael@ucy.ac.cy) [Προσαρµογή από Computer Architecture, Hennessy & Patterson, 25, UCB] (ΕΠ) ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΙΕΡΑΡΧΙΑΣ ΜΝΗΜΗΣ Στόχος: Ο χρήστης βλέπει όσο το δυνατό περισσότερη µνήµη, στην ταχύτητα που προσφέρει η πιο γρήγορη τεχνολογία και στο κόστος της πιο φθηνής τεχνολογίας Πως; Χρήση πλεονεκτήµατος τοπικότητας (locality) Processor Αυξανόµενη απόσταση από επεξεργαστή σε χρόνο προσπέλασης L$ L2$ Main Memory 4-8 bytes (word) 8-32 bytes (block) to 4 blocks Secondary Memory,24+ bytes (disk sector = page) Inclusive ότι περιέχει το L$ είναι υποσύνολο του L2$ που είναι υποσύνολο της MM που είναι υποσύνολο της SM Σχετικό (relative) µέγεθος µνήµης σε κάθε επίπεδο ΗΜΥ32 Δ8.Εικονική Μνήµη.2
2/9/5 Η ιεραρχία στο υλικό 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 3 ns -5 GB 8 ms $/Mbyte: line size: 4 B $25/MB 32 B $.2/MB 4 KB $./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 2
2/9/5 Κίνητρο #: DRAM a Cache for Disk Ø Το µέγεθος του address space είναι ΠΟΛΥ µεγάλο: Ø 32-bit addresses: ~4,,, (4 billion) bytes Ø 64-bit addresses: ~6,,,,,, (6 quintillion) bytes Ø Η αποθήκευση στον σκληρό δίσκο είναι ~3X φθηνότερη από την DRAM Ø 8 GB of DRAM: ~ $33, Ø 8 GB of disk: ~ $ Ø Αρα, για αποτελεσµατική σε σχέση µε το κόστος αποθήκευση, χρειαζόµαστε ΜΕΓΑΛΟΥΣ δίσκους! 4 MB: ~$5 GB: ~$2 8 GB: ~$ 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 3 ns -5 GB 8 ms $/Mbyte: line size: 4 B $25/MB 32 B $.2/MB 4 KB $./MB Larger slower cheaper! ΗΜΥ32 Δ8.Εικονική Μνήµη.6 3
2/9/5 DRAM vs. SRAM ως µνήµη Cache Ø DRAM vs. disk : Ακόµη χειρότερα από την σύγκριση SRAM vs. DRAM Ø Access latencies: Ø DRAM ~X slower than SRAM Ø Disk ~,X slower than DRAM Ø Importance of exploiting spatial locality: Ø First byte is ~,X 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) 4
2/9/5 Κίνητρο #2: Διαχείρηση Μνήµης Ø Πολλαπλές εργασίες (processes) µπορούν να κρατούν δεδοµένα στην φυσική µνήµη Ø Πώς επιλύουµε λοιπόν τις συγκρούσεις; Ø what if two processes access something at the same address? %esp kernel virtual memory stack memory invisible to user code Linux/x86 process memory image ΗΜΥ32 Δ8.Εικονική Μνήµη.9 Memory mapped region for shared libraries runtime heap (via malloc) uninitialized data (.bss) initialized data (.data) program text (.text) forbidden the brk ptr Η λύση: Διαφορετικά Virtual Address Spaces Ø Τα Virtual and physical address spaces διερούνται σε blocks ιδίου µεγέθους (τις ονοµάζουµε «σελίδες»). Ø blocks are called pages (both virtual and physical) Ø Το κάθε process έχει το δικό του virtual address space Ø operating system controls how virtual pages as assigned to physical memory Virtual Address Space for Process : Virtual Address Space for Process 2: N- N- VP VP 2... VP VP 2... Address Translation M- PP 2 PP 7 PP Physical Address Space (DRAM) (e.g., read/only library code) ΗΜΥ32 Δ8.Εικονική Μνήµη. 5
2/9/5 Πως Δύο Προγράµµατα µοιράζονται το 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!!! CPU! Virtual! Addresses! :! :! Physical! Addresses! P-:! N-! Disk! ΗΜΥ32 Δ8.Εικονική Μνήµη.2 6
2/9/5 Κίνητρο #3: Προστασία δεδοµένων Ø Το page table entry περιέχει πληροφορίες για access rights Ø Το υλικό επιβάλει την προστασία (trap into OS if violation occurs) Process i: Process j: ΗΜΥ32 Δ8.Εικονική Μνήµη.3 VP : VP : VP 2: VP : VP : VP 2: Page Tables Read? Write? Yes Yes No No Yes No Read? Write? Yes Yes No Yes No No Physical Addr PP 9 PP 4 XXXXXXX Physical Addr PP 6 PP 9 XXXXXXX : : N-: Memory Μετάφραση Διευθύνσεων Εικονικής Μνήµης Ø Virtual Address Space Ø V = {,,, N } Ø Physical Address Space Ø P = {,,, M } Ø M < N Ø Address Translation Ø MAP: V P U { } Ø For virtual address a: Ø MAP(a) = a if data at virtual address a at physical address a in P Ø MAP(a) = if data at virtual address a not in physical memory Either invalid or stored on disk ΗΜΥ32 Δ8.Εικονική Μνήµη.4 7
2/9/5 Address Translation / Μετάφραση Διευθύνσεως Ø Μια virtual address µεταφράζεται σε µια physical address µε συνδυασµό hardware και software Virtual Address (VA) 3 3... 2... Virtual page number Page offset Translation ΗΜΥ32 Δ8.Εικονική Μνήµη.5 Physical page number Ø Άρα κάθε αίτηµα µνήµης πρώτα απαιτεί µετάφραση διεύθυνσης από το virtual space στο physical space Page offset 29... 2 Ø Ένα 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 ΗΜΥ32 Δ8.Εικονική Μνήµη.6 V Physical page # Physical page base addr Page Table (in main memory) Offset Main memory Disk storage 8
2/9/5 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 Ø Read Occurs Ø Direct Memory Access (DMA) under control of I/O controller Ø I/O Controller Signals Completion Ø Interrupt processor Ø OS resumes suspended process Processor! Reg! (3) Read Done! Cache! () Initiate Block Read! Memory-I/O bus! (2) DMA Transfer! I/O! Memory! controller! disk! Disk! disk! Disk! ΗΜΥ32 Δ8.Εικονική Μνήµη.8 9
2/9/5 Virtual Addressing στην παρουσία Cache Ø Άρα παίρνει ένα extra memory access για να µεταφράσει το VA (virtual address) σε PA (physical address) CPU VA PA miss Trans- Cache lation data hit Main Memory Ø Αυτό κάνει την προσπέλαση µνήµης (cache) πολύ ακριβή (όταν κάθε προσπέλαση έχει στην ουσία 2 προσπελάσεις) Ø Το hardware γίνεται µε την χρήση ενός Translation Lookaside Buffer (TLB) ένα µικρό cache που κρατάει πρόσφατα χρησιµοποιηµένες αντιστοιχίες διευθύνσεων για να µην χρειάζεται να ψάχνει στον πίνακα σελίδων (page table) ΗΜΥ32 Δ8.Εικονική Μνήµη.9 ΒΕΛΤΙΩΝΟΝΤΑΣ ΤΗΝ ΜΕΤΑΦΡΑΣΗ ΔΙΕΥΘΥΝΣΗΣ ΜΝΗΜΗΣ Virtual page # ΗΜΥ32 Δ8.Εικονική Μνήµη.2 V V Physical page base addr Tag Page Table (in physical memory) TLB Physical page base addr Main memory Disk storage
2/9/5 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 VA ¼ t hit PA ¾ t miss TLB Lookup Cache Main Memory miss hit Ø Ένα TLB miss είναι page fault ή απλά ένα TLB miss? Ø Αν δηλαδή υπάρχει η σελίδα στην κύριως µνήµη, τότε το TLB miss µπορεί να επιλυθεί φορτώνοντας το translation information (physical address) από το page table στο TLB ΗΜΥ32 Δ8.Εικονική Μνήµη.22 Translation data Ø Παίρνει s κύκλων για να βρεθεί και να φορτωθεί η µετάφραση (translation) στο TLB Ø Αν η σελίδα δεν βρίσκεται στην µνήµη, τότε είναι πραγµατικό page fault Ø Παίρνει,, s κύκλων για εξυπηρέτηση ενός page fault Ø Τα TLB misses είναι πολύ πιο συχνά από τα true page faults
2/9/5 TLB (Translation Lookaside Buffer) ΗΜΥ32 Δ8.Εικονική Μνήµη.23 Η λειτουργία του TLB ΗΜΥ32 Δ8.Εικονική Μνήµη.24 2
2/9/5 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 2 *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: 24 entries, each of which points to a Level 2 page table. Ø Level 2 table: 24 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, to 25, words 25, to,,, TLBs 6 to 52 entries.25 to 6 Block size (B) 4 to 64, 4 to 32 Miss penalty (clocks) Miss rates,, to,,.% to.% to.% to 2% ΗΜΥ32 Δ8.Εικονική Μνήµη.26 3
2/9/5 Δύο Επεξεργαστές: Παράµετροι 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 έχουν 4 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 4
2/9/5 Μειώνοντας το 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.Εικονική Μνήµη.3 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 5
2/9/5 Τα σύνορα µεταξύ 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 ) ώστε το σύστηµα να µπορεί να χειριστεί ένα περιορισµένο αριθµό 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 6
2/9/5 ΕΠΟΜΕΝΗ ΔΙΑΛΕΞΗ ΚΑΙ ΚΑΤ ΟΙΚΟΝ ΜΕΛΕΤΗ Ø ΕΠΟΜΕΝΗ ΕΝΟΤΗΤΑ Είσοδος, Έξοδος και Αποθήκευση Δεδοµένων (RAIDs) Ø Υπενθύµιση Ø Πρώτη Ενδιάµεση Εξέταση, Σάββατο, 8 Οκτωβρίου! Ø Περιλαµβάνει όλη την ύλη ΜΕΧΡΙ ΣΗΜΕΡΑ Ø Εισαγωγή/Τεχνολογία, Ιστορική Αναδροµή, Κύρια Μνήµη, Κρυφή Μνήµη, Εικονική Μνήµη Ø ΚΑΤ ΟΙΚΟΝ ΜΕΛΕΤΗ Ø Κεφάλαιο 5 Ø Κεφάλαιο 7 (7.4) Patterson&Hennessy (από το βιβλίο του ΗΜΥ22) Ø Σηµειώσεις στην ιστοσελίδα (memory.pdf) ΗΜΥ32 Δ8.Εικονική Μνήµη.33 7