Influența memoriei cache asupra performanței microprocesorului. Impactul memoriei cache asupra performanței computerului

Toate procesoarele de la sfârșitul anilor 90 au memorie cache internă (sau pur și simplu cache). Cache-ul este o memorie de mare viteză în care sunt transferate instrucțiunile și datele procesate direct de procesor.

Procesoarele moderne au memorie cache încorporată de două niveluri - primul (L1) și al doilea (L2). Procesorul este puțin mai rapid cu conținutul cache-ului L1, în timp ce cache-ul L2 este de obicei puțin mai mare. Memoria cache este accesată fără o stare de așteptare, de exemplu. Cache-ul de nivel 1 (cache pe cip) funcționează la viteza procesorului.

Aceasta înseamnă că, dacă datele de care are nevoie procesorul sunt în cache, nu există întârzieri de procesare. În caz contrar, procesorul trebuie să preia date din memoria principală, ceea ce reduce semnificativ performanța sistemului.

Pentru a înțelege calitativ principiul de funcționare a memoriei cache la ambele niveluri, să luăm în considerare o situație de zi cu zi ca exemplu.

Vii la o cafenea să iei prânzul în fiecare zi, la aceeași oră, și stai mereu la aceeași masă. Comandați întotdeauna un set standard de trei feluri.

Chelnerul alearga la bucatarie, bucatarul ii pune pe o tava si apoi iti aduc comanda. Și așa, să zicem, a treia zi, chelnerul, pentru a nu mai fi nevoit să alerge încă o dată la bucătărie, vă întâlnește la ora stabilită cu un prânz cald gata făcut pe o tavă.

Nu trebuie să așteptați comanda și să economisiți mult timp. Tava cu vasele tale este primul nivel cache. Dar în a patra zi vrei să adaugi brusc un alt fel de mâncare, să zicem desert.

Desi o tava cu comanda ta te astepta deja la ora stabilita, chelnerul tot trebuia sa alerge la bucatarie la desert.

Și pe a cincea - din nou un meniu de trei articole. Pe al șaselea - desert din nou, dar diferit de precedentul. Iar chelnerul, neștiind ce desert vrei să comanzi (și nici măcar neștiind dacă vei comanda ceva), decide să facă următorul pas: lângă masa ta pune un dulap cu mai multe tipuri de desert.

Și dacă exprimi o dorință, totul este la îndemână, nu este nevoie să alergi la bucătărie. Dulapul pentru desert este un cache de al doilea nivel.

Performanța procesorului depinde semnificativ de dimensiunea cache-ului L1 (de la 16 la 128 KB) și L2 (de la 64 KB la 512 KB, în Pentium III Heop și AMD Opteron până la 4 MB).

Procesoarele Intel Pentium III și procesoarele Celeron bazate pe acesta au o dimensiune cache L1 de 32 KB. Intel Pentium 4, precum și versiunile Celeron și Cheop bazate pe acesta, au doar 20 KB. Procesoarele AMD Duron, Athlon (inclusiv XP/MP) și Opteron, precum și VIA SZ, conțin 128 KB de cache L1.

Procesoarele moderne dual-core au un cache de prim nivel pentru fiecare nucleu separat, așa că uneori în descrierea cache-ului putem vedea numărul 128x2. Aceasta înseamnă că fiecare nucleu de procesor are 128 KB de cache L1.

Dimensiunea cache-ului L1 este importantă pentru obținerea unor performanțe ridicate în majoritatea sarcinilor obișnuite (aplicații de birou, jocuri, majoritatea aplicațiilor de server etc.). Eficacitatea sa este deosebit de puternică pentru calculul threaded (de exemplu, procesarea video).

Acesta este unul dintre motivele pentru care Pentium 4 este relativ ineficient pentru majoritatea aplicațiilor obișnuite (deși acest lucru este compensat de viteza mare de ceas). Cache-ul L1 funcționează întotdeauna (schimbă informații cu miezul procesorului) la frecvența internă a procesorului.

În schimb, memoria cache L2 în diferite modele de procesoare funcționează la frecvențe diferite (și, în consecință, performanță). Începând cu Intel Pentium II, multe procesoare au folosit un cache L2 care funcționează la jumătate din frecvența internă a procesorului.

Această soluție a fost folosită în procesoarele Intel Pentium III învechite (până la 550 MHz) și AMD Athlon învechite (în unele dintre ele memoria cache L2 internă funcționa la o treime din frecvența de bază a procesorului). Mărimea cache-ului L2 variază, de asemenea, între procesoare.

La procesoarele Intel Pentium III mai vechi și unele mai noi, dimensiunea cache-ului L2 este de 512 KB, la alte procesoare Pentium III este de 256 KB. Procesorul Intel Celeron bazat pe Pentium III era disponibil cu cache L2 de 128 și 256 KB, în timp ce procesorul bazat pe Pentium 4 era disponibil cu doar 128 KB. Diverse versiuni ale versiunii Xeon a Intel Pentium 4 au până la 4 MB de cache L2.

Noile procesoare Pentium 4 (unele serii cu o frecvență de 2000 MHz și toate pentru frecvențe mai mari) au 512 KB de cache L2, restul Pentium 4 au 256 KB. Procesoarele Xeop (bazate pe Pentium 4) au 256 sau 512 KB cache L2.

În plus, au și un cache L3 de nivel al treilea. Cache-ul L3 integrat, combinat cu o magistrală rapidă de sistem, formează un canal de schimb de date de mare viteză cu memoria sistemului.

De regulă, numai procesoarele pentru soluții de server sau modele speciale de procesoare „desktop” sunt echipate cu memorie cache L3. De exemplu, liniile de procesoare precum Xeon DP, Itanium 2 și Xeon MP au memorie cache L3.

Procesorul AMD Duron are 128 KB cache L1 și 64 KB cache L2. Procesoarele Athlon (cu excepția celui mai vechi), Athlon MP și majoritatea variantelor Athlon XP au 128 KB de cache L1 și 256 KB de cache L2, iar cel mai recent Athlon XP (2500+, 2800+, 3000+ și mai mare) au 512 KB de L2 cache. AMD Opteron conține 1 MB de cache L2.

Cele mai recente modele de procesoare Intel Pentium D, Intel Pentium M, Intel Core 2 Duo sunt disponibile cu 6 MB de cache L2 și Core 2 Quad - 12 MB de cache L2.

Cel mai recent procesor Intel Core i7 la momentul scrierii acestei cărți are 64 KB de memorie cache L1 pentru fiecare dintre cele 4 nuclee, precum și 256 KB de memorie L2 pentru fiecare nucleu. Pe lângă primul și al doilea nivel cache, procesorul are și un al treilea nivel cache comun tuturor nucleelor, egal cu 8 MB.

Pentru procesoarele care pot avea dimensiuni de cache L2 diferite (sau în cazul Intel Xeon MP - L3) pentru același model, această dimensiune trebuie să fie indicată în momentul vânzării (desigur, prețul procesorului depinde de el). Dacă procesorul este vândut într-un pachet „cutie” (livrare în cutie), dimensiunea memoriei cache este de obicei indicată pe acesta.

Pentru sarcinile normale ale utilizatorului (inclusiv jocuri), viteza cache-ului L2 este mai importantă decât dimensiunea acestuia; pentru sarcinile de server, dimpotrivă, volumul este mai important. Cele mai productive servere, în special cele cu cantități mari de RAM (câțiva gigaocteți), necesită dimensiunea maximă și viteza maximă a cache-ului L2.

Versiunile Cheop ale procesoarelor Pentium III rămân de neegalat la acești parametri. (Procesorul Xeon MP se dovedește în continuare a fi mai productiv în sarcinile serverului decât Pentium III Xeon, datorită frecvenței de ceas mai mare a procesorului în sine și a magistralei de memorie.) Din cele de mai sus, concluzionăm: memoria cache îmbunătățește interacțiunea dintre un procesor rapid și o memorie RAM mai lentă și, de asemenea, vă permite să minimizați perioadele de așteptare care apar în timpul procesării datelor. Cache-ul L2 situat pe cipul procesorului joacă un rol decisiv în acest sens.

Un cache este un buffer intermediar cu acces rapid care conține informații care sunt cel mai probabil să fie solicitate. Accesarea datelor din cache este mai rapidă decât recuperarea datelor originale din memoria operațională (RAM) și mai rapidă decât memoria externă (hard disk sau solid-state drive), reducând astfel timpul mediu de acces și crescând performanța generală a sistemului informatic.

O serie de modele de unități centrale de procesare (CPU) au propriul cache pentru a minimiza accesul la memoria cu acces aleatoriu (RAM), care este mai lentă decât registrele. Memoria cache poate oferi beneficii semnificative de performanță atunci când viteza de ceas a RAM este semnificativ mai mică decât viteza de ceas a procesorului. Viteza de ceas pentru memoria cache nu este de obicei cu mult mai mică decât viteza procesorului.

Niveluri de cache

Cache-ul CPU este împărțit în mai multe niveluri. Într-un procesor de uz general de astăzi, numărul de niveluri poate fi de până la 3. Cache-ul de nivel N+1 este de obicei mai mare ca dimensiune și mai lent ca viteză de acces și transfer de date decât cache-ul de nivel N.

Cea mai rapidă memorie este cache-ul de prim nivel - L1-cache. De fapt, este o parte integrantă a procesorului, deoarece este situat pe același cip și face parte din blocurile funcționale. La procesoarele moderne, memoria cache L1 este de obicei împărțită în două cache, cache-ul de instrucțiuni și cache-ul de date (arhitectura Harvard). Majoritatea procesoarelor fără cache L1 nu pot funcționa. Cache-ul L1 funcționează la frecvența procesorului și, în general, poate fi accesat la fiecare ciclu de ceas. Este adesea posibilă efectuarea simultană a mai multor operații de citire/scriere. Latența de acces este de obicei de 2-4 cicluri de ceas de bază. Volumul este de obicei mic - nu mai mult de 384 KB.

Al doilea cel mai rapid este L2-cache - un cache de al doilea nivel, situat de obicei pe cip, ca L1. La procesoarele mai vechi, un set de cipuri pe placa de bază. Volumul cache L2 de la 128 KB la 1-12 MB. În procesoarele moderne cu mai multe nuclee, cache-ul de al doilea nivel, situat pe același cip, este o memorie separată - cu o dimensiune totală a cache-ului de nM MB, fiecare nucleu are nM/nC MB, unde nC este numărul de nuclee de procesor. De obicei, latența cache-ului L2 situat pe cipul central este de la 8 la 20 de cicluri de ceas de bază.

Cache-ul de al treilea nivel este cel mai puțin rapid, dar poate fi foarte impresionant ca dimensiune - mai mult de 24 MB. Cache-ul L3 este mai lent decât cache-urile anterioare, dar totuși semnificativ mai rapid decât RAM. În sistemele multiprocesor este de uz comun și este destinat sincronizării datelor din diferite L2.

Uneori există și un cache de nivel 4, de obicei este situat într-un cip separat. Utilizarea cache-ului de nivel 4 este justificată numai pentru servere și mainframe de înaltă performanță.

Problema sincronizării între diferite cache (atât unul cât și mai multe procesoare) este rezolvată prin coerența cache. Există trei opțiuni pentru schimbul de informații între cache-uri de diferite niveluri sau, după cum se spune, arhitecturi cache: inclusive, exclusive și neexclusive.

Primul procesor care a fost produs cu un cache L2 a fost Pentium Pro în 1995. Avea 256 sau 512 KB de cache L2 pe cip, ceea ce îi dădea un avantaj semnificativ față de procesoarele Pentium convenționale, al căror cache era localizat pe placa de bază. Odată cu apariția Pentium II, memoria cache dedicată s-a „instalat” lângă procesor în modulul Slot 1. Dar doar a doua generație Pentium III pentru Socket 370 a mutat memoria cache pe cipul procesorului. Acest lucru continuă până în prezent, dar există procesoare cu o cantitate mică de cache și altele cu o cantitate mare. Merită să cheltuiți bani pe un model cu un cache mare? În trecut, memoria cache suplimentară nu a avut întotdeauna un impact vizibil asupra performanței.

Deși este întotdeauna posibil să găsiți diferențe măsurabile între două procesoare cu dimensiuni diferite de cache, a fost în întregime posibil să cumpărați procesoare cu cache mai mici pentru a economisi bani. Dar niciun procesor înainte de Core 2 Duo nu era disponibil cu trei opțiuni diferite de cache.

Pentium 4 din prima generație (Willamette, 180 nm) a fost echipat cu 256 KB de cache, iar în a doua generație mai de succes (Northwood, 130 nm) - deja 512 KB de cache. La acea vreme, procesoare Celeron ieftine cu cache mai mici erau produse pe aceleași nuclee de calcul. Celeron aparține primei generații de produse cu aceeași bază tehnologică pentru modelele high-end și low-cost, diferind doar prin dimensiunea cache-ului disponibilă și frecvențele FSB/core. Ulterior, s-au adăugat diferențe de funcții pentru a diferenția și mai mult segmentele de piață.

Odată cu lansarea nucleului Prescott de 90 nm, memoria cache L2 a crescut la 1 MB, iar acest procesor a devenit pilonul liniei de procesoare desktop Intel până la introducerea Cedar Mill de 2 MB 65 nm. Intel a folosit chiar două dintre aceste nuclee pentru a crea a doua generație de procesoare Pentium D 900. Cu toate acestea, viteze de ceas mai mari și dimensiunea mai mare a memoriei cache nu au însemnat prea mult nici atunci. Astăzi situația s-a schimbat: performanța mai bună a Core 2 Duo (Conroe, 65 nm) și consumul mai mic de energie se datorează în mare parte dimensiunii cache-ului.

AMD a fost foarte rezervat cu privire la creșterea dimensiunii cache-ului. Cel mai probabil, acest lucru se datorează zonei cipului (bugetul tranzistorului), deoarece numărul de procesoare de 65 nm nu poate satisface cererea pieței, iar pentru modelele de 90 nm mai puțin profitabile această problemă este și mai acută. Intel, pe de altă parte, are avantajul de a produce toate procesoarele mainstream folosind tehnologia de proces de 65 nm, iar capacitatea cache-ului L2 va continua să crească. De exemplu, următoarea generație Core 2 pe nucleul Penryn de 45 nm va fi echipată cu până la 6 MB de cache L2. Poate fi văzută ca o mișcare de marketing sau creșterea capacității L2 va oferi de fapt o creștere a performanței? Să aruncăm o privire.

Cache L2 mare: marketing sau creștere a productivității?

Cache-urile procesorului joacă un rol foarte specific: reduc numărul de accesări la memorie prin salvarea datelor utilizate frecvent. Astăzi, capacitatea RAM variază de la 512 MB la 4 GB, iar capacitatea cache variază de la 256 KB la 8 MB, în funcție de model. Cu toate acestea, chiar și o dimensiune mică a memoriei cache de 256 sau 512 KB este suficientă pentru a oferi performanțe ridicate, ceea ce este considerat de la sine înțeles astăzi.

Există diferite moduri de organizare a ierarhiei cache-ului. Majoritatea computerelor moderne au procesoare cu un cache mic de prim nivel (L1, până la 128 KB), care este de obicei împărțit într-un cache de date și un cache de instrucțiuni. Cache-ul L2 mai mare este folosit de obicei pentru stocarea datelor și este partajat între cele două nuclee de procesor Core 2 Duo, deși Athlon 64 X2 sau Pentium D au cache separate per nucleu. Cache-ul L2 poate fi exclusiv sau inclusiv, ceea ce înseamnă că poate stoca fie o copie a conținutului cache-ului L1, fie nu. AMD va introduce în curând procesoare cu un al treilea nivel de cache, care va fi partajat de patru nuclee în procesoarele AMD Phenom. Același lucru este de așteptat pentru arhitectura Nehalem, pe care Intel o va introduce în 2008 pentru a înlocui actualul Core 2.

Cache-ul L1 a făcut întotdeauna parte din procesor, dar cache-ul L2 a fost instalat inițial pe plăcile de bază, așa cum a fost cazul multor computere 486DX și Pentium. Pentru primul nivel cache s-au folosit cipuri simple de memorie statică (SRAM, Static RAM). Ele au fost în curând înlocuite cu cache-ul de explozie pipeline pe procesoarele Pentium până când a devenit posibilă instalarea cache-ului pe cip. Pentium Pro la 150 - 200 MHz a devenit primul procesor care conține 256 KB de cache L2 pe cip, doborând recordul pentru cea mai mare dimensiune de pachet ceramic pentru computere desktop și stații de lucru. Pentium III pentru Socket 370, care operează la frecvențe de la 500 MHz la 1,13 GHz, a fost primul procesor care a prevăzut 256 KB de cache L2 pe cip, care a oferit un avantaj de latență deoarece memoria cache a funcționat la viteza CPU.

Cache-ul L2 încorporat a oferit o creștere semnificativă a performanței în aproape orice aplicație. Creșterea performanței s-a dovedit a fi atât de semnificativă încât aspectul unui cache L2 integrat poate fi numit cel mai important factor de performanță pentru procesoarele x86. Dezactivarea memoriei cache L2 va reduce performanța mai mult decât dezactivarea celui de-al doilea nucleu al unui procesor dual-core.

Cu toate acestea, memoria cache afectează mai mult decât doar performanța. A devenit un instrument puternic care vă permite să creați diferite modele de procesoare pentru segmentele low-end, mainstream și high-end, deoarece producătorul poate selecta în mod flexibil procesoarele în funcție de respingere și viteze de ceas. Dacă nu există defecte pe cristal, atunci întregul cache L2 poate fi pornit, iar frecvențele vor fi ridicate. Dacă frecvențele de ceas dorite nu pot fi atinse, atunci cristalul poate deveni un model entry-level în linia high-end, de exemplu, Core 2 Duo 6000 cu 4 MB de cache și frecvențe joase. Dacă sunt prezente defecte în memoria cache L2, atunci producătorul are posibilitatea de a dezactiva o parte din acesta și de a crea un model entry-level cu o dimensiune de cache mai mică, de exemplu, un Core 2 Duo E4000 cu 2 MB de cache L2 sau chiar un Pentium Dual Core cu doar 1 MB de cache. Toate acestea sunt adevărate, dar întrebarea este: cât de mult afectează diferența de dimensiunea cache-ului performanța?



CONŢINUT

Memorie cache- o serie de RAM ultra-rapidă, care este un buffer între controlerul de memorie de sistem și . Acest buffer stochează blocurile de date cu care lucrează în prezent, reducând astfel în mod semnificativ numărul de apeluri ale procesorului pentru a încetini memoria sistemului. Acest lucru crește semnificativ performanța generală a procesorului.

Există memorie cache cu 1, 2 și 3 niveluri (marcate L1, L2Și L3).

Cache de nivel 1 (L1)- cel mai rapid, dar mai mic ca volum decât celelalte. Nucleul procesorului funcționează direct cu el. Memoria cache de nivel 1 are cea mai mică latență (timp de acces).
Cache de nivel 2 (L2)– volumul acestei memorie este mult mai mare decât cache-ul de prim nivel.
Cache de nivel 3 (L3)– memorie cache cu o capacitate mare și mai lentă decât L2.

În versiunea clasică, existau 2 niveluri de memorie cache - nivelul 1 și al doilea. Nivelul 3 diferă ca organizare de nivelul cache al 2-lea. Dacă datele nu au fost procesate sau procesorul trebuie să proceseze date urgente, atunci pentru a elibera memoria cache de nivel 2, datele sunt mutate în memoria cache de nivel 3. Cache-ul L3 este, totuși, mai mare și mai lent decât L2 (magistrala dintre L2 și L3 este mai îngustă decât magistrala dintre L1 și L2), dar este totuși mult mai rapidă decât memoria de sistem.

Toate datele sunt inițial transferate în memoria cache de nivel 2 pentru procesare de către procesorul central; datele sunt parțial decodificate și transmise la nucleu.

În cache-ul de nivel 2, se construiește un lanț de instrucțiuni din date, iar în cache-ul de nivel 1, instrucțiunile interne ale procesorului sunt construite „oglindă”, care iau în considerare caracteristicile procesorului, registrelor etc. Numărul de instrucțiuni interne ale procesorului central nu este prea mare, astfel încât dimensiunea cache-ului de nivel 1 nu este foarte importantă (la procesoarele moderne, memoria cache L1 de nivel 1 poate fi de 64 KB, 128 KB pentru fiecare nucleu). Spre deosebire de cache de nivel 1, cache de nivel 2 este de mare importanță pentru procesor, motiv pentru care procesoarele cu cel mai mare cache de nivel 2 prezintă performanțe ridicate.

Există diferențe în organizarea structurii memoriei cache pentru procesoare. De exemplu, procesoarele AMD sunt împărțite clar între nuclee de memorie cache și sunt marcate în consecință - 512x2 ( Athlon 5200și mai jos) sau 1024x2 (la Athlon 5200și mai sus). Și pentru procesoare Intel Core2Duo Cache-ul nu este strict împărțit, ceea ce înseamnă că fiecare nucleu poate folosi cantitatea necesară de memorie cache partajată; acest lucru este potrivit pentru sistemele care nu acceptă mai multe nuclee. Dacă sunt folosite toate nucleele, memoria cache este împărțită în fiecare dintre nuclee în mod dinamic, în funcție de încărcarea fiecăruia dintre nuclee.

Toți utilizatorii cunosc bine elementele computerului, cum ar fi procesorul, care este responsabil pentru prelucrarea datelor, precum și memoria cu acces aleatoriu (RAM sau RAM), care este responsabilă pentru stocarea acestora. Dar probabil că nu toată lumea știe că există și o memorie cache a procesorului (Cache CPU), adică RAM-ul procesorului în sine (așa-numita ultra-RAM).

Care este motivul care i-a determinat pe designerii de calculatoare să folosească memorie dedicată pentru procesor? Nu este suficientă capacitatea RAM a computerului?

Într-adevăr, pentru o lungă perioadă de timp, computerele personale au făcut fără nicio memorie cache. Dar, după cum știți, procesorul este cel mai rapid dispozitiv de pe un computer personal și viteza lui a crescut cu fiecare nouă generație de CPU. În prezent, viteza sa este măsurată în miliarde de operații pe secundă. În același timp, RAM standard nu și-a crescut semnificativ performanța pe parcursul evoluției sale.

În general, există două tehnologii principale de cip de memorie - memoria statică și memoria dinamică. Fără să ne adâncim în detaliile designului lor, vom spune doar că memoria statică, spre deosebire de memoria dinamică, nu necesită regenerare; În plus, memoria statică folosește 4-8 tranzistori pentru un bit de informație, în timp ce memoria dinamică folosește 1-2 tranzistori. În consecință, memoria dinamică este mult mai ieftină decât memoria statică, dar în același timp mult mai lentă. În prezent, cipurile RAM sunt fabricate pe baza memoriei dinamice.

Evoluția aproximativă a raportului dintre viteza procesoarelor și RAM:

Astfel, dacă procesorul ar prelua informații din RAM tot timpul, ar trebui să aștepte o memorie dinamică lentă și ar fi inactiv tot timpul. În același caz, dacă s-ar folosi memoria statică ca RAM, costul computerului ar crește de câteva ori.

De aceea a fost dezvoltat un compromis rezonabil. Cea mai mare parte a memoriei RAM a rămas dinamică, în timp ce procesorul a primit propria memorie cache rapidă bazată pe cipuri de memorie statică. Volumul său este relativ mic - de exemplu, dimensiunea cache-ului de al doilea nivel este de doar câțiva megaocteți. Cu toate acestea, merită să ne amintim că întreaga memorie RAM a primelor computere IBM PC avea mai puțin de 1 MB.

În plus, oportunitatea introducerii tehnologiei de caching este influențată și de faptul că diferite aplicații situate în RAM încarcă diferit procesorul și, ca urmare, există o mulțime de date care necesită o prelucrare prioritară în comparație cu altele.

Istoricul memoriei cache

Strict vorbind, înainte ca memoria cache să fie mutată pe computerele personale, aceasta fusese deja folosită cu succes în supercomputere de câteva decenii.

Pentru prima dată, într-un PC bazat pe procesorul i80386 a apărut o memorie cache de doar 16 KB. Astăzi, procesoarele moderne folosesc diferite niveluri de cache, de la primul (cel mai rapid cache de cea mai mică dimensiune - de obicei 128 KB) până la al treilea (cel mai lent cache de cea mai mare dimensiune - până la zeci de MB).

La început, memoria cache externă a procesorului a fost localizată pe un cip separat. Cu timpul, însă, acest lucru a făcut ca magistrala situată între cache și procesor să devină un blocaj, încetinind schimbul de date. În microprocesoarele moderne, atât primul cât și cel de-al doilea nivel de memorie cache sunt situate în miezul procesorului însuși.

Multă vreme, procesoarele au avut doar două niveluri de cache, dar procesorul Intel Itanium a fost primul care a prezentat un cache de nivel al treilea, comun tuturor nucleelor ​​de procesor. Există și dezvoltări de procesoare cu un cache pe patru niveluri.

Arhitecturi și principii cache

Astăzi se cunosc două tipuri principale de organizare a memoriei cache, care provin din primele dezvoltări teoretice în domeniul ciberneticii - arhitecturile Princeton și Harvard. Arhitectura Princeton presupune un singur spațiu de memorie pentru stocarea datelor și comenzilor, în timp ce arhitectura Harvard implică unele separate. Majoritatea procesoarelor computerelor personale x86 folosesc un tip separat de memorie cache. În plus, un al treilea tip de memorie cache a apărut și în procesoarele moderne - așa-numitul buffer de traducere asociativă, conceput pentru a accelera conversia adreselor de memorie virtuală ale sistemului de operare în adrese de memorie fizică.

O diagramă simplificată a interacțiunii dintre memoria cache și procesor poate fi descrisă după cum urmează. În primul rând, procesorul verifică prezența informațiilor necesare procesorului în cel mai rapid cache de primul nivel, apoi în cel de al doilea nivel, etc. Dacă informațiile necesare nu sunt găsite în niciun nivel de cache, atunci o numesc o eroare sau o pierdere de cache. Dacă nu există deloc informații în cache, atunci procesorul trebuie să o ia din RAM sau chiar din memoria externă (de pe hard disk).

Ordinea în care procesorul caută informații în memorie:

Acesta este modul în care Procesorul caută informații

Pentru a controla funcționarea memoriei cache și interacțiunea acesteia cu unitățile de calcul ale procesorului, precum și RAM, există un controler special.

Schema de organizare a interacțiunii nucleului procesorului, cache-ului și RAM:

Controlerul cache este legătura cheie între procesor, RAM și memoria cache

Trebuie remarcat faptul că stocarea în cache a datelor este un proces complex care utilizează multe tehnologii și algoritmi matematici. Printre conceptele de bază folosite în cache se numără metodele de scriere în cache și arhitectura asociativității cache.

Metode de scriere în cache

Există două metode principale de scriere a informațiilor în memoria cache:

  1. Metoda de rescriere – datele sunt scrise mai întâi în cache, iar apoi, când apar anumite condiții, în RAM.
  2. Metoda de scriere – datele sunt scrise simultan în RAM și cache.

Arhitectura asociativității cache

Arhitectura asociativității cache definește modul în care datele din RAM sunt mapate în cache. Principalele opțiuni pentru memorarea în cache a arhitecturii asociativității sunt:

  1. Cache mapat direct - o anumită secțiune a memoriei cache este responsabilă pentru o anumită secțiune a RAM
  2. Cache complet asociativ - orice parte a memoriei cache poate fi asociată cu orice parte a memoriei RAM
  3. Cache mixt (set-asociativ)

Nivelurile de cache diferite pot utiliza de obicei arhitecturi de asociativitate cache diferite. Memorarea în cache RAM mapată directă este cea mai rapidă opțiune de stocare în cache, așa că această arhitectură este de obicei folosită pentru cache-urile mari. La rândul său, un cache complet asociativ are mai puține erori de cache (gașuri).

Concluzie

În acest articol, ați fost introdus în conceptul de memorie cache, arhitectura memoriei cache și metodele de stocare în cache și ați învățat cum afectează performanța unui computer modern. Prezența memoriei cache poate optimiza în mod semnificativ funcționarea procesorului, poate reduce timpul de inactivitate și, în consecință, poate crește performanța întregului sistem.