Cache - teknisk förklaring

En cache är en tillfällig lagringsplats i en dator, där systemet lägger en kopia av ofta använd information för att ha den snabbt tillgänglig. Idén är att det ska gå fortare att hämta den i cachen än på den ordinarie platsen. Hanteringen av cachen är helt automatisk. Det enda användaren märker är att datorn arbetar snabbare än den skulle göra utan cache. Cachetekniken rymmer många djupa tekniska problem och lösningar, varför förklaringarna nedan kan kräva viss kunskap om en dators uppbyggnad.

Varför ligger inte all information i cache hela tiden? Då skulle man ju få maximal snabbhet! En cache har begränsad storlek eftersom den är byggd med snabbare och därför dyrare hårdvara än den ordinarie lagringsplatsen. Det är dels en fråga om pris, dels en fråga om teknik för snabb åtkomst av önskad information. (Det går fortare att hitta i en mindre informationsmängd.)

Handlar det alltså om mellanlagring av information? Nej, det rör sig inte om mellanlagring. Om man mellanlagrade, skulle det slöa ned maskinen i stället för att snabba upp den. Vitsen med cachetekniken är att man (första gången) hämtar data på den ordinarie platsen och samtidigt gör en kopia som man lägger i cachen. Därefter använder man kopian. Motsvarande gäller vid skrivning. Man skriver ny information i cachen. I vissa tekniska lösningar skrivs informationen samtidigt på den ordinarie platsen (eng. write-through), men det finns andra lösningar, där skrivningen görs senare.

Vad är det för skillnad på en cache och en databuffert? Skillnaden kan vara subtil: I en cache skriver och läser man som om den vore den ordinarie lagringsplatsen. En buffert är en plats dit man snabbt skyfflar data för senare vidarebefordran.

Det stora cacheproblemet

Kruxet med cachetekniken är att i förväg kopiera just den information till cachen som strax kommer att behövas. Ett annat krux är att cachen snabbt blir full, och att man då måste frigöra rätt delar av cachen genom att kopiera information, som inte strax kommer att refereras, till huvudlagringsplatsen. Detta kräver i princip att man i varje ögonblick kan förutsäga vilka data som kommer att behövas härnäst, en till sin natur olösbar uppgift. När det gäller t.ex. primärminnescache finns dock vissa fakta som underlättar predikteringen: Maskininstruktioner utförs oftast i den ordning de ligger i minnet. (Undantagen är hopp och proceduranrop.) Eftersom repetitionsslingor är vanliga i program finns alltid en viss sannolikhet för att refererad information (instruktioner och data) strax kommer att refereras på nytt. Många bearbetningar görs av data som är lagrade i följd, t.ex. vektorer och textsträngar.

Olika typer av cache

Det finns dels cache på olika nivåer i datorn, dels olika slag av cacheteknik. Exempel på cache:

primärminnescache
Ett begränsat minne som befinner sig nära CPU:n. Hos en mikroprocessor kan cachen sitta i själva processorkretsen. Cachen sitter normalt på (minnes)bussen men har dessutom en egen (snabbare) dataväg till CPU:n.
diskcache
En del av primärminnet, som avdelas för att innehålla kopior av sektorer på disken. Om program som skriver och läser på disk i stället skriver och läser i primärminnet, går det mycket fortare. Den fysiska överföringen mellan diskcachen och disken sköts av operativsystemet.
nätverkscache
Data som finns i ett nätverk, t.ex. Internet, tar förhållandevis lång tid att hämta. Därför kopieras den till filer på disk, där den blir snabbare tillgänglig.

Källa/författare: Roger Hansson, Svenska datatermgruppen <datatermgruppen.se>

Senast ändrad 25 augusti 2000