Predpomnilnik (računalništvo)

Predpomnjenje je izraz, ki se uporablja v računalništvu. Ideja predpomnilnika (izgovori se "cash" /ˈkæʃ/ KASH ) je zelo preprosta: Pogosto je pridobivanje rezultata za izračun zelo zamudno, zato je shranjevanje rezultata na splošno dobra zamisel. Uporabljata se dve vrsti pomnilniških medijev: Eden je običajno precej velik, dostop do njega pa je "počasen"; do drugega je mogoče dostopati veliko hitreje, vendar je običajno majhen. Osnovna zamisel predpomnilnika je, da za kopije podatkov uporabimo medij, do katerega je dostop hiter. Med kopijo in izvirnikom ni razlike. Dostop do izvirnih podatkov lahko traja dolgo ali pa je drag (na primer: rezultati zahtevnega problema, katerega rešitev traja dolgo). Zato je veliko "ceneje" preprosto uporabiti kopijo podatkov iz predpomnilnika. Povedano drugače, predpomnilnik je začasno območje shranjevanja s kopijami podatkov, ki se pogosto uporabljajo. Če je kopija podatkov v tem predpomnilniku, je hitreje uporabiti to kopijo, kot pa ponovno pridobiti ali izračunati izvirne podatke. Tako je povprečni čas, potreben za dostop do podatkov, krajši. Vnos nove vrednosti v predpomnilnik pogosto pomeni, da je treba zamenjati starejšo vrednost. Obstajajo različne zamisli (običajno imenovane "strategije"), kako izbrati vrednost, ki jo je treba zamenjati.

Predpomnilnik je zelo podoben predpomnilniku. Razlikuje se po tem, da odjemalec, ki dostopa do podatkov v predpomnilniku, ve, da obstaja predpomnilnik; predpomnilnik upravlja aplikacija. Pri predpomnilniku odjemalcu, ki dostopa do podatkov, ni treba vedeti, da obstaja predpomnilnik.

Tipične računalniške aplikacije dostopajo do podatkov na zelo podobne načine. Recimo, da so podatki strukturirani v "bloke", do katerih je mogoče dostopati posamično. Ko aplikacija dostopa do bloka, je zelo verjetno, da bo dostopala tudi do bloka, ki je "blizu" prvotnemu bloku (ali se nanj sklicevala). To je znano kot lokalnost sklicevanja. Obstajajo različne vrste te "lokalnosti". Lokalnost reference je eden od razlogov, zakaj predpomnilniki dobro delujejo na številnih področjih računalništva.

Za dobro delovanje so predpomnilniki majhni v primerjavi s celotno količino podatkov. Večji kot je predpomnilnik, dlje časa traja iskanje vnosa. Večji predpomnilniki so tudi dražji za izgradnjo.

Kako delujejo predpomnilniki

Predpomnilnik je blok pomnilnika za shranjevanje podatkov, ki bodo verjetno ponovno uporabljeni. Predpomnilnik pogosto uporabljata procesor in trdi disk, pa tudi spletni brskalniki in spletni strežniki.

Predpomnilnik je sestavljen iz številnih vnosov, ki se imenujejo bazen. Vsak vnos vsebuje podatek (bit podatkov), ki je kopija podatka na drugem mestu. Predpomnilniki običajno uporabljajo tako imenovano podporno shrambo. V primerjavi s predpomnilnikom je dostop do pomožnih shramb počasen ali drag. Diskovni predpomnilnik na primer uporablja trdi disk kot podporno shrambo. Vsakemu vnosu je priložena tudi majhna informacija, ki se imenuje oznaka. Ta oznaka se uporablja za iskanje lokacije, kjer so shranjeni izvirni podatki.

Predpomnilniki za branje

Odjemalec (procesor, spletni brskalnik, operacijski sistem), ki želi dostopati do podatka, za katerega verjame, da je v varnostni shrambi, najprej preveri, ali je podatek mogoče najti v predpomnilniku. Če je podatek mogoče najti v predpomnilniku, ga odjemalec lahko uporabi in mu ni treba uporabiti glavnega pomnilnika. To je znano kot zadetek predpomnilnika. Tako lahko na primer program spletnega brskalnika preveri svoj lokalni predpomnilnik na disku, da preveri, ali ima lokalno kopijo vsebine spletne strani na določenem naslovu URL. V tem primeru je URL oznaka, vsebina spletne strani pa podatek.

Druga situacija, ki se lahko zgodi, je, da podatka z oznako ni mogoče najti v predpomnilniku. To je znano kot zamujanje predpomnilnika. Podatek je treba pridobiti iz podporne shrambe. Običajno se kopira v predpomnilnik, tako da ga naslednjič ni več treba pobrati iz podporne shrambe.

Velikost predpomnilnika je omejena. Da bi naredili prostor za vnos, ki prej ni bil v predpomnilniku, bo morda treba iz predpomnilnika izbrisati še en vnos v predpomnilniku. Za iskanje vnosa, ki ga je najbolje izbrisati, se uporabljajo posebna pravila. Ta pravila se običajno imenujejo hevristika. Hevristika, ki se uporablja za iskanje vnosa, se imenuje politika zamenjave. Zelo preprosto pravilo, ki se uporablja, se imenuje najmanj nedavno uporabljeno (ali LRU). Preprosto vzame vnos, ki je bil uporabljen pred najdaljšim časom. Druge hevristike so naštete v algoritmu predpomnilnika.

Predpomnilniki za pisanje

Predpomnilniki se lahko uporabljajo tudi za pisanje podatkov; prednost tega je, da lahko odjemalec nadaljuje z delovanjem, ko je vnos zapisan v predpomnilnik; ni mu treba čakati, da se vnos zapiše v varnostno shrambo.

Vendar pa je treba vnos v nekem trenutku zapisati v varnostno shrambo. Čas, v katerem se to zgodi, nadzoruje politika pisanja.

Pri predpomnilniku s prehodnim zapisovanjem se vsak vnos takoj zapiše v podporno shrambo in hkrati shrani v predpomnilnik.

Druga možnost je, da pišete samo v predpomnilnik, v varnostno shrambo pa pišete pozneje. To je znano kot predpomnilnik za pisanje nazaj (ali pisanje za seboj). Predpomnilnik označi vnose, ki še niso bili zapisani v podporno shrambo; oznaka, ki se uporablja, se pogosto imenuje umazana zastavica. Preden se vnosi izbrišejo iz predpomnilnika, se zapišejo v podporno shrambo. To je znano kot leno pisanje. Za zgrešitev v predpomnilniku z zapisom (ki zahteva zamenjavo bloka z drugim) bosta pogosto potrebna dva dostopa do pomnilnika: eden za pridobitev potrebnega podatka, drugi pa za zapis zamenjanih podatkov iz predpomnilnika v shrambo.

Politika predpomnilnika lahko določa tudi, da je treba določen podatek zapisati v predpomnilnik. Odjemalec je morda vnesel veliko sprememb v podatek v predpomnilniku. Po končanem delu lahko predpomnilniku izrecno sporoči, naj ga zapiše nazaj.

Dodeljevanje brez pisanja je politika predpomnilnika, pri kateri se v predpomnilnik shranjuje samo branje. S tem se izognemo potrebi po predpomnilniku za zapisovanje nazaj ali zapisovanje skozi predpomnilnik. Pisanje se ves čas izvaja v varnostno shrambo.

Odjemalec ni aplikacija, ki spreminja podatke v varnostni shrambi. Če se podatki v podporni shrambi spremenijo, bo kopija v predpomnilniku zastarela. Če odjemalec posodobi podatke v predpomnilniku, bodo kopije teh podatkov v drugih predpomnilnikih postale zastarele. Obstajajo posebni komunikacijski protokoli, ki upraviteljem predpomnilnikov omogočajo, da se med seboj pogovarjajo in tako ohranjajo smiselnost podatkov. Ti so znani kot protokoli za koherenco.

Shema predpomnilnika procesorjaZoom
Shema predpomnilnika procesorja

Izbira vnosa za zamenjavo

Predpomnilnik je majhen in bo večino časa poln ali skoraj poln. Zato je treba ob dodajanju nove vrednosti odstraniti staro vrednost. To izbiranje je mogoče opraviti na različne načine:

  • Prvi vstopi, prvi izstopi: Preprosto zamenjajte vnos, ki je bil v predpomnilnik dodan pred najdaljšim časom.
  • Najmanjkrat uporabljeno: Ko je vnos uporabljen, se posodobi njegov časovni žig/starost.
  • Najmanjkrat uporabljeno: Podobno kot pri FIFO, namesto časovnega žiga uporabite števec, ki se poveča vsakič, ko je vnos uporabljen.
  • Naključno izberite vnos

Zgodovina

Beseda predpomnilnik je bila v računalništvu prvič uporabljena leta 1967, ko je bil pripravljen znanstveni članek za objavo v reviji IBM Systems Journal. Članek je govoril o novi izboljšavi pomnilnika v modelu 85. Model 85 je bil računalnik iz proizvodne linije IBM System/360. Urednik revije Journal je želel boljšo besedo za hitri predpomnilnik, ki je bil uporabljen v članku. Ker ni dobil nobenega predloga, je predlagal predpomnilnik iz francoskega cacher, kar pomeni "skriti". Članek je bil objavljen v začetku leta 1968, IBM pa je avtorje nagradil. Njuno delo je bilo splošno sprejeto in izboljšano. Cache je kmalu postal standardna raba v računalniški literaturi.

Kje se uporabljajo predpomnilniki

Predpomnilniki procesorja

Majhni pomnilniki na procesorskem čipu ali v njegovi bližini so lahko hitrejši od veliko večjega glavnega pomnilnika. Večina procesorjev od osemdesetih let prejšnjega stoletja uporablja enega ali več predpomnilnikov. Sodobni splošni procesorji v osebnih računalnikih jih imajo lahko tudi do pol ducata. Vsak predpomnilnik je lahko specializiran za drug del naloge izvajanja programov.

Diskovni predpomnilniki

Predpomnilnike procesorja običajno v celoti upravlja strojna oprema, druge predpomnilnike pa upravlja različna programska oprema. Operacijski sistem običajno upravlja predpomnilnik strani v glavnem pomnilniku. Uporabniki zunaj računalništva ta predpomnilnik običajno imenujejo virtualni pomnilnik. Upravlja ga jedro operacijskega sistema.

Sodobni trdi diski imajo diskovne predpomnilnike. Včasih jih imenujemo "diskovni predpomnilnik", vendar je to napačno. Glavna funkcija teh predpomnilnikov je urejanje zapisovanja na disk in upravljanje branja. Ponavljajoči se zadetki predpomnilnika so redki, saj je predpomnilnik v primerjavi z velikostjo trdega diska zelo majhen.

Lokalni trdi diski so hitri v primerjavi z drugimi napravami za shranjevanje, kot so oddaljeni strežniki, lokalni tračni pogoni ali optični jukeboxi. Uporaba lokalnih trdih diskov kot predpomnilnikov je glavni koncept hierarhičnega upravljanja shranjevanja.

Spletni predpomnilniki

Spletni brskalniki in spletni posredniški strežniki uporabljajo predpomnilnike za shranjevanje prejšnjih odzivov spletnih strežnikov, na primer spletnih strani. Spletni predpomnilniki zmanjšujejo količino informacij, ki jih je treba prenesti po omrežju. Informacije, ki so bile predhodno shranjene v predpomnilniku, se lahko pogosto ponovno uporabijo. To zmanjša pasovno širino in zahteve spletnega strežnika po obdelavi ter pripomore k boljši odzivnosti uporabnikov spleta.

Sodobni spletni brskalniki uporabljajo vgrajeni spletni predpomnilnik, nekateri ponudniki internetnih storitev ali organizacije pa uporabljajo tudi predpomnilniški posredniški strežnik. To je spletni predpomnilnik, ki si ga delijo vsi uporabniki tega omrežja.

Iskalniki pogosto dajo na voljo tudi spletne strani, ki so jih indeksirali, iz svojega predpomnilnika. Google na primer ob vsakem rezultatu iskanja objavi povezavo "Predpomnilnik". To je uporabno, kadar spletne strani začasno niso dostopne iz spletnega strežnika.

Predpomnjenje z nezanesljivimi omrežji

V nezanesljivih omrežjih (kot je ethernetno omrežje LAN) se pogosto uporablja zapisovanje skozi. Protokol, ki se uporablja za zagotavljanje smiselnosti podatkov v predpomnilniku za pisanje, kadar se uporablja več predpomnilnikov za pisanje, je v takem primeru zelo zapleten.

Na primer, predpomnilniki spletnih strani in predpomnilniki omrežnih datotečnih sistemov na strani odjemalca (kot so predpomnilniki v NFS ali SMB) so običajno namenjeni samo branju ali zapisovanju, da bi omrežni protokol ostal preprost in zanesljiv.

Razlika med medpomnilnikom in predpomnilnikom

Medpomnilnik in predpomnilnik se ne izključujeta; pogosto se uporabljata tudi skupaj. Razlogi za njihovo uporabo so različni. Buffer je mesto v pomnilniku, ki se tradicionalno uporablja, ker navodila procesorja ne morejo neposredno naslavljati podatkov, shranjenih v perifernih napravah. Računalniški pomnilnik se uporablja kot vmesna shramba.

Poleg tega je takšen buffer lahko izvedljiv, kadar se velik blok podatkov sestavlja ali razstavlja (kot to zahteva naprava za shranjevanje) ali kadar se podatki lahko dostavijo v drugačnem vrstnem redu, kot so bili ustvarjeni. Prav tako se celoten predpomnilnik podatkov običajno prenaša zaporedno (na primer na trdi disk), tako da predpomnilnik sam po sebi včasih poveča zmogljivost prenosa. Te prednosti so prisotne tudi, če se podatki, shranjeni v predpomnilnik, enkrat zapišejo v predpomnilnik in enkrat preberejo iz predpomnilnika.

Predpomnilnik poveča tudi zmogljivost prenosa. Del povečanja je tudi posledica možnosti, da se več majhnih prenosov združi v en velik blok. Glavno povečanje zmogljivosti pa nastane, ker obstaja velika verjetnost, da bo isti podatek večkrat prebran iz predpomnilnika ali da bodo zapisani podatki kmalu prebrani. Edini namen predpomnilnikov je zmanjšati število dostopov do osnovnega počasnejšega pomnilnika. Predpomnilnik je običajno tudi abstrakcijska plast, ki je zasnovana tako, da je z vidika sosednjih plasti nevidna. Tako se aplikacije ali odjemalci morda ne zavedajo, da obstaja predpomnilnik.

Vprašanja in odgovori

V: Kaj je predpomnilnik?


O: Predpomnilnik je izraz, ki se uporablja v računalništvu in se nanaša na prakso shranjevanja kopij podatkov, ki se pogosto uporabljajo, da bi do njih dostopali hitreje, kot da bi ponovno poiskali ali izračunali izvirne podatke.

V: Kako deluje predpomnjenje?


O: Predpomnjenje deluje tako, da se uporabljata dve vrsti pomnilniških medijev, eden, ki je običajno precej velik, vendar je dostop do njega počasen, in drugi, do katerega je mogoče dostopati veliko hitreje, vendar je običajno manjši. Ideja predpomnjenja je, da se hitri medij uporabi za shranjevanje kopij podatkov, tako da dostop do izvirnih podatkov traja manj časa ali je cenejši.

V: Kaj je predpomnilnik?


O: Predpomnilnik je podoben predpomnilniku, saj shranjuje kopije podatkov za hitrejši dostop, vendar pri predpomnilniku odjemalec, ki dostopa do podatkov, ve, da obstaja predpomnilnik, in ga upravlja aplikacija, medtem ko pri predpomnilniku odjemalcem ni treba vedeti, da obstaja predpomnilnik.

V: Kaj pomeni lokalnost reference?


O: Lokalnost reference pomeni, da ko aplikacija dostopa do določenih blokov strukturiranih podatkov, bo verjetno dostopala tudi do drugih blokov, ki so blizu tistim, do katerih je prvotno dostopala. To pripomore k dobremu delovanju predpomnilnikov, saj so ti običajno majhni v primerjavi z vsemi razpoložljivimi podatki.

V: Zakaj večji predpomnilniki potrebujejo več časa za iskanje vnosov?


O: Večji predpomnilniki potrebujejo več časa, ker vsebujejo več shranjenih informacij in zato potrebujejo več časa za iskanje. So tudi dražji, saj zahtevajo več virov za shranjevanje.

V: Kako lahko lokalnost pripomore k boljšemu delovanju predpomnilnikov?


O: Lokalnost pripomore k boljšemu delovanju predpomnilnikov, saj bodo aplikacije, ko dostopajo do določenih blokov strukturiranih podatkov, verjetno potrebovale tudi druge bližnje bloke, ki jih lahko hitro pridobijo iz predpomnilnika, namesto da bi jih morale pridobiti od drugod ali jih ponovno izračunati.

AlegsaOnline.com - 2020 / 2023 - License CC3