Paměti cache
Cache je označení pro vyrovnávací paměť nacházející se mezi dvěma subsystémy s rozdílnou přenosovou rychlostí, a jak již její název vypovídá, tak tuto rychlost vyrovnává. Cache může být realizována softwarově nebo hardwarově. Softwarová cache se obecně používá jako vyrovnávací paměť pro pomalé (vzhledem k rychlosti operační paměti a procesoru) vnější paměti, typickým takovým zařízením je pevný disk počítače. Operační systém se snaží informace, se kterými právě pracuje, uchovávat v rychlé operační paměti a na disk je ukládat co nejpozději. Tento postup velice urychluje práci s daty a jejich zpracování. V moderních systémech je tato paměť cache přidělována dynamicky, podle potřeb a zatížení systému a to ovlivňuje pozitivně celkový výkon. Nevýhodou tohoto způsobu urychlení systému jsou problémy spojené s nečekaným výpadkem proudu, kdy dochází ke ztrátě dat, jelikož paměti RAM jsou na rozdíl od HDD elektricky závislé, a když dojde k výpadku, tak jsou data neodvratně ztracena. Hardwarová cache se používá zpravidla u komponent s větší přenosovou rychlostí a je realizována pomocí speciálních paměťových obvodů přímo na komponentě. Případem takové paměti cache je cache v procesoru.
Vzhledem k tomu, že rychlost mikroprocesorů roste rychleji než rychlost dynamických pamětí (především při náhodném přístupu), bylo nutné do původně jednoduchého systému mikroprocesor–operační paměť (základ von Neumannovy architektury) zavést takzvané vyrovnávací paměti (cache memory). Ty na jednu stranu statisticky zvyšují pravděpodobnost, že mikroprocesor bude pracovat na své maximální rychlosti v případě, že jsou data přítomna ve vyrovnávací paměti, na stranu druhou umožňují, aby se data mezi operační pamětí a vyrovnávací pamětí přenášela v blocích, což je na současných technologiích operačních pamětí (SDRAM, DDR, DDR2 atd.) mnohem rychlejší než náhodný přístup. Paměť cache na procesoru bývá řešena dvoustupňově. Cache, která je přímo součástí čipu procesoru bývá označována jako paměť 1. stupně a běží na stejné frekvenci jako procesor (L1 cache). Druhý stupeň je tzv. Chache L2 mezi procesorem a operační pamětí, ta je sice pomalejší ale daleko větší. Je to kompromis jak vyvážit cenu a rychlost procesoru, protože cena paměti je přímo úměrná její rychlosti a kapacitě.
Schéma zapojení interní a externí cache
Princip práce vyrovnávacích pamětí Paměť cache je rozdělena do bloků o konstantní velikosti, které bývají nazývané cache line. Operační paměť je taktéž logicky rozdělena na bloky o stejné velikosti, těchto bloků je však mnohem více, než bloků ve vyrovnávací paměti. Z toho vyplývá, že zdaleka ne všechny bloky operační paměti mohou být "kešovány" ve vyrovnávací paměti. Ve chvíli, kdy mikroprocesor potřebuje přečíst nějaká data, provede se kontrola, zda se tato data nachází ve vyrovnávací paměti, tj. zda nějaký blok obsahuje požadovanou adresu. Pokud ano (nastane takzvaný cache hit), jsou data z vyrovnávací paměti přečtena a předána mikroprocesoru a to mnohem rychleji, než v případě čtení dat z operační paměti. Ovšem ve chvíli, kdy potřebná data nejsou nalezena ve vyrovnávací paměti (tzv. cache miss), musí do ní být přenesena. Pokud dojde k zaplnění cache paměti a je potřeba zavést další blok, je nutné, aby některý z bloků cache paměť opustil. Nejčastěji se k tomuto používá LRU (Least Recently Used) algoritmu, tj. algoritmu, který vyřadí nejdéle nepoužívaný blok. Při návrhu struktury, je nutné sledovat kritérium, kterým se vyjadřuje efektivnost použití vyrovnávacích pamětí. Jedná se o takzvaný součinitel výpadků bloků, který se vypočte z podílu neuspokojivých přístupů do vyrovnávací paměti a celkového počtu přístupů. Na začátku práce počítače je vyrovnávací paměť prázdná a proto se součinitel výpadků bloku rovná jedné. S rostoucím počtem přístupů do paměti, hodnota součinitele výpadků bloků postupně klesá. V praxi lze dosáhnout hodnot součinitele výpadků bloků menších než 0,05, tj. jen v pěti procentech případů dochází k výpadku bloku a v devadesáti pěti procentech vyrovnávací paměť skutečně poslouží ke svému účelu.
Asociativita vyrovnávací paměti Cache paměti bývají organizovány jako tzv. asociativní paměti. Asociativní paměti jsou tvořeny tabulkou (tabulkami), která obsahuje vždy sloupec, v němž jsou umístěny tzv. tagy (klíče), podle kterých se v asociativní paměti vyhledává. Dále jsou v tabulce umístěna data, která paměť uchovává, a popř. další informace nutné k zajištění správné funkce paměti. Cache paměti mohou být konstruovány jedním ze tří způsobů: plně asociativní, přímo mapovaná, n-cestně asociativní. Plně asociativní vyrovnávací paměť
U plně asociativní paměti prakticky neexistuje žádné omezení, co se týče mapování bloků. Vzhledem k minimálnímu omezení mapování bloků. se u tohoto typu konstrukce vyrovnávací paměti dosahuje nejnižší míry cache miss, takže by se zdálo, že se tato konstrukce používá nejčastěji. Ve skutečnosti tomu tak vždy není, protože v takto vytvořené vyrovnávací paměti je nutné implementovat rychlý mechanismus mapování a hledání bloků. , proto plně asociativní vyrovnávací paměť není obecně tak rychlá.
Princip: celá adresa, ze které se budou číst data jsou brána jako tag. Tag je přiveden na vstup komparátorů společně s tagem v daném řádku tabulky. Pokud některý z tagů v tabulce je shodný se zadaným tagem na vstupu, znamená to, že požadovaná informace je v cahe paměti přítomna. Pokud všechny komparátory signalizují neshodu, je to známka toho, že požadovaná informace v cache paměti není. přímo mapovaná vyrovnávací paměť
jedná o implementačně nejjednodušší strukturu vyrovnávacích pamětí, ve které se již přímo z indexu bloku určuje, ve kterém místě se blok může nacházet ve vyrovnávací paměti. Takto zkonstruovaná vyrovnávací paměť může vést k relativně vysoké míře cache miss a tím pádem i k nižší celkové efektivitě. Princip: Zadaná adresa je opět rozdělena na tag a adresu třídy. Adresa třídy je přivedena na vstup dekodéru, který podle ní vybere jeden řádek v tabulce. Tag na tomto řádku je následně porovnán se zadaným tagem, čímž se rozhodne o přítomnosti resp. nepřítomnosti informace v cache paměti.
Dvoucestná nebo čtyřcestná asociativní vyrovnávací paměť vhodně navržený kompromis mezi Plně asociativní a přímo mapovanou pamětí. U dvoucestné asociativní vyrovnávací paměti je možné každý blok z operační paměti mapovat do dvou míst v paměti vyrovnávací; čtyřcestná asociativní vyrovnávací paměť naproti tomu umožňuje jeden blok mapovat do čtyř mist. Princip: Adresa třídy je přivedena na n dekodérů, které v každé tabulce vyberou jeden řádek. Z těchto řádků se potom vezmou příslušné tagy a komparátorem se porovnají se zadaným tagem.
Zdroje http://clanky.katalognotebooku.cz/slovnik-pojmu-notebooky/1531-cache-slovnik-pojmu/ http://cs.wikipedia.org/wiki/Cache http://www.root.cz/clanky/vyrovnavaci-pameti-cache/ http://www.fi.muni.cz/usr/pelikan/ARCHIT/TEXTY/CACHE.HTML