Paměťová hierarchie INP 2008 FIT VUT v Brně
000 Výkonová mezera mezi CPU a pamětí Moorův zákon CPU CPU 60% za rok (2X/.5roku) výkonnost 00 0 980 98 DRAM 982 983 984 985 986 987 988 989 990 99 992 993 994 995 996 997 998 999 2000 Rozdíl ve výkonnosti roste o 50% za rok! Programátoři spotřebují jakkoliv velkou kapacitu paměti! DRAM 9%/rok (2X/0let) 2
Vznik paměťové hierarchie Na základě časové a prostorové lokality odkazů k paměťovým místům a na základě cenových a výkonových kategorií pamětí (viz tabulky) byl vytvořen hierarchický paměťový systém. CPU 980 985 990 995 2000 2005 2005:980 processor 8080 286 386 Pentium P-III P-4 clock rate(mhz) 6 20 50 750 3000 3000 cycle time(ns) 000 66 50 6.3 0.3 3333 SRAM 980 985 990 995 2000 2005 2005:980 $/MB 9200 2900 320 256 00 75 256 access (ns) 300 50 35 5 2 0 30 DRAM 980 985 990 995 2000 2005 2005:980 $/MB 8000 880 00 30 0.20 40000 access (ns) 375 200 00 70 60 50 8 typical size(mb) 0.064 0.256 4 6 64 000 5000 Disk 980 985 990 995 2000 2005 2005:980 $/MB 500 00 8 0.30 0.05 0.00 0000 access (ms) 87 75 28 0 8 4 22 typical size(mb) 0 60 000 9000 400000 400000 3
Základní vlastnosti v hierarchickém paměťovém systému RYCHLOST KAPACITA CENA/BIT nejnižší M 3 nejvyšší nejnižší. M 2.. nejvyšší M RVP nejnižší nejvyšší CPU informační blok 4
Účinnost RVP V tomto uspořádání je M 3 vnější paměť (např. disk), M 2 je hlavní paměť M, a M je rychlá vyrovnávací paměť RVP mezi hlavní pamětí M 2 a procesorem. Jistý datový nebo instrukční blok (blok I/D) pak může v systému existovat až ve třech kopiích. Problémy práce s blokem I/D v paměťové hierarchii: Umístění bloku kam? Identifikace bloku je to on? Náhrada bloku výběr oběti Strategie zápisu problém koherence dat Základní údaj o účinnosti RVP je pravděpodobnost úspěchu (hit rate), resp. pravděpodobnost neúspěchu (miss rate), neboli pravděpodobnost výpadku bloku. Tyto parametry mohou být definovány zvlášť pro čtení a zápis, pro data i instrukce (data hit/miss rate, instruction hit/miss rate, atd.) Doba nalezení je v případě úspěchu přístupová doba RVP, v případě neúspěchu se přičítá ztrátová doba (miss penalty), což je doba potřebná na přisunutí bloku; je daná dobou potřebnou k uvolnění místa v RVP, přístupovou dobou k prvnímu slovu požadovaného bloku ve vzdálenější paměti plus doba přenosu celého bloku. Počet čekacích cyklů paměti = Počet Instr. x Počet paměťových přístupů na jednu Instr. x Miss rate x Miss penalty (na řešení výpadku) 5
RVP s přímým mapováním 000 00 00 0 00 0 0 adresa v RVP RVP 0000 adresa bloku 000 000 00 000 00 00 0 RVP má 8 blokových rámců s adresami 000 až, adresa bloku je pětibitová. Adresa polohy bloku v RVP se určí podle nejnižších tří bitů. adresa v RVP = adresa bloku mod počet bloků v RVP 6
Činnost RVP s přímým mapováním U RVP se dále musí poskytnout informace, zda je požadovaný blok přítomen, příp. zda je informace v bloku platná. K tomu slouží adresový příznak (tag), což jsou zbývající horní bity adresy, a příznak platnosti (valid bit). Činnost RVP je pro zadanou posloupnost adres bloků ilustrována v tabulce. 7
RVP s přímým mapováním s 32-bitovou adresou 3 2 2 0 pole příznaku Adresa tag 20 b n = 0 index offset bytu 0 V Tag 023 20 b 32 b = data & hit 8
Komentář k RVP s 32-bitovou adresou Leváčást RVP je adresová, pravá je datová. Celkový počet bloků (o velikostí jednoho slova) je 2 30, ve vyrovnávací paměti je umístěno 2 0 bloků. Dolní odhad pravděpodobnosti úspěchu je p hit = 2 0 /2 30 = 2-20 Díky lokalitě odkazů se v praxi dosahuje hodnot 0,9 až 0,98. Uvažujme 32-bitovou adresu bytu s obecným počtem bitů indexu n, délka bloku je opět 4 Byty. Ve vyrovnávací paměti je tedy 2 n slov, pole příznaku má 32 - (n+2) bitů. Kapacita RVP pracující s bloky je obecně rovna 2 n. (délka bloku + délka příznaku + délka pole V). Podle našeho zadání je to tedy 2 n. (32 + 32 - n - 2 + ) = 2 n.(63 - n) 9
Koherence dat Změní-li se data v bloku zápisem, ztratí bloky na vzdálenějších úrovních platnost a nesmí se již použít. Vznikla tak datová nekonzistence, neboli nekoherence. Pro udržování koherence dat ve všech kopiích bloků je možno použít tyto strategie: přímý zápis (write-through, průpis) Při přímém zápisu do RVP se zapisuje okamžitě i do bloku v M. Má výhodu ve snadné realizaci a rovněž ztráty při R-neúspěchu jsou nízké, protože nový blok se přisune bez dalšího zdržování. Je-li však větší rozdíl mezi rychlostí primární a sekundární (vzdálené) paměti, pak přímý zápis častými opravnými zápisy příliš zdržuje a je tedy nevýhodný zápis s mezipamětí (write buffer) umožňuje odložit opravné zápisy až do okamžiku uvolnění přístupu k vzdálenější paměti, takže nedochází ke zdržování procesoru. Mezipaměť mívá kapacitu pro jeden až deset opravných zápisů. zpětný zápis vždy Při zpětném zápisu se opraví celý blok v sekundární paměti až při jeho odsouvání. Strategie zpětného zápisu vždy je nepraktická, protože blok se zapisuje do sekundární paměti i v případě, že k žádné změně nedošlo. zpětný zápis podle příznaku změny (write-back, copy-back, store on flag) Prakticky použitelný je proto zpětný zápis podle příznaku změny (dirty bit). To je výhodné, protože střední počet zápisů do sekundární paměti je nižší, než u přímého zápisu. Navíc blokový přesun lze zrychlit zvětšením šířky sběrnice mezi vyrovnávací a hlavní pamětí. V současné době začíná zpětný zápis převládat. 0
Příklad Pracovní stanice DEC Station 300 má mezipaměť pro odložení zápisu pro 4 slova, vyrovnávací paměť má kapacitu 28 KB, střední pravděpodobnost neúspěchu pro datové a instrukční bloky je 4,8 až 5,4%, záleží ovšem na typu sledovaného programu. Pro velikost bloku nebo 4 slova dostáváme pravděpodobnost neúspěchu (program: kompilátor gcc): Velikost bloku ve slovech Pravděpodobnost Pravděpodobnost I-neúspěchu D-neúspěchu 6,% 2,% 4 2,0%,7%
Pravděpodobnost výpadku podle velikosti bloku Růst velikosti bloku má však příznivý vliv jen do určité míry. Je-li velikost bloku vzhledem k velikosti RVP příliš značná, je v RVP málo bloků a příliščasto se musí vyměňovat, protože požadovaná data nejsou často k dispozici. pravděpodobnost výpadku 40 [%] 30 velikost RVP KB 20 0 8KB 0 256KB 4 6 64 256 velikost bloku RVP [B] 2
Organizace vyrovnávací paměti příznak data (tag) 0 2 číslo bloku 3 4 5 6 7 a) -cestná (s přímým mapováním) množina (sada) 0 2 3 tag data tag data b) 2-cestná 0 stupeň asociativity 2 tag data tag data tag data tag data d) 4-cestná 0 2 3 4 5 6 7 c) 2-cestná s dvojnásobnou kapacitou 4 2 tag data tag data tag data tag data tag data tag data tag data tag data s = 8, resp. e) 8-cestná, resp. plně asociativní 3
Implementace 4-cestné RVP 4
Vzájemné vytlačování položek Problém vzájemného vytlačování položek se stejným ukazatelem se řeší zvýšením stupně asociativity. U dvoucestné paměti mohou být v paměti uloženy současně dvě položky se stejným ukazatelem. Organizace b) však přináší oproti uspořádání a) jen malé zlepšení, protože kapacita paměti se nezměnila a do jednoho řádku se mapuje dvojnásobné množství adres. Výrazné zlepšení přináší uspořádání c). Stupeň asociativity lze dále zvyšovat, až dospějeme k plně asociativní paměti, kdy již je příznak celá adresa, která může být umístěna v kterékoliv pozici. Příklad: Činnost jednotlivých uspořádání RVP prostudujte na základě zadané posloupnosti adres bloku: 0, 8, 0, 6, 8 atd. Pravidlo pro výpočet čísla bloku RVP je následující: adresa RVP = adresa bloku mod { počet bloků RVP, počet sad RVP } Údaj ve složené závorce je vlastně počet řádků v adresáři RVP. 5
Závislost pravděpodobnosti výpadku bloku na stupni asociativity pro různé velikosti bloku 8 pravděpodobnost výpadku 6 [%] 4 2 velikost RVP 8KB 6K 32K 64K 28K 0 2 4 8 stupeň asociativity 6
Výběr oběti Jsou-li všechny položky pro daný ukazatel obsazeny, je třeba rozhodnout, kterou položku zrušíme, a uvolníme tak místo pro novou položku. U dvoucestné RVP a obecně pro stupeň asociativity > tak vzniká problém výběru oběti. Tento problém řeší některá ze strategií náhrady: Least Recently Used (LRU), tedy ponechávají se položky používané v poslední době a ruší se nejdéle nepoužitá položka Most Frequently Used (MFU), kdy se ponechávají často používané položky a položka nejméně používaná se ruší RAND - náhodný výběr oběti FIFO - oběť je položka, která je v RVP nejdéle Strategie LRU, MFU i FIFO vyžadují další obvodové doplňky, jako registry pro udržování času použití, resp. jejich úsporné modifikace, nebo čítače četnosti použití. Zde se musířešit např. otázka přeplněníčítačů, a jsou navrženy algoritmy, které zavčas zahájí dekrementaci vybraných čítačů. 7
Příklad, typy výpadků U procesoru I 80386 je čtyřcestná RVP, používající se modifikované strategie MFU. Pracuje se přitom se změnovým bitem D a bitem S/U - System/User. Tyto dva bity rozdělí položky v RVP do čtyř skupin, jako první oběť se vybírá položka ze skupiny 00. Výpadky rozdělujeme podle příčin na nezbytné, např. po startu systému je RVP prázdná bez ohledu na konstrukci nebo nahrazovací algoritmus kapacitní, způsobené omezenou kapacitou RVP, takže nemohou být k dispozici všechny bloky dat a instrukcí konfliktní (nebo též kolizní), které závisí na stupni asociativity adresáře Závislost pravděpodobnosti výpadku na velikosti bloku pro různé stupně asociativity s vyznačením podílu jednotlivých typů výpadků je na následujícím obrázku. 8
Závislost pravděpodobnosti výpadku na velikosti bloku pro různé stupně asociativity 20 pravděpodobnost výpadku 5 [%] 0 konfliktní s = 2 4 8 stupeň asociativity 5 0 kapacitní nezbytné 2 4 8 6 32 64 28 velikost RVP [KB] 9
Virtuální paměť Problematika virtuální paměti je velmi podobná principu RVP. V zásadě lze říci, že u virtuální paměti pracuje hlavní paměť M jako rychlá vyrovnávací paměť pro disk. Motivace pro výstavbu virtuální paměti je dvojí: vytvořit možnost efektivního sdílení paměti M mnoha programy odstranit omezení fyzikální velikostí paměti M Vychází se přitom z poznatku, že pouze maláčást programů je současně aktivních. Dále se z praktických důvodů došlo k dělení větších programů na menší segmenty, které se pak překrývají (overlay). Pracujeme zde s pojmy fyzického (reálného) adresového prostoru, a logického (virtuálního) adresového prostoru. 20
Vztah mezi virtuální a fyzickou adresou Virtuální adresy Fyzické adresy Adresy na disku 2
Překlad virtuální adresy na fyzickou () Velký virtuální adresový prostor je realizován jednak "rychlou" pamětí M s reálným adresovým prostorem, jednak diskovým prostorem. Bloky, v tomto případě stránky, které nejsou momentálně ve fyzickém adresovém prostoru a jsou požadovány, se musejí do fyzické paměti vložit. Často se zavádí pojem stránkového rámu, což je úsek paměti M velikosti jedné stránky, který slouží pro uložení některé stránky s libovolnou virtuální adresou. Vzhledem k tomu, že program používá k odkazu virtuální adresu, musí se tato přeložit na fyzickou adresu stránkového rámu. Nepřekládá se celá adresa, ale pouze adresa stránky, viz následující obrázek. 22
Překlad virtuální adresy na fyzickou (2) 3 2 0 číslo virtuální stránky offset ve stránce virtuální adresa překlad 29 2 0 číslo fyzické stránky offset ve stránce fyzická adresa Velikost stránky je 2 2 = 4 KB. Číslo virtuální stránky má 20 bitů, takže virtuální adresový prostor je 2 20 + 2 2 = 4 GB. Číslo fyzické stránky má 8 bitů, takže fyzický adresový prostor je 2 8 + 2 2 = GB. 23
Pravidla pro virtuální paměťové systémy Stránky musí být dost velké, aby se kompenzovaly dlouhé přístupové doby disku, používané velikosti stránky jsou 4 KB, 6 KB až 64 KB. Pro snížení počtu výpadků stránky (page fault) se používají organizační techniky s různými strategiemi rozmisťování stránek. Výpadek stránky se může ošetřit programově, protože ztráty vyhledáváním nové adresy v tabulkách jsou malé ve srovnání s přístupovými dobami disku. Při udržování datové koherence se strategie přímého zápisu (průpisu) nepoužívá, vždy jde o zpětný zápis. 24
Jednostupňový překlad virtuální adresy Ukazatel začátku TABULKA bit přítomnosti STRÁNEK virtuální adresa 3 2 0 číslo virtuální stránky offset ve stránce P 20 b číslo fyzické stránky. 2 Velikost stránky je 4 KB, virtuální adresový prostor je 4 GB, fyzický adresový prostor je GB. Tabulka stránek má 2 20 položek.. stránka je /není přítomná /0 8 29 2 číslo fyzické stránky offset ve stránce 0 Bit přítomnosti stránky udává, zda požadovaná stránka je ve fyzické paměti, nebo ne. Pokud není, tak v dané položce není uvedeno číslo fyzické stránky, ale může tam být uvedena adresa umístění stránky na disku (tato adresa bude zřejmě vyžadovat větší počet bitů). Tato adresa pak obsahuje data, která jsou zdvojením informace z úplné tabulky adres stránek na disku. 25
Dvoustupňový překlad virtuální adresy U stránkově-segmentované adresy se používá dvoustupňový překlad adresy, rozdělený na překlad čísla segmentu a překlad čísla stránky, viz následující obrázek. Je to adresové schéma mikroprocesoru Intel 80386 z roku 985, kde je přímá obvodová podpora pro segmentaci i stránkování. Je zachována kompatibilita s adresací původního mikroprocesoru 8086 z roku 976. Fyzický adresový prostor 80 386 je 4GB, logický adresový prostor je 64 TB. Jednotka pro řízení paměti MMU (Memory Management Unit) zabudovaná v čipu obsahuje segmentační jednotku, která provádí překlad adresy segmentů, jejichž velikost je od do 2 32 bytů. Stránkovací jednotka překládá adresy stránek o velikosti 4KB. Programátor může obejít některou z těchto jednotek, takže u systému 80 386 mohou být použity čtyři organizace paměti: nesegmentovaná a nestránkovaná, segmentovaná a nestránkovaná, nesegmentovaná a stránkovaná, a segmentovaná a stránkovaná. 26
Dvoustupňový překlad I 80386 Bázový registr tabulky segmentů Tabulka segmentů Tabulka stránek L s Jednotka pro efektivní adresu N p Logická adresa L Efektivní adresa 32 32 + 32 Adresář stránek Bázový registr adresáře stránek 4 Adresa segmentu L s 32 N d Lineární adresa Segmentový registr 0 0 20 2 Adresář stránek N d Tabulka stránek N p Stránkový rám Posunutí Fyzická adresa P 27
Optimalizace velikosti stránky Předpokládejme, že adresa je stránkově-segmentovaná, segment má velikost S, velikost stránky je p. Tabulka stránek pro jeden segment má S/p položek. Každý program využije jistého počtu stránek, přičemž poslední stránka je v průměru využita z jedné poloviny. Celková ztráta paměťového prostoru je dána velikostí tabulky stránek a jedné poloviny stránky, tedy S/p + p/2 Hledáme minimum tohoto výrazu tak, že jej derivujeme podle p. Dostaneme Odtud - S/p 2 + /2 = 0 p 2 = 2S, tedy p opt = 2S 28
Příklad: Formáty adresy IBM System/360, 370 Segment 64 KB 0 7 8 5 6 20 2 3 x Segm. No. Page No. Byte No. Stránka 2 KB 0 7 8 5 6 9 20 3 x Segm. No. Page No. Byte No. Stránka 4 KB Segment MB 0 7 8 2 20 2 3 x Segm. No. Page No. Byte No. Stránka 2 KB 0 7 8 2 9 20 3 x Segm. No. Page No. Byte No. Stránka 4 KB 2 x 64 K = 52/256 B 2 x M = /2 KB 29
Zrychlení překladu virtuální adresy Pro zrychlení překladu virtuálních adres se často implementuje podmnožina adres tabulky stránek, umístěných ve fyzické paměti pomocí asociativní paměti, zvané Tabulka přeložených adres (Translation Look-Aside Buffer - TLB). Dostáváme tak uspořádání, které je na následujícím obrázku. Hledání v TLB je např. index-asociativní, může se však použít jakékoliv z organizací, uvedených v kap. o RVP. Bit platnosti V v TLB udává, zda se položka TLB pro nalezenou vstupní adresu může použít. Pokud ne, hledá se v úplné tabulce stránek. Zde bit platnosti V říká, zda je stránka k dispozici ve fyzické paměti, nebo zda se musí hledat na disku. Strategie pro umisťování překladů virtuálních adres do TLB jsou obdobné strategiím pro obsazování položek adresáře RVP, tedy LRU, MFU, FIFO a RAND. Typické velikosti paměti přeložených adres jsou 32 až 024 položek, dosahuje se pravděpodobnosti výpadku stránky 0,0 až %. 30
Podpora překladu pomocí TLB Číslo virtuální stránky V 0 0 TLB Tag Fyzická adresa str. Fyzická paměť Úplná tabulka stránek V Fyz. adr. nebo disk 0 0 0. Disk 3
Virtuální adresa 3 0 číslo virtuální stránky offset ve stránce 20 b 2 V D Tag číslo fyzické stránky Obvodový překlad virtuální adresy pomocí TLB a RVP s index-asociativním adresářem v DecStation 300 TLB TLB hit & = 20 číslo fyzické stránky Fyzická adresa 6 4 2 Tag Index Offset bytu V Tag Data RVP Cache hit & = Data 32 32
Analýza hierarchické paměti z hlediska ceny a výkonu Máme dvě konfigurace počítače podle obrázku s parametry podle tabulky, kde m i je kapacita paměti, t i je doba přístupu a c i je cena v hal/kbit. a) CPU m /t /c m 2 /t 2 /c 2 b) CPU /t /c m 3 3 3 i mi [B] ti [ns] ci [hal/[kbit] 5K 00 35 2 2M 500 4 3 2M 300 20 33
Výpočet Máme vypočítat průměrnou cenu na KB v obou konfiguracích a máme určit, kdy bude výhodnější varianta a). Střední ceny paměti v obou konfiguracích jsou (B = 9b) C a = 9(m c + m 2 c 2 )/00(m + m 2 ) Kč/KB C b = 9c 3 /00 Kč/KB V konfiguraci a) máme pravděpodobnost úspěchu při čtení z M danou p h. Zjednodušeně můžeme napsat výraz pro střední dobu přístupu t a = t p h + t 2 ( - p h ) Má-li být konfigurace a) výhodnější než b) z hlediska výkonu, musí platit t 3, tedy t a t 3 t p h + t 2 - t 2 p h Odtud dostáváme podmínku pro pravděpodobnost úspěchu p h (t 3 - t 2 )/(t - t 2 ) Po dosazení hodnot podle tabulky dostáváme p h 0,5, což je velmi mírný požadavek. 34