Architektury počítačů

Podobné dokumenty
Architektury počítačů

Pokročilé architektury počítačů

Pamět ová hierarchie, virtuální pamět. doc. Ing. Róbert Lórencz, CSc.

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Přednáška. Správa paměti II. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Paměťový podsystém počítače

Operační systémy. Přednáška 8: Správa paměti II

Systém adresace paměti

Pokročilé architektury počítačů

Struktura a architektura počítačů (BI-SAP) 11

Paměťová hierarchie. INP 2008 FIT VUT v Brně

Přidělování paměti II Mgr. Josef Horálek

09. Memory management. ZOS 2006, L.Pešička

Pamět ová hierarchie, návrh skryté paměti 2. doc. Ing. Róbert Lórencz, CSc.

Přednáška. Správa paměti I. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Architektury paralelních počítačů I.

Principy počítačů a operačních systémů

Paměti a jejich organizace

Pamět ová hierarchie, návrh skryté paměti cache 2

2010/2011 ZS P i r i nc č py po ít č čů a PAMĚŤOVÝ ĚŤ SUBSYSTÉM z pohledu OS OS

Mezipaměti počítače. L2 cache. L3 cache

Rychlá vyrovnávací paměť v architektuře PC

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

ÚVOD DO OPERAČNÍCH SYSTÉMŮ. Správa paměti. Přímý přístup k fyzické paměti, abstrakce: adresový prostor, virtualizace, segmentace

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Operační systémy. Přednáška 7: Správa paměti I

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

Princip funkce počítače

Memory Management vjj 1

Operační systémy. Správa paměti (SP) Požadavky na SP. Spojování a zavedení programu. Spojování programu (linking) Zavádění programu (loading)

Memory Management vjj 1

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Ukázka zkouškové písemka OSY

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

Přidělování zdrojů (prostředků)

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

IUJCE 07/08 Přednáška č. 6

Adresní mody procesoru

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Vstupně - výstupní moduly

Metody připojování periferií BI-MPP Přednáška 2

Disková pole (RAID) 1

Přednáška. Systémy souborů. FAT, NTFS, UFS, ZFS. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Paměti. Paměť je zařízení, které slouží k ukládání programů a dat, s nimiž počítač pracuje

Paralelní architektury se sdílenou pamětí typu NUMA. NUMA architektury

Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YOS: Přednáška IV. 18. listopad, / 41

Adresace paměti. 11.přednáška

Petr Krajča. 25. listopad, 2011

Architektury paralelních počítačů II.

Architektura vnějších pamětí

Procesy a vlákna (Processes and Threads)

Disková pole (RAID) 1

OPS Paralelní systémy, seznam pojmů, klasifikace

HelenOS ARM port. Pavel Jančík Michal Kebrt Petr Štěpán

C2115 Praktický úvod do superpočítání

Úvod. Instrukce musí obsahovat: typ operace adresu operandu (operandů) typ operandů modifikátory adresy modifikátory operace POT POT

Management procesu I Mgr. Josef Horálek

požadovan adované velikosti a vlastností Interpretace adresy POT POT

Cache paměť - mezipaměť

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Logická organizace paměti Josef Horálek

Téma 6 Správa paměti a její virtualizace

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Formát rámce MODBUS pro MORSE

Základní deska (1) Označována také jako mainboard, motherboard. Deska plošného spoje tvořící základ celého počítače Zpravidla obsahuje:

PA152. Implementace databázových systémů

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

Pohled do nitra mikroprocesoru Josef Horálek

TECHNICKÁ SPECIFIKACE

Operační systémy. Přednáška 1: Úvod

Metody připojování periferií

Kapitola 10: Diskové a souborové struktury. Klasifikace fyzických médií. Fyzická média

PROCESOR. Typy procesorů

Principy operačních systémů. Lekce 3: Virtualizace paměti

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Disková pole (RAID) 1

Koncepce DMA POT POT. Při vstupu nebo výstupu dat se opakují jednoduché činnosti. Jednotlivé kroky lze realizovat pomocí speciálního HW.

Technické prostředky počítačové techniky

Systém souborů (file system, FS)

Linux a 64 bitů. SUSE Labs. Michal Ludvig Vojtěch Pavlík

Architektura procesoru ARM

Procesy a vlákna - synchronizace

ZOS OPAKOVÁNÍ. L. Pešička

Počítač jako prostředek řízení. Struktura a organizace počítače

Architektura a koncepce OS OS a HW (archos_hw) Architektura a koncepce OS Jádro OS (archos_kernel) Architektura a koncepce OS Typy OS (archos_typy)

Základní pojmy informačních technologií

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Základní uspořádání pamětí MCU

B4B35OSY: Operační systémy

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Sběrnicová architektura POT POT. Jednotlivé subsystémy počítače jsou propojeny sběrnicí, po které se přenáší data oběma směry.

Přednáška 1. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Řízení IO přenosů DMA řadičem

MSP 430F1611. Jiří Kašpar. Charakteristika

Katedra informatiky a výpočetní techniky. 10. prosince Ing. Tomáš Zahradnický doc. Ing. Róbert Lórencz, CSc.

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Datová úložiště. Zdroj: IBM

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Transkript:

Architektury počítačů Paměť část druhá 1. virtuální paměť, celkový pohled 2. sekundární paměť České vysoké učení technické, Fakulta elektrotechnická A0B36APO Architektura počítačů Ver.1.00 1

Na minulé přednášce A0B36APO Architektura počítačů 2

Příklad Mějme cache o velikosti 8-mi bloků. Kam se do ní umístí data z adresy 0xF0000014? Plně asociativní, Přímo mapované, nebo S omezeným stupněm asociativity N=2 (2-cestná, 2-way cache). A0B36APO Architektura počítačů 3

Přímo mapovaná cache Set = (Adresa/4) mod 8 A0B36APO Architektura počítačů 4

Přímo mapovaná cache přímo mapovaná cache: one block in each set Capacity C Number of sets S Block size b Number of blocks B Degree of associativity N C = 8 (8 words), S = B = 8, b = 1 (one word in the block), N = 1 5

Dnešní téma A0B36APO Architektura počítačů 6

Motivace k virtuální paměti.. Běžně máme na počítači spuštěno několik desítek/stovek procesů Umíte si představit situaci, kdy bychom rozdělili fyzikou paměť (například 1 GB) mezi tyto procesy? Jak veliký kus paměti by pak patřil jednomu procesu? Jak bychom řešili kolize kdy nějaký program úmyslně (například virus) nebo neúmyslně (chybou programátora práce s ukazateli) by chtěl zapisovat do kusu paměti, který jsme vyhradili jinému procesu? Řešením je právě virtuální paměť Každému procesu vytvoříme iluzi, že celá paměť je pouze jeho a může se v ní libovolně zcela bezpečně pohybovat. Dokonce každému procesu dále vytvoříme iluzi, že má k dispozici např. 4GB paměti i když je fyzická paměť mnohem menší. Proces pak nerozlišuje mezi fyzickou pamětí a diskem (disk se mu jeví jako paměť). Základní idea: Proces adresuje ve virtuální paměti pomocí virtuálních adres. Ty pak musíme nějak přeložit na adresy fyzické. A0B36APO Architektura počítačů 7

Motivace k virtuální paměti.. Představme si, že máme 8B (Bajtů) virtuální prostor a 8B fyzické paměti Jak zabezpečíme překlad adres? Předpokládejme adresaci po bajtech. Zde je jedno řešení: Chceme přeložit libovolnou virtuální adresu na libovolnou fyzickou adresu. Máme 3-bitovou virtuální adresu, a tu chceme přeložit na 3-bitovou fyzickou adresu. K tomu stačí tabulka o 8 záznamech, kde jeden záznam bude mít 3 bity, dohromady 8x3=24bitů/proces. Virtuální prostor 7 6 5 4 3 2 1 0 mapování Fyzický prostor 7 6 5 4 3 2 1 0 3-bitová adresa pro 8 položek Naše řešení: Použijeme Look-up tabulku Problém! Pokud budeme mít 4 GB virtuální prostor, naše Look-up tabulka bude zabírat 2 32 x32 bitů = 16GB/proces!!! To je poněkud hodně A0B36APO Architektura počítačů 8 6 3 7 4 1 5 0 2 Look-up table

Motivace k virtuální paměti.. - Ponaučení z předchozího slide: Mapování z libovolné virtuální adresy na libovolnou fyzickou adresu je prakticky nerealizovatelný požadavek! Řešení: Rozdělme virtuální prostor na stejně velké části virtuální stránky, a fyzickou paměť na fyzické stránky. Ať je velikost virtuální a fyzické stránky stejná. V našem příkladu máme stránku o velikosti 2B. číslo stránky 3 2 1 0 Virtuální prostor 7 6 5 4 3 2 1 0 mapování Fyzický prostor 1 0 3 2 7 6 5 4 číslo stránky 3 2 1 0 3-bitová adresa pro 4 položky 1 0 Look-up table Naše řešení jeden bit adresy nebudeme pro překlad používat. Look-up tabulka bude mít pak v tomto případě poloviční velikost. Naše řešení tedy překládá virtuální adresy po skupinách Uvnitř dané stránky se pak pohybujeme za pomocí právě toho bitu, který jsme při překladu ignorovali.. Tím jsme schopni využít celý adresní prostor. A0B36APO Architektura počítačů 9 2 3

Příklad č.1 #include <stdio.h> Co z toho vyplývá? #include <stdlib.h> Data jsou v poli int main() uložena za sebou. { int a, b[4], *c, d; Otázky, které se c = (int*)malloc(4*sizeof(int)); nabízí.. printf("%p %p %p %p\n",&a,&b,&c,&d); Ale co je to za printf("%p %p %p\n",&b[0],&b[1],&b[2]); adresu? printf("%p %p %p\n",&c[0],&c[1],&c[2]); Kam do cache se free(c); tyto data namapují? return 0; } 0028FF1C 0028FF0C 0028FF08 0028FF04 Výpis programu: 0028FF0C 0028FF10 0028FF14 00801850 00801854 00801858 A0B36APO Architektura počítačů 10

Virtualizace paměti VP je způsob správy operační paměti umožňující běžícímu procesu zpřístupnění paměťového prostoru, který je uspořádán jinak, nebo je dokonce větší, než je fyzicky připojená operační paměť. Převod mezi virtuální VA a fyzickou PA adresou může podporovat procesor (HW mapováním TLB, viz dále). V současně běžných operačních systémech je virtuální paměť implementována pomocí stránkování paměti spolu se stránkováním na disk, které rozšiřuje operační paměť o prostor na disku. * R. Lórenc, X36APS, 2005 A0B36APO Architektura počítačů 11

Virtuální paměť - stránkování Virtuální prostor tvoří stejně velké stránky (pages, virtual pages), které se přiřazují jednotlivým běžícím procesům. Fyzickou paměť tvoří stejně velké rámce (frames, physical pages). Zde jen poznámka: moderní přístupy nevyžadují stejně velké stránky. A0B36APO Architektura počítačů 12

Virtuální paměť - stránkování Každé virtuální stránce může odpovídat nejvýš jedna fyzická stránka, obráceně to neplatí, takže: Na jednu konkrétní fyzickou stránku může být namapováno několik virtuálních stránek. Co to přináší? Můžeme sdílet paměť napříč různými procesy nebo vlákny (data nebo kód OS načte sdílené knihovny jenom jednou), můžeme poskytnout jiná oprávnění (přístupová práva). Pokud se program snaží přistoupit do stránky způsobem, který neodpovídá jeho oprávněním, CPU generuje General protection fault handler pro General protection fault typická reakce je ukončení procesu A0B36APO Architektura počítačů 13

Virtuální a fyzické adresování Virtuální adresa Fyzická adresa A0-A31 CPU D0-D31 Virtuální Fyzická Převod adres A0-A31 Paměť D0-D31 Data A0B36APO Architektura počítačů 14

Virtuální a fyzické adresování - detailněji Předpokládejme virtuální adresu o délce 32 bitů, 1GB fyzické paměti a velikost stránky 4 KB Virtual page number offset 31 12 11 0 Překlad adresy (překlad čísla stránky) 12 bitů => 2 12 = 4 KB je velikost stránky 29 12 11 0 Physical page number offset Jaký velmi důležitý praktický důsledek má toto uspořádání překladu (tj. nejnižší bity adresy zůstávají zachovány)? A0B36APO Architektura počítačů 15

#include <stdio.h> #include <stdlib.h> int main() { int a, b[4], *c, d; c = (int*)malloc(4*sizeof(int)); Vraťme se k příkladu č.1 printf("%p %p %p %p\n",&a,&b,&c,&d); printf("%p %p %p\n",&b[0],&b[1],&b[2]); printf("%p %p %p\n",&c[0],&c[1],&c[2]); free(c); return 0; } 0028FF1C 0028FF0C 0028FF08 0028FF04 Výpis programu: 0028FF0C 0028FF10 0028FF14 00801850 00801854 00801858 A0B36APO Architektura počítačů 16

Všimli jste si adres, na kterých se nachází proměnné a, c, d a pole b? Co když budeme chtít rozšířit náš program třeba o příkazy: a = 1; b[0] = a+1; b[1] = b[0]+1; d = b[2]; //b[2] neinicializováno.. Vraťme se k příkladu č.1 Virtuální adresní prostor: heap stack 0x801850 0x28FF1C 0x28FF10 0x28FF0C 0x28FF08 0x28FF04 0x801850 c[0] A0B36APO Architektura počítačů 17 4 Bajty a c d b[] c[]

Vraťme se k příkladu č.1 Předpokládejme L1 datovou cache o velikosti 32kB se stupněm asociativity 8, a velikostí bloku 64B. Cache je na počátku prázdná. Co všechno se stane když vykonáme první řádek programu? a = 1; b[0] = a+1; b[1] = b[0]+1; d = b[2]; A0B36APO Architektura počítačů 18

Vraťme se k příkladu č.1 Předpokládejme L1 datovou cache o velikosti 32kB se stupněm asociativity 8, a velikostí bloku 64B. Cache je na počátku prázdná. Co všechno se stane když vykonáme první řádek programu? a = 1; cesta 0 cesta 1 cesta 7 64 setů V Tag Data Data 63 62 61 60 1 0 16 slov (16x Data) = 64B = velikost bloku 8 různých cest A0B36APO Architektura počítačů 19

Vraťme se k příkladu č.1 Předpokládejme L1 datovou cache o velikosti 32kB se stupněm asociativity 8, a velikostí bloku 64B. Cache je na počátku prázdná. Co všechno se stane když vykonáme první řádek programu? a = 1; -> cache miss cesta 0 POZOR: Sem patří Tag z fyzické adresy!!! 64 setů 1111 0011 0010 0001 0000 V Tag Data Data Data Data Data Data Data Data Data 63 62 61 60 1 0x0028F??? a b[3] b[2] b[1] b[0] c d??? 1 0 16 slov (16x Data) = 64B A0B36APO Architektura počítačů 20

Závěry: Vraťme se k příkladu č.1 Stránkování (realizace virtuální paměti) nenarušuje princip prostorové lokality => důležité pro cache. Data na sousedících virtuálních adresách budou uloženy ve fyzické paměti vedle sebe (pokud nepřekročí hranici stránky). Pokud nastane page fault (stránka je na disku) jako důsledek cache miss, pak se celá stránka z disku přesune do paměti a z té se pak celý blok (cache line) přesune do cache. Další cache miss uvnitř stránky již nevyvolá page fault (dokud nebude stránka nahrazena jinou stránkou). A0B36APO Architektura počítačů 21

Realizace převodu adres? Tabulka stránek, Page Table. Jednotkou mapování jsou stránky, Stránka je také jednotkou přenosu mezi vedlejší a hlavní paměti. Mapovací funkce se nejčastěji ji implementuje Lookup Table (vyhledávací tabulkou). O překlad virtuálních adres na fyzické se stará Memory Management Unit (MMU) MMU je součástí CPU Příklad: A0B36APO Architektura počítačů 22

Realizace převodu adres? Virtual page number offset 31 12 11 0 Překlad adresy (překlad čísla stránky) 29 12 11 0 Physical page number offset PDBR Datová struktura pro Page Directory (Page Table) je uložena v hlavní paměti. Úkolem operačního systému je alokovat souvislou oblast paměti a počáteční adresu této oblasti uložit do speciálního registru CPU. PDBR - page directory base register v x86 v registru CR3 obsahuje fyzickou adresu PTBR - page table base register to samé A0B36APO Architektura počítačů 23

Realizace převodu adres? 20 bitů 12 bitů Paměť je rozdělena na fyzické stránky č.0 Page table č.1 4kB = 2 12 B 2 20 položek 2 20.4B = 4MB daná virtuální stránka odpovídá fyzické stránce č.1 č.2 4GB 2 20 fyzických stránek PDBR 20 bitů pro určení stránky + další bity (valid, práva, atd.) = 4B (8B) č.n-1 N=2 32 /2 12 =2 20 A0B36APO Architektura počítačů 24

Uvažujme Stránka je typicky 4 kb = 2^12 Když budeme znát adresu stránky, postačuje nám tedy jenom 12 bitů na pohyb (adresaci) v ní. Zbývá 20 bitů (pro 32-bitovou adresu). Tudíž Page Directory (Page Table) by měl obsahovat 2^20 položek. To je nepraktické a přináší řadu nevýhod. Typický proces/vlákno se v daném okamžiku pohybuje pouze v malé části svého adresního prostoru princip časové a prostorové lokality Řešením je více-úrovňové stránkování. A0B36APO Architektura počítačů 25

Více-úrovňové stránkování A0B36APO Architektura počítačů 26

Více-úrovňové stránkování 2 úrovně 10 bitů 10 bitů 12 bitů Paměť je rozdělena na fyzické stránky č.0 2 10 položek č.1 4kB = 2 12 B PDBR 2 10 Page tables 2 10.4KB = 4MB (pokud je celá paměť nastránkována) 2 10 položek 2 10.4B = 4KB 20 bitů pro určení stránky + další bity (valid, práva, atd.) = 4B (8B) č.2 č.n-1 N=2 32 /2 12 =2 20 4GB 2 20 fyzických stránek A0B36APO Architektura počítačů 27

Poznámky k předchozímu slide: Více-úrovňové stránkování Ne každý proces využívá celý svůj adresní prostor => není nutné alokovat v druhé úrovni 2 10 Page tables Tabulky stránek můžou být rovněž stránkovány Obecné poznámky: Intel IA32 implementuje 2-úrovňové stránkování Page Table v úrovni 1 označuje jako Page Direcory (10 bitů pro adresaci) Page Table v úrovni 2 pak jako Page Table (10 bitů) V případě 64-bitové virtuální adresy je obvyklé používat méně bitů pro fyzickou adresu například 48, nebo 40. Intel Core i7 používá 4-úrovňové stránkování a 48 bitový adresní prostor Page Table v úrovni 1: Page global directory (9 bitů) Page Table v úrovni 2: Page upper directory (9 bitů) Page Table v úrovni 3: Page middle directory (9 bitů) Page Table v úrovni 4: Page table (9 bitů) A0B36APO Architektura počítačů 28

Tabulka stránek jak vypadají položky? Význam položek Look-up Table A0B36APO Architektura počítačů 29

Tabulka stránek jak vypadají položky? Význam položek Podívejme se na položku Page Directory (Page Table na 1.úrovni) 31 1 0 Dostupné pro Operační Systém P=0 31 12 6 5 4 3 2 1 0 Bázová adresa Page table A PCD PWT U/S R/W P=1 bit 0: Present bit určuje zda je stránka v paměti (1), nebo na disku (0) Někdy se tento bit označuje V valid. bit 1: Read/Write: pokud 1 R/W; pokud 0 jenom ke čtení bit 2: User/Supervisor: 1 uživatelský přístup; 0 pouze OS bit 3: Write-through/Write-back zapisovací strategie pro stránku bit 4: Cache disabled/enabled některé periferie jsou namapovány přímo do paměti (memory mapped I/O), čímž je umožněn zápis/čtení do/z dané periferie. Tyto adresy v paměti pak chápeme jako I/O porty. Nekešujeme. bit 5: Accessed zda jsme četli/zapsali pomáhá rozhodovat o tom, které stránky mají být odstraněny když potřebujeme uvolnit prostor v paměti A0B36APO Architektura počítačů 30

Tabulka stránek jak vypadají položky? Význam položek Podívejme se na položku Page Table (Page Table na 2.úrovni) 31 1 0 Dostupné pro Operační Systém P=0 31 12 7 6 5 4 3 2 1 0 Bázová adresa Page D A PCD PWT U/S R/W P=1 bit 6: Dirty bit Je nastaven pokud jsme do stránky zapsali. A0B36APO Architektura počítačů 31

Poznámky Každý proces má svou Tabulku stránek, Tedy i svou hodnotu PTBR (bázového registru). To, mimochodem, zajišťuje paměťovou bezpečnost procesů. Co chceme abyste si zapamatovali z Formátu položky Tabulky stránek? V Validity Bit. V=0 Stránka není platná (je na disku). AR Access Rights. Přístupová práva (Read Only, Read/Write, Executable, apod.), Frame# -číslo rámce (bázová adresa do nižší úrovně), Popřípadě další, např. Modified/Dirty, apod. (budeme dále podle potřeby doplňovat). V AR Frame# A0B36APO Architektura počítačů 32

Virtuální paměť: spolupráce HW a SW A0B36APO Architektura počítačů 33

Co dělat, když je výpadek stránky Page Fault? Fyzická paměť je volná, ale Rámec je prázdný, data jsou ve vedlejší paměti (na disku). Požadovaná stránka se nějak (DMA, Direct Memory Access, přímým přístupem do paměti, ale to zde neřešíme) načítá do prázdného rámce. Přepne se na případně čekající proces, který může probíhat. Po dokončení DMA přenosu se vyvolá přerušení, aktualizuje se Tabulka stránek procesu. Přepne se zpět na původní proces. Paměti je nedostatek Pomocí LRU najdeme rámec, který můžeme uvolnit. Má-li nastaven Dirty bit, zapíšeme stránku do vedlejší paměti (na disk). Aktualizuje se Tabulka stránek procesu. A0B36APO Architektura počítačů 34

Virtuální paměť a soubory na disku Virtuální paměť rozšiřuje fyzickou paměť o prostor na disku tím, že automaticky odkládá/načítá stránky na disk (swapování). Toho lze využít Načtení programů a knihoven do paměti: Programy a knihovny jsou uloženy na disku jako binární soubory obsahující instrukce a data Když chceme spustit nový program: Jádro OS alokuje souvislou množinu virtuálních stránek (dostatečně velký prostor pro uchování vlastního programu a dat) Poté OS aktualizuje Page table procesu (Page tables pak odkazují na soubory na disku) Položky Page table jsou označeny jako Valid=0 (na disku) Jakmile program běží, správa virtuální paměti načte program do paměti automaticky Viz mmap() funkce alokuje virtuální stránky a nastaví položky Page table tak, aby odkazovaly na soubor na disku A0B36APO Architektura počítačů 35

Více-úrovňové stránkování Problém rychlosti Pokud bychom předpokládali, že všechny položky pro výpočet adresy máme již v cache, bude i tak výpočet adresy trvat velmi dlouhou (v závislosti od počtu úrovní nelze paralelizovat). Výhodnější je přímo cachovat vypočtené adresy. K tomu slouží Translation Look-Aside Buffer (TLB) Dnes se používají více-úrovňové TLB A0B36APO Architektura počítačů 36

Idealizace překladu adres pomocí TLB - čtení CPU (ALU) virtuální adresa hit Cache miss fyzická adresa TLB hit miss přenos Page table do TLB Hlavní paměť Všimněte si, že může dojít k miss-u 2x Pokud nastane TLB miss, musíme vykonat tzv. page walk A0B36APO Architektura počítačů 37

Rychlá realizace Tabulky stránek - TLB Translation-lookaside Buffer, výstižnější by byl termín překládací keš (Translation Cache). Je vlastně SP (keší) adres stránek. A0B36APO Architektura počítačů 38

Překlad adres Intel Nehalem (Core i7) http://cs.nyu.edu/courses/spring13/csci-ua.0201-003/lecture18.pdf A0B36APO Architektura počítačů 39

Organizace paměti - Intel Nehalem (Core i7) A4M36PAP Pokročilé architektury počítačů 40

Organizace paměti - Intel Nehalem několik poznámek Velkost bloku: 64B procesor vždy čte řádek cache ze systémové paměti zarovnán na 64B (6 LSb adresy jsou nuly) a nepodporuje částečně plněné řádky L1 Harvard. V SMT sdílená oběma vlákny, Instrukční 4-way, Datová 8-way. L2 unifikovaná, 8-way, neinkluzivní, WB L3 unifikovaná, 16-way, inkluzivní (řádek obsažen buď v L1 nebo L2 se nachází v L3), WB Store Buffers dočasně uchovávají data pro každý zápis. Netřeba čekat na zápis do cacheči paměti. Zajišťují, že zápisy jsou ve správném pořadí a také když je potřeba: - výjimka, přerušení, instrukce serializace, lock,.. Můžete si také všimnout oddělených TLB (Translation Lookaside Buffer) A4M36PAP Pokročilé architektury počítačů 41

Pro vaší představu: typické hodnoty Typicky pro stránkované paměti Typicky pro TLB Velikost v blocích 16 000-250 000 40-1024 Velikost 500-1 000 MB 0,25-16 KB Velikost bloku v B 4 000-64 000 4-32 Miss penalty 10 000 000 10-1 000 (v hod) 100 000 000 Miss rates 0,00001-0,0001% 0,01-2 A0B36APO Architektura počítačů 42

Efektivnější používáni paměti prostředek zrychlení programu Váš program může brát v potaz velikost stránky a používat paměť efektivněji jednak zarovnáním alokací na násobek velikosti stránky a pak redukcí interní a externí fragmentace stránek.. (pořadí alokací atd. Viz také memory pool) #include <stdio.h> #include <unistd.h> int main(void) { printf( Velikost stranky je: %ld B.\n", sysconf(_sc_pagesize)); return 0; } Akolace paměťově zarovnaného bloku: void * memalign(size_t size, int boundary) void * valloc(size_t size) A0B36APO Architektura počítačů 43

windows #include <stdio.h> #include <windows.h> int main(void) { SYSTEM_INFO s; GetSystemInfo(&s); printf("velikost stranky je: %ld B.\n", ns.dwpagesize); printf("rozsah adres pro aplikaci (a dll): 0x%lx 0x%lx\n", s.lpminimumapplicationaddress, s.lpmaximumapplicationaddress); return 0; } A0B36APO Architektura počítačů 44

Problémy hierarchických pamětí A0B36APO Architektura počítačů 45

Některé problémy hierarchických pamětí? Koherence pamětí. Definice viz další slajd Jednoprocesorové (jednojádrové) stroje. Řeší D-bit a migrační strategie Write-back. Multiprocesory se společnou i sdílenou pamětí řešení je mnohem složitější. Používá se mj. Společná sběrnice: Snooping (s odposlechem, slíděním), MESI protokol, Broadcast (s rozesíláním), Directories (adresáře). Je obsahem předmětu A4M36PAP. A0B36APO Architektura počítačů 46

Definice koherence Řekneme že multiprocesorový paměťový systém je koherentní jestliže výsledek jakéhokoli provádění programu je takový, že pro každé paměťové místo je možné sestavit myšlené sériové pořadí čtení a zápisů k tomuto paměťovému místu a platí 1. Paměťové operace k danému paměťovému místu pro každý proces jsou provedeny v pořadí, ve kterém byly spuštěny tímto procesem. 2. Hodnoty vracené každou operací čtení jsou hodnotami naposledy provedené operace zápis do daného paměťového místa vzhledem k sériovému pořadí. A0B36APO Architektura počítačů 47

Problém koherence CPU 0 Cache x Proto je důležité, aby byl systém paměťově koherentní viz cache coherence CPU 1 zajištění koherence Cache paměť y Nicméně i v paměťově koherentním systému může nevhodný programátorský styl vést k značnému zpomalení běhu programu Vlákno 0: x=1; if(x==1) Příklad A: Příklad B: Vlákno 1: x=3; Nechť x je sdílená proměnná, y sdílené pole. Vlákno 0: y[1]=1; y[3]=3; y[5]=5; Vlákno 1: y[0]=0; y[2]=2; y[4]=4; A0B36APO Architektura počítačů 48

Srovnání VPxSP, nenechte se zmást Virtuální paměť Stránka Page Fault Velikost stránky: 512 B 8 KB Plně asociativní Výběr oběti: LRU Write Back Skrytá paměť Blok/řádek Read/Write Miss Velikost bloku: 8 128 B (64B) (DM), N-cestná, plně asociativní LRU, ARC, CAR Write Back Pozn.: TLB virtuální paměti může být plně asociativní, ale pro větší TLB typicky bývá jen 4-cestná. Rozumíte pojmům? Co je oběť Závěr: každé adjektivum V/SP vyjadřuje něco jiného A0B36APO Architektura počítačů 49

Nejdůležitější periferií je disk. Tak ho musíme zrychlit A0M36APO Architektury počítačů 50

RAID 0 Pro zvýšení výkonu systému pevných disků. tzv. stripping (proužkování) A0M36APO Architektury počítačů 51

RAID 1 Pro zvýšení spolehlivosti uložených dat. Označuje se jako Mirroring. Nezrychluje, ale zvyšuje spolehlivost. A0M36APO Architektury počítačů 52

RAID 10 Kombinace obou výše popsaných. Vytvoří se RAID 0 a ten se pak zrcadlí na RAID 1. Výsledkem jsou vlastně dva RAID 0 obsahující identická data. RAID 10 zvyšuje jak výkon, tak spolehlivost, musíte ovšem použít nejméně čtyři disky, nejlépe se stejnými parametry. A0M36APO Architektury počítačů 53

RAID 5 Ukládá paritní informace, nikoli však na jeden vyhrazený disk. V degradovaném režimu se musejí data uložená na vadném disku odvodit z dat zbývajících disků a parity. Zrychluje čtení, zpomaluje zápis. A0M36APO Architektury počítačů 54

Obdoba RAID 5, používá dva paritní disky s různě vypočtenou paritou. Odolný proti výpadkům 2 disků. Rychlost čtení jako RAID 5, zápis ještě pomalejší. RAID 6 A0M36APO Architektury počítačů 55

What Every Programmer Should Know About Memory Přečtěte si: http://www.akkadia.org/drepper/cpumemory.pdf A0B36APO Architektura počítačů 56