Cache

Denna artikel handlar om datatermen, för skattjakt med GPS se Geocaching.

Cache (från franska cacher, "gömma") är en kopia av senast använda data, eller ofta använda data, som temporärt mellanlagras i ett snabbt minne för att kunna återanvändas i framtiden. Syftet är att snabba upp exekveringstiden genom att undvika att man måste hämta samma data på nytt via ett långsamt nätverk eller från ett långsammare minne, eller att man måste utföra tidskrävande beräkningar av samma värden igen. Syftet kan också vara att avlasta en hårt belastad resurs, exempelvis en server eller annan central enhet. 

Ett cacheminne är en hårdvarubaserad cache i form av ett snabbt datorminne (vanligen statiskt minne, SRAM) som bland annat finns i mikroprocessorer för att mellanlagra programkod eller data som nyligen hämtats från eller lagrats i det större men långsammare arbetsminnet (vanligen dynamiskt minne, DRAM).   

Cacheminnen har visat sig vara extremt effektiva i många data- och datortekniska områden eftersom program ofta hämtar data på typiska sätt. Dataåtkomster tenderar ofta att göras "nära" varandra, och samma data används ofta om och om igen.

 Funktion 
En cache består av ett antal datavärden, som vart och ett är en kopia av originalvärden från ett annat långsammare lagringsmedium. Cachedata organiseras i form av inlägg i ett register med någon form av unik adress eller tag (Svenska: "etikett") som för varje cachat datavärde identifierar originalvärdet det kopierats från.

När en cacheanvändare vill komma åt datavärden med en viss tag från lagringsmediet söker den först i cachen. Om ett inlägg i cacheregistret existerar med samma tag används motsvarande datavärde. Denna situation kallas för en cacheträff. Om cacheregistret däremot inte innehåller den sökta tagen inträffar en cachemiss. Det sökta datavärdet måste nu hämtas eller beräknas, varpå det lagras i cacheminnet redo för nästa åtkomst.

Om cache har begränsad lagringskapacitet fylls det så småningom upp med cachade datavärden. Cacheminnet måste radera andra datavärden för att få plats för nya värden. Varje cacheminne har en speciell heuristik för att bestämma vilka datavärden som raderas. En vanlig sådan, least recently used eller LRU'' raderar de äldsta posterna i cacheminnet; eftersom gamla poster inte använts på länge är det mindre troligt att de kommer att användas snart i framtiden.

Tillämpningar

Processorer 
Cache-teknik används på många olika nivåer i systembyggen; en CPU har exempelvis ofta två (L1-cache och L2-cache eller ibland ännu fler) nivåer av cacheminnen, varav det minsta är det snabbaste (och dyraste). Ibland kan processorer använda separata cacheminnen för instruktioner och data, vilka då kallas instruktionscache respektive datacache.

Webbservrar 
Webbservrar använder ofta en cache av sidor genererade i förväg så att dynamiskt genererade sidor inte behöver beräknas varje gång de efterfrågas. Detta kan vara till fördel för dynamiska sidor som belastas hårt eller är kostsamma att beräkna.

Webbläsare 
Ytterligare en cachefunktion finns i webbläsare, som sparar de webbsidor användaren besöker så att de inte behöver hämtas igen vid nästa besök på sidan. De redan hämtade sidorna lagras som ordinarie filer i ett särskilt webbcache på användarens dator.

Diskcache 
Operativsystem eller tilläggsprogram använder sig ibland av diskcache för att öka hastigheten på hårddisk- och CD-läsning och -skrivning.

Hårddiskföretaget Maxor var först med 16MB Cache.

Se även 
 Buffert

Referenser

Externa länkar 
 Teknisk förklaring av 'cache' av Svenska datatermgruppen

Datorteknik