Pokročilé architektury počítačů Přednáška 3
Hierarchické uspořádání pamětí počítače
Martin Milata
Obsah ●
Paměťový subsystém
●
Obvyklé chování programů při přístupu do paměti
●
Cache paměti
●
●
●
princip činnosti
●
optimalizace
●
hierarchizace cache pamětí
Virtuální paměť a stránkování ●
synonyma a homonyma
●
TLB Cache
Hlavní paměť ●
dynamická paměť
●
organizace hlavní paměti
Paměťový systém a Cache ●
Přístupová doba do hlavní (DRAM) paměti je dnes extrémně velká ve srovnání s rychlostí CPU ●
●
Přímý přístup do hlavní paměti by měl značný negativní dopad na výkonnost procesoru
Přítomnost Cache systému má zajistit přístupovou dobu srovnatelnou s extrémně rychlými pamětmi při současném použití levných DRAM pamětí značné velikosti
Cache jako zprostředkovatel přístupu do hlavní paměti ●
Otázkou je, jak je možné, že malý kus rychlé paměti dokáže do značné míry předat svou rychlost celému paměťovému systému? ●
●
Aplikace v jednom okamžiku obvykle využívá jen malou část svého, jinak značně velkého, paměťového prostoru (chování se označuje jako princip lokality) Malá část pomalé paměti, které je právě využívána, může být uložena v rychlé paměti cache
●
Dočasně ukládaná část má obvykle fixní velikost a nazývá se blok
●
Otázkou zůstává –
Na jaké místo paměti cache kopírovaný blok umístit?
–
Jak bude blok vyhledán, pokud je v paměti cache umístěn?
–
Co se stane při zaplnění cache a vzniklé nutnosti zapsat nový blok?
–
Jak bude realizován zápis dat?
Princip lokality ●
Princip lokality ●
●
Aplikace v jednu chvíli pracuje obvykle jen s malou částí svého paměťového prostoru.
Dva typy lokálního přístupu ●
Dočasná lokálnost (Temporary Locality) – –
●
Použitý paměťový blok bude znovu použit v blízké budoucnosti např. při zpracovávání smyček (podmínky, či inkrementované proměnné)
Prostorová lokálnost (Spatial Locality) – –
Pokud je použit paměťový blok, je pravděpodobné, že bude brzy použit další v jeho těsné blízkosti např. přístup k prvkům pole
Terminologie Cach pamětí ●
Čtení dat z cache (Cache Hit) ●
●
●
●
Požadované data byla nalezena v některém z bloků, které právě cache paměť obsahuje Četnost čtení z paměti cache (Hit rate) je určená jako počet přístupů do cache s nalezením požadovaných dat dělená celkovým počtem přístupů do paměti Přístupová doba cache paměti (Hit time) je čas potřebný k nalezení požadovaných dat a jejich předání CPU
Výpadek cache (Cache Miss) ●
●
●
Cache paměť neobsahuje požadovaná data. Ta musejí být dodána z pamětí nižšího stupně (cache vyšší úrovně nebo hlavní paměť). Četnost výpadků cache (Miss rate) reprezentuje doplněk k četnosti čtení z cache (Miss rate = 1 – Hit rate) Pokuta výpadku cache (Miss penalty) je doba potřebná k získání dat z pomalejší paměti, výměně bloku v cache a doručení dat na procesor
Přístupová doba, stejně jako pokuta výpadku cache, může být měřena buď jako absolutní časová hodnota nebo jako počet cyklů procesoru, které uplynou do dodání požadovaných dat.
Terminologie Cache paměti ●
Blok (Block/Line) ●
●
Skupina (nebo Set) ●
●
Každý blok pomalejší paměti má přesně stanovené místo, kam může být v cache uložen. Velikost setu v cache paměti je právě jeden blok.
Plně asociativní paměť ●
●
Skupina bloků v cache paměti, která může být použita pro uložení dat z pomalejší paměti. Úseky pomalé pamětí jsou obvykle jednoznačně mapovány na jednotlivé skupiny, jenž můžou být pro uložení dat použity.
Přímo mapovaná paměť ●
●
Jedná se o skupinu paměťových slov pevné délky, jenž slouží jako jednotka pro přenos dat mezi různě rychlými pamětmi.
Blok z pomalé paměti může být uložen kdekoliv v cache. Cache paměť obsahuje jen jeden set.
N-cestně asociativní paměť ●
V každém setu cache paměti může být uloženo právě N bloků.
Na jaké místo paměti cache kopírovaný blok umístit? ●
●
●
●
Místo v cache, kde může být paměťový blok uložen je obvykle více či méně určeno strukturou cache paměti. Plně asociativní cache umožňuje zaplnit svůj libovolný blok libovolným blokem pomalé paměti Přímo mapovaná cache každému bloku pomalé paměti striktně definuje jedinou možnou pozici pro jeho uložení N-cestně (zde dvou-cestně) asociativní cache definuje vždy dvě pozice pro možné uložení bloku z pomalé paměti.
Jak bude blok vyhledán, pokud je v paměti cache umístěn? ●
Cache paměť musí obsahovat adresní značky (tags), které informují o adrese bloku v pomalejší paměti ●
Všechny značky dané skupiny (setu) jsou prohledávaný paralelně na shodu s požadovanou adresou.
●
Data v cache nesou příznak platnosti (valid bit)
●
Vztah mezi adresou zasílanou procesorem a obsahem cache ● ●
●
●
Procesorem zaslaná adresa je nejprve dělena na adresu bloku a offset bloku. Adresa bloku se obvykle dále dělí na tag (vyhledávání v rámci setu) a index (jednoznačné určení jednoho ze setů cache paměti).
Při kontrole přítomnosti bloku v cache se nepoužívá hodnota offsetu. Celý blok musí být přítomen s nastaveným příznakem validity. Kontrola shodnosti tagu se provádí jen v rámci indexem zvoleného setu.
Co se stane při zaplnění cache a vzniklé nutnosti zapsat nový blok? ●
●
Pokud dojde k výpadku cache, je jeden z bloků přepsán požadovanými daty z nadřazené paměti. Řídící logika cache paměti musí rozhodnout, který z bloků bude nahrazen ●
●
Přímo mapovaná paměť volí vždy jeden daný blok. HW implementace volby bloku je jednodušší N-cestně asociativní a plně asociativní paměť má možnost výběru z více bloků. HW implementace je složitější a závisí na zvolené strategii výběru –
Náhodný výběr (Random) – vybrán je náhodný z možných bloků (výběr bývá speudo-náhodný) Strategie je vhodná pro velké cache kde má výsledky podobné s LRU.
–
Nejdéle nepoužívaný (Last-recently used - LRU) – vybrán je blok, jenž byl nejdéle nepoužíván. Předpokládá se jeho neaktuálnost vzhledem k lokalitě běhu programu a tudíž i nepoužitelnost v budoucnu
–
Frontová strategie (First-in First-out) – LRU přístup je z důvodu náročné implementace aproximován strategii FIFO. Blok na konci fronty představuje v paměti nejstarší (neznamená nejdéle nepoužívaný).
Jak bude realizován zápis dat? ●
Procesor aktualizuje data v cache. Další postup závisí na zvoleném scénáři ●
Okamžitá aktualizace (Write through) – –
●
Opožděná aktualizace (Write back) – –
●
Současně se aktualizuje cache i pomalá paměť Dnes vždy kombinována s tzv. zápisovým bufferem (write buffer). Zamezí se čekání na aktualizaci pomalé paměti. Změněné informace jsou uloženy v cache a do pomalé paměti zapsány až v okamžiku potřeby výměny bloku v cache Cache je pro každý blok vybavena příznakovým bitem, který udává, zda v rámci bloku došlo ke změně dat (dirty bit)
Pro a proti? – –
WT – vhodnější při sdílení cache mezi více jádry procesoru (obvyklý pro L2 a L3 cache) WB - aktualizace pomalé paměti se neprovádí opakovaně, v případě výpadku a náhrady bloku vnáší další latenci
Write Buffer a Cache ●
●
Prostřednictvím Write bufferu se provádí aktualizace pomalé paměti bez nutnosti čekání procesoru na její dokončení. ●
Procesor zapisuje změny do cache paměti a write bufferu
●
Řadič paměti (memory controller) zapisuje změny z WB do pomalé paměti
Write Buffer bývá implementován jako jednoduchá fronta (FIFO) ●
●
Typický počet položen je roven 4.
Pokud pro zápis požadovaná data nejsou v cache paměti, aplikuje se jeden z následujících dvou přístupů ●
●
Zápis s výpadkem cache (Write allocate) – V cache je aktualizován blok do něhož měly být data zapsána Zápis bez výpadku cache (No-write allocate) – Cache paměť zůstává požadavkem na zápis nedotčená
Výpadek cache paměti ●
Výpadky cache paměti můžeme kategorizovat podle tzv. třech „C“ kritérií ●
●
●
●
Nucený (Compulsory) – jedná se obvykle o „první“ přístup procesoru k paměti v rámci provádění nově spuštěné aplikace Kapacitní (Capacity) – cache paměť není schopna pojmout všechny bloky potřebné při provádění programu Konflitkní (Conflict) – strategie výměny bloků v cache paměti působí konflikty nad stejným blokem v cache (paměť není dostatečně asociativní)
Výpočet průměrné doby přístupu do paměti (AMAT) ●
Average memory access time = Hit time + Miss rate x Miss penalty kde: – – –
Hit time je přístupová doba do cache paměti bez výpadku Miss rate je četnost výpadků Miss penalty je doba potřebná k získání dat při výpadku cache
Základní optimalizace cache paměti ●
Snižování četnosti výpadků cache paměti ●
●
●
Zvýšením velikosti bloku –
využívá principu lokality
–
zvyšuje pokutu při výpadku cache paměti
Zvýšení velikosti cache paměti –
redukuje kapacitní výpadky
–
potenciálně zvyšuje přístupovou dobu k datům v cache, nároky na napájení a cenu
Zvýšení asociativity cache paměti – –
●
snižuje počet konfliktních výpadků zvyšuje přístupovou dobu k datům v cache paměti
Více úrovňová cache paměť – –
napomáhá ke snížení pokuty v případě výpadku cache paměti nižší stupně Cache vyššího úrovně může být kapacitně větší, mít větší velikost bloku a větší asociativitu
Závislost četnosti výpadků na velikosti cache a její asociativitě
Obrazový materiál převzat z wikipedia.org
Základní optimalizace cache paměti ●
Priorizace výpadků cache při čtení před výpadky při zápisu ●
●
●
●
Výpadek při zápisu do cache je dočasně potlačen pomocí zápisového bufferu (write buffer). Změna je uložena k zápisu pouze v něm s tím, že příslušný blok bude v cache vyměněn po obsloužení prioritnějších výpadků způsobených při čtení z cache Přináší potenciální datový hazard. Čtená data nemusí být aktuální. Zápisový buffer se proto prohledává a pokud má dojít ke konfliktu, je nejdříve obsloužen zápis.
Snížení času vyhledávání v cache pomocí použití společné části fyzické a virtuální adresy (page offset) ●
●
●
Jak virtuální tak fyzická adresa má obvykle společnou (neměnnou) část – page offset Během překladu adresy z virtuální na fyzickou může paralelně probíhat prohledávání cache podle page offset indexu K prohledávání cache na schodu tagu již ale musí být použita fyzická adresa
Pokročilé optimalizace cache (I) ●
Použití malé jednoduché cache s minimální přístupovou dobou ●
●
●
Důvod je potřeba extrémní rychlosti a z toho plynoucí přítomnosti cache na čipu procesoru
Predikce dalšího přístupu ●
●
●
L1 cache se s vývojem procesorů příliš nezvětšuje
Cache uchovává informaci o předpokládaném dalším přístupu s tím, že v okamžiku potřeby je paralelně kontrolována správnost predikce, případné vyhledávání nepredikovaných dat a načítání predikovaných dat (1. takt) Pokud je predikce chybná jsou na základě výsledků hledání načtena případná data (2. takt)
Zřetězení přístupu do paměti cache ● ●
Zpoždění cache paměti první úrovně bývá často několik taktů (4 takty pro i7) Díky zřetězení přístupu je možný překryv požadavků na cache. Teoreticky je tak možno docílit vydání jednoho výsledku v každém taktu.
Pokročilé optimalizace cache (II) ●
Specializované vyrovnávací paměti ●
„Victim Cache“ – –
●
Vedle přímo mapované cache je přítomen malý, většinou 4 položkový buffer pro data, jenž jsou z původní cache vyřazena kvůli konfliktům. V některých případech dokáže pomocí přídavného bufferu pokrýt až 90% výpadků 4 KB přímo mapované paměti
„Trace Cache“ – – – –
Slouží k uchování dekódovaných mikroinstrukcí (například architektury P4) Jejich obsah není dán statickým uspořádáním instruckí programu v paměti, ale je vytvářen dynamicky při jejich dekódování Odbourávají nutnost opětovného dekódování instrukcí na mikrokód v případě jeho opětovného provádění (smyčka) Nehalem používá obdobnou jednotku Loop Stream Detector s 28 položkami (LSD) pro práci se smyčkami
Pokročilé optimalizace cache (III) ●
Neblokující cache paměť ●
●
Cílem neblokující paměti je umožnit čtení dat před dokončením obsluhy výpadku Výpadek datové cache nemusí ovlivnit vydávání instrukcí. Mohou vznikat další požadavky na přístup do cache. – –
●
Režimy „hit under miss“, „miss under miss“, „hit under multiple miss“ Poslední režim vyžaduje podporu obsluhy více výpadků u pomalejší paměti
Cache rozdělená do více banků ● ●
Umožňuje více paralelních přístupu Vyžaduje jednoznačné mapování bloků na banky, obvykle sekvenční prokládání
Pokročilé optimalizace cache (IV) ●
Paměť s rychlým předáváním dat při výpadku ●
●
Procesor obvykle potřebuje jen jedno slovo z bloku, který je při výpadku v paměti zaměňován Cílem optimalizace je nečekat na načtení celého bloku, ale předat data v okamžiku, kdy jsou k dispozici. – – –
●
●
Přednostní čtení požadovaného slova z pomalejší paměti s okamžitým předáním procesoru Čtení bloku z pomalé paměti ve standardním uspořádání. Nečeká se však na dokončení čtení ale na přečtení požadovaných dat. Následuje okamžité předání na CPU V obou případech je čtení bloku následně dokončena
Má význam především pro cache s velkými bloky
Write Buffer a aktualizace obsahu ●
●
Pokud další požadavek na zápis dat míří do bloku, jenž write buffer obsahuje, není do něj přidáván další blok, ale proběhne aktualizace informace v již existujícím bloku. Často spojováno s tzv. victim cache
Pokročilé optimalizace cache (IV) ●
Optimalizace kódu kompilátorem ●
●
●
Nevyžaduje změnu v HW. Má však značný výkonový dopad Cílem optimalizace je reorganizovat vytvářený kód bez dopadu na jeho funkčnost tak, aby co nejefektivněji pracoval s právě dostupnými paměťovými bloky Reorganizace kódu a dat –
●
Příkladem je zarovnání velikosti tzv. základních bloků programu s velikostí bloku cache. Při provádění základního bloku tak nedochází k výpadkům.
Úprava smyček –
Čílem je upravit kód tak, aby jinak nesekvenční přístup k datům ve smyčce, odpovídal fyzické organizaci dat. Typickým příkladem je práce s dvourozměrnými poli jejichž velikost překračuje velikost bloku cache.
Cache a optimalizace provádění smyček ●
Neoptimální varianta for (j=0; j<100; j++) { for (i=0; i<5000; i++){ x[i][j]++; } } ●
●
●
Přístup k prvkům pole neodpovídá jejich fyzické organizaci Velká vzdálenost mezi dvěma prvky znamená výpadek cache
Optimalizované varianta for (i=0; i<5000; i++){ for (j=0; j<100; j++){ x[i][j]++; } } ●
Optimalizace vede k mnohem intenzivnější práci s bloky, jenž jsou právě k dispozici
Pokročilé optimalizace cache (VI) ●
HW řízené dopředné načítání bloků do cache (HW Prefetching) ●
Cílem je načíst blok do paměti cache předtím, než jej bude procesor potřebovat
●
Bloky určené pro instrukční a datovou cache mohou být načítány dopředně
●
Často umisťovány ve tzv. stream buffer. Může být replikován (max 8) –
●
Replikace se využívá především při kombinovaném dopředném načítání instrukčních a datových bloků
SW řízené dopředné načítání bloků do cache (SW Prefetching) ●
Obdoba předchozí HW implementace
●
Vyžaduje spolupráci s HW v podobě speciálních instrukcí pro CPU
●
Realizuje se dopředné načítání
●
–
obsahu registrů
–
výměny bloků v cache
Potřeba kontrolovat zda zátěž, kterou SW prefetching přinese nepřekračuje možný přínos.
Shrnutí optimalizace Cache pamětí Technika
Hit Bandtime width
Miss penalty
Miss rate
HW složitost
+
0
Jednoduchá a malá cache
-
Predikce přístupů
-
Zřetězení přístupů
+
Victim cache
-
2
Trace cache
-
3
Neblokující cache
1 +
+
Dělená cache
(+)
1
-
3
+
1
Cache s rychlým předáváním na CPU
-
2
Aktualizace write buffer
-
1
Optimalizace kompilátorem
-
0
HW Prefetching
-
-
2 až 3
SW Prefetching
-
-
3
„+“ prodloužení času „0“ není složité
„-“ zkrácení času „3“ složité
Hierarchické uspořádání cache paměti ●
Evoluci hierarchie paměťového subsystému ovlivňoval především nerovnoměrný vývoj v rychlostech procesorů a samotných pamětí ●
●
●
●
Vyrovnávání rozdílu rychlostí pomocí cache umístěné na základní desce (intel 386) Vložení cache na čip procesoru vynutila nedostačující rychlost externí cache paměti. Externí je dále využívána (po Pentium MMX) Externí cache přináší jen nepatrné zrychlení oproti hlavní paměti – dále se nepoužívá. Hierarchie cache je přesunuta na čip procesoru Rozšiřování hierarchického uspořádání s přítomností více jader na jednom čipu
Paměťový subsystém v architektuře Intel Nehalem (Datová část)
Paměťový subsystém v architektuře Intel Nehalem (Instrukční část)
Virtuální paměť a stránkování ●
Virtuální paměť (Virtual Memory - VM) ●
●
●
●
zajišťuje automatizovaný management dvoustupňové hierarchie paměti (hlavní paměť a disk) umožňuje programu přidělit adresní prostor větší než prostor celé hlavní paměti umožňuje sdílet hlavní paměť více nezávislými procesy, jenž mohou být v hlavní paměti umístěny na libovolném místě
Terminologie Virtuální paměti ●
V mnohém sdílí myšlenky s hierarchií cache paměti – –
●
●
Stránka (page) nebo segment obdoba bloku Výpadek stránky (page fault) absence stránky v hlavní paměti. Podobně výpadek cache paměti je obsloužen načtením stránky z pomalejší paměti (disku).
Virtuální adresa jednoznačně adresuje slovo ve VM, před přístupem do fyzické paměti musí být proveden její převod na fyzickou adresu Převod virtuální adresy na fyzickou je nazýván překlad nebo mapování Předpokládá se, že posluchač je obeznámen s problematikou virtuální paměti a stránkování.
Virtuální paměť ●
Hledisko umístění stránky ve fyzické paměti ● ●
●
●
Mezi virtuálním a fyzickým adresním prostorem existuje pevné mapování. Část virtuální adresy je za pomoci tabulky stránek překládána na fyzickou adresu. Pro urychlení překladu se využívá rychlá vyrovnávací paměť (Translation Lookaside Buffer – TLB) s omezeným počtem posledních prováděných překladů
Která stránka bude ve fyzické paměti nahrazena v případě výpadku ●
●
●
Stránka může být v hlavní paměti umístěna na libovolném místě. Volba místa je záležitostí operačního systému. Výměna stránek není plně HW asistována.
Jak je stránka v paměti nalezena ●
●
Hlavní paměť lze chápat jako plně asociativní z pohledu možnosti umístit stránku
Záleží na scénáři nahrazování. Obvykle se operační sytém pokouší najít nejdéle nepoužitou stránku (LRU) a tu nahrazuje. LRU používá HW podporu v podobě příznaku použití stránky (use bit nebo reference bit)
Jak je se stránkami zacházeno při změně jejich obsahu ●
Pro zápis je obvykle využívána strategie opožděného zápisu (write back) s použitím příznaku změn (dirty bit)
Virtuální paměť a stránkování
Synonyma a homonyma při překladu adres ●
Homonyma virtuálních adres ●
●
●
Stejná virtuální adres ve dvou rozdílných kontextech (procesech) míří na rozdílná místa ve fyzické paměti Zabraňuje jednoduchému ponechání záznamů v TLB v případě přepnutí kontextu procesoru.
Synonyma virtuálních adres ●
● ●
●
Rozdílné virtuální adresy ve stejném kontextu nebo rozdílných kontextech ukazují na stejnou fyzickou adresu Problém pro cache indexované podle virtuální adresy. Aktualizace dat pod jednou virtuální adresou v cache vede k nekonzistenci při přístupu k datům pod jinou virtuální adresou (stejná data jsou v cache umístěna dvakrát). Řešením je zabránění možnosti koexistence synonym v cache. – –
Na úrovni operačního systému – Barvení stránek HW asistovaná řešení
TLB Cache ●
TLB cache ●
Slouží k urychlení překladu často požadovaných virtuálních adres.
●
Malá plně asociativní cache paměť s obvykle 64 záznamy na L1.
●
●
Dnes hierarchizována. L2 okolo 512 záznamů s omezenou asociativitou (4 čestně asociativní) Platnost záznamů závisí na aktuálním kontextu procesoru (aktuálně používané stránce) – –
●
Pokud dojde ke změně kontextu musí se TLB vymazat. Procesy mají stejný virtuální prostor. Překlad adres by nepracoval správně. Řešením je přidání identifikace procesu k záznamům v TLB. Pokud nesouhlasí s ID aktuálního procesu nesmí být záznam použit.
Problematika synonym a homonym v návaznosti na ostatní cache –
Indexování cache podle virtuální adresy
Index a Tag v cache paměti ●
V závislosti na uspořádání a vztahu virtuálních a fyzických adres, mohou být index a tag pro cache voleny následujícími způsoby ●
Virtuální index, virtuální tag (odvozeny od virtuální adresy) –
Pro přístup je použito přímo virtuální adresy bez nutnosti jejího překladu. Prohledávání cache může začít okamžitě.
–
Problematické při přepínání kontextů. Cache musí být vymazána.
●
Virtuální index, fyzicky tag
●
Fyzický index, virtuální tag –
●
Umožňuje paralelizaci přístupu do cache a překladu virtuální adresy při použití offsetu stránky jako cache tagu (při překladu se němění)
Fyzický index, fyzický tag (odvozeny od fyzické adresy)
Hlavní paměť ●
Výkonnost hlavní paměti ●
Zpoždění hlavní paměti – –
●
Šířka přístupového kanálu do HP –
●
Velikost datové sběrnice (nepřímo velikost datových bloků)
Dynamická hlavní paměť (DRAM resp. SDRAM) ●
Paměť vyžaduje pravidelné obnovování obsahu –
●
dnes okolo 8ms, paměť v této době „nelze používat“, konzumuje méně než 1% času
Adresa bývá dělena do dvou částí vzhledem k maticové organizaci paměti – –
●
Přístupová doba (doba mezi vysláním požadavku a obdržením požadovaných dat) Přístupový cyklus (čas mezi jednotlivými požadavky)
RAS (adresa řádku) CAS (adresa sloupce)
Statická paměť s náhodným přístupem (SRAM) ●
nevyžaduje obnovování obsahu (konstrukčně využívá 6 tranzistorů, zabírá více místa, je energeticky náročnější a dražší)
Dynamická paměť ●
Organizace paměti ●
●
Maticová organizace paměti –
snížení počtu adresních pinů
–
rozdělení adresy do dvou bloků (adresa řádku a adresa sloupce)
Přístup k paměti –
zaslání adresy řádku (výběr řádku matice)
–
zaslání adresy sloupce (vybrání konkrétní paměťové buňky)
–
přečtení dat (data poskytnuta na datovou sběrnici)
–
zpětný zápis dat (čtením jsou data v buňce znehodnocena, je potřeba je znovu zapsat)
Časování dynamické paměti ●
Časování pamětí (4 klíčové parametry) ●
CL (CAS Latency) –
●
TRCD (Row Address to Column Address Delay) –
●
počet cyklů mezi otevřením řádku a přístupem k sloupci v něm
TRP (Row Precharge Time) –
●
čas potřebný pro získání dat po odeslání adresy sloupce (předpokládá se otevřený řádek, ze kterého se čte)
počet cyklů mezi předchozím příkazem a otevřením nového řádku (práce s předchozím řádkem musí být ukončena)
TRAS (Row Active Time) –
celkový počet cyklů potřebný k získání dat z paměti
–
obvykle roven součtu předchozích hodnot
Evoluce optimalizací hlavní paměti ●
Asynchronní hlavní paměť ●
Vybavování požadavku je zahájeno v okamžiku změny řídícího signálu
●
Signály řízení se po dobu vybavování prakticky nedají měnit
●
●
Řadič paměti provádí synchronizaci se sběrnicí na úrovni požadavek odpověď
Synchronní hlavní paměť ●
●
Řídící signály jsou zpracovávány až ve chvíli příchodu hodinového signálu sběrnice (synchronizace s řadičem paměti) Požadovaná operace může být zaznamenána a vykonávána nezávisle na případných změnách řídících signálu – –
Další požadavek může být na hlavní paměť zaslán dříve, než je předchozí vybaven (zřetězení požadavků na HP) Předpokládá se fixní známý počet cyklů mezi zasláním požadavku a vybavením dat
Evoluce optimalizací hlavní paměti ●
Fast Page Mode ●
Přináší možnost opakovaného čtení nebo zápisu dat v rámci adresovaného řádku, bez nutnosti znovu zasílání jeho adresy –
●
●
přineslo zvýšení výkonu při lokálních operacích (shlukové čtení nebo zápis)
Další rozšíření v podobě přímého shlukového čtení (skupina blízkých/sousedních slov) nebo další dodatečné minimalizací času potřebných pro adresaci sloupce
Double Data Rate ●
Data mohou být přenášena na sestupnou i vzestupnou hranu hodinového signálu – –
Interní organizace v podobě více modulů, větší propustnost dat mezi pamětí a řadičem zvýšení spotřeby, snížení napájecího napětí (1.8V, 1.5V)
Evoluce optimalizací hlavní paměti ●
Prokládána paměť (Interleaved Memory) ●
Paměť je organizována do několika skupin paměťových čipů (paměťových bank) –
●
Datová slova jsou do bank zapisována „prokládaně“ například podle vzoru „a mod N“ –
●
●
Paměť s N skupinami může realizovat N-cestné prokládání (N obvykle mocnina 2)
a reprezentuje adresu slova a N počet paměťových bank
Banky jsou na sobě nezávislé –
Časování operace nad jedním neovlivňuje ostatní.
–
Zvýšení počtu paralelismu proveditelných nad HP (Překryv operací nad banky).
Organizace 32 slov do paměti s 4-cestným prokládáním Bank Bank Bank Bank
0 1 2 3
00 01 02 03
04 05 06 07
08 09 10 11
12 13 14 15
16 17 18 19
20 21 22 23
24 25 26 27
28 29 30 31
Evoluce optimalizací hlavní paměti ●
Rozdílné časování paměti a IO sběrnice ●
●
●
●
Vnitřní organizace paměť (shlukové operace, prokládání) umožňuje poskytovat v jednom paměťovém taktu více datových slov Přenos slov na vzestupnou a sestupnou hranu hodinového signálu přestává stačit Oddělení interního časování paměti a časování sběrnice představeno u standardu DDR2 SDRAM Srovnání DDR, DDR2, DDR3 s časováním paměti 100MHz
DDR DDR2 DDR3
MemClk MHz 100 100 100
BusClk MHz 100 200 400
DataRate MTps 200 400 800
PeakTrans MBps 1600 3200 6400
Timing Clk 3-3-3 5-5-5
CAS ns 15-20 12.5-15
Synchronous Dynamic RAM
Hlavní paměť organizace ●
Jednoduchá organizace hlavní paměti ●
●
●
Jednoduchost modelu, snadná implementace, velká latence
Paměť s širokým datovým slovem ●
●
●
●
Šířka datového slova je zachována po celou cestu hierarchii paměti od procesoru až po hlavní paměť
Datová sběrnice mezi hlavní pamětí a cache pamětí je rozšířena na N násobek velikosti datového slova procesoru. Dodatečný HW k realizaci výběru konkrétního slova z N slov dlouhého řádku v cache. Významné snížení latence paměti při sekvenčním čtení v rámci N slov
Prokládaná hlavní paměť ●
●
Hlavní paměť je rozdělena na nezávislé moduly. Na každý z modulů jsou požadavky zasílány samostatně. Dochází ke zřetězení přístupů do HP. Snížení latence, odpadá potřeba široké sběrnice, komplexnější řadič paměti
Hlavní paměť organizace Sběrnice mezi CPU Stejná šířka sběrnice a Cache je rozšířena o mezi CPU a Cache, multiplexor (zúžení k CPU). Cache a Hlavní pamětí Cache a Hlavní pamětí propojena N širokou sběrnicí
Paměť organizována do samostatných banků. Datová sběrnice má stejnou šířku na všech úrovních.
Hlavní paměť organizace ●
Prokládaná HP ●
●
●
Sekvenčně řazená slova jsou podle známého vzoru ukládána do jednotlivých banků paměti (jako vzor lze chápat „mod počet banků“) Počet banků HP ≤ přístupové době do paměti
Srovnání výkonu – – ●
Jednoduchá HP –
●
4 x ( 1 + 6 + 1 ) = 32 taktů
HP s širokým datovým slovem –
●
pro srovnání předpokládejme 1 takt pro zaslání adresy, 6 taktů pro vybavení požadavku, 1 takt pro zaslání dat požadavek na čtení zahrnuje 4 slova v HP (jeden blok v cache)
1 + 6 + 1 = 8 taktů
Prokládaná HP –
1 + 6 + 4 x 1 = 11 taktů
Závěr ●
Paměťový subsystém počítače
●
Cache paměti a jejich optimalizace ●
●
●
Evoluce v hierarchii cache pamětí
Virtuální paměť a stránkování ●
návaznost na cache
●
rychlý překlad
Hlavní paměť ●
dynamická paměť a její organizace
Dotazy?
Literatura ●
●
●
●
●
John L. Hennessy, David A. Patterson, Computer Architecture: A Quantitative Approach (4th Edition) William Stallings, Computer Organization and Architecture Designing for Performance (8th Edition) Paul H. J. Kelly, Advanced Computer Architecture Lecture notes 332 B. Keeth, R. J. Baker, B. Johnson, Dram circuit design: fundamentals and high-speed topics Andrew S. Tanenbaum, Operating Systems: Design and Implementation 47