Cache [1] [2] [3] [4] nebo cache [5] [6] [7] ( angl. cache , z francouzštiny cacher - "skrýt"; vyslovováno [ kæʃ ] - "cache") - mezipaměť s rychlý přístup k němu, obsahující informace, které lze s největší pravděpodobností vyžádat. Přístup k datům v mezipaměti je rychlejší než načítání původních dat z pomalejší paměti nebo vzdáleného zdroje, ale její objem je ve srovnání se zdrojovým úložištěm dat výrazně omezen.
Slovo „cache“ bylo poprvé použito v počítačovém kontextu v roce 1967 při přípravě článku pro publikaci v IBM Systems Journal . Článek se zabýval vylepšeními paměti ve vývoji IBM System/360 model 85 . Redaktor časopisu Lyle Johnson požádal o popisnější termín než „vysokorychlostní vyrovnávací paměť“, ale kvůli nedostatku nápadů sám navrhl slovo „cache“. Článek vyšel počátkem roku 1968, autoři byli oceněni IBM , jejich práce byla šířena a následně zdokonalována a slovo „cache“ se brzy stalo běžným pojmem v počítačové literatuře [8] .
Cache je paměť s vyšší přístupovou rychlostí, určená k urychlení přístupu k datům trvale obsaženým v paměti s nižší přístupovou rychlostí (dále jen „hlavní paměť“). Ukládání do mezipaměti využívá CPU , pevné disky , prohlížeče , webové servery , služby DNS a WINS .
Cache se skládá ze sady záznamů. Každý záznam je spojen s datovým prvkem nebo blokem dat (malá část dat), která je kopií datového prvku v hlavní paměti. Každý záznam má identifikátor , často nazývaný tag , který definuje shodu mezi datovými položkami v mezipaměti a jejich protějšky v hlavní paměti.
Když klient mezipaměti (CPU, webový prohlížeč, operační systém) přistupuje k datům, je nejprve prozkoumána mezipaměť. Pokud je v mezipaměti nalezen záznam s ID, které odpovídá ID požadované položky, použijí se položky v mezipaměti. Taková událost se nazývá cache hit . Pokud záznam obsahující požadovaný datový prvek není nalezen v mezipaměti, je načten z hlavní paměti do mezipaměti a stane se dostupným pro následující přístupy. Takový případ se nazývácache miss . Procento přístupů do mezipaměti, když je nalezen výsledek, se nazývá četnost zásahů nebo poměr přístupů do mezipaměti .
Webový prohlížeč například zkontroluje místní mezipaměť na disku, zda neobsahuje místní kopii webové stránky, která odpovídá požadované adrese URL. V tomto příkladu je URL identifikátor a obsah webové stránky jsou datové prvky.
Pokud je velikost mezipaměti omezená, může být rozhodnuto zahodit nějaký záznam, aby se uvolnilo místo. K výběru, který záznam se má vyřadit, se používají různé algoritmy vyklizení .
Když jsou datové položky v mezipaměti změněny, jsou aktualizovány v hlavní paměti. Časová prodleva mezi úpravou dat v mezipaměti a aktualizací hlavní paměti je řízena tzv. zásadou zápisu .
V mezipaměti pouze pro zápis každá změna způsobí synchronní aktualizaci dat v hlavní paměti.
V mezipaměti se zpětným zápisem (nebo zpětným zápisem) dojde k aktualizaci , když je datový prvek vyřazen, pravidelně nebo na žádost klienta. Chcete-li sledovat změněné datové položky, položky mezipaměti ukládají příznak modifikace ( modified nebo "nečistý" ). Chybějící vyrovnávací paměť se zpětným zápisem může vyžadovat dva přístupy do hlavní paměti: první pro zápis nahrazených dat z vyrovnávací paměti, druhý pro čtení požadované datové položky.
V případě, že data v hlavní paměti lze upravit nezávisle na mezipaměti, může se stát, že položka mezipaměti bude zastaralá . Protokoly pro komunikaci mezi mezipamětí, které udržují konzistenci dat, se nazývají protokoly koherence mezipaměti .
Kvůli zvýšení frekvence , na které procesory pracují , a zvýšení výkonu podsystému RAM ( RAM), se rozhraní přenosu dat stalo úzkým hrdlem výpočetního systému.
Mezipaměť může poskytnout významné výhody v oblasti výkonu, když je frekvence RAM výrazně nižší než frekvence procesoru. Řada modelů procesorů má vlastní mezipaměť, aby se minimalizovala doba přístupu do paměti RAM (random access memory), která je pomalejší než registry (tyto registry a I/O buffery lze považovat za úroveň mezipaměti nula). Taktovací frekvence pro vyrovnávací paměť obvykle není o mnoho nižší než frekvence CPU.
Procesory, které podporují virtuální adresování, často obsahují malou vyrovnávací paměť rychlého překladu adres (TLB). Jeho rychlost je důležitá, protože je dotazován při každém přístupu do paměti.
Problém synchronizace mezi různými cache (jednomu i více procesory) řeší koherence cache .
Existují tři možnosti výměny informací mezi cachemi různých úrovní, nebo, jak se říká, architekturami cache: inkluzivní, exkluzivní a neexkluzivní.
Exkluzivní mezipaměť předpokládá jedinečnost informací umístěných v různých úrovních mezipaměti (upřednostňuje AMD ).
V neexkluzivních keších se mohou chovat, jak chtějí.
Úrovně mezipaměti procesoruCache CPU je rozdělena do několika úrovní. Maximální počet keší jsou čtyři. V univerzálním procesoru může být počet úrovní aktuálně až tři. Mezipaměti úrovně N+1 jsou obecně větší a pomalejší v přístupu a přenosu dat než mezipaměti úrovně N.
Jedna ze základních charakteristik cache paměti – úroveň asociativnosti – odráží její logickou segmentaci, která je způsobena tím, že sekvenční výčet všech řádků cache při hledání potřebných dat by vyžadoval desítky cyklů a negoval by veškerý zisk z vyrovnávací paměti. pomocí paměti zabudované v CPU. Proto jsou buňky RAM napevno propojeny s linkami cache (každý řádek může obsahovat data z pevné sady adres), což výrazně zkracuje dobu hledání.
Se stejnou velikostí mezipaměti bude schéma s větší asociativitou nejméně rychlé, ale nejúčinnější (po čtyřvláknové implementaci nárůst „specifické účinnosti“ na vlákno roste jen málo).
Mnoho periferních zařízení používá vnitřní mezipaměť pro urychlení věcí, zejména pevné disky používají mezipaměť 1 MB až 256 MB ( modely NCQ / TCQ ji používají pro ukládání a zpracování dotazů), disky CD/DVD/BD také urychlují čtení informací. vyhledávání.
Operační systém také využívá část paměti RAM jako mezipaměť pro diskové operace (například pro externí zařízení, která nemají vlastní mezipaměť, včetně pevných disků, flash paměti a disket). Často je veškerá volná paměť RAM (nepřidělená procesům) k dispozici pro ukládání pevných disků do mezipaměti.
Použití mezipaměti externích disků je způsobeno následujícími faktory:
Při čtení mezipaměť umožňuje přečíst blok jednou, poté uložit jednu kopii bloku do RAM pro všechny procesy a vrátit obsah bloku "okamžitě" (oproti požadavku na disk). Existuje technika „pre-request“ – operační systém na pozadí načte do mezipaměti i několik dalších bloků (po požadovaném).
Při zápisu mezipaměť umožňuje seskupovat krátké záznamy do větších, které jsou efektivněji zpracovávány jednotkami, nebo se vyhnout zápisu mezilehlých úprav. V tomto případě jsou všechny mezistavy bloku viditelné pro procesy z RAM.
Externí ukládání do mezipaměti výrazně zlepšuje výkon systému optimalizací využití I/O. Výhodou technologie je transparentní (pro programy neviditelná) automatická optimalizace využití diskové paměti, přičemž logika aplikací pracujících se soubory zůstává nezměněna.
Nevýhodou ukládání do mezipaměti je doba mezi požadavkem na zápis z programu a skutečným zápisem bloku na disk, stejně jako změna pořadí zápisů, což může vést ke ztrátě informací nebo nekonzistentnostem struktury během výpadku napájení nebo systému. pověsit. Tento problém je zmírněn vynucenou periodickou synchronizací (zápis změněných řádků mezipaměti) a žurnálováním systému souborů.
Při čtení dat poskytuje mezipaměť jasné zvýšení výkonu. Při zápisu dat lze zisky získat pouze za cenu snížené spolehlivosti. Různé aplikace si proto mohou vybrat různé zásady zápisu do mezipaměti.
Existují dvě hlavní zásady zápisu do mezipaměti – propisování a zpětný zápis:
Zpočátku jsou všechny hlavičky bufferů umístěny na volném seznamu bufferů. Pokud má proces v úmyslu přečíst nebo upravit blok, provede následující algoritmus:
Proces načte data do přijaté vyrovnávací paměti a uvolní ji. V případě modifikace proces označí vyrovnávací paměť jako „špinavou“, než ji uvolní. Po uvolnění se vyrovnávací paměť umístí na začátek volného seznamu vyrovnávacích pamětí.
Takto:
Pokud je seznam volných vyrovnávacích pamětí prázdný, provede se algoritmus vyprázdnění vyrovnávací paměti. Algoritmus vyklizení výrazně ovlivňuje výkon mezipaměti. Existují následující algoritmy:
Použití jednoho nebo druhého algoritmu závisí na strategii ukládání dat do mezipaměti. LRU je nejúčinnější, pokud je zaručeno, že data budou znovu použita co nejdříve. MRU je nejúčinnější, pokud je zaručeno, že data nebudou v dohledné době znovu použita. Pokud aplikace explicitně specifikuje strategii ukládání do mezipaměti pro nějakou sadu dat, bude mezipaměť fungovat nejefektivněji.
Mezipaměť RAM se skládá z následujících prvků:
V procesu přenosu informací po síti lze použít cachování webových stránek - proces ukládání často požadovaných dokumentů na (zprostředkující) proxy servery nebo na počítač uživatele, aby se zabránilo jejich neustálému stahování ze zdrojového serveru a snížil se provoz . Informace se tak posouvají blíže k uživateli. Ukládání do mezipaměti je řízeno HTTP hlavičkami.
Alternativně lze ukládání webových stránek do mezipaměti provést pomocí CMS konkrétního webu, aby se snížilo zatížení serveru při vysokém provozu. Ukládání do mezipaměti lze provádět jak v paměti, tak v mezipaměti souborů [9] . Nevýhodou ukládání do mezipaměti je, že změny provedené v jednom prohlížeči se nemusí okamžitě projevit v jiném prohlížeči, který načítá data z mezipaměti.
Mnoho programů někam zapisuje mezivýsledky nebo pomocné výsledky práce, aby je nepočítaly pokaždé, když jsou potřeba. To urychluje práci, ale vyžaduje další paměť (RAM nebo disk). Příkladem takového ukládání do mezipaměti je indexování databáze .
procesorů | Technologie digitálních|||||||||
---|---|---|---|---|---|---|---|---|---|
Architektura | |||||||||
Architektura instrukční sady | |||||||||
strojové slovo | |||||||||
Rovnoběžnost |
| ||||||||
Implementace | |||||||||
Komponenty | |||||||||
Řízení spotřeby |