Virtual memory intro

advertisement
16.317: Microprocessor
System Design I
Instructor: Dr. Michael Geiger
Spring 2012
Lecture 22: Virtual memory
Lecture outline

Announcements/reminders



Lab 2 due 3/28
HW 3 due 3/26
Lecture outline

Review




Virtual memory



4/13/2015
Local memory accesses
Interrupt descriptor table
Task switching
Benefits
VM and 80386 segmentation
Paging
Microprocessors I: Lecture 22
2
Review

Local memory access


Selector indicates access is global (TI == 1)
LDTR points to LDT descriptor in GDT


Index field in selector chooses descriptor from LDT





Descriptor provides starting address of segment
Provide starting address, length of interrupt service routines
Limited to 256 descriptors
Stored in IDT; IDTR holds base/limit of IDT
Task switching



4/13/2015
Descriptor addr = (LDT base) + (selector index * 8)
Interrupt descriptors


Actual base, limit of LDT stored in LDTR cache
Task register (TR): selector for current task state segment (TSS)
TSS stores all state (register values) for current task
Task switch: jump/call that changes TR; old TSS saved and new one
loaded
Microprocessors I: Lecture 22
3
Problems with memory

DRAM may be too expensive to buy
enough to cover whole address space



Most systems run multiple programs

4/13/2015
We need our programs to work even if they
require more memory than we have
A program that works with 512 MB RAM
should still work with 256 MB RAM
Most processors don’t have hardware
multitasking support (like the 386)
Microprocessors I: Lecture 22
4
Solutions

Leave the problem up to the programmer


Overlays


Compiler identifies mutually exclusive regions
Virtual memory


4/13/2015
Assume programmer knows exact memory
configuration
Use hardware and software to automatically
translate references from virtual address (what
the programmer sees) to physical address
(index to DRAM or disk)
Most virtual addresses not present in physical
memory!
Microprocessors I: Lecture 22
5
Virtual Address and VA Space

80386 virtual addresses: 48-bit


Used by Memory Management Unit (MMU)
Consists of




Segment can be as large as 4GB
Virtual address space can be 246 bytes (64
Terabytes)

4/13/2015
Selector (16bit): can be one of the segment
selector register
Offset (32bit): can be EIP or other 32-bit registers
2 bits used for privilege level in selector
Microprocessors I: Lecture 22
6
Address translation

Virtual address  physical address



Need address translation mechanism
May take multiple steps
On 80386, two (main) levels

Virtual address (VA)  linear address (LA)


Linear address  physical address (PA)


4/13/2015
Uses selectors, descriptors discussed so far
If using segmented memory model, PA == LA
If using paged memory model, translate LA to PA
Microprocessors I: Lecture 22
7
Segmented Partition of Virtual
Address Space

80386 virtual memory space is divided into
global and local memory address space



Up to 8192 segments may exist in either global
or local address space



4/13/2015
32 Terabytes global address space
32 Terabytes local address space
Because maximum size of GDT is 64KBytes, each
descriptor is 8bytes, 64KB/8B = 8192
Not all descriptors are normally in use
Task has both global and local memory space
Microprocessors I: Lecture 22
8
Physical Memory Space and Virtualto-Physical Address Translation

4GB physical memory vs 64TB virtual memory
space



Segments not in use is stored on secondary
storage device
Address translation: 48bit VA -> 32bit PA


4/13/2015
Just a small amount of the information in virtual
memory can reside in physical memory
Segment translation
Page translation
Microprocessors I: Lecture 22
9
Memory Swap


MMU determines whether or not a segment or
page resides in physical memory
If not present, “swap”


4/13/2015
memory management software initiates loading of
the segment or page from external storage device to
physical memory
A segment or page in physical memory will be
swapped out and stored in external storage device
Microprocessors I: Lecture 22
10
Segmentation Virtual to Physical
Address Translation


48-bit virtual address (selector + offset) translated to
32-bit physical address
“Selector” used to find segment descriptor in LDT


Segment descriptor cache defines the location and size
of code/data segment




4/13/2015
64-bit segment descriptor cache register in 80386 contains:
access rights (12b), base address(32b), limit(20b)
Code/data segments in physical memory
Offset is the address of the data to be accessed in the
segment
Segment base address + offset = 32b linear address
32b linear address is physical address, if paging is
disabled
Microprocessors I: Lecture 22
11
Example
Segment selector = 0100H
offset = 00002000H
segment base address = 00030000H
Q:What is the virtual address? Physical address?
A: VA = 0100:00002000H
linear address = base address + offset
= 00030000H+00002000H
= 00032000H
if paging disabled, PA = linear addr = 00032000H

4/13/2015
Microprocessors I: Lecture 22
12
Paged partition of Virtual
Address Space

Physical memory is organized in 4KB pages


Simplifies the implementation of the memory
management software



Fixed 4K pages make space allocation and
deallocation easier than segmentation
Space in a page might not be fully utilized
Linear address is not direct physical address


4/13/2015
4GB/4KB = 1,048,496 pages
Undergo a second translation - page translation
Format: 12-b offset, 10-b page, 10-b directory field
Microprocessors I: Lecture 22
13
Managing virtual memory

Effectively treat main memory as a cache



Blocks are called pages
Misses are called page faults
Virtual address consists of virtual page
number and page offset
Virtual page number
31
4/13/2015
Page offset
11
Microprocessors I: Lecture 22
0
14
Virtual address spaces
Page Table
Physical
Memory Space
frame
A virtual address space
is divided into blocks
of memory called pages
frame
frame
frame
virtual
address
OS
manages
the page
table for
each ASID
4/13/2015
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
Microprocessors I: Lecture 22
15
Details of Page Table
Page Table
Physical
Memory Space
Virtual Address
12
offset
frame
frame
V page no.
frame
Page Table
frame
virtual
address
Page Table
Base Reg
index
into
page
table
V
Access
Rights
PA
table located
in physical P page no.
memory
offset
12
Physical Address


Page table maps virtual page numbers to physical frames
(“PTE” = Page Table Entry)
Virtual memory => treat memory  cache for disk
4/13/2015
Microprocessors I: Lecture 22
16
Paging on 80386

Two-level page table

First level: “page directory”



Second level: “page table”




Starting address of each “page table” stored in page
directory
Indexed by middle 10 bits of linear address
Provides starting address of physical page frame
Physical address = (page frame base) +
(offset)

4/13/2015
Starting address stored in CR3 (page directory base
register (PDBR))
Indexed by upper 10 bits of linear address
Offset = lowest 12 bits of linear address
Microprocessors I: Lecture 22
17
Virtual memory performance


Address translation accesses memory to get
PTE  every memory access twice as long
Solution: store recently used translations

Translation lookaside buffer (TLB): a cache for
page table entries



4/13/2015
“Tag” is the virtual page #
TLB small  often fully associative
TLB entry also contains valid bit (for that translation);
reference & dirty bits (for the page itself!)
Microprocessors I: Lecture 22
18
Next time

4/13/2015
Virtual memory examples
Microprocessors I: Lecture 22
19
Download
Study collections