lec6-2 - EECS Instructional Support Group Home Page
Download
Report
Transcript lec6-2 - EECS Instructional Support Group Home Page
CS 152
Computer Architecture and Engineering
Lecture 12 -- Virtual Memory
2014-2-27
John Lazzaro
(not a prof - “John” is always OK)
TA: Eric Love
www-inst.eecs.berkeley.edu/~cs152/
Play:
CS 152 L12: Virtual Memory
UC Regents Spring 2014 © UCB
Today’s Lecture - Virtual Memory
Virtual address spaces
Page table layout
TLB design options
Virtual machines
Exceptions and interrupts
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
The Limits of Physical Addressing
“Physical addresses” of memory locations
A0-A31
CPU
A0-A31
Where we are in CS 152 ...
D0-D31
Memory
D0-D31
Data
All programs share one address space:
The physical address space
Machine language programs must be
aware of the machine organization
No way to prevent a program from
accessing any machine resource
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
Apple II: A physically addressed machine
Apple ][ (1977)
CPU: 1000 ns
DRAM: 400 ns
Steve
Jobs
CS 152 L15: Virtual Memory
Steve
Wozniak
UC Regents Fall 2006 © UCB
Apple II: A physically addressed machine
Apple ][ (1977)
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
The Limits of Physical Addressing
“Physical addresses” of memory locations
A0-A31
CPU
A0-A31
Programming the Apple ][ ...
D0-D31
Memory
D0-D31
Data
All programs share one address space:
The physical address space
Machine language programs must be
aware of the machine organization
No way to prevent a program from
accessing any machine resource
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
Solution: Add a Layer of Indirection
“Physical Addresses”
“Virtual Addresses”
A0-A31
Virtual
Physical
Address
Translation
CPU
D0-D31
A0-A31
Memory
D0-D31
Data
User programs run in an standardized
virtual address space
Address Translation hardware
managed by the operating system (OS)
maps virtual address to physical memory
Hardware supports “modern” OS features:
Protection, Translation, Sharing
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
MIPS R4000: Address Space Model
Process A
ASID = Address Space Identifier
ASID = 12
Process A and B have
independent address spaces
32
2 -1
Address
Error
2
2 GB
32
2 -1
Address
Error
31
2
When Process A writes its
address 9, it writes to a different
physical memory location than
Process B’s address 9
To let Process A and B share
memory, OS maps parts of
ASID 12 and ASID 13 to the same
physical memory locations.
0
ASID = 13
All address spaces
use a standard memory map
May only be accessed by
kernel/supervisor
31
Process B
2 GB
0
Still works (slowly!) if a process accesses more virtual memory than
the machine has physical memory
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
MIPS R4000: Who’s Running on the CPU?
System Control Registers
Status (12): Indicates
user, supervisor, or
kernel mode
EntryLo0 (2): 8-bit ASID
field codes virtual
address space ID.
User cannot write supervisor/kernel bits.
Supervisor cannot write kernel bit.
User cannot change address
translation configuration
or run other privileged instructions ...
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
MIPS Address Translation: How it works
“Physical Addresses”
“Virtual Addresses”
A0-A31
Virtual
Physical
Translation
Look-Aside
Buffer
(TLB)
CPU
D0-D31
A0-A31
Memory
D0-D31
Data
What is the
table of
Translation Look-Aside Buffer (TLB)
mappings
A small fully-associative cache of
that it
mappings from virtual to physical addressescaches?
TLB also contains ASID and
kernel/supervisor bits for virtual address
Fast common case: Virtual address is in TLB,
process has permission to read/write it.
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
Page tables code virtual address spaces
Page Table
(One per ASID)
Physical
Memory Space
frame
frame
A virtual address space
is divided into blocks
of memory called pages
frame
frame
virtual
address
OS
manages
the page
table for
each ASID
A machine
usually supports
pages of a few
sizes
(MIPS R4000):
A page table is indexed by a
virtual address
A valid page table entry codes physical
memory “frame” address for the page
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
The TLB caches page table entries
In this example,
physical and virtual
pages must be
the same size!
TLB caches
page table
entries.
virtual address
page
for ASID
off
Physical
frame
address
Page Table
2
0
1
3
TLB
frame page
2
2
0
5
CS 152 L15: Virtual Memory
physical address
frame
page off
MIPS handles TLB misses
in software (random
replacement). Other
machines use hardware.
V=0 pages either
reside on disk or
have not yet been
allocated.
OS handles V=0
“Page fault”
UC Regents Fall 2006 © UCB
Page tables may not fit in memory!
A table for 4KB pages for a 32-bit
address space has 1M entries
Each process needs its own address space!
Two-level Page Tables
32 bit virtual address
31
22 21
12 11
0
P1 index P2 index Page Offset
Top-level table wired in main memory
Subset of 1024 second-level tables in
main memory; rest are on disk
or unallocated
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
What if a page resides on disk?
TLB caches
page table
entries.
virtual address
page
for ASID
off
Physical
frame
address
Page Table
2
0
1
3
TLB
frame page
2
2
0
5
V=0 pages either
reside on disk or
page off
have not yet been
allocated.
OS handles V=0
Question: What to do when a
“Page fault”
TLB miss causes an access to
physical address
a page table entry with V=0?
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
VM and Disk: Page replacement policy
Dirty bit:
Page Table
page has been dirty used
written.
1 0
...
Set of all pages
in Memory
Head pointer
Place pages on free
list if used bit
is still clear.
Schedule pages
with dirty bit set to
be written to disk.
Used bit:
set to
1 on any
reference
1
0
1
0
0
1
1
0
Tail pointer:
Clear the used
bit in the
page table
Freelist
On page fault: deallocate
page table entry of a page
on the free list.
Free Pages
Architect’s role: support setting dirty and used bits
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
TLB Design Concepts
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
MIPS R4000 TLB: A closer look ...
“Physical Addresses”
“Virtual Addresses”
A0-A31
Virtual
Physical
Translation
Look-Aside
Buffer
(TLB)
CPU
D0-D31
A0-A31
Memory
System
D0-D31
Data
Checked
against
CPU ASID
CS 152 L15: Virtual Memory
Physical space larger
than virtual space!
UC Regents Fall 2006 © UCB
Can TLB and caching be overlapped?
Virtual Page Number
Page Offset
Index
Byte Select
Virtual
Translation
Look-Aside
Buffer
(TLB)
Cache Tags Valid
Cache Block
Physical
Cache Tag
This works, but ...
Cache Data
=
Cache Block
Hit
Q. What is the downside?
A. Inflexibility. VPN size
locked to cache tag size.
CS 152 L15: Virtual Memory
Data out
UC Regents Fall 2006 © UCB
Can we cache virtual addresses?
“Physical Addresses”
“Virtual Addresses”
A0-A31
Virtual
Virtual
CPU
Cache
D0-D31
D0-D31
Physical
Translation
Look-Aside
Buffer
(TLB)
A0-A31
Main Memory
D0-D31
Only use TLB on a cache miss !
Downside: A subtle problem. What is it?
A. Synonym problem. If two address spaces share a
physical frame, data may be in cache twice.
Maintaining consistency is tricky.
Solution: Anti-aliasing. See book, page
B-38.
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
Virtual Memory Recap
VM: Uniform memory models,
protection, sharing.
A TLB acts as a fast cache for
recent address translations.
Operating systems manage
the page table and (often) the TLB
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
Break
Play:
CS 152 L12: Virtual Memory
UC Regents Spring 2014 © UCB
Running Windows on a Mac
2006 edition ...
Depends on the meaning of the word
“run” ...
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
Method #1: Boot Camp
Basic Idea: New Macs use
Intel CPU and support chips.
So, set up boot ROM to let
you choose Win or OS X.
+++ Great compatibility.
Just add device drivers.
+++ No performance hit:
full-speed, use all RAM, etc.
--- Must reboot to change OS.
--- Sharing files between OS
partitions securely is tricky.
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
Method #2: Run WINE on OS X
Basic Idea: Emulate the Windows API in software
running under OS X. Lets you run Windows apps
in a “compatibility box” without running Windows.
+++ Do not need
to buy Windows.
+++ No reboot
to run Win-app.
--- Slow.
--- Chances are,
the app you
want to run has
compatibility
woes.
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
Method 3: Virtual PC
Basic Idea: Make a software emulation of PC
hardware. Runs as a user process under OS X.
Boot Windows and run apps on the emulator.
+++ Runs on
PowerPC Macs.
+++ Good
compatibility.
Easier to
emulate CPU
than Win API.
--- Must
buy Windows.
--- Slow
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
Emulating a PC --> emulating everything!
Windows expects to see raw disks,
so VirtualPC has Virtual Disks.
Windows expects to set up a graphics
card, to VirtualPC has a Virtual GPU.
Windows expects to manipulate page
tables, so VirtualPC has Virtual TLB.
Windows expects to to configure
network: Virtual Ethernet Card.
Like the movie “The Truman Show” ... no wonder its slow
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
Method 4: Parallels, a Virtual Machine
Basic Idea: Like emulating a PC, but different. Use an
Intel-based Mac, runs on top of OS X. Uses hardware
support to create a fast virtual PC that boots Windows.
+++ Reasonable
performance.
Virtual CPU runs
33% slower than
running on
physical CPU.
(2006 data)
2 GB physical
memory for a 512
MB virtual PC to
run w/o disk swaps.
CS 152 L15: Virtual Memory
Source: http://www.atpm.com/12.10/parallels.shtml
UC Regents Fall 2006 © UCB
“Hardware assist?” What do we mean?
In an emulator, we run Windows code
by simulating the CPU in software.
In a virtual machine, we let safe
instructions (ex: ADD R3 R2 R1) run
on the actual hardware in user mode.
We use hardware features to prevent
direct execution of unsafe instructions
(ex: change a page table entry).
We trap each attempt, and emulate
the instruction in software, in a safe way.
A “trap” is one type of “exception” ...
CS 152 L15: Virtual Memory
UC Regents Fall 2006 © UCB
Exceptions and Interrupts
Exception: An unusual event happens to an
instruction during its execution. Examples: divide
by zero, undefined opcode.
Interrupt: Hardware signal to switch the processor to
a new instruction stream. Example: a sound card
interrupts when it needs more audio output samples
(an audio “click” happens if it is left waiting).
CS 194-6 L10: Advanced Processors II
UC Regents Fall 2008 © UCB
Challenge: Precise Interrupt / Exception
Definition:
(or exception)
Follows from the contract between
the architect and the programmer ...
CS 194-6 L10: Advanced Processors II
UC Regents Fall 2008 © UCB
Precise Exceptions in Static Pipelines
Key observation: architected state only
changes in memory and register write
stages.
CS 194-6 L10: Advanced Processors II
UC Regents Fall 2008 © UCB
Adding trap support to pipelines ...
Detect @ decode, set an Exc
E bit
Call the code to be run on this trap type.
Pass along Cause and EPC as
arguments.
CS 194-6 L10: Advanced Processors II
UC Regents Fall 2008 © UCB
Virtual Machines: Better as servers than clients
Google runs Linux servers running the KVM module
(Kernel Virtual Machine Monitor) and spins up VMs
with varying specs on demand.
$2/hour for a 16-virtual-core 104GB machine ...
Shell command for managing VMs ...
Command-line
arguments set
RAM, disk,
network ...
and the OS
to install.
VMs can be
monitored and
reconfigured
on the fly.
Under the hood
When the guest OS tries to privileged
instructions, host kernel intercepts.
What Google customers
“think” is happening.
(Guest)
Where Google
runs “make new
VM” commands
What actually
happens.
Example: Paging
Guest OS runs instructions that manipulate page tables,
and as far as it can tell everything works OK.
Hypervisor
watches every
Guest OS move,
and updates the
“shadow” page
tables and TLB
to work correctly.
Exists to
“fake out”
guest OS.
Hardware Support
Intel VT-x adds
a new level of
privilege where
hypervisors can run
(VMX root).
Guest OS’s run
in “kernel mode”
(ring 0) like they do
on bare metal.
Hypervisor relieved
from faking guest
privilege levels.
Hardware Support
Intel VT-x supports
Extended
Page Tables
(EPT).
The TLB and
the page
replacement
hardware
tracks the
shadow/guests
page mappings.
A work in progress
Each
generation
of Intel server
adds new
features for
virtualization,
and improves
the latency for
getting in and
out of VMX root
mode for critical
operations.
On Tuesday
Memory semantics for multi-core ...
Have a good weekend !