Cum functioneaza memoria cache?
Poate ați fost vreodată să cumpărați un computer și ați auzit de cuvântul „cache„. Computerele moderne au atât L1 cât și L2 cache și multe dintre ele au chiar și L3 cache. Cu siguranță unii dintre voi ați primit și câteva sfaturi de la prietenii apropiați de genul „Nu cumpăra cipul Celeron, nu are mare cache-ul în el!”. Se pare că caching este un proces de calcul important care apare pe fiecare calculator într-o varietate de forme. Există memorie cache, disk-uri cache hardware și software, cache pentru pagină și multe altele.
În acest articol, vom explora procesul de caching, astfel încât să puteți înțelege de ce acesta este atât de important.
Caching este o tehnologie bazată pe subsistemul de memorie al computerului. Scopul principal al unui cache este de a accelera computerul permițându-i astfel să efectueze sarcinile mult mai rapid.
Să înțelegem logic ce este memoria chache
Pentru a înțelege ideea de bază din spatele unui sistem de cache, haideți să începem cu un exemplu super-simplu care folosește un bibliotecar pentru a demonstra conceptul cache. Să ne imaginăm un bibliotecar stând la birou. El este acolo pentru a vă oferi cărțile pe care le solicitați, iar pentru anumite motive, să spunem că nu puteți obține cărțile singuri- trebuie să cereți bibliotecarului orice carte pe care doriți să o citiți, și el i-a cartea pentru tine dintr-un set de cutii situat într-o magazie. În primul rând, să începem cu bibliotecarul, fără cache.
Primul client sosește, el cere cartea „Amintiri din copilărie”, bibliotecarul merge în magazia cu cărți, i-a cartea, revine la tejghea și dă cartea clientului. Ulterior, clientul vine înapoi pentru a returna cartea, bibliotecarul i-a cartea și o duce în magazie, apoi se întoarce la tejghea așteptând un alt client. Să spunem că următorul client solicită, la fel ca și primul, cartea „Amintiri din copilărie”. Bibliotecarul trebuie să se întoarcă în magazie pentru a obține cartea pe care a împrumutat-o recent pentru a o da noului client. În conformitate cu acest model, bibliotecarul trebuie să facă o călătorie completă pentru a aduce fiecare carte – chiar și cele foarte populare, care sunt solicitate frecvent. Există o modalitate de a îmbunătăți performanța bibliotecarului? Da, există o cale, putem pune un cache pe bibliotecar.
Să acordăm bibliotecarului un rucsac în care el va fi capabil să stocheze 10 cărți (în termeni IT, bibliotecarul are acum un cache de 10 cărți). În acest rucsac, el va pune cărțile pe care clienții le returnează, până la un maxim de 10 cărți. Să folosim exemplul anterior, dar acum cu noul chache al bibliotecarului. Ziua începe, rucsacul bibliotecarului este gol. Clientul nostru vine și solicită cartea „Amintiri din copilărie”. Nicio magie aici – bibliotecarul trebuie să meargă la depozit pentru a obține cartea, apoi o dă clientului. Ulterior, clientul se întoarce și dă cartea înapoi bibliotecarului. Dar acum, în loc să se întoarcă la depozit pentru a duce cartea, bibliotecarul pune cartea în rucsac și rămâne la birou. Un alt client sosește și solicită cartea „Amintiri din copilărie”. Înainte de a merge în magazie, bibliotecarul controlează dacă acestă carte se află în rucsacul lui. O găsește! Tot ce trebuie să facă este să ia cartea din rucsac și să o dea clientului. Nu există nici o călătorie în magazie, astfel încât clientul este servit mai repede.
Ce se întamplă dacă clientul a solicitat o carte care nu este în cache (rucsac)? În acest caz, bibliotecarul este mai puțin eficient cu memorie cache decât fără, pentru că bibliotecarul cheltuie timp pentru a căuta mai întâi cartea în rucsac. Una dintre provocarile de design al memoriei cache este de a minimiza impactul de căutări cache și echipaentele hardware moderne au redus acest interval de timp la practic zero. Chiar și în exemplul nostru simplu al bibliotecarului, timpul de latență (timpul de asteptare) sau de căutare în cache este atât de mic în comparație cu timpul necesar să meargă înapoi la depozit, ceea ce este lipsit de relevanță.
Cache-ul computerului
Un computer este o masina in care masuram timpul in intervale foarte mici. In cazul in care microprocesorul acceseaza memoria principala (RAM), o face in aproximativ 60 nanosecunde (60 miliarde dintr-o secunda). Asta e destul de repede, dar este mult mai lent decat microprocesorul tipic. Microprocesoarele pot avea timpii de ciclu mai scurti decat 2 nanosecunde, astfel incat la un microprocesor de 60 nanosecunde pare o eternitate.
Ce se intampla daca vom construi ceva ce stocheaza memoria speciala in placa de baza, mic dar foarte rapid (in jur de 30 nanosecunde)? Este deja de doua ori mai rapid decat accesul la memoria principala. Asta se numeste un cache de nivel 2 sau un L2 cache. Ce se intampla daca vom construi un sistem de memorie chiar mai mic dar mai rapid, direct in cipul microprocesorului? In acest fel, aceasta memorie va fi accesata la viteza microprocesorului si nu la viteza memoriei bus. Asta e un cache L1, care pe un Pentium de 233-megahertz (MHz) este de 3,5 ori mai rapid decat memoria L2 cache, care este de doua ori mai rapid decat accesul la memoria principala.
Unele microprocesoare au doua nivele de cache construite direct in cip. In acest caz, cache-ul placii de baza – cache-ul care exista intre microprocesor si memoria principala a sistemului – devine de nivel 3, sau L3 cache.
Exista o multime de subsisteme intr-un calculator, in care puteti pune memoria cache pentru a imbunatati performanta. Iata un exemplu. Avem microprocesorul (cea mai rapida piesa din calculator). Apoi, exista L1 cache care memoreaza L2 cache care memoreaza in memoria principala care sunt utilizate des, ca o memorie cache pentru perifericele mai lente ca hard disk-ul si CD-ROM-ul. Hard diskurile sunt utilizate pentru cache sau pentru un mediu chiar mai lent, adica conexiunea la Internet.
Conexiunea voatra la Internet este cel mai lent link de pe computer. Deci, browser-ul (Internet Explorer, Mozilla, Opera, etc) utilizeaza hard disk-ul pentru a stoca pagini HTML, punandu-le intr-un folder special pe discul dumneavoastra. Prima data cand aveti nevoie de o pagina HTML, browser-ul dumneavoastra, face o copie a acesteia care este stocata pe hard. Data viitoare cand veti solicita accesul la acea pagina, browser-ul verifica daca data de fisierului de pe Internet este mai noua decat cea memorata. In cazul in care data este aceeasi, browser-ul dumneavoastra utilizeaza pagina de pe hard disk in loc sa o descarce de pe Internet. In acest caz, un sistem de memorie mic, dar mai rapid este hard disk-ul si cea mai mare si mai lenta este Internetul.
Cache-ul poate fi, de asemenea, construit direct pe periferice. Hard disk-urile moderne vin cu memorie rapida, in jur de 512 kilobytes integrati pe hard disk. Calculatorul nu utilizeaza in mod direct aceasta memorie, dar controlerul hard-disk-ului da. Pentru calculator, aceste cipuri de memorie sunt discul in sine. In cazul in care computerul cere date de pe hard disk, controlerul hard-disk-ului controleaza in aceasta memorie inainte de a trece la partile mecanice ale hard disk-ului (care este foarte lent in comparatie cu memoria). Daca se constata ca datele informatice cerute sunt in cache, acesta va returna datele stocate in memoria cache fara accesarea efectiva a datelor de pe disc, economisind mai mult de timp.
Pentru a va oferi o imagine de ansamblu a tuturor, aici este o lista a unui sistem de caching obisnuit:
Dupa cum puteti vedea, L1 cache este peste L2 cache care este peste memoria principala, care poate fi folosit pentru cache-ul subsistemelor disk-ului si asa mai departe. Cand te gandesti ca astfel de sume de memorie relativ mici pot maximiza utilizarea unor cantitati mult mai mari de memorie. Ganditi-va la un L2 cache de 256 kilobyte caching o memorie RAM de 64 MB. In acest caz, 256000 bytes cache 64000000 bytes. Cum vi se pare?
In informatica, este un concept teoretic numit localizarea referintei. Aceasta inseamna ca intr-un program destul de mare, doar portiunile mici sunt folosite in orice moment. Oricat de ciudat ar parea, localizarea referintei functioneaza pentru marea majoritate a programelor. Chiar daca executabilul este de 10 MB, doar cativa bytes din acel program sunt folositi la un moment dat si rata lor de repetitie este foarte mare.
4 Comments
[…] de memoria RAM statica high-speed, fata de memoria lenta DRAM utilizata ca memorie principala. Memoria cache detine date utilizate frecvent, precum si instructiunile de program (care sunt piese din programele […]
[…] nucleu intr-un procesor Sandy Bridge are doua nivele individuale de memorie cache – ceea ce inseamna ca nucleele pot stoca date in timp ce procesorul face calcule. Un al […]
[…] procesare paralela. Aceste nuclee, de multe ori, isi impart memoria, cunoscut sub numele de memorie cache, astfel incat acestea pot partaja date in timpul sarcinilor de procesare. Procesoarele multi-core […]
Am o intrebare. Ce este un joc cache? Am observat ca ocupa mai mult de ce?