Export page to Open Document format

04 - Hierarchie pamětí v počítači

  • vyplňuje nám mezeru mezi procesorem a pamětí
  • v počítači máme základní úrovně pamětí:
    1. vnitřní paměť procesoru - registry, registrové, zásobníky, fronty, tabulky, …
    2. hlavní pamět (RAM) včetně rychlých vyrovnávacích pamětí
    3. vnější paměti (disky) včetně vyrovnávacích pamětí

Paměti v počítači

  • snažíme se mít co nejlepší parametr výkon/cena
    • chceme vykonat co nejvíce instrukcí za časovou jednotku
    • potřebujeme paměti, které udrží informace i po vypnutí počítače
    • procesor je rychlý → potřebujeme mít paměť, která mu dodá rychle data
    • chceme, aby paměť byla levná
    • je složité docílit všech podmínek najednou → vzniká více druhů pamětí, kde každý druh má nějaká specifika (výhody/nevýhody) → jednotlivé paměti nám pak tvoří hierarchii

Hierarchie pamětí

  • Zkoumáním se zjistily tyto poznatky
    • časová lokalita
      • pokud procesor používá nějakou položku často, je vhodné ji mít uchovanou co nejblíže procesoru
      • proměnná i v cyklu for ⇒ budeme ji často používat
    • prostorová lokalita
      • položky, které jsou uloženy v paměti blízko zmiňované položky budou s vysokou pravděpodobností také často používány
      • procházíme položky v poli ⇒ používáme i sousední položky

Základní pojmy

  • stálost obsahu
    1. volatilní - potřebuje k uchování informací napájecí napětí
    2. nevolatilní - nepotřebuje k uchování informací napájecí napětí
    • destruktivní - po cyklu čtení se data vymažou - je třeba udělat cyklus zpětného zápisu
  • doba uchování informace
    1. SRAM - statická - uchová si informace dlouho při dodržení jistých parametrů
    2. DRAM - dynamická - rychle informace zapomene - třeba udělat refresh
  • rychlost
    • přístupová doba - doba od zahájení čtení po získání obashu paměťového místa
    • doba cyklu - doba od zahájění čtení/zápisu do skončení operace, kdy je možno spustit další operaci
    • přenosová rychlost - data/čas
  • kapacita - N x n bitů (16K x 1bit)
    • reprezentuje strukturu paměti
    •  64 K x 1 B
      1. šířka datové sběrnice ⇒ 1 Byte
      2. máme 64 K položek, kde každá položka má 1 Byte šířku
  • výkonnost - souhrn kapacity, přístupové doby a rychlosti
  • chybovost - např. počet chyb/1000 hodin
  • poruchovost
    • střední doba mezi poruchami
    • např flashku s velkou kapacitou nelze vyrobit tak, aby všechny položky byly bezchybové ⇒ je tam více bloků, než je kapacita a poté co se otestují, tak se zapojí ty, co fungují (levnější)
  • přístup k datům
    1. s libovolným přístupem - přístupová doba nezávisí na umístění položky, (RAM - random access memory)
    2. se sériovým přístupem - závisí na umístění (přisunutí čtecí hlavy), (SAM - serial access memory)
    3. se smíšeným přístupem - několik (RAM) záznamových povrchů (SAM)
  • výběr z paměti
    1. adresový
      • adresový prostor je uspořádaný a souvislý
      • koncept RAM ⇒ adresový dekodér → 10b adresa → 2^10 vodičů z adresového dekodéru do datové části
    2. asociativní
      • není tak častá
      • vyhledáváme podle obsahu (klíčů) (ve všech řádcích musí být komparátor adres - klíčů)
      • např. vyhledáváme podle příjmení lidí (nemusí být podle abecedy)
      • paměť v daný čas porovná (neg(XOR)) paralelně se všemi klíči každý bit (zabírá hodně místa na chipu - N * n XOR členů)
      • pamět dobře umí za krátkou dobu najít data podle dané informace (např. z interentu proudí data ⇒ vyextrahujeme určité části a porovnáváme, jestli nesou charakteristiku viru) ⇒ softwarově by se to řešilo složitým algoritmem a bylo by to pomalé

Výběr z paměti

  • fyzikální vlastnosti pamětí
    1. polovodičové - tato kapitola
    2. magnetické - viz PZ
    3. optické
    4. molekulární
  • měnitelnost obsahu paměti
    1. RWM - Read/Write Memory
      1. RAM - (SRAM, SSRAM)
      2. DRAM
    2. ROM - Read Only Memory
      1. PROM - pouze jedno naprogramování (čisté naprogramování)
      2. EPROM - dá se vymazat (UV záření) a znovu naprogramovat
      3. EEPROM - elektricky vymazatelná paměť (různé modifikace - Flash EEPROM, …)

Další téma, které se zabývá pamětmi naleznete zde. Konkrétně se jedná o správu pamětí.

Jednotlivé typy pamětí

ROM

  •  Read Only Memory
  •  jako příklad je uvedený typ ROM 16 x 4b
    • máme 16 adres ⇒ pro adresování jsou třeba 4 vodiče (2^4)
    • dekodér vybere podle adresy právě jeden řádek (položka o velikosti 4 bity) ⇒ do datového registru se uloží dané aktivní 4 bity
    • paměť tedy tvoří matici 16 x 4
  •  požívá unipolární MOS tranzistory (funguje jako rezistor - odpor) ⇒ tranzistor zabere menší místo na chipu ⇒ gate je připojeno na nějaké napětí (adresový vodič)
    • při zápisu se přepálí spojení mezi adresovým vodičem a gate u těch položek, kde má být log 1
    • při čtení se na daný adresový vodič přijde log 1 ⇒ tranzistor se otevře ⇒ uzemní se ⇒ přečte se log 0 (pokud je přepálený vodič, přečte se 1)

Struktura ROM

RWM

  • Read/Write Memory
  • podobná základní struktura jako u ROM
  • máme navíc i zápisové zesilovače

Struktura RWM

  • konkrétní paměťová buňka
    1. pomocí bipolárních paměťových členů - SRAM
      • struktura, který umí držet log 1 nebo log 0 (dva stabilní stavy ⇒ bistabilní)
      • stav se mění napěťovým pulzem
      • k vedení se používají elektrony i díry (CMOS)
    2. pomocí unipolárních paměťových členů
      1. statický
      2. dynamický - DRAM - výrazně menší

Bipolární a unipolární tranzistory

SRAM

  • static RAM
  • jedna paměťová buňka stojí 6 tranzistorů
  • přibyly 2 tranzistory - kvůli adresovému vodiči
  • rychlé ⇒ díky klopným obvodům
  • využití: cache, paměti blízké procesoru,
  • rozhraní
    1. adresová a datová sběrnice
    2. chip enable - říká, zda je chip připojen
    3. write enable
    4. output enable

Struktura SRAM

Čtení a zápis asynchronní SRAM
  1. acces time - ta - říká nám, za jak dlouho můžeme vyzvednout data na datové sběrnici ⇒ nesmíme do paměti posílat data moc rychle

SRAM - čtení

  1. address setup time - čas, za jaký bude adresa na sběrnici stabilizovaná ⇒ až pak můžeme dát Write Enable (WE)
  2. data setup time - čas, po který musí být dostupná platná data, aby se stihlo zapsat
  3. data hold time - po zrušení čtení musí být data ještě nějakou dobu platná
  4. address hold time - čas po ukončení zípisu, kdy musí být ještě dostupná adresa

SRAM - zápis

  • tyto časy jsou uvedeny v katalogu ke konkrétní součástce a musíme je zásadně dodržovat (nesmíme posílat data příliš často)
Adresování dvou a více pamětí
  • musíme zajistit, aby se v daném okamžiku používala pouze jedna paměť
  • v počítači máme různé druhy pamětí (RWM/ROM)

Adresování pamětí

  1. všechny paměti musí být připojeny na datovou sběrnici
  2. každá paměť musí mít připojeny příslušné řídící signály (v závislosti na typu)
  3. všechny paměti musí být připojeny k adresovému dekodéru, který bude určovat, která paměť bude aktivní v daném čase (vytvoří nám adresový prostor)
  4. pokud budeme mít např 16 bitové adresy, např:
    1. nejvyšší tři bity použijeme pro adresový dekodér ⇒ určí nám paměť (bank ⇒ v tomto případě jich může být 8)
    2. ostatní bity se použijí pro zvolenou paměť ⇒ pro adresování v ní

DRAM

  • levnější než SRAM ⇒ na jednotku plochy lze realizovat více paměťových buněk
  • technologie zavedena v 70. letech
  • realizace hlavní paměti počítače - RAM
  • princip
    • informace není uložena jako 0 nebo 1 v klopném obvodu, ale ve formě náboje na kondenzátoru ⇒ vyčtení informace z kondezátoru je zajištěno jedním tranzistorem ⇒ pokud je nabitý - log 1
    • data se dají vyčíst z určité doby, jelikož kondenzátor se vybíjí ⇒ zajímá nás hodnota kondenzátoru nad určitou úroveň napětí (1/2) ⇒ zajistíme rozdílovým zesilovačem (detekuje rozdíl mezi tím, co je na kondenzátoru a 1/2U)
    •  poté, co se informace vyčte, je znova nahrána do kondenzátoru (nabijeme ho) ⇒ data se musí pravidelně obnovovat ⇒ vždy dřív, než klesne pod 1/2

Struktura prvku DRAM

  • opět maticová struktura - např 16K x 1bit ⇒ potřebuji 14 vodičů (2^16 = 16348)
    • oproti SRAM adresa se dává nadvakrát (adresujeme řádek a sloupec - multiplexní adresování ⇒ na průniku je zmiňovaný prvek ⇒ kondenzátor)
    • pokud bychom chteli mít N x 2bity ⇒ museli bychom mít celou matici 2x, atd… (více níže)

Struktura DRAM

  • čtecí zesilovač
    •  v každém sloupci jeden
    • obsahuje zmiňovaný rozdílový zesilovače ⇒ s referenčním kondenzátorem, který se nabíjí na 1/2U porovnává hodnotu napětí na kondenzátoru čtené buňky
    •  z paměťové buňky umí vyčíst informaci, rozhodnout, jestli bude log 0 nebo log 1 a následně provést zápis (obnovit položku ⇒ zajistit refresh)
    • ne vždy je potřeba číst ⇒ musíme mít řízení obnovy dat ⇒ zajišťuje to řadič obnovy dat
      1. rozložená obnova - RNNNNNNRN…. - refreshuju postupně po částech
      2. dávková obnova - RRRRRRRNN…. - refreshuju najednou 7 řádků
      • v obou případech musí být načasováno tak, aby se refresh provedl všude
      • spomaluje nám to výpočet ⇒ musíme naplánovat co nejefektivněj
      •  ve video paměti se čte všechno ⇒ obnoví se samo
    • je vidět, že čtení už není tak jednoduché jak u SRAM

Obnovování položek

  • bloková struktura
    1. adresa bloku - zhora prvních n bitů (např. 3)
      • opět máme adresový dekodér (1 z n) ⇒ 8 bloků ⇒ 16K (14 vodičů)x 8bit (8 bloků)
      • v daném bloku můžeme mít více pamětí ⇒ to, kterou paměť vybereme, určujeme adresou RAS
    2. adresa sloupce - zhora druhých n bitů (např. 7) - CAS
    3. adresa řádku - zhora posledních n bitů (např. 7) - RAS
    • x x x | x x x x x x x | x x x x x x x
    • rozdělování do bloků (16 x 1M x 1b) je mnohem rychlejší než základní struktura bez bloků (16M x 1b) ⇒ nastavím RAS a CAS a pouze pak přepínám bloky, což stojí menší režii, jak kdybych musel znova nastavovat RAS a CAS ⇒ prokládání paměťových operací
    • myšlenka je taková, že prioriou je vytáhnout co nejvíce dat na dané adrese a přitom neměnit RAS a CAS
      1. BEDO - obsahuje interní čítač ⇒ adresu řekneme jednou a paměť si už pak inkremetuje ⇒ procesor pak dostane např 4x víc dat ⇒ natáhne si blok
      2. synchronní DRAM - zavedl se dávkový režim BURST - paměti se posílají kódy a sama se už stará o určení přesné adresy ⇒ můžeme přečíst různý počet položek, který stanovíme a zašleme příkazem do paměti
      3. DDR SDRAM - náběžná i sestupná hrana (2x zrychlení)
      4. DDR2, DDR3 - zvyšuje se frekvence (2x)

Flash

  • nevolatilní paměť
  • od roku 1980
  • vylepšení paměti EEPROM ⇒ pouze jeden tranzistor na uchování jednoho bitu místo dvou (někdy i méně)
  • vysoká kapacita
  • když do paměti chceme něco zapsat, tak ji musíme nejdřív smazat (nahrají se všude jedničky) a tam, kde chceme zapisovat se pak nahrají nuly (lze mazat pouze po blocích)
  • dva typy:
    1. NOR
      • podobné jako RAM (adresové a datové vodiče)
      • používá se jako náhrada PROM, EEPROM
    2. NAND
      • nemá specializované adresové vodiče
      • ovládá se pomocí příkazů
      • lze realizovat extrémně velké kapacity na malé ploše
  • používá se unipolární tranzistor s plovoucím hradlem

NAND a NOR Flash nesouvisí s NAND a NOR u polovodičů. Název je odvozen pouze od podobné struktury

Hierarchie

Výkonová mezera mezi DRAM a CPU

  • problém neúměrného růstu rychlosti procesoru oproti růstu rychlosti DRAM
    1. rychlost procesorů se zvyšuje cca 2x za 1,5 roku ⇒ Moorův zákon („složitost součástek se každý rok zdvojnásobí při zachování stejné ceny.“ )
    2. doba přístupu u DRAM se zkrátí na polovinu zhruba za 10 let
  • DRAM tedy nelze připojit přímo k procesoru ⇒ procesor by musel stále čekat na data ⇒ mezi procesor a hlavní paměť se staví paměť cache - RVP = rychlá vyrovnávací paměť

Cache

  • rychlá vyrovnávací paměť umístěná mezi procesorem a hlavní pamětí ⇒ vyrovnává velký rozdíl rychlostí těchto dvou komponent
  • může být více RVP ⇒ L1, L2, …
  • rychlost SRAM roste rychleji jak u DRAM ⇒ proto se u pamětí cache používají SRAM ⇒ kapacita ovšem u nich roste znatelně pomaleji, jak u DRAM, proto mají cache mnohem menší kapacitu jak hlavní paměti ⇒ problém rychlost/kapacita == cena
  • procesor tedy pracuje pouze s RVP, až když nenajde, hledá se dál v hierarchii

Hierarchie

  • problém koherence ⇒ pokud se něco změní blízko procesoru, je třeba to pak pozměňovat i dál v hierarchii
    1. přímý zápis ⇒ po změně okamžitě zapisuji do bloku v paměti (trvá dlouho)
    2. zápis s mezipamětí ⇒ kapacita až deset opravných zápisů (také se moc nepoužívá)
    3. zpětný zápis vždy ⇒ když přemazávám, vždy nahraji zpět původní ⇒ nepraktické (bloky pro čtení)
    4. zpětný zápis podle příznaku změny ⇒ když přemazávám, kouknu na příznak změny (dirty bit/flag) a podle toho rozhodnu (používá se)
  • problém velikosti bloku
    1. příliš malý ⇒ je jich tam hodně
    2. příliš velký ⇒ často se musí vyměňovat (narůstá pravděpodobnost výpadku)
  • je rozdělena do bloků stanovené velikosti ⇒ ideálně velikost, kterou můžeme z DRAM načíst jedním načtením (v jedné dávce ⇒ zvýší rychlost)
  • základní parametr je pravděpodobnost úspěchu (hit rate) ⇒ v praxi 95-99% ⇒ 95-99% instrukcí se najde v paměti cache, ve zbytku (neúspěch - miss rate / miss penalty) je třeba hledat dál v hierarchii
  • existují programy, pro které bude hit rate vysoký a programy, pro který bude hit rate nízký ⇒ záleží tedy na programátorovi, jak efektivně program napíše
  • aby nedocházelo ke strukturním konfliktům, máme:
    1. datovou cache
    2. instrukční cache

RVP s přímým mapováním

RVP - přímé mapování

  • v tomto případě nemůžou být v paměti cache položky, které jsou od sebe v hlavní paměti vzdáleny o 8 bitů
    • vyřeší se stupněm asociativity cache (asociativita 2 ⇒ můžu mít dvě položky, které končí stejně ⇒ dvoucestná cache)
    • aby byla plně asociativní, potřeboval bych osmicestnou cache
  • informace uložené v RVP:
    1. data
    2. adresový příznak - tag - aby se rozpoznalo, jaká data jsou v RVP (pokud procesor žádá data na adrese 10110, tak tag je 10)
    3. příznak platnosti - zda jsou data platná

příklad

  1. máme cache o velikosti 1024 položek
  2. máme paměť 32 bit kde každá položka má 4 Byty (berme, že se budou chtít adresovat jednotlivé Byty)
  3. máme 32-bit adresování

Jakou kapacitu je třeba vyhradit pro paměť cache?

RVP - přímé mapování - 32 bit

  • na adresování v položce budeme potřebovat 2 bity, protože položka má 4 Byty (pro každý Byte)
  • na adresování v RVP budeme potřebovat 10 bitů (adresujeme 1024 položek)
  • zbylých 20 bitů bude vymezeno pro tag
  • paměť tedy bude muset mít 20 bitů pro tag mít 20 bitů pro tag
  • ⇒ 1024 položek * (20 + 32 + 1 bit platnosti)
  • práce procesoru, když hledá data:
    1. vezme 10 bitů a naadresuje se příslušná položka
    2. porovná 20 bit tag s horními 20 bity adresy
    3. pokud OK, zkontroluje se bit platnosti, zda je nastaven na log 1
      1. pokud je nastaven do log 1 ⇒ generuje se hit
      2. pokud je nastaven na log 0 ⇒ musí se nahrát do paměti nový blok a starý blok se musí nahrát zpět, pokud byl měněn
  • celkový počet bloků o velikosti 32 bit je 230 ⇒ do RVP se vejde takových bloků 210dolní odhad pravděpodobnosti úspěchu je phit = 210/230 = 2-20 ⇒ díky lokalitě odkazů se v praxi dosahuje hodnot phit 0,9 až 0,98

Vícecestné RVP

RVP - přímé mapování - 32 bit

  • pokud máme plno ve všech čtyřech položkách a potřebujeme nahrát novou položku ⇒ musíme vybrat oběť
    1. LRU - Last recently used
    2. MFU - Most frequently used
    3. FIFO - First IN First OUT
    4. RAND - Random
  • ⇒ je třeba přidat další HW ⇒ dá se optimalizovat, pokud budeme používat jeden specifický program

Virtuální paměť

  • podobná problematika ja u pamětí cache
  • dalo by se říci je to něco jako cache pro disk
  • proč chceme virtuální paměť? (otázka na státnice)
    1. chceme udělat efektivní sdílení paměti M pro mnoho programů
    2. odstranit omezení fyzikální velikosti paměti M
  •  vychází z poznatku, že pouze malá část programů je současně aktivních
  • pracuje se s pojmy
    1. fyzický adresový prostor - v HW
    2. logický (virtuální) adresový prostor - v OS

Toto už předpokládám, že je v IOSu.

Zdroj

Při tvorbě tohoto tématu jsem čerpal především ze slajdů INP - inp2010_13pameti.pdf a inp2010_14pam_hier.pdf. K pochopení slajdů mi pomohly příslušné záznamy - INP_2009-11-10.avi a INP_2009-11-24.avi

Potvrzení

04
Celé jménoOK!!!
Jirka Hynek2011-03-02 16:36:07 
vagy2011-03-03 16:02:27 
Tom Ofeig2011-05-02 21:41:42 
 3

Diskuze

Jirka Hynekgeorge, 2011/02/15 09:38

Toto bylo poslední téma, co si nikdo nechtěl označit, tak jsem zatím udělal takový přehled na úvod. Dále by chtělo ještě rozepsat do podrobna principy těch jednotlivých pamětí. Kdo chce, může to udělat. Ze slajdů si to moc nerisknu, spíš bych pak kouknul na záznam, protože si dobře pamatuju, že tam říkal mnohem víc informací a podrobně to popisoval…

Jirka Hynekgeorge, 2011/03/02 16:36

Tak jsem to dodělal. Bylo toho fakt hodně, ale myslím, že cílem tématu je hlavně hierarchie a ty struktury pamětí už tolik podstatné nejsou. Každopádně, jak jsem koukal na záznamy, tak hodně zdůraznil Virtuální paměti. Prý se na to všichni s radostí ptají u státnic. To už dost zasahovalo do téma IOSu Ofeiga (Fyzická, logická adresa, stránkování, segmentace, TLB, …). Co jsem koukal, tak je to tam popsaný a i si to pamatuji, jak jsme to probírali…

Mrndatest2001:67c:1220:809::93e5:90e, 2018/05/21 13:06

Least recently used*

Vložte svůj komentář
 
temata/04-hierarchie_pameti/main.txt · Poslední úprava: 2012/01/26 14:25 autor: conyx
Recent changes RSS feed Debian Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki