Cache

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Cache (výslovnost: /kæʃ/ IPA,[1] počeštěle /keš/ IPA[2]), česky též keš nebo mezipaměť je označení pro vyrovnávací paměť používanou ve výpočetní technice. Je zařazena mezi dva subsystémy s různou rychlostí a vyrovnává tak rychlost přístupu k informacím. Účelem cache je urychlit přístup k často používaným datům na „pomalých“ médiích jejich překopírováním na média rychlá. Příkladem „pomalého“ a rychlého média může být pevný disk a paměťový modul, kde rozdíl v rychlosti může činit až tři řády. Jindy může být pevný disk tím „rychlým“ médiem. „Pomalým“ médiem pak může být například obsah získávaný ze sítě. Cache byla vynalezena v první polovině 60. let 20. století.

Typy cache[editovat | editovat zdroj]

  • softwarová cache, vytvořená programově, vymezením určité části operační paměti pro potřeby vyrovnávací paměti (např. disková cache v operačním systému)
  • hardwarová cache, tvořená paměťovými obvody (např. pro potřeby procesoru).

Softwarová cache[editovat | editovat zdroj]

Obecně se 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 pracuje častěji, uchovávat v rychlé operační paměti a v případě zápisu tyto na disk ukládat co nejpozději. Nemusí tak provádět zbytečné čtecí a zápisové operace na disku, které jsou o několik řádů pomalejší (je nutné přemístit hlavy a počkat, až se disk natočí požadovaným místem pod hlavy).

Moderní systémy přidělují cache paměť pro disky dynamicky, podle množství volné paměti a potřeb systému. Algoritmy pro obsluhu diskové cache mají podstatný vliv na rychlost a výkon celého systému.

Nevýhodou používání cache je riziko spojené s neočekávaným výpadkem napájení - stav datových souborů na disku není vždy aktuální a musí se synchronizovat s obsahem cache. Z tohoto důvodu vyžadují operační systémy před vypnutím počítače provést tzv. „shutdown“, to znamená korektní ukončení práce systému, při kterém se (mimo jiné) uloží obsah diskové cache do souborů na disku. Ze stejných důvodů je nutné některá vyměnitelná média v unixových systémech před vyjmutím „odmountovat“. Tím se dává najevo systému, že se s médiem už nebude dále pracovat a systém provede synchronizaci cache se soubory. Odpojení je nutné i například u Windows XP, a to „zelenou ikonkou vpravo dole“, jinak může dojít k poškození souborového systému na výměnném médiu a to hlavně pokud se s médiem zrovna pracuje (kopírování, editace,...). Případné problémy s nečekaným výpadkem napájení se snaží moderní systémy alespoň částečně eliminovat pomocí žurnálu.

Hardwarová cache[editovat | editovat zdroj]

Paměť cache realizovaná specializovanými paměťovými obvody se používá v některých řídících jednotkách vnějších pamětí a v procesorech a jejich podpůrných obvodech.

Cache v řídících jednotkách vyrovnává rozdíl mezi nepravidelným předáváním/přebíráním dat počítačem (sběrnici) a pravidelným tokem dat do/z magnetických hlav, jehož rytmus je dán rychlostí otáčení disku.

U počítačů je cache elektronický obvod, tvořený z tranzistorů (ty tvoří bistabilní klopné obvody) a její funkce je vyrovnávat rozdílnou rychlost mezi procesorem a operační pamětí. Vyšší rychlosti je dosaženo použitím kvalitnějších tranzistorů (vyšší frekvence) než u operační paměti a cache je také blíže k procesoru než operační paměť. Tudíž je možno použít opět vyšší frekvenci, protože po cestě nejsou tak velké parazitní kapacity.

Cache v HDD[editovat | editovat zdroj]

Cache v pevném disku je vlastně vyrovnávací paměť, která odděluje velmi rychlý procesor od nesrovnatelně pomalejšího pevného disku. Umožňuje uchovat data určená k zápisu do doby, než je mechanická část pevného disku zpracuje a naopak uchovává přečtená data do doby, než je obsluha přerušení přesune do operační paměti. Může sloužit i k interní reorganizaci požadavků kvůli zvýšení výkonu (NCQ). Její velikost se pohybuje od několika kB do 64 MiB (u současných 3.5" disků). Interní cache používají také SSD disky.

Cache v procesoru[editovat | editovat zdroj]

Cache paměť v procesoru ukládá kopie dat přečtených z adresy v operační paměti. Pokud při čtení obsahu slova z adresy v paměti je tato položka nalezena v cache paměti, je její obsah přečten z cache paměti a ne z operační paměti (angl. cache hit). Mezi procesorem a cache pamětí se přenášejí jednotlivá slova, mezi cache pamětí a operační pamětí se přenášejí rámce slov o velikosti několikanásobku velikosti slova procesoru. Protože asi 90% operací procesoru je čtení paměti, většinou sekvenční, je tímto způsobem dosaženo větší propustnosti dat z operační paměti do procesoru, tím i vyššího výpočetního výkonu.

Vyrovnávací paměť procesoru bývá dvojstupňová. Část paměti o malé kapacitě je přímo součástí procesoru a je stejně rychlá, jako vlastní procesor (značí se L1). Další paměť, pomalejší, ale s větší kapacitou, je mezi procesorem a operační pamětí, dnes se již umisťuje do pouzdra s procesorem (značí se L2). Protože cena pamětí stoupá s její rychlostí (a samozřejmě s kapacitou), je možné tímto uspořádáním najít kompromis mezi cenou a rychlostí. Na přelomu roku 2008 a 2009 se začíná používat L3 cache i v běžných procesorech (Intel Core i7, AMD Phenom), která je pro všechna jádra společná a většinou má velikost několik megabajtů.

Velikost paměti cache, její rychlost a algoritmus řízení paměti cache se liší u jednotlivých výrobců a typů procesorů a je to jeden z parametrů, který podstatně ovlivňuje výkon a cenu počítače.

Webová cache[editovat | editovat zdroj]

Webová cache slouží k ukládání předchozích odpovědí od webových serverů jako jsou webové stránky nebo obrázky. Informace uložené v cache mohou být znovu využity a tím je možné snížit vytížení přenosových cest počítačových sítí a též zátěž webových serverů. Webová cache je obvyklou součástí webového prohlížeče. Správci větších počítačových sítí nebo poskytovatelé internetového připojení používají proxy servery, které cachují data pocházející od webových serverů k webovým klientům.

Některé velmi zatížené webové servery používají reverzní proxy cache, která je záměrně postavena přímo před webový server (například před servery Wikipedie). Webový server tak nemusí opakovaně odesílat klientům data, která odeslal před kratší dobou a tím je snížena jeho zátěž.

P2P cache[editovat | editovat zdroj]

Jinou podobou cache je P2P ukládání, kde soubory nejvíce vyhledávané peer-to-peer aplikacemi jsou uloženy v ISP cache pro zrychlení P2P přenosů. Podobně existují i decentralizované ekvivalenty, které dovolují komunitám provádět stejné úlohy pro P2P přenos, například Corelli.

Další cache[editovat | editovat zdroj]

Doménový DNS server BIND ukládá do své cache mapování doménových jmen na IP adresy. Trvanlivost záznamu v cache určuje správce daného doménového záznamu. Podobnou cache může využívat i knihovna používaná pro provedení překladu doménového jména na adresu a zpět (tzv. resolver s konfiguračním souborem resolv.conf).

Některé síťové souborové systémy urychlují přístup ke vzdáleným souborů pomocí lokální cache, kdy jsou celé soubory (nebo jejich části) ukládány na straně klienta do cache. Taková cache může být i velká a proto bývá umístěna na disku. Protože síťové souborové systémy musí řešit aktualizace záznamů v cache, když je soubor změněn jiným klientem, může být činnost takové lokální cache omezena (např. jen pro čtení nebo jen pro soubory, do kterých nelze zapisovat a podobně). Lokální cache používají pokročilé systémy, jako je AFS, ale mohou být implementovány i pro potřebu běžnějších, jako je NFS nebo SMB.

Internetové vyhledávače často ukládají indexované webové stránky do své cache a mohou ji i zpřístupnit. Například vyhledávač Google poskytuje vedle každého výsledku vyhledávání odkaz na Archiv, což může být užitečné, když jsou webové stránky z webového serveru dočasně nebo permanentně nedostupné.

Dalším typem cache je ukládání vypočítaných výsledků, u kterých je pravděpodobné, že budou znovu potřeba, což se také nazývá memoizace. Příkladem tohoto typu je Ccache, program který ukládá výstup kompilace k urychlení příští kompilace.

Ukládání databáze do cache může podstatně zlepšit výkonnost databázových aplikací, například při zpracovávání indexů, datových repositářů a často používaných sub-sad dat.

Distribuované ukládání používá cache rozšířenou na počítače propojené sítí, například Corelli.

Rozdíl mezi bufferem a cache[editovat | editovat zdroj]

Dva pojmy „buffer“ a „cache“ označují vzájemně se nevylučující funkce. Ty se však mohou i vzájemně prolínat. V jejich významech je však rozdíl (princip cache je vysvětlen výše).

Buffer je vyrovnávací paměť, která slouží k vyrovnávání různých rychlostí dvou stran (např. tiskárny a počítače nebo dva vzájemně komunikující procesy). Buffer je typicky realizován jako (dočasný) úsek operační paměti počítače, avšak může být realizován i hardwarově (například jako součást pevného disku). Používán je typicky jako fronta FIFO, případně jako kruhový buffer, ale též jako zásobník. Data jsou do bufferu zapsána, po nějaké době jsou z něj přečtena a již v něm nejsou dále uchovávána.

Související informace naleznete také v článku Vyrovnávací paměť.

Reference[editovat | editovat zdroj]

  1. nebo dříve /kɑːʃ/ IPAOxford English Dictionary cache (omezený přístup); též Dictionary.com (bez omezení). Přestože je možné v angličtině občas slyšet výslovnost /ˈkæʃeɪ/ IPA, představuje správně pouze francouzské přídavné jméno 'caché(e)', což znamená „skrytý“. /keɪʃ/ IPA je špatná výslovnost.
  2. Výraz cacheInternetové jazykové příručce

Externí odkazy[editovat | editovat zdroj]