Talpyklų darna (spartinančiosios atminties darna) — apibrėžimas

Sužinokite apie talpyklų (spartinančiosios atminties) darną: priežastis, konfliktus daugiaprocesoriuose ir veiksmingus sprendimus duomenų nuoseklumui užtikrinti.

Autorius: Leandro Alegsa

Spartinančiąją atmintinę galima naudoti siekiant pagerinti prieigos prie tam tikro ištekliaus našumą. Tačiau kai tam pačiam ištekliui yra kelios tokios talpyklos (kaip parodyta paveikslėlyje), gali kilti problemų dėl to, kad talpyklos saugo skirtingas ar pasenusias to paties duomenų bloko kopijas. Spartinančiosios talpyklos suderinamumas (taip pat vadinamas spartinančiosios atminties darna) reiškia mechanizmus ir taisykles, kuriais užtikrinama, kad visose ištekliaus spartinančiosiose talpyklose būtų nuoseklūs ir prasmingi duomenys (tai dažnai apibūdinama kaip duomenų vientisumas). Spartinančiosios atminties darna yra specifinis bendresnės atminties darnos atvejis, taikomas spartinančiajai atminčiai.

Kada ir kodėl kyla problema

Problema atsiranda, kai keli klientai (pvz., procesoriai ar gijos) turi savo talpyklas ir vienu metu skaito ir rašo tą patį atminties bloką. Pavyzdžiui, jei vienas klientas turi atminties bloko kopiją iš ankstesnio skaitymo, o kitas klientas pakeičia tą atminties bloką, pirmasis klientas gali likti su negaliojančia, pasenusia talpyklos kopija, apie tai nežinodamas. Tai gali sukelti netikėtas klaidas programose arba neteisingus skaičiavimus.

Pagrindinės sprendimo kryptys

  • Invalidacija: kai vienas klientas rašo duomenis, kitiems klientams siunčiami pranešimai, kad jų talpyklos kopijos taptų negaliojančios. Tokiu būdu rašantis klientas įgyja teisę vieninteliui keisti bloką.
  • Atnaujinimas (update): kai vienas klientas rašo, pakeitimai paskirstomi kitiems klientams, kad jų talpyklos būtų atnaujintos su naujais duomenimis.
  • Snoopingo (sniffing) protokolai: talpyklos stebi magistralę (bus), kad aptiktų, kada kitas klientas vykdo veiksmus su tam tikru bloku, ir atitinkamai invaliduoja arba atnaujina savo kopijas.
  • Directory pagrindu veikiantys protokolai: centrinė (ar paskirstyta) direktorija seka, kurie mazgai turi tam tikrą bloko kopiją, ir siunčia reikiamus pranešimus tik tiems mazgams — geriau skalėms su daugų mazgų sistemomis.

Dažniausiai sutinkamos būsenų mašinos

Daugelis darnaus elgesio protokolų remiasi blokų būsenų modeliais. Vienas žinomiausių pavyzdžių yra MESI protokolas, kuriame blokas gali būti vienoje iš būsenų: Modified (pakeistas), Exclusive (išskirtinis), Shared (bendras) arba Invalid (negaliojantis). Tokie modeliai leidžia efektyviau valdyti, kada reikalingas rašymo leidimas, kada galima skaityti iš talpyklos be magistralės prieigos ir pan.

Rašymo politika ir jos reikšmė

  • Write-through: rašant į talpyklą, tas pats rašymas vykdomas ir pagrindinėje atmintyje — paprastesnė sinchronizacija, bet didesnė magistralės apkrova.
  • Write-back: rašymas atnaujinamas tik talpykloje, o į pagrindinę atmintį įrašoma vėliau (kai blokas išmetamas). Efektyviau, bet reikalauja griežtesnių darnos mechanizmų, kad kitos talpyklos nebūtų klaidingai naudojamos.

Praktinės problemos ir niuansai

  • Falsus dalijimasis (false sharing): du nepriklausomi kintamieji, esantys tame pačiame atminties bloke, gali priversti dažnai invaliduoti ar sinchronizuoti bloką tarp talpyklų, nors logiškai jie nėra susiję — tai žymiai mažina našumą.
  • Mastelio didėjimas: snoopingo protokolai gerai veikia mažose sistemose su bendra magistrale, bet prastėja didelėse ar paskirstytose sistemose; čia efektyvesni direktorijų sprendimai.
  • Laiko ir vėlavočių poveikis: darnos mechanizmai gali pridėti sinchronizacijos vėlavimų, ypač rašymo atvejais; optimalūs protokolai stengiasi minimalizuoti šias vėlavimo sąnaudas.

Kaip tai susiję su atminties nuoseklumu

Spartinančiosios atminties darna užtikrina, kad vienu metu egzistuojančios talpyklų kopijos būtų sutelktos ar kontroliuojamos. Tačiau ji neduoda visų atsakymų į klausimus apie tai, kaip matomi kitiems klientams nuoseklūs rašymo ir skaitymo įvykiai — tam yra atskiros sąvokos, vadinamos atminties nuoseklumo modeliais (memory consistency models). Kitaip tariant, darna sprendžia „ar“ ir „kokią“ kopiją turime, o nuoseklumo modeliai nusako „kada“ ir „kokia tvarka“ operacijos tampa matomos kitiems.

Santrauka ir praktiniai patarimai

  • Spartinančiosios atminties darna yra būtina daugumaše bitų atliekamų skaičiavimų sistemose, kad būtų išvengta klaidų dėl pasenusių kopijų.
  • Renkantis darnaus elgesio sprendimą, reikia įvertinti sistemos dydį, magistralės architektūrą ir našumo reikalavimus — mažoms sistemoms tinka snoopingo protokolai, didelėms — direktorijų pagrindu sprendimai.
  • Programuotojai gali sumažinti problemų kiekį vengdami false sharing ir aiškiai valdydami sinchronizaciją tarp gijų/procesorių.

Dažnas realus atvejis, kai kyla ši problema, yra procesorių talpyklos daugiaprocesorinėje sistemoje. Spartinančiosios atminties darna skirta tokiems konfliktams valdyti ir išlaikyti nuoseklumą tarp spartinančiosios atminties ir pagrindinės atminties.

Kelios bendrųjų išteklių talpyklosZoom
Kelios bendrųjų išteklių talpyklos

Apibrėžimas

Nuoseklumas apibrėžia skaitymo ir rašymo į tą pačią atminties vietą elgseną. Spartinančiosios atmintinės yra nuoseklios, jei tenkinamos visos toliau nurodytos sąlygos:

  1. Kai procesorius P skaito vietą X, po to, kai į tą vietą įrašė, P turi gauti vertę, kurią įrašė, jei joks kitas procesorius į tą vietą neįrašė kitos vertės. Tai galioja ir monoprocesorinėms sistemoms, vadinasi, atmintis gali išlaikyti įrašytą reikšmę.
  2. Tarkime, kad yra du procesoriai, P1 ir P2, ir P1 parašė reikšmę X1, o po to P 2parašė reikšmę X2, jei P 1skaito reikšmę, jis turi gauti P2 parašytą reikšmę X2, o ne savo parašytą reikšmę X1, jei tarp jų nėra kitų įrašų. Tai reiškia, kad atminties vaizdas yra nuoseklus. Jei procesoriai gali perskaityti tą pačią seną reikšmę po P2 atlikto įrašo, atmintis nebūtų koherentinė.
  3. Vienu metu į tam tikrą atminties vietą galima įrašyti tik vieną kartą. Jei yra keli įrašai, jie turi būti atliekami vienas po kito. Kitaip tariant, jei vieta X gavo dvi skirtingas reikšmes A ir B, tokia tvarka, bet kurių dviejų procesorių, procesoriai niekada negali perskaityti vietos X kaip B, o paskui perskaityti kaip A. Vieta X turi būti matoma su reikšmėmis A ir B tokia tvarka.

Šios sąlygos apibrėžtos darant prielaidą, kad skaitymo ir rašymo operacijos atliekamos akimirksniu. Tačiau kompiuterių techninėje įrangoje taip nebūna dėl atminties vėlavimo ir kitų architektūros aspektų. Procesoriaus X atlikto įrašymo gali nepastebėti procesoriaus Y atliktas skaitymas, jei skaitymas atliekamas per labai trumpą laiką po to, kai buvo atliktas įrašymas. Atminties nuoseklumo modelis apibrėžia, kada įrašyta reikšmė turi būti matoma po to kitų procesorių atliktoje skaitymo instrukcijoje.

Spartinančiosios atmintinės koherentiškumo mechanizmai

  • Katalogais pagrįsti darnos mechanizmai palaiko centrinį talpyklos blokų katalogą.
  • "Snooping" yra procesas, kurio metu kiekviena talpykla stebi adresų eilutes, ar nėra kreipimųsi į jos talpykloje esančias atminties vietas. Kai pastebima rašymo operacija į vietą, kurios kopiją turi spartinančioji atmintinė, spartinančiosios atmintinės valdiklis anuliuoja savo stebimos atminties vietos kopiją.
  • "Snarfing" - tai kai spartinančiosios atmintinės valdiklis stebi ir adresą, ir duomenis, bandydamas atnaujinti savo atminties vietos kopiją, kai antrasis valdiklis keičia vietą pagrindinėje atmintyje.

Paskirstytosios bendrosios atminties sistemos imituoja šiuos mechanizmus, kad galėtų palaikyti nuoseklumą tarp atminties blokų laisvai susietose sistemose.

Paprastai tiriami du dažniausiai pasitaikantys darnos tipai: "Snooping" ir "Directory-based". Kiekvienas jų turi savų privalumų ir trūkumų. Snooping protokolai paprastai būna greitesni, jei yra pakankamas duomenų srauto pralaidumas, nes visi sandoriai yra užklausa ir atsakymas, kuriuos mato visi procesoriai. Trūkumas yra tas, kad šnipinėjimas nėra keičiamo mastelio. Kiekviena užklausa turi būti perduodama visiems sistemos mazgams. Didėjant sistemai, turi didėti (loginės arba fizinės) magistralės dydis ir jos teikiamas pralaidumas. Kita vertus, katalogai paprastai turi ilgesnį uždelsimo laiką (kai užklausa/perdavimas/atsakymas vyksta per 3 šuolius), tačiau naudoja daug mažiau pralaidumo, nes pranešimai siunčiami iš taško į tašką, o ne transliuojami. Dėl šios priežasties daugelyje didesnių sistemų (>64 procesoriai) naudojamas šis talpyklos suderinamumo tipas.

Klausimai ir atsakymai

Klausimas: Kas yra talpyklos darna?


A: Spartinančiosios talpyklos darnumas reiškia užtikrinimą, kad visose išteklių talpyklose būtų tie patys duomenys ir kad duomenys talpyklose būtų nuoseklūs (duomenų vientisumas).

K: Koks yra talpyklos darnos tikslas?


A.: Spartinančiosios atmintinės suderinamumo tikslas - valdyti konfliktus tarp kelių bendro atminties ištekliaus spartinančiosios atmintinės talpyklų ir išlaikyti nuoseklumą tarp spartinančiosios atmintinės ir atminties.

K: Kokios gali būti spartinančiosios atmintinės darnos nebuvimo pasekmės?


A: Nesant spartinančiosios atminties darnos, duomenys spartinančiojoje atmintyje gali nebetekti prasmės arba vienoje spartinančiojoje atmintyje gali nebūti tų pačių duomenų kaip ir kitose, todėl gali atsirasti nenuoseklumų ir klaidų.

K.: Koks yra dažnas atvejis, kai kyla spartinančiosios atmintinės darnos problemų?


A: Dažnas atvejis, kai kyla spartinančiosios atmintinės suderinamumo problemų, yra procesorių spartinančioji atmintinė daugiaprocesorinėje sistemoje.

K: Kaip veikia spartinančiosios atminties darna?


A.: Spartinančiosios atmintinės darna veikia užtikrinant, kad visi ištekliaus spartinančiosios atmintinės duomenys būtų vienodi ir kad duomenys spartinančiosiose atmintinėse būtų nuoseklūs įvairiais metodais.

K: Ką reiškia atminties darna?


A. Atminties darna reiškia duomenų nuoseklumą bendrame atminties išteklyje.

K: Kaip talpyklų darna gali pagerinti našumą?


A. Spartinančiosios atminties darna gali pagerinti našumą, nes leidžia greičiau ir efektyviau pasiekti tam tikrą išteklių.


Ieškoti
AlegsaOnline.com - 2020 / 2025 - License CC3