Cache [1] [2] [3] [4] eller cache [5] [6] [7] ( eng. cache , fra fransk cacher - "skjul"; udtales [ kæʃ ] - "cache") - mellembuffer med hurtig adgang til den, indeholdende information, der med størst sandsynlighed kan rekvireres. Adgang til data i cachen er hurtigere end at hente de originale data fra langsommere hukommelse eller en fjernkilde, men dens volumen er betydeligt begrænset sammenlignet med kildedatalageret.
Ordet "cache" blev første gang brugt i en computersammenhæng i 1967 , mens man forberedte en artikel til offentliggørelse i IBM Systems Journal . Artiklen omhandlede hukommelsesforbedringer i IBM System/360 model 85 under udvikling . Journalredaktør Lyle Johnson bad om et mere beskrivende udtryk end "high-speed buffer", men på grund af mangel på ideer foreslog han selv ordet "cache". Artiklen blev offentliggjort i begyndelsen af 1968, forfatterne blev præmieret af IBM , deres arbejde blev formidlet og efterfølgende forbedret, og ordet "cache" blev hurtigt et almindeligt begreb i computerlitteratur [8] .
En cache er en hukommelse med en hurtigere adgangshastighed, designet til at fremskynde adgangen til data, der er indeholdt permanent i hukommelsen med en lavere adgangshastighed (i det følgende benævnt "hovedhukommelse"). Caching bruges af CPU'en , harddiske , browsere , webservere , DNS- og WINS - tjenester .
Cachen består af et sæt poster. Hver post er forbundet med et dataelement eller en blok af data (et lille stykke data), som er en kopi af dataelementet i hovedhukommelsen. Hver post har en identifikator , ofte kaldet en tag , der definerer overensstemmelsen mellem dataelementer i cachen og deres modstykker i hovedhukommelsen.
Når en cache-klient (CPU, webbrowser, operativsystem) tilgår data, undersøges cachen først. Hvis der findes en post i cachen med et id, der matcher id'et for det anmodede element, så bruges emnerne i cachen. Sådan en begivenhed kaldes et cache-hit . Hvis en post, der indeholder det anmodede dataelement, ikke findes i cachen, så læses den fra hovedhukommelsen ind i cachen og bliver tilgængelig for efterfølgende adgange. Sådan en sag kaldescache miss . Procentdelen af cachehits, når et resultat er fundet, kaldes hitraten eller cachehitforholdet .
For eksempel tjekker en webbrowser sin lokale cache på disken for en lokal kopi af en webside, der matcher den anmodede URL. I dette eksempel er URL'en identifikatoren, og indholdet af websiden er dataelementerne.
Hvis cachen er begrænset i størrelse, kan det ved en glip blive besluttet at kassere noget indtastning for at frigøre plads. Forskellige eviction - algoritmer bruges til at vælge, hvilken post der skal kasseres .
Når dataelementer i cachen ændres, opdateres de i hovedhukommelsen. Tidsforsinkelsen mellem ændringen af data i cachen og opdateringen af hovedhukommelsen styres af den såkaldte skrivepolitik .
I en skrive - kun cache forårsager hver ændring en synkron opdatering af dataene i hovedhukommelsen.
I en tilbageskrivnings - cache (eller tilbageskrivning ) sker der en opdatering, når et dataelement bliver smidt ud, periodisk eller efter anmodning fra klienten. For at holde styr på ændrede dataelementer gemmer cacheposter et modifikationsflag ( modificeret eller "beskidt" ). En cache-miss med en tilbageskrivning kan kræve to adgange til hovedhukommelsen: den første til at skrive de erstattede data fra cachen, den anden til at læse det nødvendige dataelement.
I tilfælde af at dataene i hovedhukommelsen kan ændres uafhængigt af cachen, kan cacheindgangen blive forældet . Protokoller til kommunikation mellem caches, der opretholder datakonsistens, kaldes cache-kohærensprotokoller .
På grund af stigningen i frekvensen , hvormed processorer arbejder , og stigningen i ydeevnen af RAM-undersystemet ( RAM), er dataoverførselsgrænsefladen blevet flaskehalsen i computersystemet.
Cachehukommelse kan give betydelige ydeevnefordele, når RAM-clockhastigheden er væsentligt lavere end processorens clockhastighed. En række processormodeller har deres egen cache for at minimere adgangstiden til random access memory (RAM), som er langsommere end registre (disse registre og I/O-buffere kan betragtes som cache-niveau nul). Klokkehastigheden for cachehukommelsen er normalt ikke meget mindre end CPU-frekvensen.
Processorer, der understøtter virtuel adressering , inkluderer ofte en lille, hurtig adresseoversættelsesbuffer (TLB). Dens hastighed er vigtig, fordi den bliver pollet ved hver hukommelsesadgang.
Problemet med synkronisering mellem forskellige caches (både én og flere processorer) løses ved cache-kohærens .
Der er tre muligheder for at udveksle information mellem caches på forskellige niveauer, eller, som man siger, cache-arkitekturer: inklusive, eksklusiv og ikke-eksklusiv.
Eksklusiv cachehukommelse antager det unikke ved information, der er placeret på forskellige niveauer af cachen (foretrukket af AMD ).
I ikke-eksklusive caches kan opføre sig som de vil.
Processor cache niveauerCPU-cachen er opdelt i flere niveauer. Det maksimale antal caches er fire. I en universel processor kan antallet af niveauer i øjeblikket være op til tre. Niveau N+1 caches er generelt større og langsommere i adgang og dataoverførsel end niveau N caches.
En af de grundlæggende egenskaber ved cachehukommelse - niveauet af associativitet - afspejler dens logiske segmentering, som er forårsaget af det faktum, at sekventiel opregning af alle cache-linjer på jagt efter de nødvendige data ville kræve snesevis af cyklusser og ville ophæve al gevinsten fra ved hjælp af den indbyggede hukommelse i CPU'en. Derfor er RAM-celler fastkablet til cache-linjer (hver linje kan indeholde data fra et fast sæt adresser), hvilket reducerer søgetiden markant.
Med den samme cachestørrelse vil et skema med en større associativitet være det mindst hurtige, men det mest effektive (efter en fire-tråds implementering vokser stigningen i "specifik effektivitet" pr. tråd kun lidt).
Mange perifere lagerenheder bruger en intern cache til at fremskynde tingene, især harddiske bruger 1MB til 256MB cache ( NCQ / TCQ- modeller bruger det til lagring og forespørgselsbehandling), CD/DVD/BD-diske cacher også læseoplysninger for at fremskynde hentning.
Operativsystemet bruger også en del af RAM'en som cache til diskoperationer (f.eks. til eksterne enheder, der ikke har deres egen cache, inklusive harddiske, flashhukommelse og disketter). Ofte er al gratis (ikke allokeret til processer) RAM tilvejebragt til caching af harddiske.
Brugen af cachelagring af eksterne drev skyldes følgende faktorer:
Når den er læst, giver cachen dig mulighed for at læse blokken én gang, derefter gemme en kopi af blokken i RAM for alle processer og returnere indholdet af blokken "øjeblikkeligt" (sammenlignet med en diskanmodning). Der er en "pre-request"-teknik - i baggrunden læser operativsystemet også de næste par blokke (efter den påkrævede) ind i cachen.
Når du skriver, giver cachen dig mulighed for at gruppere korte poster i større, der behandles mere effektivt af drev, eller for at undgå at skrive mellemliggende ændringer. I dette tilfælde er alle mellemtilstande af blokken synlige for processer fra RAM.
Ekstern lagercache forbedrer systemets ydeevne betydeligt ved at optimere I/O-brug. Fordelen ved teknologien er den gennemsigtige (usynlige for programmer) automatiske optimering af brugen af diskhukommelse, mens logikken i applikationer, der arbejder med filer, forbliver uændret.
Ulempen ved skrive-caching er mængden af tid mellem en skriveanmodning fra et program og den faktiske skrivning af en blok til disk, samt genbestilling af skrivninger, hvilket kan føre til tab af information eller strukturinkonsekvens under et strømsvigt eller et system hænge. Dette problem afbødes af tvungen periodisk synkronisering (skrivning af ændrede cachelinjer) og filsystemjournalføring.
Ved læsning af data giver cachehukommelsen en klar ydelsesforstærkning. Når du skriver data, kan gevinster kun opnås på bekostning af reduceret pålidelighed. Derfor kan forskellige applikationer vælge forskellige cache-skrivepolitikker.
Der er to hovedcache-skrivepolitikker - gennemskrivning og tilbageskrivning:
Til at begynde med placeres alle bufferoverskrifter på den frie liste over buffere. Hvis en proces har til hensigt at læse eller ændre en blok, udfører den følgende algoritme:
Processen læser data ind i den modtagne buffer og frigør dem. I tilfælde af modifikation markerer processen bufferen som "snavset", før den frigøres. Når den er frigivet, placeres bufferen i spidsen af den frie liste over buffere.
På denne måde:
Hvis listen over ledige buffere er tom, udføres bufferflush-algoritmen. Udsættelsesalgoritmen påvirker cachens ydeevne betydeligt. Der er følgende algoritmer:
Brugen af en eller anden algoritme afhænger af datacachestrategien. LRU er mest effektiv, hvis dataene er garanteret genbrugt hurtigst muligt. MRU er mest effektiv, hvis dataene garanteres ikke at blive genbrugt snarest. Hvis applikationen eksplicit specificerer en cachestrategi for et datasæt, vil cachen fungere mest effektivt.
RAM-cachen består af følgende elementer:
I processen med at overføre information over et netværk, kan webside-caching bruges - processen med at gemme ofte efterspurgte dokumenter på (mellemliggende) proxyservere eller brugerens maskine for at forhindre deres konstante download fra kildeserveren og reducere trafikken . Dermed rykker informationen tættere på brugeren. Caching styres af HTTP -headere.
Alternativt kan websidecaching udføres ved hjælp af et bestemt websteds CMS for at reducere serverbelastningen under høj trafik. Caching kan foretages både i hukommelsen og i filcachen [9] . Ulempen ved caching er, at ændringer foretaget i én browser muligvis ikke umiddelbart afspejles i en anden browser, der henter data fra cachen.
Mange programmer skriver et sted mellem- eller hjælperesultater af arbejdet, for ikke at beregne dem, hver gang de er nødvendige. Dette fremskynder arbejdet, men kræver yderligere hukommelse (RAM eller disk). Et eksempel på sådan caching er databaseindeksering .
processorteknologier | Digitale|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionssæt arkitektur | |||||||||
maskinord | |||||||||
Parallelisme |
| ||||||||
Implementeringer | |||||||||
Komponenter | |||||||||
Strømstyring |