Hvad er en cache?

Når du anmoder om data fra enhver kilde, er der altid en vis forsinkelse. Ping til webservere måles i millisekunder, lageradgangstiden kan have latenser i mikrosekunderne, mens RAM-latensen måles i CPU clock-cyklusser. Selvfølgelig ville denne slags hastigheder have været utænkelige for blot et par årtier siden, men i nutiden er de aldrig hurtige nok. Adgangshastighed er regelmæssigt en form for flaskehals i ydeevnen. En af måderne dette kan løses på er med caching.

Caching er en proces med at gemme en midlertidig kopi af en ressource på en måde, så den kan tilgås hurtigere, end den normalt kunne være. Der er et stort udvalg af implementeringer både inden for software og hardware. Caches kan fungere som læsecaches, skrivecaches eller begge dele.

Læs caches

I en læst cache bliver data, der tidligere er blevet anmodet om, gemt i en cache for hurtigere adgang. I nogle scenarier kan cachen endda være præventivt indlæst med data, hvilket tillader den første anmodning at blive serveret fra cachen i stedet for blot efterfølgende anmodninger.

Den læsecache, som du højst sandsynligt er bekendt med, er browserens cache. Her gemmer browseren en lokal kopi af de ønskede ressourcer. Det betyder, at hvis og når websiden genindlæses eller en lignende side indlæses, der bruger meget af det samme indhold, kan dette indhold serveres fra cachen i stedet for webserveren. Dette betyder ikke kun, at websiden kan indlæses hurtigere, men det reducerer også belastningen på webserveren og reducerer mængden af ​​data, som brugeren skal downloade, hvilket kan være vigtigt på målte forbindelser.

Selve RAM fungerer også som en læsecache for data på harddisken. I dette tilfælde indlæses data for et kørende program på forhånd i RAM, så CPU'en kan få adgang til det hurtigere. Data fra RAM'en cachelagres derefter yderligere til CPU-cachen, selvom processen for dette er meget mere kompleks, da CPU-cachen måles i megabyte ikke gigabyte.

Skriv caches

En skrivecache er en cache, der kan absorbere data, der skrives til en langsommere enhed. Et almindeligt eksempel på dette ville være SLC-cachen i moderne SSD'er. Denne cache tillader ikke, at data læses hurtigere, men det er meget hurtigere at skrive til, end det er at skrive til den TLC eller QLC flash, der udgør resten af ​​SSD'en. SLC-cachen kan absorbere højhastigheds-skriveoperationer og overfører derefter disse data, så snart det kan, til TLC-flashen, som tilbyder meget bedre lagertæthed, men også er meget langsommere at skrive til. Brug af flashhukommelsen på denne måde optimerer den til både høje skrivehastigheder og høj lagertæthed.

Hybride caches

Der er mange måder at håndtere caches på, som kan give dem mulighed for at fungere som både læse- og skrivecache. Hver af disse metoder håndterer skriveoperationer forskelligt og har fordele og ulemper. De tre muligheder er omskrivning, gennemskrivning og tilbageskrivning. En omskrivningscache springer helt cachen over, når den skriver, gennemskrivningscachen skriver til cachen, men betragter kun handlingen som afsluttet, når den er blevet skrevet til lageret. Tilbageskrivningscachen skriver til cachen og betragter derefter handlingen som afsluttet, idet den stoler på, at cachen overfører den til lageret, hvis det er nødvendigt.

Omskrivning kan være nyttig, hvis du forventer en stor mængde skrivninger, da det minimerer cacheafgang. Det betyder dog, at en operation, der derefter læser nogen af ​​de skrevne data, vil opleve mindst én cache-miss første gang. Gennemskrivningscacher cacherer straks skriveoperationer, hvilket betyder, at resultatet kan serveres fra cachen, første gang der anmodes om det. For at blive betragtet som komplet, skal en skriveoperation også skrive dataene til disken, hvilket tilføjer latens. En tilbageskrivningscache har samme fordel som en gennemskrivning, der gør det muligt at betjene skrevne data straks fra cachen. Det kræver dog ikke skriveoperationer at skrive til disk for at blive betragtet som komplet. Dette reducerer skriveforsinkelsen, men medfører risiko for datatab, hvis cachen er flygtig, og den ikke afslutter at skrive dataene tilbage til lageret, før strømmen går tabt.

Hvordan fjerner man data fra cachen?

En af de begrænsende faktorer ved enhver cache er kapacitet. En stor cache tager lang tid at søge, hvilket negererer en god del af fordelen ved at bruge en cache i første omgang. Hukommelsesteknologier, der bruges til cachelagring, har også en tendens til at være dyrere end den hukommelse, de cachelagrer fra. Hvis dette ikke var tilfældet, er det sandsynligt, at det hukommelsesniveau ville have skiftet hukommelsesteknologier for at forbedre ydeevnen. Begge disse faktorer betyder, at caches har en tendens til at være relativt små, især sammenlignet med det lagermedie, de cache fra. RAM har mindre kapacitet end lager og CPU cache har mindre kapacitet end RAM. SLC-cachen har mindre kapacitet end TLC-hukommelsen.

Alt dette betyder, at det ofte er nødvendigt at cykle data ud af cachen for at frigøre plads til nye data, der skal cachelagres. Der er en række forskellige tilgange til dette. "Mindst hyppigt brugt", foretrækker at fjerne cacheposter, der har det laveste adgangstal. Dette kan være nyttigt til at forudsige, hvilke poster der vil have den mindste effekt på fremtidige cache-misser, men vil også tælle meget nyligt tilføjede poster som havende et lavt antal adgange, hvilket kan føre til cache-afgang.

"Mindst nyligt brugt" foretrækker at fjerne cacheposter, der ikke har været brugt i et stykke tid. Dette forudsætter, at de ikke bliver brugt i øjeblikket, men tager ikke højde for, om de var meget brugt for et stykke tid tilbage. "Senest brugt" foretrækker at fjerne de senest brugte cacheposter, forudsat at de er blevet brugt og ikke skal bruges igen. Den bedste tilgang er generelt en kombination af alle tre, baseret på brugsstatistikker.

Forældet information og sikkerhedsrisici

Den største risiko ved caches er, at den information, de indeholder, kan blive forældet. En cache-indgang betragtes som forældet, når de originale data er blevet opdateret, hvilket efterlader cache-indtastningen forældet. Det er vigtigt regelmæssigt at kontrollere, at den live-kopi, der vises, stadig matcher den cachelagrede kopi.

Specifikt på websteder er det også ekstremt vigtigt at identificere, hvilke data der kan og ikke kan cachelagres. For eksempel er det helt fint, at en stor uforanderlig JavaScript-fil cachelagres. Dette sparer brugeren for at downloade det hver gang, og det kan endda gavne andre brugere, der betjenes af den samme cache. Du kan dog ikke cache sessionsspecifikke data. Forestil dig, hvad der ville ske, hvis du browsede til en beskedapp, mens du var logget ind som dig selv, blot for at finde ud af, at du fik en cachelagret version af en anden brugers beskeder. Heldigvis kan webservere angive, hvilke ressourcer der kan og ikke kan cachelagres, og disse problemer er generelt velkendte, så der er få problemer som dette.

Konklusion

En cache er en del af hukommelsen, der kan gemme nogle nyligt brugte data i en lagringsmetode, der er hurtigere at få adgang til, end det ville være at fuldføre den normale dataadgangsproces igen. En cache er typisk begrænset i kapacitet, hvilket betyder, at den skal smide indgange ud, når den er fuld. Caches er generelt gennemsigtige for brugeren, hvilket betyder, at latency er den eneste indikation på, at resultatet blev serveret via en cache.


Sådan klones en harddisk

Sådan klones en harddisk

I den moderne digitale tidsalder, hvor data er et værdifuldt aktiv, kan kloning af en harddisk på Windows være en afgørende proces for mange. Denne omfattende guide

Sådan repareres driveren WUDFRd kunne ikke indlæses på Windows 10?

Sådan repareres driveren WUDFRd kunne ikke indlæses på Windows 10?

Står du over for fejlmeddelelsen, mens du starter din computer, som siger, at driveren WUDFRd ikke kunne indlæses på din computer?

Sådan rettes NVIDIA GeForce Experience-fejlkode 0x0003

Sådan rettes NVIDIA GeForce Experience-fejlkode 0x0003

Oplever du NVIDIA GeForce-oplevelsesfejlkode 0x0003 på dit skrivebord? Hvis ja, læs bloggen for at finde ud af, hvordan du løser denne fejl hurtigt og nemt.

Hvad er SMPS?

Hvad er SMPS?

Lær, hvad SMPS er og betydningen af ​​forskellige effektivitetsvurderinger, før du vælger en SMPS til din computer.

Hvorfor tænder min Chromebook ikke

Hvorfor tænder min Chromebook ikke

Få svar på spørgsmålet: Hvorfor tænder min Chromebook ikke? I denne nyttige vejledning til Chromebook-brugere.

Sådan rapporteres phishing-svindel til Google

Sådan rapporteres phishing-svindel til Google

Lær, hvordan du rapporterer en svindler til Google for at forhindre dem i at snyde andre med denne vejledning.

Roomba stopper, stikker og drejer rundt – Fix

Roomba stopper, stikker og drejer rundt – Fix

Løs et problem, hvor din Roomba robotstøvsuger stopper, sætter sig fast og bliver ved med at dreje rundt.

Sådan ændres grafikindstillinger på Steam Deck

Sådan ændres grafikindstillinger på Steam Deck

Steam Deck tilbyder en robust og alsidig spiloplevelse lige ved hånden. Dog for at optimere dit spil og sikre det bedst mulige

Hvad er isolationsbaseret sikkerhed?

Hvad er isolationsbaseret sikkerhed?

Ville dykke ned i et emne, der bliver stadig vigtigere i cybersikkerhedens verden: isolationsbaseret sikkerhed. Denne tilgang til

Sådan bruger du Auto Clicker til Chromebook

Sådan bruger du Auto Clicker til Chromebook

I dag skulle du dykke ned i et værktøj, der kan automatisere gentagne klikopgaver på din Chromebook: Auto Clicker. Dette værktøj kan spare dig tid og