Memorie cache

În informatică, memoria cache (sau simplu un cache) este o colecție de date ce sunt o
„copie la indigo” a valorilor originale stocate altundeva sau calculate mai devreme, unde operația de aducere din memorie a datelor originale este costisitoare (datorită timpilor mari de acces la memorie) sau costul recalculării acestora este mare, în comparație cu costul citirii acestora din cache. Cu alte cuvinte, un cache este o arie temporară de stocare unde datele utilizate în mod frecvent pot fi depozitate pentru un acces rapid la acestea. Odată ce datele sunt stocate în cache, în viitor vor fi luate de aici și utilizate decât să se încerce readucerea datelor originale sau recalcularea acestora, astfel încât timpul mediu de acces este mai mic.

Memoria cache, sau RAM cache-ul este memorie de tip static RAM. Ca orice SRAM, are o viteză și un cost mult mai ridicate decât RAM-ul dinamic (DRAM). Având în vedere că programele accesează memoriile de date sau instrucțiuni în repetate rânduri, s-a observat că prin păstrarea a cât mai multe dintre aceste informații pe SRAM, întregul sistem funcționează mai rapid.

Memoriile de tip cache s-au dovedit a fi extrem de folositoare în multe domenii ale informaticii pentru că modelele accesului la memorie în programele aplicație obișnuite sunt de tip localitate a referinței. Există câteva feluri de localitate, dar acest articol prezintă cazul în care datele accesate sunt foarte apropiate în domeniul timp (fenomenul de localitate temporală). Datele ar putea fi sau nu localizate fizic aproape una de cealaltă (localitate spațială).

Modul de operare

Un cache este un bloc de memorie folosit pentru stocarea temporară a datelor ce foarte probabil vor fi utilizate din nou. UCP-ul și hard disc-ul utilizează în mod frecvent un cache, precum și navigatoarele și server-ele de internet.

Un cache e constituit dintr-o multitudine de intrări. Fiecărei intrări îi corespunde o părticică de date copie a uneia de pe un suport de stocare de rezervă. Fiecărei intrări îi corespunde de asemenea o etichetă, ce indică spre identitatea bucății de dată de pe suportul de rezervă a cărei copie este cea din dreptul respectivei intrări.

Când clientul cache-ului (o UCP, un navigator, un sistem de operare) dorește să acceseze o parte din date despre care se crede că s-ar găsi printre datele din rezervă, controlează mai întâi în cache. Dacă poate fi găsită o intrare cu eticheta bucății căutate, este utilizată această bucată de dată. Această situație este cunoscută drept o lovitură de cache. Deci, de exemplu, un program de navigare pe internet ar putea căuta prin cache-ul său local pe disc să vadă dacă are o copie locală a conținutului paginii web de la o anumită adresă URL. În acest exemplu, URL-ul este eticheta, iar conținutul paginii web este bucata de dată. Procentul de accesări a acestor date în cache (a loviturilor în cache) este cunoscut drept rată de succes a cache-ului.

Situația alternativă este cunoscută drept rateu de cache, când cache-ul este consultat dar găsit a nu conține acea bucată de dată cu eticheta căutată. Frântura de dată adusă din rezerva locală în timpul gestionării rateului este în mod obișnuit inserată în cache, pregătită pentru următoarea accesare.

Dacă spațiul de stocare din cache este limitat, va trebui probabil să expulzeze o altă intrare pentru a face loc. Euristica folosită pentru a selecta intrarea ce va trebui expulzată este cunoscută drept politica de înlocuire. Una din politicile populare de înlocuire, ultima recent utilizată (URU), înlocuiește intrarea de pe ultima poziție din lista sortată în ordine descrescătoare a celor mai recent utilizate (vezi algoritmii cache). Cache-uri mai eficiente calculează frecvența de utilizare în raport cu dimensiunea elementelor stocate, ca și timpii de așteptare și debitele pentru cache și depozitul de rezervă. În timp ce această metodă funcționează bine pentru cantități mai mari de date, timpi de așteptare mari, și debite mici, cum este cazul folosirii unui hard disc pe post de cache la navigarea pe internet, nu este în schimb eficientă pentru a pune în cache memoria principală (RAM).

Când o înregistrare este scrisă în cache, va trebui de asemenea să fie scrisă la un moment dat și în depozitul de rezervă. Schema de programare a momentului când va trebui operată modificarea este denumită politica de scriere.

Într-un cache scrie-prin, fiecare scriere în cache determină o scriere sincronă în depozitul de rezervă.

Pe de altă parte, într-un cache scrie-înapoi, operațiile de scriere nu sunt reflectate în mod automat în depozit. În schimb, cache-ul ține cont care dintre locațiile sale au fost rescrise (aceste locații sunt marcate ca fiind murdare). Datele din aceste locații sunt scrise înapoi în depozitul de rezervă când acele date sunt date afară din cache. Din acest motiv, un rateu în cache-ul scrie-înapoi de cele mai multe ori va avea nevoie de două accese la memorie pentru a deservi: una pentru a aduce data necesară, și una pentru a scrie data schimbată din cache în depozit.

Scrierea înapoi a datelor poate fi declanșată de asemenea de către alte politici. Clientul poate face modificări unei date în cache, ca mai apoi să trimită cache-ului o notificare în mod explicit să scrie data înapoi.

O alocare fără scriere este o politică de cache în care doar citirile de procesor sunt trecute prin cache, ocolind astfel nevoia de a scrie-înapoi sau de a scrie-prin când vechea valoare a datei a lipsit din cache înainte de scriere.

Datele din depozitul de rezervă poate fi modificat de entități altele decât cache-ul, în care caz copia din cache poate să devină irelevantă sau învechită. Pe de altă parte, când clientul înnoiește datele din cache, copiile acestor date din alte cache-uri vor deveni învechite. Protocoalele de comunicație dintre gestionarii de cache care mențin consistența datelor sunt cunoscute ca protocoale de coerență.

Dacă doriți optimizări CACHE. Vă ajut cu cea mai mare plăcere!!! Aștept comentarii.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Vă putem ajuta?
Confidențialitate și cookie-uri: Acest site folosește cookies pentru a asigura cea mai bună experiență de utilizare. Dacă continui să folosești acest website ești de acord cu utilizarea lor.