this unit virtual memory
play

This Unit: Virtual Memory App App App The operating system (OS) - PowerPoint PPT Presentation

This Unit: Virtual Memory App App App The operating system (OS) System software A super-application CIS 371 Hardware support for an OS Mem CPU I/O Virtual memory Computer Organization and Design Page tables and address


  1. This Unit: Virtual Memory App App App • The operating system (OS) System software • A super-application CIS 371 • Hardware support for an OS Mem CPU I/O • Virtual memory Computer Organization and Design • Page tables and address translation • TLBs and memory hierarchy issues Unit 9: Virtual Memory Slides developed by Milo Martin & Amir Roth at the University of Pennsylvania with sources that included University of Wisconsin slides by Mark Hill, Guri Sohi, Jim Smith, and David Wood. CIS 371 (Martin): Virtual Memory 1 CIS 371 (Martin): Virtual Memory 2 Readings Start-of-class Question • P&H “d” “a” • Virtual Memory: 5.4 • What is a “ trie ” data structure “a” “b” • Also called a “prefix tree” “root” “c” “d” A “a” “b” “c” • What is it used for? “d” “a” “b” • What properties does it have? “c” “d” • How is it different from a binary tree? • How is it different than a hash table “a” “b” “c” “d” CIS 371 (Martin): Virtual Memory 3 CIS 371 (Martin): Virtual Memory 4

  2. A Computer System: Hardware A Computer System: + App Software • CPUs and memories • Application software : computer must do something • Connected by memory bus • I/O peripherals : storage, input, display, network, … • With separate or built-in DMA • Connected by system bus (which is connected to memory bus) Application sofware Memory bus System (I/O) bus Memory bus System (I/O) bus bridge bridge CPU/$ CPU/$ DMA DMA I/O ctrl CPU/$ CPU/$ DMA DMA I/O ctrl Memory Memory kbd kbd display display NIC NIC Disk Disk CIS 371 (Martin): Virtual Memory 5 CIS 371 (Martin): Virtual Memory 6 A Computer System: + OS Operating System (OS) and User Apps • Sane system development requires a split • Operating System (OS): virtualizes hardware for apps • Hardware itself facilitates/enforces this split • Abstraction : provides services (e.g., threads, files, etc.) + Simplifies app programming model, raw hardware is nasty • Operating System (OS) : a super-privileged process • Isolation : gives each app illusion of private CPU, memory, I/O • Manages hardware resource allocation/revocation for all processes + Simplifies app programming model • Has direct access to resource allocation features + Increases hardware resource utilization • Aware of many nasty hardware details Application Application Application Application • Aware of other processes OS • Talks directly to input/output devices (device driver software) Memory bus System (I/O) bus bridge • User-level apps : ignorance is bliss CPU/$ CPU/$ DMA DMA I/O ctrl • Unaware of most nasty hardware details Memory • Unaware of other apps (and OS) kbd • Explicitly denied access to resource allocation features display NIC Disk CIS 371 (Martin): Virtual Memory 7 CIS 371 (Martin): Virtual Memory 8

  3. System Calls Typical I/O Device Interface • Controlled transfers to/from OS • Operating system talks to the I/O device • Send commands, query status, etc. • Software uses special uncached load/store operations • System Call : a user-level app “function call” to OS • Hardware sends these reads/writes across I/O bus to device • Leave description of what you want done in registers • SYSCALL instruction (also called TRAP or INT) • Direct Memory Access (DMA) • Can’t allow user-level apps to invoke arbitrary OS code • For big transfers, the I/O device accesses the memory directly • Restricted set of legal OS addresses to jump to ( trap vector ) • Example: DMA used to transfer an entire block to/from disk • Processor jumps to OS using trap vector • Sets privileged mode • Interrupt-driven I/O • OS performs operation • The I/O device tells the software its transfer is complete • OS does a “return from system call” • Tells the hardware to raise an “interrupt” (door bell) • Unsets privileged mode • Processor jumps into the OS • Inefficient alternative: polling CIS 371 (Martin): Virtual Memory 9 CIS 371 (Martin): Virtual Memory 10 Interrupts A Computer System: + OS • Exceptions : synchronous, generated by running app • E.g., illegal insn, divide by zero, etc. • Interrupts : asynchronous events generated externally Application • E.g., timer, I/O request/reply, etc. OS • “Interrupt” handling : same mechanism for both Memory bus System (I/O) bus • “Interrupts” are on-chip signals/bits bridge • Either internal (e.g., timer, exceptions) or from I/O devices CPU/$ CPU/$ DMA DMA I/O ctrl Memory • Processor continuously monitors interrupt status, when one is high… • Hardware jumps to some preset address in OS code (interrupt vector) kbd display NIC Disk • Like an asynchronous, non-programmatic SYSCALL • Timer : programmable on-chip interrupt • Initialize with some number of micro-seconds • Timer counts down and interrupts when reaches zero CIS 371 (Martin): Virtual Memory 11 CIS 371 (Martin): Virtual Memory 12

  4. A Computer System: + OS Virtualizing Processors • How do multiple apps (and OS) share the processors? • Goal: applications think there are an infinite # of processors Application Application Application Application • Solution: time-share the resource OS • Trigger a context switch at a regular interval (~1ms) • Pre-emptive : app doesn’t yield CPU, OS forcibly takes it Memory bus System (I/O) bus bridge + Stops greedy apps from starving others CPU/$ CPU/$ DMA DMA I/O ctrl • Architected state : PC, registers Memory • Save and restore them on context switches • Memory state? kbd display NIC Disk • Non-architected state : caches, predictor tables, etc. • Ignore or flush • Operating system responsible to handle context switching • Hardware support is just a timer interrupt CIS 371 (Martin): Virtual Memory 13 CIS 371 (Martin): Virtual Memory 14 Virtualizing Main Memory Virtual Memory (VM) • How do multiple apps (and the OS) share main memory? • Virtual Memory (VM) : • Goal: each application thinks it has infinite memory • Level of indirection • Application generated addresses are virtual addresses (VAs) • Each process thinks it has its own 2 N bytes of address space • One app may want more memory than is in the system • Memory accessed using physical addresses (PAs) • App’s insn/data footprint may be larger than main memory • VAs translated to PAs at some coarse granularity (page) • Requires main memory to act like a cache • OS controls VA to PA mapping for itself and all other processes • With disk as next level in memory hierarchy (slow) • Logically: translation performed before every insn fetch, load, store • Write-back, write-allocate, large blocks or “pages” • Physically: hardware acceleration removes translation overhead • No notion of “program not fitting” in registers or caches (why?) • Solution: App1 App2 OS VAs • Part #1: treat memory as a “cache” … … … • Store the overflowed blocks in “swap” space on disk OS controlled VA → PA mappings • Part #2: add a level of indirection (address translation) PAs (physical memory) CIS 371 (Martin): Virtual Memory 15 CIS 371 (Martin): Virtual Memory 16

  5. Virtual Memory (VM) VM is an Old Idea: Older than Caches • Programs use virtual addresses (VA) • Original motivation: single-program compatibility • VA size (N) aka machine size (e.g., Core 2 Duo: 48-bit) • IBM System 370: a family of computers with one software suite • Memory uses physical addresses (PA) + Same program could run on machines with different memory sizes – Prior, programmers explicitly accounted for memory size • PA size (M) typically M<N, especially if N=64 • 2 M is most physical memory machine supports • But also: full-associativity + software replacement • VA → PA at page granularity (VP → PP) • Memory t miss is high: extremely important to reduce % miss • Mapping need not preserve contiguity • VP need not be mapped to any PP Parameter I$/D$ L2 Main Memory • Unmapped VPs live on disk (swap) or nowhere (if not yet touched) t hit 2ns 10ns 30ns t miss 10ns 30ns 10ms (10M ns) OS App1 App2 Capacity 8–64KB 128KB–2MB 64MB–64GB … … … Block size 16–32B 32–256B 4+KB Assoc./Repl. 1–4, LRU 4–16, LRU Full, “working set” Disk CIS 371 (Martin): Virtual Memory 17 CIS 371 (Martin): Virtual Memory 18 Uses of Virtual Memory Address Translation • More recently: isolation and multi-programming virtual address[31:0] VPN[31:16] POFS[15:0] translate don’t change • Each app thinks it has 2 N B of memory, its stack starts 0xFFFFFFFF,… physical address[27:0] PPN[27:16] POFS[15:0] • Apps prevented from reading/writing each other’s memory • Can’t even address the other program’s memory! • VA → PA mapping called address translation • Protection • Split VA into virtual page number (VPN) & page offset (POFS) • Each page with a read/write/execute permission set by OS • Translate VPN into physical page number (PPN) • Enforced by hardware • POFS is not translated • Inter-process communication . • VA → PA = [VPN, POFS] → [PPN, POFS] • Map same physical pages into multiple virtual address spaces • Or share files via the UNIX mmap() call • Example above OS App1 App2 • 64KB pages → 16-bit POFS … … … • 32-bit machine → 32-bit VA → 16-bit VPN • Maximum 256MB memory → 28-bit PA → 12-bit PPN CIS 371 (Martin): Virtual Memory 19 CIS 371 (Martin): Virtual Memory 20

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend