Address Transla+on Main Points Address Transla+on Concept - - PowerPoint PPT Presentation

address transla on main points
SMART_READER_LITE
LIVE PREVIEW

Address Transla+on Main Points Address Transla+on Concept - - PowerPoint PPT Presentation

Address Transla+on Main Points Address Transla+on Concept How do we convert a virtual address to a physical address? Flexible Address Transla+on


slide-1
SLIDE 1

Address ¡Transla+on ¡

slide-2
SLIDE 2

Main ¡Points ¡

  • Address ¡Transla+on ¡Concept ¡

– How ¡do ¡we ¡convert ¡a ¡virtual ¡address ¡to ¡a ¡physical ¡ address? ¡

  • Flexible ¡Address ¡Transla+on ¡

– Base ¡and ¡bound ¡ – Segmenta+on ¡ – Paging ¡ – Mul+level ¡transla+on ¡

  • Efficient ¡Address ¡Transla+on ¡

– Transla+on ¡Lookaside ¡Buffers ¡ – Virtually ¡and ¡physically ¡addressed ¡caches ¡

slide-3
SLIDE 3

Address ¡Transla+on ¡Concept ¡

Translation Physical Memory Virtual Address Raise Exception Physical Address Valid Processor Data Data Invalid

slide-4
SLIDE 4

Address ¡Transla+on ¡Goals ¡

  • Memory ¡protec+on ¡
  • Memory ¡sharing ¡

– Shared ¡libraries, ¡interprocess ¡communica+on ¡

  • Sparse ¡addresses ¡

– Mul+ple ¡regions ¡of ¡dynamic ¡alloca+on ¡(heaps/stacks) ¡

  • Efficiency ¡

– Memory ¡placement ¡ – Run+me ¡lookup ¡ – Compact ¡transla+on ¡tables ¡

  • Portability ¡
slide-5
SLIDE 5

Bonus ¡Feature ¡

  • What ¡can ¡you ¡do ¡if ¡you ¡can ¡(selec+vely) ¡gain ¡

control ¡whenever ¡a ¡program ¡reads ¡or ¡writes ¡a ¡ par+cular ¡virtual ¡memory ¡loca+on? ¡

  • Examples: ¡

– Copy ¡on ¡write ¡ – Zero ¡on ¡reference ¡ – Fill ¡on ¡demand ¡ – Demand ¡paging ¡ – Memory ¡mapped ¡files ¡ – … ¡

slide-6
SLIDE 6

A ¡Preview: ¡MIPS ¡Address ¡Transla+on ¡

  • SoVware-­‑Loaded ¡Transla+on ¡lookaside ¡buffer ¡(TLB) ¡

– Cache ¡of ¡virtual ¡page ¡-­‑> ¡physical ¡page ¡transla+ons ¡ – If ¡TLB ¡hit, ¡physical ¡address ¡ – If ¡TLB ¡miss, ¡trap ¡to ¡kernel ¡ – Kernel ¡fills ¡TLB ¡with ¡transla+on ¡and ¡resumes ¡execu+on ¡

  • Kernel ¡can ¡implement ¡any ¡page ¡transla+on ¡

– Page ¡tables ¡ – Mul+-­‑level ¡page ¡tables ¡ – Inverted ¡page ¡tables ¡ – … ¡

slide-7
SLIDE 7

A ¡Preview: ¡MIPS ¡Lookup ¡

Physical Memory

Frame Offset Physical Address Page# Offset Virtual Address Translation Lookaside Buffer (TLB) Virtual Page Page Frame Access Matching Entry Page Table Lookup

slide-8
SLIDE 8

Virtually ¡Addressed ¡Base ¡and ¡Bounds ¡

Base Bound

Physical Memory Processor’s View Implementation

Virtual Address Virtual Memory Physical Address Base Base+ Bound Raise Exception Processor Virtual Address Processor

slide-9
SLIDE 9

Ques+on ¡

  • With ¡virtually ¡addressed ¡base ¡and ¡bounds, ¡

what ¡is ¡saved/restored ¡on ¡a ¡process ¡context ¡ switch? ¡

slide-10
SLIDE 10

Virtually ¡Addressed ¡Base ¡and ¡Bounds ¡

  • Pros? ¡

– Simple ¡ – Fast ¡(2 ¡registers, ¡adder, ¡comparator) ¡ – Safe ¡ – Can ¡relocate ¡in ¡physical ¡memory ¡without ¡changing ¡ process ¡

  • Cons? ¡

– Can’t ¡keep ¡program ¡from ¡accidentally ¡overwri+ng ¡its ¡

  • wn ¡code ¡

– Can’t ¡share ¡code/data ¡with ¡other ¡processes ¡ – Can’t ¡grow ¡stack/heap ¡as ¡needed ¡

slide-11
SLIDE 11

Segmenta+on ¡

  • Segment ¡is ¡a ¡con+guous ¡region ¡of ¡virtual ¡memory ¡
  • Each ¡process ¡has ¡a ¡segment ¡table ¡(in ¡hardware) ¡

– Entry ¡in ¡table ¡= ¡segment ¡

  • Segment ¡can ¡be ¡located ¡anywhere ¡in ¡physical ¡

memory ¡

– Each ¡segment ¡has: ¡start, ¡length, ¡access ¡permission ¡

  • Processes ¡can ¡share ¡segments ¡

– Same ¡start, ¡length, ¡same/different ¡access ¡permissions ¡

slide-12
SLIDE 12

Segmenta+on ¡

Base Bound Access Read R/W R/W R/W Segment Offset Raise Exception

Physical Memory Process View Implementation

Virtual Address Virtual Memory Physical Address Base 3 Base+ Bound 3 Base 0 Base+ Bound 0 Base 1 Base+ Bound 1 Base 2 Base+ Bound 2 Processor Virtual Address Segment Table Processor Code Data Heap Stack Stack Data Code Heap

slide-13
SLIDE 13

main: ¡240 ¡ store ¡#1108, ¡r2 ¡ 244 ¡ store ¡pc+8, ¡r31 ¡ 248 ¡ jump ¡360 ¡ 24c ¡ … ¡ strlen: ¡360 ¡ loadbyte ¡(r2), ¡r3 ¡ … ¡ … ¡ 420 ¡ jump ¡(r31) ¡ … ¡ x: ¡1108 ¡ a ¡b ¡c ¡\0 ¡ … ¡ x: ¡108 ¡ a ¡b ¡c ¡\0 ¡ … ¡ main: ¡4240 ¡ store ¡#1108, ¡r2 ¡ 4244 ¡ store ¡pc+8, ¡r31 ¡ 4248 ¡ jump ¡360 ¡ 424c ¡ … ¡ … ¡ strlen: ¡4360 ¡ loadbyte ¡(r2),r3 ¡ … ¡ 4420 ¡ jump ¡(r31) ¡ … ¡ Segment ¡start ¡ length ¡ code ¡ 0x4000 ¡ 0x700 ¡ data ¡ 0 ¡ 0x500 ¡ heap ¡

  • ­‑ ¡
  • ­‑ ¡

stack ¡ 0x2000 ¡ 0x1000 ¡ Virtual ¡Memory ¡ Physical ¡Memory ¡ 2 ¡bit ¡segment ¡# ¡ 12 ¡bit ¡offset ¡

slide-14
SLIDE 14

Ques+on ¡

  • With ¡segmenta+on, ¡what ¡is ¡saved/restored ¡on ¡

a ¡process ¡context ¡switch? ¡

slide-15
SLIDE 15

UNIX ¡fork ¡and ¡Copy ¡on ¡Write ¡

  • UNIX ¡fork ¡

– Makes ¡a ¡complete ¡copy ¡of ¡a ¡process ¡

  • Segments ¡allow ¡a ¡more ¡efficient ¡implementa+on ¡

– Copy ¡segment ¡table ¡into ¡child ¡ – Mark ¡parent ¡and ¡child ¡segments ¡read-­‑only ¡ – Start ¡child ¡process; ¡return ¡to ¡parent ¡ – If ¡child ¡or ¡parent ¡writes ¡to ¡a ¡segment ¡(ex: ¡stack, ¡heap) ¡

  • trap ¡into ¡kernel ¡
  • make ¡a ¡copy ¡of ¡the ¡segment ¡and ¡resume ¡
slide-16
SLIDE 16

Base Bound Access 500

Physical Memory Processor’s View Implementation

Virtual Address 0x0500 Virtual Memory Process 1`s View Physical Address Processor Seg. Offset Virtual Address Virtual Address Segment Table Processor Base Bound Access Read R/W R/W R/W Read R/W R/W R/W 500 Seg. Offset Segment Table Processor Code Code Data Heap Stack Code Data Heap Stack Data Heap Stack P2`s Data Virtual Address 0x0500 Process 2`s View Processor Code Data Heap Stack P1`s Heap P1`s Stack P1`s Data P2`s Heap P1’s+ P2`s Code P2`s Stack

slide-17
SLIDE 17

Zero-­‑on-­‑Reference ¡

  • How ¡much ¡physical ¡memory ¡is ¡needed ¡for ¡the ¡

stack ¡or ¡heap? ¡

– Only ¡what ¡is ¡currently ¡in ¡use ¡

  • When ¡program ¡uses ¡memory ¡beyond ¡end ¡of ¡stack ¡

– Segmenta+on ¡fault ¡into ¡OS ¡kernel ¡ – Kernel ¡allocates ¡some ¡memory ¡

  • How ¡much? ¡

– Zeros ¡the ¡memory ¡

  • avoid ¡accidentally ¡leaking ¡informa+on! ¡

– Modify ¡segment ¡table ¡ – Resume ¡process ¡

slide-18
SLIDE 18

Segmenta+on ¡

  • Pros? ¡

– Can ¡share ¡code/data ¡segments ¡between ¡processes ¡ – Can ¡protect ¡code ¡segment ¡from ¡being ¡overwripen ¡ – Can ¡transparently ¡grow ¡stack/heap ¡as ¡needed ¡ – Can ¡detect ¡if ¡need ¡to ¡copy-­‑on-­‑write ¡

  • Cons? ¡

– Complex ¡memory ¡management ¡

  • Need ¡to ¡find ¡chunk ¡of ¡a ¡par+cular ¡size ¡

– May ¡need ¡to ¡rearrange ¡memory ¡from ¡+me ¡to ¡+me ¡to ¡ make ¡room ¡for ¡new ¡segment ¡or ¡growing ¡segment ¡

  • External ¡fragmenta+on: ¡wasted ¡space ¡between ¡chunks ¡
slide-19
SLIDE 19

Paged ¡Transla+on ¡

  • Manage ¡memory ¡in ¡fixed ¡size ¡units, ¡or ¡pages ¡
  • Finding ¡a ¡free ¡page ¡is ¡easy ¡

– Bitmap ¡alloca+on: ¡0011111100000001100 ¡ – Each ¡bit ¡represents ¡one ¡physical ¡page ¡frame ¡

  • Each ¡process ¡has ¡its ¡own ¡page ¡table ¡

– Stored ¡in ¡physical ¡memory ¡ – Hardware ¡registers ¡

  • pointer ¡to ¡page ¡table ¡start ¡
  • page ¡table ¡length ¡
slide-20
SLIDE 20

Paged ¡Transla+on ¡(Abstract) ¡

Physical Memory Proces View

Code Data Heap 1 Code 1 Heap Data 1 Heap 2 Stack 1 Stack 0 Code Data Heap Stack VPage 0 VPage 1 VPage N Frame 0 Frame M

slide-21
SLIDE 21

Paged ¡Transla+on ¡(Implementa+on) ¡

Frame Access

Physical Memory

Page Table Processor Frame 0 Frame 1 Frame M Page # Offset Virtual Address Page # Offset Virtual Address Frame Offset Physical Address Frame Offset Physical Address

slide-22
SLIDE 22

A ¡ B ¡ C ¡ D ¡ E ¡ F ¡ G ¡ H ¡ I ¡ J ¡ K ¡ L ¡

I ¡ J ¡ K ¡ L ¡ E ¡ F ¡ G ¡ H ¡ A ¡ B ¡ C ¡ D ¡

4 ¡ 3 ¡ 1 ¡ Page ¡Table ¡ Process ¡View ¡ Physical ¡Memory ¡

slide-23
SLIDE 23

Paging ¡Ques+ons ¡

  • With ¡paging, ¡what ¡is ¡saved/restored ¡on ¡a ¡

process ¡context ¡switch? ¡

– Pointer ¡to ¡page ¡table, ¡size ¡of ¡page ¡table ¡ – Page ¡table ¡itself ¡is ¡in ¡main ¡memory ¡

  • What ¡if ¡page ¡size ¡is ¡very ¡small? ¡
  • What ¡if ¡page ¡size ¡is ¡very ¡large? ¡

– Internal ¡fragmenta+on: ¡if ¡we ¡don’t ¡need ¡all ¡of ¡the ¡ space ¡inside ¡a ¡fixed ¡size ¡chunk ¡

slide-24
SLIDE 24

Paging ¡and ¡Copy ¡on ¡Write ¡

  • Can ¡we ¡share ¡memory ¡between ¡processes? ¡

– Set ¡entries ¡in ¡both ¡page ¡tables ¡to ¡point ¡to ¡same ¡page ¡frames ¡ – Need ¡core ¡map ¡of ¡page ¡frames ¡to ¡track ¡which ¡processes ¡are ¡ poin+ng ¡to ¡which ¡page ¡frames ¡(e.g., ¡reference ¡count) ¡

  • UNIX ¡fork ¡with ¡copy ¡on ¡write ¡

– Copy ¡page ¡table ¡of ¡parent ¡into ¡child ¡process ¡ – Mark ¡all ¡pages ¡(in ¡new ¡and ¡old ¡page ¡tables) ¡as ¡read-­‑only ¡ – Trap ¡into ¡kernel ¡on ¡write ¡(in ¡child ¡or ¡parent) ¡ – Copy ¡page ¡ – Mark ¡both ¡as ¡writeable ¡ – Resume ¡execu+on ¡

slide-25
SLIDE 25

Fill ¡On ¡Demand ¡

  • Can ¡I ¡start ¡running ¡a ¡program ¡before ¡its ¡code ¡is ¡in ¡

physical ¡memory? ¡

– Set ¡all ¡page ¡table ¡entries ¡to ¡invalid ¡ – When ¡a ¡page ¡is ¡referenced ¡for ¡first ¡+me, ¡kernel ¡trap ¡ – Kernel ¡brings ¡page ¡in ¡from ¡disk ¡ – Resume ¡execu+on ¡ – Remaining ¡pages ¡can ¡be ¡transferred ¡in ¡the ¡ background ¡while ¡program ¡is ¡running ¡

slide-26
SLIDE 26

Sparse ¡Address ¡Spaces ¡

  • Might ¡want ¡many ¡separate ¡dynamic ¡

segments ¡

– Per-­‑processor ¡heaps ¡ – Per-­‑thread ¡stacks ¡ – Memory-­‑mapped ¡files ¡ – Dynamically ¡linked ¡libraries ¡

  • What ¡if ¡virtual ¡address ¡space ¡is ¡large? ¡

– 32-­‑bits, ¡4KB ¡pages ¡=> ¡500K ¡page ¡table ¡entries ¡ – 64-­‑bits ¡=> ¡4 ¡quadrillion ¡page ¡table ¡entries ¡

slide-27
SLIDE 27

Mul+-­‑level ¡Transla+on ¡

  • Tree ¡of ¡transla+on ¡tables ¡

– Paged ¡segmenta+on ¡ ¡ – Mul+-­‑level ¡page ¡tables ¡ – Mul+-­‑level ¡paged ¡segmenta+on ¡

  • Fixed-­‑size ¡page ¡as ¡lowest ¡level ¡unit ¡of ¡alloca+on ¡

– Efficient ¡memory ¡alloca+on ¡(compared ¡to ¡segments) ¡ – Efficient ¡for ¡sparse ¡addresses ¡(compared ¡to ¡paging) ¡ – Efficient ¡disk ¡transfers ¡(fixed ¡size ¡units) ¡ – Easier ¡to ¡build ¡transla+on ¡lookaside ¡buffers ¡ – Efficient ¡reverse ¡lookup ¡(from ¡physical ¡-­‑> ¡virtual) ¡ – Variable ¡granularity ¡for ¡protec+on/sharing ¡

slide-28
SLIDE 28

Paged ¡Segmenta+on ¡

  • Process ¡memory ¡is ¡segmented ¡
  • Segment ¡table ¡entry: ¡

– Pointer ¡to ¡page ¡table ¡ – Page ¡table ¡length ¡(# ¡of ¡pages ¡in ¡segment) ¡ – Access ¡permissions ¡

  • Page ¡table ¡entry: ¡

– Page ¡frame ¡ – Access ¡permissions ¡

  • Share/protec+on ¡at ¡either ¡page ¡or ¡segment-­‑level ¡
slide-29
SLIDE 29

Paged ¡Segmenta+on ¡(Implementa+on) ¡

Physical Memory Implementation

Frame Access Page Table Page Table Size Access Read R/W Read Read R/W R/W Segment Table Virtual Address Offset Page Segment Exception Frame Offset Physical Address Processor

slide-30
SLIDE 30

Ques+on ¡

  • With ¡paged ¡segmenta+on, ¡what ¡must ¡be ¡

saved/restored ¡across ¡a ¡process ¡context ¡ switch? ¡

slide-31
SLIDE 31

Mul+level ¡Paging ¡

Physical Memory Implementation

Level 1 Level 2 Level 3 Processor Virtual Address Offset Index 3 Index 2 Index 1 Frame Offset Physical Address

slide-32
SLIDE 32

Ques+on ¡

  • Write ¡pseudo-­‑code ¡for ¡transla+ng ¡a ¡virtual ¡

address ¡to ¡a ¡physical ¡address ¡for ¡a ¡system ¡ using ¡3-­‑level ¡paging. ¡ ¡

slide-33
SLIDE 33

x86 ¡Mul+level ¡Paged ¡Segmenta+on ¡

  • Global ¡Descriptor ¡Table ¡(segment ¡table) ¡

– Pointer ¡to ¡page ¡table ¡for ¡each ¡segment ¡ – Segment ¡length ¡ – Segment ¡access ¡permissions ¡ – Context ¡switch: ¡change ¡global ¡descriptor ¡table ¡register ¡ (GDTR, ¡pointer ¡to ¡global ¡descriptor ¡table) ¡

  • Mul+level ¡page ¡table ¡

– 4KB ¡pages; ¡each ¡level ¡of ¡page ¡table ¡fits ¡in ¡one ¡page ¡ – 32-­‑bit: ¡two ¡level ¡page ¡table ¡(per ¡segment) ¡ – 64-­‑bit: ¡four ¡level ¡page ¡table ¡(per ¡segment) ¡ – Omit ¡sub-­‑tree ¡if ¡no ¡valid ¡addresses ¡

slide-34
SLIDE 34

Mul+level ¡Transla+on ¡

  • Pros: ¡

– Allocate/fill ¡only ¡page ¡table ¡entries ¡that ¡are ¡in ¡use ¡ – Simple ¡memory ¡alloca+on ¡ – Share ¡at ¡segment ¡or ¡page ¡level ¡

  • Cons: ¡

– Space ¡overhead: ¡one ¡pointer ¡per ¡virtual ¡page ¡ – Two ¡(or ¡more) ¡lookups ¡per ¡memory ¡reference ¡

slide-35
SLIDE 35

Portability ¡

  • Many ¡opera+ng ¡systems ¡keep ¡their ¡own ¡

memory ¡transla+on ¡data ¡structures ¡

– List ¡of ¡memory ¡objects ¡(segments) ¡ – Virtual ¡page ¡-­‑> ¡physical ¡page ¡frame ¡ – Physical ¡page ¡frame ¡-­‑> ¡set ¡of ¡virtual ¡pages ¡

  • One ¡approach: ¡Inverted ¡page ¡table ¡

– Hash ¡from ¡virtual ¡page ¡-­‑> ¡physical ¡page ¡ – Space ¡propor+onal ¡to ¡# ¡of ¡physical ¡pages ¡

slide-36
SLIDE 36

Efficient ¡Address ¡Transla+on ¡

  • Transla+on ¡lookaside ¡buffer ¡(TLB) ¡

– Cache ¡of ¡recent ¡virtual ¡page ¡-­‑> ¡physical ¡page ¡ transla+ons ¡ – If ¡cache ¡hit, ¡use ¡transla+on ¡ – If ¡cache ¡miss, ¡walk ¡mul+-­‑level ¡page ¡table ¡

  • Cost ¡of ¡transla+on ¡= ¡

Cost ¡of ¡TLB ¡lookup ¡+ ¡ Prob(TLB ¡miss) ¡* ¡cost ¡of ¡page ¡table ¡lookup ¡

slide-37
SLIDE 37

TLB ¡and ¡Page ¡Table ¡Transla+on ¡

TLB Physical Memory Virtual Address Virtual Address Frame Frame Raise Exception Physical Address Hit Valid Processor Page Table Data Data Miss Invalid Offset

slide-38
SLIDE 38

TLB ¡Lookup ¡

Physical Memory

Frame Offset Physical Address Page# Offset Virtual Address Translation Lookaside Buffer (TLB) Virtual Page Page Frame Access Matching Entry Page Table Lookup

slide-39
SLIDE 39

MIPS ¡SoVware ¡Loaded ¡TLB ¡

  • SoVware ¡defined ¡transla+on ¡tables ¡

– If ¡transla+on ¡is ¡in ¡TLB, ¡ok ¡ – If ¡transla+on ¡is ¡not ¡in ¡TLB, ¡trap ¡to ¡kernel ¡ – Kernel ¡computes ¡transla+on ¡and ¡loads ¡TLB ¡ – Kernel ¡can ¡use ¡whatever ¡data ¡structures ¡it ¡wants ¡

  • Pros/cons? ¡
slide-40
SLIDE 40

Ques+on ¡

  • What ¡is ¡the ¡cost ¡of ¡a ¡TLB ¡miss ¡on ¡a ¡modern ¡

processor? ¡

– Cost ¡of ¡mul+-­‑level ¡page ¡table ¡walk ¡ – MIPS: ¡plus ¡cost ¡of ¡trap ¡handler ¡entry/exit ¡

slide-41
SLIDE 41

Hardware ¡Design ¡Principle ¡

The ¡bigger ¡the ¡memory, ¡the ¡slower ¡the ¡memory ¡

slide-42
SLIDE 42

Intel ¡i7 ¡

slide-43
SLIDE 43

Memory ¡Hierarchy ¡

i7 ¡has ¡8MB ¡as ¡shared ¡3rd ¡level ¡cache; ¡2nd ¡level ¡cache ¡is ¡per-­‑core ¡

slide-44
SLIDE 44

Ques+on ¡

  • What ¡is ¡the ¡cost ¡of ¡a ¡first ¡level ¡TLB ¡miss? ¡

– Second ¡level ¡TLB ¡lookup ¡

  • What ¡is ¡the ¡cost ¡of ¡a ¡second ¡level ¡TLB ¡miss? ¡

– x86: ¡2-­‑4 ¡level ¡page ¡table ¡walk ¡

  • How ¡expensive ¡is ¡a ¡4-­‑level ¡page ¡table ¡walk ¡on ¡

a ¡modern ¡processor? ¡

slide-45
SLIDE 45

Virtually ¡Addressed ¡vs. ¡Physically ¡ Addressed ¡Caches ¡

  • Too ¡slow ¡to ¡first ¡access ¡TLB ¡to ¡find ¡physical ¡

address, ¡then ¡look ¡up ¡address ¡in ¡the ¡cache ¡

  • Instead, ¡first ¡level ¡cache ¡is ¡virtually ¡addressed ¡
  • In ¡parallel, ¡access ¡TLB ¡to ¡generate ¡physical ¡

address ¡in ¡case ¡of ¡a ¡cache ¡miss ¡

slide-46
SLIDE 46

Virtually ¡Addressed ¡Caches ¡

Physical Memory Virtual Address Virtual Address Virtual Address Frame Frame Raise Exception Physical Address Data Hit Hit Valid Processor Virtual Cache TLB Page Table Data Data Miss Miss Invalid Offset

slide-47
SLIDE 47

Physically ¡Addressed ¡Cache ¡

Virtual Address Virtual Address Virtual Address Physical Address Frame Frame Raise Exception Physical Address Data Hit Hit Valid Processor Virtual Cache TLB Page Table Physical Cache Physical Memory Data Data Hit Data Miss Miss Miss Invalid Offset

slide-48
SLIDE 48

When ¡Do ¡TLBs ¡Work/Not ¡Work? ¡

  • Video ¡Frame ¡

Buffer: ¡32 ¡bits ¡ x ¡1K ¡x ¡1K ¡= ¡ 4MB ¡

Video Frame Buffer

Page# 1 2 3 1021 1022 1023

slide-49
SLIDE 49

Superpages ¡

  • On ¡many ¡systems, ¡TLB ¡entry ¡can ¡be ¡

– A ¡page ¡ – A ¡superpage: ¡a ¡set ¡of ¡con+guous ¡pages ¡

  • x86: ¡superpage ¡is ¡set ¡of ¡pages ¡in ¡one ¡page ¡table ¡

– x86 ¡TLB ¡entries ¡

  • 4KB ¡
  • 2MB ¡
  • 1GB ¡
slide-50
SLIDE 50

Superpages ¡

Physical Memory

Frame Offset Physical Address SP Offset Page# Offset Virtual Address SF Offset Translation Lookaside Buffer (TLB) Superpage (SP) or Page# Superframe (SF) or Frame Access Matching Entry Matching Superpage Page Table Lookup

slide-51
SLIDE 51

When ¡Do ¡TLBs ¡Work/Not ¡Work, ¡part ¡2 ¡

  • What ¡happens ¡when ¡the ¡OS ¡changes ¡the ¡

permissions ¡on ¡a ¡page? ¡

– For ¡demand ¡paging, ¡copy ¡on ¡write, ¡zero ¡on ¡ reference, ¡… ¡

  • TLB ¡may ¡contain ¡old ¡transla+on ¡

– OS ¡must ¡ask ¡hardware ¡to ¡purge ¡TLB ¡entry ¡

  • On ¡a ¡mul+core: ¡TLB ¡shootdown ¡

– OS ¡must ¡ask ¡each ¡CPU ¡to ¡purge ¡TLB ¡entry ¡

slide-52
SLIDE 52

TLB ¡Shootdown ¡

Processor 1 TLB

VirtualPage PageFrame Access 0x0053 Process ID = = 0x0003 R/W 0x4OFF 1 0x0012 R/W

Processor 2 TLB

0x0053 = = 0x0003 R/W 0x0001 0x0005 Read

Processor 3 TLB

0x4OFF 1 = = 0x0012 R/W 0x0001 0x0005 Read

slide-53
SLIDE 53

When ¡Do ¡TLBs ¡Work/Not ¡Work, ¡part ¡3 ¡

  • What ¡happens ¡on ¡a ¡context ¡switch? ¡

– Reuse ¡TLB? ¡ – Discard ¡TLB? ¡

  • Solu+on: ¡Tagged ¡TLB ¡

– Each ¡TLB ¡entry ¡has ¡process ¡ID ¡ – TLB ¡hit ¡only ¡if ¡process ¡ID ¡matches ¡current ¡process ¡

slide-54
SLIDE 54

Physical Memory

Frame Offset Physical Address Page Frame Page# Offset Virtual Address Translation Lookaside Buffer (TLB)

Implementation

Page Process ID Frame Access Matching Entry Process ID Processor Page Table Lookup

slide-55
SLIDE 55

Ques+on ¡

  • With ¡a ¡virtual ¡cache, ¡what ¡do ¡we ¡need ¡to ¡do ¡
  • n ¡a ¡context ¡switch? ¡
slide-56
SLIDE 56

Aliasing ¡

  • Alias: ¡two ¡(or ¡more) ¡virtual ¡cache ¡entries ¡that ¡

refer ¡to ¡the ¡same ¡physical ¡memory ¡

– A ¡consequence ¡of ¡a ¡tagged ¡virtually ¡addressed ¡cache! ¡ – A ¡write ¡to ¡one ¡copy ¡needs ¡to ¡update ¡all ¡copies ¡

  • Typical ¡solu+on ¡

– Keep ¡both ¡virtual ¡and ¡physical ¡address ¡for ¡each ¡entry ¡ in ¡virtually ¡addressed ¡cache ¡ – Lookup ¡virtually ¡addressed ¡cache ¡and ¡TLB ¡in ¡parallel ¡ – Check ¡if ¡physical ¡address ¡from ¡TLB ¡matches ¡mul+ple ¡ entries, ¡and ¡update/invalidate ¡other ¡copies ¡

slide-57
SLIDE 57

Mul+core ¡and ¡Hyperthreading ¡

  • Modern ¡CPU ¡has ¡several ¡func+onal ¡units ¡

– Instruc+on ¡decode ¡ – Arithme+c/branch ¡ – Floa+ng ¡point ¡ – Instruc+on/data ¡cache ¡ – TLB ¡

  • Mul+core: ¡replicate ¡func+onal ¡units ¡(i7: ¡4) ¡

– Share ¡second/third ¡level ¡cache, ¡second ¡level ¡TLB ¡

  • Hyperthreading: ¡logical ¡processors ¡that ¡share ¡

func+onal ¡units ¡(i7: ¡2) ¡

– Beper ¡func+onal ¡unit ¡u+liza+on ¡during ¡memory ¡stalls ¡

  • No ¡difference ¡from ¡the ¡OS/programmer ¡perspec+ve ¡

– Except ¡for ¡performance, ¡affinity, ¡… ¡

slide-58
SLIDE 58

Address ¡Transla+on ¡Uses ¡

  • Process ¡isola+on ¡

– Keep ¡a ¡process ¡from ¡touching ¡anyone ¡else’s ¡memory, ¡or ¡ the ¡kernel’s ¡ ¡

  • Efficient ¡interprocess ¡communica+on ¡

– Shared ¡regions ¡of ¡memory ¡between ¡processes ¡

  • Shared ¡code ¡segments ¡ ¡

– E.g., ¡common ¡libraries ¡used ¡by ¡many ¡different ¡programs ¡

  • Program ¡ini+aliza+on ¡

– Start ¡running ¡a ¡program ¡before ¡it ¡is ¡en+rely ¡in ¡memory ¡

  • Dynamic ¡memory ¡alloca+on ¡

– Allocate ¡and ¡ini+alize ¡stack/heap ¡pages ¡on ¡demand ¡

slide-59
SLIDE 59

Address ¡Transla+on ¡(more) ¡

  • Cache ¡management ¡

– Page ¡coloring ¡

  • Program ¡debugging ¡

– Data ¡breakpoints ¡when ¡address ¡is ¡accessed ¡

  • Zero-­‑copy ¡I/O ¡

– Directly ¡from ¡I/O ¡device ¡into/out ¡of ¡user ¡memory ¡

  • Memory ¡mapped ¡files ¡

– Access ¡file ¡data ¡using ¡load/store ¡instruc+ons ¡

  • Demand-­‑paged ¡virtual ¡memory ¡

– Illusion ¡of ¡near-­‑infinite ¡memory, ¡backed ¡by ¡disk ¡or ¡ memory ¡on ¡other ¡machines ¡

slide-60
SLIDE 60

Address ¡Transla+on ¡(even ¡more) ¡

  • Checkpoin+ng/restart ¡

– Transparently ¡save ¡a ¡copy ¡of ¡a ¡process, ¡without ¡ stopping ¡the ¡program ¡while ¡the ¡save ¡happens ¡

  • Persistent ¡data ¡structures ¡

– Implement ¡data ¡structures ¡that ¡can ¡survive ¡system ¡ reboots ¡

  • Process ¡migra+on ¡

– Transparently ¡move ¡processes ¡between ¡machines ¡

  • Informa+on ¡flow ¡control ¡

– Track ¡what ¡data ¡is ¡being ¡shared ¡externally ¡

  • Distributed ¡shared ¡memory ¡

– Illusion ¡of ¡memory ¡that ¡is ¡shared ¡between ¡machines ¡