|
Artikel 2
16 september 1998 |
Cache - teknisk förklaring
En cache (se även
ordlisteartikeln om 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.
Upp till Datatermgruppens ingångssida.
Källa/författare: Roger Hansson, Svenska datatermgruppen <dataterm-kontakt@nada.kth.se>
Sidansvarig: Peter Svanberg, Nada, KTH <psv@nada.kth.se>
Senast ändrad 25 augusti 2000
Tekniskt stöd:Nadas webbmästare <webmaster@nada.kth.se>