lecture 21: virtual memory › ~jtang › cs411.s20 › lectures › l21virtu… · virtual memory...

23
Lecture 21: Virtual Memory Spring 2020 Jason Tang 1

Upload: others

Post on 07-Jul-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Lecture 21: Virtual Memory

Spring 2020Jason Tang

�1

Page 2: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Topics

• Virtual addressing

• Page tables

• Translation lookaside buffer

�2

Page 3: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Computer Organization

• Discussion thus far has concentrated upon the processor and then memory

• Will now start describing connection between processor and memory, processor and devices, and memory and devices

�3

ComputerProcessor Memory Devices

Control

Datapath

Input

Output

Page 4: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

System Interconnect

�4

Processor

Cache Tag and Data

Memory-I/O Bus

Snoop Tag

DRAM

Processor

Cache Tag and Data

Snoop Tag

Processor

Cache Tag and Data

Snoop Tag

Disk Controller

Network Interface I/O Bridge

MMU MMU MMU

Page 5: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Address Spaces

• Virtual Address (or logical address): address generated by CPU

• Physical Address: address calculated by memory management unit (MMU)

• DMA: direct memory access

• DMA Address (or bus address): addresses used by devices to send data between themselves

• DMA addresses do not always match physical address

�5

Page 6: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Virtual Address Space

• Separation of logical memory from physical memory, to allow for process isolation

• Virtual address space usually much larger than physical memory

• From perspective of a running program on the processor, load and store instructions are performed relative to that program’s virtual address space

• MMU maps between virtual and physical addresses

• Avoid need for contiguous memory blocks

• Allows programs to be loaded at any physical memory location (relocation)

�6

Page 7: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Virtual Memory

�7

Cache Virtual MemoryBlock Page

Cache Miss Page FaultBlock Addressing Address Translation

Operating System Concepts,Silberschatz, Galvin, and Gagne

Page 8: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Page Fault Handling

• Main memory can be considered as a cache of disk contents

• Upon a page fault, the system [sometimes] loads the missing data from disk (“swap in”)

• Very costly, can take millions of cycles to process

• Pages should be large enough to reduce page fault rate

• Modified data are cached as memory pages and then later flushed to disk (write back), as that constantly writing to disk is too slow (write through)

• When selecting a victim page to evict, LRU is most common algorithm

�8

Page 9: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Virtual Addressing

• Address is broken into a virtual page number and a page offset

• MMU translates virtual page number to a physical page number

• Example: ARMv8-A has 64-bit virtual addresses, but only lower 48 bits (256 TiB) are used. Suppose that physical address space is only 40 bits (1 TiB), and a page is 4 KiB. Then:

�9

Must be 0 Page OffsetVirtual Page Number

Page OffsetPhysical Page Number

63 47 11

1139

48 12

12 0

0

Translation

Page 10: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Memory Maps

• In a set-associative cache, a particular memory block is mapped to some particular set

• With paging, the operating system maintains the memory mappings between virtual addresses and physical addresses

• Multiple virtual addresses map to the same physical address to support shared memory

• Multiple physical addresses map to the same virtual address to support process forking (or after a copy-on-write page has been modified)

�10

Page 11: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Page Table

• [Usually] Stored in main memory

• Page Table Register holds the address for the beginning of page table

• Operating system maintains a different page table for each process

• Each entry in table gives a mapping between from a virtual to a physical address

• If a computed load/store virtual address does not have an entry within table, then MMU raises an interrupt (a page fault)

�11

Page 12: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Page Table

• Every page table entry hascontrol flags:

• Valid Bit: If set,then proceed withmemory access;otherwise raiseinterrupt

• Dirty Bit: Set by hardwarewhen page is modified

• In simplest case, virtual page number is an index number into page table

�12

Page OffsetVirtual Page Number

Page OffsetPhysical Page Number

47 11

1139

12

12 0

0

Page Table Register

Valid

Dirty

Physical Page Number

28

36

Page 13: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Page Table Size

• Many architectures default to 4 KiB pages (12 bits)

• For a 32-bit virtual address, that means upper 20 bits give a virtual page number, and lower 12 bits are an offset into the resulting physical page

• To fully utilize a 4 GiB address space (32 bits), number of page table entries is

• If each page table entry is 32 bits (4 bytes), then entire page table requires 222 bytes = 4 MiB (which is greater than a page itself)

• Need to either increase page sizes (“huge pages”), or use multi-level paging

�13

Page 14: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Multi-Level Page Table

• Instead of using virtual page number as an index into a single page table, split those bits to specify a first level and second level page

• Example: For a 32-bit virtual address with4 KiB pages, let the first 10 bits index intoa first level page table. The entry in theregives the physical address of the secondlevel page table. Let the next 10 bits indexinto that second level page table. Use theentry in the second page table to get thefinal physical page number.

�14

32-bit address:

P1 index P2 index page offset

10 10 12

4 bytes

4 bytes

4KB1K PTEs

Page 15: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

ARMv8-A Multi-Level Page Table

• ARMv8-A has 64-bit virtual addresses, and allows for various page sizes

• For 4 KiB pages (“granules”), bits [47:39] specifies one of 512 entries within L0 table; each entry gives an address of a L1 table. Because each entry is 8 bytes, 512 × 8 = 4096 bytes, which is the page size. Bits [38:30] gives index within L1 table, bits [29:21] gives index with L2 table, bits [20:12] gives index within L3 table.

• For 64 KiB pages, bits [47:42] are index into L1 table, bits [41:29] are index into L2 table, and then bits [28:16] are index into L3 table. Bits [15:0] are the page offset.

�15ARM Cortex-A Series Programmer’s Guide, §12.4.2

Page 16: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

ARMv8-A Multi-Level Page Table

�16ARM Cortex-A Series Programmer’s Guide, §12.3

Page 17: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

TLB

• Each lookup into a page table incurs more memory overhead

• Translation Lookaside Buffer (TLB): cache within MMU that stores recent translation lookups

• TLB Hit: Translation of a virtual address resolved by a cached TLB entry

• TLB size is limited, so MMU replaces old TLBs (either automatically or via software) when a new one is cached

• Like normal cache, TLB entries can be invalidated to force a refetch of the page table entries

�17

Page 18: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

TLB Lookup

�18Operating System Concepts,Silberschatz, Galvin, and Gagne

Page 19: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

TLB and Cache Example

�19

Valid Tag Data

Page offset

Page offset

Virtual page number

Virtual address

Physical page numberValid

1220

20

16 14

Cache index

32

Cache

DataCache hit

2

Byteoffset

Dirty Tag

TLB hit

Physical page number

Physical address tag

TLB

Physical address

31 30 29 15 14 13 12 11 10 9 8 3 2 1 0

Upon TLB miss, perform external table

walk to resolve physical page number

Upon cache miss, fill cache block with data

from memory

Page 20: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

TLB and Cache

• TLB hit and data cache hit are independent

• A TLB entry must exist before data cache can be accessed

• Page table itself can be cached

�20

Yes

Deliver datato the CPU

Write?

Try to read datafrom cache

Write data into cache,update the tag, and putthe data and the addressinto the write buffer

Cache hit?Cache miss stall

TLB hit?

TLB access

Virtual address

TLB missexception

No

YesNo

YesNo

Write accessbit on?

YesNo

Write protectionexception

Physical address

Page 21: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Memory Exceptions Summary

• Cache miss: referenced block not in cache; needs to be fetch from main memory

• TLB miss: referenced page of virtual address needs to be check in page table

• Page fault: reference page not in main memory (may need to load from disk)

�21

Cache TLB Page Condition

miss hit hit Possible, but page table is unchecked if TLB hitshit miss hit TLB miss, but entry found in page table and data in cache

miss miss hit TLB miss, but entry found in page table and date miss in cache

miss miss miss TLB miss, followed by page fault; data missed in cachemiss hit miss Impossible: to translation possible if page not in memory

hit hit miss Impossible: to translation possible if page not in memory

hit miss miss Impossible: data cannot be cached if page is not in memory

Page 22: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Memory Protection Bits

• Page table entries support protection bits in addition to valid and dirty bits:

• Read-only or read-write

• Executable or non-executable

• User mode or privileged mode

• Operating system uses protection bits to enforce separation of data between system and user processes

�22

Memory Region Protection

Stack RW, NX

Heap RW, NX

Text RO, X

Constants RO, NX

Page 23: Lecture 21: Virtual Memory › ~jtang › cs411.s20 › lectures › L21Virtu… · Virtual Memory 7 Cache Virtual Memory Block Page Cache Miss Page Fault Block Addressing Address

Handling TLB Misses and Page Faults

• TLB Miss: handled by hardware

• Check if page is in memory; if is valid then update TLB

• Raise page fault interrupt if page is not in memory

• Page Fault: handled by operating system

• OS interrupt handler determines cause of page fault

• If OS needs to load referenced data from disk, it will restart instruction after disk I/O completes; until then OS keeps the process suspended

�23