ࡱ> `!"'mcl>\N^):v hpIx=o@ǟs$TA!THL4%[i%`<#CgO"6CN| Y"1 Hǽ.g=#'{qj (VH6g@ juOXmaRMƤf0 \]MY(7Z4hqg CB)G(○t]&;wB> ubJIRy[`3(齂kPꚈm܇5ayԒk 29hu嚺@fH5ej!J -*TREŚQ*DS J%j*EԢ2Me(YTr^]/b(5HSJEk*FآM%(XTR4TfQr-=?vP݅p3[TVx?^gsF~Q~?(`0t~^^?@zy]/)謹:yfQjs%׀- ~SC+Q3&AM5,[B {kx#u-gMŽ\%qW.t]R:3aC.8v6 SC;܌?foǧf|`ǯ#;ӌ?!1O7Om9~" r~T(IIs\4=fZ95%MߩQ *? {  \7zaB]"I<9k_( `!Da,G>J{ $exRJA=3A Z) 6f3)m,l !Z )DD,Ha ,i2393 >Jh@e-B)Yu6S֦Vy&Cs,CᾟCszw84HgHʱR봌MF[tsf,7H` }t`1hr.BLMvE\@+Ԣ=7;|`!+8 Ȍ?DClVz$xjACmJ˗IpN` 9MTm Z .yb}F]50>se4%vaG#q!VT#g\]) A 6|VChN B3 dC)00x=FfrQ?tZ}+VX p#Wr1]e̹szZȼ44S 匆4Le2I2q2zNѥWqf yrP K5Tá:xCu-R][ug;/%5Sf0$T#k]Їq_=!cͥQq %ڟel-uv֤]JJ0η}iT-=c wFjfu.52 >4?*͓VM9TYK*b%vC%.L|wdčK$\⭏5=?#(Ԅ`!_E>JE86[n$ `IxJ1]+;"].:8 BuP 79 tZkQis\K>]m`4Ax+Fsj+2W=Df~< *CnEK7>A:k12Qqpӱ+SF^q.ןU##VbF~C>ש6]6Df[xedi}\}x.к+u@<prJ9lX͐,jKDkj!Y8bMIHСmKi2v-XJz$eKKY\Wʯ Muuoi+J\WK%MPՙiL]Wφ;kw/΄n='`!>pf[Xp (< xkSQ}yo`q(bT3t!JQ!?4/8:v2tMJpZzmy|?M߷ ++UT?[HJ ZNzD~9ԪU4C۾mo! OH LIUntR_N{4NwZ^{Sqݥ7j3 pf4tfp/Z~rL@CUIdF{O|fR/ ig{Za{ZW=M2HUYJ:RuT ag}B#uRDŽ!5b.dKBQ(JHXDR5Tj!bHuYKB (3_Ρ45>CR=B2U1eU&3ܹܽn;;;S"gH&>w8*s9 G}>Qa㨰qT8*s9 G}>QZ30O83s 86MGW-џD'e5U,"*/>}-31[<]f/"%FV\Nf7bXJjU]ur1Zc6]U*!WwլZȕGʣ%43\.Ot:VWYZ?l3[8;,&8Jg;Wpt e|^;u٠.ٱLQ00 C0"*]\<=)R!KwJ5ٳrz<[9=q8+9ӒCLE҃4mK=*89{϶ּ9g&ɛǜh_~|`!lj y;H(wR:xNA3w ) IA5R hR|GB(/p d؏-i7ݙcoPZffE,"HҊۙ}YkBb e .:EQx/ZB%F bef5DPcu"[O;v+\OoȬK777wFclp4Nmᢃ7'AǕyHuץA=l6JD 't"ɕt#T{3xϥ9ߓ"kb`!>藓幫EF 0u<kxKAƿCS`cc SSj/-,P j+;*Q<H`daog~c @!UY g R"TV(J̛9*GZ1_*OdH) r)@jzH6$;rKu[RG[?4iV̨.EɑTMwKx$>?><tv:Aڹ<:u:۟[{4XY]8v7OhRC'LII˓ؓO&%1I[!`굊g7sX#g!fήkX2fg> o`!=xRɀymI= IS/D1 xk@Sd'hfhST %]RIԡ2UwzH2th(tClYСԻYA:=}~ĝ sg9<y lٸZɢ# ݨFA70Sp~I]M4Aэ"Q}#gԀ0jDH5!jb&QS6(IRQr)Q[[pW8gXP=ΔP9ɾ:K=QUT5BWb3H*젞_ HOzjb*U3R5FyDyFcT1OTH5 j`52R#FM lԔ&JzsPSr)QuF(oNPzj:٩UqΎc ,[ˇЗZjsTSeYtqr#fj?bv3+'}ԎᆸnmXTl,>M>݆5zǝ_~|_~{Tn;oVhQTAE_gIEyʓr8,:pd*.SLr)H9gL_̳ie';X-4`!֋esWY$e<1/^zc՚BVW֣Mx}qB|;aXu܃HYluЧf2p|3JjTQ=/+PR/Z>JjTQ]/%5;ZLڙ}6k h2AIPMC4Mhj66pa`3 ϳ"zi1(wvkp(^b'u.u_g 1e RX]HS K#89+:Iv!.6#1xknPuGE:9Q[DGmaQ]8X^=6O&k-F/THGm!sA/k~|zct:1ҨG%oHճ H=;N!wm /AD+0<%4i2o#Zuqk~:kJIq1iFkŲUmqNbLx.-z&1 1Ov1_ɗjed$C<TD˜9]4CW輗;Lp6/<1ōBGKJpմpJ_]G52)Ŏ>QE]T_#;]WN˜iopo5NbkYRJ)\o#tz hCo!Љ =ſ|B~yZԲXeϫ +155&κu+!z, wk;5oXp.Y޽埬v6MO" `!te`iMڴXV^D5QDNeƫфш3]m̗Zp11\u/ヘ@g=𵔳u(z'Ѕ9eXIbV?z05̰̱,0IVdz:NuY,I~y0Ej_f]=oEmR1VqxƓA,So_oXFd|KBeS*J<ڭ6bZe;)O=)Uv_v[ϣv*kQvuHQh]lPdl`X:sɜ>[%ǝ3'/c*21<^1Ҭ1s1cY V}ɟs`!/JusUxXqz0S,xKkSA<4j0P4 ϥ 7‚>D%70Y鮋] ?MN̝Ir'{8s!`8`/M͈P!2pQ=%T\6a'< d8>}8qmR"0羚!d*G<{+RSvL\T^fhL&h{8; BcN?"/*@zy$( S \R~OյTKujl;616QRL5-RM[%,%p}j}꣤fX:5Kjj(YjxCXKI~Zc5njߵ9!t՜ zتWNY Ga .2,Z>FbR *gF ;@@qt(?4M+WAZmPQPOYl+G9ʵMïoZE9G ӾVmX~9$n9,勣IҸ S͙ceq*ds so=Q ź0DYzU*QMs%>e o{`!Y!m]:(E"xjA;:}8ETs&"`QG*BAUR(IҤ. g?y`wgG*+{п5"fF"V6J?銞REmC8-a䦑3Fne\gqZ&;g~)<̮uuS[m^We۞RV h58`DZT[5cmbRDޅq!XMK,P(5+QS*FiMJFDM5RŁ(%jK&+;ݔ5]휯^EZ]z]'U穻z:VbuoNIMu#~;Qzr:D x&_>س6/x;%;\߅57l`!YfC>dV8]jxUo@wIS%RhK a"@":T ndF0edd耠H#sʀhݗu|23 STK2 R\OJx3C DXhg^XhZt:|/=`=88x60É)p?wa bt$Bv}gg/?W}BNU ctrB2QZi茰s5Wj ֨nlvƳXUYUQa:Leq@cO%lSsa61L5bUfUIcja*cF39DSKf6ѓgߛs:_슏q<>(KV4Pj?i5#v%.76sƵ,Mx>%q(H|VaQZ /fw %<68PՆ֨Tw"o+-7u=j5-kŹgm"T^ PaDkE3!Wb5fc((5?ZjM+ڳ\./=j. QTa͠4V¨uWme؊Qﲳ\v, }pYxFf9^ȇBD(GV-9nIW{UV3U|&:3K Uז+{\Y^ML;΅ps=a',YI;eO(-  ^ ^PWorksheet Excel.Sheet.50WorksheetQWorksheet Excel.Sheet.50WorksheetRWorksheet Excel.Sheet.50WorksheetSWorksheet Excel.Sheet.50WorksheetT Worksheet Excel.Sheet.50WorksheetU Worksheet Excel.Sheet.50WorksheetV Worksheet Excel.Sheet.50WorksheetW Worksheet Excel.Sheet.50WorksheetX Worksheet Excel.Sheet.50WorksheetYWorksheet Excel.Sheet.50WorksheetZWorksheet Excel.Sheet.50Worksheet[Worksheet Excel.Sheet.50Worksheet\Worksheet Excel.Sheet.50Worksheet]Worksheet Excel.Sheet.50Worksheet^Worksheet Excel.Sheet.50Worksheet/0(  0;[0 0 000$([\{b00 000000000  0=] 0 0 0000 2 3 !A0C0E0G0I0c00000000000000000!%),.:;?]}acdeghijklmnopDTimes New Roman,v0,0$DArialNew Roman,v0,0$" DWingdingsRoman,v0,0$0DMonotype Sorts,v0,0$@De0}fԚype Sorts,v0,0$PDTahomae Sorts,v0,0$"G .@  @@``  @n?" dd@  @@`` ;;`8( v]  &3=*f  ,  G"'K6"21% = B 7% ]<")  fM %  !k/M  f %% % a6T$ )'s,_ 4 :Zf e g &3** f   %" +#'bTH(E'&  #1-Co1 F "M.!#$&(\RR\ff-#fR C\O6Q3xTEqg=<1 hTF4P 1:Z  6%EV2H}GNS6Ze{zfBPrJJ^P>EEIB   1489,%COg,CqKO-"<q%U1Rk <q%U1RkJ MLf I.> sd^k  }T WA4C!    ' ! ,YkG= ;$&?mt<D G]z]=Em\*%$Gd'HKEcd%% \re>\-n&L@ ;$.&L@ *.)$.)4, <.R5Z)YS ,Yk)I2 9   !&- !"#$%&'()*+,-./01 23 456-789:;<=>?@:ABCDE,FG=HIJKLM[N2$'mcl>\N^):v*r$B]"I<9k_i*2$Da,G>J{2$8 Ȍ?DC322$_E>JE86[ne2$pf[XF? 2$u[F  i֥*? 2$j y;t2$>藓幫EF82$xRɀymI=E2$֋esWY$edV&! fAA1? 3ZQ@ g4VdVdD0ppp0<4BdBdph0 ʚ;U5ʚ;<4!d!dpkd0\<4ddddpkd0\g4TdTdD0tp? p0___PPT10 ___PPT9/ 0pwX? %)JVirtual Memoryb     B Historically, there were two major motivations for virtual memory: to allow efficient and safe sharing of memory among multiple programs, and to remove the programming burden of a small, limited amount of main memory. [Patt&Henn 04] & a system has been devised to make the core drum combination appear to programmer as a single level store, the requisite transfers taking place automatically Kilbum et al.``bbb``L        So: the purpose of VM provide sharing automatically manage the M hierarchy (as  one-level ) simplify loading (for relocation)nhbb5`b`b  Structure of Virtual Memory`   Technology `  *Technology Access Time $ per GB in 2004 SRAM 0.5  5ns $4,000  10,000 DRAM 50 - 70ns $100 - 200 Magnetic disk 5 -20 x 10^6ns $0.5 - 2&b`   b These figures, contrasted with the values for caches, represent increases of 10 to 100,000 times.ccd b Virtual Address Mappingb   Terminology b  VPage Page fault Virtual address Physical address Memory mapping or address translationWWb W VM Simplifies Loadingb  VM provide relocation function Address mapping allows programs to be load in any location in physical M Under VM relocation does not need special OS + hardware support as in the past`   !Address Translation Consideration"P"b " mDirect mapping using register sets Indirect mapping using tables Associative mapping of frequently used pagesnn` n ! k The Page Table (PT) must have one entry for each page in virtual memory! How many Pages? How large is PT?8J"K`!` k " ;Pages should be large enough to amortize the high access time. (from 4 KB to 16 KB are typical, and some designers are considering size as large as 64 KB.) Organizations that reduce the page fault rate are attractive. The primary technique used here is to allow flexible placement of pages. (e.g. fully associative)D<>d^`=dc` < # Page fault (misses) in a virtual memory system can be handled in software, because the overhead will be small compared to the access time to disk. Furthermore, the software can afford to used clever algorithms for choosing how to place pages, because even small reductions in the miss rate will pay for the cost of such algorithms. Using write-through to manage writes in virtual memory will not work since writes take too long. Instead, we need a scheme that reduce the number of disk writes.LJfb`fBb  $What happens on a write ?`  Write-through to secondary storage is impractical for VM write-back is used: advantages (reduce number of writes to disk, amortize the cost) dirty-bit2NJN`J`  %Page Size Selection Constraints b  Efficiency of secondary memory device Page table size Fragmentation (internal) (last part of last page) Program logic structure logic block size: < 1K ~ 4K Table fragmentation [Kai, P68] (PT occupies some space)vPb`Cb  &Page Size Selectionb  PT size Miss ratio PT transfer from disk to memory efficiency Internal fragmentation text heap stack Start-up time of a process - the smaller the faster! LU6W`b6`  ' An Example b  ]Case 1 VM page size 512 VM address space 64K Total virtual page = = 128 pagesT^``'bj)b ^ ( %Case 2 VM page size 512 = 29 VM address space 4G = 232 Total virtual page = = 8M pages if each PTE has 32 bits: so total PT size (bytes) 8M x 4 = 32M bytes Note : assuming Main Memory has working set 4M byte or = = = 213 = 8192 framestb2bfbjbjbj$bjDbj bj7bj*bjb` & ) yHow about VM address space =252 (R-6000) (4 Petabytes) page size 4K bytes so total number of virtual pages: z ``bj b`b`b`"b`b43   =  *Techniques for Reducing PT Size P `  5Set a lower limit, and permit dynamic growth Permit growth from both directions Inverted page table (a hash table) Multi-Level page table (segments and pages) PT itself can be paged: I.e. put PT itself in virtual address space (Note: some small portion of pages should be in main memory and never paged out) t6Pb#bbbbb` 6 +, Placement: OS designers always pick lower miss rates vs. simpler placement algorithm So,  fully associativity - VM pages can go anywhere in the main M (compare with sector cache) Question: why not use associative hardware? (# of PT entries too big!) KD @ ``bb!bbGbbBb&a    -VM: Implementation Issuesb  IPage faults handling Translation lookahead buffer (TLB) Protection issuesJJ`&!     .Fast Address Translation`   PT must involve at least two accesses of M for each M address Improvement: Store PT in fast registers (Example: Xerox: 256 R ?) TLB for multiprogramming, should store pid as part of tags in TLB.vM@@` ``|`2    /Page Fault Handling`  When a virtual page number is not in TLB, then PT in M is accessed (through PTBR) to find the PTE If PTE indicates that the page is missing a page fault occurs Context switch!2```  01 2 TLB Design$ b `  Placement policy: Small TLBs: full-associativity can be used large TLBs: fully-associativity may be too slow Replacement policy: sometime even random policy is used for speed/simplicity H[N`[`N`          ^  345Translation Lookaside BufferP`&     TLB - miss rate is low (Clark-Emer data [85] 3~4 times smaller then usually cache miss ratio) When TLB-miss, the penalty is relatively low (a TLB miss usually result in a cache fetch)BJ..b&   6 TLB-miss implies higher miss rate for the main cache TLB translation is process-dependent strategies for context switching 1. tagging by context 2. flushingP[!$ [b!`$`  7JReview: The Memory Hierarchy pVirtual MemoryJUse main memory as a  cache for secondary memory Allows efficient and safe sharing of memory among multiple programs Provides the ability to easily run programs larger than the size of physical memory Simplifies loading a program for execution by providing for code relocation (i.e., the code can be loaded anywhere in main memory) What makes it work?  again the Principle of Locality A program is likely to access a relatively small portion of its address space during any period of time Each program is compiled into its own address space  a  virtual address space During run-time each virtual address must be translated to a physical address (an address in main memory)27hPj27hP   !   % q$Two Programs Sharing Physical Memory QAddress TranslationSo each memory request first requires an address translation from the virtual space to the physical space A virtual memory miss (i.e., when the page is not in physical memory) is called a page faultZj] .R tAddress Translation Mechanisms uVirtual Addressing with a Cache>Thus it takes an extra memory access to translate a VA to a PA$?)rMaking Address Translation Fast o$Translation Lookaside Buffers (TLBs),  kJust like any other cache, the TLB can be organized as fully associative, set associative, or direct mappedmA TLB in the Memory HierarchyA TLB miss  is it a page fault or merely a TLB miss? If the page is loaded into main memory, then the TLB miss can be handled (in hardware or software) by loading the translation information from the page table into the TLB Takes 10 s of cycles to find and load the translation info into the TLB If the page is not in main memory, then it s a true page fault Takes 1,000,000 s of cycles to service a page fault TLB misses are much more frequent than true page faults7__H_?_4_8_7H?4 8y%Some Virtual Memory Design Parameters z<Two Machines Cache Parameters {TLB Event Combinations~TLB Event CombinationsnReducing Translation TimeCan overlap the cache access with the TLB access Works when the high order bits of the VA are used to access the TLB while the low order bits are used as index into cache:1z&zv$Why Not a Virtually Addressed Cache?RA virtually addressed cache would only require address translation on cache missessThe Hardware/Software BoundaryWhat parts of the virtual to physical address translation is done by or assisted by the hardware? Translation Lookaside Buffer (TLB) that caches the recent translations TLB access time is part of the cache hit time May allot an extra stage in the pipeline for TLB access Page table storage, fault detection and updating Page faults result in interrupts (precise) that are then handled by the OS Hardware must support (i.e., update appropriately) Dirty and Reference bits (e.g., ~LRU) in the Page Tables Disk placement Bootstrap (e.g., out of disk sector 0) so the system can service a limited number of page faults before the OS is even loadedbGf1~bGf1 ~n  wSummaryThe Principle of Locality: Program likely to access a relatively small portion of the address space at any instant of time. Temporal Locality: Locality in Time Spatial Locality: Locality in Space Caches, TLBs, Virtual Memory all understood by examining how they deal with the four questions Where can block be placed? How is block found? What block is replaced on miss? How are writes handled? Page tables map virtual address to physical address TLBs are important for fast translationaH_gl4U(Ua_ g4(,$/ 7EFGHI8J9K:L;M<N=O>P?Q@RASBTCUDVEWFXGYHZI[J\K]L^M_N`OaPbQcRdSeTfUgVhP  ` ̙33` ` ff3333f` 333MMM` f` f` 3>?" dW@?qKd@l8 -dc% 8`X x?" dZ(@ =d   @@``PR    @ ` ` p>>L0 !(    ZE 8c 8c1 ?P`  CTitle goes here   ZX٤ 8c 8c1?  &CSE431 L22 TLBs.*    Zݤ 8c 8c1? v DIrwin, PSU, 2005   ZDڤ 8c 8c1 ?@P`'  This is our 1st Level Bullet this is our 2nd level bullet this is our 3rd level bullet This is our next 1st Level Bullet this is our 2nd level bullet this is our 3rd level bullet$" ^B  6>?P`B  s *޽h ? X(=^y___PPT10Y+D=' = @B + mjicse4310  P(  j  s *1 ?s4    Zhjݱjݱ1 ? K  ^*we want this to be in font 11 and justify.+ +B  s *\j ? X(=^80___PPT10.Hj   0(   B  s *\j ? X(=^80___PPT10.H0$GJ nfP (      3 r8I5gֳgֳ ? 5 H   0޽h ? 333gggy___PPT10Y+D=' = @B +} K P(4(  ( ( 3 r-4gֳgֳ ? @0Q 5 & @ ( C xX51))?M& lVirtual Memory : Motivation  c   H ( 0޽h ? 333gggy___PPT10Y+D=' = @B +: L aYQ 0(  0 0 3 r&4gֳgֳ ?Bb 4 & @F ~J  0  N ~s  0 ~s l 0 <1?<  0 T4gֳgֳ?~ sf  XMAIN PROCESSORb  N T  0 T l 0 <1?T   0 T#4gֳgֳ?V0  bMEMORY MANAGE- MENT UNITb  N  ( JL   0  ( JL N  ( L   0  ( L l  0 <1? ( L   0 T4gֳgֳ? h 4  [HIGH- SPEED CACHEb  N ( (L  0 ( (L l 0 <1?( L  0 Tk4gֳgֳ?h (  U MAIN MEMORY  b  N ( JL  0 ( JL l 0 <1?( L  0 Tn4gֳgֳ?h J  W BACKING STOREb   0  B CDE F1? @Co -  0  BA CDE F1?@ @ @ J " rB 0 B1?o ) rB 0 B1? q ' rB 0 B1? L rB 0 B1?M   0  BCDE F1?@i N lB 0 <1?L V rB 0 B1?Nv Xv  0 TH\4gֳgֳ?- V  YLOGICAL ADDRESSb    0 TD3gֳgֳ?8 qt  QCONTROLb    0 Tt 3gֳgֳ? ^  NDATAb     0 T03gֳgֳ?    ZPHYSICAL ADDRESSb   H 0 0޽h ? 333gggy___PPT10Y+D=' = @B +_ M  ~ Q8 (  8 8 3 r)3gֳgֳ ?  3 F  8 l 8 <1? 8 T,/3gֳgֳ?+d  UVirtual Address`  F   8  l 8 <1?  8 T813gֳgֳ?   XAddress Translator`  F ; q   8 ; q l  8 <1?; q   8 TD 3gֳgֳ?F f  VPhysical Address`  jB  8 B1?u jB  8 B1?' B jB 8 B1? jB 8 B1?  8 T43gֳgֳ?  Vfrom Processorb   8 TĘ3gֳgֳ? ( g  Q to Memory b  jB 8 B1?  F j 8 j6 8 Th3gֳgֳ?s DPage fault Using elaborate Software page fault Handling algorithm *E b:bD  l2 8 <1?j  8  BFCDEF1?<VE< @> -s H 8 0޽h ? 333gggy___PPT10Y+D=' = @B +N @Q%%@m(  @ @ NA P?? QX P$00jB @ B1?jB @ B1?LLjB @ B1?jB @ B1?99jB @ B1?jB @ B1?jB  @ B1?jB  @ B1?jB  @ B1?q q jB  @ B1?  jB  @ B1?* * jB @ B1?  jB @ B1?  jB @ B1?  jB @ B1?` ` jB @ B1? @ NA Q??  X Q$00 @ NA R??  X R$00jB @ B1?8 jB @ B1?D8 DjB @ B1?8 jB @ B1?18 1jB @ B1?8 jB @ B1?8 jB @ B1?x8 xjB @ B1?8  @ T3gֳgֳ?w X L} 4Kb   @ T$D3gֳgֳ? L} 4Kb   @ TL3gֳgֳ?V%f YVirtual addressPb    @ TV3gֳgֳ? [ ]Main memory addressPb   !@ T\`3gֳgֳ?U K(a)b   "@ T3gֳgֳ? g^a  K(b)b   #@ Tr3gֳgֳ?#  ^C  [A Paging Systemd   $@ NA S??_X S$00 %@ T|3gֳgֳ?P  v.64K virtual address space 32K main memory//b / H @ 0޽h ? 333gggy___PPT10Y+D=' = @B +LO s k `QH (  HF +H  H +{  H NA T??" G X T$00 H NA U?? X U$00 H NA V??&+X V$00 H NA W??6H X W$00rB H B1?  rB H B1?'  rB  H B1?) ' rB  H B1?"  h rB  H B1?$  rB  H B1?%  prB  H B1?9 3 rB H B1?8 S  H Tt3gֳgֳ?&j v :1 = present in main memory, 0 = not present in main memory;Z;b ; jB H B1?u //C H T'gֳgֳ?C c  V Page Table d   H T'gֳgֳ?p V Virtual page P b   H T`'gֳgֳ?p|  T page frame P b   H T'gֳgֳ?  cMain memory Page framePb  H H 0޽h ? 333gggy___PPT10Y+D=' = @B +8P _WQ,,P(  P P NA X?? X X$00^2 P 61? ^2 P 61?R u^2 P 61? ^2 P 61? ^2 P 61?& I^2 P 61? ^2  P 61?` ^2  P 61?  ^2  P 61?  ^2  P 61?*  M ^2  P 61?  ^2 P 61?`  d P <1?ux P T>'gֳgֳ? aVirtual page numberPb   P  BCZDE F1?YY@}? P TXJ'gֳgֳ?z#  T Page table b   P NA Y??_X Y$00 P T|T'gֳgֳ? YPhysical memoryb  jB P B1? jB P B1?' fjB P B1?  jB P B1? *jB P B1?:  jB P B1? jB P B1?  jB P B1?S B jB P B1? ~jB P B1? u jB P B1?   jB  P B1?   `F    !P    N    "P   t2 #P 61?"`  n $P 0?"`  t2 %P 61?"`  xB &P H1?  xB 'P H1?  x (P H1))? 4 f )P 61? 2c f *P 61? <5  +P T'gֳgֳ? h  V Disk storage b  c ,P Nh'gֳgֳ?P P  The page table maps each page in virtual memory to either a page in physical memory or a page stored on disk, which is the next level in the hierarchy.f  H P 0޽h ? 333gggy___PPT10Y+D=' = @B +  QXV(  X~ X s *r'P`  '  X s *Xw'@P`-  ' & @H X 0޽h ? @Eff؂o___PPT10i.t+D=' = @B + Q Q\j(  \ \ C x 'gֳgֳ ?/` ' & @ \ NA Z??Dl k X Z$00f \ C x'1))?` 0Typical ranges of parameters for virtual memory.P1 gZ'gZg0  H \ 0޽h ? 333gggy___PPT10Y+D=' = @B +f R Qd(  d d 3 rH'gֳgֳ ?   ' ^ d 61?2+&ypB d H1?. } d Tx'gֳgֳ?4^ . WVIRTUAL ADDRESSb   d T8'gֳgֳ?w^= q S Page Number b   d T<'gֳgֳ?w tq T Displacement b  F F | d F |l  d <1?F |  d T 'gֳgֳ?~ x PPAGE MAP b    d  BCzDE F1?yy@  d  BSCDEF1?RR @ b BF  \ $   d \ $ l d <1? \ $ xB d H1?   xB d H1? xB d H1? { {  d  BCDEF1?+ @    d T#gֳgֳ?g  ]Address within PagePb   d Td%#gֳgֳ?p x ^Base Address of PagePb   d T#gֳgֳ?= R   ZPAGE (in Memory)Pb  H d 0޽h ? 333gggy___PPT10Y+D=' = @B +5 S \TQl(  l l 3 rCgֳgֳ ?  C  l C xCgֳgֳ ?0 C & @H l 0޽h ? 333gggy___PPT10Y+D=' = @B +5 T \TRt(  t t 3 rx(gֳgֳ ?  C  t C x|gֳgֳ ?2!  & @H t 0޽h ? 333gggy___PPT10Y+D=' = @B +5 U \T0R|(  | | 3 rXgֳgֳ ?    | C xgֳgֳ ?  & @H | 0޽h ? 333gggy___PPT10Y+D=' = @B +g V PR(    C xxhgֳgֳ ?@P`  & @H  0޽h ? 333gggy___PPT10Y+D=' = @B + W pR9(    C x46gֳgֳ ?@G  & @  # l1))?p w#4 Key Design Decisions in VM Design$$ $g $ H  0޽h ? 333gggy___PPT10Y+D=' = @B +  Rv(     T80e0e ?Rectangle: Click to edit Master text styles Second level Third level Fourth level Fifth level`0   & @t  # lh(1))?@ \4 Key Design Decisions in VM Design (con d) $/ /g4'    H  0޽h ? @Eff؂oy___PPT10Y+D=' = @B +  RV(  ~  s *PP`     s *.c  & @H  0޽h ? 333gggy___PPT10Y+D=' = @B + X Rd(    3 rgֳgֳ ?     C xDgֳgֳ ?ZP  & @pB  H1? < H  0޽h ? 333gggy___PPT10Y+D=' = @B + Y C;R(    3 rhgֳgֳ ?     3 r gֳgֳ ?-M  & @   BECDEF1?DD @ E   T gֳgֳ? d  w/3 x 0.5 = 1.5 times of a page size per process!00b 0 pB  H1? Co pB  H1?` }U H  0޽h ? 333gggy___PPT10Y+D=' = @B + Z Rw(    3 r@Agֳgֳ ?     C x$Fgֳgֳ ?J;K  & @   TdMgֳgֳ? A K  64K 512P8ckc  pB  H1?$ } $ H  0޽h ? 333gggy___PPT10Y+D=' = @B + [ S }(    3 rDlgֳgֳ ?s`  & @  Tgֳgֳ?y/ 3 4G 512L(ckc  pB  H1?Y Y  T(gֳgֳ?a   M~ ~b    TTgֳgֳ?"  v4M 512@Pckc  pB  H1? R    Tgֳgֳ?( f  222 29RPckck  pB   H1? 0 H  0޽h ? 333gggy___PPT10Y+D=' = @B +C \ jb0S(    C xgֳgֳ ?@ .'  & @   Tgֳgֳ?0   252 212Pckck  pB  H1?     Ngֳgֳ?   u = 240 = !< ckc  NF c9  ,  xB B H1?c9xB  H1?lH  0޽h ? 333gggy___PPT10Y+D=' = @B +  PSP(  x  c $     s *hS]<   & @H  0޽h ? 333gggy___PPT10Y+D=' = @B +]  `S,,(  rF bf  bfl  <1?jd  TSgֳgֳ?O# a11 bits 11 bits 10 bitsb  xB  H1?f xB  H1? f 3  TSgֳgֳ? ISegment Number Page Number Displacement Base of Segment Table.0(Jb J N 3  3JN 0   0l   <1?/xB   H1? 0 l   <1?(/~B   N1?33&~B  N1?*  TSgֳgֳ?t K0 1b    TSgֳgֳ?b N2047xb    T|Sgֳgֳ?kB VSEGMENT TABLEb     BAC`DEF1?@@_ @   T|Sgֳgֳ?z  bBase Address of Page Tableb     BAC`DEF1?@@_ @  M e N c    c  N c    c  JN c   c l  <1?j xB  H1?cq ql  <1?j   ~B  N1?  ~B  N1?gg   TIgֳgֳ?{8  K0 1b    TIgֳgֳ?,^ 9  N2047xb    TIgֳgֳ?  S PAGE TABLE b  JN  \ T     \ T l ! <1? \ T xB " H1?  l # <1? k ~B $ N1?#U # ~B % N1? X  & T@gֳgֳ?A  YBase + 0 Base + 1b   ' TAgֳgֳ?  U Base + 1023 x b   ( T Jgֳgֳ?c X W XPAGE (in Memory)b   ) T[gֳgֳ?    \Base Address of Pageb   *  BC DEF1?  G @!  + TBgֳgֳ?Sf [Address within Pageb   , T(ngֳgֳ??y_ eTwo-level Address mappingd  H  0޽h ? 333gggy___PPT10Y+D=' = @B +a ^ S(    3 rgֳgֳ ?4  & @H  0޽h ? 333gggy___PPT10Y+D=' = @B +5 _ \TS(    3 r,gֳgֳ ?     C x0gֳgֳ ?7<  & @H  0޽h ? 333gggy___PPT10Y+D=' = @B +5 ` \TS(    3 r«gֳgֳ ?     C x ȫgֳgֳ ?@d'  & @H  0޽h ? 333gggy___PPT10Y+D=' = @B + a S^(    3 rgֳgֳ ?     C xPgֳgֳ ?}  & @jB @ B1?F `; H  0޽h ? 333gggy___PPT10Y+D=' = @B +b T99O(  F s   @I  NA [??zv X [$00  NA \??f X \$00l  <1?7  T4gֳgֳ?sti aVirtual page numberFb    T4gֳgֳ? 1 X Page table F b     BC~DE F1?}}@s rB  B B1?JJf2   61? 7 Uf2   61?  f2   61? : Xf2   61?  f2  61? = [f2  61? ; f2  61? I; gf2  61? ; f2  61? M ; k f2  61? ; f2  61? P ; n f2  61? ; f2  61? S ; q f2  61? ; f2  61? \ ; z f2  61? ; f2  61? Y ; w   NA ]??BX X ]$00N #    #  f2  61?  `  0?z . f2  61?#  xB   H1? v 0 xB ! H1?v 0 x " H1))? $ f # 61?" e f $ 61? D  % T4gֳgֳ?g M'  V Disk storage b  rB & B1? DrB ' B1? JJrB ( B1? TrB ) B1? JrB * B1? OrB + B1?7 rB , B1?9 WrB - B1?8 OrB . B1?1 EV rB / B1?2  rB 0 B1?; Rn rB 1 B1??  rB 2 B1?, k  rB 3 B1?+ R rB 4 B1?. j rB 5 B1?5   rB 6 B1?. g  7 T@4gֳgֳ?Z YPhysical memoryb   8 T4gֳgֳ?9   MTLBb  ( 9 N4gֳgֳ?` ZThe TLB acts as a cache on the page table for the entries that map to physical pages only [[g [ H  0޽h ? 333gggy___PPT10Y+D=' = @B + c " T(   0 TA ^? ? h ^$00  4  TH/gֳgֳ?V s'Some typical values for a TLB might be:((d (   C xH/1))? ~U _Miss penaly some time may be as high as upto 100 cycles. TLB size can be as long as 16 entries.` `a@    4 H  0޽h ? 333gggy___PPT10Y+D=' = @B +  @TV(  ~  s *$/P`  /   s *PMh& / & @H  0޽h ? 333gggy___PPT10Y+D=' = @B +Zd yPT++(  F Fi   F N } B  } Bl  <1?} B  TVgֳgֳ?K_  R TLB access b  N A,   A, lB  <1?A,   T`gֳgֳ?  b PTLB hit? b  rB   B1? >    Nkgֳgֳ?8i  WVirtual addressb  rB   B1? S *lB   <1? Ln   Ttgֳgֳ? @T NWrite?b     BCDE F1?@  N y   y l  <1?y   T0~gֳgֳ?{  gTry to read data from cachePb  N Q   Q l  <1?h   Tgֳgֳ?Q{  \Check protectionPb     BCDE F1?@     BCDE F1?@`N \    \  l  <1? I <  Tgֳgֳ?\   dWrite data into cache, update the dirty bit, and Put the data and the address into the write bufferePeb e rB  B1?  N K %   K % lB  <1?K %   T̜gֳgֳ? b  R Cache hit? b  rB  B1?  l  <1?F     Tgֳgֳ?F   XCache miss stallb  rB !B B1?Z =Z  "  BCFDE F1?E@ Z  # T8gֳgֳ? m  KYesb   $ Tgֳgֳ? [% # KYesb   % T,àgֳgֳ?9 KYesb   & T̠gֳgֳ?   JNob   ' TĠgֳgֳ? V JNob  rB (B B1?5 ) T͠gֳgֳ?g ^TLB miss exceptionPb   * Tgֳgֳ?   JNob  0 + Tgֳgֳ?  FProcessing a read or a write through the DECStation 3100 TLB and cacheGGf&)    H  0޽h ? 333gggy___PPT10Y+D=' = @B +(e ,'$'pT<< &(       `1))? J"F poq    opq AN )y?   )y?l   <1?-y9o   Tdgֳgֳ?R}  pid ip iw\bbjbjN       xB   H1?)=xB   H1?$ +$ ?   Tgֳgֳ?o / WVirtual addressb  N ;   ;N      l   <1?    T$gֳgֳ?Hs  X TLB Page map P b  ~B   N1? ~B   N1?& &"N h ;   h ;    BCDEF1? @h ;xB   H1?h `:`xB   H1?i ;xB   H1?h 5:5f2   61?G ZT hf2   61?G T f2   61?G T rB   B1? p rB   B1?i =i mN  4     4 l   <1?"R .    T1gֳgֳ?S  RWX pid M C P(b b &   xB   H1? 4 xB   H1?#0 xB   H1? 4 xB   H1?mm1 xB !  H1?1  "  T=gֳgֳ?s5 '  n"Page frame address in memory (PFA)#P#b  # rB #  B1?Y Y l $  <1? ~  5 %  T,Hgֳgֳ?x Q  %PFA in S.M. iw:&#b bj&#   xB &  H1?r w r rB '  B1? : w  (  T>gֳgֳ?O y 9  XPhysical addressb   )   B?C2DEF1?>>1 @ =o N  q  *   q l +  <1? q  ,  T]gֳgֳ?> r  ^Operation validationPb  rB -  B1?&0 & l .  <1?Xc /  T(hgֳgֳ?f] KRWXb  rB 0  B1?p  1  Tqgֳgֳ?b aRequested access typePb  l 2  <1?Dd 3  Tzgֳgֳ? T KS/Ub  rB 4 B B1?6   5  TĄgֳgֳ?p   T Access fault b  rB 6 B B1? 7  Tgֳgֳ?t4 R Page fault b   8  TЖgֳgֳ?  _PME (x)(bb   9  Tgֳgֳ?  ^Replacement policyPb   :  Tgֳgֳ? *If s/u = 1 - supervisor mode PME(x) * C = 1-page PFA modified PME(x) * P = 1-page is private to process PME(x) * pid is process identification number PME(x) * PFA is page frame address b 2r  G   ;  T,gֳgֳ?[ _/  z2Virtual to read address translation using page map33b 3  <  TԾgֳgֳ? O bPME - Page map entryf  H   0޽h ? 333gggy___PPT10Y+D=' = @B +5 f \TT(    3 r|ӧgֳgֳ ?     C x٧gֳgֳ ?pM  & @H  0޽h ? 333gggy___PPT10Y+D=' = @B + g  T(    3 r\9gֳgֳ ?0  &   T@gֳgֳ? T cont db    T9gֳgֳ? l  ? complete purge by context (shared)@@c + pB  H8c? 7     BNCXDEF8c?MWMW @V <   3 r91))? t u  `No absolute answer c  H  0޽h ? 333gggy___PPT10Y+D=' = @B +8h 77TZZ$C7(  $ $ Zh .9gֳgֳ?@Z \ A Case Study g  d $ <1?^ $ T79gֳgֳ?Td  z2Virtual page number Page offset33b  3 pB $ H1?ZF $ TB9gֳgֳ?~ z31 30 29 28 27 & & & & & .....15 14 13 12 11 10 9 8 & & & ..& 3 2 1 0>>b  >  $ T L9gֳgֳ?  YVirtual addressb  F =' $ l  $ <1?-l  $ <1?1f  $ 61?l  $ <1?Xl  $ <1?[l $ <1?xB $ H1?'xB $ H1?$xB $ H1?  # $ T`W9gֳgֳ?=P y1Valid Dirty Tag Physical page number 22b  2 d $ <1?`  $ T4b9gֳgֳ? a  ZPhysical addressb   d $ <1?  d $ <1?  ^ $ 61?  d $ <1? A d $ <1?D  d $ <1? V pB $ H1? # $  $ Tl9gֳgֳ?l   z& Valid Tag Data ''b  & F  $  $  Nl2 $ <1?2 B  $ TXw9gֳgֳ? $  I=b   ,F R  $  > zl2 !$ <1?` "$ 0?R #$  BgCqDEF1?ffpm @PjB $$ B1?HR R ^2 %$ 61?<L Z J^2 &$ 61?</=JF V '$ <B n &f2 ($ 61?t )$  B'CDE F1?&&@V} *$  BC%DE F1?$$@4; X YpB +$ H1?P55pB ,$ H1?00d -$ <1?Y  pB .$ H1? F  S q  /$  ] }l2 0$ <1? q T  1$ T9gֳgֳ? S q  I=b   ,F  t k 2$ w ` l2 3$ <1? > g` 4$ 0? t h 5$  BgCqDEF1?ffpm @ r k 6$  BCDEF1?WWoo @e  'jB 7$@ B1?  ^2 8$ 61?   F v 2  9$  b f2 :$ 61? 2 @  ;$  B'CDE F1?&&@v E  <$  BCmDE F1?ll@`[ jB =$@ B1? jB >$@ B1? MN^2 ?$ 61? ES  @$ T9gֳgֳ?t! LDatab   pB A$ H1?Pt B$ T 9gֳgֳ?< J12b   pB C$ H1? # D$ T09gֳgֳ?CB J20b    E$  BCDEF1? @ pB F$ H1?:   G$ T9gֳgֳ?   J20b   pB H$ H1?  I$ Tܸ9gֳgֳ? WJ J32b    J$  BCZDEF1?YY @e J  pB K$ H1? +  L$ T9gֳgֳ?f   J14b   jB M$ B1?e ^^f pB N$ H1?   O$ T9gֳgֳ?~ \+  I2b   pB P$ H1?| q  Q$ TH9gֳgֳ?C   J16b    R$ T9gֳgֳ?V  Q Cache hit b    S$ T9gֳgֳ?n .  OCacheb   T$ TH9gֳgֳ? MTLBb   U$ T9gֳgֳ?I ;  W Byte offset P b    V$ T0Hgֳgֳ? m  MIndexb    W$ T0Hgֳgֳ?P n w  KTagb   jB X$ B1?FF Y$ TdHgֳgֳ?l QTLB hitb    Z$ T!Hgֳgֳ?p  gDECStation 3100b   H $ 0޽h ? 333gggy___PPT10Y+D=' = @B + 7L0  pJ|(  |d | <1?  |  `0xaxa1 ?P`   dR | <1?XB | 0D1? `  | <\91? $  5Increasing distance from the processor in access time26* | <A1?P ` p 7L1$XB | 0D1? @ XB  | 0D1?i 0i   | <,D1?9 P `  7L2$  | <xG1? @@  A Main Memory    | <K1?Y P@ GSecondary Memory^B  | 6D1?y | HHO1?I 0 = Processor dB | <D1?99 | <S1?i@P _+(Relative) size of the memory at each level,,^F @``  | @yfB | 6D1?@@`  | <PX1?@`  &Inclusive what is in L1$ is a subset of what is in L2$ is a subset of what is in MM that is a subset of is in SM&s jF  ) I  |    ) lB | <D1? ) lB | <DjJ? i )lB | <DԔ?  I lB | <DjJ? I F  8-  |    | HT^1? 8"  ^4-8 bytes (word)2  | <d1? yM  ? 1 to 4 blocks | Hg1? Y -  o!1,024+ bytes (disk sector = page)2" | <l1? m `8-32 bytes (block)2  | Z 8c 8c1 ?  Take advantage of the principle of locality to present the user with as much memory as is available in the cheapest technology at the speed offered by the fastest technology. qK/8c8X2 | <o? @,$D0H | 0޽h ? U>=UU(ia___PPT10A+Y D%' = @B D' = @BA?%,( < +O%,( < +D' =%(D' =%(Dg' =4@BB7BB%(D' =1:Bvisible*o3>+B#style.visibility<*|%(D' =+4 8?fCB#ppt_w*0.70BCB#ppt_wB*Y3>B ppt_w<*|D' =+4 8?\CB#ppt_hBCB#ppt_hB*Y3>B ppt_h<*|D' =-g6B fade*<3<*|+ L0  OP(  r  S P`     S $P`<$0  H  0޽h ? X(=^___PPT10b.&@'++D' = @B D' = @BA?%,( < +O%,( < +D,' =%(%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*2%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*2v%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*v%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*M%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*M%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*<%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*<%(+8+0+I + L0 0O%43(  r  S IP`  I d  <1? (x XB  0D1?(x XB  0D1?@(x @XB  0D1?(x XB  0D1?` (x ` XB   0D1? (x d  <1?l XB  0D1?0 l0 XB  0D1? l XB  0D1?P lP XB  0D1? l XB  0D1?p lp XB  0D1? l XB  0D1? l jb  BG&1? l   HI1?T 4 SProgram 1 virtual address space    HD$I1? = main memory dB  <D1?P, l dB @ <D1?,, dB @ <D1?@, dB   <D1? , dB ! <D1? , l dB " <D1? , `0 dB #@ <D1?P , dB $ <D1?` , l dB & <D1?@ , ldB ( <D1? , l@dB ) <D1?@ \, ` * Zp I 8c 8c1 ? 0 6A program s address space is divided into pages (all one fixed size) or segments (variable sizes) The starting location of each page (either in main memory or in secondary memory) is contained in the program s page tableHb{*3p  @d , <1? (x XB - 0D1?P (x P XB . 0D1? (x XB / 0D1?p(x pXB 0 0D1?(x  3 H$HI1?@ T  WProgram 2 virtual address space  H  0޽h ? X(=^___PPT10i.,$+D=' = @B +] E Lb(  ~  s *|IP  I   HPI1? DVirtual Address (VA)d  <1?WGdB  <D1?WG  HPI1?n&rU = Page offset   HdVI1?nZ U EVirtual page number  HZI1?a o31 30 . . . 12 11 . . . 0ppl  0  G 0 ,$D0l  <1?  lB   <D1?     Hp_I1?& r  = Page offset    HdI1?   FPhysical page number   H4hI1?E ` 0  EPhysical Address (PA)  HiI1?   c29 . . . 12 11 0dd'l @  G@G ,$D 0   TAo?5%p    HpI1?v  = Translation rB  BD1?0 0 rB  BD1?0  0 fB  6D1?@@    fzI 8c 8c1 ? P`<$0 I & @M  ZI 8c 8c1 ?P` _A virtual address is translated to a physical address by a combination of hardware and softwareH`*H  0޽h ? X(=^3 + ___PPT10 +D ' = @B Dr ' = @BA?%,( < +O%,( < +D' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =%(D3' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*%(D' =-o6Bwipe(up)*<3<*D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*j%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*j%(+8+0+I ++ L0 >6O@X(  x  c $IP`  I d  <1?, XB  0D1?:, :XB  0D1?, XB  0D1?Z , Z XB  0D1? , XB  0D1?z , z XB   0D1? , XB   0D1? , XB   0D1?* , * XB   0D1? , XB   0D1?J , J d  <1?\ XB  0D1?\XB  0D1?1\1XB  0D1?\XB  0D1?Q \Q XB  0D1? \ XB  0D1?q \q XB  0D1? \ jb  BG 1?Q ,  HxI1?`q  mPhysical page base addr  H8I1?j  Q  ? Main memory dB  <D1?` dB  <D1? `dB  <D1?`dB  <D1?1 q dB  <D1? ` dB  <D1?` dB  <D1?` ` dB   <D1? ` dB ! <D1? 1dB " <D1?@` dB # <D1?q !d $ <1?A L d % <1?Ld & <1?LQXB ' 0D1?ll  ( HI1?`h @ Disk storage d ) <1?0 * HLI1?   @Virtual page # + HЩI1? 3V , HI1?  G1 1 1 1 1 1 0 1 0 1 0 @ HI1?  ]Page Table (in main memory)& Jl 0  R0 ,$D 0fB - 6D1?  `B F 0D1?0 d G <1?0 H HI1?,  8OffsetB I 6D1? ,$D 0d K <1?0  L HI1?Y @ APhysical page #d M <1?0 `  N HT1I1?p t W 8Offsetl `0  S0` ,$D 0`B O 0D1?`0` `B P 0D1?`) )fB Q 6D1? ) l 0 @  X0 @ ,$D 0`B T 0D1?0 0 `B U 0D1?0 ` `B V 0D1?` ` @ fB W 6D1?` @ @ H  0޽h ? X(=^  ___PPT10 .,$+֫SD ' = @B Dq ' = @BA?%,( < +O%,( < +D' =%(D' =%(D3' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*R%(D' =-o6Bwipe(up)*<3<*RD' =%(D' =%(D7' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*I%(D' =-s6Bwipe(down)*<3<*ID' =%(D' =%(D3' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*S%(D' =-o6Bwipe(up)*<3<*SD' =%(D' =%(D3' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*X%(D' =-o6Bwipe(up)*<3<*X+ L0 O#(  r  S xIP`  I r  S I@P`, I F X  (P`B  08c?x`B  08c? h`B B 08c?X  Z@I 8c 8c1? 9CPUU    `Ixaxa8c?0( h e Trans- lation    `Ixaxa8c? 0 h ;Cache    `Ixaxa8c?8p A Main Memory  fB   68c?xfB   68c?(  fB  68c? xx`B B 08c?P`B  08c?XX`B B 08c?``B  08c?0fB B 68c?88`B  08c?PPfB B 68c? X `B B 08c?`  fB  68c?h h f2  68c?Pp`  ZA 8c 8c1? 8VAU  ZA 8c 8c1?8 P  8PAU  ZA 8c 8c1? h :missU  Z$ A 8c 8c1?h @h  9hitU  ZA 8c 8c1? :dataUD  Z<A 8c 8c1 ? 0Y,$0 This makes memory (cache) accesses very expensive (if every access was really two accesses) The hardware fix is to use a Translation Lookaside Buffer (TLB)  a small cache that keeps track of recently used address mappings to avoid having to do a page table lookup8 # {H  0޽h ? X(=^___PPT10.90ov+cDDO' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(+8+0+A +, L0 ""@OHY0 r"(  x  c $4"AP`  A d  <1?, XB  0D1?:, :XB  0D1?, XB  0D1?Z , Z XB  0D1? , XB   0D1?z , z XB   0D1? , XB   0D1? , XB   0D1?* , * XB   0D1? , XB  0D1?J , J d  <1?\ XB  0D1?\XB  0D1?1\1XB  0D1?\XB  0D1?Q \Q XB  0D1? \ XB  0D1?q \q XB  0D1? \ jb  BG 1?Q ,  H8!1?`q  mPhysical page base addr  H1A1?j  Q  ? Main memory dB  <D1?` dB  <D1?A\dB  <D1?`dB  <D1?1 q dB   <D1? ` dB ! <D1?` dB " <D1?` ` dB # <D1? ` dB % <D1? 1dB & <D1?@` dB ' <D1?q !d ) <1?A L d * <1?Ld + <1?LQXB - 0D1?ll  . HAA1?`h @ Disk storage d / <1?0 0 HEA1?L @Virtual page # 1 HJA1? 3V 2 HHA1?  G1 1 1 1 1 1 0 1 0 1 0^B 4 6D1?  S l  / Y /,$D0r 7 B1? fB 9 6D1? fB : 6D1? ))fB ; 6D1? fB < 6D1? IIr ? B1?   fB @ 6D1?  fB A 6D1? ) )fB B 6D1?  fB C 6D1? I I F N(PA1?   ; 1 1 1 0 1 fB G 6D1?  H NXA1?\ X , 5Tag I N^A1? /0 mPhysical page base addr J NXdA1? X, 3V K NlbA1?   7TLB M HhjA1?(  aPage Table (in physical memory)&  \l  !`  U` ` ,$D 0rB N BD1? !`@rB O BD1? \ArB P BD1? A`` rB Q BD1? 1` XB R 0D1?0 Pl 0 0 Xx x,$D 0fB E 6D1?0 0fB V 6D1? 0 0H  0޽h ? X(=^p h ___PPT10H .,$+ZD ' = @B D' = @BA?%,( < +O%,( < +D4' =%(D' =%(D' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*Y%(D' =%(D' =%(D7' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*X%(D' =-s6Bwipe(down)*<3<*XD' =%(D' =%(D3' =4@BBBB%(D' =1:Bvisible*o3>+B#style.visibility<*U%(D' =-o6Bwipe(up)*<3<*U+  L0 80O (  r  S D}AP`  A r  S ~A@P`, A d  <1?0xX  TA 8c 8c1?Dxp {E V Virtual Page # Physical Page # Dirty Ref AccessFUFXB  01?000XB @ 01?@P P XB  01?@XB   01?@XB   01?x`XB   01?@   Z+B#style.visibility<* %(+8+0+ A +% L0 91N&- (  r  S (AP`  A   c $A0 PG<$0 A [8 p  - fB  68c?8X8fB  68c?`@`fB B 68c?h   `A 8c 8c1?  9CPUU    fAxaxa8c?P  @ TLB Lookup      fԛAxaxa8c? P  ;Cache    fdAxaxa8c?XX A Main Memory  lB   <8c?hlB   <8c? p lB  <8c?(HfB B 68c?0X0fB  68c?8 fB  68c?  fB  68c? @  lB  <8c?`p plB B <8c? @@lB  <8c? @    `A 8c 8c1?x 8VAU   `A 8c 8c1?   8PAU   `A 8c 8c1?H :missU   `A 8c 8c1?@ @ k 9hitU   `ĮA 8c 8c1?0   :dataU   f$Axaxa8c?  e Trans- lation   ` A 8c 8c1? p # 9hitUlB   <8c?HH !  `زA 8c 8c1?@k :missUfB " 68c?P P@ fB # 68c?XH H lB $ <8c?  P lB %B <8c?   '  `|A 8c 8c1? p # K t,U (  `PvA 8c 8c1?x+ L t,U`B + 0Do?@ `B , 0Do? @p @H  0޽h ? X(=^___PPT10 .O+XFD| ' = @B D7 ' = @BA?%,( < +O%,( < +Da' =%(%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*7%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*7%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<**%(D' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<**i%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*i%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(+8+0+A +' L0 & P +(  x  c $AP`  A    + #"*  A  BA1?   Q 0.01% to 2%  8c`  Bܼ?1?P    Y0.00001% to 0.0001%8c`  B?1? P  P Miss rates  8c`  Bܾ?1?Z   P 10 to 1000  8c`  B@?1?P Z   _10,000,000 to 100,000,0008c`   B?1?Z P   [Miss penalty (clocks)8c`   B?1?^Z  M4 to 328c`   BX ?1?P ^Z  T4000 to 64,0008c`   B?1?^P Z  TBlock size (B)8c`   B8?1?^ P 0.25 to 16  8c`  BA1?P ^ ^250,000 to 1,000,000,0008c`  B.?1?P ^ UTotal size (KB)8c`  B/?1? W16 to 512 entries8c`  B<8?1?P  ]16,000 to 250,000 words8c`  B8c``B  0o ?ZB  s *1 ?ZB  s *1 ?ZB  s *1 ?^^ZB  s *1 ?Z Z ZB  s *1 ?  `B  0o ?  `B  0o ? ZB  s *1 ?P P ZB  s *1 ? `B   0o ? H  0޽h ? X(=^___PPT10i.0t{n+D=' = @B +  IL0   0PXh (  x  c $tP`    h i X #"i4  B|m?1?P i 2 TLBs for instructions and 2 TLBs for data Both L1 TLBs fully associative with ~LRU replacement Both L2 TLBs are 4-way set associative with round-robin LRU Both L1 TLBs have 40 entries Both L2 TLBs have 512 entries TBL misses handled in hardwaret1818c`  B?1?P  y AMD Opteron  8c` ' B0?1?P i O1 TLB for instructions and 1TLB for data Both 4-way set associative Both use ~LRU replacement Both have 128 entries TLB misses handled in hardware8c` ( B|?1?i XTLB organization8c` ) B?1?P  TIntel P4  8c` * B ?1? @8c``B + 0o ?ZB , s *o ?`B 7 0o ?ii`B 8 0o ?iZB 9 s *o ?i`B : 0o ?iZB ; s *1 ?P P iH  0޽h ? X(=^___PPT10i.߽p-+D=' = @B +! L0   PP1jM (  r  S P`    P@` j #"2&@P`  ( BP{?1? ` >8c` ' Bx?1?0  R Hit   8c` & B$?1? 0 LMiss8c` % BV1?P  LMiss8c`   BV1? `  >8c`  B$V1?0   R Miss/ Hit  8c`  B!V1? 0  LMiss8c`  B4*V1?P   KHit8c`  B2V1? `  >8c`  B:V1?0   LMiss8c`  BCV1? 0  LMiss8c`  BKV1?P   LMiss8c`  BSV1?`  >8c`  B4\V1?0  MMiss 8c`  B|dV1?0  KHit8c`  B|fV1?P  LMiss8c`  BuV1?` >8c`  BwV1?0 KHit8c`  BV1?0 KHit8c`  BV1?P LMiss8c`  B8c`  BV1?0 MMiss 8c`  BV1?0 KHit8c`   BV1?P KHit8c`   B,V1?` >8c`   BV1?0 KHit8c`   BLV1?0 KHit8c`   BV1?P KHit8c`  BV1?@` j$Possible? Under what circumstances?%%8c`  BxV1?0@ MCache8c`  BPV1?@0 R Page Table  8c`  BpJ1?P@ KTLB8c``B ) 0o ?P@`@ZB * s *o ?P`ZB + s *1 ?P`ZB , s *1 ?P`ZB - s *1 ?P`ZB . s *1 ?P ` ZB / s *1 ?P ` ZB 0 s *1 ?P ` `B 2 0o ?P``B 3 0o ?P@PZB 4 s *1 ?@ZB 5 s *1 ?0@0ZB 6 s *o ?@`B 7 0o ?`@`H  0޽h ? X(=^___PPT10i.p+D=' = @B +< L0 ))P88%)(  x  c $\JP`  J  P@` # #"2& @P` J  B01? ` >8c`  B1?0  R Hit   8c`  B81? 0 LMiss8c`  Bn1?P  LMiss8c`  Bs1? `  >8c`   B4~1?0   R Miss/ Hit  8c`   Bp1? 0  LMiss8c`   B1?P   KHit8c`   B$1? `  >8c`   B.1?0   LMiss8c`  B$61? 0  LMiss8c`  B>1?P   LMiss8c`  BE1?`  >8c`  BO1?0  MMiss 8c`  BV1?0  KHit8c`  BpQ1?P  LMiss8c`  Bxc1?` >8c`  Be1?0 KHit8c`  B{1?0 KHit8c`  B܃1?P LMiss8c`  B1?` >8c`  B|1?0 MMiss 8c`  B|1?0 KHit8c`  B41?P KHit8c`  B\1?` >8c`  BЮ1?0 KHit8c`  B\1?0 KHit8c`  B$Ʋ1?P KHit8c`   BDz1?@` j$Possible? Under what circumstances?%%8c` ! BTײ1?0@ MCache8c` " Bز1?@0 R Page Table  8c` # Bڲ1?P@ KTLB8c``B $ 0o ?P@`@ZB % s *o ?P`ZB & s *1 ?P`ZB ' s *1 ?P`ZB ( s *1 ?P`ZB ) s *1 ?P ` ZB * s *1 ?P ` ZB + s *1 ?P ` `B , 0o ?P``B - 0o ?P@PZB . s *1 ?@ZB / s *1 ?0@0ZB 0 s *o ?@`B 1 0o ?`@` 2 H1?,$0 X&Yes  what we want!X 3 H1?6,$0 zYes  although the page table is not checked if the TLB hits>> 4 H,1?b,$0 r@Yes  TLB miss, PA in page table!!L 5 H1? ,$0 nYes  TLB miss, PA in page table, but data not in cache88 6 H1?  ,$0 R Yes  page faultr 7 H/1?  ,$0 Impossible  TLB translation not possible if page is not present in memoryKK^ 8 H11? wz,$0 Impossible  data not allowed in cache if page is not in memoryAAH  0޽h ? X(=^___PPT10.p+1iD' = @B D' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*2%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*3%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*4%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*5%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*6%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*7%(DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*8%(++0+2 ++0+3 ++0+4 ++0+5 ++0+6 ++0+7 ++0+8 +f- GL0 e,],OOQ+(  r  S $/P`   r  S d?P`    Ho?  0  Ho?J   0j  B1? J  |B  TD1?``   N]1?T ;  7Tag   Nc1?TY;  8Dataj   B1?^ J  |B   TD1?^ `` B   ZD1? ^ B   ZD1? 22^ j2  B1? J `   Nj1?M t <4  5=B  ZD1? j  B1?  |B  TD1?   Nz1?T;  7Tag  No1?T;  8Dataj  B1?^  |B  TD1?^  B  ZD1? ``^ B  ZD1? ^ j2  B1?    N u1?M 4  5=B  ZD1? `` v  N1?^  |B  TD1? V  |B  TD1? V V  B  ZD1? B   ZD1?  v ! N1?^ a B " ZD1? e p" # H1? Uu|B $ TD1? |B % TD1? `` |B & TD1? w |B ' TD1? ` |B ( TD1? ww|B ) TD1? B * ZD1?u2 + N`}1? = Cache Hit  jr , B1?B - ZD1? |B . TD1?H 2TH B / ZD1?H TT|B 0 TD1? 22H B 1 ZD1?2 2 Nt1? @ Desired word  B 3 ZD1?**|B 4 TD1? > > B 5 ZD1?> 1j 6 B1?0|B 7 TDo?p`|B 8 TD1?P |B 9 TD1?0P|B : TD1?P P|B ; TD1?0xx|B < TD1?x B = ZD1?  p |B > TD1?HH0j ? Bo?PP |B @ TD1?PHHP |B A TD1?0|B B@ TD1?B C ZD1?P|B D TD1?P  |B E TD1? h B F ZD1? h h p  G N 1?@H'  >VA Tag H N1?\~  >PA TagB J ZD1?P ((@  K N41?@ T'  ?TLB HitB L ZD1?   N H1?p W K2-way Associative Cache O H1?0  : Index P H`1? 0  :PA Tag Q Hढ़1?@  > Block offset H  0޽h ? X(=^___PPT10i.+D=' = @B +* FL0 Oo(  r  S lP`   r  S @P`   F X v  Pp   Z䮝 8c 8c1?~ v :dataU`B  01?`B  01?P`B B 01?``   Z 8c 8c1?&: 9CPUU    `0xaxa1?+ P e Trans- lation    `xaxa1?+ 8 ;Cache    `xaxa1?U b A Main Memory  fB   61?#fB  61?&#fB  61? M`B B 01? HMH`B  01? L `B B 01?d `B  01?\\l`B  01?  fB B 61?  `B B 01?+fB  61?f2  61?    Z0ɝ 8c 8c1?d 8VAU  ZΝ 8c 8c1?d 9hitU`B  01?  Z̝ 8c 8c1?^ Xv  8PAUj  Z@ 8c 8c1 ? P`,$0 F but Two different virtual addresses can map to the same physical address (when processes are sharing data), i.e., two different cache entries hold data for the same physical address  synonyms Must update all cache entries with the same physical address or the memory becomes inconsistentJ` `H  0޽h ? X(=^___PPT10.:ܔ+DO' = @B D ' = @BA?%,( < +O%,( < +DA' =%(D' =%(D' =A@BBBB0B%(D' =1:Bvisible*o3>+B#style.visibility<*%(+8+0+ + L0 pO*(  r  S 8P`   x  c $ @P0F  H  0޽h ? X(=^___PPT10i.1+D=' = @B + HL0 O:(  r  S P`     S $I@P`  " (;PpH  0޽h ? X(=^___PPT10i.?%2+D=' = @B +hJ0 ( J(    S ~>dd1 ? J  >     T1 ?2   >H  0\j ? a(Q0 e]PO(  ^  S s4   >W  c $t!> K  > The page size is 212 = 4KB, the number of physical pages allowed in memory is 218, the physical address space is 1GB and the virtual address space is 4GB6;IH  0\j ? X(=^80___PPT10./8v0 OH(  ^  S s4   >  c $D)> K  > >*Doing synonym updates requires significant hardware  essentially an associative lookup on the physical address tags to see if you have multiple hitsH  0\j ? X(=^80___PPT10.:Ln0 O\(  ^  S s4   >  c $/> K  > ROverlapped access only works as long as the address bits used to index into the cache do not change as the result of VA translation This usually limits things to small caches, large page sizes, or high n-way set associative caches if you want a large cache4W H  0\j ? X(=^80___PPT10.=mfNw0 nfO (  ^  S s4   >`   c $d:> K  >  Let s summarize today s lecture. I know you have heard this many times and many ways but it is still worth repeating. Memory hierarchy works because of the Principle of Locality which says a program will access a relatively small portion of the address space at any instant of time. There are two types of locality: temporal locality, or locality in time and spatial locality, or locality in space. So far, we have covered three major categories of cache misses. Compulsory misses are cache misses due to cold start. You cannot avoid them but if you are going to run billions of instructions anyway, compulsory misses usually don t bother you. Conflict misses are misses caused by multiple memory location being mapped to the same cache location. The nightmare scenario is the ping pong effect when a block is read into the cache but before we have a chance to use it, it was immediately forced out by another conflict miss. You can reduce Conflict misses by either increase the cache size or increase the associativity, or both. Finally, Capacity misses occurs when the cache is not big enough to contains all the cache blocks required by the program. You can reduce this miss rate by making the cache larger. There are two write policy as far as cache write is concerned. Write through requires a write buffer and a nightmare scenario is when the store occurs so frequent that you saturates your write buffer. The second write polity is write back. In this case, you only write to the cache and only when the cache block is being replaced do you write the cache block back to memory. +3 = 77 min. (Y:57)MM $ HH  0\j ? X(=^80___PPT10.?0kZcz0 @Ps(  d  c $s4   >  s *A> K  > ]IA trace cache finds a dynamic sequence of instructions including taken branches to load into a cache block. Thus, the cache blocks contain dynamic traces of the executed instructions as determined by the CPU rather than static sequences of instructions as determined by memory layout. It folds branch prediction into the cache.H  0\j ? X(=^80___PPT10.d0 bZP$(  $ $  T1 ?1   5 $ C xP5gֳgֳ ? I  5 ^` H""DDffH $ 0\j ? a(0 bZP,(  , ,  T1 ?1   4 , C x>4gֳgֳ ? I  4 ^` H""DDffH , 0\j ? a(0 bZQ4(  4 4  T1 ?1   3 4 C x3gֳgֳ ? I  3 ^` H""DDffH 4 0\j ? a(0 bZ0Q<(  < <  T1 ?1   3 < C x3gֳgֳ ? I  3 ^` H""DDffH < 0\j ? a(0 bZPQD(  D D  T1 ?1   3 D C x3gֳgֳ ? I  3 ^` H""DDffH D 0\j ? a(0 bZpQL(  L L  T1 ?1   ' L C x.'gֳgֳ ? I  ' ^` H""DDffH L 0\j ? a(0 QTM(  T T  T1 ?1   'y T C x4c'gֳgֳ ? I  ' QThe virtual page number is used to index the page table. If the valid bit is on, the page table supplies the physical page number (i.e.,., the starting address of the page in memory) corresponding to the virtual page. If the valid bit is off, the page currently resides only on disk, at a specified address. In many systems, the table of physical page addresses and disk page addresses, while logically one table, are stored in two separate data structures. Dual tables are justified in part because we must keep the disk addressers of all the pages, even if they are currently in main memory.RRbR H""DDffH T 0\j ? a(0 bZQ`(  ` `  T1 ?1   ' ` C x'gֳgֳ ? I  ' ^` H""DDffH ` 0\j ? a(0 bZQh(  h h  T1 ?1   # h C x #gֳgֳ ? I  # ^` H""DDffH h 0\j ? a(0 bZRp(  p p  T1 ?1   C p C x@Cgֳgֳ ? I  C ^` H""DDffH p 0\j ? a(0 bZ Rx(  x x  T1 ?1    x C xgֳgֳ ? I   ^` H""DDffH x 0\j ? a(0 bZ@R(     T1 ?1     C xgֳgֳ ? I   ^` H""DDffH  0\j ? a( 0 `RY(     T1 ?1     C xmgֳgֳ ? :?   ]# of virtual pages does not need to be equal to # of pages addressable with physical address.^^b^ H""DDffH  0\j ? a(0 bZR(     T1 ?1     C xvgֳgֳ ? I   ^` H""DDffH  0\j ? a(0 bZR(     T1 ?1     C xgֳgֳ ? I   ^` H""DDffH  0\j ? a(0 bZR(     T1 ?1     C xgֳgֳ ? I   ^` H""DDffH  0\j ? a(0 bZS(     T1 ?1     C x<[gֳgֳ ? I   ^` H""DDffH  0\j ? a(0 bZ S(     T1 ?1     C x,gֳgֳ ? I   ^` H""DDffH  0\j ? a(0 bZ@S(     T1 ?1     C xgֳgֳ ? I   ^` H""DDffH  0\j ? a(0 bZpS(     T1 ?1     C x ygֳgֳ ? I   ^` H""DDffH  0\j ? a(0 bZS(     T1 ?1     C xgֳgֳ ? I   ^` H""DDffH  0\j ? a(0 bZS(     T1 ?1     C xHgֳgֳ ? I   ^` H""DDffH  0\j ? a(0 bZS(     T1 ?1     C x֫gֳgֳ ? I   ^` H""DDffH  0\j ? a(0 bZS(     T1 ?1     C xLgֳgֳ ? I   ^` H""DDffH  0\j ? a(0 Ta(     T1 ?1   4  C xT4gֳgֳ ?~ RS  4 GThe TLB contains a subset of the virtual-to-physical page mappings that are in the page table. (The TLB mappings are shown in color.) Because the TLB is a cache, it must have a tag field. If there is no matching entry in the TLB for a page, the page table must be examined. The page table either supplies a physical page number for the page (which can then be used to build a TLB entry) or indicates that the page resides on disk, in which case a page fault occurs. Since the page table has an entry for every virtual page (it is not a cache, in other words), no tag field is needed.6Hbb3bH H""DDffH  0\j ? a(0 bZ0T(     T1 ?1   /  C x/gֳgֳ ? I  / ^` H""DDffH  0\j ? a(60 `T(     T1 ?1     C x4gֳgֳ ? I   If the TLB generates a hit, the cache can be accessed with the resulting physical address. If the operation is a write, the cache entry is overwritten and the data is sent to the write buffer; remember, though, that a cache write miss cannot occur for the DECStation 3100 cache, which uses one-word blocks and a write-through from memory. In actuality, the TLB does not contain a true dirty bit; instead, it uses the write protection bit to detect the first write. How this works will be explained in the next section. Notice that a TLB hit and a cache hit are independent events; this is examined further in the exercises at the end of this chapter.b H""DDffH  0\j ? a(0 bZT(     T1 ?1     C x4ɧgֳgֳ ? I   ^` H""DDffH  0\j ? a(0 bZT(     T1 ?1     C xxԧgֳgֳ ? I   ^` H""DDffH  0\j ? a(0 bZT (       T1 ?1   9   C x#9gֳgֳ ? I  9 ^` H""DDffH   0\j ? a(0 bZT((  ( (  T1 ?1   H ( C xD9gֳgֳ ? I  H ^` H""DDffH ( 0\j ? a( 4x[kh>wvvzl%RdKWhXiU*"Fգt%Fv4?$PBM@~PZ nE.ZoϹwqڽÙ=3Wz 8x~| L! 3>F }XW/ y TceJJ=NӦpfaIx> u8bǗI8uט㩀SiHl+O5lWk^?'}[EYx |}WSy}J.epPPBy e7Je^}(Q4D9Ҋ҆Ҏ9J%Ettuk m}(q#x<%bg}Ĵs<eGc|m\K#XbLC"OEg1kʴ 6 Gg~2O)32oae5HoKWNi*+(8)R^F[4tuwq*%Zq{^tM03x[j+APmԦӯ_Cx]|0Us ?xcyFs <3XzP }xIN8C͉k.d,Iov iݳcѓɖ&lW'NM lF hﰧd2hJ4G zа4oO6YZ@-ȵ$;miVYvJatjFTx2 DodA⭂x9wڀeCe˜> ӶV^lykɁ^6WSq#{Ł8C Iӵ*ί5"~EWʯ)ozk!K2@XiXx3@w+3@7o2@t[/urZABQ0! !mD Q 1B>VNj}sZ1t>~3C}#?C=˞42 /gxkёj@â cyy/ _:=H~11o #Lwy&0&KX+O2" O<}LlVߏ7bgаjue4jm vE(F)@5kg pLq4sux~l=H_E '4_{Y2SɓVF ר0c(/Co<ݠl%GQ^dm9l75Xkc\-5!D0eciA-jZZ &m,k4vIt6`m0xJӳ1Y?QS.vM̮L 25`sd̹aJV+aWְ Y kQ]Y֒d-Zqe8X뒵Zw/__u%kؕ5`-Hւ+kZEW֢$YK%kEV\Y+ֺd,B9?&oxsgjjWl4LvCPkYBSxZ&6n7V~X+?p\+?pb,kVݕ~6{Y֬u.x>1yޑoڀ/"3h3L"f4-xYv9^$S˿|%viWv&| rkTjSLՇ1UqϫSEǜT}SSw9:S9{T}?#\²لrڜلs\Drڼg&ec23uGB4V/_w x]xg,}OA}~AŞO†D23877?{6\G=[~ooPc[^>\ 8cf^ ΃az3cO'F125:j ̌w<-0ӤRh8dL4vf]hw&û܊CJ<#Jӏ]'&6YwkPmB2NL]n *DJ#TxAU$ R !jrιwf:ҽ;s߽8;;w^eҳ?{Kw˵ L) rVsZ+1w1\f(86;0wbN)(G[߷һ'x,`e8Y nzpƸmQֿ5ukzbC7[qƽ(}O)68c9u-ib!3AԷk.пKX100ݬRǿRAS*270)tk7T_5Zq &<VR+`+`,z UXZcO6`:̉=%mHV]*a|]_ _+i|^8Iڇ x2kv@NpkD>0J @+]>0vCyeXo7aBm B` #LHHl4<=Pہ_㕄)|"Bc͵`||~ ?tP (W-Ҟ4jm?vrZM+l\.˥)g# 'Jh}f~yڜ|h]5e7C5SZ:1A?nqs͖&Q\H9&@e^]#_Ŭ/|1X1fÆ1CrΐЮ?5.y,($O3Y 0x{lGw;ߝIe'w@kj%TT!qsjG9;FAE" PQKU !E4i7s ivg;<7{*O~nfCphBEqCf->*u qH׼ cccc9( PX5XR,XSOãSAPcۢ 4Xue^WO>PN}0% a0=j~'T>́&ȹo1 fL ˟Gg\~m;7u=v?4w8=ec*U]T:5b\q= PCAmW?IOLZIMXN?\OL~Mv6C8sɾyf>K20d+@e42.ڑGFm2*Qsss0wa^'NϾWYrv*VvS臕<`$M6[9ݎ3kC_:&7ONOH]Ս}/lкafC}bmbM˚5mCdon4>Z8=Y,U涁ǔgvd'ϒ cԍ]:ߤM!mY ޛLYm3L|#lDuIR$I'unD mQ(/$ tD&[5tц E1mh$ڧi_cM/EiSo2mh&گiɴEtM.uXS R=qM/HP5u uCq_k; B_QWHw̼u_-~=¥K{U/k/p1/ER-uVW ۊ0GgfS0%{@[+ZBw>wmmH{+?%}O F:&Q~O\5s\kD{qb(Nz/UxKt'^=ʼn?y-Ivp3 E&?k?P'iË1P01 r'@{zA~h{iX*NZLsy짵7νq񧿁ov_֛>$A/UeM\g8 rapc])"52k`j-1.ҘsɎ\3%sɞ\rK.ٛKePvGÑtnG"j}j^B7W!^ J>.xZklW>zwصiҤ&5Um^j VLR\^7&~+cT?҇ڊ*GP "0! Usν3;韴ݝ3߹9Μ{gvΥ翽PS+!80+(˕Jł+*ڥ:5oڊ k;ЩTQ^Q]#E& 3G'N e2O%`.'4򚎭uc/3H')w2=$-IH$C^ ɚ6-p|7QGIPrKPr {KB1*,idhk1*H[mWnAcx VVCA~?֝mهpx;8tƹ?!>[6/2 Ψ3;3 &\oo6.-|۷oklXmvZ`w01wOf m1OLM%0#t|c;K cc;,7;ܾ8({Ұ CxWńFaBaWd0s3`:@,/W6'Ky{ƒj03h{J-*,xU2x{y]WN) S{U$_h):@"U Ch  OGzfXt;!w IB@R<@҄@2@@&(O$L҄r'(5W9>ww#'i,J~ /MA0э~zl22@>(xysBxWa<|x<Ӑ(oH #"ߑ{HjѕxY>1Q 1nipj~xuSDE!eoP%p Iع8c!66`su+#T'˯jZ]9/o%ڈ/'ƺ~"64b7zbZV9g f\H5D|%g'}+fN)&nb¶(otD&[^vfK.3[>/;Eli؆&a ~ن3lf~;eg.6e^=Dݢ`wpEfyA[b^ 9y ټy!/¹ރ10/aMİ"rVVM[]6&i⟙"K6]vE4갉W&v3(b#7&Fl/a1c(qm9܆mx3[_ӟpr6W}pC)~n"6(~j2>:.7r?Zlf?lf?l~6{Hbq/@귛Qxfq'a`eBakک?=Lp ^xr FӷŪ.k,+/]ū_7Wyk }H 0Gv zmRZX,Zdm8Έqt?mgvJΨY 6<)Wx#pΚ65pDXsH p?d.&_T.ц&\ܣP֣=kis١G)m*9Fި.k-oT16xNdQm+m&L{JQZktյrhp\{ sZW,WʩOD_z"vg@Y9dУ‡AzzArh5W Sb0ihaq~P\]G#fwva{^?N6qX? ބ$Y ڦ-?%-Z)JP+pFAR-lϹΝmP̝o93of~;!7 eaLOIM, &\(U7Z55*hh *1uhЖ@GkR5S8q? GA2q|V5^}+.BW1 AnIeS9hޞ~7oC|:ط q Ocpj|S}dnz-uVB[B[f݆F[m=h6mAۊք  h-hhmhhN.nh!۸&YW`^WLOazoQd ,9r:F ^GQUS&ןArZa@j0׾ݍC=}'3x_jX^"ac {:-&q+xAkokv'/Vv1jY~|n[1F=yZxɣCgq͇{g L<7b?HKmZ;o2oNkV~/wN[>8#NN'Iv-Y<XWayˉm<-X rݳF6ߗؽw=/y`v=_u !1{Dm;|~{z/ˍޛ7WҙCBokbb^T{aXCB .Ϝ >ӰM7c܏gb(7xZⵠcRǠGdDd11b 9wVXkuO"X)p}#NX&NdYNX˜V8!,&f*vj0Nq^BaQ;yU {=_{֙a3A#jRbik&YEWHB&+KG×XW+Xaɪ"VD"us)VLbWWb9|;XU`U8JP ɪ%wt*J8JL(VBDM+*dk-HAwvq`5z Ȍ+/a(1T\ 0(Z{E=zR;K,R;K,R;K,Vn-irFq;-o4^_E>"!~6!a8i;a2'1?k,|=XB?CXZ}AsyZL4 b Z=HƘ-9A1HPuc'OK'SsٔLvY qj3C5D3ق͇TDKżރŭu֩S#٫%WQ*T_Uƥ:T|U\AU Tg꬯K5TIR]U]t.+e_eR]U]wtft"SR*Ru+UۥS>_UK5TC!jB&|U.մRM]*4yC5i jJ|US.U꫺ bTs݈}i*LJ1jg[S~N&z͹bC4l!sW<ޟs~8 s~8 s~8 s~8 s~8 s~8 s~8"ޙR~9kw3\v X"|]e=b$EU|ef|: /bv4-}葱i2ϺGde=k- OXQ)z\3x6B!tK)INB\~\~&\~&$S!.δt)䒫KpyCr.?1V̉bNpsU(9n=wZK{瞜G/ [7]|scF@>b=S V5τr]gw9;hA`7d3b>@}\%MY뻏˲@滝9`g;&cp3@J 7"+feۭlvXN+eev~([Ֆom-awB\SJ6I-aW!Sl 2x[{lGfnGGmw{.Yfp?ڟSx6l'UyM7Z_i#b\m܈ ݘm[ަ;p݂s杘wAaĬBDbI3}=c>/gxbl״Ul }ؒoE{q8Ţb{J|&:rH* q^}g… 9,Նc!;}b5/>JN]ԗ7[FFڬ_^ BO;޷^2AZֽÏ2Pg+eySx1/931+q[<>>s2so1m[۷nohqɺ[\g'`V1F45pllPRp'tTG[Ih,Ǒ؎^xeR2 )!iK8178 ڥ :,j>L۰bGa@B{ݙ|fvfvwv~V/v ˥}БC@R¥jDcl6FQ15k1a؀14j]-ަ G8xSa;DT2^Tş.o?iQy؝Snylɦ?ԀlVE_qXi@}!?]nB p $|y>BY]ɯңYio؊ c; Wj1;Q}|}?:7.egΑNg杻dΦ?qiགྷ?]O,PnY7 {r輠KǤ|BrI|\>d5/"= TЉE(?xcJs.%q-7d'Ź8~-{z޻kKXn}W~..(rۆ7"+k=#;&I׶Ylǝ}׏~CNYR Լո\C>|e6ap]Vֹ{WΝ}=9͜鲮+Az'ka2eLZ0{a`нkSgO&]{7'Q1 =3ǯT)i!U;37: >7]Uez<_rGP{aramecˣܿXO,Y[l6Rt҅cSR{v{l*PAPAP{ =Y{bV`)iA*ѵkSks!WRKgg?qO<`O=`ք P)q\Z}!m>d>dxIrя KzX$aQU+|t#Ώ~_=9>:^AF jµ_q| <?Z q FƧ8׍ ow>?ݒ;cc*XzSfRI?@{G'<,CyW g?1^ dN[uĒ(| ƚ-<ڽmI[RJ5'IpQƄi.J lW,-^ <]9`s63vZ\`rYBZ\r`#rڀ/Y`1`k7nÈܚkgeTH5ﴂ%x-I|\J/SԿ ($Q!ݡq Q.@r"yRS+\HC.Ґ5-?,6tت}XoV?hO^5` JNrBWNvYQُgrKHYe{x? >p4rF F "B 2!H kd B ^{Y+BA+"dv$V%@^-yv_'oKy,xKL'vS@@pnaPV޵Wef3\fƹR>A:e稌p>w\o?{UgF7ΥA폚Ѷw aԞAGϢsd>3R[BWBR䀗C^2%/9%m?}~_z|/= uzpw!Q_U'5N 0xZkl>wvf^?`;zUG76AƱGvvJC*HHUZPVBUR"PAI=;wf'Bwtg|s_sgի/7( w@nb`BEQ(P  ja6`ba,X1c%*PF{})$, 6`Ӱ{DԐ g+_7"|ęS9^[N]JT4svʐ-p ,ʎkv?;7Tѕwok#&V( 7Suؚ2c}tv*8lTvbGeˎ̤eӝ~/'&p{ǡ:ą.!Þ@P?$s '% ,(B^ aȜQg]h%zxȫS^%feeV[_^µ5t% glDA8h 8\4;ppEq[j/GbWj>J 'hGp2*Ej=Zыsȏo^E֝9qc o3Lt~tssͼ{\'"6VUtu=܆)Ҥ}v=ݡ(PL`$tBDHHDlKvAՄNuEʭࣂ +68cn+ k>cX2 b배moWLd>ccw`/`#aJ}`O{0!ZkMޔ|D^q׺U8kC7,G\ U@?{4q~U x xj iyVazyރrrуm \"iBAh|XT`$4`7돣gƆ'$%mҒm\:A&J֬q=(|$kT]y+xk̾gr);l` 󇐁#_.(|TKZ?pme]^:hGJ"V0' O`HMM<{ w-սsRA3$&40Scc,\Bbat1#!,e&,Xt,#H,@\cΡQ;.2kaKXXV#87dmڰ0xީ 4h4p )4[>79g˅,`q>(ȆFMA$)s4kaHaRp!K) EA+ǰLa( Ɔ).)B>/B"PH騢mH1ȅ" 1ϋhƕd@[s)K9,GS\9T)8š#8ZtUBLѠ 1EWUMUU ŭ\) bϋ* n;)8DU>k im1J[Lk)m3|ʴ2J*d8<-ʕ6nJ[Vu|>:Wں2*|* .BkPڒgm>O+JJRi*nh>mѶUV)M6m[7j54iBM\6r 2I1|LA{}XgF+jZ*K->T Z+Z)Zׯ@=c_jrU*OOpCϒ%?K~,Ygϒ%?O,]CG ڂ vʐ|\5p{F`f`ӄ,,6աwOYV? S҆3{'Ŗb; Z /p͸,yM?H!!#' }#gopJԎ"؎b9 3$WVIl<^>FүG QyN!B)PhTǽ=.8X`}.4r'.;Xf\X![ƫowF@5zG|rߣ͋Al퉡G{{UMrٙl.[Z^gKG=h~~9shWSIvW iŅC~9^~?{s٩eLN-%푅n^FB[dL~7vntCqOדSt' )% g! q 8x[klG{yI\gsyI7G q- R8vsQ+\ iSiK$!H) D.|AZ@ *W@J?fgwow'Ңffgf?fIsaRE )! u\.p>T3lk">8$ Cl]@,\1^WBl j_ 0(]Lµ  .V@}|Js7Z32R=)&D4ݡF]s)x[ mﻖR G1hC3W*=s+j?!ئa VX6k!ZALC\qč7Ab;@ 6WekJg q f!չRAk֍p߯SOX*)n?|vaNgxsO?4}ܯޮ<ɑQ===i)i4(}4gQ{ QRJy^ q. e,#'V@iPqTFwJ޶ ¼KA3޽+b@$`G-^5o&x?W-W"˳pnN\Ei9|B:eU=^#Gyߠs pϔB_: K4b "5nxaezCz}n@}s`sڨՕ{`~^ Zh2 {aF>Tڕ )7w0n>fy)7ʫEr8ݥmZ;Oo!]ļc1؛Ì%bVQhyu`[n%[`)gUb_ `}أ>-pKu1V^o%Qv<8ٝ6L*Ex]VuyɤkS)NWxе-7cP럳<S8Y%xo}*s:5ֳZj=ֳZj=ֳZj=?PC8v:ZAuǿ0ҥp>[p ޣ>1))H#2-!=y _jK ~ֿ F yue óq)़ْÕmR'wy׬kcS{ ܾ ^>1ٕ>q}H{JlWL5Ac2:*{,^?'~Y_CY>֘f|͚ eX5ʚ4k.5c-hB(kZԬP֢eJe0xYmj󱲚 ee},Ƭ2]΅b/ ~Ȥë5$mZ߇t+mހz1kK}t]aOڣYMYPV׬PV5Yc1kFfBY3>֬f͆f}9͚ eX Z5k1cf26cf|feCYYkPCY>ք!%o3~Y~-}k&^~yQzO?mLDҲuƽÝeA_+z9zαԹbu?O F%x/1O ޅ{( u驣wU#o]ƋϿ8۹&u;P+ڋ}TiM>-x{c]I4$GVHfN6ږr%'${dI:N'u;1mXt+JWו!Կz*-Ez )_WÇ'\? 2xZ[lgz 6,1ODqUJ"d|zCۓnԨ%R j+U>UVzRZ%O۹MJ3ٝofvfwvw~ ;!K=Q(K\Άs w0k؀G#]0 0VcX]0|1ZÃ,ns`cN `}  _|g_\%d6lS)HH*@ o}k]?> {r8dN xxnT ^׍Tt6Mxlir+61Z7@> ^@O}xz63;1gxjzz6}43qM-m[ڂ|N#a }vaWx5gldı/87xW+W#ɱ)oB\/Q866)1qcOjOuǵxrٗJ>7Zmf36LoI@'&Ӳ5v-im188t@v/Oɳ)ʯ vVqmv5wU`G`{aramebˣݿXG,^,E ҍ5Dv_6ac/,YepE<l,ŊpcE14 X 㪬ِ: ^f4΅zlz @u.O$r l'b .4޾_9`݄\AzyуɃكz "?TRZQB'SNoUaTSl>nϣ;F>8GVahth25jg2gRs(C߁bAǚ"9EvJ󤚏1T9.}psel~:\JAnML>I q[{W΢H&o2!vn$L:؍K @p0@7M`.XBܐ{aa67{ wf t ;4{j_=n)"eՍ7 YڏޔLrkehةؔu:lJNf[cd:\ToVRK-!iHodzI&9TFJȠ@}a(D7Lm{> I@%dI>&Z$xDnJ"`K(밖bK5% HZDDIqNZZ3g Skl=g5u0Kk0545zhQ֍%jI,ѨI,IZD%Lb +$Z*H_; %8@b:E|8"Ǵ-mJp>{y!QYWmިg|%WJgVjo|uhoJ]7sFOVe]+[Vx:VekBTޫqvf9?. 0xZ}l[W?qҤu|K4Nv)S (ZQI%4 *U? 4MIlZAb@*&!IBZWAC0b9I:}:~޹u޺Ý`5W &4q Hl8WNS_H ݏDm^DDBڂTTi(|R=RO"^0,=K{A((_Vu.h姍\bǔ`Mt*]1.eb*m$F/a?6m}n7_@oD"@ډԌԂԊԆ DjG@ڍԩ؃ni/RR?* $%|U}jdj181\HZsS3^66;=oNЛ8wo>٥xblcocgLdiPoWJ3C] o{AƽGEj&a›w!]zy3G>*&l ىS7k}T潷eKKXn0^?Vr^ VC7+ư+6߭G98g'aQd _&ob\_[ppimN,scGgݻgz>~:b?i3vaYZ\o|ܚWĪjW>LVLW@c{t8JLXYR/w`/&V.1׆c6(=SrY.grY.grZrh&' iԄH'ikE , ߁Mg?' 6(߽b] w?~!=8KX()sv*!t-vjWNsa4 蹁zu(a#J"ou\E2>"v-&R9[nå仺p7B&cGɇX-/8X|`MuTeNJ%,eO V}h0ֆȩ+Oᦏvwն/̿|e"Ze/__5Cv-uG-h;ڕ?h~n+psCV^#0sѹ{˥aoY'yTTs]bkv׮0>EmExםuT=h=7}ZwZ|g[U㈳֚ڵoE.{t ;dkA[4& q/#yUEiF8\'KocW*7woTud"vV_:dqT:怷h [ ~w4K rY]WyPgHYuS֔⼕Z=ſ_@so}Bwߴsu>pJ/̀:38$a`df>Br'@ um!\n<;gl<ώyv4fЛ.>]vq?|.s.ͭ*ٷߪT,xZklT>3{aa#b;!P\ R^c7^uhnD #DD6}&?U-VU놈N*$q}{Ιk*Uݹs9y;_C =!X* ΜR/YeV9}ҿ0uVcL}\*̫1Wa^y̵+OO:x͂ a 4 .wMpغh=$9Uy/ogxM=xx&!"T Rx)UV8#־Rdw|ӧKOvi=1@k(t&Bu8C!{Fz)!QK)$׬y ,!QGVd57\ro/\ Yim !;| 5_>*6oq h-Z~p:kގ1k܇3|P=fAَ-զe>.ֿI8zc3Ƽ1ѐ޲}{PMƃVO헏$Gg1lͯg6LФa7t ۴mڤ $$[ R~>hz ))>WA4CcЖ O˄faBa,1*-|wXSVEnbS7ggd XY?v34c*a `͓+ ;W@ve/JِEeu6庬eM6%.\fYܧO DN t $R tpn t0zr_4ugqis|QX!wH;!yNBx.B^ ݄d{ O-q^p I <-?>17nƛ[dy{_>>^skuszd L; ÿ/C{Y]Z|]Z֓ UIi=I]Kn֫{jTjD0 Z2&IĞcL:؇oa!a ī 3 ,` N 0v fH0Ó\Ͱ>iH!K;3IsZoxt4d$!I!{ $qVZ7!l(Pkj@mWԒ[í CO#(syTǜz P;8VL^>=p#pZ}q,Yg9r8q,g9ݟIHo*=mB B"C/a8 @ a>{>S0H2 HOEW>~=8gThsha}H J 9,[iyZ >/Eoݺ%°G2zZ Kqxq[N%%'\׌%?B>E&[Y<jQ;l+I\p\@=.Itn' lQLxR)G*UT*'u͑VTx-2>J+"kDQN!RŽg-62qLf6))O:/~]SڟL7,0Q~ *L~Mc'Qs Yқo|Y|Va&}q˦j0UpE'UȋiswxEC WwX c3WJ%k֨r}n [(&u[3^º:'KOKIA<bм?s<5{AY3y- q΁zy ct:9j>Lfv:L/_G3"Ż߾R)fM?FIP͂Sxg<8Ebb$bi NJqƛ: st.v|%{]r/w>Cwz.{`Զ^|B^[ .xZkl\G>3ïdIlqCqʦ Y5)X"86YFJ@T"UJ(R$)R($TUB PHrH@,})?Zع:w~|3g̝{W˗x|S"B {|ބ F{Xqy%RRRRRe`^O"Y0,`ީྡ{(T?]t'LՙqR\WP9S,N#'?R4 b8dM2?N]~ԟQ{QL~gӼQ-|pf-([QlGiDiBy@y%Ҍ҂C Vnx7JNG47 V.w}?<7^,dCg)s铙d2+zLOBy4ן+|*dkBc:QaOԣ{zz7S#Q䢳*sƅжTF}|SJ,a ^{{+\A8bpGȫ >Wp\SGYilAcAmWy}Y'ڷ##_#3ω1X18dJ ܏{-psoҷb7[]mo5/5a~&6U tvkف wxrR=fx*{B;<hV'MÉS΂WSↆ pv 4>, X2#I0^$Cw[nQk/(7/_|؟ %c؋1.qb9-Oqu.,⚜.\D8 .ʟY ,n++lJ#oU60@7\h\s8}.u2U@ yց[@z V@H?!v"r⍉ ;>é4.(]-B 7O$&. 2M\,CE|(0 y4a<5I?cc ߁aОŔRL?2 \w3w9澞k˸dfc[2cϠ& _U/$- &Ny r^G(cHYm1  .Lrna3)`QBj>@X XƦ-g+ǀ>EXN;&6MVia5 Yb J?LM|&\'ff&S)picz.sҘN'3âMkت2&6otܥ.i..]HHr.^إt.3ҕxe.]KWUp*]JK;\ѽm8[M.1`u׆ vYA2uoq~Ґ\cƢ5=Ac^O3YgzYgzYg\Wj5iuu=u[| +cr5ʃXdf]XY|[V 떏լf-E6nVbY) F lQ#={XZ{RUMk Sh2UߓM{yL69 .\Пu)ΐv1ꙍ;<uvUxbw(T-XЮ 1<˃RL&KS҈G(%Os7ͼHV!]cM{#zgsLJk^VFm}2/D $>@9&O^u%uǪMV}1*Y|TpZ^{gƮ^]?=ΫGEdrNi+L2NNNg:xu};.};@*KilZ#[eAsb`J%tc SpiX*O M1/;k'{d쳓vrN>j'^qԆ#H8ҽt#H@պIU*#B,oe.xZkh\>3{zؒRJ,ٲj=V[NX&8iueiPG`BXvB G RJ RHBp(2uRR46眙}X+JR\ι9gΙ;/nXPlaBgN17s>ܠǰ f0(̵0cކyG f;4VM8,NiX* M;q8uQ٥xkJ?; -Nγ8 $MI30siGC \%깔B2Nޔl濱=rDN?ʻ+7 &{qNe)|=x,=;1p+eeK*\\:x޿xחt:gڭ{pqxjꛦ]=G:dŎ25iqBڎMxSt8sGQkӯe?E!i*CtT V9+oÊVaBal 1?}ĞGXW v-Bl7ZZGrۇ]}ŴgKȱrEX҂X.!1gqٔ s\0 !Y%`jpW <`}x-G/bx|=V!dчCh!!! BvAcqܚIM b_x%?!oTW~?(kV3fy߱(NNO~J҂/>vka$r"]5ghQ Fjm`k<>˘00%']sD ,b7u,kA(aAjrB.\ŨY.bgC CEb] Ffq.<بu?$ΰ1}ɒ(&f,ƒ prf)3;91gϧKBw ]~jw'4x ^Y2xA ^ uF ^qy5Zj:k ^W߳ik0{K^u`j׀5| LŬkSWZjւ ׸ Yn'xj;j;j;KYMwu= ig_Vf'{AE4<xMӰ4!YEz6uu?&ه5Wo|Il*Vqڪ}*^ZsXRzok!k]u,G!TRtWuesŭ SZJ WFYEZHԚwji]wպ^weEZ'uR"SkZ.E2ܸ3ԄUVI36?ѦɷŝE|, O蚂%|;BL65 J.TҟuY~9vڟ?J%)XsH_MkpltmP{ z܄˵5RA[(Q>CF`#Oߒ3cT,Y=| \ȓ\uşfb/.GЁ_CkA3{Ycs`޵ &!۸1T`Q{ŦWjm<V-QHm<[!ZU$UjPUU]Po93omZvs9?s7 B?`>_ A&t}>p¿1:\ T!a0VcJ (Wclx9 L>0S814`ux KgU򧽼r+ZDj{LyR`-˦7T^*W{S>o)2[VpaN.;y]o|-q &0Ǹc3ƍM-cf|jz+>0c܆q;(+ 4~A`T/TÓtfz"k?Rӧ2',+˭lD/'NqRv‡'45}s`4lɁ?ETjҦDAbBrJlfMԣF4/0Y9ߚK~ps)rVd9uso栾`7·~0 ^ Ŧ2Wf!;}֏8wȏ_Pw*NO.S.e @ K/>Xo6,66ulumfc#'ZG,&ׁӊhҌ8%ʹmףmڤ :c:x ;p0l??^C*W~[)WAqǠ-@@: ̛0kHP؇araeU%|"XGl[rd"y9 i}g!Z{s\!Ʋ("KEi@$ӳ.窜h.OYȟ5 ' S qnpt^.[`@sp~VR"Q'z jMȡCȃk˘pSb L:K͡||{>O`7BXc'P bYf,`C 6*2b CXwV;J$Q%Ð W,Ck8;lpٱeZS1۲3g&cԌgdƒ'څ raCf3dNFJb$6f-'g)kQ3=<ɘgTvƐMg+ϐuzQXcYz#0o팷H@܈O@CkFIKiNQSgVY[e^a(fhnpdsvsV(Oh+'0  $0 T ` l x CSE 431. Computer Architecture Lecture 19 Janie IrwinDavid L. Mills598Microsoft PowerPoint 4.0@%.,@e,5ò@ (@ / G8;    --$  --'@"Arial-. 2 " CSE431 L22 y. "SystemD-@"Arial-.  2 bTLBs.-@"Arial-.  2 z..-@"Arial-.  2 }1.-@"Arial-. 2 LIrwin, PSU, 2005 .-=-=-8(223(3(2(556(6(5--'@"Arial-. =2 Virtual Memory   .-՜.+,0    YLetter Paper (8.5x11 in),5% =Times New RomanArial WingdingsMonotype Sorts 新細明體Tahoma mjicse431 WorksheetVirtual MemorySlide 2Slide 3Structure of Virtual MemorySlide 5Slide 6Slide 7 TechnologySlide 9Virtual Address Mapping TerminologyVM Simplifies Loading"Address Translation Consideration Slide 14 Slide 15 Slide 16What happens on a write ? Page Size Selection ConstraintsPage Size Selection An Example Slide 21 Slide 22 Techniques for Reducing PT Size Slide 24 Slide 25VM: Implementation IssuesFast Address TranslationPage Fault Handling Slide 29 Slide 30 TLB Design Slide 32 Slide 33Translation Lookaside Buffer Slide 35 Slide 36Review: The Memory HierarchyVirtual Memory%Two Programs Sharing Physical MemoryAddress TranslationAddress Translation Mechanisms Virtual Addressing with a Cache Making Address Translation Fast%Translation Lookaside Buffers (TLBs)A TLB in the Memory Hierarchy&Some Virtual Memory Design Parameters!Two Machines’ Cache ParametersTLB Event CombinationsTLB Event CombinationsReducing Translation Time%Why Not a Virtually Addressed Cache?The Hardware/Software BoundarySummary  Fonts UsedDesign TemplateEmbedded OLE Servers Slide Titles5&_0David L. MillsDavid L. Mills  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root EntrydO)Pictures$Current UserSummaryInformation(PowerPoint Document(DocumentSummaryInformation8