Gyorsítótár
A Wikipédiából, a szabad lexikonból.
A gyorsítótár vagy cache (ejtsd: „kes”) francia eredetű kifejezés (jelentése: „rejtekhely”, „rejtett”), a számítástechnikában az átmeneti információtároló elemeket jelenti, melyek célja az információ-hozzáférés gyorsítása. A gyorsítás egyszerűen azon alapul, hogy a gyorsítótár gyorsabb tárolóelem, mint a hozzá kapcsolt, gyorsítandó működésű elemek, így ha ezen területek tartalma korábban már bekerült a gyorsítótárba (mert már valaki/valami hivatkozott rá korábban), az ilyen adatokat nem a lassú működésű területről, hanem a gyors cache tárolóból lehet előhívni.
Tartalomjegyzék |
[szerkesztés] Típusai
[szerkesztés] Memória
A hardveres gyorsítótár technikai megvalósítása sokkal drágább, mint a hagyományos memóriaelemek. Ez a magyarázata annak, hogy miért nem dobjuk ki a lassú memóriákat, és használjuk helyettük rögtön csak a gyorsítótárat. Ha ezt tennénk, az nagyon megemelné a számítógépek árát.
Gyorsítótárazásra leginkább akkor van szükség, ha a számítógép két alkatrészének adatkezelési sebessége számottevően (pl. nagyságrendekkel) eltér, és a lassabb alkatrész így a maga szintjére „húzza le” azt az elemet, ami egyébként villámgyorsan működne. Ez a helyzet pl. a CPU és a központi memória esetében: az utóbbi sokkal lomhább, akár 5×-20× is lassabban működhet, mint a CPU. Ilyen esetekben a két lassú alkatrész közé egy cache egységet iktatnak, így a gyors egység először a gyors cacheból próbálja elérni a szükséges adatot, és csak aztán a lassú egységből.
[szerkesztés] Háttértárolók
Nemcsak hardverszinten, például a CPU és a memória közötti gyorsítótárazásról lehet tehát beszélni (bár ez egy igen tipikus példa): a merevlemez is rendelkezhet gyorsítótárral, ami a lassú elérésű lemezről (például átlagosan 40 ms alatt) leolvasható adatokat egy a diskbe épített cache memóriában tárolja (mely például 0.1 ms alatti elérési sebességgel rendelkezik).
[szerkesztés] Internet
Internettel kapcsolatban a cache általában egy olyan (proxy) szerver, ami az internetes tartalmakat (leggyakoribb esetben weblapokat) tárolja átmenetileg. Ennek két fő oka lehet:
- a cache és az azt használó számítógépek között gyors az elérés, míg az internet többi része felé ennél lassabb; ekkor a cache az internetes lapok átlagos elérési idejét gyorsítja;
- a cache és egy webszerver (vagy sok helyi webszerver) közös hálózaton van, és az internetes érdeklődők a cache-en keresztül érik el a webszerver(ek) tartalmát: ekkor a cache tehermentesíti a webszervereket, hogy ne kelljen ugyanazt a változatlan oldalt újra és újra kiszolgálni az ügyfelek felé.
[szerkesztés] Egyéb gyorsítótárak
Szoftverek tekintetében még szintén számtalan helyen beszélhetünk gyorsítótárról és gyorsítótár-funkciókról, ahol maga a gyorsítótár szó nem ritkán már egész szoftvert vagy több szoftver együttműködéseként létrejövő rendszert jelent. Szoftverek által használt gyorsítótárak tipikus példái a webböngészők által használt „virtuális” gyorsítótárak: amikor böngészőnkkel néhány weboldalt „visszalapozunk”, akkor azok a böngészőprogram által a merevlemezen fenntartott területről jönnek elő, ott tárolódnak (például a Microsoft Windows XP operációs rendszerek Internet Explorer böngészői esetében ez a
- gyökérkönyvtár\Documents and Settings\Felhasználónév\Local Settings\Temporary Internet Files
nevű mappa. Ez azért jó, mert egy távoli webhelyről általában sokkal lassabban lehet egy weblapot letölteni, mint a merevlemezről.
[szerkesztés] Technikai adatok
A gyorsítótárakat jellemző főbb adatok az
- elérési idő (tc), mértékegység: ns (nanoszekundum)
- átlagos találati arány (h), mértékegység: % (százalék) azt mutatja meg, hogy ha a központi memória egy területéről adatot hívunk meg, azt az esetek hány százalékában lehet már a gyorsítótárból is meghívni. Természetesen minél nagyobb ez az arány, annál jobban működik a gyorsítótár, hiszen annál többször elegendő az utóbbi gyors működésű egységből az adatot hívni, nem pedig a lassú központi operatív tárból.
- az átlagos elérési idő (ta), mértékegység: ns (nanoszekundum), melyet a

képlettel számolunk, ahol tm a lassabb, gyorsítandó (memória)egység elérési ideje.
- a relatív elérési idő (r), mértékegység: ns (nanoszekundum) azt mutatja, hányszorosa a gyorsítandó egység elérési ideje a gyorsítótár elérési idejének:
- a hatékonysági mutató (gc), mértékegység: % (százalék) azt mutatja, mennyivel növekszik a gyorsítótárazott egység teljesítménye egy gyorsítás nélküli ugyanolyan egységéhez képest; ezt a mutatót a
képlettel számoljuk.
Egy tipikus memória cache jellemzői:
- 64 Mbájt memóriához általában 64 kbájt cache jár;
- a központi memóriánál 20× gyorsabb;
- mérete pedig annak 1/1000-e;
- az átlagos cache találati arány több mint 90%-os.
[szerkesztés] A memória gyorsítótárak csoportosítása a memórialeképzés módja szerint
A központi memóriát gyorsító hardveres cache memóriákat működésük szerint csoportosíthatjuk aszerint, hogy konkrétan hogyan valósítják meg az adatátvitelt és adattárolást.
- A teljesen asszociatív cache (FUC = Fully Associative Cache) esetén a gyorsítandó memóriaegység beolvasott blokkjának tartalma átkerülhet a gyorsítótár bármelyik blokkjának területére;
- A közvetlen (direkt) leképzésű cache (DMC = Direct Mapping Cache) esetén a gyorsítandó memóriaegység beolvasott blokkja a cache meghatározott blokkjára kerülhet csak;
- A csoport-asszociatív cache (SAC = Set Associative Cache) esetén a gyorsítandó memóriaegység egy-egy blokkja a gyorsítótár egy blokkcsoportjára képeződhet. E típus átmenet az előző két típus között, mivel adott blokk csak egy adott blokkcsoportra képeződhet, de ezen belül a blokkcsoport bármely blokkjára, vagyis olyan ez, mintha teljesen asszociatív cache-memóriák halmazával lenne dolgunk, melyek egymáshoz képest azonban közvetlen leképzéssel működnek.
- A szektor leképzésű cache (SMC = Sector Mapping Cache) ritkábban használt megoldás, melynél a beolvasott memóriablokk szintén egy-egy blokkcsoportra képeződik, de az előző esethez képest épp fordítva, a beolvasott blokk tetszőleges blokkcsoportra képeződhet, azon belül azonban csak meghatározott blokkra. Azaz az ilyen gyorsítótár úgy működik, mintha közvetlen leképezésű cache-memóriák halmazával lenne dolgunk, melyek egymáshoz képest azonban asszociatív módon működnek.