Vyrovnávací pamět zefektivňuje načítání dat z paměti počítače. Funguje jako dočasná paměť, ze které může procesor počítače snadno načítat data. Tato dočasná paměť, známá jako cache, je pro procesor dostupnější než hlavní zdroj paměti počítače, obvykle nějaká forma paměti DRAM.
Vyrovnávací paměť se někdy nazývá paměť CPU (central processing unit), protože je obvykle integrována přímo do čipu procesoru nebo je umístěna na samostatném čipu, který má s procesorem samostatnou propojovací sběrnici. Proto je pro procesor přístupnější a dokáže zvýšit efektivitu, protože je fyzicky blízko procesoru. Aby mohla být paměť cache blízko procesoru, musí být mnohem menší než hlavní paměť. V důsledku toho má menší úložný prostor. Je také dražší než hlavní paměť, protože se jedná o složitější čip, který přináší vyšší výkon.
To, co obětuje na velikosti a ceně, vynahrazuje rychlostí. Paměť cache pracuje 10krát až 100krát rychleji než paměť RAM a k reakci na požadavek procesoru potřebuje jen několik nanosekund.
Název skutečného hardwaru, který se používá pro paměť cache, je vysokorychlostní statická paměť s náhodným přístupem (SRAM). Název hardwaru, který se používá v hlavní paměti počítače, je dynamická paměť s náhodným přístupem (DRAM).
Paměť cache nelze zaměňovat s širším pojmem cache. Cache jsou dočasná úložiště dat, která mohou existovat jak v hardwaru, tak v softwaru. Paměť cache označuje specifickou hardwarovou součást, která umožňuje počítačům vytvářet mezipaměti na různých úrovních sítě.
Typy paměti cache
Paměť cache je rychlá a drahá. Tradičně se dělí do „úrovní“, které popisují její blízkost a dostupnost mikroprocesoru. Existují tři obecné úrovně cache:
- Paměť cache L1 neboli primární paměť cache. Je extrémně rychlá, ale relativně malá, a je obvykle zabudována v čipu procesoru jako mezipaměť procesoru.
- L2 cache neboli sekundární cache je často objemnější než L1. Mezipaměť L2 může být zabudována v procesoru, nebo může být na samostatném čipu či koprocesoru a mít vysokorychlostní alternativní systémovou sběrnici spojující mezipaměť a procesor. Tímto způsobem není zpomalována provozem na hlavní systémové sběrnici.
- Mezipaměť třetí úrovně (L3) je specializovaná paměť vyvinutá ke zlepšení výkonu pamětí L1 a L2. Paměť L1 nebo L2 může být výrazně rychlejší než L3, i když L3 je obvykle dvakrát rychlejší než paměť DRAM. U vícejádrových procesorů může mít každé jádro vyhrazenou mezipaměť L1 a L2, ale mohou sdílet i mezipaměť L3. Pokud mezipaměť L3 odkazuje na instrukci, je obvykle povýšena na vyšší úroveň mezipaměti.
V minulosti byly mezipaměti L1, L2 a L3 vytvářeny pomocí kombinovaných komponent procesoru a základní desky. V poslední době je trendem konsolidace všech tří úrovní mezipaměti na samotném procesoru. Proto se primární prostředek pro zvýšení velikosti mezipaměti začal přesouvat od pořízení konkrétní základní desky s různými čipovými sadami a architekturou sběrnice k nákupu procesoru se správným množstvím integrované mezipaměti L1, L2 a L3.
Navzdory všeobecnému přesvědčení implementace paměti flash nebo většího množství dynamické paměti RAM (DRAM) do systému nezvýší velikost paměti cache. To může být matoucí, protože termíny vyrovnávací paměť (vyrovnávací paměť pevného disku) a paměť cache se často používají zaměnitelně. Paměť cache, která využívá paměť DRAM nebo flash k vyrovnávací paměti pro čtení z disku, má zlepšit vstupně-výstupní operace úložiště tím, že data, na která se často odkazuje, ukládá do vyrovnávací paměti před pomalejší magnetický disk nebo pásku. Vyrovnávací paměť naproti tomu poskytuje vyrovnávací paměť pro čtení procesoru.
Mapování vyrovnávací paměti
Konfigurace mezipaměti se stále vyvíjejí, ale paměť cache tradičně funguje ve třech různých konfiguracích:
- Přímo mapovaná cache má každý blok namapován přesně na jedno místo v paměti cache. Koncepčně je přímo mapovaná cache jako řádky v tabulce se třemi sloupci: blok cache, který obsahuje skutečná načtená a uložená data, značka s celou adresou načtených dat nebo její částí a příznakový bit, který ukazuje přítomnost platného bitu dat v řádkovém záznamu.
- Plně asociativní mapování mezipaměti je svou strukturou podobné přímému mapování, ale umožňuje namapovat paměťový blok na libovolné místo mezipaměti, nikoli na předem určené místo v paměti mezipaměti, jako je tomu u přímého mapování.
- Nastavené asociativní mapování cache lze považovat za kompromis mezi přímým mapováním a plně asociativním mapováním, kdy je každý blok mapován na podmnožinu umístění cache. Někdy se nazývá N-cestné set asociativní mapování, které umožňuje, aby místo v hlavní paměti bylo cachováno do libovolného z „N“ míst v mezipaměti L1.
Už jste četli? Marcel Kupka: Kdo chce psát, musí číst. Jinak zakrní
Zásady zápisu dat
Data lze do paměti zapisovat různými technikami, ale dvě hlavní, které se týkají paměti cache, jsou následující:
- Průběžný zápis. Data se zapisují do mezipaměti cache i do hlavní paměti současně.
- Zpětný zápis. Data se do mezipaměti zapisují pouze na začátku. Poté mohou být data zapsána do hlavní paměti, ale nemusí k tomu dojít a nebrání to interakci.
Způsob zápisu dat do mezipaměti má vliv na konzistenci a efektivitu dat. Například při použití průchozího zápisu je třeba provést více zápisů, což způsobuje zpoždění předem. Při použití zpětného zápisu mohou být operace efektivnější, ale data nemusí být konzistentní mezi hlavní a vyrovnávací pamětí.
Jedním ze způsobů, jak počítač určuje konzistenci dat, je zkoumání dirty bitu v paměti. Dirty bit je dodatečný bit obsažený v paměťových blocích, který označuje, zda byly informace změněny. Pokud se data dostanou do souboru registrů procesoru s aktivním dirty bitem, znamená to, že nejsou aktuální a jinde existují jejich novější verze. Tento scénář je pravděpodobnější při scénáři zpětného zápisu, protože data se do obou paměťových oblastí zapisují asynchronně.
Specializace a funkčnost
Kromě instrukční a datové mezipaměti jsou pro zajištění specializovaných systémových funkcí určeny i další mezipaměti. Podle některých definic je cache L3 díky své sdílené konstrukci specializovanou cache. Jiné definice ponechávají instrukční a datovou cache odděleně a každou z nich označují jako specializovanou cache.
Vyrovnávací paměti TLB (Translation Lookaside Buffers) jsou také specializované paměti cache, jejichž funkcí je zaznamenávat překlady virtuálních adres na fyzické adresy.
Jiné mezipaměti nejsou technicky vzato vůbec mezipaměťové paměti. Například diskové mezipaměti mohou využívat paměť DRAM nebo flash k ukládání dat do mezipaměti podobně jako paměťové mezipaměti pro instrukce procesoru. Pokud se k datům často přistupuje z disku, ukládají se do mezipaměti DRAM nebo do křemíkové paměti flash, aby se zkrátila přístupová doba a odezva.
K dispozici jsou také specializované mezipaměti pro aplikace, jako jsou webové prohlížeče, databáze, vázání síťových adres a podpora protokolu Network File System na straně klienta. Tyto typy mezipamětí mohou být rozděleny mezi více síťových hostitelů, aby byla zajištěna větší škálovatelnost nebo výkon aplikace, která je používá.
Lokalita
Schopnost cache paměti zvýšit výkon počítače závisí na konceptu lokality reference. Lokalita popisuje různé situace, díky nimž je systém předvídatelnější. Paměť cache využívá těchto situací k vytvoření vzorce přístupu do paměti, na který se může spolehnout.
Existuje několik typů lokality. Pro mezipaměť jsou klíčové dva z nich:
- Časová lokálnost. Jedná se o situaci, kdy se ke stejným prostředkům přistupuje opakovaně v krátkém časovém úseku.
- Prostorová lokálnost. Jedná se o přístup k různým datům nebo prostředkům, které jsou blízko sebe.
Výkon
Paměť cache je důležitá, protože zlepšuje efektivitu vyhledávání dat. Jsou v ní uloženy programové instrukce a data, která se při činnosti programů používají opakovaně, nebo informace, které bude procesor pravděpodobně potřebovat příště. Počítačový procesor může k těmto informacím přistupovat z vyrovnávací paměti rychleji než z hlavní paměti. Rychlý přístup k těmto instrukcím zvyšuje celkovou rychlost programu.
Kromě své hlavní funkce, kterou je zvyšování výkonu, je paměť cache cenným zdrojem pro hodnocení celkového výkonu počítače. Uživatelé tak mohou učinit sledováním poměru zásahů a chyb v paměti cache. Zásahy paměti cache jsou případy, kdy systém úspěšně načte data z paměti cache. Chybějící mezipaměť je situace, kdy systém hledá data v mezipaměti, nemůže je najít a hledá je místo toho někde jinde. V některých případech mohou uživatelé zlepšit poměr zásahů a chybění úpravou velikosti bloku paměti cache – velikosti uložených datových jednotek.
Zlepšení výkonu a možnost sledování výkonu nespočívají jen ve zlepšení obecného pohodlí pro uživatele. S rozvojem technologií, na které se stále více spoléhá v kritických scénářích, se stává klíčovou rychlost a spolehlivost. I několik milisekund zpoždění může v závislosti na situaci potenciálně vést k obrovským nákladům.
Cache vs. hlavní paměť
Paměť DRAM slouží jako hlavní paměť počítače a provádí výpočty dat načtených z úložiště. Paměť DRAM i paměť cache jsou volatilní paměti, které po vypnutí napájení ztrácejí svůj obsah. Paměť DRAM je nainstalována na základní desce a procesor k ní přistupuje prostřednictvím sběrnicového připojení.
Paměť DRAM je obvykle přibližně o polovinu rychlejší než paměť cache L1, L2 nebo L3 a je mnohem levnější. Poskytuje rychlejší přístup k datům než paměť flash, pevné disky (HDD) a pásková úložiště. Začala se používat v posledních několika desetiletích, aby poskytla místo pro ukládání často přistupovaných dat na disku a zlepšila tak výkon I/O.
Paměť DRAM se musí obnovovat každých několik milisekund. Paměť cache, která je rovněž typem paměti s náhodným přístupem, se obnovovat nemusí. Je zabudována přímo v procesoru, aby procesoru poskytovala co nejrychlejší přístup k paměťovým místům a zajišťovala nanosekundovou rychlost přístupu k často odkazovaným instrukcím a datům. Paměť SRAM je rychlejší než paměť DRAM, ale protože se jedná o složitější čip, je také dražší na výrobu.
Vyrovnávací paměť vs. virtuální paměť
Počítač má omezené množství paměti DRAM a ještě méně paměti cache. Pokud je spuštěn velký program nebo více programů, je možné, že paměť bude plně využita. Aby se nedostatek fyzické paměti vyrovnal, může operační systém (OS) počítače vytvořit virtuální paměť.
Za tímto účelem operační systém dočasně přenese neaktivní data z paměti DRAM do diskového úložiště. Tento přístup zvětšuje virtuální adresní prostor tím, že využívá aktivní paměť v paměti DRAM a neaktivní paměť v pevných discích k vytvoření souvislých adres, které obsahují jak aplikaci, tak její data. Virtuální paměť umožňuje počítači spouštět větší programy nebo více programů současně a každý program pracuje, jako by měl neomezenou paměť.
Aby bylo možné kopírovat virtuální paměť do fyzické paměti, rozdělí operační systém paměť do souborů stránek nebo odkládacích souborů, které obsahují určitý počet adres. Tyto stránky jsou uloženy na disku, a když jsou potřeba, operační systém je zkopíruje z disku do operační paměti a převede adresu virtuální paměti na fyzickou. O tyto překlady se stará jednotka pro správu paměti (MMU).
Implementace a historie
Mainframy používaly ranou verzi paměti cache, ale technologie, jak ji známe dnes, se začala rozvíjet s nástupem mikropočítačů. U prvních osobních počítačů rostl výkon procesoru mnohem rychleji než výkon paměti a paměť se stala úzkým hrdlem, které zpomalovalo systémy.
V 80. letech 20. století se prosadila myšlenka, že ke zlepšení výkonu levnější a pomalejší hlavní paměti lze použít malé množství dražší a rychlejší paměti SRAM. Zpočátku byla vyrovnávací paměť oddělena od systémového procesoru a nebyla vždy součástí čipové sady. První počítače měly obvykle 16 až 128 KB vyrovnávací paměti.
U procesorů 486 přidala společnost Intel k procesoru 8 KB paměti jako paměť 1. úrovně (L1). V těchto systémech se používalo až 256 KB externí paměti cache 2. úrovně (L2). U procesorů Pentium se externí paměť cache opět zdvojnásobila na 512 KB na nejvyšší úrovni. Rozdělily také interní cache paměť na dvě cache: jednu pro instrukce a druhou pro data.
Procesory založené na mikroarchitektuře Intel P6, uvedené v roce 1995, byly první, které do procesoru začlenily paměť cache L2 a umožnily, aby celá paměť cache systému běžela na stejné taktovací frekvenci jako procesor. Před P6 byla paměť L2 externě připojená k procesoru přístupná s mnohem nižší taktovací rychlostí, než jakou běžel procesor, a značně zpomalovala výkon systému.
Dřívější řadiče paměti cache používaly architekturu zapisovací cache, kdy data zapsaná do cache byla okamžitě aktualizována také v paměti RAM. Tento přístup minimalizoval ztrátu dat, ale také zpomaloval operace. U pozdějších počítačů založených na architektuře 486 byla vyvinuta architektura write-back cache, kde se paměť RAM neaktualizuje okamžitě. Místo toho se data ukládají do mezipaměti a paměť RAM se aktualizuje pouze v určitých intervalech nebo za určitých okolností, kdy data chybí nebo jsou stará.