Välimuisti

Välimuistitallennus on termi, jota käytetään tietojenkäsittelytieteessä. Välimuistin (lausutaan "cash" /ˈkæʃ/ KASH ) idea on hyvin yksinkertainen: Hyvin usein laskutoimituksen tuloksen saaminen on hyvin aikaa vievää, joten tuloksen tallentaminen on yleensä hyvä idea. Käytetään kahdenlaisia tallennusvälineitä: Toinen on yleensä melko suuri, mutta sen käyttäminen on "hidasta"; toiseen pääsee käsiksi paljon nopeammin, mutta se on yleensä pieni. Välimuistitallennuksen perusajatus on käyttää kopioita tiedosta sillä välineellä, jota on nopea käyttää. Kopion ja alkuperäisen välillä ei ole eroa. Alkuperäisen tiedon käyttäminen voi kestää kauan tai olla kallista (esimerkiksi vaikean ongelman tulokset, joiden ratkaiseminen kestää kauan). Tästä syystä on paljon "halvempaa" yksinkertaisesti käyttää välimuistista kopioitua tietoa. Toisin sanoen välimuisti on väliaikainen tallennusalue, jossa on kopioita usein käytetystä datasta. Kun kopio tiedosta on välimuistissa, on nopeampaa käyttää tätä kopiota kuin hakea tai laskea alkuperäinen tieto uudelleen. Tämä lyhentää tietojen käyttämiseen tarvittavaa keskimääräistä aikaa. Uuden arvon lisääminen välimuistiin tarkoittaa usein sitä, että vanhempi arvo on korvattava. On olemassa erilaisia ideoita (yleensä "strategioita") siitä, miten korvattava arvo valitaan.

Puskuri on hyvin samanlainen kuin välimuisti. Se eroaa siitä, että asiakas, joka käyttää puskurissa olevia tietoja, tietää, että puskuri on olemassa; puskuria hallinnoi sovellus. Välimuistissa dataa käyttävän asiakkaan ei tarvitse tietää, että välimuisti on olemassa.

Tyypilliset tietokonesovellukset käyttävät tietoja hyvin samankaltaisilla tavoilla. Oletetaan, että tiedot on jäsennetty "lohkoihin", joita voidaan käyttää yksitellen. Kun sovellus käyttää lohkoa, se käyttää hyvin todennäköisesti myös lohkoa, joka on "lähellä" alkuperäistä lohkoa (tai viittaa siihen). Tätä kutsutaan viitteiden paikallisuudeksi. Tällaista "paikallisuutta" on erilaisia. Viittauksen paikallisuus on yksi syy siihen, miksi välimuistit toimivat hyvin monilla tietojenkäsittelyn aloilla.

Jotta välimuistit toimisivat hyvin, ne ovat pieniä verrattuna koko tietomäärään. Mitä suurempi välimuisti on, sitä kauemmin merkinnän etsiminen kestää. Suuremmat välimuistit ovat myös kalliimpia rakentaa.

Miten välimuistit toimivat

Välimuisti on muistilohko, johon tallennetaan tietoja, joita todennäköisesti käytetään uudelleen. Suoritin ja kiintolevy käyttävät usein välimuistia, samoin verkkoselaimet ja verkkopalvelimet.

Välimuisti koostuu monista merkinnöistä, joita kutsutaan pooliksi. Jokaisessa merkinnässä on datum (databitti), joka on kopio jossakin toisessa paikassa olevasta datumista. Välimuistit käyttävät yleensä niin sanottua varmuusvarastoa. Tukivarastot ovat hitaita tai kalliita käyttää verrattuna välimuistiin. Levyvälimuisti käyttää esimerkiksi kiintolevyä tukivarastona. Jokaiseen tietueeseen on myös liitetty pieni tieto, jota kutsutaan tunnisteeksi. Tunnisteen avulla etsitään paikka, johon alkuperäinen tieto on tallennettu.

Kätköt lukemista varten

Jos asiakas (suorittimen, verkkoselaimen tai käyttöjärjestelmän) haluaa käyttää dataa, jonka se uskoo olevan varmuusvarastossa, se tarkistaa ensin, löytyykö tieto välimuistista. Jos tieto löytyy välimuistista, asiakas voi käyttää sitä eikä hänen tarvitse käyttää keskusmuistia. Tätä kutsutaan välimuistitapaukseksi. Esimerkiksi verkkoselainohjelma voi tarkistaa paikallisen välimuistinsa levyltä nähdäkseen, onko sillä paikallinen kopio tietyssä URL-osoitteessa olevan verkkosivun sisällöstä. Tässä esimerkissä URL-osoite on tunniste ja verkkosivun sisältö on datum.

Toinen mahdollinen tilanne on se, että tunnisteen sisältävää dataa ei löydy välimuistista. Tämä tunnetaan nimellä cache miss. Tieto on haettava varmuusvarastosta. Yleensä se kopioidaan välimuistiin, jotta sitä ei tarvitse enää seuraavalla kerralla hakea taustavarastosta.

Välimuistissa on vain rajallinen koko. Jotta aiemmin välimuistiin tallentamattomalle merkinnälle saatetaan tehdä tilaa, välimuistista saatetaan joutua poistamaan toinen merkintä. Erityissääntöjä käytetään sen merkinnän löytämiseen, joka olisi parasta poistaa. Näitä sääntöjä kutsutaan yleensä heuristiikoiksi. Merkinnän löytämiseen käytettäviä heuristiikkoja kutsutaan korvauskäytännöksi. Erittäin yksinkertaista sääntöä kutsutaan nimellä Least recently used (LRU). Siinä otetaan yksinkertaisesti merkintä, jota on käytetty pisimpään sitten. Muita heuristiikkoja on lueteltu välimuistialgoritmissa...

Kirjoittamisen välimuistit

Välimuistitietoja voidaan käyttää myös tietojen kirjoittamiseen; tämän etuna on, että asiakas voi jatkaa toimintaansa, kun merkintä on kirjoitettu välimuistiin; sen ei tarvitse odottaa, että merkintä on kirjoitettu varmuusvarastoon.

Merkintä on kuitenkin kirjoitettava varmuuskopiointivarastoon jossain vaiheessa. Ajankohtaa, jolloin tämä tapahtuu, ohjataan kirjoituskäytännöllä.

Läpikirjoittavassa välimuistissa jokainen merkintä kirjoitetaan välittömästi varmuusvarastoon ja tallennetaan myös välimuistiin.

Toinen vaihtoehto on kirjoittaa vain välimuistiin ja kirjoittaa varmuusvarastoon myöhemmin. Tämä tunnetaan nimellä write-back (tai write-behind) -välimuisti. Välimuisti merkitsee merkinnät, joita ei ole vielä kirjoitettu tukivarastoon; käytettyä merkintää kutsutaan usein dirty flagiksi. Ennen kuin merkinnät poistetaan välimuistista, ne kirjoitetaan varmuusvarastoon. Tätä kutsutaan laiskaksi kirjoittamiseksi. Kirjoitusvälimuistissa tapahtuva ohitus (joka edellyttää lohkon korvaamista toisella) vaatii usein kaksi muistikäyttöä: yksi tarvittavan datan saamiseksi ja toinen korvatun datan kirjoittamiseksi välimuistista tukivarastoon.

Välimuistikäytännössä voidaan myös sanoa, että tietty tieto on kirjoitettava välimuistiin. Asiakas on saattanut tehdä useita muutoksia välimuistissa olevaan tietoon. Kun se on valmis, se voi nimenomaisesti käskeä välimuistia kirjoittamaan datan takaisin.

No-write allocation on välimuistikäytäntö, jossa välimuistiin tallennetaan vain lukukertoja. Näin vältetään takaisin- tai läpikirjoitusvälimuistiinpanon tarve. Kirjoituksia tehdään koko ajan varmuusvarastoon.

Asiakas ei ole sovellus, joka muuttaa tietoja varmuusvarastossa. Jos tiedot muuttuvat varmuusvarastossa, välimuistissa oleva kopio on vanhentunut tai vanhentunut. Vaihtoehtoisesti, kun asiakas päivittää tietoja välimuistissa, muissa välimuisteissa olevat kopiot kyseisistä tiedoista muuttuvat vanhentuneiksi. On olemassa erityisiä viestintäprotokollia, joiden avulla välimuistien ylläpitäjät voivat keskustella keskenään, jotta tiedot pysyvät mielekkäinä. Näitä kutsutaan koherenssiprotokolliksi.

Kaavio suorittimen muistin välimuististaZoom
Kaavio suorittimen muistin välimuistista

Korvattavan merkinnän valitseminen

Välimuisti on pieni, ja se on useimmiten täynnä tai lähes täynnä. Kun siis lisätään uusi arvo, vanha arvo on poistettava. Tämä valinta voidaan tehdä eri tavoin:

  • Ensin sisään, sitten ulos: Korvaa yksinkertaisesti merkintä, joka lisättiin välimuistiin pisimpään sitten.
  • Viimeksi käytetty: Kun merkintää käytetään, sen aikaleima/ikä päivitetään.
  • Vähiten käytetty: Aikaleiman sijasta käytetään laskuria, jota kasvatetaan joka kerta, kun merkintää käytetään.
  • Valitse satunnainen merkintä

Historia

Sanaa välimuisti käytettiin tietotekniikassa ensimmäisen kerran vuonna 1967, kun tieteellistä artikkelia valmisteltiin julkaistavaksi IBM Systems Journal -lehdessä. Artikkeli käsitteli Model 85:n muistin uutta parannusta. Model 85 oli IBM System/360 -tuotesarjan tietokone. Journalin toimittaja halusi paremman sanan artikkelissa käytetylle nopealle puskurille. Hän ei saanut vastausta ja ehdotti sanaa cache, joka tulee ranskankielisestä sanasta cacher, joka tarkoittaa "piilottaa". Artikkeli julkaistiin vuoden 1968 alussa, ja IBM palkitsi kirjoittajat. Heidän työhönsä suhtauduttiin laajalti myönteisesti ja sitä parannettiin. Cachesta tuli pian tietokonekirjallisuuden vakiokäytäntö.

Missä välimuisteja käytetään

CPU:n välimuistit

Pienet muistit suorittimen piirillä tai sen läheisyydessä voidaan tehdä nopeammiksi kuin paljon suurempi keskusmuisti. Useimmissa suorittimissa on 1980-luvulta lähtien käytetty yhtä tai useampaa välimuistia. Henkilökohtaisissa tietokoneissa olevissa nykyaikaisissa yleiskäyttöisissä suorittimissa voi olla jopa puoli tusinaa välimuistia. Kukin välimuisti voi olla erikoistunut eri osaan ohjelmien suorittamisesta.

Levyn välimuistit

Suorittimen välimuistit ovat yleensä täysin laitteiston hallinnassa, kun taas muita välimuisteja hallinnoivat erilaiset ohjelmistot. Käyttöjärjestelmä hallinnoi yleensä päämuistissa olevaa sivuvälimuistia. Tietotekniikan ulkopuoliset käyttäjät kutsuvat tätä välimuistia yleensä virtuaalimuistiksi. Sitä hallinnoi käyttöjärjestelmän ydin.

Nykyaikaisissa kiintolevyissä on levypuskurit. Niitä kutsutaan joskus "levyn välimuistiksi", mutta se on väärin. Näiden puskurien päätehtävä on järjestää levyn kirjoitukset ja hallita lukuja. Toistuvat osumat välimuistiin ovat harvinaisia, koska puskuri on hyvin pieni kiintolevyn kokoon nähden.

Paikalliset kiintolevyt ovat nopeita verrattuna muihin tallennuslaitteisiin, kuten etäpalvelimiin, paikallisiin nauha-asemiin tai optisiin jukebokseihin. Paikallisten kiintolevyjen käyttäminen välimuistina on hierarkkisen tallennuksen hallinnan pääkonsepti.

Verkkokätköt

Verkkoselaimet ja välityspalvelimet käyttävät välimuisteja tallentaakseen verkkopalvelimien aiempia vastauksia, kuten verkkosivuja. Verkkovälimuistit vähentävät verkon kautta siirrettävän tiedon määrää. Välimuistiin aiemmin tallennettuja tietoja voidaan usein käyttää uudelleen. Tämä vähentää verkkopalvelimen kaistanleveys- ja käsittelyvaatimuksia ja parantaa verkkokäyttäjien reagointikykyä.

Nykyaikaiset verkkoselaimet käyttävät sisäänrakennettua verkkovälimuistia, mutta jotkin Internet-palveluntarjoajat tai organisaatiot käyttävät myös välimuistipalvelinta. Kyseessä on verkkovälimuisti, joka on jaettu kaikkien kyseisen verkon käyttäjien kesken.

Hakukoneet tarjoavat usein myös indeksoimiaan verkkosivuja saataville välimuististaan. Esimerkiksi Google tarjoaa jokaisen hakutuloksen vieressä "välimuistissa" -linkin. Tämä on hyödyllistä silloin, kun verkkosivut eivät ole tilapäisesti saatavilla verkkopalvelimelta.

Välimuistitallennus epäluotettavien verkkojen kanssa

Läpikirjoitustoiminta on yleistä epäluotettavissa verkoissa (kuten Ethernet LAN). Protokolla, jota käytetään varmistamaan, että kirjoitusvälimuistissa olevat tiedot ovat järkeviä, kun käytetään useita kirjoitusvälimuisteja, on tällaisessa tapauksessa hyvin monimutkainen.

Esimerkiksi verkkosivujen välimuistit ja asiakaspuolen verkkotiedostojärjestelmien välimuistit (kuten NFS:n tai SMB:n välimuistit) ovat tyypillisesti vain luku- tai läpikirjoitettavia, jotta verkkoprotokolla pysyy yksinkertaisena ja luotettavana.

Puskurin ja välimuistin ero

Puskuri ja välimuisti eivät sulje toisiaan pois, vaan niitä käytetään usein myös yhdessä. Syy, miksi niitä käytetään, on kuitenkin erilainen. Puskuri on muistissa oleva paikka, jota käytetään perinteisesti siksi, että CPU-käskyillä ei voida suoraan käsitellä oheislaitteisiin tallennettuja tietoja. Tietokoneen muistia käytetään välivarastona.

Lisäksi tällainen puskuri voi olla käyttökelpoinen, kun suuri tietolohko kootaan tai puretaan (kuten tallennuslaite vaatii) tai kun tiedot voidaan toimittaa eri järjestyksessä kuin missä ne on tuotettu. Lisäksi koko puskurillinen tietoa siirretään yleensä peräkkäin (esimerkiksi kiintolevylle), joten puskurointi itsessään lisää joskus siirtosuorituskykyä. Nämä edut ovat olemassa, vaikka puskuroidut tiedot kirjoitettaisiin puskuriin kerran ja luettaisiin puskurista kerran.

Välimuisti lisää myös siirtosuorituskykyä. Osa lisäyksestä johtuu myös siitä, että useat pienet siirrot yhdistyvät yhdeksi suureksi lohkoksi. Tärkein suorituskyvyn lisäys johtuu kuitenkin siitä, että sama tieto luetaan välimuistista useita kertoja tai että kirjoitettu tieto luetaan pian. Välimuistien ainoa tarkoitus on vähentää käyttökertoja taustalla olevaan hitaampaan tallennustilaan. Välimuisti on yleensä myös abstraktiokerros, joka on suunniteltu näkymättömäksi viereisten kerrosten näkökulmasta. Näin sovellukset tai asiakkaat eivät välttämättä tiedä, että välimuisti on olemassa.

Kysymyksiä ja vastauksia

K: Mitä välimuistitallennus on?


V: Välimuistitallennus on tietojenkäsittelytieteessä käytetty termi, jolla tarkoitetaan käytäntöä, jossa tallennetaan kopioita usein käytetystä datasta, jotta siihen päästään käsiksi nopeammin kuin alkuperäisen datan hakeminen tai laskeminen uudelleen.

K: Miten välimuistitallennus toimii?


V: Välimuistitallennus toimii käyttämällä kahta erilaista tallennusvälinettä, joista toinen on yleensä melko suuri mutta hidas käyttää, ja toinen on paljon nopeampi mutta yleensä pienempi. Välimuistitallennuksen ideana on käyttää nopeaa tallennusvälinettä kopioiden tallentamiseen tiedoista, jotta alkuperäisten tietojen käyttäminen vie vähemmän aikaa tai on edullisempaa.

K: Mikä on puskuri?


V: Puskuri muistuttaa välimuistia siinä mielessä, että siinä tallennetaan kopioita tiedoista nopeampaa käyttöä varten, mutta puskurissa dataa käyttävä asiakas tietää, että puskuri on olemassa ja että sovellus hallinnoi sitä, kun taas välimuistissa asiakkaan ei tarvitse tietää, että välimuisti on olemassa.

Kysymys: Mitä viitteiden paikallisuus tarkoittaa?


V: Viittauksen paikallisuus tarkoittaa sitä, että kun sovellus käyttää tiettyjä strukturoitujen tietojen lohkoja, se käyttää todennäköisesti myös muita lohkoja, jotka ovat lähellä niitä lohkoja, joita alun perin käytettiin. Tämä auttaa välimuistitietoja toimimaan hyvin, koska ne ovat yleensä pieniä verrattuna kaikkeen käytettävissä olevaan dataan.

K: Miksi isompien välimuistien haku kestää kauemmin?


V: Suuremmat välimuistit kestävät kauemmin, koska ne sisältävät enemmän tallennettua tietoa ja vaativat siksi enemmän aikaa hakuihin. Ne ovat myös kalliimpia, koska ne vaativat enemmän resursseja tallennukseen.

Kysymys: Miten paikallisuus voi auttaa tekemään välimuistista toimivamman?


V: Paikallisuuden avulla välimuistit toimivat paremmin, koska kun sovellukset käyttävät tiettyjä strukturoituja tietolohkoja, ne todennäköisesti tarvitsevat myös muita lähellä olevia lohkoja, jotka voidaan hakea nopeasti välimuistista sen sijaan, että ne pitäisi hakea muualta tai laskea uudelleen.

AlegsaOnline.com - 2020 / 2023 - License CC3