Cache [1] [2] [3] [4] eller cache [5] [6] [7] ( eng. cache , från franska cacher - "gömma"; uttalas [ kæʃ ] - "cache") - mellanbuffert med snabb tillgång till den, innehållande information som med största sannolikhet kan begäras. Att komma åt data i cachen är snabbare än att hämta originaldata från ett långsammare minne eller en fjärrkälla, men dess volym är avsevärt begränsad jämfört med källdatalagret.
Ordet "cache" användes först i datorsammanhang 1967 när man förberedde en artikel för publicering i IBM Systems Journal . Artikeln behandlade minnesförbättringar i IBM System/360 modell 85 under utveckling . Tidskriftsredaktören Lyle Johnson bad om en mer beskrivande term än "höghastighetsbuffert", men på grund av brist på idéer föreslog han själv ordet "cache". Artikeln publicerades i början av 1968, författarna belönades av IBM , deras arbete spreds och förbättrades därefter, och ordet "cache" blev snart en vanlig term i datorlitteratur [8] .
En cache är ett minne med en snabbare åtkomsthastighet, utformat för att påskynda åtkomst till data som finns permanent i minnet med en lägre åtkomsthastighet (nedan kallat "huvudminne"). Cachning används av CPU , hårddiskar , webbläsare , webbservrar , DNS- och WINS - tjänster .
Cachen består av en uppsättning poster. Varje post är associerad med ett dataelement eller datablock (en liten bit data), som är en kopia av dataelementet i huvudminnet. Varje post har en identifierare , ofta kallad en tagg , som definierar överensstämmelsen mellan dataobjekt i cachen och deras motsvarigheter i huvudminnet.
När en cacheklient (CPU, webbläsare, operativsystem) kommer åt data, undersöks cachen först. Om en post hittas i cachen med ett ID som matchar det begärda objektets ID, används objekten i cachen. En sådan händelse kallas en cacheträff . Om en post som innehåller det begärda dataelementet inte hittas i cachen, läses den från huvudminnet in i cachen och blir tillgänglig för efterföljande åtkomster. Ett sådant fall kallascache miss . Procentandelen cacheträffar när ett resultat hittas kallas träfffrekvensen eller cacheträffförhållandet .
Till exempel kontrollerar en webbläsare sin lokala cache på disken efter en lokal kopia av en webbsida som matchar den begärda URL:en. I det här exemplet är URL:en identifieraren och innehållet på webbsidan är dataelementen.
Om cachen är begränsad i storlek kan det vid missar beslutas att kassera en del post för att frigöra utrymme. Olika eviction- algoritmer används för att välja vilken post som ska kasseras .
När dataobjekt i cachen ändras uppdateras de i huvudminnet. Tidsfördröjningen mellan ändringen av data i cachen och uppdateringen av huvudminnet styrs av den så kallade skrivpolicyn .
I en endast skrivcache orsakar varje ändring en synkron uppdatering av data i huvudminnet.
I en återskrivningscache (eller återskrivningscache ) sker en uppdatering när ett dataelement vräks, med jämna mellanrum eller på begäran av klienten. För att hålla reda på modifierade dataobjekt lagrar cacheposter en modifieringsflagga ( modifierad eller "smutsig" ). En cachemiss med en återskrivning kan kräva två åtkomster till huvudminnet: den första för att skriva ersatt data från cachen, den andra för att läsa det nödvändiga dataelementet.
I händelse av att data i huvudminnet kan modifieras oberoende av cachen, kan cache-posten bli inaktuell . Protokoll för kommunikation mellan cachar som upprätthåller datakonsistens kallas cachekoherensprotokoll .
På grund av ökningen av frekvensen vid vilken processorer arbetar , och ökningen av prestanda för RAM-undersystemet ( RAM), har dataöverföringsgränssnittet blivit flaskhalsen i datorsystemet.
Cacheminne kan ge betydande prestandafördelar när RAM-klockhastigheten är betydligt lägre än processorns klockhastighet. Ett antal processormodeller har sin egen cache för att minimera åtkomsttiden till RAM-minnet (Random Access Memory), vilket är långsammare än register (dessa register och I/O-buffertar kan betraktas som cachenivå noll). Klockhastigheten för cacheminnet är vanligtvis inte mycket mindre än CPU-frekvensen.
Processorer som stöder virtuell adressering inkluderar ofta en liten, snabb adressöversättningsbuffert (TLB). Dess hastighet är viktig eftersom den pollas vid varje minnesåtkomst.
Problemet med synkronisering mellan olika cacher (både en och flera processorer) löses genom cachekoherens .
Det finns tre alternativ för att utbyta information mellan cacher på olika nivåer, eller, som man säger, cachearkitekturer: inkluderande, exklusivt och icke-exklusivt.
Exklusivt cacheminne förutsätter unikheten hos information som finns på olika nivåer av cacheminnet (föredraget av AMD ).
I icke-exklusiva cacher kan bete sig som de vill.
Processorns cachenivåerCPU-cachen är uppdelad i flera nivåer. Det maximala antalet cacher är fyra. I en universell processor kan antalet nivåer för närvarande vara upp till tre. Nivå N+1-cacher är i allmänhet större och långsammare i åtkomst och dataöverföring än nivå N-cacher.
En av de grundläggande egenskaperna hos cacheminnet - nivån av associativitet - återspeglar dess logiska segmentering, som orsakas av det faktum att sekventiell uppräkning av alla cache-rader på jakt efter nödvändig data skulle kräva tiotals cykler och skulle förneka all vinst från använder minnet inbyggt i processorn. Därför är RAM-celler hårdkopplade till cache-linjer (varje rad kan innehålla data från en fast uppsättning adresser), vilket avsevärt minskar söktiden.
Med samma cachestorlek kommer ett schema med större associativitet att vara det minst snabba, men det mest effektiva (efter en fyratrådsimplementering växer ökningen i "specifik effektivitet" per tråd lite).
Många kringutrustning för lagring använder en intern cache för att snabba upp saker och ting, i synnerhet hårddiskar använder 1MB till 256MB cache ( NCQ / TCQ- modeller använder det för lagring och frågebehandling), CD/DVD/BD-diskar cachelagrar också information för att snabba upp hämtning.
Operativsystemet använder också en del av RAM-minnet som cache för diskoperationer (till exempel för externa enheter som inte har sin egen cache, inklusive hårddiskar, flashminne och disketter). Ofta tillhandahålls allt gratis (ej allokerat till processer) RAM-minne för cachelagring av hårddiskar.
Användningen av cachelagring av externa enheter beror på följande faktorer:
När det är läst låter cachen dig läsa blocket en gång, sedan lagra en kopia av blocket i RAM för alla processer och returnera innehållet i blocket "omedelbart" (jämfört med en diskbegäran). Det finns en "pre-request"-teknik - i bakgrunden läser operativsystemet även in de närmaste blocken (efter det nödvändiga) i cachen.
När du skriver låter cachen dig gruppera korta poster till större som bearbetas mer effektivt av enheter, eller för att undvika att skriva mellanliggande ändringar. I detta fall är alla mellanliggande tillstånd i blocket synliga för processer från RAM.
Extern lagringscache förbättrar systemets prestanda avsevärt genom att optimera I/O-användningen. Fördelen med tekniken är den transparenta (osynliga för program) automatiska optimeringen av användningen av diskminne, medan logiken för applikationer som arbetar med filer förblir oförändrad.
Nackdelen med skrivcachelagring är hur lång tid det tar mellan en skrivbegäran från ett program och den faktiska skrivningen av ett block till disk, samt omordning av skrivningar, vilket kan leda till förlust av information eller strukturinkonsekvenser under ett strömavbrott eller system hänga. Detta problem mildras av påtvingad periodisk synkronisering (skriva ändrade cache-rader) och filsystemsjournalföring.
Vid läsning av data ger cacheminnet en tydlig prestandavinst. Vid skrivning av data kan vinster endast erhållas till bekostnad av minskad tillförlitlighet. Därför kan olika applikationer välja olika cache-skrivpolicyer.
Det finns två huvudsakliga cache-skrivpolicyer - genomskrivning och återskrivning:
Inledningsvis placeras alla bufferthuvuden på den fria listan över buffertar. Om en process avser att läsa eller modifiera ett block, kör den följande algoritm:
Processen läser in data i den mottagna bufferten och frigör den. Vid modifiering markerar processen bufferten som "smutsig" innan den frigörs. När den är fri placeras bufferten i spetsen för den fria listan över buffertar.
På det här sättet:
Om listan över lediga buffertar är tom, exekveras buffertspolningsalgoritmen. Vräkningsalgoritmen påverkar cacheprestandan avsevärt. Det finns följande algoritmer:
Användningen av en eller annan algoritm beror på datacachestrategin. LRU är mest effektiv om uppgifterna garanteras återanvändas så snart som möjligt. MRU är mest effektivt om uppgifterna garanterat inte kommer att återanvändas inom kort. Om applikationen uttryckligen anger en cachningsstrategi för någon uppsättning data, kommer cachen att fungera mest effektivt.
RAM-cachen består av följande element:
I processen att överföra information över ett nätverk kan webbsides cachning användas - processen att lagra ofta begärda dokument på (mellanliggande) proxyservrar eller användarens maskin, för att förhindra att de ständigt laddas ner från källservern och minska trafiken . Därmed flyttas informationen närmare användaren. Caching styrs av HTTP - rubriker.
Alternativt kan webbsidans cachelagring göras med hjälp av CMS för en viss webbplats för att minska serverbelastningen under hög trafik. Cachning kan göras både i minnet och i filcachen [9] . Nackdelen med cachelagring är att ändringar som görs i en webbläsare kanske inte omedelbart återspeglas i en annan webbläsare som hämtar data från cachen.
Många program skriver någonstans mellan- eller hjälpresultat av arbetet, för att inte beräkna dem varje gång de behövs. Detta påskyndar arbetet, men kräver ytterligare minne (RAM eller disk). Ett exempel på sådan cachning är databasindexering .
Processor Technologies | Digital|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionsuppsättning arkitektur | |||||||||
maskinord | |||||||||
Parallellism |
| ||||||||
Genomföranden | |||||||||
Komponenter | |||||||||
Energihantering |