Cache coherence

Vahemälu saab kasutada selleks, et parandada antud ressursile juurdepääsu jõudlust. Kui ühe ja sama ressursi jaoks on mitu sellist vahemälu, nagu on näidatud pildil, võib see põhjustada probleeme. Cache coherence ehk vahemälu sidusus viitab mitmele viisile, kuidas tagada, et kõik ressursi vahemälud sisaldavad samu andmeid ja et andmed vahemäludes on mõistlikud (seda nimetatakse andmete terviklikkuseks). Vahemälu sidusus on mälu sidususe erijuht.

Probleeme võib tekkida, kui ühise mäluressursi vahemälu on palju, sest vahemälus olevad andmed ei pruugi enam mõttekas olla või ühes vahemälus ei pruugi enam olla samu andmeid kui teistes. Tavaline juhtum, kus probleem tekib, on protsessorite vahemälu mitme protsessoriga süsteemis. Nagu joonisel näha, kui ülemisel kliendil on mälubloki koopia eelmisest lugemisest ja alumine klient muudab seda mälublokki, võib ülemine klient jätta mälu kehtetu vahemälu,ilma et ta sellest teaks. Cache coherence on mõeldud selliste konfliktide haldamiseks ja järjepidevuse säilitamiseks vahemälu ja mälu vahel.

Mitu jagatud ressursi vahemäluZoom
Mitu jagatud ressursi vahemälu

Määratlus

Koherentsus määratleb lugemise ja kirjutamise käitumist samasse mälupunkti. Vahemälu on sidus, kui kõik järgmised tingimused on täidetud:

  1. Kui protsessor P loeb asukohta X, peab P pärast sellesse asukohta kirjutamist saama selle väärtuse, mille ta kirjutas, kui ükski teine protsessor ei ole sellesse asukohta teist väärtust kirjutanud. See kehtib ka monoprotsessorsüsteemide puhul, see tähendab, et mälu suudab hoida kirjutatud väärtust.
  2. Oletame, et on kaks protsessorit, P 1ja P2, ja P 1kirjutas väärtuse X1 ja seejärel P 2kirjutas väärtuse X2, kui P 1loeb seda väärtust, peab ta saama P2 poolt kirjutatud väärtuse X2, mitte selle väärtuse, mille ta kirjutas, X1, kui nende kahe vahel ei ole teisi kirjutusi. See tähendab, et mälu vaade on sidus. Kui protsessorid saavad lugeda sama vana väärtust pärast P2 poolt tehtud kirjutamist, ei oleks mälu sidus.
  3. Korraga saab mälus olla ainult üks kirjutamine teatavasse kohta. Kui kirjutamisi on mitu, peavad need toimuma üksteise järel. Teisisõnu, kui asukoht X sai kaks erinevat väärtust A ja B, selles järjekorras, mis tahes kahe protsessori poolt, ei saa protsessorid kunagi lugeda asukohta X kui B ja seejärel lugeda seda kui A. Asukohta X tuleb näha väärtustega A ja B selles järjekorras.

Need tingimused on määratletud eeldusel, et lugemis- ja kirjutamisoperatsioonid toimuvad koheselt. See ei juhtu aga arvuti riistvaras mälu latentsuse ja muude arhitektuuri aspektide tõttu. Protsessori X poolt tehtud kirjutamist ei pruugi protsessor Y lugeda, kui lugemine toimub väga väikese aja jooksul pärast kirjutamist. Mälu järjepidevuse mudel määratleb, millal kirjutatud väärtus peab olema nähtav teiste protsessorite poolt tehtud järgmise lugemiskäsu poolt.

Vahemälu sidususe mehhanismid

  • Kataloogipõhised koherentsusmehhanismid säilitavad keskse kataloogi, mis sisaldab vahemällu salvestatud plokke.
  • Snooping on protsess, mille käigus iga vahemälu jälgib oma vahemälus olevatele mälukohtadele juurdepääsu aadressireale. Kui täheldatakse kirjutamist asukohale, mille koopia on vahemälus, tühistab vahemälu kontroller oma koopia nuhkitud mälukohast.
  • Snarfing tähendab, et vahemälu kontroller jälgib nii aadressi kui ka andmeid, püüdes uuendada oma mälukoha koopiat, kui teine master muudab asukohta põhimälus.

Jaotatud ühismälusüsteemid jäljendavad neid mehhanisme, et nad suudaksid säilitada järjepidevust mälublokkide vahel vabalt seotud süsteemides.

Kaks kõige levinumat sidususe tüüpi, mida tavaliselt uuritakse, on Snooping ja kataloogipõhine sidusus. Mõlemal on omad eelised ja puudused. Snooping-protokollid kipuvad olema kiiremad, kui on olemas piisav ribalaius, kuna kõik tehingud on kõikide protsessorite poolt vaadeldavad päringud-vastused. Puuduseks on see, et snooping ei ole skaleeritav. Iga päring tuleb edastada kõigile süsteemi sõlmedele. Kui süsteem muutub suuremaks, peab (loogilise või füüsilise) bussi suurus ja selle pakutav ribalaius kasvama. Seevastu kataloogidel on pikemad viivitused (3 hüppelise päringu/edasisaatmise/vastamise korral), kuid nad kasutavad palju vähem ribalaiust, kuna sõnumid on punktist-punkti, mitte ei ole eetrisse saadetud. Seetõttu kasutavad paljud suuremad süsteemid (>64 protsessorit) seda tüüpi vahemälu sidusust.

Küsimused ja vastused

K: Mis on vahemälu sidusus?


V: Cache coherence tähendab selle tagamist, et ressursi kõik vahemälud sisaldavad samu andmeid ja et vahemäludes olevad andmed on järjepidevad (andmete terviklikkus).

K: Mis on vahemälu sidususe eesmärk?


V: Vahemälu sidususe eesmärk on hallata konflikte ühise mäluressursi mitme vahemälu vahel ning säilitada järjepidevus vahemälu ja mälu vahel.

K: Millised võivad olla vahemälu sidususe puudumise tagajärjed?


V: Ilma vahemälu sidususeta ei pruugi andmed vahemälus enam mõtet omada või ei pruugi ühes vahemälus olla enam samu andmeid kui teistes, mis võib põhjustada ebakõlasid ja vigu.

K: Mis on tavaline juhtum, kus vahemälu sidususega tekivad probleemid?


V: Tavaline juhtum, kus esineb probleeme vahemälu sidususega, on mitme protsessoriga süsteemi protsessorite vahemälu.

K: Kuidas toimib vahemälu sidusus?


V: Vahemälu koherentsus toimib, tagades, et kõik ressursi vahemälud sisaldavad samu andmeid ja et vahemäludes olevad andmed on erinevate meetodite abil järjepidevad.

K: Mida tähendab mälu koherentsus?


V: Mälu koherentsus tähendab andmete järjepidevust jagatud mäluressursil.

K: Kuidas saab vahemälu sidusus parandada jõudlust?


V: Vahemälu sidusus võib parandada jõudlust, võimaldades kiiremat ja tõhusamat juurdepääsu konkreetsele ressursile.

AlegsaOnline.com - 2020 / 2023 - License CC3