Talpykla (spartinančioji atmintinė) – apibrėžimas ir veikimo principai

Spartinančioji atmintinė (dažnai vadinama talpykla) – tai kompiuterių moksle naudojama priemonė dažnai reikalingiems duomenims arba skaičiavimo rezultatams laikinai saugoti, kad juos būtų galima pasiekti žymiai greičiau. Terminas plačiau vartojamas informatikos ir programinės įrangos kontekstuose; pavyzdžiui, ši idėja yra aprašyta ir kompiuterių moksle. Angliškas žodis cache tariamas tariama "keš" (/kæʃ/).

Veikimo principas

Pagrindinė talpyklos idėja yra labai paprasta: kadangi prieiga prie tam tikrų duomenų arba jų perskaičiavimas gali užtrukti (arba būti resursų imlus), verta laikyti dažnai reikalingų duomenų kopijas prieinamoje, greitoje laikmenoje. Praktikoje naudojamos dvi laikmenų rūšys: viena paprastai yra didelė, bet lėtesnė, kita – greitesnė, bet mažesnė (laikmenos:). Talpykloje saugomos kopijos neturi skirtis nuo originalo turinio prasmės požiūriu: kai talpykloje yra reikalingas įrašas, sistema paprastai naudoja kopiją, o ne kreipiasi į pirminį, lėtesnį šaltinį.

Talpyklos pasiteisina dėl to, kad programų prieiga prie duomenų nėra visiškai atsitiktinė: kai programa pasiekia vieną duomenų vienetą (pvz., „bloką“), itin tikėtina, kad netrukus bus pasiekti ir „gretimi“ ar kitaip susiję vienetai. Tokį elgesį apibūdina sąvoka nuorodų lokalumas — jis gali būti dviejų pagrindinių tipų:

  • Temporalus lokalumas – jei objektas buvo pasiektas neseniai, jis greičiausiai bus pasiektas dar kartą artimiausiu metu.
  • Spatialus lokalumas – jei pasiekiamas tam tikras vietos adresas, greičiausiai bus pasiekiami ir artimi adresai (pvz., kaimyniniai duomenų blokai).

Talpyklos pagrindiniai rodikliai

Talpyklos veikimą vertina keli pagrindiniai rodikliai:

  • Hit rate (apsilankymų dalis) – dalis užklausų, kurios randamos talpykloje (vadinamos "hit"). Kuo didesnis hit rate, tuo didesnė našumo nauda.
  • Miss rate – užklausų dalis, neaptiktų talpykloje; jos sukelia papildomą delsą (miss penalty), nes reikia kreiptis į lėtesnį saugyklos sluoksnį arba perskaičiuoti rezultatą.
  • Miss penalty – papildomas laikas arba sąnaudos, kurių prireikia apdoroti atsakymą, kai duomenų talpykloje nėra.

Įrašų valdymas ir keitimo strategijos

Kadangi talpyklos paprastai yra daug mažesnės už visą pirminį duomenų rinkinį, nauji įrašai dažnai turi pakeisti senesnius. Yra kelios plačiai naudojamos keitimo (eviction) strategijos:

  • LRU (Least Recently Used) – iš talpyklos pašalinamas mažiausiai neseniai naudotas įrašas.
  • FIFO (First-In, First-Out) – pašalinamas seniausias talpykloje esantis įrašas.
  • Random – atsitiktinai parenkamas įrašas pašalinti; paprasta ir kartais pakankamai efektyvu.
  • LFU (Least Frequently Used) – pašalinamas rečiausiai naudojamas įrašas.

Be to, talpyklos gali tvarkyti rašius skirtingai:

  • Write-through – rašant į talpyklą, įrašas iš karto nukeliauja ir į pagrindinę saugyklą; užtikrina nuoseklumą, bet didina užklausų skaičių į lėtą saugyklą.
  • Write-back (write-behind) – rašymas į pirminį šaltinį atidedamas, atnaujinama tik talpyklos kopija; efektyviau, bet reikia mechanizmo sinchronizacijai ir gedimų atveju – duomenų atkūrimui.

Talpyklos architektūros tipai

Kompiuterių architektūroje talpyklos būna kelių lygių (pvz., L1, L2, L3), skirtingų dydžių ir spartų deriniai. Organizacija taip pat skiriasi:

  • Direct-mapped – kiekvienas pagrindinės atminties blokas gali būti talpinamas tik vienoje konkrečioje talpyklos vietoje; paprasta ir greita, bet gali kilti konfliktų (conflict misses).
  • Set-associative – kiekvienas blokas gali būti talpinamas mažoje rinkinyje (set), sumažinant konfliktus.
  • Fully associative – bet kuris blokas gali būti talpinamas bet kurioje talpyklos vietoje; labiau universalus, tačiau brangus sprendimas.

Panaudojimo sritys

Talpyklos plačiai naudojamos skirtingose srityse:

  • Procesorių lygmenyje – L1/L2/L3 talpyklos, skirtos sumažinti procesoriaus ir pagrindinės atminties laiko skirtumą.
  • Tinkluose ir internete – naršyklės, tarpiniai (proxy) serveriai ir CDN naudoja talpyklas, kad sutrumpintų puslapių ar turinio atsako laiką.
  • Duomenų bazėse – rezultatų ar užklausų planų talpinimas sumažina brangių užklausų skaičių.
  • Failų sistemose ir diskuose – atminties buferiai ir disko talpyklos pagerina įvedimo/išvedimo operacijų našumą.

Talpykla vs buferis

Buferis ir talpykla yra panašios idėjos, tačiau tarpusavyje skiriasi atsakingumo ir matomumo atžvilgiu:

  • Buferis – paprastai valdomas programiškai; klientas žino apie buferį ir tiesiogiai su juo sąveikauja (pvz., skaitymo ar rašymo buferis, skirtas duomenų kaupimui prieš siuntimą/gavimą).
  • Talpykla – dažniausiai transparantiška klientui: klientas kreipiasi į duomenis taip, tarsi talpyklos nebūtų, o talpyklos mechanizmas sprendžia, kada grąžinti atmintyje esančią kopiją ir kada užklausti pirminį šaltinį.

Kompromisai ir projektavimo sprendimai

Talpyklos projektavimas visada yra kompromisas tarp dydžio, latencijos, sudėtingumo ir kaštų. Kuo talpykla didesnė, tuo teoriškai gali būti didesnis hit rate, tačiau padidėja pačios talpyklos paieškos laikas ir gamybos kaina. Taip pat didesnė talpykla gali reikalauti sudėtingesnių valdymo mechanizmų (pvz., išsamesnės informacijos apie naudojimosi dažnį ar nuorodų istoriją).

Praktiniai patarimai

  • Analizuokite realius užklausų modelius – ar dominuoja temporalus, ar spatialus lokalumas.
  • Naudokite tinkamą keitimo strategiją pagal scenarijų (LRU dažnai tinka daugeliui atvejų, bet yra ir situacijų, kur geriau tiks FIFO ar Random).
  • Suderinkite rašymo politiką su duomenų nuoseklumo reikalavimais (write-through užtikrina paprastesnį nuoseklumą; write-back gali pagerinti našumą).
  • Stebėkite talpyklos rodiklius (hit rate, miss penalty) ir optimizuokite pagal juos.

Iš esmės talpykla yra vienas iš efektyviausių būdų pagerinti sistemos našumą, nes leidžia sumažinti vidutinį prieigos laiką prie duomenų, pasinaudojant siūlomomis lokalumo savybėmis ir tinkamai parinktomis valdymo strategijomis.

Kaip veikia talpyklos

Spartinančioji atmintinė - tai atminties blokas, skirtas duomenims, kurie, tikėtina, bus naudojami dar kartą, saugoti. Dažnai talpyklą naudoja centrinis procesorius ir kietasis diskas, taip pat žiniatinklio naršyklės ir žiniatinklio serveriai.

Talpyklą sudaro daug įrašų, vadinamų telkiniu. Kiekviename įraše yra duomenų bitas, kuris yra kitoje vietoje esančio duomenų bito kopija. Talpyklose paprastai naudojama vadinamoji atsarginė saugykla. Palyginti su talpykla, prie atsarginių saugyklų prieiga yra lėta arba brangi. Pavyzdžiui, diskinėje talpykloje kaip atsarginė saugykla naudojamas kietasis diskas. Prie kiekvieno įrašo taip pat pridedama nedidelė informacija, vadinama žyma. Ši žyma naudojama norint rasti vietą, kurioje saugomi pirminiai duomenys.

Skaitymo talpyklos

Klientas (procesorius, interneto naršyklė, operacinė sistema), norėdamas pasiekti duomenų bitą, kuris, jo manymu, yra atsarginėje saugykloje, pirmiausia patikrina, ar duomenų bitą galima rasti talpykloje. Jei duomenis galima rasti talpykloje, klientas gali jais naudotis ir jam nereikia naudoti pagrindinės atminties. Tai vadinama patekimu į talpyklą. Taigi, pavyzdžiui, žiniatinklio naršyklės programa gali patikrinti savo vietinę talpyklą diske, kad sužinotų, ar turi vietinę tam tikro URL adreso tinklalapio turinio kopiją. Šiame pavyzdyje URL adresas yra žymė, o tinklalapio turinys - duomenų bazė.

Kita situacija, kuri gali susiklostyti, yra ta, kad duomenų bazės su žyma negalima rasti talpykloje. Tai vadinama talpyklos praleidimu. Duomenis reikia paimti iš atsarginės saugyklos. Paprastai jis nukopijuojamas į talpyklą, kad kitą kartą jo nebereikėtų imti iš atraminės saugyklos.

Talpyklos dydis yra ribotas. Norint padaryti vietos anksčiau neįrašytam įrašui, iš talpyklos gali tekti ištrinti kitą talpyklos įrašą. Įrašui, kurį geriausia ištrinti, rasti naudojamos specialios taisyklės. Šios taisyklės paprastai vadinamos euristinėmis. Euristika, naudojama įrašui rasti, vadinama pakeitimo politika. Naudojama labai paprasta taisyklė, vadinama mažiausiai neseniai naudota (arba LRU). Ji tiesiog paima įrašą, kuris buvo naudotas ilgiausiai. Kitos euristikos išvardytos talpyklos algoritmo sąraše.

Rašymo talpyklos

Spartinančiąsias talpyklas taip pat galima naudoti duomenims įrašyti; to privalumas tas, kad klientas gali tęsti operaciją, kai įrašas įrašytas į spartinančiąją talpyklą; jam nereikia laukti, kol įrašas bus įrašytas į atraminę saugyklą.

Tačiau tam tikru metu įrašas turi būti įrašytas į atraminę saugyklą. Laikas, kada tai įvyks, kontroliuojamas pagal įrašymo politiką.

Įrašymo per spartinančiąją talpyklą kiekvienas įrašas iš karto įrašomas į atsarginę saugyklą ir saugomas talpykloje.

Kita galimybė - rašyti tik į talpyklą, o į atsarginę saugyklą rašyti vėliau. Tai vadinama atgaline (arba užpakaline) spartinančiąja atmintine. Spartinančioji atmintinė žymi įrašus, kurie dar nebuvo įrašyti į atraminę saugyklą; naudojama žyma dažnai vadinama purvina vėliava. Prieš ištrinant įrašus iš talpyklos, jie įrašomi į atraminę saugyklą. Tai vadinama tingiuoju rašymu. Praleidus įrašymo į atsarginę talpyklą (kai reikia pakeisti bloką kitu), dažnai prireikia dviejų kreipimųsi į atmintį: vieno, kad būtų gautas reikiamas duomenų kiekis, ir kito, kad pakeisti duomenys būtų įrašyti iš talpyklos į saugyklą.

Spartinančiosios atminties politikoje taip pat gali būti nurodyta, kad tam tikri duomenys turi būti įrašyti į spartinančiąją atmintį. Klientas gali būti padaręs daug duomenų, esančių talpykloje, pakeitimų. Baigęs darbą, jis gali aiškiai nurodyti talpyklai įrašyti atgal šį duomenį.

Skirstymas be rašymo - tai talpyklos politika, kai talpykloje talpinami tik skaitymai. Taip išvengiama įrašymo atgal arba įrašymo per spartinančiąją atmintinę. Įrašai į atsarginę saugyklą atliekami visą laiką.

Klientas nėra programa, kuri keičia duomenis atsarginėje saugykloje. Jei duomenys pasikeitė atsarginėje saugykloje, kopija talpykloje bus pasenusi arba pasenusi. Arba, kai klientas atnaujina duomenis talpykloje, tų duomenų kopijos kitose talpyklose pasensta. Yra specialūs ryšio protokolai, leidžiantys talpyklų tvarkytojams bendrauti tarpusavyje, kad duomenys išliktų prasmingi. Jie vadinami darnos protokolais.

Procesoriaus atminties talpyklos schemaZoom
Procesoriaus atminties talpyklos schema

Pakeičiamo įrašo pasirinkimas

Talpykla yra nedidelė ir dažniausiai būna pilna arba beveik pilna. Taigi, kai pridedama nauja reikšmė, senąją reikia pašalinti. Šį pasirinkimą galima atlikti įvairiais būdais:

  • Pirmas įeina, pirmas išeina: Tiesiog pakeiskite įrašą, kuris į talpyklą buvo įtrauktas ilgiausiai.
  • Mažiausiai naudotas: Ši idėja yra panaši į pirmiau minėtą FIFO, tačiau, kai įrašas naudojamas, jo laiko žyma ir amžius atnaujinami.
  • Rečiausiai naudojamas: Vėlgi, panašiai kaip ir FIFO atveju, vietoj laiko žymos naudojamas skaitiklis, kuris didinamas kiekvieną kartą, kai naudojamas įrašas.
  • Atsitiktine tvarka pasirinkite įrašą

Istorija

Pirmą kartą žodis "talpykla" kompiuterijos srityje buvo pavartotas 1967 m., kai buvo parengtas mokslinis straipsnis, kurį ketinta paskelbti žurnale "IBM Systems Journal". Straipsnyje buvo rašoma apie naują atminties patobulinimą 85 modelyje. Modelis 85 buvo IBM System/360 produktų linijos kompiuteris. Žurnalo redaktorius pageidavo geresnio žodžio greitajai buferinei atminčiai, kuri buvo naudojama straipsnyje, pavadinti. Nesulaukęs pasiūlymų, jis pasiūlė žodį cache, kilusį iš prancūzų kalbos cacher, reiškiantį "slėpti". Straipsnis buvo išspausdintas 1968 m. pradžioje, o autoriai buvo pagerbti IBM. Jų darbas buvo palankiai įvertintas ir patobulintas. Cache netrukus tapo standartine kompiuterių literatūros vartosena.

Kur naudojamos talpyklos

Procesoriaus spartinančioji atmintinė

Mažos atmintinės, esančios procesoriaus luste arba šalia jo, gali būti greitesnės už daug didesnę pagrindinę atmintinę. Daugumoje procesorių nuo devintojo dešimtmečio naudojama viena ar kelios spartinančiosios atmintinės. Šiuolaikiniuose asmeniniuose kompiuteriuose esančiuose bendrosios paskirties procesoriuose jų gali būti net pusė tuzino. Kiekviena spartinančioji atmintinė gali būti specializuota skirtingai programų vykdymo užduoties daliai.

Disko talpyklos

Procesoriaus spartinančiąją atmintinę paprastai valdo tik aparatinė įranga, o kitas spartinančiąsias atmintines valdo kitokios rūšies programinė įranga. Operacinė sistema paprastai valdo puslapių talpyklą pagrindinėje atmintyje. Vartotojai, nesusiję su kompiuterių mokslu, šią talpyklą paprastai vadina virtualia atmintimi. Ją valdo operacinės sistemos branduolys.

Šiuolaikiniuose kietuosiuose diskuose yra disko buferiai. Jie kartais vadinami "disko talpykla", tačiau tai klaidinga. Pagrindinė šių buferių funkcija - tvarkyti disko įrašymą ir valdyti skaitymą. Pakartotinai į talpyklą patenkama retai, nes buferis yra labai mažas, palyginti su kietojo disko dydžiu.

Vietiniai kietieji diskai yra greiti, palyginti su kitais saugojimo įrenginiais, pavyzdžiui, nuotoliniais serveriais, vietiniais juostiniais įrenginiais arba optiniais grotuvais. Vietinių standžiųjų diskų naudojimas kaip talpyklų yra pagrindinė hierarchinio saugojimo valdymo koncepcija.

Interneto talpyklos

Žiniatinklio naršyklės ir žiniatinklio tarpiniai serveriai naudoja talpyklą ankstesniems žiniatinklio serverių atsakymams, pvz., žiniatinklio puslapiams, saugoti. Žiniatinklio talpyklos sumažina informacijos, kurią reikia perduoti tinklu, kiekį. Anksčiau talpykloje saugota informacija dažnai gali būti naudojama pakartotinai. Tai sumažina žiniatinklio serverio duomenų srauto pralaidumą ir apdorojimo reikalavimus bei padeda pagerinti interneto naudotojų atsako greitį.

Šiuolaikinėse žiniatinklio naršyklėse naudojama integruota žiniatinklio talpykla, tačiau kai kurie interneto paslaugų teikėjai ar organizacijos taip pat naudoja talpyklos tarpinį serverį. Tai žiniatinklio talpykla, kuria dalijasi visi to tinklo naudotojai.

Paieškos varikliai taip pat dažnai pateikia indeksuotus tinklalapius iš savo talpyklos. Pavyzdžiui, "Google" prie kiekvieno paieškos rezultato pateikia nuorodą "Cached". Tai naudinga, kai žiniatinklio puslapiai laikinai nepasiekiami iš žiniatinklio serverio.

Spartinimas naudojant nepatikimus tinklus

Įrašymo per tinklą operacija yra įprasta nepatikimuose tinkluose (pvz., Ethernet LAN). Tokiu atveju protokolas, naudojamas siekiant užtikrinti, kad duomenys rašymo talpykloje būtų prasmingi, kai naudojamos kelios rašymo talpyklos, yra labai sudėtingas.

Pavyzdžiui, tinklalapių talpyklos ir kliento tinklo failų sistemos talpyklos (pvz., NFS ar SMB) paprastai yra tik skaitymo arba įrašymo, kad tinklo protokolas būtų paprastas ir patikimas.

Skirtumas tarp buferio ir talpyklos

Buferis ir spartinančioji atmintinė nėra vienas kitam prieštaraujantys dalykai; jie taip pat dažnai naudojami kartu. Tačiau jų naudojimo priežastys skiriasi. Buferis - tai atminties vieta, kuri tradiciškai naudojama todėl, kad procesoriaus instrukcijos negali tiesiogiai adresuoti periferiniuose įrenginiuose saugomų duomenų. Kompiuterio atmintis naudojama kaip tarpinė saugykla.

Be to, tokį buferį galima naudoti, kai didelis duomenų blokas yra surenkamas arba išardomas (kaip to reikalauja atminties įrenginys) arba kai duomenys gali būti pristatomi kitokia tvarka, nei jie buvo sukurti. Be to, visas duomenų buferis paprastai perduodamas nuosekliai (pvz., į kietąjį diską), todėl pats buferis kartais padidina duomenų perdavimo našumą. Šie privalumai pasireiškia net ir tuo atveju, jei buferiniai duomenys į buferį įrašomi vieną kartą, o iš buferio perskaitomi vieną kartą.

Spartinančioji atmintinė taip pat padidina perkėlimo našumą. Dalis padidėjimo taip pat atsiranda dėl galimybės, kad keli maži perdavimai susijungs į vieną didelį bloką. Tačiau pagrindinis našumo padidėjimas atsiranda dėl to, kad yra didelė tikimybė, jog tie patys duomenys iš talpyklos bus perskaityti kelis kartus arba kad netrukus bus perskaityti įrašyti duomenys. Vienintelė talpyklų paskirtis - sumažinti kreipimųsi į pagrindinę lėtesnę saugyklą. Be to, talpykla paprastai yra abstrakcijos sluoksnis, kuris sukurtas taip, kad būtų nematomas iš kaimyninių sluoksnių perspektyvos. Tokiu būdu taikomosios programos arba klientai gali nežinoti, kad yra talpykla.

Klausimai ir atsakymai

K: Kas yra spartinančioji atmintis?


A: Spartinančioji atmintinė - tai kompiuterijos moksle vartojamas terminas, reiškiantis dažnai naudojamų duomenų kopijų saugojimo praktiką, siekiant juos pasiekti greičiau, nei iš naujo ieškant ar skaičiuojant originalius duomenis.

K: Kaip veikia spartinančioji atmintinė?


A: Spartinančioji atmintinė veikia naudojant dviejų rūšių laikmenas: vieną, kuri paprastai yra gana didelė, bet lėtai pasiekiama, ir kitą, kuri gali būti pasiekiama daug greičiau, bet paprastai yra mažesnė. Spartinančiosios laikmenos idėja - naudoti greitąją laikmeną duomenų kopijoms saugoti, kad priėjimas prie originalių duomenų užtruktų trumpiau arba būtų pigesnis.

K: Kas yra buferis?


A: Buferis panašus į talpyklą, nes jame saugomos duomenų kopijos, kad juos būtų galima pasiekti greičiau, tačiau naudojant buferį klientas, norintis pasiekti duomenis, žino, kad yra buferis, ir jį valdo programa, o naudojant talpyklą klientai neturi žinoti, kad yra talpykla.

K.: Ką reiškia nuorodos lokalumas?


A: Nuorodos lokalumas reiškia, kad kai programa kreipiasi į tam tikrus struktūrizuotų duomenų blokus, tikėtina, kad ji kreipsis ir į kitus blokus, esančius netoli tų, į kuriuos buvo kreiptasi iš pradžių. Tai padeda spartinančiosioms atmintinėms gerai veikti, nes jos paprastai yra mažos, palyginti su visais prieinamais duomenimis.

Klausimas: Kodėl didesnėse talpyklose įrašai ieškomi ilgiau?


A: Didesnėms talpykloms reikia daugiau laiko, nes jose saugoma daugiau informacijos, todėl reikia daugiau laiko paieškai. Jos taip pat brangesnės, nes joms saugoti reikia daugiau išteklių.

K.: Kaip vietovės gali padėti pagerinti talpyklų veikimą?


A. Lokalumas padeda užtikrinti geresnį talpyklų veikimą, nes kai programos naudojasi tam tikrais struktūrizuotų duomenų blokais, joms greičiausiai reikės ir kitų netoliese esančių blokų, kuriuos galima greitai gauti iš talpyklos, užuot juos paėmus iš kitur arba iš naujo perskaičiavus.

AlegsaOnline.com - 2020 / 2025 - License CC3